From 03c49a9a8359b2f0210be3295e467e0118dc780a Mon Sep 17 00:00:00 2001 From: Alex Dunmow Date: Sun, 5 Jul 2026 10:51:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(art-deco):=20Wave=20A=20supper-club=20them?= =?UTF-8?q?e=20=E2=80=94=2049=20overrides,=207=20templates,=20seed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WO-TF-011: dress the fine-dining / supper-club persona (gilded symmetry, ziggurat frames, sunbursts, hairline gold rules; champagne/ivory light, gold-on-lacquer dark) against the frozen Wave-0 builtin schemas. Overrides (templates/overrides/art-deco/): all 49 mandatory builtin keys, each re-skinned from the builtin default with every content field, provider field, custom tag ({% img %}/{% button %}/{% form %}/{% signup_form %}/ {% auth_form %} wiring) and JS (navbar drawer, gallery lightbox, countdown, stats count-up, video/audio facade, announcement dismiss) preserved verbatim. Auth trio reproduces the untouchable /api/auth/* endpoints and field names; captcha widget injected from _captcha_widget. manifest.yaml declares all 49. Page templates: added blog-index, contact, auth (now 7 total) in Deco chrome. Blocks rework (spec D5): footer/hero(marquee)/gallery/divider/pull-quote theme blocks deleted — folded into overrides of the builtin keys. Kept persona furniture reservation + menu; added private_dining + chef_signature (4 blocks). Presets: 4 dual-mode (mode "both"), all 19 tokens, light AND dark tuned. Fonts: bundle Cinzel + Cormorant Garamond (OFL) as Latin woff2 subsets in assets/fonts/ (license recorded in OFL.txt); all font-family via var(). Email wrapper themed. required_icon_packs=["lucide"] + RECOMMENDED_ICONS.md. Seed (demo): home/about/blog(3 posts)/contact/login pages in supper-club voice; contact-form targets seeded contact_submissions data table; row_inserted workflow emails admins. Verified: ninja plugin build (codeless), verify, archive-check, and check-safety all exit 0. Visual quality UNVERIFIED until Wave B. Co-Authored-By: Claude Opus 4.8 --- RECOMMENDED_FONTS.md | 67 +++--- RECOMMENDED_ICONS.md | 24 +++ assets/fonts/OFL.txt | 23 ++ assets/fonts/cinzel-400.woff2 | Bin 0 -> 13320 bytes assets/fonts/cinzel-700.woff2 | Bin 0 -> 14460 bytes .../fonts/cormorant-garamond-400-italic.woff2 | Bin 0 -> 18640 bytes assets/fonts/cormorant-garamond-400.woff2 | Bin 0 -> 22016 bytes assets/fonts/cormorant-garamond-600.woff2 | Bin 0 -> 22224 bytes assets/fonts/cormorant-garamond-700.woff2 | Bin 0 -> 22004 bytes blocks/blocks.yaml | 52 ++--- blocks/chef_signature.ninjatpl | 11 + blocks/chef_signature.schema.json | 39 ++++ blocks/divider_fan.ninjatpl | 1 - blocks/divider_fan.schema.json | 16 -- blocks/footer.ninjatpl | 10 - blocks/footer.schema.json | 37 ---- blocks/gallery_fan.ninjatpl | 12 -- blocks/gallery_fan.schema.json | 38 ---- blocks/marquee_hero.ninjatpl | 12 -- blocks/marquee_hero.schema.json | 47 ---- blocks/press_quote.ninjatpl | 9 - blocks/press_quote.schema.json | 31 --- blocks/private_dining.ninjatpl | 15 ++ blocks/private_dining.schema.json | 67 ++++++ fonts.json | 21 +- manifest.yaml | 69 +++++- master_pages.json | 16 +- plugin.mod | 1 + presets.json | 100 ++++++++- seed/seed.json | 200 ++++++++++++++++++ seed/workflows.json | 19 ++ templates/art-deco/auth.ninjatpl | 18 ++ templates/art-deco/blog-index.ninjatpl | 23 ++ templates/art-deco/contact.ninjatpl | 22 ++ .../art-deco/announcement-bar.ninjatpl | 21 ++ .../overrides/art-deco/audio-embed.ninjatpl | 16 ++ .../overrides/art-deco/auth-form.ninjatpl | 33 +++ .../overrides/art-deco/auth-status.ninjatpl | 31 +++ .../art-deco/author-bio-hero.ninjatpl | 22 ++ .../overrides/art-deco/author-bio.ninjatpl | 14 ++ .../overrides/art-deco/blog-hero.ninjatpl | 24 +++ .../overrides/art-deco/breadcrumbs.ninjatpl | 15 ++ templates/overrides/art-deco/button.ninjatpl | 11 +- templates/overrides/art-deco/card.ninjatpl | 4 + .../overrides/art-deco/category-list.ninjatpl | 18 ++ .../overrides/art-deco/contact-card.ninjatpl | 17 ++ .../overrides/art-deco/contact-form.ninjatpl | 43 ++++ .../overrides/art-deco/countdown.ninjatpl | 48 +++++ templates/overrides/art-deco/cta.ninjatpl | 14 ++ templates/overrides/art-deco/divider.ninjatpl | 13 ++ .../overrides/art-deco/event-list.ninjatpl | 40 ++++ templates/overrides/art-deco/faq.ninjatpl | 17 ++ .../overrides/art-deco/feature-grid.ninjatpl | 17 ++ .../art-deco/featured-posts.ninjatpl | 24 +++ templates/overrides/art-deco/footer.ninjatpl | 40 ++++ templates/overrides/art-deco/gallery.ninjatpl | 52 +++++ templates/overrides/art-deco/heading.ninjatpl | 8 +- templates/overrides/art-deco/hero.ninjatpl | 40 ++++ .../art-deco/hours-location.ninjatpl | 31 +++ templates/overrides/art-deco/image.ninjatpl | 12 +- .../overrides/art-deco/logo-strip.ninjatpl | 15 ++ .../overrides/art-deco/menu-list.ninjatpl | 30 +++ templates/overrides/art-deco/navbar.ninjatpl | 104 +++++++++ .../art-deco/newsletter-signup.ninjatpl | 13 ++ .../art-deco/page-suggestions.ninjatpl | 21 ++ .../art-deco/password-reset-form.ninjatpl | 13 ++ .../overrides/art-deco/popular-posts.ninjatpl | 16 ++ .../overrides/art-deco/post-hero.ninjatpl | 23 ++ .../overrides/art-deco/post-metadata.ninjatpl | 9 + templates/overrides/art-deco/pricing.ninjatpl | 25 +++ templates/overrides/art-deco/quote.ninjatpl | 8 + .../overrides/art-deco/related-posts.ninjatpl | 17 ++ .../overrides/art-deco/rich-section.ninjatpl | 13 ++ .../overrides/art-deco/rich-text.ninjatpl | 2 + .../overrides/art-deco/sidebar-nav.ninjatpl | 15 ++ .../overrides/art-deco/social-links.ninjatpl | 13 ++ templates/overrides/art-deco/stats.ninjatpl | 48 +++++ templates/overrides/art-deco/team.ninjatpl | 21 ++ .../overrides/art-deco/testimonial.ninjatpl | 27 +++ templates/overrides/art-deco/text.ninjatpl | 3 +- .../overrides/art-deco/timeline.ninjatpl | 21 ++ .../overrides/art-deco/utility-bar.ninjatpl | 10 + .../overrides/art-deco/video-embed.ninjatpl | 23 ++ 83 files changed, 1808 insertions(+), 307 deletions(-) create mode 100644 RECOMMENDED_ICONS.md create mode 100644 assets/fonts/OFL.txt create mode 100644 assets/fonts/cinzel-400.woff2 create mode 100644 assets/fonts/cinzel-700.woff2 create mode 100644 assets/fonts/cormorant-garamond-400-italic.woff2 create mode 100644 assets/fonts/cormorant-garamond-400.woff2 create mode 100644 assets/fonts/cormorant-garamond-600.woff2 create mode 100644 assets/fonts/cormorant-garamond-700.woff2 create mode 100644 blocks/chef_signature.ninjatpl create mode 100644 blocks/chef_signature.schema.json delete mode 100644 blocks/divider_fan.ninjatpl delete mode 100644 blocks/divider_fan.schema.json delete mode 100644 blocks/footer.ninjatpl delete mode 100644 blocks/footer.schema.json delete mode 100644 blocks/gallery_fan.ninjatpl delete mode 100644 blocks/gallery_fan.schema.json delete mode 100644 blocks/marquee_hero.ninjatpl delete mode 100644 blocks/marquee_hero.schema.json delete mode 100644 blocks/press_quote.ninjatpl delete mode 100644 blocks/press_quote.schema.json create mode 100644 blocks/private_dining.ninjatpl create mode 100644 blocks/private_dining.schema.json create mode 100644 seed/seed.json create mode 100644 seed/workflows.json create mode 100644 templates/art-deco/auth.ninjatpl create mode 100644 templates/art-deco/blog-index.ninjatpl create mode 100644 templates/art-deco/contact.ninjatpl create mode 100644 templates/overrides/art-deco/announcement-bar.ninjatpl create mode 100644 templates/overrides/art-deco/audio-embed.ninjatpl create mode 100644 templates/overrides/art-deco/auth-form.ninjatpl create mode 100644 templates/overrides/art-deco/auth-status.ninjatpl create mode 100644 templates/overrides/art-deco/author-bio-hero.ninjatpl create mode 100644 templates/overrides/art-deco/author-bio.ninjatpl create mode 100644 templates/overrides/art-deco/blog-hero.ninjatpl create mode 100644 templates/overrides/art-deco/breadcrumbs.ninjatpl create mode 100644 templates/overrides/art-deco/card.ninjatpl create mode 100644 templates/overrides/art-deco/category-list.ninjatpl create mode 100644 templates/overrides/art-deco/contact-card.ninjatpl create mode 100644 templates/overrides/art-deco/contact-form.ninjatpl create mode 100644 templates/overrides/art-deco/countdown.ninjatpl create mode 100644 templates/overrides/art-deco/cta.ninjatpl create mode 100644 templates/overrides/art-deco/divider.ninjatpl create mode 100644 templates/overrides/art-deco/event-list.ninjatpl create mode 100644 templates/overrides/art-deco/faq.ninjatpl create mode 100644 templates/overrides/art-deco/feature-grid.ninjatpl create mode 100644 templates/overrides/art-deco/featured-posts.ninjatpl create mode 100644 templates/overrides/art-deco/footer.ninjatpl create mode 100644 templates/overrides/art-deco/gallery.ninjatpl create mode 100644 templates/overrides/art-deco/hero.ninjatpl create mode 100644 templates/overrides/art-deco/hours-location.ninjatpl create mode 100644 templates/overrides/art-deco/logo-strip.ninjatpl create mode 100644 templates/overrides/art-deco/menu-list.ninjatpl create mode 100644 templates/overrides/art-deco/navbar.ninjatpl create mode 100644 templates/overrides/art-deco/newsletter-signup.ninjatpl create mode 100644 templates/overrides/art-deco/page-suggestions.ninjatpl create mode 100644 templates/overrides/art-deco/password-reset-form.ninjatpl create mode 100644 templates/overrides/art-deco/popular-posts.ninjatpl create mode 100644 templates/overrides/art-deco/post-hero.ninjatpl create mode 100644 templates/overrides/art-deco/post-metadata.ninjatpl create mode 100644 templates/overrides/art-deco/pricing.ninjatpl create mode 100644 templates/overrides/art-deco/quote.ninjatpl create mode 100644 templates/overrides/art-deco/related-posts.ninjatpl create mode 100644 templates/overrides/art-deco/rich-section.ninjatpl create mode 100644 templates/overrides/art-deco/rich-text.ninjatpl create mode 100644 templates/overrides/art-deco/sidebar-nav.ninjatpl create mode 100644 templates/overrides/art-deco/social-links.ninjatpl create mode 100644 templates/overrides/art-deco/stats.ninjatpl create mode 100644 templates/overrides/art-deco/team.ninjatpl create mode 100644 templates/overrides/art-deco/testimonial.ninjatpl create mode 100644 templates/overrides/art-deco/timeline.ninjatpl create mode 100644 templates/overrides/art-deco/utility-bar.ninjatpl create mode 100644 templates/overrides/art-deco/video-embed.ninjatpl diff --git a/RECOMMENDED_FONTS.md b/RECOMMENDED_FONTS.md index 2af1260..debbf0c 100644 --- a/RECOMMENDED_FONTS.md +++ b/RECOMMENDED_FONTS.md @@ -1,53 +1,36 @@ # Recommended Fonts — Art Deco -This theme ships `fonts.json = []` (Wave-1 policy, see `themes/docs/FONTS.md`). -The intended typographic identity is achieved by an admin assigning the -following Google Fonts to the theme's typography slots after install. +This theme **bundles** its display and body families as subset woff2 files in +`assets/fonts/` (see `fonts.json`). They install as `source=template` rows and +are pre-selected for the theme's typography slots — no admin action is required +for the intended look. The families below are the fallbacks baked into every +`var(--font-heading|body|mono, …)` call, so the theme still reads correctly if +an admin reassigns a slot. -## Picker workflow +## Bundled (shipped in this theme) -1. Sign in as an admin and open **Settings → Typography**. -2. Switch to the **Google Fonts** tab in the font picker. -3. Search for the family, click **Add**, then assign it to the listed slot. +| Slot | Family | Weights | File(s) | License | +|------|--------|---------|---------|---------| +| Heading | **Cinzel** | 400, 700 | `assets/fonts/cinzel-*.woff2` | SIL OFL 1.1 | +| Body | **Cormorant Garamond** | 400, 400 italic, 600, 700 | `assets/fonts/cormorant-garamond-*.woff2` | SIL OFL 1.1 | -## Display heading — Italiana +License record and copyright attribution: `assets/fonts/OFL.txt`. The woff2s are +Latin subsets of the upstream OFL families (subsetting is permitted by the OFL). -- **Source**: `google:Italiana` -- **Slot**: Heading -- **Why**: The spec calls for stamped Art Deco titles in tight tracking. Italiana - is the closest curated Google Fonts match to the high-contrast 1920s display - cuts the brief describes. -- **Fallback already in CSS**: `var(--font-heading, "Italiana", "Cinzel", Georgia, serif)`. +## Mono slot (not bundled — assign if needed) -### Alternative +The theme uses `var(--font-mono, "JetBrains Mono", ui-monospace, monospace)` for +reservation IDs and tabular figures. To match the intended look, an admin can +assign a mono family: -- **Source**: `google:Cinzel` (also acceptable per spec §3) - Pick this if Italiana feels too thin at small sizes. +1. Sign in as an admin, open **Settings → Typography**. +2. Switch to the **Google Fonts** tab and add **JetBrains Mono**. +3. Assign it to the **Mono** slot. -## Body — Cormorant Garamond +If left unset, the CSS falls back to the system monospace stack. -- **Source**: `google:Cormorant Garamond` -- **Slot**: Body -- **Why**: Classical italic and book weights for long-form prose, exactly the - "Cormorant for long-form prose with classical italics" pairing the spec calls - out. -- **Fallback already in CSS**: `var(--font-body, "Cormorant Garamond", "Cormorant", Georgia, serif)`. +## Alternatives (optional) -## Mono — JetBrains Mono - -- **Source**: `google:JetBrains Mono` -- **Slot**: Mono -- **Why**: Spec wants a precise monospace for reservation IDs and room numbers. - JetBrains Mono ships across all curated Google Fonts and is the cleanest - utilitarian option. -- **Fallback already in CSS**: `var(--font-mono, "JetBrains Mono", ui-monospace, monospace)`. - -## Notes for Wave-2 - -- If Italiana proves too brittle on retina at large sizes, commission a - redistributable Art Deco display face and bundle it via `fonts.json`. The - rest of the CSS is already variable-driven and will pick the new family up - without further edits. -- Body italic for the drop-cap relies on the body family having an italic - variant; both Cormorant Garamond and Cormorant ship italics in the curated - Google Fonts list — no extra picker action needed. +- Heading: `google:Italiana` — a thinner, higher-contrast display cut; already + the second fallback in the heading `var()` list. +- Body: the system serif stack (`Georgia, serif`) is the final fallback. diff --git a/RECOMMENDED_ICONS.md b/RECOMMENDED_ICONS.md new file mode 100644 index 0000000..3f8e015 --- /dev/null +++ b/RECOMMENDED_ICONS.md @@ -0,0 +1,24 @@ +# Recommended Icons — Art Deco + +This theme references icons from a single bundled pack. `plugin.mod` declares +it in `required_icon_packs`; until the loader auto-installs declared packs, an +admin should confirm it is enabled before activation. + +## Required pack + +- **lucide** — ships bundled with the CMS (v0.460). Enabled by default. No + action needed in most installs; if icons render as empty boxes, open + `/admin/icons` and confirm **Lucide** is installed and enabled. + +## Icons used by the theme chrome and overrides + +All via the sprite pipeline (`` +or the `::lucide:::` shorthand): + +`arrow-right`, `check`, `chevron-down`, `chevron-left`, `chevron-right`, `x`, +`play`, `download`, `navigation`, `map-pin`, `diamond`, `star`, `flag`, +`globe`. + +Block content that stores an icon (e.g. feature-grid items, social links, +contact channels) may reference any installed pack as a `pack:name` string; +the schemas default to `lucide` so the theme renders without extra setup. diff --git a/assets/fonts/OFL.txt b/assets/fonts/OFL.txt new file mode 100644 index 0000000..2edb6ef --- /dev/null +++ b/assets/fonts/OFL.txt @@ -0,0 +1,23 @@ +Bundled fonts — license record (SIL Open Font License, Version 1.1) +==================================================================== + +The woff2 files in this directory are subsets (Latin) of the following +open-source families, both distributed under the SIL Open Font License 1.1 +(https://openfontlicense.org). Subsetting and format conversion (TTF to +woff2) are expressly permitted by the OFL; the derived subsets remain under +the same license. + +Cinzel + cinzel-400.woff2, cinzel-700.woff2 + Copyright (c) Natanael Gama (https://ndiscover.com), with Reserved Font + Name "Cinzel". + +Cormorant Garamond + cormorant-garamond-400.woff2, cormorant-garamond-400-italic.woff2, + cormorant-garamond-600.woff2, cormorant-garamond-700.woff2 + Copyright (c) Christian Thalmann, Catharsis Fonts + (https://catharsisfonts.com), with Reserved Font Name "Cormorant". + +The full SIL Open Font License 1.1 text applies to each family and is +available at https://openfontlicense.org. This file records the license and +copyright attribution as required for redistribution under the OFL. diff --git a/assets/fonts/cinzel-400.woff2 b/assets/fonts/cinzel-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8db97d4239ea9d596a2641f3ad9981481e4777e3 GIT binary patch literal 13320 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 OJqs8Bz~t3q0RR9{0OrsD literal 0 HcmV?d00001 diff --git a/assets/fonts/cormorant-garamond-400-italic.woff2 b/assets/fonts/cormorant-garamond-400-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..613b1b0ff15a2982744cde94977b006235b33bc2 GIT binary patch literal 18640 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/cormorant-garamond-400.woff2 b/assets/fonts/cormorant-garamond-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..38cbfcccecd7d9ea42a0665de99a68a777a477a9 GIT binary patch literal 22016 zcmV)3K+C^(Pew8T0RR9109F714gdfE0Sy!Y09B^|1DTls00000000000000000000 z0000Qg900&3LK4A24Db%ToDKggUCFB=WYQu0we>B91DgJ00bZfgLnrZ8^PEW+!%V; zH~?n6>}(?gc^trni95d zM5Yr^6mZwEP{1{Db!q!SyR{bA#%ir@I;ORv)sAn+@HCzOa%oHJNs~H_>c#vnxoD$J zBegWu(9+bAI%=iB{>Qfg6Z|{kn*$#vhS)U9&h(P z@npmku)u-}u=MW-_<5VF_uK!j93g{f2qLzQ+eVB^6JP_CLVL zMGI}I9Xh`>+8Yz?Gs;BVr6X>dl$n22!$Ng8;U+4zUVU+=itu?RrMv zvlf^nnPeXb-`>oU;YgCb7MWyu#uTO{mh8L;7UiHW00d=Tx=W{YTL!2oQvoD+zC4luxU=Ek>$Qo%z#g^=S&$9hWt-7O;rIqEDQX5KGX@@ryh5}$9 zO4z6TL;p5Yx~oydpMua5T!0H$#hstruNU1KAS=i+K)p`XLJ$R2K~-UVf0^blB%B6A zqk;fI*IVCQXW#AnY@_YizGo`d%eg^<7epik_wjkJW6TwW{hDS9Xq2cdC*q;Cj1AAD zeWc1pm;;BP$n*E606PGW0tO423z}ygWW6sy_uK=0<6F@8egHl31Pnn8U;-!vFfI-( zu|%+>lE6|*1@q?zD{mB7bv0nKn+@{Nh?62mkx}Z*vcxJ|?A7DA%Wk^wTfcbWg});J z;zon|00NvuG1|Iq>=1~6_?$iyoF9|WJ*gDVfZx?K0&|duNi>)1;SA)VrEHjo4U@ix z5zIse%+^?9mTZ)4lEg?%l8<2ELk?`?76)H+iMI}@?r9zB1*!)ojPwB&0zj!V+<)It zAD{pOh>xQOLS<5H4Azv9r*YF5%6R zDq$V5>m(5n0b+%NRb2Oc?MYTMDB9srhe!!hNGVFUOxkg4*DT|PzuzunpMnASsH z#nDkR8?G6{*U9`VF1ly~G_qTieRNwV+fQP;!0`)6hqZ9vJ-G(gWTgW2FT2=#qOZ8c zv=)YMb-@|{y=-w;EkEAgMKtUFDp1frZBhz5ti>w-!i63{Dx0q4bWTtk#^+{M4LYp; z45x|ev^du%k25WidR^8mh%%_%(z7Rr#wAh>RJZI`5;iGf)E=_2XVZf*&(aXri>;6M z>h}61_A^~LKa{HY{|VSeOh`hCqM{;Z!lBs&l5&fs7B7L*Jo5zDty`d8hq-;=m=JwV zi1g4`d|r7aHdR`2nKDakbYmpdQi~Lbg_sy5Atj)qf|!_KW@ZEqhvc9M4s{a>7Gl|< z$_P=y#0vjS#3PEBPc+()qh!R0B@r(y!2;%pl5_%*4qM7UNhgrh3Co*6h71`pWLXwQ zw@ZXUV?b&uA)6pjh#^mOATR{#N{WLys8AwGiDA;nq)Q@0Hko2&Nhw>b94X~Cmhu#= z3n7gn*%XUcB8Ae9H_GU7e~hsd#-n6am`JHgtZFIMh*c|vI@#2VHAxDSJCmuVhyDyR z2{l6svr4hqT8OktVNS`KXFjB>)L3sDsqHe_A+24V)^4v4^oBReH@(g1e|mM;VIA>) z{lKTB<35W{p{+(IgUn9L=*-_#&bmnNlFKMp^`qT9#JX*3XRE-^uyrjM%02fR%W^Q3 z`^*0s`o3Qf1u0-i3?;y@G+fKeEz7VvSUwbuSGtTb8jU3`zO-gz$zI?#uRMm4L68Io z#(@Clu_cR?Ql-`})R$bJ=?}_W*muU*zix%SJjjkuT=m)8 zHz}VR;d{N`f59;yF2bz^XO@1XEiC2U9wvo~?pX@_s)K>>j`j2ryJHh9QMwG7vgFE> zZ@2=5ij*5Q#d+MJDm7}=sW-`F)27n1Ch?fL=38Kq#g3Q*AN73opJj+?LsNCXIDkgT?)*Fu`GB18KzG#*3CF(d;+K+gIK zf-==nqb{22ACyt&jQRx1h`iw|&cej&et%$H$+>p_JQE=+WAWcitI0!@dIs$fvjJ4( z4`n=JCWb2uS|#BSnH?Y0=*-C(r66F2tpvbPG$a55ff-s(VmON+;{|6##DrNiD+pgw ztHFiHmS@Hrf+2V#I+-0@p)R+Xp}hVDo9}Ziq)yqCAwg*P8dk+6$lg)4nP|4=Um;yK&ar{qg)wx%_gQ%Q zfYUB|eJZ7Vu5H14rLl$zmlhA1tBI#bl_5ugBE?FSDpPKRkt_bAd!jm1G2y#@1GM)(A)pRWKtEwXpySs^kVdgxDVyz<_Yk{C5q8(#XQ0 zcs$pWGzN4BIQrtB0-HFI$k2iyHQZ$H+iw=uQ!c|mS9VXV?|%5n&BM#bFCZu+EFvl< z?!uL8HxiOk(lWAg@>dw>%60f2y_Um_hZ(0GaOw80bGrY8ZHPGUf=$u&UmYJ_z|Rqv zB|c}a0t#$$Q<~berq@toP0eU#&CMe2gesd@)m`X|U2S#MH>uZJ+>(|;q!P^qeCB~+ zS1LGLp$l?hzLf^UwRz+GrR7&raU)D%YQVXUIoe`<1@xoBCPb)2e&f}f5(S7+)QJSADm1gFe(r`|ytcmjTOr8GW0cnnu70J!fW?T?b$=CW$$ZFZ9oj97?!Y^S$RkT2}EK zo3nFw?w?TS5Ap_{<86Ep@8Ki)I6jR}^6mTxf5ghLc3Ed_#sA#}z!p4@INd(TThSb) zdB=p`!|Qkx&+{%moR8pR`4qn8Gz**pytycfUcTr5ALmusZl7=V^DFR0?(1t{>Qj1Z z9(|8KdnkZ_^8q&+hytM3+Xg_d*3%~)?__7Y4A7@tz1GU@WhVcYR6!+~LlA>krFj+w z2K_gAkHm7yD%&3wL&RtjGAe2sS|(;33!aU;!_&ir^XPS^xC9Wu&2V^9IA7v59n8l5 zt2w4vwH;%OHU83W%v7M8&);9I5pZlI%qzn0C6>~#QX5xU^D6gwy7Cjj5iMv`xgHs) ztx|tA$3r*L`_?zU^Ctm}Kp_cz-5HWE5(!N8CGGIk;W58%Cm~F|03@58U93wQSLH7QD5DUyF18Y%6R6z{z zkqDB7N)E}PBnqi{$BP!>YAh>|mm#nW;v!v5k`050VIao{Vll#C7|f3GL(Fj%m{8-5 z4Fe%?m-28pas+`gDH02pW!eDVpvUqEXaW-G326Mg*Cn{ZZl<$5uu2sNSe4cJ*^2^? zOh7>jx&6xCoX#<%*8>EkA!e*{+~v;s)mS(Mzu*~C0A76ce$%dl=07wJCG@G43xQ=WV6h$S#tYLIN{eDf?C?G%@8JGr*M3j@~UC?kX zSHyVhq%egkMwLAA%~W;gVjlCrd~vOa`R^aj>@7dh{t@}dTjuVl|M`J`>3;Fktp2)p zH#51Ti3#Vz@XOe1ZVq7VwPav{rZ{_Bbhfazn{nmdS>Bff%*yQK+(qHn)iQQiQ`wl& znXg;&Tqr4KI%ii#Wy<=s$;EL7)%`NZWxVoyw#20ebg5Fd5<-ZA_Znn#@lk~NbfuDf zhct@GoOxG~HBr*d>7gJ~jE(HLO6UgwP$QZhh?od8k7`kgN&wQx+?$RLbakcE0|Ss9 zKw&@0kie9>d^wOw<|Ct+2!c#vc_JQ_o>u^Pg!FW(MA->rVPGv_%;4Zg=eTjjna(A$ z;{3|zxeOqUoe7V(h|8n8L~rh#5gMs69NXWA49~J=SS3XrFrvrQzH(L*OP)8#XM`ld z0%JrK;1j}+d~}hmE?S9|&6Ueo&Y%Ljjc@&{)j)1MjARUxQH%Uqi6scE894mH{#tBTST=)qqb0&gv9ZB`9^8{dul#J^IQB*rfIh zJ=QI;f`mYD;ZP))cP}c^5rCcumyI{9HnO&hMpgS%zXJQ(58)!|;=k_{eWQp(G0|wU z@4bt8B%gEY5N_AaOM25+?f#vGKK$n8pw z`;HtdlJ>;EzaUV901D+}&ms2p5K!+_Da~fTTg#cr4oOpd*}XC#Pi!Q7Yn! zY1(4~rfKC~Sw+rQcTl3;#de)QIogC3cwxpxmNVIUdvJ(hbKM- zvX8s<1C6+cRpMTdm@8|Td6J9-H*y>Bm;c0ur1oPBnTTh!mAiJ5SKHW^A69U^3+MU) ztz26lu32>2pQ4RpL_2$clzZ!kE%k~)XB-I7;!e1uCLH=`8o3j4C`VS%_wAgLH?8+2o&64nG~RiVLW#=ZYkXiqmKwYlYO>jm*F4itU|Jy9Bb?#^o%lN~Y?)B3^DRRY&?Q>`ZB#Gm+VSVc4xEHn53-%&xJF6l@WMT{uQZi76nacTimeKVuVXoK5j4r&OV^5tc9yn51L@5n zVsgKXGJuZ`^)U?wp@D1FpX2B-fc9$lgMjfC&z@%{s5g-1K~2B8&##0S!I-Nmf_}qD z-%OL1(kQ^Pdte1PJsx3rfR(|q(a5? zpz+%jYry2!bQQ`u7(T}it1eL(BC5KSntQ5C$7!kF+$`+||NbxtYyVs$BmRgDTi;)r zXG6WcTYl>Ts;_0KIq_nyHc8-fcRy1$XX+{@@pRJ-tQkE_E@fxq0A1oErovE~ z`ERgsqHV@MWrL!xoKZwAzuugV#Ma-kArc1L*%K{J*2zDU^bj|?l2bG<9hi$RR+N)7@L;G0<9?^GWT-8Fkm2Xk_JC|IyW6B6FJ)zDSHjd(yQg7L>uQd0UkrZ^^R|TO zE3b*06K?lQZAU&ZfL2q(#%$(FTf48SBBG@uQk(OF3dpqgA#;5VyJkrbG?^B@Ls{bK z7d4C3SEdQ5(pBU>6Oi&bl_P55ys+$kDkUQhiYkSR9;>cmwZ^#P2r}$= zqfDVZGr(Ac}KQaj75(a=%hc+kU@;DU zo}ZUSea2FrSaw}P!d#q3dabW1Y4B6@IdURBOZ&9?<%AWy*frEOVV2&A|IS2}^u0#C z)vLydiy6VZ;pMf7tWlJQY-NJf!n87>EC*X=K~KRilnq-3VZpeS;7~U7r=!-uGvNbU zk}lUn%-)Vk7I&?pci*)4-!1g4wKX@WU;r*u*1>3}b%u*+%pu(l8V z$dYB$TvFIsm3%~l;5H3t6d$>T^&v$cj24ez8CFQ3%Gk7!>pI8(oOsswXnffI8Or?D#BeOUe2G#3Rq6#7>qBye|8b zY}A35i~aW_I#4&8k00hFH9>Z$xRXu;BA$Uz8&e3RjciN-1~N#`fRIx28Pgmi4Bi#dSj8rt!B+0?hp`!xs9Oy3K^nIiac>onLhvG`D?Y6hZ60?{yH7>D`*l+$qF zTFI#zxgeEQnKh+_{}F1kG|$q*Qc>8h)EuIb~VU-8!n?4Nhvg zfD|4vd0??RQSom0rn-M?5U=Vuy=Ux7^T$T-v-hs)qZHIN+5GSJ3om_JTK_(i;G(p9 zFKS4qKKG!P>a$F*w|{N)9B5P3Ltr}60Ab*&YCgTREgG@l$|ef`rOv>bt3t3#mg0FD ziPO0LAYOoK%CLbe>k0Tdaa3MxYYAW5ixnP?*EJ&P_2ybxE6wj{M__2A-<^WL%-j?b zxhnNh2Oj*~Dfub9W6vP)*|cJBx}@Sg4sP2cJ+=zNL@5pqUi$P@5YWqq)KP#cn*f~T zE~-A3DyD<{GN30_+ANTgHcvpND^c?-s1;mUW=jT)#&V!UNq#mA45i_scP2PzTLhBw z%z0H_CAy!!__p9v!s6A7MhL@2@oULfBr+^z&{N`$-;BITWy@HtS!7#4WJ|#daWOEe zo*li4^d% z{0W-!6g!$UmEh_^Si4wA4+pCzl{z&XDWwBs$(^ZzL)5}lA%Gw3gaK_<5C>feV71vc zPSmfp$Acp$-ok;AhvoC^f)-nJ6nep+$@MRHB#WUyPg|a}jKT_m>5XmAk&h>W))QM(NCjbAhWcfMB-STt;TTV64U|RZ z8=mj>s6IB;!)poaw})yBA!;AB%s}y{nXA*+lpNSH)n1j969n(K-fe1wJ+%&4iI{D) z+YH>Jf_U*1)#l?C*H{a}(a7ytg8~A;T@KoC$E0(XIJ|awAqs>DnqBGud4gv3m+X5s=XW9ipt#h)0UN{BGki z!|dQb=MLSI%<1L>8GZFeZZ9=G)rD)kme*X6s<{b`x!^vZWsqJAkWGQ%V_cem-Ut~E zg{A1p`q1s_1Am{9taX;?pGS^%mE1tT{QoNOAAXtW^k=-Cu%opg6xZ77q$FLaidPBLkK3P?XD#6TF#6K!>HT!0tOyxF# zt9mWAcs!!^C&2=5s3qa2@i>%RLZ*QVDFcUK(I;m@s-TY$MKuTWqJM-vAqcu9(NQ-u z@82n=MSozqA()>G`^VbiV6Px@E@&2yncPz6=xzyhyIskKrQ8_{O?F---lrYFRE$Bj zW>6KA)wW27w=B%*1vr~z5Pw2Ku!ReLB+{yJV<1A8u3o~+Z$j&^qJ8Rp4g0y>85fXO z@{hldfnW0G6|(Z!L;gI~{BoREoP$?#5Nd~6O$g&d?+qhL^#j#>kNspt%)_(1R%V%tS3bhwQ&?pUT zZ7l5%m(TD>`9$+sT{&_^lR^2>a5bvKZ?ds^G*UUkqm>hfJSm{ETeM*vhBkUh0>K1nJSRsOJ8)JEbt?=NUsMz?qa!E#wF2=4fwAx+ zVPj%Ru9|D@ravoJS8A(v#{o5)@NX^wvQ-FFD?Ez`+keeYAA zZ8$jYKB%rx`Wb>hwa>59_8goV1XngFjbJn#+pzD#?Kq_Oy+s~KfT~%wykO#*ElWL( zaZibye(!-}`N1N=KZMjhlj}S{7cNK8m7y^F@132ocZJ{wZ1{c?BxC)PF`6vmeHP}( z=33CdO7U%L`5Zlk=>Rvrwi0wh3BPE$8T_$Ikw{@wBKRk8ip6fP+^QSiRCB@?3CR>yOu2`n(CTFEcy+EBoR^r^-HgT32*6SeBLzA5aZ<}cg zM!iwR4^AGd5^f2xna!~|DPpi-7@5@vC;_z$7)8oJSzJweJ{$)zaHieZH!#ZnoaShh zhd5th<^TI0gy8a=IG#5cP$HM+>MMuaFx4^}>TF$DoqPPtT>w;@|Ng=kg@AG2LAaSqA} z>)Z;p61(w;NX%GKgh5d-gR43#hpjjZ>3mYx3L%ssxu6#C z82+hdPv#|Xn|w`M{y`@%A(&Gn*pW}$N& zkPm1gIwgyp7$o7RBN3u2#uQ0Y@f3_=CQ&HAGOmdgbBVqkPT-QF?!F&d&mSOdcT#nm zl$I1#Arjf7rK%PmzT7e5j=$qd)UF{tUYr1c=$2QLR2zq4SA}#W9AzHKBC+#H>qXnM z7388TJoOq8?SRf}13MnPa1^%GkyUb`tPXUa-uht8pAmUzdGX=bfqwHagtBq4xRm$} zOE84fOf0-S;@Fpo>#wUV`CgJC6>Mm3CGn;zXRXhknyOgnYtIy7^mx#k{Vkm|%=|I+ zBlz|J5okU5-fX?R_x}ye)hX#KTcO`u{a{%cp(}~a5u{ZoaR{Y?$uYg!x8}gF<&(?R zN>V48jFCxp@~-!Eb>9UgUR3d3>CG3{dcBt_m{ed zL}#9M8Mgkev;AmLmQ^qnm1VP*>Z8{;uHq;*>x@Wa0*zc!YHT?W|XscXyFa?E^OgezDKPc*I*&qVjZ`YzwdR!3=~2v86c@-D z`jb(;pUZ5nN>|P;0g?A9qYBzl65HBx+ZBucECGv)`u7-8ft-gJ*balf1BA|s%MGqNzQjA_Lh^2nV~tj(WQO+-mJzyI1B|%!S0c7o$0(^H z`Y6!kMM9-2ba%kX3we`{igUlnTrWn&%ldoOzKhOu-wmmJk7tb0cm@Ym)B{~Z`4*3T zegS-XZ+T>ULu>1nXY+eh&7_Aj)OmC>-h)H;?JbycxR%8t_U-G(v^#g$lrLS05m4BH z@(E9v6>=aUxiD;uUfh`}h@3E983#9M23zD9$Ob?$g9Bo(az8KpnY$bt5Iq*T6Qq$B zXWJr*TSQ=pq-faw28#ntKw5t+pvdxwR@7F{typ z!4NtD7SjxFpcZC#RsO9{_7$ft20I91WoE&?@x@IbR~h<~bvM%KGUSmGG@7|^&(4ky zvl3q49v=8#N%g5e9aD8S`%!#1ri!Ao%S2b9C!IYQm@$}U27&ubARlDh$~-t&J+&z| z@j)~D!Z&hd78&_cOzkH|dxk92fZub&klF4$Jaz5MsPeBtlRAqPONA0N`0&j;gKsKH ztNebq1~WL~kWhJ5dP(mBmm3)D9;+-uUF@ZhmB*s;_;?2E`{eu$BVtf+g7S@tfp`Wd z^^|B%QdG^Hljj%S-W?UnhZt0GU8(qHA^7VfoW}litBlP}`bEq7jzBny-KJBPjGw8H zS6s85%T)A5Ku&j-`M1SWsjW|BM_M+=y)(6qEsyOlPjr!cQS)>>VV{`_Mf%1!P9*F* zC*wh2CO)6i!&v=kCqD9t`>cvc9bEZ*@it<}rUlTgul3Bm<7N14OWn0v=JU2^xd|D^ zY+3HZ;#s!aY|Y)A<*67U^Qbk=@m&Tt?bZ2{>uxNBJ)&caPPYr z4}|W(=cmuC)cgFd95FTAmt7`uYrbK1oqGfE^^w-5+1>txaLI6B5O)hHdN3D{h!JMa zM}}){UXjp{29c8RSLV-wwjrG%g#s%PCS0AknHpXih+%-J( z_Q^oLrBlC!!P(eY$&{h2e6)lQf5BV1AkcuKv37y7>;TH+9e6k&eA0~qsQkuq)N&!?;T`wT zUc0sYuVYQ|M(h%e~fMJcF$sAIJe7 zJH(*i*3Y?XmfK~az)%&#Gq~HUCVtb2804>mRiCBud-jg10n{8dD`oFPy;1s*aLJbJ3F>*@D3aiTqcasP!QCucJ1VqQ^eVNE47ogi*qV?MSjE2Ym|WN4^F*+FZjZsC|o z!Chfx8*ZK-`LO;w(qk4@Qg4y@dQT&<@;i}4leJ5~;T@T5XcyK{;VmWaqRue>b2|0y zDdImqn^~xi?#Hd4)Rwc<5Q7E^dEy`f z?$R?KR{3;1o17?jK*Ga|#Ie~Bfr~)Ec1Va7h-7N*>C9}~iY#Su)_==cn!`|xB=d0w zu>oe2F?R5Z#87#6Gr%!yu4{VZ&zsblJzY9O=meBVy?yS1QJt6K_@X)5&efNGDiJOk z>DUvw;yykuO_aT~ zJV4@P(ujm2O;M1+qP)ML$IBGS659MM;X|O60e{p`fd1D~omn^d1O(G9n*we+rQ;lD zrjRTC&uRC8%C&C3u-51@cXcSVzQZ+4h|pSp*yQ}x@l+xG1>qom!iYdscw>2u1g>6_ zRA1L%Z_zW}0Q*DUxMKzf>GBwUy&SP5I^-&mi&0r%lUIQ&H%u|+sJkvazs|G-;&fKx zm@5GH=$$gD^nV4NmEOm0$k(wWQrO>6zr+wh*0dr7NsNLFzf>-8NCi=?)85`KQ>vaB za6DB=B!~#KPMHXJRE5Voij?N`=lthS?>DUH4|Bz9HT3XNHt2tn-djJqcws^pRY@9E zc1uf(RHnaZ7^{n}G()n;yCfkk5mgg$D2?xyMjEePdfUo1NjC~9 zJXB2iJ$q7ca?7pO5IlnilY|2|44A>(CkMH&3>(hcumlI46cKx-%=7@S2F;%1QQMn_ z)E2wnDD!kV>!zp_N;9F6rH#8CXy0+E849JCOmEf?O7V4-m)YxNN|^6?Bnr);J26Wp zG>ZS^jEqg5M2kz>IvjJEcpbm!bg~SaONklH;2zCjZNJ}tLyH+~+_uBKJN|sQz3otG)kES5BZ4o%)Y8d6lk~b&oc=730{Sw%LYyO+S9Z=n zCQCzsvwc$#KW${A#<}M8+jFsK`Wr6%R((PiPV9rnnE}_ z{*Et^+cbLkJngxJ(}-QzwEE>m#p?<`;T&N`#7L7m)ZEY}QW#=7NkV1TH6`V`aIwJ` zGV@xUYKdC!bDOxGPJ{{&?N>pK;xJ8E=8=6G0vPN!vWrRniT|HEiE%*~CjFCv2 zbM7>#;Zq+s+qqkge^r_<>IEgGVe+cfrf{9RNyj|->sQC0hJq-hh-Q4X z$^n2-qrYE=Oc1%9(-~zCh7`o4QJvfy4;Ar+punTRdi?35;{#*7Ct#4i-`@?mBI&nW zk8)yXz62IHh5TAw0O@R#sBH+tT1LR@_{oLTPq^*dOg9au|9h{QWzdbDh}n`_z*{w& zSODdsv&)wMK}*hjbBlZ2=FVUUo_B*K|Cd_Fa}DUQzVm^#{uCv$#*V6v7H7kJ+>NZK z0YSm?-5iA9J(>K8A|^{*I#RQ$DBG9Z(HfqhJ6C7Ht6z5MOq zBt9kGJiVPA#&g03^Sb$I%7(X0h(V)4CBO{kF6`ibFf94NMo0+j+by)5jtMKC6%uN;~py;0g9L zbVJ%Q=xl!|Srhmy3<&w_e%!Fnq*^^{M2~1$s1S1hehq;e)3F|XZtf>^Z@Bu^2Zz z@BH@fMN!Nr?wix)=+`;)u{yqoEzsESrb*$ky1>{p*sUHk zA&uf&p{O@^$Ph6VG6y;J(Dl8kw-Ol6tWQk@M@M8OP2JHsFxX$w*Z})NC_I%`EBE*d znYS%ABlHO0zdxZUzH((!2{^fk!TQLbTQOD=>BS`C(kn`-MIupek_Q#)-ttt^qK~O3 zkG<8%d(`+ZbDTCSdvRgGceAD1h_euPoG~w6k12>~gg|*Q+Ni2+`BZgIerdsr_gBO3 zZMQCj-4KyXx$zC6T>07f=$y);yt1cIj9?9sLHLMFCCI1Z(zPZ}hmVGqGyAXKsnSY< zp87tNdPeWUGq@Qv0nA{B`xY07SQkxu;=E*TZADgfCP26tzBcG*`cozezdou*bkY@4 zrWWtPJ+LlPXU=9&4J|v1$K2-zFsfhPEaR+ENuf;ApWm2I1MK-GG2td>J0Tk4 z;cGFm^IiV1_|!I!w-zR}4hP5v9!Fsr+)*t( z3Z(gnM)9InOD02Ve09*wn41IcJ*@=VpVZSM}r@q#UR z;=-XCPWQ2`BuhSe5G-w5*XP*k2JRxD zZf;orXc4+eo8BJl+F#T9=KGe6?KT0&TC;o-8C!DVGo3xn_3U@Bx&4^;{hv_)^XKO` z#`9qlYQMS9udzU}w+1y$Z5ePD&sy9%OUl#s?9ve*^KzIqJ9eW~LNp_vE?BxI=|ni+ zq$Y|)O)OIU57qm@yH}swt#ODbMgNJ6UHDh9? zUy0?+*WX!i3{JED&lyUU1m3Zt;zk?iGvB#}*`~Ho1PnX+8(Z6Vnks}2^5Dt*bjwSs zzaz3BHN@~$$1di&{5tPCcdrfV3DdUCF#EiHOl|(Jmnh==?A%t!6J)L(w+hSFJn3FB z_CNS;=dU3^(;bx)G}uL-n;JKF{2V2RGm0p&A9MU0yS_~$Nmhl^h z-@34>PktOy;bjBd)c#`SZLq6)TQ~O@!B-kQ7bEB`@18f?=br=I7vqa3zueRQzIIE> z*KV$0(^?w0-yScTMkBAH@&qash0elfXE~;&)IP#mdfu|2YS_g!wrdi6n zzr#$P>0+Um2mEhkD8-apY3KOk^UVLSnirF(gy7$PkwjaYdez3_`_AnSW&hSv?-K=? zzSqD@2W)vEVQPERpxR>fnqW`Tf%VZSRIjv&#a@?1mmq!93VecyuCtcDs21rul!Gay z|1#`87<#yElPtmFmNI&!!apsho)2DQ#-|$zXPk+8D=LKkJ#<84CNmOnT2iYbr5U&G z7i}=@^=ELQCL=h$AGmt7n#tgBb2 zC*D-F-r+5t2PGW|Qa0`$`Pc(w{P}T8hpq#>Lw!{*=z>4M`*t%w>(%~YK+p{kK9+sq zLeQ7&Dx$6~7lQ82!H(sD^DAOO6^GA^9Y$E%EZ>*2f^+6yC$8auPF36uZ!pVqM9^I_ zMY*k5&fw~#>>AM|%wYcKqulxhfraYgf^BAkA(-r{x!EP>PFr7iKe6qnITO}65v9@> zHJ)e%D?}#drw6$;H6Tk&3N)H5GDA`aI=F*B+r#-^?GKv1sld|sESUd~SEoi(!P-j3 zjY7>9@GDT;PlvdO1=?!;X6P$aRsEwgxiG6hA>|mZ*PU(KMV${UDF?JMTVwZsI$0M+ zV@%v`SC||$Jt~tOs#MJp)!;ptO-rB-Wvxb%G?^ts38!s}vlf#m1v2$Q-{QQ=aLZ_o zYEX|k`zI|vuuD|t;3_=Viq%U0qBhJcyXPOUOm>$;3@QaxKn&pS=fNdUXhXf$WU*Ci zbEseXAc3RM^n)0z_wgA%j4Lf4UxMnggnqn7@yT!-7d%+2_@;o?iNC2n?^VSJd{dr0 ztuwAGoL(&#c!3o?UhV#&`rv?H>+q(PYg)((TExVL@nRv&Xk5(SU)_1lkAwFBKd`EMYOWdbMq22By=$X=&gXE}Jsh8ojgKP`t?e>z5Qb46%>*7L7+*zLM@ z?$BfY4LChseQD?-EyK@8X|}UJS;0v!oOobQ+ns}!z52b{%I@=sFbcBrH0N!YXzOOV z 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/cormorant-garamond-700.woff2 b/assets/fonts/cormorant-garamond-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d17b70b1133460e2ccec04a4ee93ff090725ff83 GIT binary patch literal 22004 zcmV)AK*YayPew8T0RR9109Et=4gdfE0Srh009BX(1DTls00000000000000000000 z0000Qf_@vIcpQyZ24Db%ToDKggU29(=SBfG0we>B91DgJ00bZfgJ1_B8*A7_2V&Sb z00iD|C8H5BIFG<2`uX9Jfto=%#Si{JB{zl$x`S%HgcP}8w5ZF0Vbg3iy4TfEsgHVa zN${A9bg(dW;$;7JG;wWQ`O(kahbuO$kHn9aQnDv&g;IKypJ!v}3~U?ulbpOmG^h7> zAAjOR^pg-0NPr|HKmvp)8X%|_u@)^ADo%A!S#=%lD!R4nOxV2bq+QKew{>E4raX^7 z_ImF71=m!ymQ;m7UDs6BvP8uk5A#IAO-(Hm2IH%S@cc)e2INRj|9__kB`Lsmuw<8% z0?>3o8{o*pcEfc1KXBjw);{+&*)&+5aN?t78Ab9z<1o&%VZLVV_ik+BI=SQleJY>= zQWe4yDgyBBU++x4=aj4xkmD-=ue9g5=>Z1tt7Yx)zV>gWH6(0`F~A@=pUy|>#glO} zDsTuUa)I#$_^UyknY2nB1BV2Tz5g^_*JQPVEeC+?&;f-FbKm#7f%9R~QF1gIMWg5k zN26Xa>1a~&lce~EkLOzRWX)jWdQ_5E|(JJ5K@;yWv_gf zi|T53&9$9fUiXXs;Gh0J)&J+TJ6*7VKJY5^y=1?W@t1|WQ6@m!)>?HVE-h3J7O((P z8_WFffSNQrMU2SHzpkfkx3A9^-Hv-)A~FP<#CoxnpJEEASEv!DjfFPMSa0zZr@$bp0K zbJ|8*;Dd7uzK2QLZWev=c!_DSN3lIvDyGB~*lRH1=mWqM%LR?R2$cfi>-hscK=`g{ zXf_bS0RT)o!`$0}*??Vsk|RaGeQ5HRGXQVq^RS6zHIC z2nF;l4RI#SFPIJsn*mq@>O@P3SuGpL62L%ebg|uXk%op-QaTwpM~ag|`h3~+L87@v z{O^lt9vGX!r<=agzL|8LH@wUI)lHtGTayQi+jE3Yj;>9CLwvHy8a0mm1v!pL7JCSw zGTev zj*lU8XaKcDRFOGx99Zl_dsPB^re@I8&D zF0mb$yNn^S>9DNcfxLzOrTz3FfhlGHm?ET!z(yzh>r4tNELuivv792MN~5>PA_k9} zWOUloVm;>-W>emf=&nyW{Oxbfgo(LQq~xxqTAs{n9v?{E7Yu3vBZMf0Q<=h{phko= zCT3J|qKg+#!eetr!@yF`h_(AaEixg$q_e#<&qi$PmC0RD?`vWr-(S0y*Nzl|bIL zrI5mQ5hPM9trC$+#aDJms#bG9TB{CU145ogEd*wXr&R)N;%OIOhqOAy({(P4+fBaV@K%4t3A zX`S(Ge$K0;*SwyTLY(E^WGTHZxp#gh^saNH&ieq}M=oHw{1VS~Yn07Y-@ux^V4UkG zKT~f9<6M9Gi%j>Asi9+ZAd87b0NK`X$Bl#WEb$Y>pNi;}BzgSVh%8lPs7XtmF5^R} z5ZTN?EvR3XC^!Ijj%;iKz=WfCioX`R^e6lYQhM$p9x`gNC6-xXwK3~#u+fCeAdRhnK?gIm5-=cm zrl}C3s1B)W)uU+;-7L|y8DnF*S-^m47BdqD0g)q&3L%R{vqW^uM7KgTt3@>?x^<%2 zAgYa`n-K1@>2})2V5R}rJivsxI>JPuz&B-FsHWK`RA^A4nKN`|s1l|}Q*9C&RA{C~ zQv+NexRC`yg)oP|sU~F1e#|x=*s#E0!GaA7HW(~0vn&S|EU*H*@bn1yJSq&)2AiMU zJN-;raK<0`-4@Z@Z`Z^tG_|o=?~02d|J21Nq07g%vGN;RY_-j!w%cK+J@z`}l-IoD zUGI6{S?4TXANjZsF&qUONsjcTO&U$|B4hqz%z2D?jxjP2 zIFy>MK=`aw5T&QK>{3CXOiHU(Ap{R++{64LEVEk%+8Gfg@{A7b(VWaxKc zG+oB$s-*S>X!B#<g&^fB^$p z%tojab+elD!Ti%5a;v-F9m!Dles_*Mbx(HZ3aQ)LU8_Oeg6=wv#Ty4=QVw<5n6tQr z#??o94@5u=l{C}luHEBw6}MMYxn(%r8fnl-1Uo4Tl(Wr2dQ~F?a-Xh`za@Y|^9dq0X zCq3yYr<``iGoJOF=e^)XFL~K3UcH?_x2dt;^p?ZuK1}s5dd$<_e!QISD_{G@x4!ee zAN;uOOG$mDPN?ncGvp`I*JEPO<$>QntX4x>a z;Zml?k_N{{+GNLrRs~^^BEjM_qL_e@MGB8>VU-%~^+1R3{NxY+g=0*No5(UqSf=Hr zGHivi*h*!IRmv)>mDScLYmBKnECmVcpeJ_C6N)cdyd-X!3Y4qYX0{;|p%>AT`&)Ri=cB#*zXr@6&GFMNx$=fzx8o z_#f+4vRC$Qxmj*^MUW3j8L1+*WDIE`6G;~tAREaRa)>;kscR-QQ`)xwe*n;tEL!R|E^4%BAkey_Dz2Z007f( zrhBKgq2%7wz1Iil0S16H092X|9RTdQU2XSQ?6On6)N8$&ck=-N0QNE;fy0aWHHH83 zR9I=sAcnx-1w4!nX8gZ+Ct$f{m*e+JKujzVID{gJh$$$ksFAc{75;X-1Qxr_T{p@!XKy*932G>13`d`hfhvIN`_4%noblWeVGjG ztZWiFne_0<;1S^E7nH5=7F1X1KWA*NdMz3?Y1N!8vkaJ{Prnfz=84gk`OV8wQl?_F z7ne12mJ*A1Bm0y%7&pS$7%al4Xue~e$$}bc^p{`4FjuK16!wpQ-A_zuFj)N`2LJ#& z1pq*80Kg|e;WGg0o4~he>?{xxg#3a~hwWeFMnBdqDBi9ouX4tm}2uDY^r0ck*q+T2gfoP6zMt&&RSTu7C2)B z10@3`VmRLzKZ&{A1s0UNvuQxMtP(j~h+zc!q)aSTn*uAit4oNkKn#F^&p-ittUe!( zwQd|&xiz`X+p-O8)3)~y5l0dM5k>X8?xlBLm_Ayvkg+L!-Hi1xhuADG+{GzU{zG2-D(#$Hdw9S%wqn!&{{9v($d&u8Qo=kjUd=}~Wc%`_#QpwRHkSI}O3mxSo zM4*AEEY;N1QMjZ`7Qd`SWLyjT)z&87LqY4oyB1zVN;zFAeaDHzL-J(B|-@liln4TdztA@KpOw( zuwDY7rm_|QGgccc@yTx6}J@NnE+v-G*>Y1PB7LOM0B~lO#8@pSs_3 zePacNVUZA6-I){12?arhw1KLSN{9_Gw5yAQ8VQ^!t7Rt$08y0dU?0>MMhi)9##1T^|W?n(2nN)AS&g+%> zBiELA-c}92CEl#5FB}nCWBU+o8JW$)F%zhN=2hlFsIoS(L1iXQ);6JkV|s?fjf6$Y zPCqSvrb(&fFp25CoD=9Ia+O4aS*hMDP~0#N8cdXeYc{#dn1t35`gbWEG|pX~Ixb^v zmt8T=CijmVavqJZW@aZFr)ir+0-NHWHQh^Re%=1H>5e5Lt{XZXu)_%d9xLU4s1WF` zmoq45`8OmSL`ZTcxvV{hss}UvJ-6?#M z==ZW|DH(!Ol6u3xzZo!y`P&Rzzq!xb zFX3rd)8{H@Yb(W6a0ztDjZ07e1bd3>X|AkkP8OKX5J~D z4Ki8C1B;SJigH}l!izzF$P_WmPU%gF+-U__AttQse~EwrA^O4$tvX-C(0!mxVThZ5 zBMDl=kp!fCH9HYHwbL25e>v{nSSriNdcp2U3-SHv@1o`!p}vw-TjPiJ>(89|BOyWZSo4Vwa$`ZV4C5_&dM!4)%o*DO*_@ z_slXxm3Hfj$|?7f)r_rV83&VuKEm{7xZ>)pxW0k|Y;p+@?cpQ}1*L9Ljh)1@^@Zu( z9N`oRzQ`fjy0y^H{g3Ew0sZ)&6&>3D^0PAk4|iEzx%_fF5XBrZf6|zZ;xwLU;CA>v z(h9CHD(WnbTOO|ts?8~&R&PQAbS@8;aEnqcvHFIZa1Xojiyn49fp z8FN5U|7N`}-$NFJxvA8LR+222)HN{;iLr3FG!tpD7;vYvuLA4x=2@D(C2$*wmJ>E0*ySK+3$FSt~hTZ}kw? z1AMc!D6j}nE3^K?D8O|-*ar|ffdJ9)4Og3x@*hXcZmWe`<+dKahX~Ps9YLymg&Lz+ zMYtaHSIvmtr;VUDY8HSU6;{i3j}PufN*n9;$KI=F`S?sagVU>`RC!i2zC5e20jXbf zoowLDbI}mnDzr}p9e^hAW$*KHv5bwrk;tm>cMcB=Q47hJk#f}$Na6YN*xv1orqO7N z&5lj_#9r*^F_~rq1~Y2lI3;6JdqYMy7WJRBFsQ$I5PRC|=_&3xS1(`9-2Pf_%Q}}Y zT?aOOeyEeg;69j+e(f$?EaSRnQvsvr?mrNcqM2TBm!&;_GH-uKg5_xNGCZ`IlKzi6 z`5r=%xilKP>UFNLR4NwWpuQEK7Nr1yI!rda;Ee=cV8Zec+zb}E>D6j@m&7D9N$=pT z*LQt8SA5TLh(pd5yXkt`XYKTnl0?tVPTo|-4mY|cwZEhMudp*6D%23>ixJ4m;o9^; z5p;O0r2!PT_v^>{e-H!5$}r1_of4pH=M=Yc{K&SzKslmO*QIW&SU-i5EAU5dnSRdB zuVlTTuz5rmG}}6ryaI{&T-jBf7CLBG9`dZCQ|&oeuZKw$fM82?6%+y;jGyWGis>BW zQdYtVK&flsB%bt=dJ?cwqE7&b*G}%7-j=glqHL6*9Un?K>CgAR5fb>1ZHD?L3RX8a ziO!>6R^M353W?lctd4}YQp+7L7XY*m-8%i6V(m=d!>9LH`CxD)y)-6X4mhc`=iW@y zOpMG)!nl~A`P#V?o(sXG^lA=%DD3}f#yf1uozeTtzv{->HZ^LM0*+uK(n-sJ3Y`Z3%A%Nd6YXfwH%X|%s$$&2uU z(_@NfO%^8o)x>yDwKEw*kM$&e=Ekp!Z6xy}HL5E!mrLpPCnaep*dr$WgU$?}Szl}R zB74^`BzO4KRMarJU$rq5B&31)U;0NpeiI^>8l=^y$Pym^WVXy1Hd~or`|O`aK4|JP zXZov7rThm+JE1D2TuZl=h9dq2r*J`f5&Y4TsA5v<@K;q6gR;hbLBd5$o+$Jm)HE>8 zK_JLS0nh8;Z@8{3Wh`mCZfDi|CHpycDDOpltMTELKlS#xx`brJM~3K;@J(q(Do4 z#?*@>JKhY5eT_)TOOsOKYWXSsZ7KKHTaRqY?98T?vX5nNUX;gHRzty;=px#S{!crO zH2q_gO_^nH%o=VQ%eS7V%5Q-y4@ZPU-XPg0KA7b{45KazQGL3FaxQoS9Oo7$!ic8l|H`Wvy!Lzj4pmWG`p%`PnT=v za518SV_CVF$d1>7LQiio@Hf=b>OLRyQqi_LY7L(wI=n5LhZ`z=1z!WDQYo4SYP>oF z4UWrjAhfKiYin5aQuT2qeP>A&pjS8?tz2EkBd7$~F!3E&2g>c@AIA1J z(jbM#o5*6qV{golDGwQVJ8FSRQa#uHwJ^iAtJ$_K!!`}}@hl~r{A}MAGon70xmKLe zSpJJhm_`pwjz|{L%mPd_rNI_39BAos5}8w&coJaPCf3ci&{%XrE^Q4Dbb|1;Uz-U5 zY37rIK@Uzo>Dh@N^Lx_e+=sc>6hCp(+>;IMvic#>z21jqBJL4|Jhs?z0?{@FXIEUP zXD6fRo(b}n?RIIJN~q3@d==7~8N14i^>O%FCE3_Wj|iu$hk5Mw~XRp~$y3n{LZ7 zY$`DMBs-~}%dnom%oMUC*=)oy zyey&d>TuUr58hArej&yex*^0;0_?)@Gj{`(d8In7=^!6uMzjZ=DiQ@ibE%c9eWxh| z0Aw9E!%rA?pCoMBllqrq)stIEG$y+c9S0*X<8;1b(;ja3N#pY{tKjrMBeJ+cvz?Lw zdDXjqnkf!*UV5Hami*D7bsJ&>R~Jdu|Mu^{R<8LyYVNnI4lQ9!KO4|$bALKDOHxPTdVlFjHg}&uQ z<1|r~!n0>LS98~{1+~$M;Hm0(-zzeC|3z-=v$)8NT^{3Y-895XJ8{#!VbbF~CPuTF z2M+5FCIn(?2$b5QB7K1@iLQ#<#(|{6$GxjjW^uRsw0%AkOhwJ0F^YO)QU9oaet$Ly zIyKhf5~P8ie5Aw8)epSIk|qL=NlWRM))QhQ*&+hGpsx>!4Fl!ei2Ppi7Ft2gx{P}( zFxL{+kCc_N##*pOPb!3L2(kBc4X@v|iOVp2%K5BKN?LE}wuf{lgLKLBmWMwv~7p&Hm{K=j|%%2~+1A4JpT5<$6 z$F1blNW+#(=X;A1y&!x96X=VJ5#F3mtADSCkohH(<#+eINh;)cCAQ5(KciikfKgjY zhJ;ow%YA8_4NVzZzImnd<7J^1J=A*qSfJs!$V&{qe68=h3Id?j&^Z=7C`KPokY_*Q zC2#!IZllUoYZ5Y36)E&?V#v8;l^dzuj_5eq9N)r^177I6^`J?%4bB1H|MIi9bwNO0PW>q5~imTLnu z-M%vSrG-6|JsKf}A=B}Ix&#K{{>8&jGCPS&w=yJ-2n?hBeb>nr4Uh3%B}nI@hf@5< zP+%|qR~n{I{?;B#CH73m>1`1;W(hRY9XGPs!ya~} zW>H9@=VoWKoNrQ|v%P&4Fv zzk8O0p8F83YZ8;_n5&2P&Z4CXXc+udfwpxtBi3IZ+W9cHmVe1%X?tU0zS?fInCl~V z@c!l<*;1^*5LTEo5_3ajai5ln$G69E= zMx99%wFq$31aRrt*B3o0SMZc9KS|D;L;{~9;_d19$xv?Q_FH?1+V-M0Fktulb=dFPY%*r{{VPGq zTfR;0^@DSPKBe`&3^8zc6S?~Z5Pw`!)+=F|T)(^1mt7yL-jf-AYjt-uyUdxxyHk%k zUEg=U@zkuSd)=%LzqPU9$2Q}ky~rXc!im!Ysg)f!09`LO?w{|kc%gC1%J+b|AL^u-`K%EguIYmkwkB!KMM&+ zo;{&@@M!Oe?WC+Gib7B#`!8yxyo&+~L5U4GV!i4Y-=HyYGa}HFOa`_R?t|sq-qyw{ zUzC4P;(9L%5eQU~913K?m>*J$?<;F0W_?JvXW#rY7gl@>UM_8}3D{FhIxSv>?ZPr? zHn3_VR1qxx92`zDa?NPRBo&%9)}N(HV#*1Q~^5E6gI&=k~VMEbzH z2XTq!?X(-;2BsdIzS|Zx7EKY+(aX=aF8N`N6cf>ltxSIODn;==(c0ukMzM(2x9_vC z*Rx&kM|snOYLbH^0vUgBWnESO`*H$1x3LxE0*kIahVIW3e9yP1j>Kj>g2MeF z-5J+Pp(ZvhmA8YtECT5~Ay5UloHFaBFRLH;AE;iD>LCGjp7P902MGvYQM~+(mJ`0H zh~_mm>qf~xP@VUm4;ke8Jt5#3<-9&bAT9Iw=6vE$9k_4ZeU`jg4-J_IjLLA6w5q}v z73z!ewyXNq9@U2+OF;$OF$5EfiEIkEm2u0tN7qB?0%`_cR=grzg1sb|U<2GH_g?Rn zomQsiGZp7M2hVVCN>Ob-co;h|D7F%5RH z2-L?dqH$-_c4SU1SpHPmP4(`xBu?NOG8eRDT9wF(^G&DAFTehQg#WYhJ-_MG(J`l| zPOSJ|`}w|sE$?}1J)r?LxLhim+b+`<^cV9pAr5^Qz1c@^qhC)y;Sj1o^~~f&l?vRP z1h88O0%|QeAQzAtWD|Rd1i~F3-WO1*f`6uI9h47ZN+;ygjngx7M4*^|ar$GxzE2^~ z>3KoqS;~&MsJXG@)iZVHSd1plNE=R6%ylQ|1 zR7{62067+8j&mGF-$-G`@hNE@xFDpD?4h<-ZSp5w|BCJ8Ly^!r1@IS80Mk4vV>-kC zMDp@J!cc(sI4Kh3TFwgvf6jcA#p!jB%Nj2)*jm}%zIlI6S;Hfhp^4&}hV7FT^_7xJ zk9D-7HhH|WD66JvY+;jYM_ZW}kX|4p?`fcp#9N+(1ZTk_62w{|&z%G08wrMHy{cHv zzjor6(0T9xEnd~``+>4W;zv`0o(2z`)8~YbD{Q$T(Wk)V}P{*$m<72~p3X!kTsEO$}Qn!;QA3ArQq# z5#yPF6$jtZ#Hx-ds;t2@mgtTxy6=pO!{OYpZ^=^m5r!_S$D6jKs@%D*t1vS<<^=_~ zX20ES@)b*CIVicjq#=AgT_kX-U)DBUTIJ3tn`Lsy?T~`>+|LB@X=R0lzA}%(8GRNM zZ%!#MF7y;7E2CDBx4X-=n%KrN;EVn)vb7sjAFI}{^EWP-kdj3naO7g@zC*^Xv@{PF zR(jo44Y4-yfg^7BK>~bxI)=O6nEynJs}j~}Fhl3);TBzV$%3vF9xv@lz44`JGc9GX{cc^PRNWhT1Z!0@NR+cKQZ>mZ1i_e#qoLVU>9O+(Dl5RZb)Vge* z?Bajpj7r^QaPrHnsyph}V*+vZONGzEY%|dMR|%r7kbpBqVuAHSxnm8l zCW$iBJNr^{bNiD$UD#PwG1k{n0NR@-?H-ELbYG# z6%HD~>7~Fq&_4~;d)%1-Lzl2;v4MvDXzCIyX8*;h_a-6DiQqM!S>!%2`y2EL4_xMc zsk3ODYg~ER?=pCYO|=qVrBW$H1fpxBdHo(pK)-1?s(Iv}rIoMC)St-^fi758!ih<+ znnfVx%&8(kY7v1nJjRBxOJxh%v<5pQpa$fC=_w^5kh;oi@wcvh{EuTo1tQSoX|~R~ z6cSL&qiRP2(Zq>Po z`#FR{PSZsUofq?h`wYB<2=0}!Yc+dLkdpW1hTo1+ynYXucH4Y;#KGmFv#TNs(gx;o z^O9Z!h=B|zF`UVV6rx?%OUcnzW!w4Gb5Z`Ne~Td#MU10Nd@GiVr|7`fQBjL33X9Yj zGV%sZo9F*geQ}mvl*%V&D)*gi{RY)7P(A*Ji;UW!?q50eS3WURow24cx)pXUzHyYN z{ofIpKD;h0DLnmJgaaKncW65!vB2XncZHY!phq z5ptQ}(ls3U0QsZfW+WSp{PWQh%pcj0U)_)S|G=3n-1i3tmqCAbpqtAfn%0l0Mf9Pa z$K3KaUqu|zO{D%2E{E?5o@CFZy<}8YjM;qmH0ho^UbD%pc|siVj#zt9bkF<{efgCq z(Q_X^>_3R5d0`f>Bu5>eRHU!ibtgXNkWPQ;;PM&`*2oD-)YoE#bxONgbf!WVt@``M zm6BAqC!JNvxCI#E%8XjKf7A1hc}kMK^RGV-g!bM-4QAJ26S!8i!qm^Wv8_^ zC#FPai?3E2AuhHoS{nU8_aQH00fxJ{69Et92tLa8>rC7=aTSFX&Qf~_7OxNChL#uwb2V7@ssE~YXql-bx}a_HBe(|yQQ%;N>bQ&=dqSn% z zkzwda05|7mVUE+eSMDmrUkfE=D_7b@@%ANS>C*)?m zN&{8Le@pmOy*U~&7)ZC7j_>au9|U$oE-T)W5@;Su^#?25iJ7y!SrIOGFuo|(6J<;e zD`GP~wx!S&oIcx94gD#jF+EJ0)H`Nm^7nq7?hS=v#lBXN=vJKRm6MU(b6!t2Wgh8c zJe-sydvb$z@B@p$Wi#Ware%K@~G(qODaM_w`ZsPQXS`j75IE_(rna{b47LuOG? zk~@$xHIg&v{NaC_uoa3sa^*cm^A7}4*BZ}g@8C6|i+nUlQg-4ZvFq6tbpbnt=~I)_ zG7z<%XC=({(n2dH-;(ZVqeL=0QtZ zEp{aZ$nucWFXZNuzZhyN^0eV!%E$tKWJ_BlrtLw&_#jGle8E zU61>tWs!X9`DOZ=carkg%vaP+6L^F#}`% zU)cs^S?d-@U2wV)28v3iM{LV#&W`vUXSqGEJW151SR0*QZ*{9V$z9{L)F-8-*3L>y z4G4{)>`YzDW=;4Jzou=64*ZO7VFC{T8VfuLv+XN35v?LfVfNmJ3R~vp!k9kWUvu29 z$ctGu)`GejKmoex4YJ&rr^kOz&T%ejHX_kyl)^Uuwu#)e13LD?lOIgIXS`YuZlmkR(nb1lI(jbfn+nMG6AXU&OHBm zS@jpkA7zTGjNW`@w6-NWOAm(?TqGqojHtd=t?!b&6Axc82*hHWwX~?hS(*sE>nFvL zyCONJ-D}@xFlUckGu9^J1g^7$flpkHjQq7;AsDu=Z7a*ZO={)-sDxx@85L_rli0(Y zV07eKseadLZSu=xYDrSMIM}hAE{(ttfdu~~$YTs3o4G?Len~1#>#F#YFDjN1+Ou2# zL!0DMgJpPLv^6%%=tx+-q*uMLDsI_kfo|ZVm*)k$RoG|B%~6O>N9uLm0_s@bhT&j= zB|+C1`s$Kc_18ax&fHjCj3;EY0e=wB(gcE9gZYN-uDU{r=@Bl3nlI^s2s}KVMS}$l zX0yc;G4*|P3u&waKY36Nxz@);%x`dSetxn$kg~nRC(m_z*`bS3v^GFP!Q-B?Yf8Baq^pdw~pR zve3Nm+rGz{4Bd{n>TlUFnE=np5=GSN!3(ZUSoeawXy%TeT7et2!VN5X(g7M%o*gNl zI<<5X^5j=IEh!i>x>v`7$3YZ052^gAo)NyJKDa!u`gBiheZ6mkoCnOGf(U@gyp%9 z`>NOT5rGub;{os=jcYHP$E4Q`&!nDQ8>#ru3_Q0mm=AX=;3MjFoP1cB&neCSlad(4 z-F6{{(^1TxH>Z~vXU|tWz$*lw)kf2sJCn~s7Q*J?<#-mJB>=35=aYlk6<*nj+^*N> zX4S;w{Nhludf{3-*@nR=IB$D}|K@R(D44r=bGSX&z(w>87(%naynB0#mc$$D>pgjn zL&ZS`+=x#gMM;y1NOywoyz>_7SzP(&KB8EDJ;nT?LUL3P`L`izIR^v>HnH$H%1Q8I z_ywU{w<cwdu|Mc!b3yj6HJpW za~0<*3*k5_BvxuE1V!X1g+nP9r(;idDsdJbk)oLi!`^YUz1~>>Jd;Fi$1~Y6Soq}C z+Hkd3Y>7XZtBHdHYyOdQ?|s_2{LRYbN{T; z!vI0rgTtg?L>`Dlpt2DUFJE##s^T-*%VtHfc@}de?Y2r@${lMp1 zu&;aDvoJbD8yPr z50+T#%Bo!0rI|iIL<+bdd_?Z6|0#xrciLEMaoYW>3#(|fa{K1RIAaijf*?$^Fr@4| z6@USZ-l+L?MwoJVwTD^_KI!uIwr6TvmQJnCaWWx3PwDUYPm`3fXt^nU*3wgt=A_ag znyv8_`wTimj~<*PDtn`{n&a zo_qn<8*4NpHL@H$V}R5B+CU&bMkiP!5zoE;^^4NO*$A-jSNj`1dhOEA?qgl0=1e;Z z*2!Jm1Et~J#t|B@O z4^IYZsLj}ZB^uGuI9Visw|Cw97ER1c5Q6;tY%XY} zVNq1@EvZ=tex7<`eFnklv&}@)_8Ma13N^9n!xu!-_kK0mvj|{wd7EdadNRx14qv7B z-A`5C%(%u_uiltks4xajZAmxPh6szz8E6?w^=DSNB~=UY1QQx#JbK?Ky^og4X-3t1 zAB!`-*#4n4DLKawTj;cw8|v@A)(XBlOg(d6a~a#-x5fD~jTW76f-Id(>PU#Q1!65) zb1jN5aCHM)PW1NAGp!Nl2?ggWSA3OHl`1|Psftj5bOz@Q)V;*r7=G(C)KEC(pO0(5}`US+ZF6CorK)))J0gywt4|w@OafK#FujKTRKb~ z;0)c;F6zR6p*z}7xbBL&0fUcbQZqvp_5Da5?X9bH)D?ACE_8I)^xL?iCLZDP3h0C! z1$dUQjUS6=vAM2$7_wvc8YP_ho((b{;|_l>N6=v%T*E@G9(o(29THGnyj#QBp|Sx|HL1K-#ea!9~_23;uSAQl|<+7f7@+-}vHN^qD$6Eoe2 za-tG!RCVWyn6`?Hq153qKDBicZ2m8t>M&Wol~GQ4@r7lQ87>J4s5-hqWmBy`ra%Om z>6fVBkv3YHULASSgNl zxkE+O?gW#!WLjOr5I_RfgV_KPNPcX$>b%8P-INjtWC?^c`g2FDxE;3b$+f#n<1`!c zqaE=_H*>LJ3?JvmZz93XN4Rd7EJ+x%Abb9jTmy$fiL;&AYKlHTyAS+{_@}I54=A%| zqf~vrUsyUnHKWrX^!5&?=Upl4p4C*exLA8$uaB8Bf%+?v_!M}?jfUL>?HJa=w#t4B ztM{6=odm|V<)GYsYnX_d6~E1A9weZ0C$N=#1#XSKjY*GyO2mSu{4}FPSo1&@Bb!9b zj8O|C7Ynv4E1||$1om}A;{Ur0ztQpbNPPAx5fN?blEly5DTa4m%ajL-kFrm1Ofple z*JgR*Y|aJ&Dix(M7#2hcuyVjs^@n)|L?A;r1bhJGxSp`!6V_Z`dT)9`=D@PFN^_X= zWV3;Z*P%%mTGW;m?(b}?SyX8Be3U2~dX#)!AnQbjq#s5>8fE(V6f(|FquK_1@+F`q zo7KR}4-ra%ftwy~`b4SQNJddMWJk4f)ilccJ*_;A>rG=1$5eZEE38c}nV7*c9NRs@ z*|Sp#&e{}#r`C_|Q(P2IOjjz7Z_R08;!TrW!PZ@c>0r~C=cHi!KD|bhsM*FAO#TC0 zI~!BIBAYKUKb*Sds)f~}`pZbCiXx@FMnoXB$&?mSR0mSMB5n?e>sqpblSQCa)R{nY ze6a4=iYB&OHE(36SfGUV<3$=1Z#+UaPoNR!&L2u=yGuNI^F`p5Qu)qvN|v)OryiSx zv#RKAjB!Xn+5B!%vtT;Q0TW``#Dxb&s?P0Ef%)?Bii@0@FKOAeW!9fdeW=~A7WEY4^iOwpySl~5^nFz<^ z<8;7X6$qzMUZXj#>ZXM|9E;ZuCq-A9@l1hgewnMQOo(V}^rz0-bx<>MQC*gRQ>WZx z4`BF_B+>s#?ETLxJ#jG*cgV$m1HDaI{?EQB@Ytil^2&M*#Ts3>L$gw*KiqfcMCSrc z@j{os(;qJCUX!} zR#DYjIe5b{hzyGM6c{?uHdiW7pj0!Dji)DiBY_3B>hJ0*p*pBrC!{4tU-BztBw(UDoaG2+i( zEl@oX0cv+&ca}M8tjrn?f?i+RoXWZbLzRoNl^ zu&MW}4_e+M{ZYnvPmw+`zFZVB#KrsY34z|5Ut&`YMvvaLS6-MeYdkY^-oavRr)^K!kBAw^pBjkV`kJI3f3yz1; z*8>?zkcl!FZ88dr5^+^rhIz{Yu!fET$U+)QMM;gbAPGn%e?-|-CvIq*w{_W@a1~#} z*{;7L1s`r*Zhmvdd6C?QOUtb>T9b~{wYFEJ)SFXETvz4=Xs{p$qwDp>s!*}pon4rF z3|#M>Mf+(8wz1gWS~SLzYeesi9YxF70M8rKn+Grdu9QmzRQ~_xhMrvs>p$yW#Ne_Yp3+&z z**Ohs8=Zw#vaG|t^{$1S=>y9XMqHe#B#NL@U*3G^^>+kvL6E~J7VsWUA*n*W5|6KW zDgV-+D&vrAo-E?+Wq=BH1e?AfDQN^k8tqcu22ZVA#4Cx^Q_hSRES;341l~YxxVQi4 zs<61aoarJ)12&y70sT_(s4Y||RjbbdeLUIDiR^>^T3_Ahi`&8?@be`CrCY1=#2=DOe>d{BqSEi>#g?fO?6z3O|NzWy_P{UM9XSfCa! zOK=%VRV%CGGe1M-1N0L(O*A@^>QhsbY8w;X?gqQP&Z>0O>CUDP#a9)zx|=KsiM54Q z89fd#w{Z8Lx(Zq#HydODQp5iBvT9o0M#oZuVj_|oSlCqrMNRM^Dh6W2;}I2eMWQsHFTvs}wSz+m zT$T=c;dooxSBj!BWXDi^5`9xI zEoT`IAs=QwgPp<-Mp4c=;L*`gZqes@I?$1w@w50^iIkR0czF2;Q1wa(UW_#5JpxwfP>ahiyxiO2_ ztauD}l50{S3cw$3H=&$&)62&!E%B32v3kq_H{-E4kAqgmYZK+}ql z`<v*S-aprDDD7Sdtufv$Ad?Ck8+IbG=i zk1(;nr9j)cLgz>wZVZrJ=VO4aLpU(JWF3D#7k65YWkDE#Yt_5I?lu%TAo~!5%p^)$ zFr&y=pw+)*G$#j?eu$%D&^ct!=MWXwqQ##4K(h9?uP1w!jFvN3%%bq;O%le1s~67_ z0PBt7P)hF67|!I2amEfB zE9;&itvub5Kbi|(OW-qYAJY6duLQ7HDanG$v-~_=2|Cd!K4lKZJI6|5fEnS2ih_d8 z3lICqQu|$XL*Cr>aPxw-OV_gNStl;A1FnM+mvAC3A_uI~`*V^UiQ#&)+f|ogAIzyN z*>j+$KZ1<06!H36lQ!ggmHm#OPN(o@I5i%U|Jp+?-pb4SP!GNudACD_!2rggCov9> z(0<=izkOq$?;ft`W=gi;TpXAv`p4vpPs*t5vSws7*&HR7ByUZ|A2HE!?gDj;C0jd7 zuD1tQbltlh6|?h^lj&Atmb%dA@FvELu4UaUF0^S%-!y=s6aKKvY7JGzxYC>5$$eQ> z6^9ND_D5KxWD#$u*R`!6LpdkOuhX4(xiy&@-mBQBXMNrWdJtj)g^Z(6{2*8Ur~qp^ z=U5%KMh<`|3Qh_=#z^aOmh3~BJYEGt5e#kQlH_3pQKHp9fmM_l$wy(25peZhmB}86 zBJ+f2m}{Ala6gs0AJVr7-i$2P^(Sb3u;;z4cOLUl3XexQKgYnMb$@)`9kk@Mky%2y8fgUta(6 zpx>(gbq=X+_*HEU_$}bQaan;-PN0I_kb!ot&#mot zcsn#Ky4AwtVTTFWrxTbAB^-nC3`PQ611@C5(;4wFL-uHL3tgP#d+=m|bnBV|v*Nj7 z0+SwxWy>DTfP^tpv5#Uxb={hSHF+R@P04NyWF7eqao!pb+{QU)`hoO3ep^7X(078S znV9L-d7t*!xptmA)AixHb+Sa?7`YB^k7M5SCP3d8CygQ|0_jCV4dv3XM-jAQPWm~B z%_mx}&mFl*v|#h#bF$_k3VIciqVh)3pdMV)i3S_XB}HB)FmHyNBXh4~^ACzgAq|%| zh=%ki0s-GSnwC2G3ryGpsy(;V*6y05>S*AjK3#-dwKNA%?$EI$2#@EIOeV>N@j!i` zq-9gRUJsZ3-Q_RYkuHa24q%st&3Q1PQTTH?HFW1rNok6pLt8xA5W$4jc(9;N@i|U} z7nqq<@BZAFE@ou!#aJ7_f%%4Q6n*Oc4CXHV&TRVLY`SAI-!=jJ zbRw+;KgBi&1^fo6YPOX>DklviH;jU|EX(bqj}cZ)V{>RVrIen0OLuaHyK}ZTKrO*n zP^p7>5!FIjzc7^kaLU87OrG8WdHTvrFTRk`TMn|-)Kw*`^LXh8231$NlD0rHuVXwxTBYjnHfr*-&!xM5@4C(Emw3&IsTUGpVgi%r9yHLImr zz~d=SQX^a~xZL`%r_C^BlG>e>0iN zU|31cAZJixVKCD)`CGueOsS+thh3Nb@nNntFDWTIW}W%jp6b~iQll+-BZ;=S*pz+z0hQp1 z4>vo=_icD<#D!|^alKJ-zXPm@?QK=i(|#l{|L4` ziIT2fll(poCX!RR86suKp_OuURP}J6rPdw8Ill0v5+05h0pmR}N3WOgH9@Q2GpEm! z6`GyvS`sSuFIea+NhpZifT2t>wN;Z`I_4`}T+vX!?XlwO@O+Q2E5nuC*pT8}oz9NQ zX;D%I?-IIcZ75i0i1X?#-aMc6mv3%;sw!%0uX1PE6AWh0 z?)S60mbNW7yGl)vg}w)fK&lVEUwT;VjrUk)CBOIG`$^TAfdca~jbbqB)W21K9W=Jh zYW&DKxX}!W$E7hU-UmELfxB=R$_C$btxDx?upf zm*vha1sf^$j22&}&3cGQ8-grMpbZ{UiBD^EZ|={Y|3^fuj`hS?V$A6iwFg-9K`hAE zW%6t*owTdSo(ORWRc5 zbh}gi9rHYS^;I<DGX5Eh5syUX~>jx^m zOXm9W3p;$4-au*g%0;>PlS4Gv%rNE|O8O((R6oce3uc2%fUz*nv)0IKil>Aafn@^X z;b~?fH%fVPw=Oq1JMi>AA~s~^TrLqe0>v^GL?txHf+DeyGaC7#=zBRNU=b(;7=g+D z6}=={z!4=nApvE{k?0goyA)9c3V~24IV>k&76<^0z(jW_l%1t-3m6PR%d7ZG#_xPc zz?r2Ofr*dMDMt@{%z^}5wvTaZdBw597o(3*5XR;;F(Cm(33SRC%7W#9z!ZefKpkK00tTDWlsg8*a>Wn%v;c;6*L7*8LqLP(}g}(}L0++2{ zK9Z2|NrAyTr_2~oCy`%A@ zbi*KzzF{&lskvUjossK~(dfrmb6KB%Do4OZh0f-uEcEt{x<-35ruQp!Ek+YdXkik! zX8bHkymsKRNUKliHMPnap_A%2N7vQQ;FnC!_jd_Gs`ccCN)S}AVLAHwJW9PkM=k0; zzWW>Ro#FT3>AUy)-B^C_{kAp!|MI&{Klzi+iZ7|Gj1fvUmL>)c^S<8Aj(Jd`A@xgj zUi+KxELknQ5x)2121oeK3z+^%`wsuZK>qm$1kTX#p}+bWBqg38fmQyHWA{wT&1psB zqKA0dqXnzykdK3{K$;wjG>#`(T;vl@XHUUyJ~?Hs{#x61AJg^djY z*M65mR4jX3+aU7y9^4Paey*m|sxN;xSKpvlU;A70uVkV>^ybw_9D7FrieFw33rMdv z16Kzu>bEe*0IP4TxoZL#Zux&SKltY4#{htCeb}!|H#cz7z6CV&6#&4s5C1*^09?;c zw*^O=Pael$XdpBBe{fe)I$ZLfYYzs0<2vnE^}Ye%tNO>RJmoR(x|dx4nFv5N4rhVdf7d=59^>g1O$!!f2|C)En7*Mb$Gg}R{d z*ay-L^8uP+GBph7!eKiWlG1Ikna?+5dgAm&0LA!JBcalqOaULN3*ew(1}~VmUM0{1 z6mx~~h!*RkFVnfJc9LLrlz{3!0k~l3S{%Dd=`8ah7JjJzZtOSGr4Z-y>%aQXzFf3Q zM1F!UuWyNtBr8bO9kN1lBlhWlU2LON#pgi0F-xh8jwF$U~097xsmkJwH zw3Aeey+U$ky2T1pauy9OBjd?E3VE_JYGMTQea3P<3rK0r!d(E}0N6JGd;@^L0EfZ* zh449j_?)OS*cfLBeE){#a7cT_>t8=lRHraC)omKl@(6cHU6zXNRJ6LzzAT~jEdZRx5T>4=_~9|fioYWD@0Y%=Md9Ut^|ZpL1cUpb@JZ?dKu;}PPKt= z`$kg@!I~HVfCIq$+?Xf_=7#9rpBwSHFgGqf{@fI@JjV@{xoUoM^qFr!r*<8NkZdfh z97v@%pp`&d2J{w|CbOX;%y^lzORE->*RZBLu+$(`8@209?679>ZudEQCGcxX(k7}? zS~AU{rUy}8J2oD}g32OPrF$t%v-pVW(cDDwl32tIk*Z9d3I$S$ydU~F@Vl#?Oasfc Xj)M>(B#*%LW{_`R>i=ii000008Dd@f literal 0 HcmV?d00001 diff --git a/blocks/blocks.yaml b/blocks/blocks.yaml index fea7dd8..77ca398 100644 --- a/blocks/blocks.yaml +++ b/blocks/blocks.yaml @@ -1,8 +1,10 @@ -# Art Deco theme block definitions (codeless .bnp, WO-WZ-021). -# Keys are fully qualified (art-deco:) because the codeless loader -# registers definitions verbatim — there is no PluginBlockRegistry prefixing -# in the codeless path (unlike the wasm/templ path). The qualified keys match -# the hardcoded data-block attributes and the master_pages.json references. +# Art Deco theme block definitions (codeless .bnp, WO-WZ-021 / WO-TF-011). +# Only TRUE persona furniture remains as theme blocks. Everything that +# duplicated a builtin (footer, hero/marquee, gallery, divider, pull-quote) +# is now a template OVERRIDE of the builtin key (templates/overrides/art-deco/). +# Keys are fully qualified (art-deco:) — the codeless loader registers +# definitions verbatim; the qualified keys match the data-block attributes, +# master_pages.json and seed references. blocks: - key: art-deco:reservation title: Reservation Strip @@ -12,37 +14,19 @@ blocks: template: reservation.ninjatpl - key: art-deco:menu title: Tasting Menu - description: Symmetric two-column menu card listing courses with description and price. + description: Symmetric menu card listing courses with tasting note and price. category: content schema: menu.schema.json template: menu.ninjatpl - - key: art-deco:gallery_fan - title: Fan Gallery - description: Mirrored gallery framed by sunburst — collapses to single column under 640px. + - key: art-deco:private_dining + title: Private Dining + description: Private dining room showcase — framed image with room details and an enquiry CTA. category: content - schema: gallery_fan.schema.json - template: gallery_fan.ninjatpl - - key: art-deco:divider_fan - title: Fan Divider - description: Pure-CSS gold geometric divider — sunburst, scallop or ziggurat. - category: layout - schema: divider_fan.schema.json - template: divider_fan.ninjatpl - - key: art-deco:footer - title: Footer - description: Centered Art Deco footer with gold rule, address, reservations email and optional social row. - category: layout - schema: footer.schema.json - template: footer.ninjatpl - - key: art-deco:marquee_hero - title: Marquee Hero - description: Wide hero with stepped ziggurat frame and sunburst overlay. + schema: private_dining.schema.json + template: private_dining.ninjatpl + - key: art-deco:chef_signature + title: Chef's Signature + description: Centred signature-dish feature with a chef's note between sunburst crests. category: content - schema: marquee_hero.schema.json - template: marquee_hero.ninjatpl - - key: art-deco:press_quote - title: Press Quote - description: Italic Cormorant pull-quote between fan dividers, optional star rating. - category: content - schema: press_quote.schema.json - template: press_quote.ninjatpl + schema: chef_signature.schema.json + template: chef_signature.ninjatpl diff --git a/blocks/chef_signature.ninjatpl b/blocks/chef_signature.ninjatpl new file mode 100644 index 0000000..2b74741 --- /dev/null +++ b/blocks/chef_signature.ninjatpl @@ -0,0 +1,11 @@ +{# chef_signature persona block — centred signature-dish feature with sunburst crests. Media via {% img %}. #} +
+
+ {% if eyebrow %}
{{ eyebrow }}
{% endif %} + {% if image %}
{% img image alt=dish class="w-full h-auto object-cover" %}
{% endif %} + + {% if dish %}

{{ dish }}

{% endif %} + {% if note %}
{{ note|safe }}
{% endif %} + {% if chef %}

{{ chef }}

{% endif %} +
+
diff --git a/blocks/chef_signature.schema.json b/blocks/chef_signature.schema.json new file mode 100644 index 0000000..c19a6d9 --- /dev/null +++ b/blocks/chef_signature.schema.json @@ -0,0 +1,39 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Chef's Signature", + "description": "Centred signature-dish feature with a chef's note between sunburst crests.", + "type": "object", + "properties": { + "eyebrow": { + "type": "string", + "title": "Eyebrow", + "x-editor": "text", + "default": "Chef's signature" + }, + "dish": { + "type": "string", + "title": "Dish name", + "x-editor": "text", + "default": "" + }, + "note": { + "type": "string", + "title": "Chef's note", + "description": "A short tasting note or story about the dish.", + "x-editor": "richtext", + "default": "" + }, + "chef": { + "type": "string", + "title": "Chef name", + "x-editor": "text", + "default": "" + }, + "image": { + "type": "string", + "title": "Dish image", + "x-editor": "media", + "default": "" + } + } +} diff --git a/blocks/divider_fan.ninjatpl b/blocks/divider_fan.ninjatpl deleted file mode 100644 index 7ef1b92..0000000 --- a/blocks/divider_fan.ninjatpl +++ /dev/null @@ -1 +0,0 @@ -{% if variant == "scallop" %}{% elif variant == "ziggurat" %}{% else %}{% endif %} diff --git a/blocks/divider_fan.schema.json b/blocks/divider_fan.schema.json deleted file mode 100644 index 1ba530b..0000000 --- a/blocks/divider_fan.schema.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Fan Divider", - "description": "Pure-CSS geometric gold divider — sunburst, scallop or ziggurat.", - "type": "object", - "properties": { - "variant": { - "type": "string", - "title": "Variant", - "description": "Choose the divider motif.", - "x-editor": "select", - "default": "sunburst", - "enum": ["sunburst", "scallop", "ziggurat"] - } - } -} diff --git a/blocks/footer.ninjatpl b/blocks/footer.ninjatpl deleted file mode 100644 index 31898e5..0000000 --- a/blocks/footer.ninjatpl +++ /dev/null @@ -1,10 +0,0 @@ -
diff --git a/blocks/footer.schema.json b/blocks/footer.schema.json deleted file mode 100644 index 2ad2443..0000000 --- a/blocks/footer.schema.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Footer", - "description": "Centered Art Deco footer with gold rule, address, reservations email and optional social row.", - "type": "object", - "properties": { - "address": { - "type": "string", - "title": "Address", - "description": "Multi-line postal address.", - "x-editor": "textarea", - "default": "" - }, - "reservationsEmail": { - "type": "string", - "title": "Reservations email", - "description": "Public email shown in the footer for reservations enquiries.", - "x-editor": "text", - "default": "" - }, - "showSocial": { - "type": "string", - "title": "Show social row", - "description": "Whether to render the social-icon row.", - "x-editor": "select", - "default": "true", - "enum": ["true", "false"] - }, - "menuName": { - "type": "string", - "title": "Footer menu", - "description": "Name of the menu to render in the footer.", - "x-editor": "menu-select", - "default": "" - } - } -} diff --git a/blocks/gallery_fan.ninjatpl b/blocks/gallery_fan.ninjatpl deleted file mode 100644 index 255b2cd..0000000 --- a/blocks/gallery_fan.ninjatpl +++ /dev/null @@ -1,12 +0,0 @@ -
-
-
- -
- {% if not images %}
Add images to populate the fan gallery.
{% endif %} - {% for img in images %}
{% if img.src %}{{ img.caption }}{% else %}{% endif %}{% if img.caption %}
{{ img.caption }}
{% endif %}
{% endfor %} -
- -
-
-
diff --git a/blocks/gallery_fan.schema.json b/blocks/gallery_fan.schema.json deleted file mode 100644 index 25a2678..0000000 --- a/blocks/gallery_fan.schema.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Fan Gallery", - "description": "Mirrored gallery framed by sunburst rays; collapses to single column under 640px.", - "type": "object", - "properties": { - "images": { - "type": "array", - "title": "Images", - "description": "Images to mirror across the fan.", - "x-editor": "array", - "default": [], - "items": { - "type": "object", - "properties": { - "src": { - "type": "string", - "title": "Image", - "x-editor": "media" - }, - "caption": { - "type": "string", - "title": "Caption", - "x-editor": "text" - } - } - } - }, - "columns": { - "type": "integer", - "title": "Columns", - "description": "Columns on desktop (2, 3 or 4).", - "x-editor": "select", - "default": 3, - "enum": [2, 3, 4] - } - } -} diff --git a/blocks/marquee_hero.ninjatpl b/blocks/marquee_hero.ninjatpl deleted file mode 100644 index f471353..0000000 --- a/blocks/marquee_hero.ninjatpl +++ /dev/null @@ -1,12 +0,0 @@ -
- {% if image %}{% endif %} - -
-
- {% if eyebrow %}

{{ eyebrow }}

{% endif %} - {% if title %}

{{ title }}

{% endif %} - {% if subtitle %}
{{ subtitle|safe }}
{% endif %} - {% if ctaLabel and ctaHref %}{{ ctaLabel }}{% endif %} -
-
-
diff --git a/blocks/marquee_hero.schema.json b/blocks/marquee_hero.schema.json deleted file mode 100644 index b84c477..0000000 --- a/blocks/marquee_hero.schema.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Marquee Hero", - "description": "Wide hero with stepped ziggurat frame and sunburst overlay.", - "type": "object", - "properties": { - "eyebrow": { - "type": "string", - "title": "Eyebrow", - "description": "Small caps line above the title.", - "x-editor": "text", - "default": "" - }, - "title": { - "type": "string", - "title": "Title", - "description": "Display headline in Italiana caps.", - "x-editor": "text", - "default": "" - }, - "subtitle": { - "type": "string", - "title": "Subtitle", - "description": "Long-form supporting copy (rich text).", - "x-editor": "richtext", - "default": "" - }, - "ctaLabel": { - "type": "string", - "title": "CTA label", - "x-editor": "text", - "default": "" - }, - "ctaHref": { - "type": "string", - "title": "CTA URL", - "x-editor": "link", - "default": "" - }, - "image": { - "type": "string", - "title": "Background image", - "x-editor": "media", - "default": "" - } - } -} diff --git a/blocks/press_quote.ninjatpl b/blocks/press_quote.ninjatpl deleted file mode 100644 index c087de3..0000000 --- a/blocks/press_quote.ninjatpl +++ /dev/null @@ -1,9 +0,0 @@ -
-
- -
{% if quote %}{{ quote|safe }}{% else %}Add a press quote to populate this block.{% endif %}
- {% if stars|integer > 0 %}
{% if stars|integer >= 1 %}{% else %}{% endif %}{% if stars|integer >= 2 %}{% else %}{% endif %}{% if stars|integer >= 3 %}{% else %}{% endif %}{% if stars|integer >= 4 %}{% else %}{% endif %}{% if stars|integer >= 5 %}{% else %}{% endif %}
{% endif %} - {% if source %}

{{ source }}

{% endif %} - -
-
diff --git a/blocks/press_quote.schema.json b/blocks/press_quote.schema.json deleted file mode 100644 index 80135c3..0000000 --- a/blocks/press_quote.schema.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Press Quote", - "description": "Italic Cormorant pull-quote between fan dividers.", - "type": "object", - "properties": { - "quote": { - "type": "string", - "title": "Quote", - "description": "The press quotation (rich text).", - "x-editor": "richtext", - "default": "" - }, - "source": { - "type": "string", - "title": "Source", - "description": "Attribution line — e.g. 'The Daily, March 2024'.", - "x-editor": "text", - "default": "" - }, - "stars": { - "type": "integer", - "title": "Stars", - "description": "Filled-star count, clamped to 0–5.", - "x-editor": "number", - "default": 0, - "minimum": 0, - "maximum": 5 - } - } -} diff --git a/blocks/private_dining.ninjatpl b/blocks/private_dining.ninjatpl new file mode 100644 index 0000000..b1c5e24 --- /dev/null +++ b/blocks/private_dining.ninjatpl @@ -0,0 +1,15 @@ +{# private_dining persona block — framed room image + gilded details panel. Media via {% img %}. #} +
+
+
+ {% if image %}
{% img image alt=title class="w-full h-auto object-cover" %}
{% endif %} +
+
+ {% if eyebrow %}
{{ eyebrow }}
{% endif %} + {% if title %}

{{ title }}

{% endif %} + {% if description %}
{{ description|safe }}
{% endif %} + {% if seats or minimum %}
{% if seats %}
Capacity
{{ seats }}
{% endif %}{% if minimum %}
Minimum
{{ minimum }}
{% endif %}
{% endif %} + {% if enquireUrl %}{{ enquireLabel|default:"Enquire" }}{% endif %} +
+
+
diff --git a/blocks/private_dining.schema.json b/blocks/private_dining.schema.json new file mode 100644 index 0000000..6f06df8 --- /dev/null +++ b/blocks/private_dining.schema.json @@ -0,0 +1,67 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Private Dining", + "description": "Private dining room showcase — framed image with room details and an enquiry CTA.", + "type": "object", + "properties": { + "eyebrow": { + "type": "string", + "title": "Eyebrow", + "description": "Small caps label above the heading.", + "x-editor": "text", + "default": "Private dining" + }, + "title": { + "type": "string", + "title": "Room name", + "x-editor": "text", + "default": "" + }, + "description": { + "type": "string", + "title": "Description", + "description": "Room description and what the experience includes.", + "x-editor": "richtext", + "default": "" + }, + "image": { + "type": "string", + "title": "Room image", + "x-editor": "media", + "default": "" + }, + "seats": { + "type": "string", + "title": "Seats", + "description": "e.g. 'Seats 2 to 14'.", + "x-editor": "text", + "default": "" + }, + "minimum": { + "type": "string", + "title": "Minimum spend", + "description": "e.g. 'From $2,400'.", + "x-editor": "text", + "default": "" + }, + "enquireLabel": { + "type": "string", + "title": "Enquire label", + "x-editor": "text", + "default": "Enquire" + }, + "enquireUrl": { + "type": "string", + "title": "Enquire URL", + "x-editor": "link", + "default": "" + }, + "mediaPosition": { + "type": "string", + "title": "Image side", + "enum": ["left", "right"], + "x-editor": "select", + "default": "left" + } + } +} diff --git a/fonts.json b/fonts.json index fe51488..68378a4 100644 --- a/fonts.json +++ b/fonts.json @@ -1 +1,20 @@ -[] +[ + { + "name": "Cinzel", + "family": "Cinzel", + "variants": [ + { "weight": "400", "style": "normal", "file": "fonts/cinzel-400.woff2" }, + { "weight": "700", "style": "normal", "file": "fonts/cinzel-700.woff2" } + ] + }, + { + "name": "Cormorant Garamond", + "family": "Cormorant Garamond", + "variants": [ + { "weight": "400", "style": "normal", "file": "fonts/cormorant-garamond-400.woff2" }, + { "weight": "400", "style": "italic", "file": "fonts/cormorant-garamond-400-italic.woff2" }, + { "weight": "600", "style": "normal", "file": "fonts/cormorant-garamond-600.woff2" }, + { "weight": "700", "style": "normal", "file": "fonts/cormorant-garamond-700.woff2" } + ] + } +] diff --git a/manifest.yaml b/manifest.yaml index 340dbdb..97c3db4 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -30,12 +30,79 @@ page_templates: title: Grand Ballroom description: "Edge-to-edge gallery layout for venues and lookbooks." slots: [header, main, footer] + - system: art-deco + key: blog-index + title: Editorial Index + description: "Blog index with gilded masthead, featured and post-grid slots." + slots: [header, featured, main, footer] + - system: art-deco + key: contact + title: Reservations + description: "Contact layout with optional aside for hours and location." + slots: [header, main, aside, footer] + - system: art-deco + key: auth + title: Members + description: "Centred auth shell with wordmark and sunburst crest." + slots: [main, footer] template_overrides: + # Chrome + - { template: art-deco, block: navbar } + - { template: art-deco, block: footer } + - { template: art-deco, block: utility-bar } + - { template: art-deco, block: announcement-bar } + # Marketing + - { template: art-deco, block: hero } + - { template: art-deco, block: feature-grid } + - { template: art-deco, block: rich-section } + - { template: art-deco, block: stats } + - { template: art-deco, block: testimonial } + - { template: art-deco, block: logo-strip } + - { template: art-deco, block: pricing } + - { template: art-deco, block: team } + - { template: art-deco, block: faq } + - { template: art-deco, block: timeline } + - { template: art-deco, block: cta } + - { template: art-deco, block: countdown } + # Primitives - { template: art-deco, block: heading } - { template: art-deco, block: text } - - { template: art-deco, block: button } + - { template: art-deco, block: rich-text } - { template: art-deco, block: image } + - { template: art-deco, block: quote } + - { template: art-deco, block: divider } + - { template: art-deco, block: button } + - { template: art-deco, block: card } + - { template: art-deco, block: gallery } + - { template: art-deco, block: video-embed } + - { template: art-deco, block: audio-embed } + # Commerce / local + - { template: art-deco, block: menu-list } + - { template: art-deco, block: event-list } + - { template: art-deco, block: contact-form } + - { template: art-deco, block: contact-card } + - { template: art-deco, block: hours-location } + - { template: art-deco, block: social-links } + # Blog family + - { template: art-deco, block: blog-hero } + - { template: art-deco, block: featured-posts } + - { template: art-deco, block: related-posts } + - { template: art-deco, block: popular-posts } + - { template: art-deco, block: category-list } + - { template: art-deco, block: post-hero } + - { template: art-deco, block: post-metadata } + - { template: art-deco, block: author-bio } + - { template: art-deco, block: author-bio-hero } + - { template: art-deco, block: newsletter-signup } + - { template: art-deco, block: breadcrumbs } + - { template: art-deco, block: sidebar-nav } + # Auth surface + - { template: art-deco, block: auth-form } + - { template: art-deco, block: password-reset-form } + - { template: art-deco, block: auth-status } + # System + - { template: art-deco, block: page-suggestions } email_wrappers: - art-deco diff --git a/master_pages.json b/master_pages.json index 6d64ed4..4713d0c 100644 --- a/master_pages.json +++ b/master_pages.json @@ -2,12 +2,12 @@ { "key": "art-deco:default-master", "title": "Art Deco Default Master", - "page_templates": ["default", "article"], + "page_templates": ["default", "article", "blog-index", "contact"], "blocks": [ - { "block_key": "navbar", "title": "Brass Navigation", "content": { "menuName": "main" }, "slot": "header", "sort_order": 0 }, - { "block_key": "art-deco:divider_fan", "title": "Header Fan Divider", "content": { "variant": "sunburst" }, "slot": "header", "sort_order": 1 }, + { "block_key": "navbar", "title": "Gilded Navigation", "content": { "menuName": "main", "logoType": "text", "logoText": { "text": "Maison Doré" } }, "slot": "header", "sort_order": 0 }, + { "block_key": "divider", "title": "Header Fan Divider", "content": { "variant": "ornament", "icon": "lucide:diamond" }, "slot": "header", "sort_order": 1 }, { "block_key": "slot", "title": "Main Content", "content": { "slotName": "main", "placeholder": "Page content" }, "slot": "main", "sort_order": 0 }, - { "block_key": "art-deco:footer", "title": "Site Footer", "content": { "address": "", "reservationsEmail": "", "showSocial": "true" }, "slot": "footer", "sort_order": 0 } + { "block_key": "footer", "title": "Site Footer", "content": { "layout": "centered", "companyName": "Maison Doré", "tagline": "A supper club in the grand manner." }, "slot": "footer", "sort_order": 0 } ] }, { @@ -15,11 +15,11 @@ "title": "Art Deco Marquee Master", "page_templates": ["landing", "full-width"], "blocks": [ - { "block_key": "navbar", "title": "Brass Navigation", "content": { "menuName": "main" }, "slot": "marquee", "sort_order": 0 }, - { "block_key": "art-deco:reservation", "title": "Reservation Strip", "content": { "phone": "", "openTable": "" }, "slot": "marquee", "sort_order": 1 }, + { "block_key": "navbar", "title": "Gilded Navigation", "content": { "menuName": "main", "logoType": "text", "logoText": { "text": "Maison Doré" } }, "slot": "marquee", "sort_order": 0 }, + { "block_key": "art-deco:reservation", "title": "Reservation Strip", "content": { "phone": "", "openTable": "", "hours": [] }, "slot": "marquee", "sort_order": 1 }, { "block_key": "slot", "title": "Main Content", "content": { "slotName": "main" }, "slot": "main", "sort_order": 0 }, - { "block_key": "art-deco:divider_fan", "title": "CTA Fan Divider", "content": { "variant": "scallop" }, "slot": "cta", "sort_order": 0 }, - { "block_key": "art-deco:footer", "title": "Site Footer", "content": { "showSocial": "true" }, "slot": "footer", "sort_order": 0 } + { "block_key": "divider", "title": "CTA Fan Divider", "content": { "variant": "ornament", "icon": "lucide:diamond" }, "slot": "cta", "sort_order": 0 }, + { "block_key": "footer", "title": "Site Footer", "content": { "layout": "centered", "companyName": "Maison Doré", "tagline": "A supper club in the grand manner." }, "slot": "footer", "sort_order": 0 } ] } ] diff --git a/plugin.mod b/plugin.mod index 236b79f..332474f 100644 --- a/plugin.mod +++ b/plugin.mod @@ -7,3 +7,4 @@ description = "Luxury Art Deco theme with champagne gold gradients, jet black, i kind = "theme" categories = ["templates"] tags = ["luxury", "gold", "hospitality", "hotel", "wedding", "jewellery", "vintage", "glam", "fine-dining"] +required_icon_packs = ["lucide"] diff --git a/presets.json b/presets.json index 51f6d84..78943c3 100644 --- a/presets.json +++ b/presets.json @@ -52,9 +52,9 @@ { "id": "ivory-rose", "name": "Ivory & Rose Gold", - "description": "Soft ivory with rose-gold flourishes for weddings and jewellers.", + "description": "Soft ivory by day, warm ember by night, with rose-gold flourishes for weddings and jewellers.", "theme": { - "mode": "light", + "mode": "both", "lightColors": { "background": "36 40% 97%", "foreground": "20 15% 14%", @@ -75,15 +75,57 @@ "border": "25 30% 82%", "input": "25 25% 86%", "ring": "18 55% 58%" + }, + "darkColors": { + "background": "20 18% 8%", + "foreground": "30 30% 92%", + "card": "20 18% 12%", + "cardForeground": "30 30% 92%", + "popover": "20 18% 12%", + "popoverForeground": "30 30% 92%", + "primary": "18 60% 62%", + "primaryForeground": "20 20% 8%", + "secondary": "20 15% 16%", + "secondaryForeground": "30 25% 88%", + "muted": "20 12% 14%", + "mutedForeground": "25 15% 62%", + "accent": "15 62% 62%", + "accentForeground": "20 20% 8%", + "destructive": "0 72% 52%", + "destructiveForeground": "30 30% 94%", + "border": "20 20% 24%", + "input": "20 18% 20%", + "ring": "18 60% 62%" } } }, { "id": "velvet-onyx", "name": "Velvet Onyx", - "description": "Deep velvet onyx with gold and rose stage-lights for theatre and after-dark dining.", + "description": "Velvet-tinted ivory by day, deep onyx and gold stage-light by night, for theatre and after-dark dining.", "theme": { - "mode": "dark", + "mode": "both", + "lightColors": { + "background": "280 15% 96%", + "foreground": "260 20% 12%", + "card": "280 12% 99%", + "cardForeground": "260 20% 12%", + "popover": "280 12% 99%", + "popoverForeground": "260 20% 12%", + "primary": "42 60% 48%", + "primaryForeground": "280 20% 8%", + "secondary": "280 15% 92%", + "secondaryForeground": "260 20% 12%", + "muted": "280 12% 93%", + "mutedForeground": "260 12% 40%", + "accent": "320 35% 52%", + "accentForeground": "280 20% 96%", + "destructive": "0 70% 45%", + "destructiveForeground": "280 15% 96%", + "border": "280 15% 82%", + "input": "280 12% 86%", + "ring": "42 60% 48%" + }, "darkColors": { "background": "260 20% 6%", "foreground": "42 40% 92%", @@ -106,5 +148,55 @@ "ring": "42 70% 60%" } } + }, + { + "id": "emerald-gilt", + "name": "Emerald & Gilt", + "description": "Deco emerald and gilt — parchment and jade by day, emerald lacquer and gold by night.", + "theme": { + "mode": "both", + "lightColors": { + "background": "45 35% 95%", + "foreground": "160 25% 12%", + "card": "45 30% 98%", + "cardForeground": "160 25% 12%", + "popover": "45 30% 98%", + "popoverForeground": "160 25% 12%", + "primary": "42 55% 48%", + "primaryForeground": "160 25% 8%", + "secondary": "150 15% 88%", + "secondaryForeground": "160 25% 12%", + "muted": "150 12% 91%", + "mutedForeground": "160 12% 38%", + "accent": "160 40% 30%", + "accentForeground": "45 35% 95%", + "destructive": "0 70% 45%", + "destructiveForeground": "45 35% 95%", + "border": "150 20% 78%", + "input": "150 18% 83%", + "ring": "42 55% 48%" + }, + "darkColors": { + "background": "162 25% 6%", + "foreground": "45 35% 92%", + "card": "162 22% 9%", + "cardForeground": "45 35% 92%", + "popover": "162 22% 9%", + "popoverForeground": "45 35% 92%", + "primary": "42 68% 58%", + "primaryForeground": "162 25% 8%", + "secondary": "162 18% 13%", + "secondaryForeground": "45 30% 88%", + "muted": "162 15% 11%", + "mutedForeground": "45 15% 62%", + "accent": "158 45% 45%", + "accentForeground": "162 25% 6%", + "destructive": "0 72% 52%", + "destructiveForeground": "45 35% 95%", + "border": "162 20% 20%", + "input": "162 18% 16%", + "ring": "42 68% 58%" + } + } } ] diff --git a/seed/seed.json b/seed/seed.json new file mode 100644 index 0000000..19f63d3 --- /dev/null +++ b/seed/seed.json @@ -0,0 +1,200 @@ +{ + "demo": true, + "settings": { + "merge": { + "companyName": "Maison Doré", + "tagline": "A supper club in the grand manner." + } + }, + "data_tables": [ + { + "key": "contact_submissions", + "name": "Reservation Enquiries", + "description": "Seeded contact-form submissions for the Maison Doré demo. A submission becomes a row here and emails the site admins.", + "columns": [ + { "key": "name", "label": "Name", "type": "text", "required": true }, + { "key": "email", "label": "Email", "type": "email", "required": true }, + { "key": "party", "label": "Party size", "type": "text", "required": false }, + { "key": "message", "label": "Message", "type": "text", "required": true } + ] + } + ], + "pages": [ + { + "slug": "/", + "title": "Maison Doré", + "template_key": "landing", + "blocks": [ + { + "block_key": "hero", + "title": "Hero", + "slot": "main", + "sort_order": 1, + "content": { + "template": "centered", + "eyebrow": "Established 1926", + "headline": "Maison Doré", + "subheadline": "A supper club in the grand manner.", + "description": "Dinner and late suppers, served under gilded ceilings. A short tasting menu, a long cellar, and a room built for the evening.", + "ctaPrimary": { "text": "Reserve a table", "url": "/contact" }, + "ctaSecondary": { "text": "Read the menu", "url": "#tasting" } + } + }, + { + "block_key": "art-deco:chef_signature", + "title": "Chef's Signature", + "slot": "main", + "sort_order": 2, + "content": { + "eyebrow": "Chef's signature", + "dish": "Gold-leaf oyster, champagne mignonette", + "note": "The dish that opened the room in 1926. We still serve it the same way, on ice, one at a time.", + "chef": "Elise Marchand, Head Chef" + } + }, + { + "block_key": "art-deco:menu", + "title": "Tasting Menu", + "slot": "main", + "sort_order": 3, + "content": { + "title": "Chef's Tasting", + "courses": [ + { "name": "Oysters, champagne mignonette", "description": "Half a dozen, on ice.", "price": "$32" }, + { "name": "Consommé doré", "description": "Clarified beef broth, tarragon, gold leaf.", "price": "$24" }, + { "name": "Turbot, beurre blanc", "description": "Line-caught, roasted on the bone.", "price": "$58" }, + { "name": "Crown of lamb", "description": "Herbs, salt-baked roots, jus.", "price": "$62" }, + { "name": "Grand Marnier soufflé", "description": "To finish. Order at the start.", "price": "$28" } + ] + } + }, + { + "block_key": "art-deco:private_dining", + "title": "Private Dining", + "slot": "main", + "sort_order": 4, + "content": { + "eyebrow": "Private dining", + "title": "The Gold Room", + "description": "A room of your own behind the main floor. One long table, a dedicated maître d', and the full cellar. We write the menu with you.", + "seats": "Seats 2 to 14", + "minimum": "From $2,400", + "enquireLabel": "Enquire", + "enquireUrl": "/contact", + "mediaPosition": "left" + } + } + ] + }, + { + "slug": "/about", + "title": "The House", + "template_key": "default", + "blocks": [ + { "block_key": "heading", "title": "Heading", "slot": "main", "sort_order": 1, "content": { "text": "The House", "level": 1 } }, + { "block_key": "rich-text", "title": "Story", "slot": "main", "sort_order": 2, "content": { "html": "

Maison Doré opened on a narrow street in 1926 and has kept its hours ever since. We take reservations for dinner and hold a few tables back for late suppers.

The kitchen runs a short tasting menu that changes with the season. The cellar runs long. The room stays the same, which is the point.

" } }, + { "block_key": "divider", "title": "Divider", "slot": "main", "sort_order": 3, "content": { "variant": "ornament", "icon": "lucide:diamond" } }, + { "block_key": "quote", "title": "Quote", "slot": "main", "sort_order": 4, "content": { "style": "block", "align": "center", "quote": "Come for dinner, stay for the last pour.", "attribution": "The House" } } + ] + }, + { + "slug": "/blog", + "title": "From the Floor", + "template_key": "blog-index", + "blocks": [ + { "block_key": "card", "title": "Post: Gold Standard", "slot": "main", "sort_order": 1, "content": { "layout": "vertical", "title": "The gold standard", "text": "

Why one oyster, served one at a time, still opens every table.

", "link": "/blog/the-gold-standard", "linkLabel": "Read on" } }, + { "block_key": "card", "title": "Post: A Night", "slot": "main", "sort_order": 2, "content": { "layout": "vertical", "title": "A night at the club", "text": "

From the first cocktail to the last soufflé. How an evening unfolds.

", "link": "/blog/a-night-at-the-club", "linkLabel": "Read on" } }, + { "block_key": "card", "title": "Post: Cellar", "slot": "main", "sort_order": 3, "content": { "layout": "vertical", "title": "Notes from the cellar", "text": "

What we pour and why. A short walk through the list.

", "link": "/blog/notes-from-the-cellar", "linkLabel": "Read on" } } + ] + }, + { + "slug": "/blog/the-gold-standard", + "title": "The gold standard", + "template_key": "article", + "parent_slug": "/blog", + "blocks": [ + { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 1, "content": { "text": "The gold standard", "level": 1 } }, + { "block_key": "rich-text", "title": "Body", "slot": "main", "sort_order": 2, "content": { "html": "

The oyster came first, in 1926, and it has not left the menu since. We serve it on ice, one at a time, with a champagne mignonette and a single leaf of gold.

The point is restraint. One oyster, done right, sets the tone for the meal that follows.

" } } + ] + }, + { + "slug": "/blog/a-night-at-the-club", + "title": "A night at the club", + "template_key": "article", + "parent_slug": "/blog", + "blocks": [ + { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 1, "content": { "text": "A night at the club", "level": 1 } }, + { "block_key": "rich-text", "title": "Body", "slot": "main", "sort_order": 2, "content": { "html": "

Doors open at six. The first cocktail arrives before the menu. Dinner runs five courses, unhurried, and the soufflé is ordered at the start.

The band plays after nine. Late suppers run until the last table is ready to leave.

" } } + ] + }, + { + "slug": "/blog/notes-from-the-cellar", + "title": "Notes from the cellar", + "template_key": "article", + "parent_slug": "/blog", + "blocks": [ + { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 1, "content": { "text": "Notes from the cellar", "level": 1 } }, + { "block_key": "rich-text", "title": "Body", "slot": "main", "sort_order": 2, "content": { "html": "

The list is long and the choices are few, by design. We pour champagne by the glass, keep a deep bench of burgundy, and hold a small shelf of older bottles for the ones who ask.

Tell the sommelier what you are eating. The rest takes care of itself.

" } } + ] + }, + { + "slug": "/contact", + "title": "Reservations", + "template_key": "contact", + "blocks": [ + { + "block_key": "contact-form", + "title": "Reservation Enquiry", + "slot": "main", + "sort_order": 1, + "content": { + "heading": "Request a table", + "description": "Tell us the date, the hour and the party. We will confirm by email.", + "submitLabel": "Request a table", + "successMessage": "Thank you. Your table request has been received. We will confirm by email.", + "fields": [ + { "name": "name", "label": "Your name", "type": "text", "required": true, "width": "half" }, + { "name": "email", "label": "Email", "type": "email", "required": true, "width": "half" }, + { "name": "party", "label": "Party size", "type": "text", "required": false, "width": "half" }, + { "name": "message", "label": "Date, time and any notes", "type": "textarea", "required": true, "width": "full" } + ], + "formConfig": { "enabled": true, "captchaEnabled": false, "targetTable": "contact_submissions" } + } + }, + { + "block_key": "hours-location", + "title": "Hours & Location", + "slot": "aside", + "sort_order": 1, + "content": { + "heading": "Hours", + "hours": [ + { "day": "Tuesday to Thursday", "hours": "6pm to late" }, + { "day": "Friday to Saturday", "hours": "5pm to late" }, + { "day": "Sunday", "hours": "5pm to 10pm" }, + { "day": "Monday", "closed": true } + ], + "specialHoursNote": "Late suppers from 10pm, Friday and Saturday.", + "address": "12 Gilt Lane\nThe Old Quarter", + "phone": "+1 555 0126" + } + } + ] + }, + { + "slug": "/login", + "title": "Members", + "template_key": "auth", + "blocks": [ + { "block_key": "auth-form", "title": "Sign in", "slot": "main", "sort_order": 1, "content": { "default_tab": "login", "show_social": false } }, + { "block_key": "text", "title": "Foot", "slot": "footer", "sort_order": 1, "content": { "text": "

Members book priority tables and private-room dates.

" } } + ] + } + ], + "menu_items": [ + { "menu": "main", "label": "Home", "page_slug": "/", "sort_order": 1 }, + { "menu": "main", "label": "The House", "page_slug": "/about", "sort_order": 2 }, + { "menu": "main", "label": "From the Floor", "page_slug": "/blog", "sort_order": 3 }, + { "menu": "main", "label": "Reservations", "page_slug": "/contact", "sort_order": 4 } + ] +} diff --git a/seed/workflows.json b/seed/workflows.json new file mode 100644 index 0000000..9998606 --- /dev/null +++ b/seed/workflows.json @@ -0,0 +1,19 @@ +{ + "workflows": [ + { + "key": "contact_notify_admins", + "name": "Reservation enquiry to admins", + "description": "On a reservation-form submission, email the site admins.", + "enabled": true, + "trigger": { "type": "row_inserted", "table": "contact_submissions" }, + "steps": [ + { + "type": "email", + "name": "Email admins", + "template": "Form Submission Notification", + "recipients": { "mode": "admins", "scope": "all" } + } + ] + } + ] +} diff --git a/templates/art-deco/auth.ninjatpl b/templates/art-deco/auth.ninjatpl new file mode 100644 index 0000000..4f8af2d --- /dev/null +++ b/templates/art-deco/auth.ninjatpl @@ -0,0 +1,18 @@ + + +{{ head_html|safe }} + + {{ admin_banner_html|safe }} +
+
+ + {% if site_settings.Logo %}{{ site_settings.LogoAlt }}{% else %}{{ site_settings.Title|default:"BlockNinja" }}{% endif %} + + +
{% if slots.main %}{{ slots.main|safe }}{% else %}

No form assigned to this page.

{% endif %}
+ {% if slots.footer %}
{{ slots.footer|safe }}
{% endif %} +
+
+ {{ body_end_html|safe }} + + diff --git a/templates/art-deco/blog-index.ninjatpl b/templates/art-deco/blog-index.ninjatpl new file mode 100644 index 0000000..e10741f --- /dev/null +++ b/templates/art-deco/blog-index.ninjatpl @@ -0,0 +1,23 @@ + + +{{ head_html|safe }} + + {{ admin_banner_html|safe }} + {% if slots.header %}
{{ slots.header|safe }}
{% endif %} +
+
+ {% if title %} +
+

{{ title }}

+ {% if page_meta.MetaDescription %}

{{ page_meta.MetaDescription }}

{% endif %} + +
+ {% endif %} + {% if slots.featured %}
{{ slots.featured|safe }}
{% endif %} + {% if slots.main %}
{{ slots.main|safe }}
{% else %}

No posts published yet.

{% endif %} +
+
+ {% if slots.footer %}
{{ slots.footer|safe }}
{% endif %} + {{ body_end_html|safe }} + + diff --git a/templates/art-deco/contact.ninjatpl b/templates/art-deco/contact.ninjatpl new file mode 100644 index 0000000..d8aa1e7 --- /dev/null +++ b/templates/art-deco/contact.ninjatpl @@ -0,0 +1,22 @@ + + +{{ head_html|safe }} + + {{ admin_banner_html|safe }} + {% if slots.header %}
{{ slots.header|safe }}
{% endif %} +
+
+ {% if slots.aside %} +
+
{% if slots.main %}{{ slots.main|safe }}{% endif %}
+ +
+ {% else %} +
{% if slots.main %}{{ slots.main|safe }}{% else %}

No content blocks assigned to this page.

{% endif %}
+ {% endif %} +
+
+ {% if slots.footer %}
{{ slots.footer|safe }}
{% endif %} + {{ body_end_html|safe }} + + diff --git a/templates/overrides/art-deco/announcement-bar.ninjatpl b/templates/overrides/art-deco/announcement-bar.ninjatpl new file mode 100644 index 0000000..2dfdf04 --- /dev/null +++ b/templates/overrides/art-deco/announcement-bar.ninjatpl @@ -0,0 +1,21 @@ +{# announcement-bar override — gilded banner. Dismiss {% endif %} diff --git a/templates/overrides/art-deco/audio-embed.ninjatpl b/templates/overrides/art-deco/audio-embed.ninjatpl new file mode 100644 index 0000000..b477e08 --- /dev/null +++ b/templates/overrides/art-deco/audio-embed.ninjatpl @@ -0,0 +1,16 @@ +{# audio-embed override — gold-framed player card. Fields + facade JS mirror builtin verbatim: url, media, artwork, title, artist, download. #} +
{% if artwork %}
{% img artwork alt=title|default:"" class="h-full w-full object-cover" %}
{% endif %}
{% if title %}

{{ title }}

{% endif %}{% if artist %}

{{ artist }}

{% endif %}
{% if download %}::lucide:download:sm:: Download{% endif %}
diff --git a/templates/overrides/art-deco/auth-form.ninjatpl b/templates/overrides/art-deco/auth-form.ninjatpl new file mode 100644 index 0000000..8cc50ad --- /dev/null +++ b/templates/overrides/art-deco/auth-form.ninjatpl @@ -0,0 +1,33 @@ +{# auth-form override — gilded login/register. Wiring is UNTOUCHABLE and reproduced exactly from builtin auth_blocks.go: single shared #auth-message, /api/auth/login (email,password) and /api/auth/register (username,email,password), hx-target #auth-message. Captcha widget injected from _captcha_widget when captchaEnabled (server enforces). Fields: default_tab, show_social (social omitted — needs Go/site config; graceful). #} +{% if context.isPublicLoggedIn %} +
+

You are signed in as {{ context.publicUsername }}

+ My account +
+{% else %} +
+
+
+ + +
+
+
+
+
+ {% if _captcha_widget %}{{ _captcha_widget|safe }}{% endif %} + +

Forgot password?

+
+
+
+
+
+
+
+ {% if _captcha_widget %}{{ _captcha_widget|safe }}{% endif %} + +
+
+
+{% endif %} diff --git a/templates/overrides/art-deco/auth-status.ninjatpl b/templates/overrides/art-deco/auth-status.ninjatpl new file mode 100644 index 0000000..9e197b5 --- /dev/null +++ b/templates/overrides/art-deco/auth-status.ninjatpl @@ -0,0 +1,31 @@ +{# auth-status override — header login state. Logged-out: Sign in / Reserve links. Logged-in: gold monogram + dropdown (logout posts /api/auth/logout). Driven by context.isPublicLoggedIn / context.publicDisplayName / context.publicUsername. #} +{% if context.isPublicLoggedIn %} +
+ + + +
+{% else %} + +{% endif %} diff --git a/templates/overrides/art-deco/author-bio-hero.ninjatpl b/templates/overrides/art-deco/author-bio-hero.ninjatpl new file mode 100644 index 0000000..2798eae --- /dev/null +++ b/templates/overrides/art-deco/author-bio-hero.ninjatpl @@ -0,0 +1,22 @@ +{# author-bio-hero (art-deco) — author-page header from the `authors` provider. #} +{% if author %} +
+
+{% 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 }}

+{% 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 %} +
+{% if showPostCount %}{{ author.post_count|default:0 }} post{% if author.post_count != 1 %}s{% endif %}{% endif %} +{% if author.location %}{{ author.location }}{% endif %} +
+{% if showSocial %}
+{% if author.website_url %}{% endif %} +{% if author.twitter_handle %}{% endif %} +{% if author.linkedin_url %}{% endif %} +{% if author.github_url %}{% endif %} +
{% endif %} +
+
+{% endif %} diff --git a/templates/overrides/art-deco/author-bio.ninjatpl b/templates/overrides/art-deco/author-bio.ninjatpl new file mode 100644 index 0000000..122a425 --- /dev/null +++ b/templates/overrides/art-deco/author-bio.ninjatpl @@ -0,0 +1,14 @@ +{# author-bio (art-deco) — byline card sourced from the `post` provider's author_* fields. #} +{% if post.author_name %} + +{% endif %} diff --git a/templates/overrides/art-deco/blog-hero.ninjatpl b/templates/overrides/art-deco/blog-hero.ninjatpl new file mode 100644 index 0000000..1e2f875 --- /dev/null +++ b/templates/overrides/art-deco/blog-hero.ninjatpl @@ -0,0 +1,24 @@ +{# blog-hero (art-deco) — blog-index header + featured posts from the `posts` provider. #} +
+
+
+{% if title %}

{{ title }}

{% endif %} +{% if subtitle %}

{{ subtitle }}

{% endif %} +
+{% if posts %} +
+{% for post in posts %} + +{% endfor %} +
+{% endif %} +
+
diff --git a/templates/overrides/art-deco/breadcrumbs.ninjatpl b/templates/overrides/art-deco/breadcrumbs.ninjatpl new file mode 100644 index 0000000..9542b35 --- /dev/null +++ b/templates/overrides/art-deco/breadcrumbs.ninjatpl @@ -0,0 +1,15 @@ +{# breadcrumbs (art-deco) — trail from the `breadcrumbs` provider (page ancestry). #} +{# showHome prepends a Home link; separator is text ("/") for default or a chevron #} +{# for the arrows template. The trailing is_current item renders as plain text. #} +{% set arrows = template == "arrows" %} + diff --git a/templates/overrides/art-deco/button.ninjatpl b/templates/overrides/art-deco/button.ninjatpl index 253b950..a5743a9 100644 --- a/templates/overrides/art-deco/button.ninjatpl +++ b/templates/overrides/art-deco/button.ninjatpl @@ -1 +1,10 @@ -{% if label %}{% if url %}{{ label }}{% else %}{% endif %}{% endif %} +{# button override — gold-ringed lacquer pill. Fields (new builtin contract, per OVERRIDE-CONTRACT §4): link, style, label, size, icon, iconPosition, newTab, align. #} +{% with align=align|default:"left" %} + +{% endwith %} diff --git a/templates/overrides/art-deco/card.ninjatpl b/templates/overrides/art-deco/card.ninjatpl new file mode 100644 index 0000000..38d247f --- /dev/null +++ b/templates/overrides/art-deco/card.ninjatpl @@ -0,0 +1,4 @@ +{# card override — angular gold Deco panel. Fields mirror builtin: layout, link, media, title, text, linkLabel. Media via {% img %}. #} +{% with layout=layout|default:"vertical" %} + +{% endwith %} diff --git a/templates/overrides/art-deco/category-list.ninjatpl b/templates/overrides/art-deco/category-list.ninjatpl new file mode 100644 index 0000000..74443d3 --- /dev/null +++ b/templates/overrides/art-deco/category-list.ninjatpl @@ -0,0 +1,18 @@ +{# category-list (art-deco) — from the `categories` provider. list or pills. #} +{% set pills = style == "pills" %} +
+{% if heading %}

{{ heading }}

{% endif %} +{% if pills %} +
+{% for cat in categories %} +{{ cat.name }}{% if showCount %}{{ cat.post_count }}{% endif %} +{% endfor %} +
+{% else %} + +{% endif %} +
diff --git a/templates/overrides/art-deco/contact-card.ninjatpl b/templates/overrides/art-deco/contact-card.ninjatpl new file mode 100644 index 0000000..82831f8 --- /dev/null +++ b/templates/overrides/art-deco/contact-card.ninjatpl @@ -0,0 +1,17 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if description %}

{{ description }}

{% endif %} +
+ {% for channel in channels %} +
+ {% if channel.icon %}{% endif %} +
+ {% if channel.label %}
{{ channel.label }}
{% endif %} + {% if channel.value %}
{% if channel.link %}{{ channel.value }}{% else %}{{ channel.value }}{% endif %}
{% endif %} +
+
+ {% endfor %} +
+
+
diff --git a/templates/overrides/art-deco/contact-form.ninjatpl b/templates/overrides/art-deco/contact-form.ninjatpl new file mode 100644 index 0000000..a193ac6 --- /dev/null +++ b/templates/overrides/art-deco/contact-form.ninjatpl @@ -0,0 +1,43 @@ +{# contact-form override — reservations enquiry. ALL form wiring preserved verbatim from builtin: bid, {% form %} action/hx attrs, honeypot, field loop, form.submitted/errors, submit target. Only inputs restyled to Art Deco. #} +{% with bid=_block_id|default:context.blockId %} +
+
+ {% if form.submitted %} +
+
::lucide:check:lg::
+

{{ form.message|default:successMessage|default:"Thank you. Your table request has been received." }}

+
+ {% else %} +
+ {% if heading %}

{{ heading }}

{% endif %} + {% if description %}

{{ description }}

{% endif %} + +
+ {% if form.errors._form %}
{{ form.errors._form }}
{% endif %} + {% with formAction="/api/blocks/"|add:bid|add:"/submit" formTarget="#contact-form-"|add:bid %} + {% form action=formAction hx_target=formTarget hx_swap="outerHTML" class="mt-8 grid grid-cols-1 gap-5 sm:grid-cols-2" %} + {% for field in fields %} +
+ {% if field.label %}{% endif %} + {% if field.type == "textarea" %} + + {% elif field.type == "select" %} + + {% else %} + + {% endif %} +
+ {% endfor %} + +
+ +
+ {% endform %} + {% endwith %} + {% endif %} +
+
+{% endwith %} diff --git a/templates/overrides/art-deco/countdown.ninjatpl b/templates/overrides/art-deco/countdown.ninjatpl new file mode 100644 index 0000000..3727214 --- /dev/null +++ b/templates/overrides/art-deco/countdown.ninjatpl @@ -0,0 +1,48 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+
+
--{{ labelDays|default:"Days" }}
+
--{{ labelHours|default:"Hours" }}
+
--{{ labelMinutes|default:"Minutes" }}
+
--{{ labelSeconds|default:"Seconds" }}
+
+ +
+ +
+
+ diff --git a/templates/overrides/art-deco/cta.ninjatpl b/templates/overrides/art-deco/cta.ninjatpl new file mode 100644 index 0000000..8ad2c4a --- /dev/null +++ b/templates/overrides/art-deco/cta.ninjatpl @@ -0,0 +1,14 @@ +
+
+
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if text %}

{{ text }}

{% endif %} +
+
+ {% if primaryUrl and primaryLabel %}{{ primaryLabel }}{% endif %} + {% if secondaryUrl and secondaryLabel %}{{ secondaryLabel }}{% endif %} +
+
+
+
diff --git a/templates/overrides/art-deco/divider.ninjatpl b/templates/overrides/art-deco/divider.ninjatpl new file mode 100644 index 0000000..014bce5 --- /dev/null +++ b/templates/overrides/art-deco/divider.ninjatpl @@ -0,0 +1,13 @@ +{# divider override — folds in the old divider_fan: gold geometric rules. Fields mirror builtin: variant (line|ornament|spacer-rule), weight, width, icon. ornament renders a sunburst fan crest; spacer-rule a short centred gold rule; line a hairline gold rule. #} +{% with variant=variant|default:"line" weight=weight|default:"thin" width=width|default:"full" %} +{% if variant == "ornament" %} + +{% elif variant == "spacer-rule" %} + +{% else %} + +{% endif %} +{% endwith %} diff --git a/templates/overrides/art-deco/event-list.ninjatpl b/templates/overrides/art-deco/event-list.ninjatpl new file mode 100644 index 0000000..e0286d6 --- /dev/null +++ b/templates/overrides/art-deco/event-list.ninjatpl @@ -0,0 +1,40 @@ +
+
+ {% 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 %} +
+
{{ event.start }}{% if event.end %} – {{ event.end }}{% endif %}{% if event.timezone %} {{ event.timezone }}{% endif %}
+

{{ event.title }}

+ {% if event.venue %}

{{ event.venue }}

{% endif %} + {% if event.description %}

{{ event.description }}

{% endif %} + {% if event.link %}{{ event.linkLabel|default:"Details" }}{% endif %} +
+
+ {% endif %}{% endfor %} +
+ {% else %} +
    + {% for event in events %}{% if not (hidePast and event.past) %} +
  • +
    +
    {{ event.start }}
    + {% if event.end %}
    to {{ event.end }}
    {% endif %} + {% if event.timezone %}
    {{ event.timezone }}
    {% endif %} +
    +
    +

    {{ event.title }}

    + {% if event.venue %}

    {{ event.venue }}

    {% endif %} + {% if event.description %}

    {{ event.description }}

    {% endif %} +
    + {% if event.link %}{{ event.linkLabel|default:"Details" }}{% endif %} +
  • + {% endif %}{% endfor %} +
+ {% endif %} +
+
diff --git a/templates/overrides/art-deco/faq.ninjatpl b/templates/overrides/art-deco/faq.ninjatpl new file mode 100644 index 0000000..403888d --- /dev/null +++ b/templates/overrides/art-deco/faq.ninjatpl @@ -0,0 +1,17 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+ {% for item in items %} +
+ + {{ item.question }} + + +
{{ item.answer|safe }}
+
+ {% endfor %} +
+
+
diff --git a/templates/overrides/art-deco/feature-grid.ninjatpl b/templates/overrides/art-deco/feature-grid.ninjatpl new file mode 100644 index 0000000..e9d842c --- /dev/null +++ b/templates/overrides/art-deco/feature-grid.ninjatpl @@ -0,0 +1,17 @@ +
+
+ {% if eyebrow %}

{{ eyebrow }}

{% endif %} + {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+ {% for item in items %} +
+ {% if item.icon %}
{% 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 %} +
+ {% endfor %} +
+
+
diff --git a/templates/overrides/art-deco/featured-posts.ninjatpl b/templates/overrides/art-deco/featured-posts.ninjatpl new file mode 100644 index 0000000..e35f0a3 --- /dev/null +++ b/templates/overrides/art-deco/featured-posts.ninjatpl @@ -0,0 +1,24 @@ +{# featured-posts (art-deco) — grid of cards from the `posts` provider #} +{# (params: limit, featured=true). Card: image, title, excerpt, meta. #} +
+
+{% 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-500 group-hover:scale-105" %}{% endif %} +
+

{{ post.title }}

+ +{% if showExcerpt and post.excerpt %}

{{ post.excerpt }}

{% endif %} +
+{% if showAuthor and post.author_name %}{{ post.author_name }}{% endif %} +{% if showDate and post.published_at %}{{ post.published_at|date:"M j, Y" }}{% endif %} +{% if post.reading_time %}{{ post.reading_time }} min read{% endif %} +
+
+
+{% endfor %} +
+
+
diff --git a/templates/overrides/art-deco/footer.ninjatpl b/templates/overrides/art-deco/footer.ninjatpl new file mode 100644 index 0000000..c41181f --- /dev/null +++ b/templates/overrides/art-deco/footer.ninjatpl @@ -0,0 +1,40 @@ +{# footer override — folds in the old footer block: centred gilded footer with gold rule, address, reservations, social. Structure/fields/signup_form preserved from builtin; reskinned to Art Deco. #} +{% set fl = layout %} +{% if not fl %}{% if template == "centered" %}{% set fl = "centered" %}{% else %}{% set fl = "columns" %}{% endif %}{% endif %} +{% set fbg = backgroundColor|default:"bg-foreground text-background" %} +{% macro sociallinks(cls) %}{% if social_items %}{% endif %}{% endmacro %} +{% macro newsletter() %}{% if showNewsletter %}

{{ newsletterTitle|default:"Join the guest list" }}

{% if newsletterDescription %}

{{ newsletterDescription }}

{% endif %}
{% signup_form list=newsletterListSlug|default:"main" source="footer" submit=newsletterButtonText|default:"Subscribe" %}
{% endif %}{% endmacro %} +{% macro legalbar() %}

{% if copyright %}© {{ copyright }}{% else %}© {{ companyName }}{% endif %}

{% if legal_items %}{% endif %}
{% endmacro %} +
+
+{% if fl == "minimal" %} +
+
{% if logo %}{{ companyName }}{% elif companyName %}{{ companyName }}{% endif %}{% if tagline %}{% endif %}
+{{ sociallinks("") }} +
+{{ legalbar() }} +{% elif fl == "centered" %} +
+{% if logo %}{{ companyName }}{% elif companyName %}{{ companyName }}{% endif %} + +{% if tagline %}

{{ tagline }}

{% endif %} +{% if columns %}{% endif %} +{{ newsletter() }} +{{ sociallinks("justify-center") }} +
+{{ legalbar() }} +{% else %} +
+
+{% if logo %}{{ companyName }}{% elif companyName %}{{ companyName }}{% endif %} +{% if tagline %}

{{ tagline }}

{% endif %} +{% if address or email or phone %}
{% if address %}
{{ address }}
{% endif %}{% if email %}{% endif %}{% if phone %}{% endif %}
{% endif %} +{{ sociallinks("mt-5") }} +
+{% for col in columns %}

{{ col.header }}

{% endfor %} +{% if showNewsletter %}
{{ newsletter() }}
{% endif %} +
+{{ legalbar() }} +{% endif %} +
+
diff --git a/templates/overrides/art-deco/gallery.ninjatpl b/templates/overrides/art-deco/gallery.ninjatpl new file mode 100644 index 0000000..386d3cd --- /dev/null +++ b/templates/overrides/art-deco/gallery.ninjatpl @@ -0,0 +1,52 @@ +{# gallery override — folds in the old gallery_fan: symmetric gold-framed grid. Fields + lightbox JS mirror builtin verbatim: layout, gap, columns, lightbox, images[].src/.alt/.caption. #} +{% with layout=layout|default:"grid" gap=gap|default:"md" cols=columns|default:3 %}{% if lightbox %}{% endif %}{% endwith %} diff --git a/templates/overrides/art-deco/heading.ninjatpl b/templates/overrides/art-deco/heading.ninjatpl index 4573ef2..7232b25 100644 --- a/templates/overrides/art-deco/heading.ninjatpl +++ b/templates/overrides/art-deco/heading.ninjatpl @@ -1 +1,7 @@ -{% if level|integer == 1 %}

{{ text }}

{% elif level|integer == 3 %}

{{ text }}

{% elif level|integer == 4 %}

{{ text }}

{% elif level|integer == 5 %}
{{ text }}
{% elif level|integer == 6 %}
{{ text }}
{% else %}

{{ text }}

{% endif %} +{# heading override — gilded Cinzel display caps with a hairline gold underline. Fields: text, level, textClass (mirrors builtin). #} +{% if level == 1 %}

{{ text }}

+{% elif level == 3 %}

{{ text }}

+{% elif level == 4 %}

{{ text }}

+{% elif level == 5 %}
{{ text }}
+{% elif level == 6 %}
{{ text }}
+{% else %}

{{ text }}

{% endif %} diff --git a/templates/overrides/art-deco/hero.ninjatpl b/templates/overrides/art-deco/hero.ninjatpl new file mode 100644 index 0000000..b3259ca --- /dev/null +++ b/templates/overrides/art-deco/hero.ninjatpl @@ -0,0 +1,40 @@ +{# hero override — folds in the old marquee_hero: sunburst overlay + stepped ziggurat framing, gold-foil Cinzel headline. Structure/fields/{% img %} calls preserved from builtin. Styled-text fields accept {text,color} or a bare string. #} +{% set eyebrowText = eyebrow.text|default:eyebrow %} +{% set headlineText = headline.text|default:headline %} +{% set subText = subheadline.text|default:subheadline %} +{% set descText = description.text|default:description %} +{% set pText = ctaPrimary.text %} +{% set pUrl = ctaPrimary.url %} +{% set sText = ctaSecondary.text %} +{% set sUrl = ctaSecondary.url %} +{% set variant = template|default:"centered" %} +{% set hasImage = backgroundImage %} +{% set showOverlay = hasImage and overlayColor != "none" and overlayColor != "" %} +{% macro herocontent(align) %} +{% if eyebrowText %}
{{ eyebrowText }}
{% endif %} +{% if headlineText %}

{{ headlineText }}

{% endif %} +{% if subText %}

{{ subText }}

{% endif %} +{% if descText %}

{{ descText }}

{% endif %} +{% if pText or sText %}
+{% if pText and pUrl %}{{ pText }}{% endif %} +{% if sText and sUrl %}{{ sText }}{% endif %} +
{% endif %} +{% if trustLogos %}
+

Acclaim

+
{% for logo in trustLogos %}{% if logo.url %}{% img logo.image alt=logo.alt class="h-8 w-auto" %}{% else %}{% img logo.image alt=logo.alt class="h-8 w-auto opacity-60" %}{% endif %}{% endfor %}
+
{% endif %} +{% endmacro %} +{% if variant == "split" %} +
+
{% if hasImage %}{% img backgroundImage alt=headlineText class="absolute inset-0 h-full w-full object-cover" layout="hero" %}{% endif %}
+
{{ herocontent("left") }}
+
+{% 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 %} + +
{{ herocontent(align) }}
+
+{% endif %} diff --git a/templates/overrides/art-deco/hours-location.ninjatpl b/templates/overrides/art-deco/hours-location.ninjatpl new file mode 100644 index 0000000..23980c4 --- /dev/null +++ b/templates/overrides/art-deco/hours-location.ninjatpl @@ -0,0 +1,31 @@ +{# hours-location override — gilded hours ledger + framed map. Map facade + + {% endif %} + + + diff --git a/templates/overrides/art-deco/image.ninjatpl b/templates/overrides/art-deco/image.ninjatpl index 4230174..72b0f19 100644 --- a/templates/overrides/art-deco/image.ninjatpl +++ b/templates/overrides/art-deco/image.ninjatpl @@ -1 +1,11 @@ -
{{ alt }}
{% if caption %}
{{ caption }}
{% endif %}
+{# image override — stepped gold Deco frame. Fields mirror builtin: src, alt, caption, size, align, aspectRatio, objectFit. Media resolved via {% img %} (media filter is not registered in the block render path). #} +{% with size=size|default:"full" align=align|default:"center" objectFit=objectFit|default:"cover" %} +
+
+
+ {% if objectFit == "contain" %}{% img src alt=alt class="w-full h-full object-contain" layout=size %}{% elif objectFit == "fill" %}{% img src alt=alt class="w-full h-full object-fill" layout=size %}{% elif objectFit == "none" %}{% img src alt=alt class="w-full h-full object-none" layout=size %}{% else %}{% img src alt=alt class="w-full h-full object-cover" layout=size %}{% endif %} +
+
+ {% if caption %}
{{ caption }}
{% endif %} +
+{% endwith %} diff --git a/templates/overrides/art-deco/logo-strip.ninjatpl b/templates/overrides/art-deco/logo-strip.ninjatpl new file mode 100644 index 0000000..fe0a72b --- /dev/null +++ b/templates/overrides/art-deco/logo-strip.ninjatpl @@ -0,0 +1,15 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} +
+
+ {% for logo in logos %} + {% if logo.url %}{% endif %} + {% img logo.image alt=logo.alt class="h-8 w-auto object-contain" %} + {% if logo.url %}{% endif %} + {% endfor %} +
+
+
+
+{% if marquee %}{% endif %} diff --git a/templates/overrides/art-deco/menu-list.ninjatpl b/templates/overrides/art-deco/menu-list.ninjatpl new file mode 100644 index 0000000..b9c5460 --- /dev/null +++ b/templates/overrides/art-deco/menu-list.ninjatpl @@ -0,0 +1,30 @@ +{# menu-list override — the supper-club menu card: centred Cinzel section titles, gold leader rules, symmetric columns. Fields mirror builtin: heading, intro, columns, sections[].title/.note/.items[].name/.badges/.description/.price, currency, footnote. #} +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} + +
+ {% for section in sections %} + + {% endfor %} +
+ {% if footnote %}

{{ footnote }}

{% endif %} +
+
diff --git a/templates/overrides/art-deco/navbar.ninjatpl b/templates/overrides/art-deco/navbar.ninjatpl new file mode 100644 index 0000000..dfb8d02 --- /dev/null +++ b/templates/overrides/art-deco/navbar.ninjatpl @@ -0,0 +1,104 @@ +{# navbar override — gilded masthead. Structure, fixed drawer ids, focus-trap JS and all data-* preserved verbatim from the builtin; presentation reskinned to Art Deco. Fields identical: variant/stickyBehavior/megaMenu/logoType/logoText/logo/companyName/cta/menu.items/... #} +{% set nv = variant %} +{% if not nv %}{% if template == "centered" %}{% set nv = "centered-logo" %}{% elif template == "transparent" %}{% set nv = "transparent-over-hero" %}{% else %}{% set nv = "standard" %}{% endif %}{% endif %} +{% set sb = stickyBehavior %} +{% if not sb %}{% if sticky %}{% set sb = "sticky" %}{% else %}{% set sb = "none" %}{% endif %}{% endif %} +{% set use_mega = megaMenu or template == "mega" %} +{% set is_transparent = nv == "transparent-over-hero" %} +{% set cta_text = cta.text|default:ctaLabel %} +{% set cta_url = cta.url|default:ctaUrl %} +{% set bg = backgroundColor|default:"bg-background" %} +{% macro navlink(item) %}{{ item.label }}{% endmacro %} +{% macro dropdown(item) %}
+ +{% if use_mega %} +{% else %}{% endif %} +
{% endmacro %} +{% macro brand(size) %}{% if logoType == "text" and logoText.text %}{{ logoText.text }}{% elif logo %}{{ alt|default:companyName }}{% elif companyName %}{{ companyName }}{% endif %}{% endmacro %} +{% macro ctabtn(extra) %}{% if cta_text %}{{ cta_text }}{% endif %}{% endmacro %} + + + diff --git a/templates/overrides/art-deco/newsletter-signup.ninjatpl b/templates/overrides/art-deco/newsletter-signup.ninjatpl new file mode 100644 index 0000000..769a86e --- /dev/null +++ b/templates/overrides/art-deco/newsletter-signup.ninjatpl @@ -0,0 +1,13 @@ +{# newsletter-signup (art-deco) — the {% signup_form %} tag carries the #} +{# untouchable subscribe wiring (/api/lists/subscribe HTMX post + honeypot); #} +{# this template supplies only the art-deco chrome around it. #} +
+
+
+
+{% if title %}

{{ title }}

{% endif %} +{% if description %}

{{ description }}

{% endif %} +
{% signup_form list=listSlug source=source submit=submitText success_message=successMessage placeholder=placeholder %}
+
+
+
diff --git a/templates/overrides/art-deco/page-suggestions.ninjatpl b/templates/overrides/art-deco/page-suggestions.ninjatpl new file mode 100644 index 0000000..639a05b --- /dev/null +++ b/templates/overrides/art-deco/page-suggestions.ninjatpl @@ -0,0 +1,21 @@ +{# page-suggestions override — themed 404 suggestions. Fields: title, showDescription, emptyMessage; suggestions[] from the provider (.slug/.title/.excerpt). #} +{% if suggestions %} +
+ {% if title %}

{{ title }}

{% endif %} +
    + {% for suggestion in suggestions %} +
  • + ::lucide:chevron-right:sm:: +
    + {{ suggestion.title }} + {% if showDescription and suggestion.excerpt %}

    {{ suggestion.excerpt }}

    {% endif %} +
    +
  • + {% endfor %} +
+
+{% elif emptyMessage %} +
+

{{ emptyMessage }}

+
+{% endif %} diff --git a/templates/overrides/art-deco/password-reset-form.ninjatpl b/templates/overrides/art-deco/password-reset-form.ninjatpl new file mode 100644 index 0000000..5611bfb --- /dev/null +++ b/templates/overrides/art-deco/password-reset-form.ninjatpl @@ -0,0 +1,13 @@ +{# password-reset-form override — request stage only, matching builtin. Wiring UNTOUCHABLE: /api/auth/request-password-reset (email), hx-target #reset-message. Reskinned to Art Deco. #} +
+
+
+

Reset password

+

Enter your email and we will send a link to reset your password.

+
+
+ +
+

Back to sign in

+
+
diff --git a/templates/overrides/art-deco/popular-posts.ninjatpl b/templates/overrides/art-deco/popular-posts.ninjatpl new file mode 100644 index 0000000..f1a86ff --- /dev/null +++ b/templates/overrides/art-deco/popular-posts.ninjatpl @@ -0,0 +1,16 @@ +{# popular-posts (art-deco) — compact ranked list from the `posts` provider. #} +
+{% if heading %}

{{ heading }}

{% endif %} +
    +{% for post in posts %} +
  1. +{% if showRank %}{{ forloop.Counter }}{% endif %} +{% if showThumbnail and post.featured_image_url %}{% img post.featured_image_url alt=post.title class="h-full w-full object-cover" %}{% endif %} +
    +

    {{ post.title }}

    +{% if post.published_at %}

    {{ post.published_at|date:"M j, Y" }}

    {% endif %} +
    +
  2. +{% endfor %} +
+
diff --git a/templates/overrides/art-deco/post-hero.ninjatpl b/templates/overrides/art-deco/post-hero.ninjatpl new file mode 100644 index 0000000..c9e45ba --- /dev/null +++ b/templates/overrides/art-deco/post-hero.ninjatpl @@ -0,0 +1,23 @@ +{# post-hero (art-deco) — current post from the `post` provider. When the post #} +{# has a featured image it becomes an overlaid banner; otherwise a clean text hero. #} +{% set center = align != "left" %} +{% if post.featured_image_url %} +
+
{% img post.featured_image_url alt=post.featured_image_alt class="h-full w-full object-cover" layout="hero" %}
+
+{% if center %}
{% endif %} +

{{ post.title }}

+{% if showExcerpt and post.excerpt %}

{{ post.excerpt }}

{% endif %} +{% if showMeta %}
{% if post.author_name %}{{ post.author_name }}{% endif %}{% if post.published_at %}{{ post.published_at|date:"F j, Y" }}{% endif %}{% if post.reading_time %}{{ post.reading_time }} min read{% endif %}
{% endif %} +
+
+{% else %} +
+
+{% if center %}
{% endif %} +

{{ post.title }}

+{% if showExcerpt and post.excerpt %}

{{ post.excerpt }}

{% endif %} +{% if showMeta %}
{% if post.author_name %}{{ post.author_name }}{% endif %}{% if post.published_at %}{{ post.published_at|date:"F j, Y" }}{% endif %}{% if post.reading_time %}{{ post.reading_time }} min read{% endif %}
{% endif %} +
+
+{% endif %} diff --git a/templates/overrides/art-deco/post-metadata.ninjatpl b/templates/overrides/art-deco/post-metadata.ninjatpl new file mode 100644 index 0000000..80b7c8d --- /dev/null +++ b/templates/overrides/art-deco/post-metadata.ninjatpl @@ -0,0 +1,9 @@ +{# post-metadata (art-deco) — author/date/reading-time row from the `post` provider. #} +{% if post %} +
+{% if showAuthor and post.author_name %}{% if showAvatar and post.author_avatar %}{% img post.author_avatar alt=post.author_name class="h-7 w-7 rounded-full object-cover ring-1 ring-[hsl(var(--primary)/0.5)]" %}{% endif %}{{ post.author_name }}{% endif %} +{% if showDate and post.published_at %}{% endif %} +{% if showReadingTime and post.reading_time %}{{ post.reading_time }} min read{% endif %} +{% if post.categories %}{% for cat in post.categories %}{{ cat.name }}{% endfor %}{% endif %} +
+{% endif %} diff --git a/templates/overrides/art-deco/pricing.ninjatpl b/templates/overrides/art-deco/pricing.ninjatpl new file mode 100644 index 0000000..7cbff79 --- /dev/null +++ b/templates/overrides/art-deco/pricing.ninjatpl @@ -0,0 +1,25 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+ {% for tier in tiers %} +
+ {% if tier.badge %}{{ tier.badge }}{% endif %} +

{{ tier.name }}

+
+

+ {% if currency %}{{ currency }}{% else %}${% endif %}{{ tier.price }} + {% if tier.period %}{{ tier.period }}{% endif %} +

+ {% if tier.description %}

{{ tier.description }}

{% endif %} + {% if tier.features %}
    + {% for feature in tier.features %}
  • {{ feature }}
  • {% endfor %} +
{% endif %} + {% if tier.ctaUrl and tier.ctaLabel %}{% if tier.highlighted %}{{ tier.ctaLabel }}{% else %}{{ tier.ctaLabel }}{% endif %}{% endif %} +
+ {% endfor %} +
+ {% if billingNote %}

{{ billingNote }}

{% endif %} +
+
diff --git a/templates/overrides/art-deco/quote.ninjatpl b/templates/overrides/art-deco/quote.ninjatpl new file mode 100644 index 0000000..0eb2ea3 --- /dev/null +++ b/templates/overrides/art-deco/quote.ninjatpl @@ -0,0 +1,8 @@ +{# quote override — supper-club press pull-quote: large italic Cormorant flanked by gold sunburst crests. Fields mirror builtin: quote, style, align, cite, attribution, role. #} +{% with style=style|default:"block" align=align|default:"left" %} +
+ {% if align == "center" %}{% endif %} + {{ quote|safe }} + {% if attribution or role or cite %}
{% if attribution %}{{ attribution }}{% endif %}{% if role %}{{ role }}{% endif %}{% if cite %}Source{% endif %}
{% endif %} +
+{% endwith %} diff --git a/templates/overrides/art-deco/related-posts.ninjatpl b/templates/overrides/art-deco/related-posts.ninjatpl new file mode 100644 index 0000000..c73465a --- /dev/null +++ b/templates/overrides/art-deco/related-posts.ninjatpl @@ -0,0 +1,17 @@ +{# related-posts (art-deco) — grid from the `posts` provider. #} +{% if posts %} +
+
+

{{ heading|default:"Related posts" }}

+
+{% for post in posts %} + +{% endfor %} +
+
+
+{% endif %} diff --git a/templates/overrides/art-deco/rich-section.ninjatpl b/templates/overrides/art-deco/rich-section.ninjatpl new file mode 100644 index 0000000..b071fa1 --- /dev/null +++ b/templates/overrides/art-deco/rich-section.ninjatpl @@ -0,0 +1,13 @@ +
+
+
+ {% if eyebrow %}

{{ eyebrow }}

{% endif %} + {% if heading %}

{{ heading }}

{% endif %} + {% if body %}
{{ body|safe }}
{% endif %} + {% if ctaUrl and ctaLabel %}{{ ctaLabel }}{% endif %} +
+
+ {% if media %}
{% img media alt=mediaAlt class="w-full h-auto object-cover" %}
{% endif %} +
+
+
diff --git a/templates/overrides/art-deco/rich-text.ninjatpl b/templates/overrides/art-deco/rich-text.ninjatpl new file mode 100644 index 0000000..2ac8298 --- /dev/null +++ b/templates/overrides/art-deco/rich-text.ninjatpl @@ -0,0 +1,2 @@ +{# rich-text override — long-form Cormorant editorial column with gilded links. Field: html (mirrors builtin). #} +{% if html %}
{{ html|safe }}
{% endif %} diff --git a/templates/overrides/art-deco/sidebar-nav.ninjatpl b/templates/overrides/art-deco/sidebar-nav.ninjatpl new file mode 100644 index 0000000..3511d61 --- /dev/null +++ b/templates/overrides/art-deco/sidebar-nav.ninjatpl @@ -0,0 +1,15 @@ +{# sidebar-nav (art-deco) — vertical menu from the `menus` provider. Variants #} +{# default | compact. highlight-current carried as a progressive-enhancement #} +{# script keyed on data-bn-sidebar-link (marks the anchor matching location.pathname). #} +{% set compact = template == "compact" %} + +{% if highlightCurrent %}{% endif %} diff --git a/templates/overrides/art-deco/social-links.ninjatpl b/templates/overrides/art-deco/social-links.ninjatpl new file mode 100644 index 0000000..87dc729 --- /dev/null +++ b/templates/overrides/art-deco/social-links.ninjatpl @@ -0,0 +1,13 @@ + diff --git a/templates/overrides/art-deco/stats.ninjatpl b/templates/overrides/art-deco/stats.ninjatpl new file mode 100644 index 0000000..3c1ae15 --- /dev/null +++ b/templates/overrides/art-deco/stats.ninjatpl @@ -0,0 +1,48 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+ {% for item in items %} +
+
{% if item.prefix %}{{ item.prefix }}{% endif %}{{ item.value }}{% if item.suffix %}{{ item.suffix }}{% endif %}
+ {% if item.label %}
{{ item.label }}
{% endif %} +
+ {% endfor %} +
+
+
+{% if countUp %}{% endif %} diff --git a/templates/overrides/art-deco/team.ninjatpl b/templates/overrides/art-deco/team.ninjatpl new file mode 100644 index 0000000..a48e305 --- /dev/null +++ b/templates/overrides/art-deco/team.ninjatpl @@ -0,0 +1,21 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+ {% for member in members %} +
+ {% if member.photo %}{% img member.photo alt=member.name class="h-full w-full object-cover" %}{% endif %} +
+ {% if member.name %}

{{ member.name }}

{% endif %} + {% if member.role %}

{{ member.role }}

{% endif %} + {% if member.bio %}

{{ member.bio }}

{% endif %} + {% if member.socials %}
+ {% for social in member.socials %}{% if social.url %}{% endif %}{% endfor %} +
{% endif %} +
+
+ {% endfor %} +
+
+
diff --git a/templates/overrides/art-deco/testimonial.ninjatpl b/templates/overrides/art-deco/testimonial.ninjatpl new file mode 100644 index 0000000..75993a8 --- /dev/null +++ b/templates/overrides/art-deco/testimonial.ninjatpl @@ -0,0 +1,27 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} +
+ {% for q in quotes %} +
+ {% if q.rating %}
+ + + + + +
{% endif %} +
{% if q.quote %}“{{ q.quote }}”{% endif %}
+
+
+ {% if q.avatar %}{% img q.avatar alt=q.name class="h-full w-full object-cover" %}{% endif %} + + {% if q.name %}{{ q.name }}{% endif %} + {% if q.role %}{{ q.role }}{% endif %} + +
+
+ {% endfor %} +
+
+
diff --git a/templates/overrides/art-deco/text.ninjatpl b/templates/overrides/art-deco/text.ninjatpl index 73aa570..567b19d 100644 --- a/templates/overrides/art-deco/text.ninjatpl +++ b/templates/overrides/art-deco/text.ninjatpl @@ -1 +1,2 @@ -
{{ text|safe }}
+{# text override — Cormorant body prose with gilded links. Fields: text, proseClass (mirrors builtin). Dropcap is reserved for the article template, not forced on every text block. #} +
{{ text|safe }}
diff --git a/templates/overrides/art-deco/timeline.ninjatpl b/templates/overrides/art-deco/timeline.ninjatpl new file mode 100644 index 0000000..8e605fd --- /dev/null +++ b/templates/overrides/art-deco/timeline.ninjatpl @@ -0,0 +1,21 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
    + {% for step in steps %} +
  1. + + {% if marker == "numbered" %}{{ forloop.counter }}{% elif marker == "dot" %}{% else %}{% endif %} + +
    + {% if step.label %}

    {{ step.label }}

    {% endif %} + {% if step.title %}

    {{ step.title }}

    {% endif %} + {% if step.text %}

    {{ step.text }}

    {% endif %} + {% if step.media %}
    {% img step.media alt=step.title class="w-full h-auto object-cover" %}
    {% endif %} +
    +
  2. + {% endfor %} +
+
+
diff --git a/templates/overrides/art-deco/utility-bar.ninjatpl b/templates/overrides/art-deco/utility-bar.ninjatpl new file mode 100644 index 0000000..5487689 --- /dev/null +++ b/templates/overrides/art-deco/utility-bar.ninjatpl @@ -0,0 +1,10 @@ +{# utility-bar override — thin lacquer contact strip, gold text. Fields mirror builtin: variant, showOnMobile, leftItems/rightItems {icon,label,link}. #} +{% set ubcls = "bg-foreground text-background" %} +{% if variant == "primary" %}{% set ubcls = "bg-primary text-primary-foreground" %}{% elif variant == "dark" %}{% set ubcls = "bg-foreground text-background" %}{% endif %} +{% macro ubitem(it) %}{% if it.link %}{% if it.icon %}::{{ it.icon }}::{% endif %}{% if it.label %}{{ it.label }}{% endif %}{% else %}{% if it.icon %}::{{ it.icon }}::{% endif %}{% if it.label %}{{ it.label }}{% endif %}{% endif %}{% endmacro %} +
+
+
{% for it in leftItems %}{{ ubitem(it) }}{% endfor %}
+
{% for it in rightItems %}{{ ubitem(it) }}{% endfor %}
+
+
diff --git a/templates/overrides/art-deco/video-embed.ninjatpl b/templates/overrides/art-deco/video-embed.ninjatpl new file mode 100644 index 0000000..e0cadb1 --- /dev/null +++ b/templates/overrides/art-deco/video-embed.ninjatpl @@ -0,0 +1,23 @@ +{# video-embed override — gold-framed facade; play button in a gold-ringed medallion. Fields + facade JS mirror builtin verbatim: aspect, url, media, poster, title, caption. #} +{% with aspect=aspect|default:"16:9" %}
{% if caption %}
{{ caption }}
{% endif %}
{% endwith %}
-
-
- {% if address %}
{% for line in address|lines %}
{{ line }}
{% endfor %}
{% endif %} - {% if reservationsEmail %}

{{ reservationsEmail }}

{% endif %} - {% if menuName %}{% endif %} - {% if showSocial != "false" %}
{% endif %} -
-
-