summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile31
-rw-r--r--templates/ef/grid.typ105
-rw-r--r--templates/ef/ordo.typ121
-rw-r--r--test/dune6
-rw-r--r--test/golden/grid-2027.typ7832
-rw-r--r--test/golden/ordo-2027.typ8008
-rw-r--r--test/test_render_golden.ml4
7 files changed, 16096 insertions, 11 deletions
diff --git a/Makefile b/Makefile
index 6ba81ba..f1930f9 100644
--- a/Makefile
+++ b/Makefile
@@ -46,14 +46,14 @@ check-schema: build ## validate emitted XML against schema/colitur-v1.xsd (needs
# Typesets every shipped template through the real tool that would typeset it
# for a reader, not merely through this program's own renderer. The golden
-# tests already prove `colitur table` PRODUCES the expected LaTeX/groff/HTML
-# text; only this proves that text actually TYPESETS -- a template can render
-# byte-for-byte as pinned and still be malformed LaTeX or groff. Each tool is
-# genuinely optional (neither is in colitur's own frozen deps), so absence is
-# printed LOUDLY as SKIPPED rather than silently treated as a pass -- a
-# silent skip reads as a pass, which is the whole failure mode this guards
-# against.
-check-templates: build ## typeset every shipped template (needs pdflatex/groff; skipped if absent)
+# tests already prove `colitur table` PRODUCES the expected LaTeX/groff/HTML/
+# Typst text; only this proves that text actually TYPESETS -- a template can
+# render byte-for-byte as pinned and still be malformed LaTeX, groff or
+# Typst. Each tool is genuinely optional (none is in colitur's own frozen
+# deps), so absence is printed LOUDLY as SKIPPED rather than silently
+# treated as a pass -- a silent skip reads as a pass, which is the whole
+# failure mode this guards against.
+check-templates: build ## typeset every shipped template (needs pdflatex/groff/typst; skipped per-tool if absent)
@ok=1; \
if command -v pdflatex >/dev/null 2>&1; then \
for t in ordo grid; do \
@@ -84,6 +84,21 @@ check-templates: build ## typeset every shipped template (needs pdflatex/groff;
fi; \
done; \
else echo "SKIPPED: groff not installed -- groff templates render but are NOT typeset"; fi; \
+ if command -v typst >/dev/null 2>&1; then \
+ for t in ordo grid; do \
+ if opam exec -- dune exec colitur -- table --year 2027 --template templates/ef/$$t.typ \
+ > /tmp/$$t.typ 2>/tmp/$$t-render.err; then \
+ if typst compile /tmp/$$t.typ /tmp/$$t-typst.pdf 2>/tmp/$$t-typst.err; then \
+ echo "typst: $$t.typ OK (one pass -- typst resolves its own"; \
+ echo " table-of-contents page numbers inside a single compile, unlike pdflatex above)"; \
+ else \
+ echo "typst: $$t.typ FAILED:"; cat /tmp/$$t-typst.err; ok=0; \
+ fi; \
+ else \
+ echo "typst: $$t.typ FAILED (colitur table render):"; cat /tmp/$$t-render.err; ok=0; \
+ fi; \
+ done; \
+ else echo "SKIPPED: typst not installed -- Typst templates render but are NOT typeset"; fi; \
test $$ok -eq 1
# lang/la.ini's own discipline: every celebration/season/rank name cites the
diff --git a/templates/ef/grid.typ b/templates/ef/grid.typ
new file mode 100644
index 0000000..c197ad2
--- /dev/null
+++ b/templates/ef/grid.typ
@@ -0,0 +1,105 @@
+// colitur wall calendar -- A4 landscape, one month per page. Typst. flavour: typst
+// Build: colitur table --year 2027 --template grid.typ > grid.typ && typst compile grid.typ
+// ONE compile pass: this template has no table of contents and no
+// cross-references (unlike ordo.typ), so there is nothing for a second pass
+// to resolve even in principle -- unlike pdflatex's own two-pass need for
+// grid.tex's sibling ordo.tex, though grid.tex itself already needed only
+// one pass too.
+//
+// The grid must FILL the page, not sit in its top quarter. grid.tex's own
+// header explains why it computes an explicit fixed row height by hand
+// (\cellh) and why that leaves a 5-week month only 5/6 full rather than
+// 6/6 -- LaTeX's tabular has no notion of "share out whatever is left".
+// Typst's table/grid DOES: a row-size list shorter than the actual row
+// count repeats its OWN LAST entry for every remaining row (verified live:
+// a 5-row table given `rows: (auto, 1fr)` renders five equal 1fr rows, not
+// one), so `rows: (auto, 1fr)` below fills the page COMPLETELY regardless
+// of whether the month has 5 or 6 Sunday-started weeks, with no week count
+// arithmetic in this file at all. This is a genuine, disclosed DIVERGENCE
+// from grid.tex's own behaviour, not an oversight: LaTeX leaves a 5-week
+// month's bottom sixth blank on purpose (documented there); this template
+// instead stretches every month to fill the whole page every time, because
+// Typst makes that the simpler option, not the harder one.
+//
+// Real names, not slugs: the observed day's own display name is a PLAIN
+// resolved string (View.of_days), interpolated directly as a plain var
+// below -- there is no dotted-la-with-slug-fallback idiom left to write
+// (see ordo.typ's own header for the full reasoning; it applies here
+// unchanged).
+//
+// The weekday header row comes from the view's top-level weekday_headings
+// list (name/last objects), not a hard-coded Dom/Lun/Mar row: the engine
+// rejects an EMPTY tag path -- a bare dot inside a section, on its own --
+// as a parse error, so the loop below names a field on each heading object
+// rather than interpolating the section's own value directly, and a
+// hard-coded row would not be localised anyway.
+//
+// No separator flag needed: grid.tex's own `last` field exists because a
+// LaTeX tabular row needs its ampersand BETWEEN cells, never after the
+// final one, and the engine has no "unless last" construct to lean on
+// instead -- so that template renders the flag as data. Typst's own
+// #table() takes a flat, comma-separated argument list and wraps it into
+// rows itself, by column count, so the SAME rule applies to every cell,
+// header row included, with no special case for the last one -- verified
+// live that a trailing comma before a function call's closing parenthesis
+// is accepted, not a syntax error. `last` is therefore simply unused here;
+// left in the view model for grid.tex's own sake, not removed for this one.
+//
+// Sigla, compactly: each cell also carries the day's Epistle and Gospel
+// references (view fields first/gospel), joined by a centred dot rather
+// than repeating Ep./Ev. labels -- the same choice grid.tex and grid.ms
+// already made, kept consistent rather than invented a second way. A
+// #v(1fr) inside each cell's own content -- verified live to work the same
+// way inside a table cell as inside any other block -- pushes the rank
+// line and the sigla to the bottom of the cell, leaving the day number and
+// name at the top, so the two short lines never collide with a long entry
+// above them the way a single crammed line would.
+#set page(paper: "a4", flipped: true, margin: 10mm, numbering: none)
+#set text(size: 8pt)
+#set par(justify: false)
+
+#let cgrid = (
+ white: rgb("#FFFFFF"), red: rgb("#F8DCDC"), green: rgb("#DDEEDD"),
+ violet: rgb("#E6DAF0"), rose: rgb("#FADCE8"), black: rgb("#DCDCDC"),
+)
+#let cpad = luma(248)
+
+{{#months}}
+#text(size: 20pt, weight: "bold")[{{name}} {{year}}]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+ {{#weekday_headings}}
+ table.cell(align: center + horizon)[#text(weight: "bold")[{{name}}]],
+ {{/weekday_headings}}
+ {{#weeks}}
+ {{#days}}
+ {{#in_month}}
+ table.cell(fill: cgrid.at("{{colour}}"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[{{dom}}] #text(size: 7pt)[{{name}}]
+ #v(1fr)
+ #text(size: 6.5pt)[{{rank_name}}] \
+ #text(size: 6.5pt)[{{#first}}{{first}}{{/first}}{{#gospel}}{{#first}} #sym.dot.c {{/first}}{{gospel}}{{/gospel}}]
+ ],
+ {{/in_month}}
+ {{^in_month}}
+ table.cell(fill: cpad)[],
+ {{/in_month}}
+ {{/days}}
+ {{/weeks}}
+)
+#pagebreak(weak: true)
+{{/months}}
diff --git a/templates/ef/ordo.typ b/templates/ef/ordo.typ
new file mode 100644
index 0000000..33bc802
--- /dev/null
+++ b/templates/ef/ordo.typ
@@ -0,0 +1,121 @@
+// colitur ordo booklet -- Typst. flavour: typst
+// Build: colitur table --year 2027 --template ordo.typ > ordo.typ && typst compile ordo.typ
+//
+// ONE compile pass, not two: Typst resolves its own table of contents (built
+// from headings via the outline function below) and every page number it
+// shows internally, inside a single invocation -- there is no LaTeX-style
+// pageref/aux-file dance and no "run it twice so the numbers settle". That is
+// a genuine advantage of this flavour over ordo.tex, not merely a different
+// syntax for the same thing.
+//
+// A5, one week per page, each day in a framed box with a colour swatch.
+// Every fixed string (headings, the Epistle/Gospel/Commemoration/Week
+// labels) comes from the view's term vocabulary rather than being written
+// into this file, so a translated booklet needs no template edit -- only a
+// different --lang. Same discipline as ordo.tex; see that file's own header
+// for the full reasoning, repeated only where Typst changes it below.
+//
+// The observed day's own display name is a PLAIN resolved string
+// (View.of_days), never a lang-keyed object, exactly as in every other
+// shipped flavour -- there is no dotted-la-with-slug-fallback idiom to
+// write here at all.
+//
+// The engine has no parent-path syntax: nested inside a month's own week
+// loop, a bare week-number reference finds the WEEK's own number, and there
+// is no way to reach the enclosing month's from there. That is why each
+// week object carries its own month number and month name fields
+// (lib/render/view.ml), used below via month_name/month_num instead of a
+// parent-path reference the engine cannot express.
+//
+// The engine also rejects an empty tag path outright (a bare-dot section or
+// variable is a parse error, not an invented "current context" behaviour),
+// so every loop below names a field on the object it walks rather than
+// trying to interpolate the object itself.
+//
+// This template's own line comments are plain text to the engine: it has no
+// awareness of Typst's // syntax, and a stray double-brace pair inside one
+// would still be parsed as a tag -- which is why this whole header, like
+// ordo.tex's own, is written without ever typing two curly braces next to
+// each other, even to name a field.
+//
+// One TOC level, not two: LaTeX's own ordo.tex prints the month name ONCE
+// per month with its weeks dotted-and-paginated underneath, because it
+// walks the months-then-weeks nesting directly in its own hand-built TOC
+// loop. Typst's outline instead builds its table of contents automatically
+// from real document headings, and there is no "is this the month's first
+// week" flag in the view model for a template to test -- inventing one
+// would be new engine state for a cosmetic grouping, not a real gap. Each
+// week page therefore carries ONE flat heading, "Month . Week N", which is
+// both what a reader sees at the top of that page and, automatically, its
+// own single-line entry in the table of contents below.
+//
+// Colour swatch: the six colour names this rite emits (white, red, green,
+// violet, rose, black -- Colour.to_string's own closed vocabulary) are used
+// as literal dictionary keys inside a Typst string argument below, the same
+// trick ordo.tex's own \swatch{licol...} macro-name concatenation relies
+// on. Both templates depend on that vocabulary staying plain lowercase
+// ASCII words with no markup metacharacter in it; the escaper still runs
+// over the substituted value regardless; a value outside that closed set
+// would need a different placement, not a different escaper.
+#set page(
+ paper: "a5",
+ margin: (inside: 14mm, outside: 10mm, top: 12mm, bottom: 12mm),
+ numbering: "1",
+ header: align(center)[#text(size: 8pt)[{{term.ordo}} {{year}} #sym.dot.c {{rite}}]],
+)
+#set text(size: 9pt)
+#set par(justify: false)
+#show heading: it => {
+ set text(size: 12pt, weight: "bold")
+ block(above: 3mm, below: 2mm)[#it.body]
+}
+
+#let licol = (
+ white: rgb("#FFFFFF"), red: rgb("#C1272D"), green: rgb("#2E7D32"),
+ violet: rgb("#6A1B9A"), rose: rgb("#E91E8C"), black: rgb("#000000"),
+)
+
+// A framed swatch, always stroked in black regardless of fill -- so white
+// (and, were the page ever black, black) still reads as a mark rather than
+// a gap in the row. Mirrors ordo.tex's own \swatch macro.
+#let swatch(colour) = box(width: 2.4mm, height: 2.4mm, fill: licol.at(colour), stroke: 0.4pt + black)
+
+#align(center)[
+ #text(size: 18pt, weight: "bold")[{{term.ordo}} {{year}}] \
+ {{rite}}
+]
+#v(4mm)
+#text(weight: "bold")[{{term.contents}}]
+#v(1mm)
+#outline(title: none, depth: 1, indent: 4mm)
+#pagebreak(weak: true)
+
+{{#months}}
+{{#weeks}}
+= {{month_name}} #sym.dot.c {{term.week}} {{num}}
+
+{{#days}}
+{{#in_month}}
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[{{dom}}] #h(2mm) #text(size: 8pt)[{{weekday}}] #h(1fr) #swatch("{{colour}}") \
+ #text(weight: "bold")[{{name}}] \
+ #text(size: 7pt)[{{rank_name}} #sym.dot.c {{colour_name}}] \
+ #text(size: 7pt)[{{#first}}{{term.epistle}} {{first}}{{/first}}{{#gospel}}{{#first}} #h(2mm) {{/first}}{{term.gospel}} {{gospel}}{{/gospel}}]{{#comms}} \
+ #text(size: 7pt)[{{term.commemoration}} {{name}}]{{/comms}}
+]
+{{/in_month}}
+{{/days}}
+#pagebreak(weak: true)
+{{/weeks}}
+{{/months}}
diff --git a/test/dune b/test/dune
index c1a14fb..84c5ec7 100644
--- a/test/dune
+++ b/test/dune
@@ -24,6 +24,8 @@
../templates/ef/grid.tex
../templates/ef/grid.ms
../templates/ef/grid.html
+ ../templates/ef/ordo.typ
+ ../templates/ef/grid.typ
golden/ordo-2027.tex
golden/ordo-2027.ms
golden/ordo-2027.html
@@ -32,7 +34,9 @@
golden/ordo-2027.txt
golden/grid-2027.tex
golden/grid-2027.ms
- golden/grid-2027.html)
+ golden/grid-2027.html
+ golden/ordo-2027.typ
+ golden/grid-2027.typ)
(preprocess
(pps ppx_sexp_conv)))
diff --git a/test/golden/grid-2027.typ b/test/golden/grid-2027.typ
new file mode 100644
index 0000000..f6e35e5
--- /dev/null
+++ b/test/golden/grid-2027.typ
@@ -0,0 +1,7832 @@
+// colitur wall calendar -- A4 landscape, one month per page. Typst. flavour: typst
+// Build: colitur table --year 2027 --template grid.typ > grid.typ && typst compile grid.typ
+// ONE compile pass: this template has no table of contents and no
+// cross-references (unlike ordo.typ), so there is nothing for a second pass
+// to resolve even in principle -- unlike pdflatex's own two-pass need for
+// grid.tex's sibling ordo.tex, though grid.tex itself already needed only
+// one pass too.
+//
+// The grid must FILL the page, not sit in its top quarter. grid.tex's own
+// header explains why it computes an explicit fixed row height by hand
+// (\cellh) and why that leaves a 5-week month only 5/6 full rather than
+// 6/6 -- LaTeX's tabular has no notion of "share out whatever is left".
+// Typst's table/grid DOES: a row-size list shorter than the actual row
+// count repeats its OWN LAST entry for every remaining row (verified live:
+// a 5-row table given `rows: (auto, 1fr)` renders five equal 1fr rows, not
+// one), so `rows: (auto, 1fr)` below fills the page COMPLETELY regardless
+// of whether the month has 5 or 6 Sunday-started weeks, with no week count
+// arithmetic in this file at all. This is a genuine, disclosed DIVERGENCE
+// from grid.tex's own behaviour, not an oversight: LaTeX leaves a 5-week
+// month's bottom sixth blank on purpose (documented there); this template
+// instead stretches every month to fill the whole page every time, because
+// Typst makes that the simpler option, not the harder one.
+//
+// Real names, not slugs: the observed day's own display name is a PLAIN
+// resolved string (View.of_days), interpolated directly as a plain var
+// below -- there is no dotted-la-with-slug-fallback idiom left to write
+// (see ordo.typ's own header for the full reasoning; it applies here
+// unchanged).
+//
+// The weekday header row comes from the view's top-level weekday_headings
+// list (name/last objects), not a hard-coded Dom/Lun/Mar row: the engine
+// rejects an EMPTY tag path -- a bare dot inside a section, on its own --
+// as a parse error, so the loop below names a field on each heading object
+// rather than interpolating the section's own value directly, and a
+// hard-coded row would not be localised anyway.
+//
+// No separator flag needed: grid.tex's own `last` field exists because a
+// LaTeX tabular row needs its ampersand BETWEEN cells, never after the
+// final one, and the engine has no "unless last" construct to lean on
+// instead -- so that template renders the flag as data. Typst's own
+// #table() takes a flat, comma-separated argument list and wraps it into
+// rows itself, by column count, so the SAME rule applies to every cell,
+// header row included, with no special case for the last one -- verified
+// live that a trailing comma before a function call's closing parenthesis
+// is accepted, not a syntax error. `last` is therefore simply unused here;
+// left in the view model for grid.tex's own sake, not removed for this one.
+//
+// Sigla, compactly: each cell also carries the day's Epistle and Gospel
+// references (view fields first/gospel), joined by a centred dot rather
+// than repeating Ep./Ev. labels -- the same choice grid.tex and grid.ms
+// already made, kept consistent rather than invented a second way. A
+// #v(1fr) inside each cell's own content -- verified live to work the same
+// way inside a table cell as inside any other block -- pushes the rank
+// line and the sigla to the bottom of the cell, leaving the day number and
+// name at the top, so the two short lines never collide with a long entry
+// above them the way a single crammed line would.
+#set page(paper: "a4", flipped: true, margin: 10mm, numbering: none)
+#set text(size: 8pt)
+#set par(justify: false)
+
+#let cgrid = (
+ white: rgb("#FFFFFF"), red: rgb("#F8DCDC"), green: rgb("#DDEEDD"),
+ violet: rgb("#E6DAF0"), rose: rgb("#FADCE8"), black: rgb("#DCDCDC"),
+)
+#let cpad = luma(248)
+
+
+#text(size: 20pt, weight: "bold")[January 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[The Octave Day of the Nativity]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Titus 2:11\-15 #sym.dot.c Luke 2:21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Titus 3:4\-7 #sym.dot.c Luke 2:15\-20]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[The Holy Name of Jesus]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Acts 4:8\-12 #sym.dot.c Luke 2:21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[Monday before Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Titus 2:11\-15 #sym.dot.c Luke 2:21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[Tuesday before Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Titus 2:11\-15 #sym.dot.c Luke 2:21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[The Epiphany of Our Lord]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Isa 60:1\-6 #sym.dot.c Matt 2:1\-12]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[Thursday after Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Isa 60:1\-6 #sym.dot.c Matt 2:1\-12]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[Friday after Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Isa 60:1\-6 #sym.dot.c Matt 2:1\-12]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Titus 3:4\-7 #sym.dot.c Luke 2:15\-20]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[The Holy Family]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Col 3:12\-17 #sym.dot.c Luke 2:42\-52]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[Monday of the 1st Week of the Time after Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Rom 12:1\-5 #sym.dot.c Luke 2:42\-52]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[Tuesday of the 1st Week of the Time after Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Rom 12:1\-5 #sym.dot.c Luke 2:42\-52]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[Commemoration of the Baptism of the Lord]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Isa 60:1\-6 #sym.dot.c John 1:29\-34]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[St. Hilary]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[St. Paul, the First Hermit]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Phil 3:7\-12 #sym.dot.c Matt 11:25\-30]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[St. Marcellus I]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Pet 5:1\-4; 5:10\-11. #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[2nd Sunday after Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Rom 12:6\-16 #sym.dot.c John 2:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[Monday of the 2nd Week of the Time after Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Rom 12:6\-16 #sym.dot.c John 2:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[Tuesday of the 2nd Week of the Time after Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Rom 12:6\-16 #sym.dot.c John 2:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[Sts. Fabian & Sebastian]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Heb 11:33\-39 #sym.dot.c Luke 6:17\-23]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[St. Agnes]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 51:1\-8; 51:12 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[Sts. Vincent & Anastasius]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 3:1\-8 #sym.dot.c Luke 21:9\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[St. Raymond of Peñafort]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[Septuagesima Sunday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Cor. 9:24\-27; 10:1\-5 #sym.dot.c Matt 20:1\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[Conversion of St. Paul]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Acts 9:1\-22 #sym.dot.c Matt 19:27\-29.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[St. Polycarp]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 John 3:10\-16 #sym.dot.c Matt 10:26\-32.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[St. John Chrysostom]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[St. Peter Nolasco]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Cor. 4:9\-14 #sym.dot.c Luke 12:32\-34]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[St. Francis de Sales]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[St. Martina]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 51:1\-8; 51:12 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[31] #text(size: 7pt)[Sexagesima Sunday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[2 Cor. 11:19\-33; 12:1\-9 #sym.dot.c Luke 8:4\-15]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[February 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[St. Ignatius of Antioch]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Rom 8:35\-39 #sym.dot.c John 12:24\-26]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[Purification of the Blessed Virgin Mary]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Mal 3:1\-4 #sym.dot.c Luke 2:22\-32]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[Wednesday of the 2nd Week of Septuagesimatide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[2 Cor. 11:19\-33; 12:1\-9 #sym.dot.c Luke 8:4\-15]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[St. Andrew Corsini]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 44:16\-27; 45:3\-20 #sym.dot.c Matt 25:14\-23]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[St. Agatha]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Cor. 1:26\-31 #sym.dot.c Matt 19:3\-12.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[St. Titus]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 44:16\-27; 45:3\-20 #sym.dot.c Luke 10:1\-9]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[Quinquagesima Sunday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Cor. 13:1\-13 #sym.dot.c Luke 18:31\-43]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[St. John of Matha]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[St. Cyril of Alexandria]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[Ash Wednesday]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Joel 2:12\-19 #sym.dot.c Matt 6:16\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[Thursday after Ash Wednesday]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Isa 38:1\-6 #sym.dot.c Matt 8:5\-13]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[Friday after Ash Wednesday]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Isa 58:1\-9 #sym.dot.c Matt 5:43\-48; 6:1\-4]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[Saturday after Ash Wednesday]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Isa 58:9\-14 #sym.dot.c Mark 6:47\-56]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[1st Sunday of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[2 Cor. 6:1\-10 #sym.dot.c Matt 4:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[Monday of the 1st Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ezech 34:11\-16 #sym.dot.c Matt 25:31\-46]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[Tuesday of the 1st Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Isa 55:6\-11 #sym.dot.c Matt 21:10\-17]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[Lenten Ember Wednesday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[3 Kgs. 19:3\-8 #sym.dot.c Matt 12:38\-50]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[Thursday of the 1st Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ezech 18:1\-9 #sym.dot.c Matt 15:21\-28]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[Lenten Ember Friday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Ezech 18:20\-28 #sym.dot.c John 5:1\-15]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[Lenten Ember Saturday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Thess. 5:14\-23 #sym.dot.c Matt 17:1\-9]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[2nd Sunday of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[1 Thess. 4:1\-7 #sym.dot.c Matt 17:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[Chair of St. Peter]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Pet 1:1\-7 #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[Tuesday of the 2nd Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[3 Kings 17:8\-16 #sym.dot.c Matt 23:1\-12]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[St. Matthias]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Acts 1:15\-26 #sym.dot.c Matt 11:25\-30]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[Thursday of the 2nd Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Jer 17:5\-10 #sym.dot.c Luke 16:19\-31]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[Friday of the 2nd Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Gen 37:6\-22 #sym.dot.c Matt 21:33\-46]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[Saturday of the 2nd Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Gen 27:6\-40 #sym.dot.c Luke 15:11\-32]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[3rd Sunday of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Eph 5:1\-9 #sym.dot.c Luke 11:14\-28]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[March 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[Monday of the 3rd Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[4 Kings 5:1\-15 #sym.dot.c Luke 4:23\-30]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[Tuesday of the 3rd Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[4 Kings 4:1\-7 #sym.dot.c Matt 18:15\-22]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[Wednesday of the 3rd Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ex 20:12\-24 #sym.dot.c Matt 15:1\-20]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[Thursday of the 3rd Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Jer 7:1\-7 #sym.dot.c Luke 4:38\-44.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[Friday of the 3rd Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Num 20:1, 3; 6\-13. #sym.dot.c John 4:5\-42]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[Saturday of the 3rd Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Dan 13:1\-9, 15\-17, 19\-30, 33\-62. #sym.dot.c John 8:1\-11]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("rose"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[4th Sunday of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Gal 4:22\-31 #sym.dot.c John 6:1\-15]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[Monday of the 4th Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[3 Kings 3:16\-28 #sym.dot.c John 2:13\-25]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[Tuesday of the 4th Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ex 32:7\-14 #sym.dot.c John 7:14\-31]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[Wednesday of the 4th Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Isa. 1:16\-19 #sym.dot.c John 9:1\-38]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[Thursday of the 4th Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[4 Kings 4:25\-38 #sym.dot.c Luke 7:11\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[Friday of the 4th Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[3 Kings 17:17\-24 #sym.dot.c John 11:1\-45]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[Saturday of the 4th Week of Lent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Isa 49:8\-15 #sym.dot.c John 8:12\-20]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[Passion Sunday]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Heb 9:11\-15. #sym.dot.c John 8:46\-59.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[Monday of the 1st Week of Passion Week]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Jonas 3:1\-10 #sym.dot.c John 7:32\-39]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[Tuesday of the 1st Week of Passion Week]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Dan 14:27, 28\-42 #sym.dot.c John 7:1\-13]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[Wednesday of the 1st Week of Passion Week]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Lev 19:1\-2, 11\-19, 25 #sym.dot.c John 10:22\-38]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[Thursday of the 1st Week of Passion Week]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Dan 3:25, 34\-45. #sym.dot.c Luke 7:36\-50]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[St. Joseph, Spouse of the Bl. Virgin Mary]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Ecclus 45:1\-6 #sym.dot.c Matt 1:18\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[Saturday of the 1st Week of Passion Week]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Jer 18:18\-23 #sym.dot.c John 12:10\-36]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[Palm Sunday]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Phil 2:5\-11 #sym.dot.c Matt. 26:36\-75; 27:1\-60.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[Monday of Holy Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Isa 50:5\-10 #sym.dot.c John 12:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[Tuesday of Holy Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Jer 11:18\-20 #sym.dot.c Mark 14:32\-72; 15, 1\-46]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[Wednesday of Holy Week (Spy Wednesday)]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Isa 53:1\-12 #sym.dot.c Luke 22:39\-71; 23:1\-53]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[Holy Thursday (Maundy Thursday)]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[1 Cor 11:20\-32 #sym.dot.c John 13:1\-15]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("black"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[Good Friday]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Ex 12:1\-11 #sym.dot.c John 18:1\-40; 19:1\-42]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[Holy Saturday]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Col 3:1\-4 #sym.dot.c Matt 28:1\-7]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[Easter Sunday]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[1 Cor 5:7\-8 #sym.dot.c Mark 16:1\-7]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[Monday of Easter Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 10:37\-43. #sym.dot.c Luke 24:13\-35]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[Tuesday of Easter Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 13:16; 13:26\-33 #sym.dot.c Luke 24:36\-47]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[31] #text(size: 7pt)[Wednesday of Easter Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 3:13\-15; 3:17\-19 #sym.dot.c John 21:1\-14]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[April 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[Thursday of Easter Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 8:26\-40 #sym.dot.c John 20:11\-18]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[Friday of Easter Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[1 Pet 3:18\-22 #sym.dot.c Matt 28:16\-20]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[Saturday of Easter Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[1 Pet 2:1\-10 #sym.dot.c John 20:1\-9]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[Low Sunday (Sunday in Easter Octave)]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[1 John 5:4\-10 #sym.dot.c John 20:19\-31]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[Annunciation of the Blessed Virgin Mary]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Isa 7:10\-15 #sym.dot.c Luke 1:26\-38]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[Tuesday of the 2nd Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 John 5:4\-10 #sym.dot.c John 20:19\-31]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[Wednesday of the 2nd Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 John 5:4\-10 #sym.dot.c John 20:19\-31]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[Thursday of the 2nd Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 John 5:4\-10 #sym.dot.c John 20:19\-31]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[Friday of the 2nd Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 John 5:4\-10 #sym.dot.c John 20:19\-31]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c John 19:25\-27]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[2nd Sunday after Easter]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Pet 2:21\-25 #sym.dot.c John 10:11\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[Monday of the 3rd Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Pet 2:21\-25 #sym.dot.c John 10:11\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[St. Hermenegild]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 10:10\-14 #sym.dot.c Luke 14:26\-33.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[St. Justin]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Cor 1:18\-25; 1:30; #sym.dot.c Luke 12:2\-8]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[Thursday of the 3rd Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Pet 2:21\-25 #sym.dot.c John 10:11\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[Friday of the 3rd Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Pet 2:21\-25 #sym.dot.c John 10:11\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c John 19:25\-27]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[3rd Sunday after Easter]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Pet 2:11\-19 #sym.dot.c John 16:16\-22]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[Monday of the 4th Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Pet 2:11\-19 #sym.dot.c John 16:16\-22]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[Tuesday of the 4th Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Pet 2:11\-19 #sym.dot.c John 16:16\-22]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[St. Anselm]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[Sts. Soter & Caius]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Pet 5:1\-4; 5:10\-11. #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[Friday of the 4th Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Pet 2:11\-19 #sym.dot.c John 16:16\-22]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[St. Fidelis of Sigmaringen]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 5:1\-5 #sym.dot.c John 15:1\-7]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[4th Sunday after Easter]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Jas 1:17\-21 #sym.dot.c John 16:5\-14]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[Sts. Cletus & Marcellinus]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Pet 5:1\-4; 5:10\-11. #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[St. Peter Canisius]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[St. Paul of the Cross]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Cor 1:17\-25. #sym.dot.c Luke 10:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[St. Peter of Verona]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim. 2:8\-10; 3:10\-12. #sym.dot.c Matt 10:34\-42]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[St. Catherine of Siena]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 10:17\-18; 11:1\-2 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[May 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[St. Joseph the Workman]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Col. 3:14\-15, 17, 23\-24 #sym.dot.c Matt 13:54\-58]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[5th Sunday after Easter]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Jas 1:22\-27 #sym.dot.c John 16:23\-30]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[Rogation Monday]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Jas 1:22\-27 #sym.dot.c John 16:23\-30]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[St. Monica]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Tim. 5:3\-10. #sym.dot.c Luke 7:11\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[Vigil of the Ascension]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Eph. 4:7\-13. #sym.dot.c John 17:1\-11.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[The Ascension of Our Lord]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 1:1\-11 #sym.dot.c Mark 16:14\-20]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[St. Stanislaus]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 5:1\-5 #sym.dot.c John 15:1\-7]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c John 19:25\-27]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[Sunday after the Ascension]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Pet 4:7\-11. #sym.dot.c John 15:26\-27; 16:1\-4.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[St. Antoninus]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 44:16\-27; 45:3\-20 #sym.dot.c Matt 25:14\-23]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[Sts. Philip & James]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Wis. 5:1\-5 #sym.dot.c John 14:1\-13]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[Sts. Nereus, Achilleus, Domitilla, & Pancras]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis. 5:1\-5 #sym.dot.c John 4:46\-53]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[St. Robert Bellarmine]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 7:7\-14. #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[Friday of the 7th Week of Eastertide]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Pet 4:7\-11. #sym.dot.c John 15:26\-27; 16:1\-4.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[Vigil of Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 19:1\-8. #sym.dot.c John 14:15\-21.]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[Pentecost Sunday (Whitsunday)]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 2:1\-11. #sym.dot.c John 14:23\-31.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[Monday of Pentecost Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 10:34, 42\-48 #sym.dot.c John 3:16\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[Tuesday of Pentecost Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 8:14\-17. #sym.dot.c John 10:1\-10.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[Pentecost Ember Wednesday]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 5:12\-16 #sym.dot.c John 6:44\-52.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[Thursday of Pentecost Week]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 8:5\-8 #sym.dot.c Luke 9:1\-6]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[Pentecost Ember Friday]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Joel 2:23\-24; 26\-27 #sym.dot.c Luke 5:17\-26]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[Pentecost Ember Saturday]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Rom 5:1\-5. #sym.dot.c Luke 4:38\-44.]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[Trinity Sunday]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Rom 11:33\-36. #sym.dot.c Matt 28:18\-20]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[Monday of the 1st Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 John 4:8\-21 #sym.dot.c Luke 6:36\-42]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[St. Gregory VII]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Pet 5:1\-4; 5:10\-11. #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[St. Philip Neri]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 7:7\-14. #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[Corpus Christi]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[1 Cor 11:23\-29 #sym.dot.c John 6:56\-59]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[St. Augustine of Canterbury]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Thess 2:2\-9 #sym.dot.c Luke 10:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[St. Mary Magdalene de Pazzi]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 10:17\-18; 11:1\-2 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[2nd Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 John 3:13\-18. #sym.dot.c Luke 14:16\-24.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[31] #text(size: 7pt)[Queenship of the Blessed Virgin Mary]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Eccli 24:5; 14:7; 14:9\-11; 24:30\-31 #sym.dot.c Luke 1:26\-33]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[June 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[St. Angela Merici]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 10:17\-18; 11:1\-2 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[Wednesday of the 2nd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 John 3:13\-18. #sym.dot.c Luke 14:16\-24.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[Thursday of the 2nd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 John 3:13\-18. #sym.dot.c Luke 14:16\-24.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[The Sacred Heart of Jesus]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Eph 3:8\-12, 14\-19 #sym.dot.c John 19:31\-37]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[St. Boniface]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ecclus 44:1\-15 #sym.dot.c Matt 5:1\-12]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[3rd Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Pet. 5:6\-11 #sym.dot.c Luke 15:1\-10]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[Monday of the 3rd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Pet. 5:6\-11 #sym.dot.c Luke 15:1\-10]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[Tuesday of the 3rd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Pet. 5:6\-11 #sym.dot.c Luke 15:1\-10]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[Wednesday of the 3rd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Pet. 5:6\-11 #sym.dot.c Luke 15:1\-10]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[St. Margaret of Scotland]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Prov 31:10\-31 #sym.dot.c Matt 13:44\-52.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[St. Barnabas]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Acts 11:21\-26; 13:1\-3 #sym.dot.c Matt 10:16\-22]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[St. John of San Fecundo]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[4th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Rom 8:18\-23 #sym.dot.c Luke 5:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[St. Basil the Great]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Luke 14:26\-35]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[Tuesday of the 4th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Rom 8:18\-23 #sym.dot.c Luke 5:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[Wednesday of the 4th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Rom 8:18\-23 #sym.dot.c Luke 5:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[St. Gregory Barbarigo]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 44:16\-27; 45:3\-20 #sym.dot.c Matt 25:14\-23]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[St. Ephrem of Syria]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[St. Julia of Falconieri]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 10:17\-18; 11:1\-2 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[5th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Pet 3:8\-15. #sym.dot.c Matt 5:20\-24.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[St. Aloysius Gongzaga]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Matt 22:29\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[St. Paulinus of Nola]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor. 8:9\-15 #sym.dot.c Luke 12:32\-34]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[Vigil of the Nativity of St. John the Baptist]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Jer 1:4\-10 #sym.dot.c Luke 1:5\-17]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[Nativity of St. John the Baptist]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Isa 49:1\-3, 5\-7. #sym.dot.c Luke 1:57\-68]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[St. William]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ecclus 45:1\-6 #sym.dot.c Matt 19:27\-29.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[Sts. John & Paul]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Eccli 44:10\-15 #sym.dot.c Luke 12:1\-8]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[6th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Rom 6:3\-11. #sym.dot.c Mark 8:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[Vigil of Sts. Peter & Paul]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Acts 3:1\-10 #sym.dot.c John 21:15\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[Sts. Peter & Paul]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Acts 12:1\-11 #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[In Commemoratione Sancti Pauli Apostoli]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Gal 1:11\-20 #sym.dot.c Matt 10:16\-22]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[July 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[The Precious Blood of Our Lord Jesus Christ]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Heb 9:11\-15. #sym.dot.c John 19:30\-35]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[Visitation of the Blessed Virgin Mary]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Song 2:8\-14 #sym.dot.c Luke 1:39\-47]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[St. Irenaeus]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim. 3:14\-17; 4:1\-5 #sym.dot.c Matt 10:28\-33]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[7th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Rom 6:19\-23 #sym.dot.c Matt 7:15\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[St. Anthony Mary Zaccariah]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Tim. 4:8\-16 #sym.dot.c Mark 10:15\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[Tuesday of the 7th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Rom 6:19\-23 #sym.dot.c Matt 7:15\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[Sts. Cyril & Methodius]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Heb 7:23\-27 #sym.dot.c Luke 10:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[St. Elizabeth of Portugal]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Prov 31:10\-31 #sym.dot.c Matt 13:44\-52.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[Friday of the 7th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Rom 6:19\-23 #sym.dot.c Matt 7:15\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[Seven Holy Brothers and Sts. Rufina & Secunda]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Prov 31:10\-31 #sym.dot.c Matt 12:46\-50]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[8th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Rom 8:12\-17 #sym.dot.c Luke 16:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[St. John Gualbert]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ecclus 45:1\-6 #sym.dot.c Matt 5:43\-48]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[Tuesday of the 8th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Rom 8:12\-17 #sym.dot.c Luke 16:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[St. Bonaventure]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[St. Henry the Emperor]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[Friday of the 8th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Rom 8:12\-17 #sym.dot.c Luke 16:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c Luke 11:27\-28]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[9th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Cor. 10:6\-13 #sym.dot.c Luke 19:41\-47]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[St. Vincent de Paul]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Cor. 4:9\-14 #sym.dot.c Luke 10:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[St. Jerome Emiliani]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Isa 58:7\-11 #sym.dot.c Matt 19:13\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[St. Laurence of Brindisi]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[St. Mary Magdalene]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Song 3:2\-5; 8:6\-7 #sym.dot.c Luke 7:36\-50]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[St. Apollinaris]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Pet. 5:1\-11 #sym.dot.c Luke 22:24\-30]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c Luke 11:27\-28]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[10th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Cor. 12:2\-11 #sym.dot.c Luke 18:9\-14]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[St. Anne, Mother of the Blessed Virgin]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Prov 31:10\-31 #sym.dot.c Matt 13:44\-52.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[Tuesday of the 10th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Cor. 12:2\-11 #sym.dot.c Luke 18:9\-14]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[Sts. Nazarius & Celsus, St. Victor I & St. Innocent I]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 10:17\-20 #sym.dot.c Luke 21:9\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[St. Martha]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 10:17\-18; 11:1\-2 #sym.dot.c Luke 10:38\-42]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[Friday of the 10th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Cor. 12:2\-11 #sym.dot.c Luke 18:9\-14]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[31] #text(size: 7pt)[St. Ignatius Loyola]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim. 2:8\-10; 3:10\-12. #sym.dot.c Luke 10:1\-9]
+ ],
+
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[August 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[11th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Cor. 15:1\-10 #sym.dot.c Mark 7:31\-37]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[St. Alphonsus Liguori]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim. 2:1\-7 #sym.dot.c Luke 10:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[Tuesday of the 11th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Cor. 15:1\-10 #sym.dot.c Mark 7:31\-37]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[St. Dominic]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim. 4:1\-8 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[Dedication of the Basilica of St. Mary Major]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c Luke 11:27\-28]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[Transfiguration of Our Lord]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[2 Pet. 1:16\-19 #sym.dot.c Matt 17:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[St. Cajetan]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Matt 6:24\-33]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[12th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[2 Cor. 3:4\-9 #sym.dot.c Luke 10:23\-37]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[Vigil of St. Lawrence]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ecclus 51:1\-8, 12 #sym.dot.c Matt 16:24\-27]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[St. Lawrence]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[2 Cor. 9:6\-10 #sym.dot.c John 12:24\-26]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[Wednesday of the 12th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[2 Cor. 3:4\-9 #sym.dot.c Luke 10:23\-37]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[St. Clare]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 10:17\-18; 11:1\-2 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[Friday of the 12th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[2 Cor. 3:4\-9 #sym.dot.c Luke 10:23\-37]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[Vigil of the Assumption]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Sir 24:23\-31 #sym.dot.c Luke 11:27\-28]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[Assumption of the Blessed Virgin Mary]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Judith 13:22\-25; 15:10 #sym.dot.c Luke 1:41\-50]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[St. Joachim, Father of the Blessed Virgin]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Matt 1:1\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[St. Hyacinth]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[Wednesday of the 13th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Gal 3:16\-22 #sym.dot.c Luke 17:11\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[St. John Eudes]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[St. Bernard of Clairvaux]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ecclus 39:6\-14 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[St. Jane Frances de Chantal]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Prov 31:10\-31 #sym.dot.c Matt 13:44\-52.]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[14th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Gal 5:16\-24 #sym.dot.c Matt 6:24\-33]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[St. Philip Benizi]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Cor. 4:9\-14 #sym.dot.c Luke 12:32\-34]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[St. Bartholomew]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Cor. 12:27\-31 #sym.dot.c Luke 6:12\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[St. Louis IX]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 10:10\-14 #sym.dot.c Luke 19:12\-26]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[Thursday of the 14th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Gal 5:16\-24 #sym.dot.c Matt 6:24\-33]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[St. Joseph Calasance]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 10:10\-14 #sym.dot.c Matt 18:1\-5]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[St. Augustine]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[15th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Gal 5:25\-26; 6:1\-10 #sym.dot.c Luke 7:11\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[St. Rose of Lima]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 10:17\-18; 11:1\-2 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[31] #text(size: 7pt)[St. Raymond Nonnatus]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[September 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[Wednesday of the 15th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Gal 5:25\-26; 6:1\-10 #sym.dot.c Luke 7:11\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[St. Stephen of Hungary]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 19:12\-26]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[St. Pius X]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Thess. 2:2\-8 #sym.dot.c John 21:15\-17]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c Luke 11:27\-28]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[16th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Eph 3:13\-21 #sym.dot.c Luke 14:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[Monday of the 16th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Eph 3:13\-21 #sym.dot.c Luke 14:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[Tuesday of the 16th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Eph 3:13\-21 #sym.dot.c Luke 14:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[Nativity of the Blessed Virgin Mary]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Prov 8:22\-35 #sym.dot.c Matt 1:1\-16]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[Thursday of the 16th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Eph 3:13\-21 #sym.dot.c Luke 14:1\-11]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[St. Nicholas of Tolentino]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Cor. 4:9\-14 #sym.dot.c Luke 12:32\-34]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c Luke 11:27\-28]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[17th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Eph 4:1\-6 #sym.dot.c Matt 22:34\-46]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[Monday of the 17th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Eph 4:1\-6 #sym.dot.c Matt 22:34\-46]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[Exaltation of the Holy Cross]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Phil 2:5\-11 #sym.dot.c John 12:31\-36]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[Seven Sorrows of the Blessed Virgin Mary]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Judith 13:22; 13:23\-25 #sym.dot.c John 19:25\-27]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[Sts. Cornelius & Cyprian]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 3:1\-8 #sym.dot.c Luke 21:9\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[Friday of the 17th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Eph 4:1\-6 #sym.dot.c Matt 22:34\-46]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[St. Joseph of Cupertino]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Cor 13:1\-8 #sym.dot.c Matt 22:1\-14]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[18th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Cor. 1:4\-8 #sym.dot.c Matt 9:1\-8]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[Monday of the 18th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[1 Cor. 1:4\-8 #sym.dot.c Matt 9:1\-8]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[St. Matthew]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Ezek 1:10\-14 #sym.dot.c Matt 9:9\-13]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[September Ember Wednesday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[2 Esd. 8:1\-10 #sym.dot.c Mark 9:16\-28]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[St. Linus]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Pet 5:1\-4; 5:10\-11. #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[September Ember Friday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Osee 14:2\-10 #sym.dot.c Luke 7:36\-50]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[September Ember Saturday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Heb 9:2\-12 #sym.dot.c Luke 13:6\-17]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[19th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Eph 4:23\-28 #sym.dot.c Matt 22:1\-14]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[Sts. Cosmas & Damian]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 5:16\-20 #sym.dot.c Luke 6:17\-23]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[St. Wenceslaus]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Wis 10:10\-14 #sym.dot.c Matt 10:34\-42]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[Dedication of St. Michael the Archangel]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Rev 1:1\-5 #sym.dot.c Matt 18:1\-10]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[St. Jerome]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[October 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[Friday of the 19th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Eph 4:23\-28 #sym.dot.c Matt 22:1\-14]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[Holy Guardian Angels]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Exod 23:20\-23 #sym.dot.c Matt 18:1\-10]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[20th Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Eph 5:15\-21 #sym.dot.c John 4:46\-53]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[St. Francis of Assisi]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Gal 6:14\-18 #sym.dot.c Matt 11:25\-30]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[Tuesday of the 20th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Eph 5:15\-21 #sym.dot.c John 4:46\-53]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[St. Bruno]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[Our Lady of the Rosary]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Prov 8:22\-24, 32\-35. #sym.dot.c Luke 1:26\-38]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[St. Bridget of Sweden]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Tim. 5:3\-10. #sym.dot.c Matt 13:44\-52.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[St. John Leonardi]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 4:1\-6; 4:15\-18 #sym.dot.c Luke 10:1\-9]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[21st Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Eph 6:10\-17 #sym.dot.c Matt 18:23\-35]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[Maternity of the Blessed Virgin Mary]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Sir 24:23\-31 #sym.dot.c Luke 2:43\-51]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[Tuesday of the 21st Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Eph 6:10\-17 #sym.dot.c Matt 18:23\-35]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[St. Edward]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[St. Callistus I]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Pet 5:1\-4; 5:10\-11. #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[St. Teresa of Avila]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 10:17\-18; 11:1\-2 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[St. Hedwig]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Prov 31:10\-31 #sym.dot.c Matt 13:44\-52.]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[22nd Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Phil 1:6\-11 #sym.dot.c Matt 22:15\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[St. Luke the Evangelist]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[2 Cor. 8:16\-24 #sym.dot.c Luke 10:1\-9]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[St. Peter of Alcantara]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Phil 3:7\-12 #sym.dot.c Luke 12:32\-34]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[St. John Cantius]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[James 2:12\-17 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[Thursday of the 22nd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Phil 1:6\-11 #sym.dot.c Matt 22:15\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[Friday of the 22nd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Phil 1:6\-11 #sym.dot.c Matt 22:15\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[St. Anthony Mary Claret]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Heb 7:23\-27 #sym.dot.c Matt 24:42\-47]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[23rd Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Phil 3:17\-21; 4:1\-3 #sym.dot.c Matt 9:18\-26]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[Monday of the 23rd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Phil 3:17\-21; 4:1\-3 #sym.dot.c Matt 9:18\-26]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[Tuesday of the 23rd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Phil 3:17\-21; 4:1\-3 #sym.dot.c Matt 9:18\-26]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[Wednesday of the 23rd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Phil 3:17\-21; 4:1\-3 #sym.dot.c Matt 9:18\-26]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[Sts. Simon & Jude]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Eph. 4:7\-13. #sym.dot.c John 15:17\-25]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[Friday of the 23rd Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Phil 3:17\-21; 4:1\-3 #sym.dot.c Matt 9:18\-26]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c Luke 11:27\-28]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[31] #text(size: 7pt)[Christ the King]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Col 1:12\-20. #sym.dot.c John 18:33\-37]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[November 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[All Saints]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Apoc 7:2\-12 #sym.dot.c Matt 5:1\-12]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("black"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[Commemoration of All Souls]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[1 Cor. 15:51\-57 #sym.dot.c John 5:25\-29]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[Wednesday of the 24th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Col 1:12\-20. #sym.dot.c John 18:33\-37]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[St. Charles Borromeo]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 44:16\-27; 45:3\-20 #sym.dot.c Matt 25:14\-23]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[Friday of the 24th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Col 1:12\-20. #sym.dot.c John 18:33\-37]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c Luke 11:27\-28]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[5th Sunday after Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Col 3:12\-17 #sym.dot.c Matt 13:24\-30]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[Monday of the 25th Week of the Time after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Col 3:12\-17 #sym.dot.c Matt 13:24\-30]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[Dedication of the Archbasilica of Our Holy Savior]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Rev 21:2\-5 #sym.dot.c Luke 19:1\-10]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[St. Andrew Avellino]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 31:8\-11 #sym.dot.c Luke 12:35\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[St. Martin of Tours]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 44:16\-27; 45:3\-20 #sym.dot.c Luke 11:33\-36]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[St. Martin I]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Pet 5:1\-4; 5:10\-11. #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[St. Didacus]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Cor 4:9\-14 #sym.dot.c Luke 12:32\-34]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[6th Sunday after Epiphany]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Thess 1:2\-10 #sym.dot.c Matt 13:31\-35]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[St. Albert the Great]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[St. Gertrude the Great]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 10:17\-18; 11:1\-2 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[St. Gregory the Wonderworker]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 44:16\-27; 45:3\-20 #sym.dot.c Mark 11:22\-24]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[Dedication of the Basilicas of Sts. Peter & Paul]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Rev 21:2\-5 #sym.dot.c Luke 19:1\-10]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[St. Elizabeth of Hungary]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Prov 31:10\-31 #sym.dot.c Matt 13:44\-52.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[St. Felix of Valois]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Cor. 4:9\-14 #sym.dot.c Luke 12:32\-34]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("green"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[24th and Last Sunday after Pentecost]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Col 1:9\-14 #sym.dot.c Matt 24:15\-35]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[St. Cecilia]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 51:13\-17. #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[St. Clement I]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Phil 3:17\-21; 4:1\-3 #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[St. John of the Cross]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[St. Catherine of Alexandria]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 51:1\-8; 51:12 #sym.dot.c Matt 25:1\-13.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[St. Sylvester]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Ecclus 45:1\-6 #sym.dot.c Matt 19:27\-29.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[Our Lady's Saturday Office]
+ #v(1fr)
+ #text(size: 6.5pt)[4th Class] \
+ #text(size: 6.5pt)[Ecclus 24:14\-16 #sym.dot.c Luke 11:27\-28]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[1st Sunday of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Rom 13:11\-14 #sym.dot.c Luke 21:25\-33]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[Monday of the 1st Week of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Rom 13:11\-14 #sym.dot.c Luke 21:25\-33]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[St. Andrew]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Rom 10:10\-18 #sym.dot.c Matt 4:18\-22]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
+#text(size: 20pt, weight: "bold")[December 2027]
+#v(2mm)
+#table(
+ columns: (1fr,) * 7,
+ rows: (auto, 1fr),
+ stroke: 0.4pt + luma(150),
+ inset: 1.6mm,
+ align: left + top,
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Sunday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Monday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Tuesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Wednesday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Thursday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Friday]],
+
+ table.cell(align: center + horizon)[#text(weight: "bold")[Saturday]],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[1] #text(size: 7pt)[Wednesday of the 1st Week of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Rom 13:11\-14 #sym.dot.c Luke 21:25\-33]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[2] #text(size: 7pt)[St. Vivian]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Sir 51:13\-17. #sym.dot.c Matt 13:44\-52.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[3] #text(size: 7pt)[St. Francis Xavier]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Rom 10:10\-18 #sym.dot.c Mark 16:15\-18]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[4] #text(size: 7pt)[St. Peter Chrysologus]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[5] #text(size: 7pt)[2nd Sunday of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Rom 15:4\-13 #sym.dot.c Matt 11:2\-10]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[6] #text(size: 7pt)[St. Nicholas]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Heb 13:7\-17 #sym.dot.c Matt 25:14\-23]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[7] #text(size: 7pt)[St. Ambrose]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Tim 4:1\-8 #sym.dot.c Matt 5:13\-19]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[8] #text(size: 7pt)[Immaculate Conception of the Blessed Virgin Mary]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Prov 8:22\-35 #sym.dot.c Luke 1:26\-28]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[9] #text(size: 7pt)[Thursday of the 2nd Week of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Rom 15:4\-13 #sym.dot.c Matt 11:2\-10]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[10] #text(size: 7pt)[Friday of the 2nd Week of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Rom 15:4\-13 #sym.dot.c Matt 11:2\-10]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[11] #text(size: 7pt)[St. Damasus I]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[1 Pet 5:1\-4; 5:10\-11. #sym.dot.c Matt 16:13\-19]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("rose"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[12] #text(size: 7pt)[3rd Sunday of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Phil 4:4\-7 #sym.dot.c John 1:19\-28]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[13] #text(size: 7pt)[St. Lucy]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor 10:17\-18; 11:1\-2 #sym.dot.c Matt 13:44\-52.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[14] #text(size: 7pt)[Tuesday of the 3rd Week of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[Phil 4:4\-7 #sym.dot.c John 1:19\-28]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[15] #text(size: 7pt)[Advent Ember Wednesday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Isa 7:10\-15 #sym.dot.c Luke 1:26\-38]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[16] #text(size: 7pt)[St. Eusebius]
+ #v(1fr)
+ #text(size: 6.5pt)[3rd Class] \
+ #text(size: 6.5pt)[2 Cor. 1:3\-7 #sym.dot.c Matt 16:24\-27.]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[17] #text(size: 7pt)[Advent Ember Friday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Isa 11:1\-5 #sym.dot.c Luke 1:39\-47]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[18] #text(size: 7pt)[Advent Ember Saturday]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[2 Thess 2:1\-8 #sym.dot.c Luke 3:1\-6]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[19] #text(size: 7pt)[4th Sunday of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[1 Cor. 4:1\-5 #sym.dot.c Luke 3:1\-6]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[20] #text(size: 7pt)[Monday of the 4th Week of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Cor. 4:1\-5 #sym.dot.c Luke 3:1\-6]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[21] #text(size: 7pt)[St. Thomas]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Eph 2:19\-22 #sym.dot.c John 20:24\-29]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[22] #text(size: 7pt)[Wednesday of the 4th Week of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Cor. 4:1\-5 #sym.dot.c Luke 3:1\-6]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[23] #text(size: 7pt)[Thursday of the 4th Week of Advent]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[1 Cor. 4:1\-5 #sym.dot.c Luke 3:1\-6]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("violet"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[24] #text(size: 7pt)[Vigil of the Nativity (Christmas Eve)]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Rom 1:1\-6 #sym.dot.c Matt 1:18\-21]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[25] #text(size: 7pt)[The Nativity of Our Lord (Christmas)]
+ #v(1fr)
+ #text(size: 6.5pt)[1st Class] \
+ #text(size: 6.5pt)[Heb 1:1\-12 #sym.dot.c John 1:1\-14]
+ ],
+
+
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[26] #text(size: 7pt)[Sunday within the Octave of the Nativity]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Gal 4:1\-7 #sym.dot.c Luke 2:33\-40]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[27] #text(size: 7pt)[St. John the Evangelist]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Ecclus 15:1\-6 #sym.dot.c John 21:19\-24]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("red"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[28] #text(size: 7pt)[Holy Innocents]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Apoc 14:1\-5 #sym.dot.c Matt 2:13\-18]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[29] #text(size: 7pt)[5th Day within the Octave of the Nativity]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Titus 3:4\-7 #sym.dot.c Luke 2:15\-20]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[30] #text(size: 7pt)[6th Day within the Octave of the Nativity]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Titus 3:4\-7 #sym.dot.c Luke 2:15\-20]
+ ],
+
+
+
+
+ table.cell(fill: cgrid.at("white"))[
+ // One paragraph, a trailing backslash between the rank line and the
+ // sigla line rather than a bare newline: two markup lines joined only
+ // by a bare newline stay on ONE rendered line (still the same soft-
+ // wrapped paragraph) -- verified live, the first draft of this cell
+ // merged "III classis" straight into the citation. grid.tex's own
+ // header explains why the rank line and the sigla get their own line
+ // EACH rather than being crammed onto one -- the same reasoning
+ // applies here, so this keeps the two-line shape it settled on.
+ #set par(leading: 0.35em)
+ #text(weight: "bold")[31] #text(size: 7pt)[7th Day within the Octave of the Nativity]
+ #v(1fr)
+ #text(size: 6.5pt)[2nd Class] \
+ #text(size: 6.5pt)[Titus 3:4\-7 #sym.dot.c Luke 2:15\-20]
+ ],
+
+
+
+
+
+ table.cell(fill: cpad)[],
+
+
+
+)
+#pagebreak(weak: true)
+
diff --git a/test/golden/ordo-2027.typ b/test/golden/ordo-2027.typ
new file mode 100644
index 0000000..8abad25
--- /dev/null
+++ b/test/golden/ordo-2027.typ
@@ -0,0 +1,8008 @@
+// colitur ordo booklet -- Typst. flavour: typst
+// Build: colitur table --year 2027 --template ordo.typ > ordo.typ && typst compile ordo.typ
+//
+// ONE compile pass, not two: Typst resolves its own table of contents (built
+// from headings via the outline function below) and every page number it
+// shows internally, inside a single invocation -- there is no LaTeX-style
+// pageref/aux-file dance and no "run it twice so the numbers settle". That is
+// a genuine advantage of this flavour over ordo.tex, not merely a different
+// syntax for the same thing.
+//
+// A5, one week per page, each day in a framed box with a colour swatch.
+// Every fixed string (headings, the Epistle/Gospel/Commemoration/Week
+// labels) comes from the view's term vocabulary rather than being written
+// into this file, so a translated booklet needs no template edit -- only a
+// different --lang. Same discipline as ordo.tex; see that file's own header
+// for the full reasoning, repeated only where Typst changes it below.
+//
+// The observed day's own display name is a PLAIN resolved string
+// (View.of_days), never a lang-keyed object, exactly as in every other
+// shipped flavour -- there is no dotted-la-with-slug-fallback idiom to
+// write here at all.
+//
+// The engine has no parent-path syntax: nested inside a month's own week
+// loop, a bare week-number reference finds the WEEK's own number, and there
+// is no way to reach the enclosing month's from there. That is why each
+// week object carries its own month number and month name fields
+// (lib/render/view.ml), used below via month_name/month_num instead of a
+// parent-path reference the engine cannot express.
+//
+// The engine also rejects an empty tag path outright (a bare-dot section or
+// variable is a parse error, not an invented "current context" behaviour),
+// so every loop below names a field on the object it walks rather than
+// trying to interpolate the object itself.
+//
+// This template's own line comments are plain text to the engine: it has no
+// awareness of Typst's // syntax, and a stray double-brace pair inside one
+// would still be parsed as a tag -- which is why this whole header, like
+// ordo.tex's own, is written without ever typing two curly braces next to
+// each other, even to name a field.
+//
+// One TOC level, not two: LaTeX's own ordo.tex prints the month name ONCE
+// per month with its weeks dotted-and-paginated underneath, because it
+// walks the months-then-weeks nesting directly in its own hand-built TOC
+// loop. Typst's outline instead builds its table of contents automatically
+// from real document headings, and there is no "is this the month's first
+// week" flag in the view model for a template to test -- inventing one
+// would be new engine state for a cosmetic grouping, not a real gap. Each
+// week page therefore carries ONE flat heading, "Month . Week N", which is
+// both what a reader sees at the top of that page and, automatically, its
+// own single-line entry in the table of contents below.
+//
+// Colour swatch: the six colour names this rite emits (white, red, green,
+// violet, rose, black -- Colour.to_string's own closed vocabulary) are used
+// as literal dictionary keys inside a Typst string argument below, the same
+// trick ordo.tex's own \swatch{licol...} macro-name concatenation relies
+// on. Both templates depend on that vocabulary staying plain lowercase
+// ASCII words with no markup metacharacter in it; the escaper still runs
+// over the substituted value regardless; a value outside that closed set
+// would need a different placement, not a different escaper.
+#set page(
+ paper: "a5",
+ margin: (inside: 14mm, outside: 10mm, top: 12mm, bottom: 12mm),
+ numbering: "1",
+ header: align(center)[#text(size: 8pt)[Ordo 2027 #sym.dot.c ef]],
+)
+#set text(size: 9pt)
+#set par(justify: false)
+#show heading: it => {
+ set text(size: 12pt, weight: "bold")
+ block(above: 3mm, below: 2mm)[#it.body]
+}
+
+#let licol = (
+ white: rgb("#FFFFFF"), red: rgb("#C1272D"), green: rgb("#2E7D32"),
+ violet: rgb("#6A1B9A"), rose: rgb("#E91E8C"), black: rgb("#000000"),
+)
+
+// A framed swatch, always stroked in black regardless of fill -- so white
+// (and, were the page ever black, black) still reads as a mark rather than
+// a gap in the row. Mirrors ordo.tex's own \swatch macro.
+#let swatch(colour) = box(width: 2.4mm, height: 2.4mm, fill: licol.at(colour), stroke: 0.4pt + black)
+
+#align(center)[
+ #text(size: 18pt, weight: "bold")[Ordo 2027] \
+ ef
+]
+#v(4mm)
+#text(weight: "bold")[Contents]
+#v(1mm)
+#outline(title: none, depth: 1, indent: 4mm)
+#pagebreak(weak: true)
+
+
+
+= January #sym.dot.c Week 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[The Octave Day of the Nativity] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Titus 2:11\-15 #h(2mm) Gospel Luke 2:21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Titus 3:4\-7 #h(2mm) Gospel Luke 2:15\-20]
+]
+
+
+#pagebreak(weak: true)
+
+= January #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[The Holy Name of Jesus] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Acts 4:8\-12 #h(2mm) Gospel Luke 2:21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Monday before Epiphany] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Titus 2:11\-15 #h(2mm) Gospel Luke 2:21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Tuesday before Epiphany] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Titus 2:11\-15 #h(2mm) Gospel Luke 2:21] \
+ #text(size: 7pt)[Commemoration St. Telesphorus Pope and Martyr]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[The Epiphany of Our Lord] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Isa 60:1\-6 #h(2mm) Gospel Matt 2:1\-12]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Thursday after Epiphany] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Isa 60:1\-6 #h(2mm) Gospel Matt 2:1\-12]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Friday after Epiphany] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Isa 60:1\-6 #h(2mm) Gospel Matt 2:1\-12]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Titus 3:4\-7 #h(2mm) Gospel Luke 2:15\-20]
+]
+
+
+#pagebreak(weak: true)
+
+= January #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[The Holy Family] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Col 3:12\-17 #h(2mm) Gospel Luke 2:42\-52]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Monday of the 1st Week of the Time after Epiphany] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Rom 12:1\-5 #h(2mm) Gospel Luke 2:42\-52] \
+ #text(size: 7pt)[Commemoration St. Hyginus Pope and Martyr]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Tuesday of the 1st Week of the Time after Epiphany] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Rom 12:1\-5 #h(2mm) Gospel Luke 2:42\-52]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Commemoration of the Baptism of the Lord] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Isa 60:1\-6 #h(2mm) Gospel John 1:29\-34]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Hilary] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19] \
+ #text(size: 7pt)[Commemoration S. Felicis]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Paul, the First Hermit] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Phil 3:7\-12 #h(2mm) Gospel Matt 11:25\-30] \
+ #text(size: 7pt)[Commemoration St. Maur, Abbot]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Marcellus I] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 Pet 5:1\-4; 5:10\-11. #h(2mm) Gospel Matt 16:13\-19]
+]
+
+
+#pagebreak(weak: true)
+
+= January #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[2nd Sunday after Epiphany] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 12:6\-16 #h(2mm) Gospel John 2:1\-11]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Monday of the 2nd Week of the Time after Epiphany] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 12:6\-16 #h(2mm) Gospel John 2:1\-11] \
+ #text(size: 7pt)[Commemoration St. Prisca]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 2nd Week of the Time after Epiphany] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 12:6\-16 #h(2mm) Gospel John 2:1\-11] \
+ #text(size: 7pt)[Commemoration St. Canute, Martyr] \
+ #text(size: 7pt)[Commemoration Sts. Marius, Martha, Audifax & Abachum]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Fabian & Sebastian] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Heb 11:33\-39 #h(2mm) Gospel Luke 6:17\-23]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Agnes] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Sir 51:1\-8; 51:12 #h(2mm) Gospel Matt 25:1\-13.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Vincent & Anastasius] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Wis 3:1\-8 #h(2mm) Gospel Luke 21:9\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Raymond of Peñafort] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 12:35\-40] \
+ #text(size: 7pt)[Commemoration St. Emerentiana]
+]
+
+
+#pagebreak(weak: true)
+
+= January #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Septuagesima Sunday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 1 Cor. 9:24\-27; 10:1\-5 #h(2mm) Gospel Matt 20:1\-16]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Conversion of St. Paul] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Acts 9:1\-22 #h(2mm) Gospel Matt 19:27\-29.] \
+ #text(size: 7pt)[Commemoration St. Peter]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Polycarp] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 John 3:10\-16 #h(2mm) Gospel Matt 10:26\-32.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. John Chrysostom] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Peter Nolasco] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor. 4:9\-14 #h(2mm) Gospel Luke 12:32\-34] \
+ #text(size: 7pt)[Commemoration St. Agnes]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Francis de Sales] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Martina] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Sir 51:1\-8; 51:12 #h(2mm) Gospel Matt 25:1\-13.]
+]
+
+
+#pagebreak(weak: true)
+
+= January #sym.dot.c Week 6
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[31] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Sexagesima Sunday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 2 Cor. 11:19\-33; 12:1\-9 #h(2mm) Gospel Luke 8:4\-15]
+]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pagebreak(weak: true)
+
+
+
+= February #sym.dot.c Week 1
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Ignatius of Antioch] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Rom 8:35\-39 #h(2mm) Gospel John 12:24\-26]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Purification of the Blessed Virgin Mary] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Mal 3:1\-4 #h(2mm) Gospel Luke 2:22\-32]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Wednesday of the 2nd Week of Septuagesimatide] \
+ #text(size: 7pt)[4th Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 2 Cor. 11:19\-33; 12:1\-9 #h(2mm) Gospel Luke 8:4\-15] \
+ #text(size: 7pt)[Commemoration St. Blaise]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Andrew Corsini] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 44:16\-27; 45:3\-20 #h(2mm) Gospel Matt 25:14\-23]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Agatha] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 Cor. 1:26\-31 #h(2mm) Gospel Matt 19:3\-12.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Titus] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 44:16\-27; 45:3\-20 #h(2mm) Gospel Luke 10:1\-9] \
+ #text(size: 7pt)[Commemoration St. Dorothy]
+]
+
+
+#pagebreak(weak: true)
+
+= February #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Quinquagesima Sunday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 1 Cor. 13:1\-13 #h(2mm) Gospel Luke 18:31\-43]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. John of Matha] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 12:35\-40]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Cyril of Alexandria] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19] \
+ #text(size: 7pt)[Commemoration St. Appollonia]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Ash Wednesday] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Joel 2:12\-19 #h(2mm) Gospel Matt 6:16\-21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Thursday after Ash Wednesday] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Isa 38:1\-6 #h(2mm) Gospel Matt 8:5\-13] \
+ #text(size: 7pt)[Commemoration Our Lady of Lourdes]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Friday after Ash Wednesday] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Isa 58:1\-9 #h(2mm) Gospel Matt 5:43\-48; 6:1\-4] \
+ #text(size: 7pt)[Commemoration Seven Holy Servite Founders]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Saturday after Ash Wednesday] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Isa 58:9\-14 #h(2mm) Gospel Mark 6:47\-56]
+]
+
+
+#pagebreak(weak: true)
+
+= February #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[1st Sunday of Lent] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 2 Cor. 6:1\-10 #h(2mm) Gospel Matt 4:1\-11]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Monday of the 1st Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Ezech 34:11\-16 #h(2mm) Gospel Matt 25:31\-46] \
+ #text(size: 7pt)[Commemoration Sts. Faustinus & Jovita]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Tuesday of the 1st Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Isa 55:6\-11 #h(2mm) Gospel Matt 21:10\-17]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Lenten Ember Wednesday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 3 Kgs. 19:3\-8 #h(2mm) Gospel Matt 12:38\-50]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Thursday of the 1st Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Ezech 18:1\-9 #h(2mm) Gospel Matt 15:21\-28] \
+ #text(size: 7pt)[Commemoration St. Simeon]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Lenten Ember Friday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Ezech 18:20\-28 #h(2mm) Gospel John 5:1\-15]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Lenten Ember Saturday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 1 Thess. 5:14\-23 #h(2mm) Gospel Matt 17:1\-9]
+]
+
+
+#pagebreak(weak: true)
+
+= February #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[2nd Sunday of Lent] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 1 Thess. 4:1\-7 #h(2mm) Gospel Matt 17:1\-9]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Chair of St. Peter] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 1:1\-7 #h(2mm) Gospel Matt 16:13\-19] \
+ #text(size: 7pt)[Commemoration Monday of the 2nd Week of Lent] \
+ #text(size: 7pt)[Commemoration St. Paul]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Tuesday of the 2nd Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 3 Kings 17:8\-16 #h(2mm) Gospel Matt 23:1\-12] \
+ #text(size: 7pt)[Commemoration St. Peter Damien]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Matthias] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Acts 1:15\-26 #h(2mm) Gospel Matt 11:25\-30] \
+ #text(size: 7pt)[Commemoration Wednesday of the 2nd Week of Lent]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Thursday of the 2nd Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Jer 17:5\-10 #h(2mm) Gospel Luke 16:19\-31]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Friday of the 2nd Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Gen 37:6\-22 #h(2mm) Gospel Matt 21:33\-46]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Saturday of the 2nd Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Gen 27:6\-40 #h(2mm) Gospel Luke 15:11\-32] \
+ #text(size: 7pt)[Commemoration St. Gabriel of Our Lady of Sorrows]
+]
+
+
+#pagebreak(weak: true)
+
+= February #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[3rd Sunday of Lent] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Eph 5:1\-9 #h(2mm) Gospel Luke 11:14\-28]
+]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pagebreak(weak: true)
+
+
+
+= March #sym.dot.c Week 1
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Monday of the 3rd Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 4 Kings 5:1\-15 #h(2mm) Gospel Luke 4:23\-30]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Tuesday of the 3rd Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 4 Kings 4:1\-7 #h(2mm) Gospel Matt 18:15\-22]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Wednesday of the 3rd Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Ex 20:12\-24 #h(2mm) Gospel Matt 15:1\-20]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Thursday of the 3rd Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Jer 7:1\-7 #h(2mm) Gospel Luke 4:38\-44.] \
+ #text(size: 7pt)[Commemoration St. Casimir] \
+ #text(size: 7pt)[Commemoration St. Lucius]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Friday of the 3rd Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Num 20:1, 3; 6\-13. #h(2mm) Gospel John 4:5\-42]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Saturday of the 3rd Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Dan 13:1\-9, 15\-17, 19\-30, 33\-62. #h(2mm) Gospel John 8:1\-11] \
+ #text(size: 7pt)[Commemoration Sts. Felicitas & Perpetua]
+]
+
+
+#pagebreak(weak: true)
+
+= March #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("rose") \
+ #text(weight: "bold")[4th Sunday of Lent] \
+ #text(size: 7pt)[1st Class #sym.dot.c Rose] \
+ #text(size: 7pt)[Epistle Gal 4:22\-31 #h(2mm) Gospel John 6:1\-15]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Monday of the 4th Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 3 Kings 3:16\-28 #h(2mm) Gospel John 2:13\-25] \
+ #text(size: 7pt)[Commemoration St. John of God]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Tuesday of the 4th Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Ex 32:7\-14 #h(2mm) Gospel John 7:14\-31] \
+ #text(size: 7pt)[Commemoration St. Frances Rome]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Wednesday of the 4th Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Isa. 1:16\-19 #h(2mm) Gospel John 9:1\-38] \
+ #text(size: 7pt)[Commemoration Forty Holy Martyrs of Sebaste]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Thursday of the 4th Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 4 Kings 4:25\-38 #h(2mm) Gospel Luke 7:11\-16]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Friday of the 4th Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 3 Kings 17:17\-24 #h(2mm) Gospel John 11:1\-45] \
+ #text(size: 7pt)[Commemoration St. Gregory the Great]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Saturday of the 4th Week of Lent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Isa 49:8\-15 #h(2mm) Gospel John 8:12\-20]
+]
+
+
+#pagebreak(weak: true)
+
+= March #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Passion Sunday] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Heb 9:11\-15. #h(2mm) Gospel John 8:46\-59.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Monday of the 1st Week of Passion Week] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Jonas 3:1\-10 #h(2mm) Gospel John 7:32\-39]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Tuesday of the 1st Week of Passion Week] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Dan 14:27, 28\-42 #h(2mm) Gospel John 7:1\-13]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Wednesday of the 1st Week of Passion Week] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Lev 19:1\-2, 11\-19, 25 #h(2mm) Gospel John 10:22\-38] \
+ #text(size: 7pt)[Commemoration St. Patrick]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Thursday of the 1st Week of Passion Week] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Dan 3:25, 34\-45. #h(2mm) Gospel Luke 7:36\-50] \
+ #text(size: 7pt)[Commemoration St. Cyril of Jerusalem]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Joseph, Spouse of the Bl. Virgin Mary] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 45:1\-6 #h(2mm) Gospel Matt 1:18\-21] \
+ #text(size: 7pt)[Commemoration Friday of the 1st Week of Passion Week]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Saturday of the 1st Week of Passion Week] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Jer 18:18\-23 #h(2mm) Gospel John 12:10\-36]
+]
+
+
+#pagebreak(weak: true)
+
+= March #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Palm Sunday] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Phil 2:5\-11 #h(2mm) Gospel Matt. 26:36\-75; 27:1\-60.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Monday of Holy Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Isa 50:5\-10 #h(2mm) Gospel John 12:1\-9]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Tuesday of Holy Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Jer 11:18\-20 #h(2mm) Gospel Mark 14:32\-72; 15, 1\-46]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Wednesday of Holy Week (Spy Wednesday)] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Isa 53:1\-12 #h(2mm) Gospel Luke 22:39\-71; 23:1\-53]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Holy Thursday (Maundy Thursday)] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor 11:20\-32 #h(2mm) Gospel John 13:1\-15]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("black") \
+ #text(weight: "bold")[Good Friday] \
+ #text(size: 7pt)[1st Class #sym.dot.c Black] \
+ #text(size: 7pt)[Epistle Ex 12:1\-11 #h(2mm) Gospel John 18:1\-40; 19:1\-42]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Holy Saturday] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Col 3:1\-4 #h(2mm) Gospel Matt 28:1\-7]
+]
+
+
+#pagebreak(weak: true)
+
+= March #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Easter Sunday] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor 5:7\-8 #h(2mm) Gospel Mark 16:1\-7]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Monday of Easter Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Acts 10:37\-43. #h(2mm) Gospel Luke 24:13\-35]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Tuesday of Easter Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Acts 13:16; 13:26\-33 #h(2mm) Gospel Luke 24:36\-47]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[31] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Wednesday of Easter Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Acts 3:13\-15; 3:17\-19 #h(2mm) Gospel John 21:1\-14]
+]
+
+
+
+
+
+
+
+
+#pagebreak(weak: true)
+
+
+
+= April #sym.dot.c Week 1
+
+
+
+
+
+
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Thursday of Easter Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Acts 8:26\-40 #h(2mm) Gospel John 20:11\-18]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Friday of Easter Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 3:18\-22 #h(2mm) Gospel Matt 28:16\-20]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Saturday of Easter Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 2:1\-10 #h(2mm) Gospel John 20:1\-9]
+]
+
+
+#pagebreak(weak: true)
+
+= April #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Low Sunday (Sunday in Easter Octave)] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 John 5:4\-10 #h(2mm) Gospel John 20:19\-31]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Annunciation of the Blessed Virgin Mary] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Isa 7:10\-15 #h(2mm) Gospel Luke 1:26\-38]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Tuesday of the 2nd Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 John 5:4\-10 #h(2mm) Gospel John 20:19\-31]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Wednesday of the 2nd Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 John 5:4\-10 #h(2mm) Gospel John 20:19\-31]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Thursday of the 2nd Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 John 5:4\-10 #h(2mm) Gospel John 20:19\-31]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Friday of the 2nd Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 John 5:4\-10 #h(2mm) Gospel John 20:19\-31]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel John 19:25\-27]
+]
+
+
+#pagebreak(weak: true)
+
+= April #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[2nd Sunday after Easter] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 2:21\-25 #h(2mm) Gospel John 10:11\-16]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Monday of the 3rd Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 2:21\-25 #h(2mm) Gospel John 10:11\-16]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Hermenegild] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Wis 10:10\-14 #h(2mm) Gospel Luke 14:26\-33.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Justin] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 Cor 1:18\-25; 1:30; #h(2mm) Gospel Luke 12:2\-8] \
+ #text(size: 7pt)[Commemoration Sts. Tiburtius, Valerian et Maximus, Martyrs]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Thursday of the 3rd Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 2:21\-25 #h(2mm) Gospel John 10:11\-16]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Friday of the 3rd Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 2:21\-25 #h(2mm) Gospel John 10:11\-16]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel John 19:25\-27] \
+ #text(size: 7pt)[Commemoration St. Anicetus]
+]
+
+
+#pagebreak(weak: true)
+
+= April #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[3rd Sunday after Easter] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 2:11\-19 #h(2mm) Gospel John 16:16\-22]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Monday of the 4th Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 2:11\-19 #h(2mm) Gospel John 16:16\-22]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Tuesday of the 4th Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 2:11\-19 #h(2mm) Gospel John 16:16\-22]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Anselm] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Soter & Caius] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 Pet 5:1\-4; 5:10\-11. #h(2mm) Gospel Matt 16:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Friday of the 4th Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 2:11\-19 #h(2mm) Gospel John 16:16\-22] \
+ #text(size: 7pt)[Commemoration St. George]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Fidelis of Sigmaringen] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Wis 5:1\-5 #h(2mm) Gospel John 15:1\-7]
+]
+
+
+#pagebreak(weak: true)
+
+= April #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[4th Sunday after Easter] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Jas 1:17\-21 #h(2mm) Gospel John 16:5\-14] \
+ #text(size: 7pt)[Commemoration The Major Litanies]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Cletus & Marcellinus] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 Pet 5:1\-4; 5:10\-11. #h(2mm) Gospel Matt 16:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Peter Canisius] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Paul of the Cross] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor 1:17\-25. #h(2mm) Gospel Luke 10:1\-9]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Peter of Verona] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 2 Tim. 2:8\-10; 3:10\-12. #h(2mm) Gospel Matt 10:34\-42]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Catherine of Siena] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor 10:17\-18; 11:1\-2 #h(2mm) Gospel Matt 25:1\-13.]
+]
+
+
+
+
+#pagebreak(weak: true)
+
+
+
+= May #sym.dot.c Week 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Joseph the Workman] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Col. 3:14\-15, 17, 23\-24 #h(2mm) Gospel Matt 13:54\-58]
+]
+
+
+#pagebreak(weak: true)
+
+= May #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[5th Sunday after Easter] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Jas 1:22\-27 #h(2mm) Gospel John 16:23\-30]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Rogation Monday] \
+ #text(size: 7pt)[4th Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Jas 1:22\-27 #h(2mm) Gospel John 16:23\-30] \
+ #text(size: 7pt)[Commemoration Sts. Alexander & Companions]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Monica] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Tim. 5:3\-10. #h(2mm) Gospel Luke 7:11\-16]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Vigil of the Ascension] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Eph. 4:7\-13. #h(2mm) Gospel John 17:1\-11.] \
+ #text(size: 7pt)[Commemoration St. Pius V]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[The Ascension of Our Lord] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Acts 1:1\-11 #h(2mm) Gospel Mark 16:14\-20]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Stanislaus] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Wis 5:1\-5 #h(2mm) Gospel John 15:1\-7]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel John 19:25\-27]
+]
+
+
+#pagebreak(weak: true)
+
+= May #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Sunday after the Ascension] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 4:7\-11. #h(2mm) Gospel John 15:26\-27; 16:1\-4.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Antoninus] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 44:16\-27; 45:3\-20 #h(2mm) Gospel Matt 25:14\-23] \
+ #text(size: 7pt)[Commemoration St. Gordiano and Epimacho]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Philip & James] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Wis. 5:1\-5 #h(2mm) Gospel John 14:1\-13]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Nereus, Achilleus, Domitilla, & Pancras] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Wis. 5:1\-5 #h(2mm) Gospel John 4:46\-53]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Robert Bellarmine] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Wis 7:7\-14. #h(2mm) Gospel Matt 5:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Friday of the 7th Week of Eastertide] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 4:7\-11. #h(2mm) Gospel John 15:26\-27; 16:1\-4.] \
+ #text(size: 7pt)[Commemoration St. Boniface]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Vigil of Pentecost] \
+ #text(size: 7pt)[1st Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Acts 19:1\-8. #h(2mm) Gospel John 14:15\-21.]
+]
+
+
+#pagebreak(weak: true)
+
+= May #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Pentecost Sunday (Whitsunday)] \
+ #text(size: 7pt)[1st Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Acts 2:1\-11. #h(2mm) Gospel John 14:23\-31.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Monday of Pentecost Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Acts 10:34, 42\-48 #h(2mm) Gospel John 3:16\-21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Tuesday of Pentecost Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Acts 8:14\-17. #h(2mm) Gospel John 10:1\-10.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Pentecost Ember Wednesday] \
+ #text(size: 7pt)[1st Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Acts 5:12\-16 #h(2mm) Gospel John 6:44\-52.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Thursday of Pentecost Week] \
+ #text(size: 7pt)[1st Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Acts 8:5\-8 #h(2mm) Gospel Luke 9:1\-6]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Pentecost Ember Friday] \
+ #text(size: 7pt)[1st Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Joel 2:23\-24; 26\-27 #h(2mm) Gospel Luke 5:17\-26]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Pentecost Ember Saturday] \
+ #text(size: 7pt)[1st Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Rom 5:1\-5. #h(2mm) Gospel Luke 4:38\-44.]
+]
+
+
+#pagebreak(weak: true)
+
+= May #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Trinity Sunday] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Rom 11:33\-36. #h(2mm) Gospel Matt 28:18\-20]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Monday of the 1st Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 John 4:8\-21 #h(2mm) Gospel Luke 6:36\-42]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Gregory VII] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 5:1\-4; 5:10\-11. #h(2mm) Gospel Matt 16:13\-19] \
+ #text(size: 7pt)[Commemoration St. Urban, Pope and Martyr]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Philip Neri] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Wis 7:7\-14. #h(2mm) Gospel Luke 12:35\-40] \
+ #text(size: 7pt)[Commemoration S. Eleutherius]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Corpus Christi] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor 11:23\-29 #h(2mm) Gospel John 6:56\-59]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Augustine of Canterbury] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Thess 2:2\-9 #h(2mm) Gospel Luke 10:1\-9]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Mary Magdalene de Pazzi] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor 10:17\-18; 11:1\-2 #h(2mm) Gospel Matt 25:1\-13.]
+]
+
+
+#pagebreak(weak: true)
+
+= May #sym.dot.c Week 6
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[2nd Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 John 3:13\-18. #h(2mm) Gospel Luke 14:16\-24.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[31] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Queenship of the Blessed Virgin Mary] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Eccli 24:5; 14:7; 14:9\-11; 24:30\-31 #h(2mm) Gospel Luke 1:26\-33] \
+ #text(size: 7pt)[Commemoration St. Petronilla]
+]
+
+
+
+
+
+
+
+
+
+
+
+
+#pagebreak(weak: true)
+
+
+
+= June #sym.dot.c Week 1
+
+
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Angela Merici] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor 10:17\-18; 11:1\-2 #h(2mm) Gospel Matt 25:1\-13.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Wednesday of the 2nd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 John 3:13\-18. #h(2mm) Gospel Luke 14:16\-24.] \
+ #text(size: 7pt)[Commemoration Sts. Marcellinus, Peter, & Erasmus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Thursday of the 2nd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 John 3:13\-18. #h(2mm) Gospel Luke 14:16\-24.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[The Sacred Heart of Jesus] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Eph 3:8\-12, 14\-19 #h(2mm) Gospel John 19:31\-37]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Boniface] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Ecclus 44:1\-15 #h(2mm) Gospel Matt 5:1\-12]
+]
+
+
+#pagebreak(weak: true)
+
+= June #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[3rd Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Pet. 5:6\-11 #h(2mm) Gospel Luke 15:1\-10]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Monday of the 3rd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Pet. 5:6\-11 #h(2mm) Gospel Luke 15:1\-10]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 3rd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Pet. 5:6\-11 #h(2mm) Gospel Luke 15:1\-10]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Wednesday of the 3rd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Pet. 5:6\-11 #h(2mm) Gospel Luke 15:1\-10] \
+ #text(size: 7pt)[Commemoration Sts. Primus & Felicianus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Margaret of Scotland] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Prov 31:10\-31 #h(2mm) Gospel Matt 13:44\-52.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Barnabas] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Acts 11:21\-26; 13:1\-3 #h(2mm) Gospel Matt 10:16\-22]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. John of San Fecundo] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 12:35\-40] \
+ #text(size: 7pt)[Commemoration St. Basilidus]
+]
+
+
+#pagebreak(weak: true)
+
+= June #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[4th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 8:18\-23 #h(2mm) Gospel Luke 5:1\-11]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Basil the Great] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Luke 14:26\-35]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 4th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 8:18\-23 #h(2mm) Gospel Luke 5:1\-11] \
+ #text(size: 7pt)[Commemoration St. Vitus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Wednesday of the 4th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 8:18\-23 #h(2mm) Gospel Luke 5:1\-11]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Gregory Barbarigo] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 44:16\-27; 45:3\-20 #h(2mm) Gospel Matt 25:14\-23]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Ephrem of Syria] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19] \
+ #text(size: 7pt)[Commemoration Ss. Marcus and Marcellianus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Julia of Falconieri] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor 10:17\-18; 11:1\-2 #h(2mm) Gospel Matt 25:1\-13.] \
+ #text(size: 7pt)[Commemoration Sts. Gervasius and Protasius]
+]
+
+
+#pagebreak(weak: true)
+
+= June #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[5th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Pet 3:8\-15. #h(2mm) Gospel Matt 5:20\-24.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Aloysius Gongzaga] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Matt 22:29\-40]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Paulinus of Nola] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor. 8:9\-15 #h(2mm) Gospel Luke 12:32\-34]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Vigil of the Nativity of St. John the Baptist] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Jer 1:4\-10 #h(2mm) Gospel Luke 1:5\-17]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Nativity of St. John the Baptist] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Isa 49:1\-3, 5\-7. #h(2mm) Gospel Luke 1:57\-68]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. William] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 45:1\-6 #h(2mm) Gospel Matt 19:27\-29.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. John & Paul] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Eccli 44:10\-15 #h(2mm) Gospel Luke 12:1\-8]
+]
+
+
+#pagebreak(weak: true)
+
+= June #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[6th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 6:3\-11. #h(2mm) Gospel Mark 8:1\-9]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Vigil of Sts. Peter & Paul] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Acts 3:1\-10 #h(2mm) Gospel John 21:15\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Peter & Paul] \
+ #text(size: 7pt)[1st Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Acts 12:1\-11 #h(2mm) Gospel Matt 16:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[In Commemoratione Sancti Pauli Apostoli] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Gal 1:11\-20 #h(2mm) Gospel Matt 10:16\-22] \
+ #text(size: 7pt)[Commemoration St. Peter]
+]
+
+
+
+
+
+
+
+
+#pagebreak(weak: true)
+
+
+
+= July #sym.dot.c Week 1
+
+
+
+
+
+
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[The Precious Blood of Our Lord Jesus Christ] \
+ #text(size: 7pt)[1st Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Heb 9:11\-15. #h(2mm) Gospel John 19:30\-35]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Visitation of the Blessed Virgin Mary] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Song 2:8\-14 #h(2mm) Gospel Luke 1:39\-47] \
+ #text(size: 7pt)[Commemoration SS. Processus and Martinian]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Irenaeus] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 2 Tim. 3:14\-17; 4:1\-5 #h(2mm) Gospel Matt 10:28\-33]
+]
+
+
+#pagebreak(weak: true)
+
+= July #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[7th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 6:19\-23 #h(2mm) Gospel Matt 7:15\-21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Anthony Mary Zaccariah] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Tim. 4:8\-16 #h(2mm) Gospel Mark 10:15\-21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 7th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 6:19\-23 #h(2mm) Gospel Matt 7:15\-21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Sts. Cyril & Methodius] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Heb 7:23\-27 #h(2mm) Gospel Luke 10:1\-9]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Elizabeth of Portugal] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Prov 31:10\-31 #h(2mm) Gospel Matt 13:44\-52.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Friday of the 7th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 6:19\-23 #h(2mm) Gospel Matt 7:15\-21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Seven Holy Brothers and Sts. Rufina & Secunda] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Prov 31:10\-31 #h(2mm) Gospel Matt 12:46\-50]
+]
+
+
+#pagebreak(weak: true)
+
+= July #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[8th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 8:12\-17 #h(2mm) Gospel Luke 16:1\-9]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. John Gualbert] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 45:1\-6 #h(2mm) Gospel Matt 5:43\-48] \
+ #text(size: 7pt)[Commemoration Ss. Naboris et Felicis]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 8th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 8:12\-17 #h(2mm) Gospel Luke 16:1\-9]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Bonaventure] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Henry the Emperor] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 12:35\-40]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Friday of the 8th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Rom 8:12\-17 #h(2mm) Gospel Luke 16:1\-9] \
+ #text(size: 7pt)[Commemoration Our Lady of Mt. Carmel]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel Luke 11:27\-28] \
+ #text(size: 7pt)[Commemoration St. Alexis]
+]
+
+
+#pagebreak(weak: true)
+
+= July #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[9th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Cor. 10:6\-13 #h(2mm) Gospel Luke 19:41\-47]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Vincent de Paul] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor. 4:9\-14 #h(2mm) Gospel Luke 10:1\-9]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Jerome Emiliani] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Isa 58:7\-11 #h(2mm) Gospel Matt 19:13\-21] \
+ #text(size: 7pt)[Commemoration St. Margaret]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Laurence of Brindisi] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19] \
+ #text(size: 7pt)[Commemoration St. Praxedis Virginis]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Mary Magdalene] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Song 3:2\-5; 8:6\-7 #h(2mm) Gospel Luke 7:36\-50]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Apollinaris] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 Pet. 5:1\-11 #h(2mm) Gospel Luke 22:24\-30] \
+ #text(size: 7pt)[Commemoration S. Liborii]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel Luke 11:27\-28] \
+ #text(size: 7pt)[Commemoration St. Christina]
+]
+
+
+#pagebreak(weak: true)
+
+= July #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[10th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Cor. 12:2\-11 #h(2mm) Gospel Luke 18:9\-14] \
+ #text(size: 7pt)[Commemoration St. James the Greater]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Anne, Mother of the Blessed Virgin] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Prov 31:10\-31 #h(2mm) Gospel Matt 13:44\-52.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 10th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Cor. 12:2\-11 #h(2mm) Gospel Luke 18:9\-14] \
+ #text(size: 7pt)[Commemoration St. Pantaleon]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Nazarius & Celsus, St. Victor I & St. Innocent I] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Wis 10:17\-20 #h(2mm) Gospel Luke 21:9\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Martha] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor 10:17\-18; 11:1\-2 #h(2mm) Gospel Luke 10:38\-42] \
+ #text(size: 7pt)[Commemoration Ss. Felicis, Simplicii, Faustini et Beatricis]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Friday of the 10th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Cor. 12:2\-11 #h(2mm) Gospel Luke 18:9\-14] \
+ #text(size: 7pt)[Commemoration Sts. Abdon & Sennen]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[31] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Ignatius Loyola] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim. 2:8\-10; 3:10\-12. #h(2mm) Gospel Luke 10:1\-9]
+]
+
+
+#pagebreak(weak: true)
+
+
+
+= August #sym.dot.c Week 1
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[11th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Cor. 15:1\-10 #h(2mm) Gospel Mark 7:31\-37]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Alphonsus Liguori] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim. 2:1\-7 #h(2mm) Gospel Luke 10:1\-9] \
+ #text(size: 7pt)[Commemoration St. Stephen I, Pope and Martyr]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 11th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Cor. 15:1\-10 #h(2mm) Gospel Mark 7:31\-37]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Dominic] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim. 4:1\-8 #h(2mm) Gospel Luke 12:35\-40]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Dedication of the Basilica of St. Mary Major] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel Luke 11:27\-28]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Transfiguration of Our Lord] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Pet. 1:16\-19 #h(2mm) Gospel Matt 17:1\-9] \
+ #text(size: 7pt)[Commemoration Pope Sixtus II, Felicissimus and Agapitus, Martyrs]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Cajetan] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Matt 6:24\-33] \
+ #text(size: 7pt)[Commemoration St. Donatus]
+]
+
+
+#pagebreak(weak: true)
+
+= August #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[12th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 2 Cor. 3:4\-9 #h(2mm) Gospel Luke 10:23\-37]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Vigil of St. Lawrence] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Ecclus 51:1\-8, 12 #h(2mm) Gospel Matt 16:24\-27] \
+ #text(size: 7pt)[Commemoration St. Romanus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Lawrence] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 2 Cor. 9:6\-10 #h(2mm) Gospel John 12:24\-26]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Wednesday of the 12th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 2 Cor. 3:4\-9 #h(2mm) Gospel Luke 10:23\-37] \
+ #text(size: 7pt)[Commemoration Sts. Tiburtius & Susanna]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Clare] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor 10:17\-18; 11:1\-2 #h(2mm) Gospel Matt 25:1\-13.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Friday of the 12th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 2 Cor. 3:4\-9 #h(2mm) Gospel Luke 10:23\-37] \
+ #text(size: 7pt)[Commemoration Sts. Hippolytus & Cassian]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Vigil of the Assumption] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Sir 24:23\-31 #h(2mm) Gospel Luke 11:27\-28] \
+ #text(size: 7pt)[Commemoration St. Eusebius]
+]
+
+
+#pagebreak(weak: true)
+
+= August #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Assumption of the Blessed Virgin Mary] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Judith 13:22\-25; 15:10 #h(2mm) Gospel Luke 1:41\-50] \
+ #text(size: 7pt)[Commemoration 13th Sunday after Pentecost]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Joachim, Father of the Blessed Virgin] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Matt 1:1\-16]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Hyacinth] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 12:35\-40]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Wednesday of the 13th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Gal 3:16\-22 #h(2mm) Gospel Luke 17:11\-19] \
+ #text(size: 7pt)[Commemoration St. Agapitus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. John Eudes] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 12:35\-40]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Bernard of Clairvaux] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 39:6\-14 #h(2mm) Gospel Matt 5:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Jane Frances de Chantal] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Prov 31:10\-31 #h(2mm) Gospel Matt 13:44\-52.]
+]
+
+
+#pagebreak(weak: true)
+
+= August #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[14th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Gal 5:16\-24 #h(2mm) Gospel Matt 6:24\-33] \
+ #text(size: 7pt)[Commemoration Immaculate Heart of Mary]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Philip Benizi] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor. 4:9\-14 #h(2mm) Gospel Luke 12:32\-34]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Bartholomew] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 Cor. 12:27\-31 #h(2mm) Gospel Luke 6:12\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Louis IX] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Wis 10:10\-14 #h(2mm) Gospel Luke 19:12\-26]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Thursday of the 14th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Gal 5:16\-24 #h(2mm) Gospel Matt 6:24\-33] \
+ #text(size: 7pt)[Commemoration St. Zephyrinus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Joseph Calasance] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Wis 10:10\-14 #h(2mm) Gospel Matt 18:1\-5]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Augustine] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19] \
+ #text(size: 7pt)[Commemoration St. Hermes]
+]
+
+
+#pagebreak(weak: true)
+
+= August #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[15th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Gal 5:25\-26; 6:1\-10 #h(2mm) Gospel Luke 7:11\-16]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Rose of Lima] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor 10:17\-18; 11:1\-2 #h(2mm) Gospel Matt 25:1\-13.] \
+ #text(size: 7pt)[Commemoration Sts. Felix and Adauctus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[31] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Raymond Nonnatus] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 12:35\-40]
+]
+
+
+
+
+
+
+
+
+
+
+#pagebreak(weak: true)
+
+
+
+= September #sym.dot.c Week 1
+
+
+
+
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Wednesday of the 15th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Gal 5:25\-26; 6:1\-10 #h(2mm) Gospel Luke 7:11\-16] \
+ #text(size: 7pt)[Commemoration St. Giles] \
+ #text(size: 7pt)[Commemoration Twelve Holy Brothers, Martyrs]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Stephen of Hungary] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 19:12\-26]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Pius X] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Thess. 2:2\-8 #h(2mm) Gospel John 21:15\-17]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel Luke 11:27\-28]
+]
+
+
+#pagebreak(weak: true)
+
+= September #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[16th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 3:13\-21 #h(2mm) Gospel Luke 14:1\-11]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Monday of the 16th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 3:13\-21 #h(2mm) Gospel Luke 14:1\-11]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 16th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 3:13\-21 #h(2mm) Gospel Luke 14:1\-11]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Nativity of the Blessed Virgin Mary] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Prov 8:22\-35 #h(2mm) Gospel Matt 1:1\-16] \
+ #text(size: 7pt)[Commemoration S. Hadriani]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Thursday of the 16th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 3:13\-21 #h(2mm) Gospel Luke 14:1\-11] \
+ #text(size: 7pt)[Commemoration St. Gorgonius]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Nicholas of Tolentino] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor. 4:9\-14 #h(2mm) Gospel Luke 12:32\-34]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel Luke 11:27\-28] \
+ #text(size: 7pt)[Commemoration Sts. Protus & Hyacinth]
+]
+
+
+#pagebreak(weak: true)
+
+= September #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[17th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 4:1\-6 #h(2mm) Gospel Matt 22:34\-46]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Monday of the 17th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 4:1\-6 #h(2mm) Gospel Matt 22:34\-46]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Exaltation of the Holy Cross] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Phil 2:5\-11 #h(2mm) Gospel John 12:31\-36]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Seven Sorrows of the Blessed Virgin Mary] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Judith 13:22; 13:23\-25 #h(2mm) Gospel John 19:25\-27] \
+ #text(size: 7pt)[Commemoration S. Nicomedes]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Cornelius & Cyprian] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Wis 3:1\-8 #h(2mm) Gospel Luke 21:9\-19] \
+ #text(size: 7pt)[Commemoration Sts. Euphemia, Lucy and Geminianus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Friday of the 17th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 4:1\-6 #h(2mm) Gospel Matt 22:34\-46] \
+ #text(size: 7pt)[Commemoration Stigmata of St. Francis]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Joseph of Cupertino] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor 13:1\-8 #h(2mm) Gospel Matt 22:1\-14]
+]
+
+
+#pagebreak(weak: true)
+
+= September #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[18th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Cor. 1:4\-8 #h(2mm) Gospel Matt 9:1\-8]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Monday of the 18th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Cor. 1:4\-8 #h(2mm) Gospel Matt 9:1\-8] \
+ #text(size: 7pt)[Commemoration Sts. Eustace & Companions]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Matthew] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Ezek 1:10\-14 #h(2mm) Gospel Matt 9:9\-13]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[September Ember Wednesday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 2 Esd. 8:1\-10 #h(2mm) Gospel Mark 9:16\-28] \
+ #text(size: 7pt)[Commemoration St. Thomas of Villanova]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Linus] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 Pet 5:1\-4; 5:10\-11. #h(2mm) Gospel Matt 16:13\-19] \
+ #text(size: 7pt)[Commemoration St. Thecla]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[September Ember Friday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Osee 14:2\-10 #h(2mm) Gospel Luke 7:36\-50] \
+ #text(size: 7pt)[Commemoration Our Lady of Ransom]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[September Ember Saturday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Heb 9:2\-12 #h(2mm) Gospel Luke 13:6\-17]
+]
+
+
+#pagebreak(weak: true)
+
+= September #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[19th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 4:23\-28 #h(2mm) Gospel Matt 22:1\-14]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Cosmas & Damian] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Wis 5:16\-20 #h(2mm) Gospel Luke 6:17\-23]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Wenceslaus] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Wis 10:10\-14 #h(2mm) Gospel Matt 10:34\-42]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Dedication of St. Michael the Archangel] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Rev 1:1\-5 #h(2mm) Gospel Matt 18:1\-10]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Jerome] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19]
+]
+
+
+
+
+
+
+#pagebreak(weak: true)
+
+
+
+= October #sym.dot.c Week 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Friday of the 19th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 4:23\-28 #h(2mm) Gospel Matt 22:1\-14] \
+ #text(size: 7pt)[Commemoration St. Remigius]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Holy Guardian Angels] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Exod 23:20\-23 #h(2mm) Gospel Matt 18:1\-10]
+]
+
+
+#pagebreak(weak: true)
+
+= October #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[20th Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 5:15\-21 #h(2mm) Gospel John 4:46\-53]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Francis of Assisi] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Gal 6:14\-18 #h(2mm) Gospel Matt 11:25\-30]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 20th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 5:15\-21 #h(2mm) Gospel John 4:46\-53] \
+ #text(size: 7pt)[Commemoration St. Placid & Companions]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Bruno] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 12:35\-40]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady of the Rosary] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Prov 8:22\-24, 32\-35. #h(2mm) Gospel Luke 1:26\-38] \
+ #text(size: 7pt)[Commemoration St. Mark I]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Bridget of Sweden] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Tim. 5:3\-10. #h(2mm) Gospel Matt 13:44\-52.] \
+ #text(size: 7pt)[Commemoration Ss. Sergio, Baccho, Marcello and Apulejo Martyrs]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. John Leonardi] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor 4:1\-6; 4:15\-18 #h(2mm) Gospel Luke 10:1\-9] \
+ #text(size: 7pt)[Commemoration St. Dionysius and companions]
+]
+
+
+#pagebreak(weak: true)
+
+= October #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[21st Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 6:10\-17 #h(2mm) Gospel Matt 18:23\-35]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Maternity of the Blessed Virgin Mary] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 24:23\-31 #h(2mm) Gospel Luke 2:43\-51]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 21st Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Eph 6:10\-17 #h(2mm) Gospel Matt 18:23\-35]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Edward] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 12:35\-40]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Callistus I] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 Pet 5:1\-4; 5:10\-11. #h(2mm) Gospel Matt 16:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Teresa of Avila] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor 10:17\-18; 11:1\-2 #h(2mm) Gospel Matt 25:1\-13.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Hedwig] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Prov 31:10\-31 #h(2mm) Gospel Matt 13:44\-52.]
+]
+
+
+#pagebreak(weak: true)
+
+= October #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[22nd Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Phil 1:6\-11 #h(2mm) Gospel Matt 22:15\-21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Luke the Evangelist] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 2 Cor. 8:16\-24 #h(2mm) Gospel Luke 10:1\-9]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Peter of Alcantara] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Phil 3:7\-12 #h(2mm) Gospel Luke 12:32\-34]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. John Cantius] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle James 2:12\-17 #h(2mm) Gospel Luke 12:35\-40]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Thursday of the 22nd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Phil 1:6\-11 #h(2mm) Gospel Matt 22:15\-21] \
+ #text(size: 7pt)[Commemoration St. Hilarion] \
+ #text(size: 7pt)[Commemoration St. Ursula and Companions]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Friday of the 22nd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Phil 1:6\-11 #h(2mm) Gospel Matt 22:15\-21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Anthony Mary Claret] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Heb 7:23\-27 #h(2mm) Gospel Matt 24:42\-47]
+]
+
+
+#pagebreak(weak: true)
+
+= October #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[23rd Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Phil 3:17\-21; 4:1\-3 #h(2mm) Gospel Matt 9:18\-26]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Monday of the 23rd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Phil 3:17\-21; 4:1\-3 #h(2mm) Gospel Matt 9:18\-26] \
+ #text(size: 7pt)[Commemoration Sts. Chrysanthus & Daria]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Tuesday of the 23rd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Phil 3:17\-21; 4:1\-3 #h(2mm) Gospel Matt 9:18\-26] \
+ #text(size: 7pt)[Commemoration St. Evaristus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Wednesday of the 23rd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Phil 3:17\-21; 4:1\-3 #h(2mm) Gospel Matt 9:18\-26]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Sts. Simon & Jude] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Eph. 4:7\-13. #h(2mm) Gospel John 15:17\-25]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Friday of the 23rd Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Phil 3:17\-21; 4:1\-3 #h(2mm) Gospel Matt 9:18\-26]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel Luke 11:27\-28]
+]
+
+
+#pagebreak(weak: true)
+
+= October #sym.dot.c Week 6
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[31] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Christ the King] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Col 1:12\-20. #h(2mm) Gospel John 18:33\-37]
+]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pagebreak(weak: true)
+
+
+
+= November #sym.dot.c Week 1
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[All Saints] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Apoc 7:2\-12 #h(2mm) Gospel Matt 5:1\-12]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("black") \
+ #text(weight: "bold")[Commemoration of All Souls] \
+ #text(size: 7pt)[1st Class #sym.dot.c Black] \
+ #text(size: 7pt)[Epistle 1 Cor. 15:51\-57 #h(2mm) Gospel John 5:25\-29]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Wednesday of the 24th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Col 1:12\-20. #h(2mm) Gospel John 18:33\-37]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Charles Borromeo] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 44:16\-27; 45:3\-20 #h(2mm) Gospel Matt 25:14\-23] \
+ #text(size: 7pt)[Commemoration Sts. Vitalis and Agricola, Martyrs]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Friday of the 24th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Col 1:12\-20. #h(2mm) Gospel John 18:33\-37]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel Luke 11:27\-28]
+]
+
+
+#pagebreak(weak: true)
+
+= November #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[5th Sunday after Epiphany] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Col 3:12\-17 #h(2mm) Gospel Matt 13:24\-30]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[Monday of the 25th Week of the Time after Pentecost] \
+ #text(size: 7pt)[4th Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Col 3:12\-17 #h(2mm) Gospel Matt 13:24\-30] \
+ #text(size: 7pt)[Commemoration Four Holy Crowned Martyrs]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Dedication of the Archbasilica of Our Holy Savior] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Rev 21:2\-5 #h(2mm) Gospel Luke 19:1\-10] \
+ #text(size: 7pt)[Commemoration St. Theodore]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Andrew Avellino] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 31:8\-11 #h(2mm) Gospel Luke 12:35\-40] \
+ #text(size: 7pt)[Commemoration Sts. Tryphonis, Respicii, et Nymphae]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Martin of Tours] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 44:16\-27; 45:3\-20 #h(2mm) Gospel Luke 11:33\-36] \
+ #text(size: 7pt)[Commemoration St. Menna]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Martin I] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 1 Pet 5:1\-4; 5:10\-11. #h(2mm) Gospel Matt 16:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Didacus] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor 4:9\-14 #h(2mm) Gospel Luke 12:32\-34]
+]
+
+
+#pagebreak(weak: true)
+
+= November #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[6th Sunday after Epiphany] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle 1 Thess 1:2\-10 #h(2mm) Gospel Matt 13:31\-35]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Albert the Great] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Gertrude the Great] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Cor 10:17\-18; 11:1\-2 #h(2mm) Gospel Matt 25:1\-13.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Gregory the Wonderworker] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Sir 44:16\-27; 45:3\-20 #h(2mm) Gospel Mark 11:22\-24]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Dedication of the Basilicas of Sts. Peter & Paul] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Rev 21:2\-5 #h(2mm) Gospel Luke 19:1\-10]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Elizabeth of Hungary] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Prov 31:10\-31 #h(2mm) Gospel Matt 13:44\-52.] \
+ #text(size: 7pt)[Commemoration St. Pontian]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Felix of Valois] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Cor. 4:9\-14 #h(2mm) Gospel Luke 12:32\-34]
+]
+
+
+#pagebreak(weak: true)
+
+= November #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("green") \
+ #text(weight: "bold")[24th and Last Sunday after Pentecost] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Green] \
+ #text(size: 7pt)[Epistle Col 1:9\-14 #h(2mm) Gospel Matt 24:15\-35]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Cecilia] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Sir 51:13\-17. #h(2mm) Gospel Matt 25:1\-13.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Clement I] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Phil 3:17\-21; 4:1\-3 #h(2mm) Gospel Matt 16:13\-19] \
+ #text(size: 7pt)[Commemoration St. Felicity]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. John of the Cross] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19] \
+ #text(size: 7pt)[Commemoration St. Chrysogonus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Catherine of Alexandria] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Sir 51:1\-8; 51:12 #h(2mm) Gospel Matt 25:1\-13.]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Sylvester] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 45:1\-6 #h(2mm) Gospel Matt 19:27\-29.] \
+ #text(size: 7pt)[Commemoration St. Peter of Alexandria]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Our Lady's Saturday Office] \
+ #text(size: 7pt)[4th Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 24:14\-16 #h(2mm) Gospel Luke 11:27\-28]
+]
+
+
+#pagebreak(weak: true)
+
+= November #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[1st Sunday of Advent] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Rom 13:11\-14 #h(2mm) Gospel Luke 21:25\-33]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Monday of the 1st Week of Advent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Rom 13:11\-14 #h(2mm) Gospel Luke 21:25\-33] \
+ #text(size: 7pt)[Commemoration St. Saturninus]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Andrew] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Rom 10:10\-18 #h(2mm) Gospel Matt 4:18\-22] \
+ #text(size: 7pt)[Commemoration Tuesday of the 1st Week of Advent]
+]
+
+
+
+
+
+
+
+
+
+
+#pagebreak(weak: true)
+
+
+
+= December #sym.dot.c Week 1
+
+
+
+
+
+
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[1] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Wednesday of the 1st Week of Advent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Rom 13:11\-14 #h(2mm) Gospel Luke 21:25\-33]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[2] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Vivian] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Sir 51:13\-17. #h(2mm) Gospel Matt 13:44\-52.] \
+ #text(size: 7pt)[Commemoration Thursday of the 1st Week of Advent]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[3] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Francis Xavier] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Rom 10:10\-18 #h(2mm) Gospel Mark 16:15\-18] \
+ #text(size: 7pt)[Commemoration Friday of the 1st Week of Advent]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[4] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Peter Chrysologus] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19] \
+ #text(size: 7pt)[Commemoration Saturday of the 1st Week of Advent] \
+ #text(size: 7pt)[Commemoration St. Barbara]
+]
+
+
+#pagebreak(weak: true)
+
+= December #sym.dot.c Week 2
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[5] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[2nd Sunday of Advent] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Rom 15:4\-13 #h(2mm) Gospel Matt 11:2\-10]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[6] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Nicholas] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Heb 13:7\-17 #h(2mm) Gospel Matt 25:14\-23] \
+ #text(size: 7pt)[Commemoration Monday of the 2nd Week of Advent]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[7] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Ambrose] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 2 Tim 4:1\-8 #h(2mm) Gospel Matt 5:13\-19] \
+ #text(size: 7pt)[Commemoration Tuesday of the 2nd Week of Advent]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[8] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Immaculate Conception of the Blessed Virgin Mary] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Prov 8:22\-35 #h(2mm) Gospel Luke 1:26\-28] \
+ #text(size: 7pt)[Commemoration Wednesday of the 2nd Week of Advent]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[9] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Thursday of the 2nd Week of Advent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Rom 15:4\-13 #h(2mm) Gospel Matt 11:2\-10]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[10] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Friday of the 2nd Week of Advent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Rom 15:4\-13 #h(2mm) Gospel Matt 11:2\-10] \
+ #text(size: 7pt)[Commemoration St. Melchiades]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[11] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. Damasus I] \
+ #text(size: 7pt)[3rd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle 1 Pet 5:1\-4; 5:10\-11. #h(2mm) Gospel Matt 16:13\-19] \
+ #text(size: 7pt)[Commemoration Saturday of the 2nd Week of Advent]
+]
+
+
+#pagebreak(weak: true)
+
+= December #sym.dot.c Week 3
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[12] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("rose") \
+ #text(weight: "bold")[3rd Sunday of Advent] \
+ #text(size: 7pt)[1st Class #sym.dot.c Rose] \
+ #text(size: 7pt)[Epistle Phil 4:4\-7 #h(2mm) Gospel John 1:19\-28]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[13] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Lucy] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 2 Cor 10:17\-18; 11:1\-2 #h(2mm) Gospel Matt 13:44\-52.] \
+ #text(size: 7pt)[Commemoration Monday of the 3rd Week of Advent]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[14] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Tuesday of the 3rd Week of Advent] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Phil 4:4\-7 #h(2mm) Gospel John 1:19\-28]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[15] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Advent Ember Wednesday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Isa 7:10\-15 #h(2mm) Gospel Luke 1:26\-38]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[16] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Eusebius] \
+ #text(size: 7pt)[3rd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle 2 Cor. 1:3\-7 #h(2mm) Gospel Matt 16:24\-27.] \
+ #text(size: 7pt)[Commemoration Thursday of the 3rd Week of Advent]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[17] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Advent Ember Friday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Isa 11:1\-5 #h(2mm) Gospel Luke 1:39\-47]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[18] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Advent Ember Saturday] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 2 Thess 2:1\-8 #h(2mm) Gospel Luke 3:1\-6]
+]
+
+
+#pagebreak(weak: true)
+
+= December #sym.dot.c Week 4
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[19] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[4th Sunday of Advent] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 1 Cor. 4:1\-5 #h(2mm) Gospel Luke 3:1\-6]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[20] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Monday of the 4th Week of Advent] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 1 Cor. 4:1\-5 #h(2mm) Gospel Luke 3:1\-6]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[21] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[St. Thomas] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Eph 2:19\-22 #h(2mm) Gospel John 20:24\-29] \
+ #text(size: 7pt)[Commemoration Tuesday of the 4th Week of Advent]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[22] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Wednesday of the 4th Week of Advent] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 1 Cor. 4:1\-5 #h(2mm) Gospel Luke 3:1\-6]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[23] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Thursday of the 4th Week of Advent] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle 1 Cor. 4:1\-5 #h(2mm) Gospel Luke 3:1\-6]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[24] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("violet") \
+ #text(weight: "bold")[Vigil of the Nativity (Christmas Eve)] \
+ #text(size: 7pt)[1st Class #sym.dot.c Violet] \
+ #text(size: 7pt)[Epistle Rom 1:1\-6 #h(2mm) Gospel Matt 1:18\-21]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[25] #h(2mm) #text(size: 8pt)[Saturday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[The Nativity of Our Lord (Christmas)] \
+ #text(size: 7pt)[1st Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Heb 1:1\-12 #h(2mm) Gospel John 1:1\-14]
+]
+
+
+#pagebreak(weak: true)
+
+= December #sym.dot.c Week 5
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[26] #h(2mm) #text(size: 8pt)[Sunday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[Sunday within the Octave of the Nativity] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Gal 4:1\-7 #h(2mm) Gospel Luke 2:33\-40] \
+ #text(size: 7pt)[Commemoration St. Stephen]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[27] #h(2mm) #text(size: 8pt)[Monday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[St. John the Evangelist] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Ecclus 15:1\-6 #h(2mm) Gospel John 21:19\-24] \
+ #text(size: 7pt)[Commemoration 3rd Day within the Octave of the Nativity]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[28] #h(2mm) #text(size: 8pt)[Tuesday] #h(1fr) #swatch("red") \
+ #text(weight: "bold")[Holy Innocents] \
+ #text(size: 7pt)[2nd Class #sym.dot.c Red] \
+ #text(size: 7pt)[Epistle Apoc 14:1\-5 #h(2mm) Gospel Matt 2:13\-18] \
+ #text(size: 7pt)[Commemoration 4th Day within the Octave of the Nativity]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[29] #h(2mm) #text(size: 8pt)[Wednesday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[5th Day within the Octave of the Nativity] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Titus 3:4\-7 #h(2mm) Gospel Luke 2:15\-20] \
+ #text(size: 7pt)[Commemoration St. Thomas Becket]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[30] #h(2mm) #text(size: 8pt)[Thursday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[6th Day within the Octave of the Nativity] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Titus 3:4\-7 #h(2mm) Gospel Luke 2:15\-20]
+]
+
+
+
+#block(width: 100%, above: 0.6mm, below: 0mm, breakable: false, stroke: 0.4pt + luma(160), inset: (x: 1.6mm, y: 0.6mm))[
+ // A single Typst paragraph throughout, deliberately: two markup lines
+ // separated only by a bare newline stay on ONE rendered line (they are
+ // still the same paragraph, soft-wrapped) -- verified live, the first
+ // draft of this box merged the rank/colour line into the citation line
+ // for exactly that reason. A trailing backslash forces a real line
+ // break WITHOUT starting a new paragraph (no inter-paragraph spacing
+ // to tune down), which is what a compact multi-line box wants; #par's
+ // own block-level break, used further up for the day/weekday/swatch
+ // row against the name below it, is reserved for the one place this
+ // box actually wants a fresh paragraph.
+ #set par(leading: 0.42em)
+ #text(weight: "bold")[31] #h(2mm) #text(size: 8pt)[Friday] #h(1fr) #swatch("white") \
+ #text(weight: "bold")[7th Day within the Octave of the Nativity] \
+ #text(size: 7pt)[2nd Class #sym.dot.c White] \
+ #text(size: 7pt)[Epistle Titus 3:4\-7 #h(2mm) Gospel Luke 2:15\-20] \
+ #text(size: 7pt)[Commemoration St. Silvester]
+]
+
+
+
+
+#pagebreak(weak: true)
+
+
diff --git a/test/test_render_golden.ml b/test/test_render_golden.ml
index 6340109..bca7158 100644
--- a/test/test_render_golden.ml
+++ b/test/test_render_golden.ml
@@ -34,8 +34,8 @@ let check_golden name =
Alcotest.(check string) name want got
let cases =
- [ "ordo.tex"; "ordo.ms"; "ordo.html"; "ordo.adoc"; "ordo.md"; "ordo.txt";
- "grid.tex"; "grid.ms"; "grid.html" ]
+ [ "ordo.tex"; "ordo.ms"; "ordo.html"; "ordo.adoc"; "ordo.md"; "ordo.txt"; "ordo.typ";
+ "grid.tex"; "grid.ms"; "grid.html"; "grid.typ" ]
let suite =
( "Render/golden",