Overview

Vinora template home pages

A quiet, elegant, animated HTML template for estate wineries, vineyards and cellar doors: classical Roman capitals, a thin olive accent, muted vineyard photography and warm oak-charcoal bands. Vinora ships three home pages, a light and a dark theme, right-to-left support, and winery logic that is worked out rather than typed in: tour and tasting booking with start times and seats left, a wine club with three tiers and a shipment calculator, vintage notes for every year, the cellar door’s open-now status and a shop that sells by the bottle, the vintage and the case.

What’s included

  • 3 home pages, each with its own scroll moment: a vine that climbs its trellis (bud, leaf, flower, grapes that turn purple), the vintage chart rising bar by bar, and the cellar descent
  • Tour and tasting booking in five steps: the experience, a date, a start time with its seats, guests, club rate and add-ons, details, review
  • The wine club: three tiers, a shipment calculator and a join form with an age check
  • Vintage notes for twelve years: rating, harvest dates, rain, heat, style and the drinking window from today’s year
  • The cellar door’s hours, closures and last pour; today’s tours start by start
  • Light and dark mode 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
  • WebGL Oak Grain under the night bands and the estate crest in relief in the footer, lit by a moving light
  • Cellar Door preloader, Depth Walk reveals (cards come forward out of the page), the estate-ribbon hover, Swiper sliders, Fancybox
  • The shop: type filters, sort and search, wine pages with their vintages, a bag with the case rate, coupon, shipping, tax and a legal-age check at checkout, wishlist
  • The estate’s blocks, awards, team and profile, gallery, journal with six post formats, FAQ with search, accounts, coming soon, 404
  • Fully responsive, zero console errors
📄 30 HTML files

Getting Started

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

1. Open locally

Unzip the downloaded package and open vinora/index.html in any modern browser (Chrome, Firefox, Edge, Safari). No build tools or server are required — tour booking, the club calculator, the vintage chart and the shop all work straight from the files.

2. Deploy to a server

Upload the contents of the vinora/ 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. Hours, batches, classes, sizes, vouchers and products live in one place — see Winery Logic.

Tip: Replace the neutral placeholder images in assets/img/ with your own photography at the same dimensions for the best result. The bottles are rendered PNGs with the estate’s labels: replace them with your own packshots on a transparent ground.

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 Estate (the vine’s year), Wines & Club (the vintage chart), Tours & Cellar with the side header (the cellar descent)
about.html / the-estate.htmlThe estate’s story, figures, history and the way the wine is made; soils, climate, the vineyard year and the nine blocks
awards.htmlMedals year by year, wine by wine
team.html / team-details.htmlThe team; the winemaker’s profile with his wines
gallery.htmlMasonry gallery with filter tabs and a lightbox
faq.htmlQuestions by topic with search
our-wines.htmlThe range with type tabs, grape, search and sort
vintages.htmlThe vintage chart and every year’s notes
wine-club.htmlThe tiers, the shipment calculator and the join form
tours.html / tour-details.htmlThe six experiences with a finder; one experience with its route, the next starts and a quick-book
book-a-tour.htmlThe five-step tour and tasting booking
visit.htmlThe cellar door now, today’s tours, getting here and what to know
shop.html / product-details.html / cart.html / checkout.html / wishlist.htmlThe shop: filters, sort and search, a wine with its vintages, bag, checkout, wishlist
blog.html / blog-details.htmlThe journal with six post formats, an article with reading time, share and comments
contact.htmlContact cards with the cellar door’s live status, the week’s hours, the form and the map
login.html / register.html / forgot-password.htmlAccount pages
coming-soon.html / 404.htmlCountdown to the new barrel room’s opening, 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 (17 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 (33 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 vinora/, the template. Every page sits in the template’s root; everything the pages load sits under assets/:

vinora/
├── *.html                              the 30 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 (17 sections)
    │   ├── 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 LTR + RTL, Swiper, Fancybox)
    ├── js/
    │   ├── main.js                     all custom scripts, numbered JS INDEX (33 blocks)
    │   └── plugins/                    jQuery, Bootstrap, GSAP, ScrollTrigger, Swiper, Fancybox
    ├── fonts/
    │   └── theme-icons/                the sun and moon of the theme switch
    ├── webfonts/                       Font Awesome Free font files
    └── img/                            images, one folder per section
        ├── banner/                      10 files
        ├── blog/                        6 files
        ├── decor/                       2 files
        ├── flags/                       6 files
        ├── gallery/                     20 files
        ├── home/                        23 files
        ├── icons/                       44 files
        ├── logo/                        4 files
        ├── menu/                        3 files
        ├── preloader/                   1 files
        ├── team/                        17 files
        ├── tours/                       6 files
        └── wines/                       12 files

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 --vn-olive-rgb) — change both together.

Olive--vn-olive
Olive Ink (Text)--vn-olive-text
Charcoal--vn-night
Oak Night--vn-oak
Lees--vn-lees
White Ground--vn-bg
Mist--vn-mist
Hairline--vn-line
Heading--vn-heading
Body--vn-text

Olive draws the grape rules, the icons, the active menu items and the buttons on night bands (oak text on olive). Olive ink is olive’s partner for small text on light grounds. Charcoal is the main button, the top bar and the footer; oak is the night bands under the oak grain. Lees, a dusty claret, marks the chosen vintage and the seats running low. White and mist are the section grounds. --vn-bg, --vn-surface, --vn-heading and --vn-text are the semantic names the components use — the dark theme swaps those (see Light & Dark Mode).

Fonts

Two Google Fonts are loaded in the head of each page: Cinzel (the Roman capitals of the titles, labels and figures) and Catamaran (the body, navigation and buttons). Swap them by editing the Google Fonts link and the --vn-ff-head / --vn-ff-body variables.

Logo

The logo is the name in a thin signature script, and the estate crest — a shield with a grape cluster, a vine leaf and a tendril — stands on the preloader’s door, in the footer relief and in the favicon. They ship as ready-made PNG files in assets/img/logo/:

  • logo.png — for light grounds: the headers, the offcanvas
  • logo-light.png — for dark grounds: the Home 2 header, the footer, coming soon, dark mode
  • crest-light.png — the crest in ivory, on the preloader’s oak door
  • favicon.png — the browser tab icon

To use your own logo, replace these files; the header sizes the logo by its height.

Light & Dark Mode

Every header (and the mobile menu) has a theme switch. The choice is saved in the browser under the key vinora-theme and applied by a one-line script in the <head> before the page paints. The switch sets data-theme="dark" on the <html> tag.

Dark Ground--vn-bg
Dark Surface--vn-surface
Dark Mist--vn-mist
Dark Heading--vn-heading
Dark Olive Ink--vn-olive-text
  • Tokens — the dark values sit in one block, [data-theme="dark"] { … }, right after :root.
  • Bands that stay dark — sections with the class is-night (the club band, the cellar descent, the footer) stay oak charcoal in both themes. A light card inside one takes vn-on-light.
  • Bottle grounds — the bottles stand on --vn-product, light grey by day and warm charcoal in dark mode.
  • Start dark — add data-theme="dark" to the <html> tag of each page; the switch still works.

Winery Logic

The figures on every page come from one data block, JS block 09 Vinora Data near the top of main.js (var VINORA). Edit it once and the cards, dates, seats, prices and totals follow. Prices are in US dollars; times are minutes after midnight (630 = 10:30 am); weekdays run 0 = Sunday to 6 = Saturday; months run 0 = January to 11 = December.

hours / lastPour / closuresThe cellar door’s hours for each weekday (or null when closed), the minutes before closing when the last tasting is poured (45), and the closure days as MM-DD (01-01, 12-24, 12-25). The top bars, the footer and the visit page show open now / opens next.
tours / kindsEach experience: kind, minutes, price per tasting guest, the guests a booking takes, the weekdays and months it runs, its start times and the seats in each start (private: true takes the whole room).
noTaste / groupFrom / groupOff / addonsThe non-tasting guest rate ($20), the group rate (10% off from 8 tasting guests) and the add-ons, priced per guest, per group or one for every four guests.
club / regions / mixes / releasesThe three tiers, the delivery regions, the mixes and the release months (the 15th of February, May, August, November); clubTax is the sales tax on a shipment.
vintages / libraryRateEach year’s rating, harvest dates, rain, heat days, style, a line on the season and the drinking window; a library vintage costs 6% more for each year it has rested.
wines / types / shopThe range (type, grape, vintages in the cellar, price, alcohol, notes, pairing) and the shop rules: free shipping from $150, otherwise $15 (express $28), tax 7.75%, coupon VINORA10, the case rate (6 bottles 10%, 12 bottles 15%).
season / cellar / blocks / facts / awards / team / postsThe vineyard’s year month by month, the cellar’s figures, the nine blocks, the estate in figures, the medals, the team and the journal.

The cellar door’s week

Monday10:00 am – 5:00 pm
TuesdayClosed
Wednesday10:00 am – 6:00 pm
Thursday10:00 am – 6:00 pm
Friday10:00 am – 7:00 pm
Saturday10:00 am – 7:00 pm
Sunday11:00 am – 6:00 pm

Tours and tastings

Estate TastingTasting, 60 min, $45 a guest, 1–10 guests, starts 10:30 am, 12:30 pm, 2:30 pm, 4:30 pm
Vineyard Walk & TastingTour, 90 min, $65 a guest, 1–10 guests, starts 10:00 am, 3:00 pm
Cellar & Barrel TastingCellar, 120 min, $85 a guest, 1–8 guests, starts 11:00 am, 4:00 pm
Harvest ExperienceSeasonal, 240 min, $145 a guest, 1–6 guests, starts 9:00 am
Private Reserve TastingPrivate, 90 min, $150 a guest, 2–8 guests, starts 11:30 am, 4:00 pm
Sunset Terrace PairingPairing, 120 min, $110 a guest, 1–8 guests, starts 6:00 pm

Seats taken in a start are a stand-in worked out from the date so the demo looks lived-in; a start that has begun today shows no seats. Replace seatsTaken() in block 10 Estate Clock with your own bookings. The wizard (block 24) offers the next 14 open days, never blocks on Continue, and checks the details and the age box only on Confirm.

Worked example: Cellar & Barrel Tasting, 8 tasting guests and 1 not tasting, a Réserve member, the board and the glass: 8 × $85 + $20 − $170 member rate − $51.00 group rate + $222 add-ons = $701.00.

The wine club

Cuvée3 bottles a release, 10% off, shipping $0 / $15 / $25 (collect / in state / out of state), 2 guests at 25% off
Réserve6 bottles a release, 15% off, shipping $0 / $0 / $12 (collect / in state / out of state), 4 guests at 50% off
Grand Cru12 bottles a release, 20% off, shipping $0 / $0 / $0 (collect / in state / out of state), 6 guests at no charge
Worked example: Grand Cru, reds only (average bottle $63.80), shipped out of state: 12 × $63.80 − 20% = $612.48, tax $47.47, shipping $0 = $659.95 a release.

How the shop totals

Worked example: six bottles of the 2018 Estate Cabernet Sauvignon, a library vintage at $80.24: $481.44 − 10% case rate = $433.30, shipping Free, tax $33.58 — $466.88.

The bag, the wishlist and the applied coupon are kept in the browser (localStorage). The first visit starts with a small demo bag and wishlist; to start empty, set the two demo lists in doShop() (block 28 The Shop) to []. Checkout, booking and the club confirm on screen with a reference — connect them to your own systems to take real orders.

WebGL Layers

Block 08 draws two layers. Oak Grain — toasted oak planks whose grain, rings and pores flow slowly along the band — sits under the night bands and the footer as one canvas:

<canvas class="vn-gl" data-gl="oak" aria-hidden="true"></canvas>

The crest relief in the footer is the estate crest drawn in code as a height field; its normals are taken in the shader and lit by a light that circles slowly and follows the pointer: <canvas class="footer-crest" data-crest>.

  • Colours — the oak reads --gl-1 (ground), --gl-2 (grain), --gl-3 (toasted light) and --gl-alpha; the crest reads --crest-1, --crest-2 and --crest-3.
  • Performance — a layer runs only while it is on screen and the tab is visible; reduced motion gets one still frame.
  • Remove one — delete the canvas; nothing else depends on it.

RTL (Right To Left)

Right to left comes from the stylesheets, not from separate pages: the language picker beside the light / dark switch lists the languages that read left to right and right to left. Choosing Arabic or Hebrew stores the direction (key vinora-dir) and reloads; the script in <head> then sets dir="rtl" and swaps the three stylesheets for the files named in their data-rtl attribute. Nothing is translated — you bring your own copy. To make a page right to left for good:

<html lang="ar" class="no-js" dir="rtl">
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
Editing the styles: the RTL files are mirrored twins of the LTR files, made with RTLCSS, with a short RTL fixes block at the end of style.rtl.css. After changing style.css, regenerate the twin with npx rtlcss style.css style.rtl.css and copy the fixes block back.

JavaScript Guide

All custom behaviour lives in assets/js/main.js, wrapped in a jQuery IIFE and organised into 33 numbered blocks. Each block is a self-contained doSomething() function that skips pages where its section is not present:

  • 01 — Preloader
  • 02 — Sticky Header
  • 03 — Offcanvas Menu
  • 04 — Scroll Reveals
  • 05 — Back To Top
  • 06 — Anchor Scroll
  • 07 — Light & Dark Mode, Direction
  • 08 — WebGL Oak Grain & Crest Relief
  • 09 — Vinora Data
  • 10 — Estate Clock
  • 11 — Custom Select
  • 12 — Meters
  • 13 — Hero Sliders
  • 14 — Card Sliders
  • 15 — Accordion
  • 16 — Filter Tabs
  • 17 — Grid Search
  • 18 — Newsletter
  • 19 — Choice Cards
  • 20 — The Vine Climbs Its Trellis
  • 21 — The Vintage Chart
  • 22 — The Cellar Descent
  • 23 — Tour Finder
  • 24 — Tour & Tasting Booking
  • 25 — Wine Club
  • 26 — Wine List
  • 27 — Contact Form
  • 28 — The Shop
  • 29 — Account Forms
  • 30 — Article Tools
  • 31 — Demo Forms
  • 32 — Launch Countdown
  • 33 — FAQ Search
Reveals: add vn-depth to a card or photo (it comes forward out of the page, from 240px deep), vn-fade to text (a soft rise), vn-words to a title (each word climbs out of its mask) and vn-rule for the grape rule. data-delay="0.2" staggers any of them. vn-ribbon on a card adds the estate-ribbon hover.
Scroll moments: the vine, the vintage chart and the cellar descent are scrubbed by their own section’s travel; none of them pins the page (the descent’s frame is CSS sticky). With reduced motion the vine is drawn full grown, every bar stands and the cellar facts all show.

Every animation respects prefers-reduced-motion: content appears in its final state.

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. Images are grouped inside assets/img/:

img/banner/Wide page-title banners and photo bands — 10 files: 2809×1317, 1920×1080, 3105×922, 2809×1584
img/blog/Journal posts — 6 files: 1300×990, 1300×941, 1386×924, 1300×979
img/decor/The owner’s signature, in a dark and a light ink — 2 files: 507×96
img/flags/The language picker’s flags (SVG, included) — 6 files: SVG
img/gallery/Gallery and vineyard photography — 20 files: 1300×1300, 1300×979, 1300×650, 1300×755, 1687×1271, 1300×622, …
img/home/Home page photos, hero slides and history medallions — 23 files: 2809×1756, 274×181, 273×180, 900×900, 900×686, 900×599, …
img/icons/Olive line icons, each in a day and a night ink — 44 files: 128×128
img/logo/Logo, light logo, crest and favicon — 4 files: 375×120, 224×288, 64×64
img/menu/Home previews in the mega menu — 3 files: 560×350
img/preloader/The oak door of the Cellar Door preloader — 1 file: 900×1200
img/team/Portraits of the team and the guests — 17 files: 600×600, 872×900, 85×85, 836×1258, 900×900
img/tours/The six experiences’ photographs — 6 files: 900×956, 900×686, 1300×755, 1300×979, 3432×3432
img/wines/The twelve rendered bottles with the estate’s labels (transparent PNG) — 12 files: 400×1244

The logo files, the crest, the rendered bottles, the oak door, the line icons, the signatures and the language flags are included and ready to use. All demo photography shown on the live preview is for preview purposes only and is not included in the download.

Contact Form

The contact forms and the comment form post to sendmail.php, a lightweight AJAX mail handler. The newsletter, booking, club, checkout and account forms are demo forms: they confirm on screen and are ready to connect to your own systems. To activate the mail handler:

1. Set your email address

$email = 'example@example.com';

2. Upload to a PHP host

The form needs a server with PHP mail() support. Opened from your computer, it shows an “upload to a PHP-enabled host” notice instead.

3. Optional: enable Google reCAPTCHA v3

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

<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>

Credits

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

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.