aboutsummaryrefslogtreecommitdiff
path: root/test/golden/grid-2027.typ
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-20 10:07:15 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-20 10:07:37 +0200
commit6aebb3ec513c0177a39c2eb8d4b741e90d6f53f4 (patch)
tree3fb327d0b3fa9ffd67d493c7393cdf9a963bf8b9 /test/golden/grid-2027.typ
parent66543815ae6cbf6e576a889c9291678744243953 (diff)
downloadcolitur-6aebb3ec513c0177a39c2eb8d4b741e90d6f53f4.tar.gz
colitur-6aebb3ec513c0177a39c2eb8d4b741e90d6f53f4.zip
feat(templates): ordo booklet and wall calendar in Typst
Adds templates/ef/ordo.typ (A5, one week per page, each day framed with a colour swatch, real names, every fixed string through term.*) and templates/ef/grid.typ (A4 landscape, one month per page, 7 columns, colour-filled cells, Epistle/Gospel sigla), matching what ordo.tex and grid.tex already do. Typst resolves its own table of contents inside a single compile: no pageref/aux-file dance, unlike pdflatex's own two-pass need for ordo.tex. ordo.typ's TOC is one flat heading per week (Month . Week N) rather than ordo.tex's own month-once/weeks-nested layout, since the view model has no first-of-month flag for a template to test and inventing one would be new engine state for a cosmetic grouping. grid.typ deliberately diverges from grid.tex's own partial-fill behaviour for a 5-week month: Typst's row-size list repeats its own last entry for every remaining row, so a two-entry rows spec fills the page completely regardless of week count, where LaTeX's fixed cellh leaves a 5-week month's bottom sixth blank on purpose. Both divergences are documented in the templates' own headers. Two bugs found and fixed while building these against the real typst 0.14.2 binary: two stray hash characters in grid.typ's header comment that were not actually inside a line-comment (would have been parsed as Typst code, not prose); and two lines merging into one wherever they were separated only by a bare newline (still the same soft-wrapped paragraph in Typst, unlike LaTeX's own explicit paragraph break) -- fixed with a trailing backslash to force a real line break without adding inter-paragraph spacing, verified against a full-year render (zero typst warnings across all 365 days of 2027, in both templates). Goldens (test/golden/ordo-2027.typ, test/golden/grid-2027.typ) were generated through the harness's own View.of_days/Template.render_string path, via a throwaway generator, NOT through the CLI: the CLI's default language table differs from the harness's own English-chained-to-Latin table, confirmed live (diffing CLI output against the harness's own render showed exactly the expected language divergence and nothing else) -- the same trap this project has hit before. make check-templates now typesets both templates with the typst binary, using the same SKIPPED-and-exit-0 shape the pdflatex/groff blocks already use when their own tool is absent, verified in both directions: absent (PATH without typst) skips loudly and exits 0, and a deliberately corrupted template fails the target with a non-zero exit and typst's own error text.
Diffstat (limited to 'test/golden/grid-2027.typ')
-rw-r--r--test/golden/grid-2027.typ7832
1 files changed, 7832 insertions, 0 deletions
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)
+