diff --git a/cauldron/templates/_base.html b/cauldron/templates/_base.html
index a58aa0f..43e75b6 100644
--- a/cauldron/templates/_base.html
+++ b/cauldron/templates/_base.html
@@ -30,6 +30,14 @@
--purple-deep: #2d1d4a;
--purple-glow: rgba(155, 95, 232, .25);
+ --blood: #7a2c4a; /* old-blood / aged bordeaux */
+ --blood-bright: #a83d62;
+ --blood-dim: #4d1a30;
+ --blood-glow: rgba(168, 61, 98, .25);
+
+ --gilt: #8a6e3a; /* aged brass / gold-leaf */
+ --gilt-bright: #c0a058;
+
--bone: #e8e0c8;
--bone-dim: #a89d83;
--muted: #6e6478;
@@ -56,13 +64,15 @@ body {
background-image:
radial-gradient(ellipse 80% 60% at 15% 0%, rgba(155, 95, 232, .07) 0%, transparent 60%),
radial-gradient(ellipse 80% 60% at 85% 100%, rgba(110, 168, 72, .05) 0%, transparent 60%);
- /* faint witchy sigil tile in bone+purple at 4% */
+ /* atmospheric layered bg: top-corner candleglow, bottom moss, gothic
+ filigree tile (vines + crescent moon), and a corner-vignette darkening */
background-image:
- radial-gradient(ellipse 80% 60% at 15% 0%, rgba(155, 95, 232, .07) 0%, transparent 60%),
- radial-gradient(ellipse 80% 60% at 85% 100%, rgba(110, 168, 72, .05) 0%, transparent 60%),
- url("data:image/svg+xml;utf8,");
+ radial-gradient(ellipse 70% 50% at 12% -5%, rgba(155, 95, 232, .09) 0%, transparent 55%),
+ radial-gradient(ellipse 60% 50% at 88% 105%, rgba(110, 168, 72, .06) 0%, transparent 55%),
+ radial-gradient(ellipse at center, transparent 55%, rgba(0,0,0,.55) 100%),
+ url("data:image/svg+xml;utf8,");
background-attachment: fixed;
- background-size: auto, auto, 80px 80px;
+ background-size: auto, auto, auto, 120px 120px;
}
::selection { background: rgba(155, 95, 232, .35); color: var(--bone); }
@@ -86,9 +96,15 @@ header.topbar {
.brand { display: flex; align-items: baseline; gap: 14px; min-width: 0; }
.brand-mark {
font-family: var(--serif); font-weight: 700;
- color: var(--purple-bright); font-size: 22px;
- letter-spacing: .15em; text-transform: uppercase;
+ color: var(--purple-bright); font-size: 24px;
+ letter-spacing: .22em; text-transform: uppercase;
text-shadow: 0 0 24px var(--purple-glow);
+ position: relative; padding: 0 .15em;
+}
+.brand-mark::before, .brand-mark::after {
+ content: "✦"; color: var(--blood); opacity: .65;
+ font-size: .55em; vertical-align: middle;
+ margin: 0 .35em; text-shadow: 0 0 8px var(--blood-glow);
}
.brand-sub { color: var(--muted); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; font-family: var(--mono); }
nav.nav { display: flex; gap: 22px; flex-wrap: wrap; }
@@ -115,41 +131,83 @@ main {
position: relative;
}
-/* Page header */
-.page-head { margin-bottom: 1.6em; animation: fadeIn .5s ease-out forwards; }
-.page-head .crumb {
- color: var(--purple); font-size: 11px; letter-spacing: .25em;
- text-transform: uppercase; font-family: var(--mono); margin-bottom: .5em;
+/* Page header — gothic vertical rhythm + drop cap */
+.page-head { margin-bottom: 2em; animation: fadeIn .5s ease-out forwards; position: relative; }
+.page-head::before {
+ content: ""; position: absolute; left: 0; top: -8px; width: 60px; height: 1px;
+ background: linear-gradient(90deg, var(--gilt), transparent);
+ opacity: .6;
}
+.page-head .crumb {
+ color: var(--blood-bright); font-size: 11px; letter-spacing: .35em;
+ text-transform: uppercase; font-family: var(--mono); margin-bottom: .8em;
+ display: inline-block;
+}
+.page-head .crumb::before { content: "❧ "; color: var(--gilt); margin-right: .3em; opacity: .8; }
.page-head h1 {
margin: 0; color: var(--bone);
- font-family: var(--serif); font-weight: 600;
- font-size: 2.2em; letter-spacing: .04em; line-height: 1.2;
+ font-family: var(--serif); font-weight: 700;
+ font-size: 2.8em; letter-spacing: .06em; line-height: 1.05;
+ text-transform: lowercase;
}
-.page-head h1 .accent { color: var(--purple-bright); text-shadow: 0 0 24px var(--purple-glow); }
-.page-head .lede { color: var(--bone-dim); font-size: 1em; margin-top: .5em; max-width: 60ch; }
+.page-head h1::first-letter {
+ font-size: 1.5em; color: var(--purple-bright);
+ text-shadow: 0 0 28px var(--purple-glow), 2px 2px 0 var(--bg);
+ font-weight: 700; padding-right: .04em;
+}
+.page-head h1 .accent {
+ color: var(--blood-bright);
+ text-shadow: 0 0 24px var(--blood-glow);
+ font-style: italic;
+}
+.page-head .lede {
+ color: var(--bone-dim); font-size: 1em; margin-top: .8em; max-width: 60ch;
+ font-style: italic; letter-spacing: .015em;
+}
+.page-head .lede::before { content: "“"; color: var(--gilt); font-size: 1.4em; line-height: 0; vertical-align: -.2em; margin-right: .15em; opacity: .55; }
-/* Panel */
+/* Panel — stone-and-iron card with gothic corner filigree */
.panel {
- background: var(--surface);
+ background:
+ linear-gradient(180deg, rgba(255,255,255,.012) 0%, transparent 30%),
+ var(--surface);
border: 1px solid var(--line);
- border-radius: 6px;
- padding: 20px 22px;
- margin: 16px 0;
+ border-radius: 4px;
+ padding: 22px 24px;
+ margin: 18px 0;
position: relative;
- box-shadow: 0 0 24px -8px rgba(155, 95, 232, .08);
+ box-shadow:
+ 0 0 28px -10px rgba(155, 95, 232, .12),
+ inset 0 1px 0 rgba(255, 255, 255, .015);
animation: fadeIn .5s ease-out forwards;
opacity: 0;
}
+/* corner filigree — top-left + top-right thin gilt brackets */
+.panel::before, .panel::after {
+ content: ""; position: absolute; top: -1px; width: 18px; height: 18px;
+ border: 1px solid var(--gilt); opacity: .4;
+ pointer-events: none;
+}
+.panel::before { left: -1px; border-right: none; border-bottom: none; }
+.panel::after { right: -1px; border-left: none; border-bottom: none; }
.panel:nth-child(2) { animation-delay: .05s; }
.panel:nth-child(3) { animation-delay: .1s; }
.panel:nth-child(4) { animation-delay: .15s; }
.panel:hover { border-color: var(--surface-3); }
+.panel:hover::before, .panel:hover::after { opacity: .6; border-color: var(--gilt-bright); }
.panel.green {
- box-shadow: 0 0 24px -8px rgba(110, 168, 72, .1);
+ box-shadow:
+ 0 0 28px -10px rgba(110, 168, 72, .14),
+ inset 0 1px 0 rgba(255, 255, 255, .015);
border-left: 2px solid var(--green-dim);
}
.panel.purple { border-left: 2px solid var(--purple-dim); }
+.panel.blood {
+ border-left: 2px solid var(--blood-dim);
+ box-shadow:
+ 0 0 28px -10px var(--blood-glow),
+ inset 0 1px 0 rgba(255, 255, 255, .015);
+}
.panel-head {
display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap;
margin-bottom: 14px; padding-bottom: 10px;
@@ -157,10 +215,18 @@ main {
}
.panel-head h2 {
margin: 0; color: var(--purple-bright);
- font-family: var(--serif); font-weight: 600;
- font-size: 1.05em; letter-spacing: .15em; text-transform: uppercase;
+ font-family: var(--serif); font-weight: 700;
+ font-size: 1.15em; letter-spacing: .22em; text-transform: uppercase;
+ position: relative;
+}
+.panel-head h2::before {
+ content: "✦"; color: var(--blood); opacity: .6;
+ font-size: .65em; margin-right: .55em; vertical-align: middle;
}
.panel.green .panel-head h2 { color: var(--green-bright); }
+.panel.green .panel-head h2::before { color: var(--gilt); }
+.panel.blood .panel-head h2 { color: var(--blood-bright); }
+.panel.blood .panel-head h2::before { color: var(--purple); }
.panel-head .ctx { color: var(--muted); font-size: 11px; letter-spacing: .15em; text-transform: uppercase; margin-left: auto; font-family: var(--mono); }
/* Pill */
@@ -218,7 +284,12 @@ a { color: var(--green-bright); text-decoration: none; transition: color .2s; }
a:hover { color: var(--purple-bright); }
.muted { color: var(--muted); font-size: .9em; }
.lede { color: var(--bone-dim); }
-hr { border: none; border-top: 1px solid var(--line); margin: 2em 0; }
+/* gothic flourish divider */
+hr {
+ border: none; height: 28px; margin: 2.2em 0;
+ background: url("data:image/svg+xml;utf8,") no-repeat center;
+ background-size: contain;
+}
code {
background: var(--purple-deep); border: 1px solid var(--purple-dim);
color: var(--purple-bright);
@@ -247,9 +318,12 @@ ol li, ul li { margin: .35em 0; }
}
.recipe-card .rname {
color: var(--bone); font-family: var(--serif); font-weight: 600;
- font-size: 1.05em; letter-spacing: .02em;
+ font-size: 1.1em; letter-spacing: .03em; text-transform: lowercase;
+ line-height: 1.2;
}
+.recipe-card .rname::first-letter { color: var(--blood-bright); font-weight: 700; font-size: 1.15em; }
.recipe-card:hover .rname { color: var(--purple-bright); }
+.recipe-card:hover .rname::first-letter { color: var(--blood-bright); text-shadow: 0 0 12px var(--blood-glow); }
.recipe-card .rmeta {
color: var(--muted); font-size: 10px; letter-spacing: .15em;
text-transform: uppercase; font-family: var(--mono); margin-top: 6px;