diff --git a/manifest.yaml b/manifest.yaml
index e8f6f6b..ab42920 100644
--- a/manifest.yaml
+++ b/manifest.yaml
@@ -339,43 +339,6 @@ css:
}
}
- /* ============================================================
- Explicit responsive layout (authored CSS — NOT purged).
- The host Tailwind JIT does not reliably scan a theme's override
- templates, so sm:/md:/lg: grid variants declared there can be
- dropped from the build (a grid then never expands on desktop
- and never collapses on mobile). These media-query rules own the
- column counts deterministically and always collapse to a single
- column on phones.
- ============================================================ */
- .noir-cols { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
- @media (min-width: 640px) {
- .noir-cols-2, .noir-cols-3, .noir-cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
- }
- @media (min-width: 1024px) {
- .noir-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
- .noir-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
- }
- /* Grids that stay two-up on phones (galleries, stat rows, footer links). */
- .noir-cols-2up { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; }
- @media (min-width: 768px) {
- .noir-cols-2up-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
- .noir-cols-2up-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
- }
- /* Media/text split — one column on phones, two from the tablet width. */
- .noir-split { display: grid; grid-template-columns: 1fr; gap: 2.5rem; }
- @media (min-width: 768px) { .noir-split { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
- /* Gap modifiers (used alongside any grid class above). */
- .noir-gap-sm { gap: 0.75rem; }
- .noir-gap-lg { gap: 2rem; }
-
- /* Hero vertical rhythm — replaces the unreliable min-h-[75vh] arbitrary
- class so the masthead has bounded, predictable breathing room instead
- of collapsing to nothing or ballooning to 75vh of empty space. */
- .noir-hero-pad { padding-top: 3.5rem; padding-bottom: 3.5rem; }
- @media (min-width: 768px) { .noir-hero-pad { padding-top: 5rem; padding-bottom: 5rem; } }
- @media (min-width: 1024px) { .noir-hero-pad { padding-top: 6.5rem; padding-bottom: 6.5rem; } }
-
/* Empty-media graceful state — the demo seed ships no images, so any
media frame that renders an empty
must not balloon into a grey
box or show broken-image chrome. Images never exceed their column. */
diff --git a/templates/overrides/noir/blog-hero.ninjatpl b/templates/overrides/noir/blog-hero.ninjatpl
index d8466d9..3bb49be 100644
--- a/templates/overrides/noir/blog-hero.ninjatpl
+++ b/templates/overrides/noir/blog-hero.ninjatpl
@@ -6,7 +6,7 @@
{% if subtitle %}
{{ subtitle }}
{% endif %}
{% if posts %}
-
+
{% for post in posts %}
{% if post.featured_image_url %}{% img post.featured_image_url alt=post.title class="aspect-video h-full w-full object-cover transition-transform duration-300 group-hover:scale-105" %}{% endif %}
diff --git a/templates/overrides/noir/contact-card.ninjatpl b/templates/overrides/noir/contact-card.ninjatpl
index cd0077e..fd0ad63 100644
--- a/templates/overrides/noir/contact-card.ninjatpl
+++ b/templates/overrides/noir/contact-card.ninjatpl
@@ -3,7 +3,7 @@
{% if heading %}
{{ heading }}
{% endif %}
{% if description %}
{{ description }}
{% endif %}
-
+
{% for channel in channels %}
{% if channel.icon %}
{% endif %}
diff --git a/templates/overrides/noir/event-list.ninjatpl b/templates/overrides/noir/event-list.ninjatpl
index a16726b..8502e9b 100644
--- a/templates/overrides/noir/event-list.ninjatpl
+++ b/templates/overrides/noir/event-list.ninjatpl
@@ -4,7 +4,7 @@
{% if heading %}
{{ heading }}
{% endif %}
{% if intro %}
{{ intro }}
{% endif %}
{% if layout == "cards" %}
-
+
{% for event in events %}{% if not (hidePast and event.past) %}
{% if event.media %}{% img event.media alt=event.title class="h-full w-full object-cover" %}
{% endif %}
diff --git a/templates/overrides/noir/feature-grid.ninjatpl b/templates/overrides/noir/feature-grid.ninjatpl
index 617e5ac..4fa0e05 100644
--- a/templates/overrides/noir/feature-grid.ninjatpl
+++ b/templates/overrides/noir/feature-grid.ninjatpl
@@ -4,7 +4,7 @@
{% if eyebrow %}{{ eyebrow }}
{% endif %}
{% if heading %}{{ heading }}
{% endif %}
{% if intro %}{{ intro }}
{% endif %}
-
+
{% for item in items %}
{% if item.icon %}
{% endif %}
diff --git a/templates/overrides/noir/featured-posts.ninjatpl b/templates/overrides/noir/featured-posts.ninjatpl
index cceffce..da91912 100644
--- a/templates/overrides/noir/featured-posts.ninjatpl
+++ b/templates/overrides/noir/featured-posts.ninjatpl
@@ -2,7 +2,7 @@
{% if heading %}
{{ heading }}
{% endif %}
-
+
{% for post in posts %}
{% 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-300 group-hover:scale-105" %}{% endif %}
diff --git a/templates/overrides/noir/gallery.ninjatpl b/templates/overrides/noir/gallery.ninjatpl
index b80ac15..eac267a 100644
--- a/templates/overrides/noir/gallery.ninjatpl
+++ b/templates/overrides/noir/gallery.ninjatpl
@@ -1,5 +1,5 @@
{# noir override — gallery; preserves layout, gap, columns, lightbox, images[].src/.alt/.caption, data-bn-gallery, data-lightbox, data-bn-gallery-item, data-caption, {% img %} calls, and the full lightbox IIFE verbatim. Only grid tiles restyled (square hairline frames, grayscale). #}
-{% with layout=layout|default:"grid" gap=gap|default:"md" cols=columns|default:3 %}{% if lightbox %}