Overview

Silkora template home pages

An HTML template for a friendly lingerie and loungewear boutique with two shops, in London and New York: lace and silk, robes and soft knits, fitted by hand. Silkora 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 bra fit calculator that turns the underbust and the bust into a band and a cup with the EU, French and US sizes and the sister sizes; a sets builder that prices a bra, a brief and a robe as a set; a fabric guide; fitting booking with each fitter’s days; gift cards with a balance check; order tracking; and a full shop with colours, bra sizes, sold-out sizes, a bag, coupon, shipping zones, collection from a boutique and VAT.

What’s included

  • 3 home pages, each with its own scroll moment: The Set (a bra, its brief and a robe slide together into one set and the set price counts down), Fabric Drift (the swatches drift across with their names) and The Robe Belt (a drawn robe’s belt crosses and ties itself in a bow as you scroll)
  • 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 Satin Stitch — small flowers embroidered stitch by stitch along the edges of the blush bands, the page titles and the footer — and the footer’s silk bow, one twisting ribbon that sways and gives way to the pointer
  • The fit calculator: centimetres or inches, bands 28 to 44, cups AA to J, the UK, EU, French and US sizes and the sister sizes; save it and the shop filters by it
  • The sets builder: a bra, a brief and a robe in your colour and size, 10% off two pieces and 15% off three, in the bag as one set
  • The fabric guide: 6 fabrics with what they are made of, stretch, breath, softness and sheen, and how to wash them
  • Fitting booking in six steps: 4 kinds of fitting in two boutiques or on video, each fitter’s days and the free starts in the boutique’s own time zone
  • Gift cards from £25 to £500 in three designs, as an e-card on a date or a boxed card by post; the balance check
  • The shop: 24 pieces in 5 categories, colours that swap the photograph, bra sizes with sold-out sizes, quick view, the product page with the matching brief, bag, coupon, shipping zones, VAT included, collection from either boutique, checkout with an order number, order tracking, wishlist
  • The lookbook with shop the look, the fitters and a fitter’s page, the boutiques with maps, the journal, FAQ with search, account pages, coming soon, 404
  • Tissue Part preloader, Veil Lift photo reveals, soft-rise copy, a lace edge rising on hover, Swiper sliders and Fancybox video popups
  • Fully responsive, valid HTML5, no console errors
📄 31 HTML files

Getting Started

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

1. Open locally

Unzip the downloaded package and open silkora/index.html in any modern browser (Chrome, Firefox, Edge, Safari). No build tools or server are required — the boutique clock, the fit calculator, the sets, the fittings, the gift cards, the tracking and the shop all work straight from the files.

2. Deploy to a server

Upload the contents of the silkora/ 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 boutiques and their hours, the size tables, the pieces, the set rates, the fabrics, the fittings and fitters, the gift cards and the shop rules live in one place — see Boutique Logic.

Tip: Replace the neutral placeholder images in assets/img/ with your own photography at the same dimensions for the best result. The pieces in img/shop/ sit on 4:5 white plates, one file per colour, named after the piece and the colour (noir-balconette-black.jpg).

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 Boutique (The Set), Bridal & Silk (Fabric Drift), Lounge & Lace (The Robe Belt)
shop.html / product-details.html / cart.html / checkout.html / wishlist.htmlThe shop: categories, bra size, fabric, colour and price filters, sort and search; the product page with colours, sizes and the matching brief; bag, checkout, wishlist
fit-calculator.html / size-guide.htmlThe bra fit calculator (underbust and bust to band and cup, the conversions, the sister sizes, the bras in your size); the size tables with your size marked
sets-builder.htmlBuild a set: a bra, a brief and a robe, in your colours and sizes, with the set price
fabric-guide.htmlLace, silk, satin, modal, cotton and mesh: what each is made of, how it feels and how to wash it
fitting.htmlBook a fitting in six steps: the fitting, the boutique, the fitter, a day and a free start, your details, confirm
gift-cards.htmlGift cards: an amount, a design, an e-card on a date or a boxed card by post, the card drawn as you go; the balance check
order-tracking.htmlFind an order by its number and email: each stage dated in working days
lookbook.html / lookbook-details.htmlThe edits; one edit with its photographs and shop the look
about.htmlThe boutique’s story, how a fitting goes, the fitters and kind words
fitters.html / fitter-details.htmlThe fitters by boutique; one fitter with their days, the fittings they give and their next free start
boutiques.htmlLondon and New York: open now, the hours in their own time zone, the address and the map
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 and the map
account.html / login.html / register.html / forgot-password.htmlThe account (fittings, saved size, orders, details) and the login pages
coming-soon.html / 404.htmlCountdown to the Paris boutique’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 silkora/, the template. Every page sits in the template’s root; everything the pages load sits under assets/:

silkora/
├── *.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/                         15 files
        ├── bands/                       7 files
        ├── banner/                      5 files
        ├── blog/                        7 files
        ├── faces/                       4 files
        ├── flags/                       6 files
        ├── gift/                        3 files
        ├── hero/                        14 files
        ├── icons/                       20 files
        ├── logo/                        3 files
        ├── menu/                        3 files
        ├── shop/                        53 files
        ├── strip/                       5 files
        ├── team/                        3 files
        └── tiles/                       6 files

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

Cherry--sk-cherry
Accent Text--sk-accent-text
Cocoa--sk-cocoa
Blush--sk-blush
Blush Deep--sk-blush-2
Satin--sk-satin
Shell--sk-shell
Stars--sk-star
Ink--sk-ink
Ground--sk-bg
Panel--sk-panel
Hairline--sk-line
Heading--sk-heading
Body--sk-text

White is the ground and blush the warm bands, the tonal buttons and the fields; ink sets the type, the primary buttons and the footer. Cherry is the one accent — the sale and discount bands, the counters, the bow — and --sk-accent-text, a shade deeper, is the cherry used for small text so it reads on white. Cocoa washes the photo bands; satin is the ground of the drawings; the stars are yellow. --sk-bg, --sk-surface, --sk-panel, --sk-heading and --sk-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: Work Sans (every heading in capitals, the menu, the buttons and the body) and Red Hat Display (the italic line under a title, and upright for the prices and figures). Swap them by editing the Google Fonts link and the --sk-ff-head, --sk-ff-body and --sk-ff-alt variables.

Logo

The logo is the word SILKORA in widely tracked Work Sans capitals with a small satin bow tied at the foot of the O. It ships as ready-made PNG files in assets/img/logo/:

  • logo.png — ink lettering with a cherry bow, for white grounds (the headers in the light theme, the mobile menu)
  • logo-light.png — light lettering with a blush bow, for the header over the hero photographs, the footer and the dark theme
  • favicon.png — the bowed O on a cherry 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

Silkora 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 silkora-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--sk-bg
Dark Surface--sk-surface
Dark Panel--sk-panel
Dark Heading--sk-heading
Dark Body--sk-text
Accent On Dark--sk-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 robe, the bow) read their colours from --cv-ink, --cv-satin, --cv-satin-2, --cv-cherry, --cv-belt and --cv-paper, which the dark block swaps; the stitched flowers read --gl-1 to --gl-3.
  • Logo, icons and lace — the light logo shows on photographs and in the dark theme; each illustrated icon, the dress form and the lace edges ship in a light and a dark version and the right one shows by theme.
  • Plates — the shop’s white product plates stay light in the dark theme, framed by the dark card, so the pieces keep their true colour.
  • 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.

Boutique Logic

The figures on every page come from one data block, JS block 09 Silkora Data near the top of main.js (var SILKORA). Edit it once and the sizes, prices, sets, 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 silkora-currency), and prices written in the pages carry a data-gbp attribute so the switch can repaint them. Times are minutes after midnight (600 = 10:00 am); weekdays run 0 = Sunday to 6 = Saturday.

boutiquesEach boutique’s address, phone, time zone and doors per weekday ([] = closed). The top bar’s open-now lines, the hours tables and the fitting slots read them, each in its own time zone:
London, Marylebone19 Queen Street, London W1U 2RT (Europe/London); Mon 10 am–6 pm, Tue 10 am–7 pm, Wed 10 am–7 pm, Thu 10 am–8 pm, Fri 10 am–7 pm, Sat 9:30 am–7 pm, Sun 11 am–5 pm
New York, SoHo112 Greene Street, New York, NY 10012 (America/New_York); Mon closed, Tue 11 am–7 pm, Wed 11 am–7 pm, Thu 11 am–8 pm, Fri 11 am–8 pm, Sat 10 am–7 pm, Sun 12 pm–6 pm
fitThe bands (28–44), the UK band to EU band table (FR = EU + 15), the UK, US and EU cup ladders and centimetres per inch.
alphaSizes / robeSizesThe sizes of briefs, slips and bodies (XS, S, M, L, XL) and of robes (S/M, M/L, L/XL).
cats / colours / products24 pieces in 5 categories, each with its fabric, colours (each its own photograph), sizes, the sizes sold out, the price, the matching brief of a bra, rating and badge.
setsThe bras, briefs and robes the builder offers; 10% off two pieces, 15% off three; the set Home 01 puts together.
fabricsLace, Silk, Satin, Modal, Cotton, Mesh: what each is made of, its weight, stretch, breath, softness and sheen (0–5), the wash and the dry.
fittings / fitters / bookingBra Fitting (30 min, free); Bridal Fitting (60 min, £25, credited to what you buy); Robe & Lounge Styling (45 min, free); Virtual Fitting (20 min, free). Each fitter’s boutique, days and fittings. A start every 30 minutes, up to 21 days ahead, at least 120 minutes from now; fill sets how full each diary is seeded.
giftThe preset amounts, £25 to £500 for your own, the boxed card’s £3.50, 24 months to spend it, the three designs and the cards the balance check knows.
shopShipping zones (UK £4.50, free from £75, express £8.95; Europe; the United States; the rest of the world), VAT 20% included in the prices, coupon SILK20 for 20% off, same-day dispatch before 3 pm on weekdays, the tracking stages in working days, the demo orders, 30 days to return.

The fit calculator

Both measurements are read in inches (centimetres divided by 2.54). The underbust rounds to the nearest inch and up to an even number: that is the band. The bust rounds to the nearest inch; each inch over the band is one cup on the UK ladder (0 = AA, 1 = A …). The sister sizes are one band down and a cup up, and one band up and a cup down — the same cup volume.

Worked example: the page opens at 76 cm underbust and 89 cm bust: 29.9 in → band 30; 35.0 in → 5 in over the band: 30DD (EU 65E, FR 80E, US 30DD), sister sizes 28E and 32D. In inches, 33 and 37.5: 33 rounds up to band 34, 37.5 rounds to 38, 4 over: 34D (EU 75D, US 34D), sisters 32DD and 36C.

Sets

A set is two or three pieces chosen together. In the bag its pieces share a set reference and take the set’s rate while every one of them is still in the bag; take one out and the others go back to their own price.

Worked example: the set on Home 01 — Noir Lace Balconette in black (£54), Noir Lace Thong in black (£20), Sorrel Satin Robe in blush (£95): £169 − 15% = £143.65. Without the robe: £74 − 10% = £66.60.

How the shop totals

Prices include VAT: the bag shows the VAT inside the total, not on top of it. The set saving comes off first, then the coupon off what is left, then the free-shipping check. Gift cards carry no VAT and take no coupon; a boxed card adds £3.50 and ships with the order; collecting from a boutique ships free.

Worked example: Noir Lace Balconette in black 34C (£54) and Noir Lace Thong in black S (£20): £74, UK shipping £4.50 — £78.50 (VAT inside £13.08). With SILK20: £74 − £14.80, shipping £4.50 — £63.70 (VAT inside £10.62).

Gift cards

A card is valid for 24 months from the day it is sent. The balance check finds it by its code and shows the value, what has been spent, the balance and the date it runs out.

Worked example: SK-4821-0937: £100.00, £28.50 spent — £71.50 left, ready to spend online or in either boutique.

The bag, the wishlist, the applied coupon, the saved size, the fittings 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 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 Satin Stitch — small flowers embroidered along the edges of the blush bands, the plain page titles and the footer. Each flower outlines itself first, fills its petals stitch by stitch from the centre, holds, fades and is worked again elsewhere. Each layer is one canvas:

<canvas class="sk-gl" data-gl="stitch" data-gl-edge="top" aria-hidden="true"></canvas>
  • Place — data-gl-edge picks the edges the flowers run along: top, bottom, both, left or right, so they stay clear of the copy.
  • Colours — --gl-1 the floss, --gl-2 the accent floss, --gl-3 the light on the thread and --gl-alpha the strength. 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.

The footer’s silk bow is one ribbon swept along a spline through the bow’s shape: it twists along its length, turning edge-on to a line and showing its blush back, sways in a breeze and gives way to the pointer (data-bow, block 20). The scroll moments are drawn with plain markup and 2D canvases (data-set-moment, data-fabric-drift, data-robe-belt, blocks 21–23); their colours follow the theme tokens and they rest in their finished state for reduced motion.

RTL (Right To Left)

Silkora 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 silkora-lang and silkora-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, sizes and figures 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 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 Tissue Part preloader, the header, the Veil Lift and soft-rise reveals, the theme and direction switch and the WebGL Satin Stitch.
  • 09–12 — Silkora Data, Boutique Clock, Custom Select, Currency. Silkora Data holds every figure; the Boutique Clock says which boutique is open now and when the next free fitting is; 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 — Silk Bow, The Set, Fabric Drift, The Robe Belt. The footer’s silk bow (every page) and the scroll moments: a set coming together (Home 1), the fabric swatches drifting across (Home 2) and the robe’s belt tying itself (Home 3).
  • 24–37 — Fit Calculator, Sets Builder, Fabric Guide, Fitting Booking, Gift Cards, Order Tracking, Contact Form, Shop, Account Forms, Account Page, Article Tools, Demo Forms, Launch Countdown, FAQ Search. The feature pages: the fit calculator, the sets builder and shop the look, the fabric guide, fitting booking, gift cards with the balance check, order tracking, contact, the 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 sk-veil to a photograph so it rises under a satin veil that slides away (Veil Lift), sk-rise to a title and sk-fade to copy so they rise softly into place. data-delay="0.2" staggers any of them. Add sk-lace to a card so a lace edge rises along its foot on hover.
Scroll moments: The Set slides a bra, its brief and a robe together and counts the set price down; Fabric Drift carries the swatches across the section at their own heights and speeds; The Robe Belt crosses the belt over the drawn robe and ties it in a bow. 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 fabric swatches, the lace edges and tiles, the dress form and the tissue, each lace piece in a light and a dark version (included) — 15 files: 420×420, 352×44, 560×700, 360×360, 1600×1000, 900×1400
img/bands/Wide photo bands — 7 files: 891×891, 2809×1609, 1404×1404, 1410×1566, 2116×1125, 2560×831, …
img/banner/Page-title banners — 5 files: 3168×693, 2304×598, 3316×798, 3633×795
img/blog/The journal’s photographs — 7 files: 1300×975, 1100×825, 1383×891, 1383×1039
img/faces/Round portraits for reviews and avatar groups — 4 files: 100×100, 70×70, 93×93
img/flags/The language picker’s flags (SVG, included) — 6 files: SVG
img/gift/The three gift card designs, drawn with the logo (included) — 3 files: 860×540
img/hero/The home sliders’ photographs — 14 files: 1410×1877, 1258×1573, 1404×967, 1903×1764, 2989×1589, 1300×896, …
img/icons/Illustrated line icons, each in an ink and a light version (included) — 20 files: 120×120
img/logo/Logo, light logo and the favicon (included) — 3 files: 454×64, 64×64
img/menu/Home previews in the mega menu — 3 files: 560×350
img/shop/The pieces on their white plates, one photograph per colour (and the gallery shots) — 53 files: 800×1000, 641×801, 552×691
img/strip/The photo strip and the lookbook — 5 files: 1384×1730, 858×858, 990×1238, 1383×1729
img/team/The fitters’ portraits — 3 files: 594×691, 866×1008, 678×789
img/tiles/The category tiles — 6 files: 1038×1333, 858×1100, 965×1238, 1216×1560, 1226×1573, 641×821

The logo files, the fabric swatches and lace pieces, the dress form, the illustrated icons, the gift card designs and the language flags are included and ready to use. All demo photography shown on the live preview, the product 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, fitting, gift card, checkout, tracking, 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: Work Sans, Red Hat Display

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.