summaryrefslogtreecommitdiff
path: root/internal/web
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-23 15:53:36 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-23 15:53:36 +0200
commitff2a12dd7736164292e838d393c56b3e6f8805c3 (patch)
tree12bca1e4d22e271c66f1e80600db929c6cb923ed /internal/web
parent73d00113f5ed5fe99e365d2053dc70a6da8a81ee (diff)
downloadlectio-ff2a12dd7736164292e838d393c56b3e6f8805c3.tar.gz
lectio-ff2a12dd7736164292e838d393c56b3e6f8805c3.zip
web: add dominicans/marian/epiphany themes + --theme-font hook (memento_mori monospace)
Diffstat (limited to 'internal/web')
-rw-r--r--internal/web/render_test.go4
-rw-r--r--internal/web/static/base.css4
-rw-r--r--internal/web/static/themes/dominicans.css49
-rw-r--r--internal/web/static/themes/epiphany.css49
-rw-r--r--internal/web/static/themes/marian.css49
-rw-r--r--internal/web/static/themes/memento_mori.css2
6 files changed, 154 insertions, 3 deletions
diff --git a/internal/web/render_test.go b/internal/web/render_test.go
index 7d8df18..126cb84 100644
--- a/internal/web/render_test.go
+++ b/internal/web/render_test.go
@@ -21,8 +21,8 @@ func TestBuiltinThemes(t *testing.T) {
t.Setenv("XDG_CONFIG_HOME", t.TempDir()) // no user themes
for _, name := range []string{
"transfiguration", "desert_fathers", "benedictines", "franciscans",
- "memento_mori", "deus_vult", "advent", "nativity", "lent", "easter",
- "pentecost", "ordinary",
+ "memento_mori", "deus_vult", "dominicans", "advent", "nativity", "lent",
+ "easter", "pentecost", "ordinary", "epiphany", "marian",
} {
if b, err := themeCSS(name); err != nil || len(b) == 0 {
t.Errorf("built-in theme %s not embedded: %v", name, err)
diff --git a/internal/web/static/base.css b/internal/web/static/base.css
index 220badd..776c934 100644
--- a/internal/web/static/base.css
+++ b/internal/web/static/base.css
@@ -9,7 +9,9 @@
*/
:root {
- --font-reading: Georgia, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", serif;
+ /* Reading typeface. A theme may override just this by setting --theme-font
+ * (the ONE sanctioned type override; base.css still owns sizing/spacing). */
+ --font-reading: var(--theme-font, Georgia, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", serif);
--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
--measure: 42rem;
--space-1: 0.5rem;
diff --git a/internal/web/static/themes/dominicans.css b/internal/web/static/themes/dominicans.css
new file mode 100644
index 0000000..5a3a19f
--- /dev/null
+++ b/internal/web/static/themes/dominicans.css
@@ -0,0 +1,49 @@
+/* dominicans -- religious-order palette (Order of Preachers), light: white
+ * habit, black cappa, gilt shield. Colour only; see docs/THEMES.md.
+ */
+:root {
+ --bg: #f5f4f1; /* white habit */
+ --fg: #18181b; /* black cappa */
+ --muted: #74746f; /* ash grey */
+ --accent: #96771e; /* shield gold */
+ --link: #6f6a58;
+ --refrain: #857529; /* gold */
+ --border: #dad8d0;
+}
+
+.heading {
+ color: var(--accent);
+}
+
+.citation {
+ color: var(--muted);
+}
+
+.vnum {
+ color: var(--muted);
+}
+
+.refrain {
+ color: var(--refrain);
+}
+
+a {
+ color: var(--link);
+}
+
+a:hover,
+a:focus {
+ color: var(--accent);
+}
+
+.controls,
+.version-label,
+.reading-section + .reading-section {
+ border-color: var(--border);
+}
+
+.controls input,
+.controls select,
+.controls button {
+ border-color: var(--border);
+}
diff --git a/internal/web/static/themes/epiphany.css b/internal/web/static/themes/epiphany.css
new file mode 100644
index 0000000..6f6a96e
--- /dev/null
+++ b/internal/web/static/themes/epiphany.css
@@ -0,0 +1,49 @@
+/* epiphany -- liturgical season palette, dark: indigo night sky, the star
+ * of Bethlehem in gold. Colour only; see docs/THEMES.md.
+ */
+:root {
+ --bg: #131a2e; /* indigo night */
+ --fg: #e6e8f2; /* starlight */
+ --muted: #7c85a0; /* dusk blue-grey */
+ --accent: #d9bf6a; /* star gold */
+ --link: #8fa2d8; /* cool starlight blue */
+ --refrain: #c9a94e; /* deeper gold */
+ --border: #262f4a;
+}
+
+.heading {
+ color: var(--accent);
+}
+
+.citation {
+ color: var(--muted);
+}
+
+.vnum {
+ color: var(--muted);
+}
+
+.refrain {
+ color: var(--refrain);
+}
+
+a {
+ color: var(--link);
+}
+
+a:hover,
+a:focus {
+ color: var(--accent);
+}
+
+.controls,
+.version-label,
+.reading-section + .reading-section {
+ border-color: var(--border);
+}
+
+.controls input,
+.controls select,
+.controls button {
+ border-color: var(--border);
+}
diff --git a/internal/web/static/themes/marian.css b/internal/web/static/themes/marian.css
new file mode 100644
index 0000000..776b116
--- /dev/null
+++ b/internal/web/static/themes/marian.css
@@ -0,0 +1,49 @@
+/* marian -- devotional palette (Our Lady), light: white robe, Marian-blue
+ * mantle, gold crown of twelve stars. Colour only; see docs/THEMES.md.
+ */
+:root {
+ --bg: #f3f6fb; /* white robe, faint blue */
+ --fg: #23303f; /* navy ink */
+ --muted: #7f8ea3; /* dusty blue-grey */
+ --accent: #2f5fa6; /* Marian blue */
+ --link: #3a6fb5;
+ --refrain: #b08d3a; /* gold crown */
+ --border: #d3dced;
+}
+
+.heading {
+ color: var(--accent);
+}
+
+.citation {
+ color: var(--muted);
+}
+
+.vnum {
+ color: var(--muted);
+}
+
+.refrain {
+ color: var(--refrain);
+}
+
+a {
+ color: var(--link);
+}
+
+a:hover,
+a:focus {
+ color: var(--accent);
+}
+
+.controls,
+.version-label,
+.reading-section + .reading-section {
+ border-color: var(--border);
+}
+
+.controls input,
+.controls select,
+.controls button {
+ border-color: var(--border);
+}
diff --git a/internal/web/static/themes/memento_mori.css b/internal/web/static/themes/memento_mori.css
index 518e035..d99911b 100644
--- a/internal/web/static/themes/memento_mori.css
+++ b/internal/web/static/themes/memento_mori.css
@@ -11,6 +11,8 @@
--refrain: #8a8680;
--border: #333330;
--error: #7a4a42; /* dried blood -- error/alert accent only */
+ /* the one non-colour override: a monospace reading face (see base.css). */
+ --theme-font: ui-monospace, "Cascadia Code", "SF Mono", "Roboto Mono", Menlo, Consolas, monospace;
}
.heading {