Overview

Relova template home pages

An HTML template for a friendly vintage and pre-loved clothing store that also takes consignments: one-of-a-kind pieces from the sixties to the noughties, graded honestly and measured by hand. Relova 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: every piece exists once, so a piece in the bag is held for 20 minutes and a sold piece drops off every rail; the rail filters by era and condition grade; a consignment payout estimate by category, label tier, grade and age; a five-step consign form; an alterations menu with ready dates; events on repeat rules; a size finder; the weekly rail drop with a live countdown; and a consignor account with markdowns and payouts.

What’s included

  • 3 home pages, each with its own scroll moment: Label Sew (the shop’s woven label drops into a coat’s neck and is sewn on stitch by stitch), Payout Gauge (one coat’s payout climbs as its grade rises from C to A+) and Patchwork Jacket (twelve offcuts fly in and are top-stitched into a jacket)
  • A light 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
  • WebGL seventies waves along the bands, the page titles and the footer, and a vinyl record with procedural grooves spinning in the footer
  • The rail: 14 one-of-a-kind pieces (and 3 already sold) in 6 categories with era (60s, 70s, 80s, 90s, 00s), year, grade, size, colour, measurements, fabric, label and flaw; filters, sort and search
  • One of one: a piece goes in the bag once and is held for 20 minutes, counted down; checkout marks it sold and it drops off every grid, rail and card
  • Consignment: 8 categories, 4 label tiers and 4 grades; a price range, your share or 20% more as store credit, a five-step form and a consignor account
  • The workroom: 12 alterations and repairs with prices and working days, express, the ready date; a piece can be fitted before it ships
  • Events on monthly and weekly rules with places left; a size finder that reads every piece’s measurements; the weekly rail drop with its countdown
  • The lookbook, the team, the journal, FAQ with search, account pages, coming soon, 404
  • Rail Flick preloader, Patch Pin card reveals, word-by-word titles, an embroidered patch on hover, Swiper sliders and Fancybox video popups
  • Fully responsive, valid HTML5, no console errors
📄 31 HTML files

Getting Started

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

1. Open locally

Unzip the downloaded package and open relova/index.html in any modern browser (Chrome, Firefox, Edge, Safari). No build tools or server are required — the shop clock, the holds, the filters, the payout estimate, the consign form, the alterations, the events and the bag all work straight from the files.

2. Deploy to a server

Upload the contents of the relova/ 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 eras, the grades, the pieces, the consignment rates, the workroom menu, the events, the team and the shop rules live in one place — see Shop 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/ are 602×753 and the portraits in img/team/ 822×822; a piece’s photograph is named after its id in the data.

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 Shop (Label Sew), Consign (Payout Gauge), The Eras (Patchwork Jacket)
shop.html / new-in.html / shop-by-era.htmlThe rail with filters by category, era, grade, size, colour and price, sort and search; this week’s drop with its countdown and Just Sold; the five decades, each with its own rail
product-details.html / cart.html / checkout.html / wishlist.htmlOne piece with its era, grade, measurements, flaw and fit, and an alteration before it ships; the bag with each piece’s hold; checkout; wishlist
consign.html / consign-form.html / condition-guide.htmlHow consigning works with the payout estimator, the label tiers and the rules; the five-step consign form; the four condition grades
alterations.htmlThe workroom’s menu: pick the jobs, express or not, the drop-off day — the price and the ready date
size-guide.htmlVintage sizing decoded and the size finder that matches your measurements to every piece’s own
events.htmlThe kilo sale, swap night, the repair cafe and the consignment clinic with their next dates, places left and sign-up
lookbook.html / lookbook-details.htmlThe lookbook stories; one story with the pieces it shows, ready to shop
about.html / team.html / team-details.htmlThe shop’s story; the buyers and the workroom; one buyer with their picks
blog.html / blog-details.htmlThe journal with search; a post with reading time, share and comments
faq.htmlQuestions on buying, consigning, alterations and delivery, 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 consignor account (pieces on the rail, sold, paid, orders) and the login pages
coming-soon.html / 404.htmlCountdown to the second shop’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 (35 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 relova/, the template. Every page sits in the template’s root; everything the pages load sits under assets/:

relova/
├── *.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 (35 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/                         2 files
        ├── banner/                      7 files
        ├── blog/                        5 files
        ├── era/                         5 files
        ├── faces/                       4 files
        ├── flags/                       6 files
        ├── hero/                        3 files
        ├── icons/                       26 files
        ├── logo/                        4 files
        ├── look/                        17 files
        ├── menu/                        3 files
        ├── patch/                       6 files
        ├── rail/                        8 files
        ├── shop/                        20 files
        └── team/                        6 files

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

Burnt Orange--rl-orange
Bright Orange--rl-orange-bright
Mustard--rl-mustard
Clay--rl-clay
Teal--rl-teal
Umber--rl-umber
Ivory--rl-ivory
Kraft--rl-kraft
Ground--rl-bg
Surface--rl-surface
Panel--rl-panel
Tonal--rl-tonal
Hairline--rl-line
Heading--rl-heading
Body--rl-text
Accent Text--rl-accent-text

A warm off-white is the ground and umber sets the type, the top bar and the footer. Burnt orange is the one accent — the buttons, the accent word in every title, the links (in the darker --rl-accent-text for small text) — and with mustard and clay it makes the seventies triad the waves are striped in. Kraft is the swing tags; teal and the other era tints mark the decades on the cards. --rl-bg, --rl-surface, --rl-panel, --rl-heading and --rl-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: Epilogue (every heading, with its italic for the accent word, the buttons, the prices and the small labels in tracked capitals) and Rethink Sans (body text and the menu). Swap them by editing the Google Fonts link and the --rl-ff-head / --rl-ff-body variables.

Logo

The logo is the word relova in Epilogue, its o a burnt-orange four-hole button sewn on with a cross of thread. It ships as ready-made PNG files in assets/img/logo/:

  • logo.png — umber lettering, for light grounds (every header in the light theme, the mobile menu)
  • logo-light.png — ivory lettering, for the headers over photographs, the footer and the dark theme
  • tag.png — a kraft swing tag with the logo, the one the preloader’s rail stops on
  • favicon.png — the button on an umber 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

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

Dark Ground--rl-bg
Dark Surface--rl-surface
Dark Panel--rl-panel
Dark Heading--rl-heading
Dark Body--rl-text
Orange On Dark--rl-accent-text
  • Tokens — the dark values sit in one block, [data-theme="dark"] { … }, right after :root in style.css. Change a dark colour there.
  • Canvases — the label, the gauge and the patchwork read their inks from the theme tokens and repaint on the switch; the waves read --gl-1 to --gl-3.
  • Logo and icons — the light logo shows on photographs and in the dark theme; each illustrated icon ships in an umber 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.

Shop Logic

The figures on every page come from one data block, JS block 09 Relova Data near the top of main.js (var RELOVA). Edit it once and the cards, prices, estimates, dates and totals follow. Prices are in pounds sterling with VAT included; the currency switch shows them in GBP 1, USD 1.27, EUR 1.17 (key relova-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 shop floor for each weekday: Mon 10 am–6 pm, Tue 10 am–6 pm, Wed 10 am–6 pm, Thu 10 am–8 pm, Fri 10 am–6 pm, Sat 10 am–6 pm, Sun 11 am–5 pm. The top bar’s open-now line, the hours tables and the contact page read it.
deskThe consignment desk’s hours for drop-offs and valuations (shut on Sunday and Monday): Tue 11 am–4 pm, Wed 11 am–7 pm, Thu 11 am–4 pm, Fri 11 am–4 pm, Sat 11 am–4 pm.
dropThe weekly rail drop: Thursdays at 11 am. The top bar, the New In page and the Home 1 strip count down to it; each piece’s drop says which week it went out in (0 = this week).
eras / gradesThe decades stocked (60s, 70s, 80s, 90s, 00s), each with its tag colour; the condition grades and the share of full value each fetches: A+ Deadstock ×1.25, A Excellent ×1, B Very Good ×0.75, C Good ×0.5.
cats / sizes / coloursThe shop’s 6 categories, the sizes and the colour swatches the filters list.
products17 pieces, one of each: name, category, era and year, grade, size and modern fit, colour, fabric, label, price, the drop it went out in, the measurements in cm (pit to pit, length, waist, inside leg), a flaw if it has one, a second photograph (img2), and sold for the Just Sold strip.
consignConsigning: the categories’ base values (Coats & Jackets £80, Knitwear £40, Dresses & Sets £55, Shirts & Blouses £30, Trousers & Denim £40, Tees & Sweats £22, Shoes & Boots £45, Bags & Accessories £35), the label tiers (High Street ×1 (you keep 40%), Premium High Street ×1.6 (you keep 50%), Designer ×3.2 (you keep 60%), Luxury ×7 (you keep 70%)), the era factors (1960s–1990s ×1.2, 2000s ×1, 2010s Or Newer ×0.85), 20% more as store credit, a 15% range either side, the minimum resale (£20), 90 days on the rail with a 20% markdown from day 45, payout 14 days after the sale, and the three ways in.
alterationsThe workroom’s 12 jobs with their price and working days, express (+50%, half the days), its closed days (Sundays and Mondays) and the hem a piece can be fitted with on its product page.
eventsEvenings and weekends on repeat rules (n = which week of the month, −1 the last, 0 every week): The Kilo Sale — the first Saturday of the month, 10 am–4 pm; Swap Night — the last Thursday of the month, 6:30 pm–9 pm, 60 places; Repair Cafe — the second Sunday of the month, 12 pm–3 pm, 24 places; Consignment Clinic — every Wednesday, 5 pm–7 pm, 12 places.
shopShipping zones (UK £4.95, free from £80, express £7.95; Europe; the rest of the world), VAT 20% included, coupon RELOVE10 for 10% off, same-day dispatch before 1 pm on weekdays, a hold of 20 minutes, 14 days to return.
team / looks / accountThe buyers and the workroom with their days; the lookbook stories and the pieces each shows; the demo consignor and the pieces they brought in.

One of one

There are no quantities. A piece in the bag is held for 20 minutes from the moment it went in, counted down on its line; when the hold runs out the line says so and offers to hold it again. At checkout the pieces are marked sold (key relova-sold-v1) and drop off every grid, rail and card on the site; a bag lets a sold piece go, and the wishlist marks it sold with a link to more of its decade. A piece can be fitted with an alteration on its product page: the price is added to the line and the dispatch date waits for the workroom.

The consignment estimate

A piece’s resale price is its category’s base value × its label tier × its grade × its era factor, to the nearest five pounds, shown as a range 15% either side. The consignor keeps the tier’s share of the sale, or 20% more as store credit; a piece that would sell under £20 is declined, and the estimate says why.

Worked example: a premium-label coat from the 1960s–1990s at grade A: £80 × 1.6 × 1 × 1.2 → £155 (range £130–£180); you keep 50%: £78 (£65–£90), or £94 in store credit. A high street tee from the 2010s or newer at grade C comes to £10 — under the minimum, so it is declined.

The payout gauge on Home 2 runs one piece through the same sum at every grade (its data-gauge-cat, -tier and -era attributes name it): a designer coat from the 1960s–1990s pays C £93, B £138, A £183, A+ £231.

On the rail

The consignor account prices each piece with the same sum and says where it stands: on the rail (day n of 90), marked down 20% from day 45, back to collect after day 90, sold with its payout due 14 days later, or paid.

Worked example: the demo’s Cord Flares (resale £35) are on day 52: marked down to £28. The Mohair Cardigan (resale £75) sold after 55 days on the rail at the markdown price, £60, and paid out £30.

The workroom

Jobs on one piece run one after another: the longest sets the pace and every further job adds a day. Express costs half as much again and halves the days. The ready date counts the workroom’s working days from the drop-off day; it is shut on Sundays and Mondays.

Worked example: trousers hemmed and a knit darned in three places, dropped off on Saturday 24 October 2026: £44, 4 working days, ready Friday 30 October 2026. Express: £66, 2 working days, ready Wednesday 28 October 2026.

Events

Each event runs on its rule and the next dates come from the visitor’s own date; one that has finished today moves on to the next. Places taken are seeded from the event and the date, so every visitor sees the same list.

Worked example: on Saturday 24 October 2026 after 1 pm the next dates are Consignment Clinic on Wednesday 28 October 2026, Swap Night on Thursday 29 October 2026, The Kilo Sale on Saturday 7 November 2026, Repair Cafe on Sunday 8 November 2026.

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: the demo bag — the Mustard Roll-Neck (£48) and the Pinstripe Wide-Leg Trousers (£52) with a hem (£14): £114, UK shipping free — £114.00 (VAT inside £19.00). With RELOVE10: £114 − £11.40, shipping free — £102.60 (VAT inside £17.10).

The bag with its holds, the wishlist, the sold pieces, the applied coupon, the consignments 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 29 One-Of-A-Kind Shop) to []. Checkout and the consign form confirm on screen with a reference — connect them to your own systems to take real orders and consignments.

WebGL & Moments

One small WebGL shader draws the seventies waves — stacked stripes of orange, mustard and clay rippling along a band’s edge like a seventies poster, with the page’s ground showing between them. Each layer is one canvas:

<canvas class="rl-gl is-top" data-gl="waves" data-gl-edge="top" data-gl-reach="1" data-gl-bands="5" aria-hidden="true"></canvas>
  • Place — data-gl-edge sets the edge the waves rise from (top or bottom), data-gl-bands how many stripes, and data-gl-reach how far into the band they reach; the stack thins out as it leaves its edge, so it never sits under the copy.
  • Colours — --gl-1, --gl-2, --gl-3 and the strength --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.

The footer’s vinyl record is a second shader (canvas[data-vinyl], block 10): fine grooves with the gaps between tracks, a highlight that stays put while the disc turns, and the orange label with the logo’s four holes. It speeds up to 33⅓ while the pointer is over it. The scroll moments are drawn on plain 2D canvases (data-sew, data-gauge, data-patchwork, blocks 20–22); the patchwork’s fabrics are drawn in code, their colours follow the theme tokens, and they rest in their finished state for reduced motion.

RTL (Right To Left)

Relova 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 relova-lang and relova-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, measurements 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 35 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 Rail Flick preloader, the header, the Patch Pin and word-rise reveals, the theme and direction switch and the WebGL seventies waves.
  • 09–12 — Relova Data, Vinyl Record, Custom Select, Currency. Relova Data holds every figure; the vinyl record spins in the footer; 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–22 — Label Sew (Home 1), Payout Gauge (Home 2), Patchwork Jacket (Home 3). The scroll moments: the woven label sewn into a coat (Home 1), the payout gauge (Home 2) and the patchwork jacket (Home 3).
  • 23–35 — Shop Clock, Consignment, Alterations, Events, Size Finder, Contact Form, One-Of-A-Kind Shop, Account Forms, Account Page, Article Tools, Demo Forms, Launch Countdown, FAQ Search. The feature pages: open now, the consignment desk and the rail-drop countdown from the clock, the consignment estimate and form, the alterations menu, events, the size finder, contact, the one-of-a-kind 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 rl-pin to a card or photograph so it drops onto the board and a pin pops into it (Patch Pin), rl-words to a title so it rises word by word, and rl-fade to copy so it rises softly into place. data-delay="0.2" staggers any of them. Add rl-patchable to a card with a <span class="rl-patch"> inside it, and an embroidered patch is stitched onto its corner on hover.
Scroll moments: Label Sew drops the woven label into the coat’s neck and sews it on stitch by stitch as the steps beside it light; Payout Gauge fills its arc as the grade rises and the payout climbs with it; Patchwork Jacket flies twelve offcuts onto a chalked outline and top-stitches each as it lands. 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 woven label the Home 1 moment sews on and the coat lining it is sewn into (drawn, included) — 2 files: 760×300, 1200×900
img/banner/Page-title banners and photo bands — 7 files: 2809×1580, 2817×1614, 2945×1400, 2812×1609, 2820×1586
img/blog/Journal photographs — 5 files: 2817×1614, 1382×1022, 1300×745
img/era/The five decades’ tiles and slides — 5 files: 772×964, 770×963, 769×962, 771×961
img/faces/Round portraits for reviews and avatar groups — 4 files: 240×240
img/flags/The language picker’s flags (SVG, included) — 6 files: SVG
img/hero/The home sliders’ photographs — 3 files: 1581×908, 1558×1097, 2817×1614
img/icons/Illustrated line icons, each in an umber and a light version (included) — 26 files: 120×120
img/logo/Logo, light logo, the swing tag and the favicon (included) — 4 files: 366×96, 64×64, 220×300
img/look/The lookbook stories and the pinned wall — 17 files: 1386×929, 1419×813, 1038×1363, 957×1283, 1022×1435, 1408×1042, …
img/menu/Home previews in the mega menu — 3 files: 560×350
img/patch/Embroidered patches for the hover and the heroes (drawn, included) — 6 files: 128×128
img/rail/The garments on the preloader’s rail (drawn, included) — 8 files: 300×600
img/shop/The one-of-a-kind pieces: one photograph each, a second for some — 20 files: 602×753, 602×752, 674×842, 864×1080, 502×627, 674×841, …
img/team/The team’s portraits — 6 files: 822×822, 851×851, 1047×1047

The logo files, the drawn garments, patches, label and lining, the illustrated icons 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 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, consign, alterations, events, 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: Epilogue, Rethink Sans

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.