Pivot from the wellness/spa WZ-021 state to the locked bakery/patisserie persona. Codeless .bnp, verified against cms a0f07e2ae (OVERRIDE-CONTRACT). - 49 mandatory template overrides (+ manifest entries), re-skinned from the field-correct coffee sibling: every content field, provider var, custom tag and JS preserved verbatim; only styling + copy changed. §4 button/card reads reconciled (link/style/label, text/media). - 7 page templates: default, landing, article, full-width, blog-index, contact, auth. - 4 persona blocks: seasonal_specials, cake_gallery, order_ribbon, bakers_note (old 6 duplicate-builtin blocks deleted -> now overrides). - 5 dual-mode presets (morning-haze/berry-cream/matcha-cream/lavender-honey/ peach-blossom), all 19 tokens, tuned dusk-berry dark. - Bundled OFL fonts: Fraunces (heading) + Quicksand (body); all font-family via var(--font-*). Themed email-safe wrapper. master_pages + demo seed (home, about, blog x3, contact w/ data-table + row_inserted email workflow, login). - CSS-FIRST motion: watercolor washes, scalloped edges, soft pills; reduced- motion honored. Gates: make -> exit 0 (codeless .bnp); check-safety -> 19 ok 13 skip, exit 0. Known limits per contract §11/§12 (auth trio + page-suggestions + provider- backed lists inert until cms fix). Visuals UNVERIFIED until Wave B. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
1.9 KiB
Plaintext
32 lines
1.9 KiB
Plaintext
<section class="py-16 md:py-24 bg-background text-foreground{% if class %} {{ class }}{% endif %}">
|
|
<div class="mx-auto max-w-5xl px-4">
|
|
{% if heading %}<h2 class="pd-display text-3xl text-primary md:text-4xl"><span class="pd-doodle-underline">{{ heading }}</span></h2>{% endif %}
|
|
{% if intro %}<p class="pd-body mt-3 max-w-2xl text-lg text-muted-foreground">{{ intro }}</p>{% endif %}
|
|
<div class="pd-chalkboard mt-10 p-6 md:p-10">
|
|
<div class="grid grid-cols-1 gap-x-12 gap-y-10 {% if columns == 2 %}md:grid-cols-2{% endif %}">
|
|
{% for section in sections %}
|
|
<div class="menu-section">
|
|
{% if section.title %}<h3 class="pd-hand border-b pd-chalk-rule pb-2 text-3xl">{{ section.title }}</h3>{% endif %}
|
|
{% if section.note %}<p class="pd-body pd-chalk-muted mt-2 text-sm">{{ section.note }}</p>{% endif %}
|
|
<ul class="mt-4 space-y-5">
|
|
{% for item in section.items %}
|
|
<li class="flex items-baseline gap-4">
|
|
<div class="min-w-0 flex-1">
|
|
<div class="flex flex-wrap items-baseline gap-x-2 gap-y-1">
|
|
<span class="pd-display text-lg">{{ item.name }}</span>
|
|
{% for badge in item.badges %}{% if badge.label %}<span class="pd-hand rounded-full border pd-chalk-rule px-2 py-0.5 text-sm pd-chalk-muted">{{ badge.label }}</span>{% endif %}{% endfor %}
|
|
</div>
|
|
{% if item.description %}<p class="pd-body pd-chalk-muted mt-0.5 text-sm">{{ item.description }}</p>{% endif %}
|
|
</div>
|
|
{% if item.price %}<span class="pd-mono shrink-0 tabular-nums">{% if currency %}{{ currency }}{% endif %}{{ item.price }}</span>{% endif %}
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% if footnote %}<p class="pd-body pd-chalk-muted mt-10 text-xs">{{ footnote }}</p>{% endif %}
|
|
</div>
|
|
</div>
|
|
</section>
|