Overview

Urbanza template home pages

An HTML template for a streetwear and sneaker drops store: a sneaker on the wall every Saturday, a raffle for every pair that sells out, skate decks and completes, hoodies printed in-house and gift vouchers. Urbanza 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 drop calendar from today’s date; a raffle per drop with its window, the entries as they come in and the odds in every size; the size run on every product; a size finder; build a complete; gift vouchers; sneaker care with a ready date; order tracking; and a shop with colourways, stock per size, a bag, coupon, shipping zones and VAT.

What’s included

  • 3 home pages, each with its own scroll moment: The Turn (the drop sneaker, built in three.js, turns a full 360° beside its size run), Kickflip (a skate deck flips about its long axis and lands) and Three Passes (a hoodie’s back print screens on in mustard, red and ink)
  • 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
  • WebGL Tunnel Lights rushing past at the edges of the dark bands, the page titles and the footer, and the footer’s logo built from rotating Truchet tiles
  • The drop calendar: a sneaker every Saturday at 10:00 from a line-up of 8, the apparel capsule and the deck series on their Fridays, worked out from today, with the next drop counted down in every top bar
  • The raffle: opens Monday, closes Thursday night, results Friday at noon; one entry per email; the entries grow towards the close and the odds show in every size; your entries and their results stay in the browser
  • The size run on every card and product page, sold-out sizes struck and a low-stock dot that names the sizes left; a size finder for sneakers, tops and decks
  • Build a complete, gift vouchers with a live card preview and a balance check, sneaker care with a ready date, order tracking by working days
  • The shop: categories, size, colour and price filters, sort and search, colourway swatches that swap the photograph, the product pages, bag, coupon, shipping zones, VAT included, collect in store, checkout with an order number, wishlist
  • The lookbook, the crew and the skate team, the journal, FAQ with search, account pages, coming soon, 404
  • Lace Up preloader, Slice Snap photo reveals, a pop on the drop flags, a drop pulse on low stock, Swiper sliders and Fancybox popups
  • Fully responsive, valid HTML5, no console errors
📄 34 HTML files

Getting Started

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

1. Open locally

Unzip the downloaded package and open urbanza/index.html in any modern browser (Chrome, Firefox, Edge, Safari). No build tools or server are required — the drop calendar, the raffles, the size runs, the finder, the builder, the vouchers and the shop all work straight from the files.

2. Deploy to a server

Upload the contents of the urbanza/ 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 drop line-up, the raffle rules, the sizes, the products with their stock, the skate parts, the vouchers, the care services and the shop rules live in one place — see Store 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/ are square; a product’s photograph for each colour is img/shop/<product>-<colour>.png.

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 Drop (The Turn), Skate & Street (Kickflip), Sneaker Wall (Three Passes)
drops.htmlThe drop calendar worked out from today: the sneaker every Saturday, the monthly capsules, sold out, live, raffle open and coming up, a reminder per drop
drop-details.html / raffles.htmlOne drop: the sneaker, its window, pairs, entries and odds in every size, the four-step raffle entry; the open raffles, your entries and their results
sneakers.html / size-guide.htmlThe sneaker wall with the size filter; foot length, chest and shoe size finders with the size tables
skate.htmlThe deck wall and build a complete: deck, width by shoe size, trucks, wheels, risers, bearings, grip, assembly
shop.html / product-details.html / product-details-2.html / cart.html / checkout.html / wishlist.htmlThe shop: categories, size, colour and price filters, sort and search, colourway swatches and sizes with stock, a sneaker and an apparel product page, bag, checkout, wishlist
gift-vouchers.html / order-tracking.htmlGift vouchers with a live card preview and a balance check; order tracking by working days
lookbook.html / lookbook-details.htmlTwelve looks with what they wear; one look with its pieces and the next and previous looks
about.html / team.html / team-details.htmlThe store’s story, the crew and the skate team, one rider with their set-up
services.html / service-details.htmlSneaker care: seven services with a priced estimate and a ready date; one service in four steps
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 (raffle entries, orders, your size, details) and the login pages
coming-soon.html / 404.htmlCountdown to the second store’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 (39 blocks)
assets/js/plugins/jQuery, Bootstrap, Swiper, Fancybox, GSAP, ScrollTrigger, three.js
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 urbanza/, the template. Every page sits in the template’s root; everything the pages load sits under assets/:

urbanza/
├── *.html                              the 34 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 (39 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
    │       └── three.min.js            the 3D sneaker and deck (Home 1 and Home 2)
    ├── fonts/
    │   └── theme-icons/                the sun and moon of the theme switch
    ├── webfonts/                       Font Awesome Free font files
    └── img/                            images, one folder per section
        ├── banner/                      8 files
        ├── bg/                          2 files
        ├── decor/                       4 files
        ├── faces/                       4 files
        ├── flags/                       6 files
        ├── hero/                        3 files
        ├── icons/                       22 files
        ├── logo/                        3 files
        ├── menu/                        3 files
        ├── shop/                        31 files
        ├── street/                      20 files
        ├── team/                        6 files
        └── vouchers/                    3 files

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

Mustard--ub-mustard
Ink--ub-ink
Drop Red--ub-red
In Stock Green--ub-green
Concrete--ub-concrete
Graphite--ub-graphite
Ground--ub-bg
Panel--ub-panel
Hairline--ub-line
Heading--ub-heading
Body--ub-text
Muted--ub-muted

White is the ground, concrete the quiet bands with their plaster texture, graphite the dark bands and the footer; ink sets the type, the price chips and the primary buttons. Mustard is the one accent and is used as a fill — the flags, the skewed plates, the highlighter under the accent words, the speed stripe — never as text on white. Drop red is the signal only: low stock, sold out, live now. --ub-bg, --ub-surface, --ub-panel, --ub-heading and --ub-text are the semantic names the components use — the dark theme swaps those (see Light & Dark Mode). --ub-skew sets the slant of every plate.

Fonts

Two Google Fonts are loaded in the head of each page: Poppins (every heading, the price chips, the buttons and the menu) and Chivo (body text, labels and figures). Swap them by editing the Google Fonts link and the --ub-ff-head / --ub-ff-body variables.

Logo

The logo is the word urbanza knocked out of an ink skewed plate, its right end cut by one mustard Truchet arc. It ships as ready-made PNG files in assets/img/logo/:

  • logo.png — the ink plate, for white grounds (every header in the light theme, the mobile menu)
  • logo-light.png — the white plate, for the headers over the hero photographs and the dark theme
  • favicon.png — the u on its plate with the arc, on an ink square, the browser tab icon

The footer draws the same logo out of Truchet tiles on a canvas, from the page’s own Poppins — change the word in doTruchetLogo() (block 20). To use your own logo, replace the PNG files; the header sizes the logo by its height, so a wider or narrower file needs no CSS change.

Light & Dark Mode

Urbanza 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 urbanza-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--ub-bg
Dark Surface--ub-surface
Dark Panel--ub-panel
Dark Heading--ub-heading
Dark Body--ub-text
Mustard On Dark--ub-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 3D sneaker, the deck, the print and the Truchet logo read their inks from --cv-ink and --cv-paper; the Tunnel Lights read --gl-1, --gl-2 and --gl-alpha, which the dark block swaps.
  • Logo and icons — the light logo shows on photographs and in the dark theme; each illustrated icon 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.

Store Logic

The figures on every page come from one data block, JS block 09 Urbanza Data near the top of main.js (var URBANZA). Edit it once and the calendar, raffles, prices, stock, totals and dates follow. Prices are in pounds sterling; the currency switch shows them in GBP 1, USD 1.27, EUR 1.17 (key urbanza-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); weekdays run 0 = Sunday to 6 = Saturday.

hours / queueFromThe doors for each weekday: Mon 10:00–19:00, Tue 10:00–19:00, Wed 10:00–19:00, Thu 10:00–20:00, Fri 10:00–19:00, Sat 9:00–19:00, Sun 11:00–17:00. The top bar’s open-now line and the hours lists read it; on drop Saturdays the queue forms from 8:00.
dropsThe sneaker drop: every Saturday at 10:00, counted in weeks from epoch (2026-01-03), the line-up cycling: Kerb 01 Lo in Mustard / Ink (120 pairs, raffle), Dove Knit in Dove Grey (60 pairs, raffle), Kerb 01 Hi in Drop Red / Ink (90 pairs, raffle), Night Run in Triple Black (150 pairs, online, first come), Sand Knit Hi in Moss / Cream (80 pairs, raffle), Kerb 01 Lo in Bone / Gum (110 pairs, raffle), Court Leather in Black Leather (70 pairs, in store only), Kerb 01 Hi in Concrete / Gum (100 pairs, raffle). over is how many entries each pair draws at the close. The capsules: the apparel capsule on the first Friday and the deck series on the third Friday of each month at 18:00, their items cycling month by month.
raffleThe window in minutes from the drop: opens -7200 (Monday 10:00), closes -2041 (Thursday 23:59), results -1320 (Friday 12:00); winners pay within 48 hours; curve shapes how the entries come in.
sizes / apparel / deckWidthsThe sneaker run in UK, US, EU and centimetres with the share of pairs (alloc) and of entries (demand) in each size; the apparel sizes by chest; the deck widths with their wheelbase and the shoe sizes they suit.
cats / products20 products in 6 categories, each with its price, rating, fit note and colourways; every colourway carries its stock in every size, which paints the size runs, the chips and the filters.
skateThe builder’s trucks, wheels, risers (from 56 mm wheels), bearings, grips, hardware and assembly (£5, free from £150).
vouchersThe amounts offered, any amount from £10 to £500, 24 months to spend it, three designs, the deliveries and the sample codes for the balance check.
care / careDealThe sneaker care services with their price and working days; 3 services or more take 15% off, 2 pairs or more another 10%.
shop / trackingShipping zones (UK £4.95, free from £100, express £9.95; Europe; the rest of the world), VAT 20% included in the prices, coupon DROP10 for 10% off (not on vouchers), dispatch the same day before 14:00 on weekdays, returns within 30 days; the tracking stages by working day.
team / facts / ratingThe crew and the skate team, the store’s figures and its review average and count.

The drop calendar and the raffle

The calendar is worked out from the visitor’s date: the week since the epoch picks the line-up’s sneaker, and each drop moves from coming up to raffle open, drawing, results, live (until the doors close) and sold out. The entries grow from the opening to the close along the curve, pairs × over × (1 − (1 − t)1/curve), and are spread over the sizes by demand; the pairs are spread by alloc. The odds in a size are its entries over its pairs.

Worked example: on Thursday 22 October, 13:00 the drop is Kerb 01 Hi in Drop Red / Ink, 90 pairs on Saturday 24 October, 10:00. Its raffle opened Monday 19 October, 10:00 and closes Thursday 22 October, 23:59; 87% of the way through, it has 1,230 entries. UK 9 holds 11 pairs and 177 entries: 1 in 16. The capsules in November: Apparel Capsule: Facet Tee, Friday 6 November, 18:00; Deck Series: Drip Deck, Friday 20 November, 18:00.

A raffle entry is kept in the browser with its number. After Friday’s draw it wins when its number’s hash falls inside the size’s share of pairs to entries at the close, so a result never changes once drawn.

The size finder

The foot length plus room for the fit (snug 0, true 0.3, roomy 0.8 cm, and 0.5 cm for a wide foot) picks the first size whose length covers it; the deck width follows the UK size.

Worked example: 27.3 cm, liked roomy: 27.3 + 0.8 = 28.1 cm → UK 9.5 (US 10.5, EU 44.5, 28.5 cm), and an 8.25" deck.

Build a complete

The total is the deck, the trucks, the wheels, the bearings, the grip and the hardware, risers when the wheels are 56 mm or more, and assembly unless the parts come to £150 or more.

Worked example: the Tunnel Lights deck, standard trucks, cruiser wheels (risers added), ceramic bearings and clear grip: £229.00, assembly free.

Gift vouchers and sneaker care

Worked example: a £75 voucher posted as a printed card: £75 + £1.50 = £76.50. Sneaker care for deep clean, suede & nubuck revive, sole de-yellowing on two pairs: £87.00 a pair, £174.00, less £26.10 for three services and £14.79 for two pairs — £133.11.

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 (never off a voucher) before the free-shipping check.

Worked example: Kerb 01 Lo in Ink / Sail, UK 9 (£120) and Three Pass Hoodie in Heather Grey, M (£75): £195, UK shipping free — £195.00 (VAT inside £32.50). With DROP10: £195 − £19.50, shipping free — £175.50 (VAT inside £29.25).

The bag, the wishlist, the applied coupon, the raffle entries, your size 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, wishlist and one past raffle entry so every page has something to show; to start empty, set the two demo lists in doShop() (block 31 Shop) to []. Checkout and the raffle confirm on screen with a reference — connect them to your own systems to take real orders and entries.

WebGL, 3D & Canvas

One small WebGL shader draws the Tunnel Lights — strip lights rushing past at the left and right edges of the dark bands, the plain page titles and the footer, the way the lamps of an underpass stream past a car window. Each layer is one canvas:

<canvas class="ub-gl" data-gl="tunnel" data-gl-edge="0.32" aria-hidden="true"></canvas>
  • Place — data-gl-edge sets how wide the clear middle is, so the copy stays clean; data-gl-vy moves the vanishing point up or down.
  • Colours — sodium mustard and strip white: --gl-1, --gl-2 and the strength --gl-alpha. The theme switch repaints them; scrolling speeds them up.
  • 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 drop sneaker on Home 1 and the deck on Home 2 are built in three.js from their own geometry — no model files (data-turn-canvas, block 21; data-kf-canvas, block 22). The hoodie print (data-passes-canvas, block 23) and the footer’s Truchet logo (data-truchet, block 20) are plain 2D canvases. Every scene is scrubbed against its own section’s travel, none of them pins the page, and each rests in a settled state for reduced motion.

RTL (Right To Left)

Urbanza 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 urbanza-lang and urbanza-dir) and reloads; the one-line script in <head> then sets dir="rtl" and swaps the three stylesheets for the files named in their data-rtl attribute before the page paints. Nothing is translated — you bring your own right-to-left copy. To make a page right to left for good:

1. Set The Direction

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

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

2. Swap Three Stylesheets

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

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

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 39 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 Lace Up preloader, the header, the Slice Snap and soft-rise reveals, the theme and direction switch and the WebGL Tunnel Lights.
  • 09–12 — Urbanza Data, Drop Engine, Custom Select, Currency. Urbanza Data holds every figure; the Drop Engine works out the drops, the raffle windows, the size runs, the entries and the odds from the date; 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 — Truchet Logo, The Turn, Kickflip, Three Passes. The footer’s logo built from Truchet tiles (every page) and the scroll moments: the drop sneaker’s full turn (Home 1), the kickflip (Home 2) and the hoodie print in three passes (Home 3).
  • 24–39 — Store Clock, Drop Calendar, Drop Page & Raffle, Size Guide, Build A Complete, Gift Vouchers, Contact Form, Shop, Account Forms, Account Page, Article Tools, Demo Forms, Launch Countdown, Sneaker Care, Order Tracking, FAQ Search. The feature pages: open now from the clock, the drop calendar, the drop page with its raffle entry, the size guide, build a complete, gift vouchers, contact, the shop, accounts, the journal, demo forms, the countdown, sneaker care, order tracking, 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 ub-slice to a photograph’s wrapper so it arrives as horizontal slices that snap into line from alternate sides (Slice Snap; data-slices="6" sets how many), ub-rise to a title and ub-fade to copy so they rise into place, and ub-pop to a flag so it pops past full size and settles. data-delay="0.2" staggers any of them.
Countdowns: any element with data-count-to counts down to the next drop moment on its own; the coming-soon page counts down to 10:00 on the next 20 March — no date to update. Change it in doLaunchCountdown().

Images

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

img/banner/Page-title banners and photo bands — 8 files: 2817×1762, 3098×774, 2817×1591, 2893×814, 2809×1280
img/bg/The light and dark concrete textures under the bands (included) — 2 files: 800×800
img/decor/The brush stroke and the spray drips (included) — 4 files: 1800×520, 520×760, 380×900, 640×520
img/faces/Round portraits for bylines, reviews and avatar groups — 4 files: 385×390, 400×408, 264×264, 298×300
img/flags/The language picker’s flags (SVG, included) — 6 files: SVG
img/hero/The home sliders’ full-screen photographs — 3 files: 2817×1591, 2817×1762
img/icons/Illustrated line icons, each in an ink and a light version (included) — 22 files: 120×120
img/logo/Logo, light logo and the favicon (included) — 3 files: 472×84, 64×64
img/menu/Home previews in the mega menu — 3 files: 560×350
img/shop/The sneakers in every colourway, the hoodies, tees, outerwear and the decks, transparent PNG packshots named <product>-<colour>.png (the drop sneaker and the decks included) — 31 files: 1000×1000, 760×760, 498×498, 1441×1441, 561×561, 722×722, …
img/street/Street photography: the lookbook, the category tiles, the sliders, the about and account pages — 20 files: 1408×2112, 600×892, 1200×1200, 962×1422, 845×845, 1409×1609, …
img/team/The crew and the skate team, square portraits — 6 files: 800×800, 1200×1200, 750×750, 600×600
img/vouchers/The three gift-card designs (included) — 3 files: 1200×760

The logo files, the textures and decor, the illustrated icons, the drawn product packshots (the drop sneaker in every colour and the decks), the gift cards 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, raffle, voucher, care, 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
  • three.js
  • Fancybox 3.5
  • Font Awesome Free
  • RTLCSS
  • Google Fonts: Poppins, Chivo

All plugin files and icon fonts are loaded locally. The only external requests are the Google Fonts stylesheet, the Google Maps embed 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.