- seed: real Rootline Trust content — no 'example figures' placeholder copy; home composed as split hero (hands-soil image) + stats + feature-grid + botanical divider + field note + newsletter; About gap filled with fern image + impact report between story and pull-quote; first article expanded to ~10 field-notes paragraphs with inline forest image; 6 Pixabay images seeded via seed/media (id+file+alt) - article.ninjatpl: header slot now full-bleed (was max-w-3xl wrapped — the boxed-header artifact bracketing the nav with vertical rules) - landing.ninjatpl: main slot full-bleed so composed sections span the page - SVG geometry guard: every <use>-icon svg now carries explicit width/height matching its size class (18 files) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
19 lines
2.1 KiB
Plaintext
19 lines
2.1 KiB
Plaintext
{# contact-card override — cream contact tiles with moss icon chips. Fields mirror builtin: heading, description, columns, channels[].icon/.label/.value/.link. Icons via sprite <use>. Wiring preserved. #}
|
|
<section data-block-override="earthen:contact-card" class="py-12 md:py-20 bg-background text-foreground{% if class %} {{ class }}{% endif %}">
|
|
<div class="mx-auto max-w-4xl px-4 text-center">
|
|
{% if heading %}<h2 class="crayon-underline text-3xl md:text-4xl font-semibold" style="font-family:var(--font-heading, 'Fraunces', 'Playfair Display', Georgia, serif);color:hsl(var(--primary));">{{ heading }}</h2>{% endif %}
|
|
{% if description %}<p class="mt-4 mx-auto max-w-2xl text-lg" style="color:hsl(var(--muted-foreground));font-family:var(--font-body, 'Work Sans', ui-sans-serif, system-ui, sans-serif);">{{ description }}</p>{% endif %}
|
|
<div class="mt-12 grid grid-cols-1 gap-6 text-left {% if columns == 3 %}sm:grid-cols-2 lg:grid-cols-3{% elif columns == 1 %}{% else %}sm:grid-cols-2{% endif %}">
|
|
{% for channel in channels %}
|
|
<div class="earthen-panel earthen-blob-soft flex items-start gap-4 p-6">
|
|
{% if channel.icon %}<span class="inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-xl" style="background-color:hsl(var(--primary)/0.12);color:hsl(var(--primary));"><svg width="20" height="20" class="h-5 w-5" aria-hidden="true"><use href="/icons/{{ channel.icon|split:":"|first }}.svg#{{ channel.icon|split:":"|last }}"></use></svg></span>{% endif %}
|
|
<div class="min-w-0">
|
|
{% if channel.label %}<div class="text-xs font-semibold uppercase tracking-[0.14em]" style="color:hsl(var(--muted-foreground));">{{ channel.label }}</div>{% endif %}
|
|
{% if channel.value %}<div class="mt-1 break-words text-lg font-semibold" style="font-family:var(--font-heading, 'Fraunces', 'Playfair Display', Georgia, serif);color:hsl(var(--foreground));">{% if channel.link %}<a href="{{ channel.link }}" class="earthen-link">{{ channel.value }}</a>{% else %}{{ channel.value }}{% endif %}</div>{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</section>
|