diff --git a/manifest.yaml b/manifest.yaml
index 1448a11..a1893f3 100644
--- a/manifest.yaml
+++ b/manifest.yaml
@@ -159,6 +159,33 @@ css:
}
}
+ /* --- Home "river" reading column + vertical rhythm ---
+ * CSS-defined (not JIT Tailwind) so width + spacing always compile.
+ * Keeps the essay list at a comfortable measure and stops stacked
+ * cards from fusing into one seam-y block. */
+ .editorial-river {
+ max-width: 48rem;
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: 1rem;
+ padding-right: 1rem;
+ }
+ .editorial-flow > * + * { margin-top: 2rem; }
+
+ /* --- Hero display title — responsive size via media queries so it is
+ * independent of the host Tailwind JIT (large text-* combos in theme
+ * templates are not reliably scanned). --- */
+ .editorial-hero-title {
+ font-family: var(--font-heading, "Playfair Display", Georgia, serif);
+ font-weight: 700;
+ letter-spacing: -0.015em;
+ line-height: 1.1;
+ color: hsl(var(--foreground));
+ font-size: 2.25rem;
+ }
+ @media (min-width: 640px) { .editorial-hero-title { font-size: 3rem; } }
+ @media (min-width: 1024px) { .editorial-hero-title { font-size: 3.5rem; } }
+
/* --- Narrow prose column with indented continuation paragraphs --- */
.prose-editorial {
max-width: var(--editorial-measure);
@@ -381,7 +408,7 @@ css:
@media (prefers-reduced-motion: reduce) {
.editorial-marginalia aside { animation: none; opacity: 1; }
}
- @media (max-width: 768px) {
+ @media (max-width: 1023px) {
.editorial-marginalia {
margin-top: 1.5rem;
border-top: var(--editorial-rule);
diff --git a/templates/editorial/landing.ninjatpl b/templates/editorial/landing.ninjatpl
index 3ae7119..bcece00 100644
--- a/templates/editorial/landing.ninjatpl
+++ b/templates/editorial/landing.ninjatpl
@@ -6,7 +6,7 @@
{% if slots.masthead %}{{ slots.masthead|safe }}{% endif %}
{% if slots.lead %}{% endif %}
- {% if slots.river %}{% endif %}
+ {% if slots.river %}{% endif %}
{% if slots.footer %}{% endif %}
{{ body_end_html|safe }}
diff --git a/templates/overrides/editorial/author-bio-hero.ninjatpl b/templates/overrides/editorial/author-bio-hero.ninjatpl
index c8bb084..b4fc060 100644
--- a/templates/overrides/editorial/author-bio-hero.ninjatpl
+++ b/templates/overrides/editorial/author-bio-hero.ninjatpl
@@ -4,7 +4,7 @@
{% if showAvatar and author.avatar_url %}
{% img author.avatar_url alt=author.display_name class="h-full w-full object-cover" %}
{% endif %}
-
{{ author.display_name }}
+
{{ author.display_name }}
{% if author.job_title or author.company %}
{{ author.job_title }}{% if author.job_title and author.company %} · {% endif %}{{ author.company }}
{% endif %}
{% if author.bio %}
{{ author.bio }}
{% endif %}
diff --git a/templates/overrides/editorial/card.ninjatpl b/templates/overrides/editorial/card.ninjatpl
index 8ba2fc4..e611f2f 100644
--- a/templates/overrides/editorial/card.ninjatpl
+++ b/templates/overrides/editorial/card.ninjatpl
@@ -1,4 +1,4 @@
{# card override — editorial hairline panel; accent border on hover, oxblood link. Fields mirror builtin: layout, link, media, title, text, linkLabel. Media via {% img %}. #}
{% with layout=layout|default:"vertical" %}
-
{% if link %}{% endif %}{% if media %}{% if layout == "horizontal" %}{% img media alt=title|default:"" class="h-full w-full object-cover" %}{% else %}{% img media alt=title|default:"" class="aspect-video h-full w-full object-cover" %}{% endif %}
{% endif %}{% if title %}
{{ title }}
{% endif %}{% if text %}
{{ text|safe }}
{% endif %}{% if linkLabel and link %}
{{ linkLabel }}::lucide:arrow-right:sm::{% endif %}
{% if link %}{% endif %}
+
{% if link %}{% endif %}{% if media %}{% if layout == "horizontal" %}{% img media alt=title|default:"" class="h-full w-full object-cover" %}{% else %}{% img media alt=title|default:"" class="aspect-video h-full w-full object-cover" %}{% endif %}
{% endif %}{% if title %}
{{ title }}
{% endif %}{% if text %}
{{ text|safe }}
{% endif %}{% if linkLabel and link %}
{{ linkLabel }}::lucide:arrow-right:sm::{% endif %}
{% if link %}{% endif %}
{% endwith %}
diff --git a/templates/overrides/editorial/contact-form.ninjatpl b/templates/overrides/editorial/contact-form.ninjatpl
index 4fdae18..8b58611 100644
--- a/templates/overrides/editorial/contact-form.ninjatpl
+++ b/templates/overrides/editorial/contact-form.ninjatpl
@@ -9,7 +9,7 @@
{% else %}
- {% if heading %}
{{ heading }}
{% endif %}
+ {% if heading %}
{{ heading }}
{% endif %}
{% if description %}
{{ description }}
{% endif %}
diff --git a/templates/overrides/editorial/countdown.ninjatpl b/templates/overrides/editorial/countdown.ninjatpl
index b0fe083..8d1f7e7 100644
--- a/templates/overrides/editorial/countdown.ninjatpl
+++ b/templates/overrides/editorial/countdown.ninjatpl
@@ -1,6 +1,6 @@
- {% if heading %}
{{ heading }}
{% endif %}
+ {% if heading %}
{{ heading }}
{% endif %}
{% if intro %}
{{ intro }}
{% endif %}
@@ -10,7 +10,7 @@
--{{ labelSeconds|default:"Seconds" }}
-
{{ expiredMessage|default:"This has started." }}
+
{{ expiredMessage|default:"This has started." }}
{% if expiredUrl and expiredLabel %}
{{ expiredLabel }}{% endif %}
diff --git a/templates/overrides/editorial/cta.ninjatpl b/templates/overrides/editorial/cta.ninjatpl
index 8fcbd7e..12822f9 100644
--- a/templates/overrides/editorial/cta.ninjatpl
+++ b/templates/overrides/editorial/cta.ninjatpl
@@ -2,7 +2,7 @@
- {% if heading %}
{{ heading }}
{% endif %}
+ {% if heading %}
{{ heading }}
{% endif %}
{% if text %}
{{ text }}
{% endif %}
diff --git a/templates/overrides/editorial/feature-grid.ninjatpl b/templates/overrides/editorial/feature-grid.ninjatpl
index 40ed9e4..19d6ae2 100644
--- a/templates/overrides/editorial/feature-grid.ninjatpl
+++ b/templates/overrides/editorial/feature-grid.ninjatpl
@@ -7,7 +7,7 @@
{% for item in items %}
{% if item.icon %}
{% endif %}
-
{% if item.linkUrl %}{{ item.title }}{% else %}{{ item.title }}{% endif %}
+
{% if item.linkUrl %}{{ item.title }}{% else %}{{ item.title }}{% endif %}
{% if item.text %}
{{ item.text }}
{% endif %}
{% if item.linkUrl and item.linkLabel %}
{{ item.linkLabel }}{% endif %}
diff --git a/templates/overrides/editorial/featured-posts.ninjatpl b/templates/overrides/editorial/featured-posts.ninjatpl
index c237a52..2c18a9e 100644
--- a/templates/overrides/editorial/featured-posts.ninjatpl
+++ b/templates/overrides/editorial/featured-posts.ninjatpl
@@ -8,7 +8,7 @@
{% if showFeaturedImage and post.featured_image_url %}{% img post.featured_image_url alt=post.title class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" %}{% endif %}
-
+
{% if showExcerpt and post.excerpt %}
{{ post.excerpt }}
{% endif %}
diff --git a/templates/overrides/editorial/hero.ninjatpl b/templates/overrides/editorial/hero.ninjatpl
index fc6394e..62f97df 100644
--- a/templates/overrides/editorial/hero.ninjatpl
+++ b/templates/overrides/editorial/hero.ninjatpl
@@ -12,7 +12,7 @@
{% set showOverlay = hasImage and overlayColor != "none" and overlayColor != "" %}
{% macro herocontent(align) %}
{% if eyebrowText %}
{{ eyebrowText }}
{% endif %}
-{% if headlineText %}
{{ headlineText }}
{% endif %}
+{% if headlineText %}
{{ headlineText }}
{% endif %}
{% if subText %}
{{ subText }}
{% endif %}
{% if descText %}
{{ descText }}
{% endif %}
{% if pText or sText %}
@@ -32,7 +32,7 @@
{% else %}
{% set align = "center" %}
{% if variant == "left-aligned" %}{% set align = "left" %}{% endif %}
-
+
{% if hasImage %}{% img backgroundImage alt=headlineText class="h-full w-full object-cover" layout="hero" %}{% if showOverlay %}
{% endif %}
{% endif %}
diff --git a/templates/overrides/editorial/hours-location.ninjatpl b/templates/overrides/editorial/hours-location.ninjatpl
index 6c125be..10e52c5 100644
--- a/templates/overrides/editorial/hours-location.ninjatpl
+++ b/templates/overrides/editorial/hours-location.ninjatpl
@@ -1,7 +1,7 @@
{# hours-location override (editorial) — typographic hours ledger + hairline-framed map. Map facade