Overview

Cuisora template home pages

A dark, moody HTML template for a chef’s bistro run as a guest-chef residency: a new chef and a new menu of global small plates every month, twelve seats at the counter, evenings with the chef and a shop of the chefs’ cookbooks. Cuisora ships three home pages, a dark and a light theme, right-to-left support, and logic that is worked out rather than typed in: the chef in residence and the next ones from the visitor’s date, the nights left in the residency, the plates by heat and diet, a plate planner for the table, counter seats stool by stool, table booking from the bistro’s hours, the next date of every event, a private-dining estimate, gift sets priced as they fill and a shop with a bag, coupon, shipping and tax.

What’s included

  • 3 home pages, each with its own scroll moment: Portrait Carousel (the year’s twelve chefs turn round a ring month by month and land on the chef in residence), Chef’s Notebook (the notebook’s pages turn over its spine, a plate on each) and Wok Toss (the ingredients arc up out of the wok and land back in it)
  • A dark slate theme by default and a light theme on one switch in every header, remembered between visits and applied before the page paints
  • Right-to-left stylesheets and a flag language picker in every header: a right-to-left language turns any page around
  • WebGL layers — Sketchbook, pencil plates, bowls and sprigs drawing themselves in and fading, and the footer’s plate with the month’s chef’s name orbiting it — tinted by the theme colours
  • The residency from the date: the chef now and next on every page, the nights left, a month grid of service nights, the year’s chefs
  • Small plates with a heat filter from No Heat to Fierce, diet marks, course tabs, a month picker for any chef of the year and a plate planner for the table
  • Counter seats: twelve stools drawn seat by seat for two sittings, a wine pairing and a deposit a seat
  • The cookbook shop: categories, price filter, sort and search, signed copies, the book page, bag, coupon, free-shipping meter, tax, checkout with an order number, wishlist
  • Gift sets: a box of three, a box of five or the year box filled with the chefs’ books, 10% off when full, a wrap and a card
  • Four-step table booking, events from repeat rules with seats left, and a four-step private-dining estimate
  • Team with the chefs’ signatures, chef profile, gallery, journal, FAQ with search, account pages, coming soon, 404
  • Ticket Rail preloader, Plate Up reveals, word-rise titles, the chef’s signature writing in on hover, Swiper sliders and Fancybox video popups
  • Fully responsive, W3C-valid, zero console errors
📄 31 HTML files

Getting Started

Thank you for choosing Cuisora. Follow the steps below to get your site live.

1. Open locally

Unzip the downloaded package and open cuisora/index.html in any modern browser (Chrome, Firefox, Edge, Safari). No build tools or server are required — the residency clock, the menu filters, the counter, the booking, the estimate, the gift sets and the shop all work straight from the files.

2. Deploy to a server

Upload the contents of the cuisora/ folder to your hosting provider using an FTP client (such as FileZilla) or your hosting control panel. Once uploaded, navigate to your domain and the template will load immediately.

3. Customise

All custom styling lives in assets/css/style.css (with a numbered Table of CSS at the top) and assets/css/responsive.css. Colours and fonts are controlled by CSS variables — see Colors & Fonts. The guest chefs, their plates, the hours, the counter, the events, the rooms, the books and the shop rules live in one place — see Residency Logic.

Tip: Replace the neutral placeholder images in assets/img/ with your own photography at the same dimensions for the best result. The guest chefs’ portraits in img/team/ are 3:4, and the ingredients in img/wok/ are transparent PNGs.

File Structure

Below is an overview of the key files and folders included in this template.

index.html / homepage-2.html / homepage-3.htmlThree home pages: The Residency (Portrait Carousel), The Month’s Menu (Chef’s Notebook), The Counter (Wok Toss)
about.htmlThe bistro, how the residency began, the years in figures and the house team
residency.htmlThe year’s twelve chefs by month, the chef now and next from the clock, a month grid with the service nights
guest-chef.htmlThe chef in residence: portrait, city and cuisine, the counter menu, the month’s plates, the book and the nights left
menu.htmlThe small plates with the heat filter, diet marks and course tabs, a month picker for any chef of the year and the plate planner
counter.htmlCounter seat booking: the twelve stools drawn seat by seat, two sittings, the wine pairing and the deposit
reservations.htmlFour-step table booking from the bistro’s hours, with the summary beside it
events.html / event-details.htmlEvenings with the chef by date with month tabs; one event with its chef, seats left and booking
private-dining.htmlThree rooms, menus by the head and a four-step estimate
team.html / team-details.htmlThe house team with signatures, a chef profile
gallery.htmlPhotos with filter tabs and a lightbox
shop.html / product-single.html / cart.html / checkout.html / wishlist.htmlThe cookbook shop: filters, sort and search, the book, bag, checkout, wishlist
gift-sets.htmlThe gift set builder: a box filled with the chefs’ books, signed copies, a wrap and a card, ready-made sets
blog.html / blog-details.htmlThe journal with search; a post with reading time, share and comments
faq.htmlQuestions by topic with search
contact.htmlContact cards with live open status, map, hours and the contact form
account.html / login.html / register.html / forgot-password.htmlThe account (orders, gift sets, counter seats, details) and the login pages
coming-soon.html / 404.htmlCountdown to the second counter, error page
sendmail.phpAJAX mail handler for the contact and comment forms (see Contact Form)
assets/css/style.cssAll custom styles, numbered Table of CSS (16 sections)
assets/css/responsive.cssDesktop-first breakpoints 1399 / 1199 / 991 / 767 / 575, plus wide screens from 1600 and 1960
assets/css/style.rtl.css / responsive.rtl.cssThe right-to-left twins (see RTL)
assets/css/plugins/Bootstrap (LTR and RTL), Swiper, Fancybox (vendor CSS)
assets/js/main.jsAll custom scripts, numbered JS INDEX (34 blocks)
assets/js/plugins/jQuery, Bootstrap, Swiper, Fancybox, GSAP, ScrollTrigger
assets/img/Images, one folder per section (see Images)
assets/fonts/theme-icons/The sun and moon of the theme switch, loaded locally
assets/webfonts/ + assets/css/fontawesome-all.cssFont Awesome Free, loaded locally

Folder Structure

The package unzips to two folders: Documentation/ (this guide) and cuisora/, the template. Every page sits in the template’s root; everything the pages load sits under assets/:

cuisora/
├── *.html                              the 31 pages, all in the root (see File Structure)
├── sendmail.php                        the AJAX mail handler for the forms
└── assets/
    ├── css/
    │   ├── style.css                   all custom styles, numbered Table of CSS
    │   ├── style.rtl.css               the right-to-left twin of style.css
    │   ├── responsive.css              breakpoints 1399 / 1199 / 991 / 767 / 575
    │   ├── responsive.rtl.css          the right-to-left twin of responsive.css
    │   ├── fontawesome-all.css         Font Awesome Free, loaded locally
    │   └── plugins/                    vendor stylesheets
    │       ├── bootstrap.min.css
    │       ├── bootstrap.rtl.min.css   Bootstrap for right-to-left pages
    │       ├── jquery.fancybox.min.css
    │       └── swiper-bundle.min.css
    ├── js/
    │   ├── main.js                     all custom scripts, numbered JS INDEX (34 blocks)
    │   └── plugins/                    vendor scripts
    │       ├── bootstrap.bundle.min.js
    │       ├── gsap.min.js
    │       ├── jquery-3.7.1.min.js
    │       ├── jquery.fancybox.min.js
    │       ├── ScrollTrigger.min.js
    │       └── swiper-bundle.min.js
    ├── fonts/
    │   └── theme-icons/                the sun and moon of the theme switch
    ├── webfonts/                       Font Awesome Free font files
    └── img/                            images, one folder per section
        ├── banner/                      13 files
        ├── blog/                        9 files
        ├── dishes/                      55 files
        ├── faces/                       5 files
        ├── flags/                       6 files
        ├── icons/                       16 files
        ├── logo/                        6 files
        ├── menu/                        3 files
        ├── shop/                        15 files
        ├── sign/                        15 files
        ├── tall/                        2 files
        ├── team/                        15 files
        ├── textures/                    2 files
        └── wok/                         8 files

To publish the site, upload the contents of cuisora/ to your web root. Photos keep their folder, file name and size when you replace them, so no page needs editing.

Colors & Fonts

The whole design is driven by CSS variables declared at the top of style.css. Change a token once and every section, button and card updates. Colours used with transparency have an -rgb twin (for example --cu-gold-rgb) — change both together.

Slate--cu-slate
Slate Deep--cu-slate-deep
Panel--cu-panel
Night Blue--cu-blue
Gold--cu-gold
Gold Deep--cu-gold-deep
Gold Soft--cu-gold-soft
Menu Paper--cu-paper
Chilli--cu-chilli
Book Shelf--cu-shelf
Card Surface--cu-surface
Heading--cu-heading
Body--cu-text

Slate is the room: the ground of every page, the header and the footer, with the deeper slate for the night bands and the panel for cards on them. Gold draws the rules, the prices, the stars, the pass edge of every reveal and the buttons (gold buttons carry slate text). Menu paper is the printed sheet the month’s menu and the counter tickets are set on. Chilli is kept for the heat marks, Sale and “few seats left”. --cu-bg, --cu-surface, --cu-cream, --cu-heading and --cu-text are the semantic names the components use — the light theme swaps those (see Dark & Light Mode).

Fonts

Two Google Fonts are loaded in the head of each page: Raleway (headings in spaced capitals, body, navigation and buttons) and DM Mono (eyebrows, labels, prices, dates and figures). Swap them by editing the Google Fonts link and the --cu-ff-display / --cu-ff-body / --cu-ff-mono variables. The chefs’ signatures are images in img/sign/, so no script font is loaded.

Logo

The logo is a plate seen from above with a tasting spoon resting across its rim, beside CUISORA in spaced Raleway capitals. It ships as ready-made PNG files in assets/img/logo/:

  • logo.png — for light grounds: the light theme’s header and the paper header of Home 3
  • logo-light.png — for slate grounds: the header, the footer and the preloader in the dark theme
  • logo-word.png — the word alone (the preloader’s last ticket)
  • mark.png / mark-ink.png — the plate alone in gold and in slate ink (the tickets, the book covers)
  • favicon.png — the browser tab icon

The logo’s lettering appears only inside the images. To use your own logo, replace these files; the header sizes the logo by its height, so a wider or narrower file needs no CSS change.

Dark & Light Mode

Cuisora opens dark: the slate room is the default and needs no attribute. Every header (and the mobile menu) has a theme switch that turns the lights on. The choice is saved in the browser under the key cuisora-theme and applied by a one-line script in the <head> before the page paints, so a light visitor never sees a dark flash. The switch sets data-theme="light" on the <html> tag.

Light Ground--cu-bg
Light Surface--cu-surface
Light Band--cu-cream
Light Heading--cu-heading
Light Body--cu-text
Gold Ink On Light--cu-accent-text
  • Tokens — the light values sit in one block, [data-theme="light"] { … }, right after :root in style.css. Change a light colour there.
  • Bands that stay slate — sections with the class is-night (the portrait carousel, the menu sheet band, the voices, the counter tonight, the booking and estimate panels, the page titles, the footer) are slate in both themes.
  • Printed sheets — the menu sheets and the counter tickets take cu-on-paper and keep their paper and ink in both themes.
  • Signatures and icons — the chefs’ signatures are light strokes that turn dark on a light ground on their own; each illustrated icon ships in a slate and a light ink and the right one shows by theme and ground.
  • Start light — to open the site light for first-time visitors, add data-theme="light" to the <html> tag of each page; the switch still works and is still remembered.

Residency Logic

The figures on every page come from one data block, JS block 09 Cuisora Data near the top of main.js (var CUISORA). Edit it once and the chefs, plates, prices, dates, seats and totals follow. Prices are in US dollars; times are minutes after midnight (1080 = 6:00 pm); weekdays run 0 = Sunday to 6 = Saturday.

residencyThe twelve guest chefs, one a month: name, city, cuisine, portrait, the counter menu’s price, their book, their signature and five plates. The chef for the visitor’s month is the one in residence on every page.
houseThe house plates that stay on the menu whoever is cooking.
spice / diets / coursesThe heat scale (0 No Heat to 4 Fierce), the diet marks (v, vg, gf, df) and the four courses the menus are grouped by.
plannerPlates a guest for each appetite and the largest table the plate planner works for (8).
counter12 stools, the counter nights (Wednesday, Thursday, Friday, Saturday, Sunday), two sittings, the pairing ($55 a seat), the deposit ($30 a seat), up to 4 seats a booking, 42 days ahead.
hoursLunch and dinner for each weekday ([] = closed; the bistro rests on Monday). The top bar’s open-now line, the hours lists and the booking slots read it.
bookingThe largest party online (8), how far ahead (30 days), the slot step and the last seating before close, the seating areas.
eventsEvenings with the chef on the nth weekday of each month (-1 = the last), with the seats, the seats already taken and the price a seat.
rooms / packages / eventExtras / servicePrivate rooms (guests from–to, hire), menus by the head, extras (by the head or flat) and the service charge.
cats / productsThe shop: 15 books and notebooks in 3 categories, with price, struck old price and New / Sale.
shop / giftsFree shipping from $75, otherwise $7 (express $15), tax 8%, coupon COUNTER10 for 10% off, a signed copy $8 more; the gift boxes, wraps, the card fee and the ready-made sets.

The month’s chef

Any element with data-chef="now" (or next, prev, +2, or a month such as m3) is painted with that chef: its data-c fields take the name, city, cuisine, portrait, signature and book, and its data-plate items take the plates. The pages are written with one month’s chef and repaint from the visitor’s date, so the residency is always current.

Counter seats

A booking takes up to 4 free stools for one sitting. The price is the month’s counter menu a seat, plus the pairing a seat if chosen; the deposit a seat is paid now and the rest on the night.

Worked example: Two stools at Kwame Asante’s counter ($95 a seat) with the pairing: $190 + $110 = $300; $60 deposit now, $240 on the night.

Events

Every event repeats on its weekday of the month, so its next dates are always ahead of the visitor:

Meet The ChefThe first Tuesday of the month, $25 a seat
Spice & Knife ClassThe second Monday of the month, $75 a seat
Small Plates & Natural WineThe third Wednesday of the month, $65 a seat
Cookbook SigningThe last Saturday of the month, free
Handover SupperThe last Sunday of the month, $120 a seat

Private dining

Only the rooms that can seat the party are offered. The estimate is the room hire, plus the menu by the head for every guest, plus the extras, plus 12% service on the food and extras; a quarter of it holds the date.

Worked example: 10 guests at The Chef’s Table ($300 hire) with The Residency Menu ($95 a head): $300 + $950 + $114.00 service = $1,364.00.

How a gift set is priced

A gift set costs its box, plus each book at its shop price (a signed copy $8 more), less 10% of the books when every place is filled, plus the card if one is written.

Worked example: The Spice Trail: a Box Of Three ($6) with Suya & Shito, Masa, Mezze Nights ($114) is full, so $11.40 comes off the books: $108.60.

How the shop totals

Worked example: Suya & Shito ($38.00); shipping $7.00 (under $75); tax 8% $3.04 — $48.04. With the coupon COUNTER10: $38.00 − $3.80, shipping $7.00, tax $2.74 — $43.94.

The bag (books and gift sets), the wishlist, the applied coupon and the booked counter seats are kept in the browser (localStorage), so they follow the visitor from page to page. The first visit starts with a small demo bag and wishlist so every shop page has something to show; to start empty, set the two demo lists in doShop() (block 28 Cookbook Shop) to []. Checkout, table booking, counter seats, events and the private-dining enquiry confirm on screen with a reference — connect them to your own systems to take real orders and bookings.

WebGL Layers

Two small WebGL shaders draw the moving layers: Sketchbook — pencil sketches of plates, bowls, cups and sprigs that draw themselves in and fade on the page titles and the slate bands — and the Orbit — a glazed plate in the footer with the month’s chef’s name turning round it, taken from the date. Each is one canvas:

<canvas class="cu-gl" data-gl="sketch" aria-hidden="true"></canvas>
  • Colours — each layer reads three colours and an opacity from CSS variables on its canvas or section: --gl-1, --gl-2, --gl-3 and --gl-alpha. The theme switch repaints them.
  • Performance — a layer only runs while its section is on screen and the tab is visible. Visitors who prefer reduced motion get one still frame. Without WebGL, the section’s own background shows.
  • Remove one — delete the canvas; nothing else depends on it.

RTL (Right To Left)

Cuisora is RTL-ready: the layout with its paddings and margins, the sliders and the animations all mirror. Right to left comes from the stylesheets, not from separate pages: the language picker (a flag and a code) beside the dark / light switch lists the languages that read left to right and right to left. Choosing Arabic stores the language and the direction (keys cuisora-lang and cuisora-dir) and reloads; the one-line script in <head> then sets dir="rtl" and swaps the three stylesheets for the files named in their data-rtl attribute before the page paints. Nothing is translated — you bring your own right-to-left copy. To make a page right to left for good:

1. Set The Direction

Add dir="rtl" to the page’s <html> tag (and set lang to your language):

<html lang="en" class="no-js" dir="rtl">

2. Swap Three Stylesheets

assets/css/plugins/bootstrap.min.css→ assets/css/plugins/bootstrap.rtl.min.css
assets/css/style.css→ assets/css/style.rtl.css
assets/css/responsive.css→ assets/css/responsive.rtl.css

The scripts read the direction from the dir attribute: sliders and every move that must mirror follow it on their own. Prices, dates and the open notebook keep reading left to right inside their rows.

Editing the styles: style.rtl.css and responsive.rtl.css are mirrored twins of the LTR files, made with RTLCSS. A few hand-made rules at the end of style.rtl.css (after RTL fixes) keep what must not mirror. If you change style.css, regenerate the twin with npx rtlcss style.css style.rtl.css and copy the RTL fixes block back to its end.

JavaScript Guide

All custom behaviour lives in assets/js/main.js, wrapped in a jQuery IIFE and organised into 34 numbered blocks (see the JS INDEX comment at the top of the file):

  • 01–08 — Preloader, Sticky Header, Offcanvas Menu, Scroll Reveals, Back To Top, Anchor Scroll, Light & Dark Mode, Direction, WebGL Layers. The core every page shares: the Ticket Rail preloader, the header, the Plate Up reveals, the theme and direction switch and the WebGL layers.
  • 09–10 — Cuisora Data, Residency Clock. Cuisora Data holds every figure; Residency Clock works out the chef in residence from the date, the next chefs, the nights left, open now and the next date of every event.
  • 11–18 — Custom Select, Hero Sliders, Card Sliders, Accordion, Filter Tabs, Grid Search, Newsletter, Choice Cards. Shared components: selects, sliders, accordions, filters, search, forms.
  • 19–21 — Portrait Carousel, Chef's Notebook, Wok Toss. The three home pages’ scroll moments.
  • 22–34 — Counter Seats, Table Booking, Events, Private Dining, Menu Filters & Plate Planner, Contact Form, Cookbook Shop, Account Forms, Gift Set Builder, Article Tools, Demo Forms, Launch Countdown, FAQ Search. The feature pages: counter seats, table booking, events, private dining, the menu filters and plate planner, contact, the cookbook shop, accounts, gift sets, the journal, FAQ.

Each block is a self-contained doSomething() function that safely skips pages where its section is not present — you can delete any block you do not need. Every animation respects prefers-reduced-motion automatically: content appears in its final state and the scrubbed scenes rest in place.

Reveals: add cu-plate to a card or photo so it rises from behind a gold pass edge and settles onto it (Plate Up), cu-words to a title so its words rise one after another, cu-fade to text so it rises softly into place, and cu-rule for the short gold rule under a title. data-delay="0.2" staggers any of them. Add cu-signed to a card that holds a cu-sign image so the chef’s signature writes itself in on hover.
Scroll moments: Portrait Carousel turns its ring of twelve portraits a month at a time and holds each chef at the front for a moment; Chef’s Notebook turns its leaves over the spine one after another; Wok Toss throws the ingredients up on their own arcs and catches them. Each is scrubbed against its own section’s travel, none of them pins the page, and each page is authored in the finished state.
Countdown: the coming-soon page counts down to 10:00 am on the next 20 March — no date to update. Change it in doLaunchCountdown().

Images

The download package ships with neutral placeholder images so you can see every layout at the correct dimensions. Replace them with your own photos using the same file names, or update the src attributes. Images are grouped inside assets/img/:

img/banner/Page-title banners, photo bands and section backgrounds — 13 files: 2809×2926, 2809×1170, 2809×1024, 2809×885, 3840×1422, 3252×1186, …
img/blog/Journal posts, rooms and the gallery — 9 files: 1300×798, 1300×953, 2402×1475, 1300×1166, 2817×1963, 1300×1378, …
img/dishes/The plates: menus, cards, the notebook and the shop — 55 files: 800×535, 800×726, 800×800, 800×573, 643×376, 960×1100, …
img/faces/Round portraits for bylines, voices and avatar groups — 5 files: 240×240
img/flags/The language picker’s flags (SVG, included) — 6 files: SVG
img/icons/Illustrated line icons, each in a slate and a light ink (included) — 16 files: 128×128
img/logo/Logo, light logo, wordmark, mark and favicon (included) — 6 files: 1371×200, 444×444, 64×64, 1115×139
img/menu/Home previews in the mega menu — 3 files: 560×350
img/shop/The cookbook covers on the shelf and the product page — 15 files: 720×968
img/sign/The chefs’ signatures, transparent PNG (included) — 15 files: 479×196, 498×200, 599×182, 636×192, 547×189, 513×200, …
img/tall/Tall plate photos for the larger plates — 2 files: 800×1800
img/team/The twelve guest chefs and the house team, portraits at 3:4 — 15 files: 900×1200, 1038×1384, 1040×1386, 1041×1387, 1042×1389, 835×1113, …
img/textures/Stone and paper textures (included) — 2 files: 520×520, 720×720
img/wok/The wok (included) and the ingredients it tosses (transparent PNG) — 8 files: 340×325, 311×180, 340×350, 68×57, 83×48, 98×99, …

The logo files, the illustrated icons, the chefs’ signatures, the wok, the language flags and the textures are included and ready to use. All demo photography shown on the live preview, the book covers among it, is for preview purposes only and is not included in the download.

Contact Form

The contact form and the comment form post to sendmail.php, a lightweight AJAX mail handler. The success or error message appears under the button without reloading the page. The newsletter, table booking, counter seats, event booking, private-dining enquiry, checkout, account, login, register and forgot-password forms are demo forms: they confirm on screen and are ready to connect to your own systems. To activate the mail handler on your server:

1. Set your email address

Open sendmail.php and replace the placeholder recipient at the top of the file with your own address:

$email = 'example@example.com';

2. Upload to a PHP host

The form needs a server with PHP mail() support (virtually every shared host). It will not send from your local computer or from a static-only host — there the form shows a friendly “upload to a PHP-enabled host” notice instead.

3. Optional: enable Google reCAPTCHA v3

Invisible reCAPTCHA v3 spam protection is already built into the handler. It stays dormant until the form submits a token — that is why no badge or checkbox appears out of the box. To switch it on:

  • Create v3 keys (a site key and a secret key) for your domain in the Google reCAPTCHA admin console
  • In sendmail.php, replace YOUR_RECAPTCHA_V3_SECRET_KEY with your secret key
  • In contact.html, add a hidden token field inside the form and load the reCAPTCHA script with your site key just before </body>:
<!-- inside the form -->
<input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response">

<!-- before the closing </body> tag -->
<script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>
<script>
  grecaptcha.ready(function () {
    grecaptcha.execute('YOUR_SITE_KEY', { action: 'contact' }).then(function (token) {
      document.getElementById('g-recaptcha-response').value = token;
    });
  });
</script>

Once the token field is present, sendmail.php verifies every submission with Google and rejects low-score (bot) requests.

Credits

This template is built using the following open-source libraries and resources.

  • Bootstrap 5.3.3
  • jQuery 3.7.1
  • Swiper 11
  • GSAP 3 + ScrollTrigger
  • Fancybox 3.5
  • Font Awesome Free
  • RTLCSS
  • Google Fonts: Raleway, DM Mono

All plugin files and icon fonts are loaded locally. The only external requests are the Google Fonts stylesheet, the Google Maps embeds and the video popups.

Support

If you have any questions or need help with the template, please reach out through the marketplace where you purchased the template: open the item there and send us your question from its support page. We aim to respond within 24–48 hours.