Overview

Finelia template home pages

An HTML template for a light, minimal fine-line tattoo and piercing studio: single-needle linework, small symbols and botanicals, considered piercing and solid-gold jewellery. Finelia ships three home pages, a light and a dark theme, right-to-left support, a pound / dollar / euro switch, and logic that is worked out rather than typed in: a piercing menu priced by placement, jewellery style and metal; a fine-line estimate by the size in centimetres; booking with the ID and age rules worked out for the day of the visit; aftercare with the downsize and healing dates; an ear curator; open now and walk-in piercing from the clock; and a jewellery shop with metals, sizes, a bag, coupon, shipping zones and VAT.

What’s included

  • 3 home pages, each with its own scroll moment: Stencil To Skin (a fine-line sprig on its paper stencil travels onto a drawn forearm and the needle replaces the violet line), Ear Curation (an ear gains its jewellery stud by stud as the list lights) and Constellation (eight small symbols drift together and fine lines join them into one piece)
  • A white theme by default and a dark 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
  • A WebGL silk thread drifting through the porcelain bands, the page titles and the footer, and the footer’s gold hoop on a fine chain, swinging with verlet physics
  • The piercing menu: 18 placements by ear, face and body with gauge, healing time and youngest age; 6 jewellery styles in 4 metals; both sides at 25% off the second fee
  • The tattoo estimate: width and height in centimetres, 3 kinds of line, 3 inks, 10 placements and two artist rates; a price range, hours, sittings and the deposit, drawn to scale
  • Booking in six steps with the ID and age rules for the visit day: tattoos 18+, piercing from 12, a parent under 18
  • Aftercare by piercing: today’s healing stage, the downsize date, healed at the earliest and by; the ear curator with a plan of visits
  • The jewellery shop: categories, price filter, sort and search, metal swatches that swap the photograph and the price, sizes, the product page, bag, coupon, shipping zones, VAT included, collection at the studio, checkout with an order number, wishlist
  • Artists and piercers, an artist profile, the work with filters and a lightbox, the journal, FAQ with search, account pages, coming soon, 404
  • Hoop Swing preloader, Line Widen photo reveals, soft-rise copy, a jewel glint on hover, Swiper sliders and Fancybox video popups
  • Fully responsive, valid HTML5, no console errors
📄 31 HTML files

Getting Started

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

1. Open locally

Unzip the downloaded package and open finelia/index.html in any modern browser (Chrome, Firefox, Edge, Safari). No build tools or server are required — the studio clock, the piercing prices, the estimate, the booking, the healing dates, the curator and the shop all work straight from the files.

2. Deploy to a server

Upload the contents of the finelia/ 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 hours, the placements, the jewellery, the metals, the estimate, the ID rules, the healing stages, the team, the products and the shop rules live in one place — see Studio Logic.

Tip: Replace the neutral placeholder images in assets/img/ with your own photography at the same dimensions for the best result. The portraits in img/team/ and the pieces in img/work/ are square.

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 Studio (Stencil To Skin), Piercing & Jewellery (Ear Curation), Fine Line (Constellation)
about.htmlThe studio’s story, six things done well, inside the studio, the artists and kind words
tattoos.html / tattoo-estimate.htmlFine-line tattoos: the three kinds of line, sizes from a centimetre up, the work and the artists; the estimate by width and height in centimetres, detail, ink, placement and artist
piercings.html / piercing-details.htmlThe piercing menu by ear, face and body with its pricing panel and walk-in piercing from the clock; one placement (the helix) with its healing, the jewellery it takes and its questions
ear-curation.htmlThe ear curator: tap the drawn ear, a style and a metal for each placement, the ear priced with a plan of visits; the studio’s curations
aftercare.htmlYour piercing and the day it was done: today’s healing stage, the downsize and healed dates, the routine, the dos and don’ts; the fine-line tattoo routine
booking.htmlBook a visit in six steps: the visit, the artist, a day and a free start, your details, ID & age, confirm
artists.html / artist-details.htmlThe four tattoo artists, the two piercers and the guest chair; one artist with their days, style and healed work
gallery.html / gallery-details.html / gallery-details-2.htmlThe work with style filters and a lightbox; one piece with its size, hours and placement, in two layouts
shop.html / product-details.html / cart.html / checkout.html / wishlist.htmlThe jewellery shop: categories, price filter, sort and search, metal swatches and sizes, the product page, bag, checkout, wishlist
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 the live open status, the contact form, the hours and the map
account.html / login.html / register.html / forgot-password.htmlThe account (appointments, healing piercings, orders, details) and the login pages
coming-soon.html / 404.htmlCountdown to the piercing 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 (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 (37 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 finelia/, the template. Every page sits in the template’s root; everything the pages load sits under assets/:

finelia/
├── *.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 (37 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
        ├── art/                         6 files
        ├── banner/                      5 files
        ├── faces/                       4 files
        ├── flags/                       6 files
        ├── hero/                        4 files
        ├── icons/                       30 files
        ├── logo/                        6 files
        ├── menu/                        3 files
        ├── shop/                        51 files
        ├── studio/                      8 files
        ├── team/                        6 files
        └── work/                        22 files

To publish the site, upload the contents of finelia/ 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 --fn-violet-rgb) — change both together.

Stencil Violet--fn-violet
Violet Soft--fn-violet-soft
Ink--fn-ink
Porcelain--fn-porcelain
Blush--fn-blush
Gold--fn-gold
Rose Gold--fn-rose
Titanium--fn-ti
Ground--fn-bg
Panel--fn-panel
Hairline--fn-line
Heading--fn-heading
Body--fn-text

White is the ground and porcelain the quiet bands and the footer; ink sets the type and the primary buttons. Stencil violet is the one accent — the colour of the transfer line before the needle — for the accent words, links, the tilde under the titles and the drawings’ stencil. Gold, rose gold and titanium appear only where there is metal: the jewellery swatches, the hoop, the glint on hover. Blush is the skin of the drawn forearm and ear. --fn-bg, --fn-surface, --fn-panel, --fn-heading and --fn-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: Crimson Text (every heading, with its italic for the accent word, the buttons and the links) and Barlow (body text, the menu and the small labels in tracked capitals). Swap them by editing the Google Fonts link and the --fn-ff-head / --fn-ff-body variables.

Logo

The logo is the word finelia in Crimson Text with a fine gold hoop hanging from the l, the way a hoop hangs from a helix. It ships as ready-made PNG files in assets/img/logo/:

  • logo.png — ink lettering, for white grounds (every header in the light theme, the mobile menu)
  • logo-light.png — light lettering, for the headers over the hero photographs and the dark theme
  • logo-word.png / logo-word-light.png and hoop.png — the word and the hoop apart, for the preloader, where the hoop drops onto the l and swings to rest
  • favicon.png — the f with a gold hoop on an ink square, 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.

Light & Dark Mode

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

Dark Ground--fn-bg
Dark Surface--fn-surface
Dark Panel--fn-panel
Dark Heading--fn-heading
Dark Body--fn-text
Violet On Dark--fn-accent-text
  • Tokens — the dark values sit in one block, [data-theme="dark"] { … }, right after :root in style.css. Change a dark colour there.
  • Drawings — the canvases (the stencil, the ear, the constellation, the hoop) read their inks from --cv-ink, --cv-stencil, --cv-skin and --cv-paper, which the dark block swaps; the thread reads --gl-1 to --gl-3.
  • Logo and icons — the light logo shows on photographs and in the dark theme; each illustrated icon and drawing ships in an ink and a light version and the right one shows by theme.
  • Start dark — to open the site dark for first-time visitors, add data-theme="dark" to the <html> tag of each page; the switch still works and is still remembered.

Studio Logic

The figures on every page come from one data block, JS block 09 Finelia Data near the top of main.js (var FINELIA). Edit it once and the menu, prices, rules, slots, dates and totals follow. Prices are in pounds sterling; the currency switch shows them in GBP 1, USD 1.27, EUR 1.17 (key finelia-currency), and prices written in the pages carry a data-gbp attribute so the switch can repaint them. Times are minutes after midnight (660 = 11:00 am); weekdays run 0 = Sunday to 6 = Saturday.

hoursThe doors for each weekday ([] = closed; the studio rests on Monday): Tue 11 am–7 pm, Wed 11 am–7 pm, Thu 11 am–8 pm, Fri 11 am–7 pm, Sat 10 am–6 pm, Sun 12 pm–5 pm. The top bar’s open-now line, the hours lists and the booking slots read it.
walkInsThe hours walk-in piercing runs: Tue 12 pm–6 pm, Wed 12 pm–6 pm, Thu 12 pm–7 pm, Fri 12 pm–6 pm, Sat 11 am–5 pm. The piercing pages say whether it is on now and when it next is.
areas / piercings18 placements in ear, face and body, each with its gauge, youngest age, healing weeks (heal: at the earliest, by), downsize week, fee, whether it comes as a pair, the styles it takes and its point on the drawn ear.
styles / metals / secondOffThe jewellery styles in implant titanium: Flat-Back Stud £25, Gem Stud £35, Seamless Hoop £30, Clicker £40, Curved Barbell £28, Straight Barbell £32; each metal multiplies it (Implant Titanium ×1, 14k Yellow Gold ×3.2, 14k Rose Gold ×3.2, 14k White Gold ×3.4) and the price rounds to the nearest five pounds. The second of a pair is 25% off its fee.
estimateThe tattoo estimate: setup hours (0.5), hours per square centimetre for each kind of line, the inks, the placements, the two artist rates, the size bands, the minimum (£90), the hours in one sitting (5), the deposit (£50), the largest size (25 cm) and the free touch-up window (8 weeks).
idRulesTattoos from 18 on your own photo ID; piercing from 12, lobes only under 16, a parent with their ID under 18; the IDs accepted and the ones refused.
services / bookingThe visits that can be booked: Tattoo Consultation (30 min, free); Tattoo Session (120 min, £50 deposit); Ear Curation Consult (30 min, £20); Downsize & Jewellery Fitting (15 min, £15), and a piercing priced from the menu. A start every 30 minutes, up to 21 days ahead, at least 60 minutes from now; fill sets how full each diary is seeded.
aftercare / stagesThe routine, the dos and the don’ts for ear, face, body and tattoo; the healing stages as a share of the earliest healing time.
curationsThe studio’s curated ears (placement, style, metal), shown on Home 2 and offered in the curator.
team / workStyles / workThe artists and piercers with their days, rate tier and wait; the work by style with size, hours and placement.
shopCats / products / shopThe jewellery shop: 19 products in 4 categories, each with its sizes and a price per metal; shipping zones (UK £3.50, free from £60, express £7.95; Europe; the rest of the world), VAT 20% included in the prices, coupon FINE10 for 10% off, same-day dispatch before 2 pm on weekdays.

The piercing menu

A piercing is the placement’s fee plus the jewellery: the style’s price times the metal, to the nearest five pounds. Placements that come as a pair add the second side at 25% off its fee, with its own jewellery.

Worked example: a helix with a hoop in yellow gold: £40 + £95 = £135. Both lobes with titanium studs: £30 + £25, the second side £47.50 — £102.50.

The tattoo estimate

Hours are the setup plus the area times the line’s rate, times the ink and the placement; the price is the hours at the artist’s rate, never under the minimum, shown as a range of −10% to +10% to the nearest ten pounds. A sitting holds 5 hours.

Worked example: the page opens at 6 × 8 cm (48 cm², Medium), Fine Detail, Black Only, Forearm, Resident Artist at £120 an hour: 1.56 hours, £170 – £210, 1 sitting. The same in soft shading on the ribs (×1.25) with a senior artist: 2.54 hours, £340 – £420.

ID and age on the day

Booking asks for the date of birth and works out the age on the visit day, not today. The verdict follows the rules above; Continue never blocks, only Confirm checks. A visitor born on 14 November 2010:

7 November 2026 — 15 on the dayHelix: Under 16: Lobes Only; lobe: Possible, With A Parent; tattoo: Tattoos Are For Over-17s Only
21 November 2026 — 16 on the dayHelix: Possible, With A Parent; tattoo: Tattoos Are For Over-17s Only

Healing dates

Aftercare counts from the day of the piercing: the stage is the days since, as a share of the earliest healing time; the downsize, healed-at-the-earliest and healed-by dates are that day plus the weeks in the data.

Worked example: a helix pierced on 1 September 2026, looked at on 1 October 2026 (day 31): Settling; downsize from 13 October 2026, healed at the earliest 2 March 2027, by 31 August 2027.

The ear curator

Each placement on the ear is its fee plus its jewellery; the plan puts lobes on the first visit and cartilage two at a time, about three months apart.

Worked example: The Quiet Gold — Lobe, Gem Stud in Yellow Gold: £30 + £110; Upper Lobe, Flat-Back Stud in Yellow Gold: £30 + £80; Helix, Seamless Hoop in Yellow Gold: £40 + £95; Tragus, Gem Stud in Yellow Gold: £40 + £110: fees £140, jewellery £395, £535. Plan: 2 lobe and 2 cartilage on the first visit.

How the shop totals

Prices include VAT: the bag shows the VAT inside the total, not on top of it. The coupon comes off the goods before the free-shipping check.

Worked example: Gem Clicker in Yellow Gold (£160) and Sterile Saline Spray (£9): £169, UK shipping free — £169.00 (VAT inside £28.17). With FINE10: £169 − £16.90, shipping free — £152.10 (VAT inside £25.35).

The bag, the wishlist, the applied coupon, the piercing and estimate picks, the curation, the aftercare piercing, the bookings and the orders 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 31 Jewellery Shop) to []. Checkout and booking confirm on screen with a reference — connect them to your own systems to take real orders and appointments.

WebGL & Drawings

One small WebGL shader draws the silk thread — a fine thread drifting across the porcelain bands, the plain page titles and the footer, curling into a loop now and then and letting it travel along its length. Each thread is one canvas:

<canvas class="fn-gl" data-gl="thread" data-gl-y="0.88" data-gl-amp="0.45" aria-hidden="true"></canvas>
  • Place — data-gl-y sets the height the thread lies at (0 = top, 1 = bottom) and data-gl-amp how far it wanders, so it can run clear of a title or a drawing.
  • Colours — violet into ink along its length with a silk sheen: --gl-1, --gl-2, --gl-3 and the strength --gl-alpha. The theme switch repaints them.
  • Performance — a thread 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.

The footer’s gold hoop hangs on an 18-link chain simulated with verlet physics: it swings in a breeze, the pointer pushes the links it passes and the ring turns slowly on its axis (data-hoop-chain, block 20). The scroll moments are drawn on plain 2D canvases from the paths in block 10 (data-stencil, data-ear-moment, data-constellation, blocks 21–23); their colours follow the theme tokens and they rest in their finished state for reduced motion.

RTL (Right To Left)

Finelia 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 light / dark switch lists the languages that read left to right and right to left. Choosing Arabic or Hebrew stores the language and the direction (keys finelia-lang and finelia-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, times and figures keep reading left to right inside their rows, and the drawn ear keeps its placements where they are on a real ear.

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 37 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 Hoop Swing preloader, the header, the Line Widen and soft-rise reveals, the theme and direction switch and the WebGL silk thread.
  • 09–12 — Finelia Data, Line Art, Custom Select, Currency. Finelia Data holds every figure; Line Art holds the fine-line drawings as paths the canvases trace; the pound / dollar / euro switch repaints every price.
  • 13–19 — Hero Sliders, Card Sliders, Accordion, Filter Tabs, Grid Search, Newsletter, Choice Cards. Shared components: sliders, accordions, filters, search, the newsletter, choice cards.
  • 20–23 — Hoop On A Chain, Stencil To Skin, Ear Curation Moment, Constellation. The footer’s hoop on its chain (every page) and the scroll moments: the stencil moving to skin (Home 1), the ear curated stud by stud (Home 2) and the constellation (Home 3).
  • 24–37 — Studio Clock, Piercing Menu, Tattoo Estimate, Booking, Healing Tracker, Ear Curator, Contact Form, Jewellery Shop, Account Forms, Account Page, Article Tools, Demo Forms, Launch Countdown, FAQ Search. The feature pages: open now and walk-in piercing from the clock, the piercing menu, the tattoo estimate, booking with the ID and age rules, the healing tracker, the ear curator, contact, the jewellery shop, accounts, the journal, demo forms, the countdown, 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 fn-widen to a photograph so a hairline draws across its middle and the image opens from it (Line Widen), fn-rise to a title and fn-fade to copy so they rise softly into place, and fn-tilde for the small violet tilde under a title. data-delay="0.2" staggers any of them. Add fn-glint to a card so a glint of gold runs across it on hover, the way light catches a stone.
Scroll moments: Stencil To Skin lifts the sprig off its stencil, carries it to the forearm and lets the needle replace the violet line; Ear Curation adds the jewellery to the ear placement by placement as the list lights; Constellation draws eight small symbols together and joins them with fine lines. 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/art/The fine-line drawings — the ear, the sprig and the paper edge — each in an ink and a light version (included) — 6 files: 600×780, 1920×150, 900×260
img/banner/Page-title banners and photo bands — 5 files: 2809×1024, 2809×951, 2809×1170
img/faces/Round portraits for bylines, reviews and avatar groups — 4 files: 240×240, 100×100
img/flags/The language picker’s flags (SVG, included) — 6 files: SVG
img/hero/The home sliders’ full-screen photographs — 4 files: 3274×1364, 2941×1364, 3738×1363
img/icons/Illustrated line icons, each in an ink and a light version (included) — 30 files: 120×120
img/logo/Logo, light logo, the two wordmarks, the hoop and the favicon (included) — 6 files: 276×104, 64×64, 35×35
img/menu/Home previews in the mega menu — 3 files: 800×500
img/shop/The jewellery in titanium, yellow and rose gold and the aftercare range, transparent PNG packshots (included) — 51 files: 800×800
img/studio/The studio at work: sessions, close work, the room — 8 files: 1300×750, 2817×1625, 2174×1254, 1355×783, 1482×688
img/team/The tattoo artists and the piercers, square portraits — 6 files: 600×600, 800×800, 1047×1047
img/work/The fine-line pieces: the gallery, the mosaic, the sliders and the project pages — 22 files: 1100×1100, 2817×1734, 2105×2105, 650×650, 1056×1056, 1100×1369, …

The logo files, the fine-line drawings, the illustrated icons, the jewellery and aftercare packshots and the language flags are included and ready to use. All demo photography shown on the live preview, the tattoo photographs 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, booking, 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: Crimson Text, Barlow

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.