Re-skin gotham to the locked nightlife / private members' club persona: cinematic near-black luxe, brass hairline accents, letterboxed heroes and tall condensed display type. Codeless .bnp; MID motion tier (JS effects, no canvas), prefers-reduced-motion honored, no-JS fallback. - 49 mandatory builtin overrides in templates/overrides/gotham/ (chrome, marketing, primitives, commerce/local, blog family, auth surface, 404). Field reads, provider fields, form wiring and block JS preserved verbatim from the frozen builtins (cms a0f07e2ae); only presentation reskinned. - 8 page templates (default, landing, article, full-width, blog-index, contact, auth + retained centered), dual-mode via theme_mode. - 4 persona blocks: door_strip, events_marquee, membership_tiers, bottle_menu. Removed old theme blocks that duplicated builtins (hero, stats, features, footer) — now overrides. - 5 dual-mode presets (all 19 tokens, light + dark intentional). - Bundled OFL woff2: Antonio (heading), Cormorant Garamond (body), Inter (meta), IBM Plex Mono (mono); all font-family via var(--font-*). - Themed email-safe wrapper, master pages, seed demo (home/about/blog x3/ contact+workflow/login) in private-club voice. - Gotham utility CSS (reel-*, film-grain, spotlight, letterbox-scrim, reveal) via manifest css.input_css_append; semantic color tokens only. - plugin.mod kind="theme", required_icon_packs=["lucide"]; *.bnp gitignored. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
18 lines
1.8 KiB
Plaintext
18 lines
1.8 KiB
Plaintext
<section data-block-override="gotham:contact-card" class="py-16 md:py-24 bg-background text-foreground{% if class %} {{ class }}{% endif %}">
|
|
<div class="mx-auto max-w-4xl px-4 text-center">
|
|
{% if heading %}<h2 class="reel-caps reel-underline text-3xl md:text-4xl text-foreground" style="font-family:var(--font-heading, 'Antonio', 'Oswald', 'Bebas Neue', sans-serif)">{{ heading }}</h2>{% endif %}
|
|
{% if description %}<p class="mt-4 mx-auto max-w-2xl text-lg text-muted-foreground" style="font-family:var(--font-body, 'Cormorant Garamond', 'Cormorant', Georgia, 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="reel-frame reel-foil flex items-start gap-4 rounded-none bg-card p-6 text-card-foreground">
|
|
{% if channel.icon %}<span class="inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-none border border-[hsl(var(--primary)/0.45)] bg-primary/10 text-primary"><svg 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="reel-caps text-xs tracking-[0.16em] text-muted-foreground">{{ channel.label }}</div>{% endif %}
|
|
{% if channel.value %}<div class="mt-1 break-words text-lg text-foreground" style="font-family:var(--font-heading, 'Antonio', 'Oswald', 'Bebas Neue', sans-serif)">{% if channel.link %}<a href="{{ channel.link }}" class="reel-link transition-colors hover:text-primary">{{ channel.value }}</a>{% else %}{{ channel.value }}{% endif %}</div>{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</section>
|