Overview

Captura template home pages

A clean, colour-led HTML template for a commercial photographer who shoots for brands: e-commerce packshots, styled still life on built sets, lifestyle with models and campaign key visuals, in a studio or on location. The pages put the products first — full-bleed colour-field sliders, shadowed project tiles, fanned composites, a lightbox library, three project layouts — and the logic is worked out rather than typed in: a quote by the final image with set builds, a usage licence for web, print and outdoor, retouching, colourways, location and crew; packages that open the quote; a catalogue calculator by the SKU; a studio or location booking on a live calendar; a licence extension; and a currency switch.

What’s included

  • 3 home pages, each with its own scroll moment: The Usage Meter (one campaign image moves from a phone to a magazine page to a billboard as the licence widens), Retouch Before / After (the raw frame under a wipe, the retouch steps ticking) and Six Colourways (one bag fills a grid in six colours)
  • A light theme by default and a dark theme on one switch, remembered between visits and applied before the page paints
  • Right-to-left stylesheets and a flag language picker; a currency switch (euros, pounds, dollars) that repaints every price
  • WebGL: Colour Fields — flat set-paper planes sliding past each other at the edges of the page titles and bands — and the brand mark as extruded 3D type turning in the footer
  • 15 projects for 14 brands with shoot-type, brand, industry and year filters and search; three project layouts; Brands A–Z and a brand page; an image library
  • Four shoot types, a quote builder with saved quotes, four packages, a usage & licensing page with an extension calculator, a six-step booking on a live calendar and a client area
  • Turntable preloader, Grid Snap reveals that deal cards along the column grid, the thirds-grid hover, Swiper sliders and Fancybox
  • About, the studio and locations, team and profile, process, journal, FAQ with search, contact with a map and the PHP form, account pages, coming soon with a countdown, 404
  • Fully responsive from 390 px to wide screens
📄 31 HTML files

Getting Started

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

1. Open locally

Unzip the downloaded package and open captura/index.html in any modern browser (Chrome, Firefox, Edge, Safari). No build tools or server are required — the quote, the packages, the booking calendar and the filters all work straight from the files.

2. Deploy to a server

Upload the contents of the captura/ 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 shoot types and their rates, the set builds, the usage tiers, the retouching, the packages, the calendar, the brands, the projects and the team live in one place — see Quote, Usage & Booking.

Tip: Replace the neutral placeholder images in assets/img/ with your own photography at the same dimensions; a project’s first frame is its cover on every listing.

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 (the usage meter), Still Life & Campaigns (retouch before / after), E-Commerce (six colourways, the catalogue calculator)
work.htmlEvery project with shoot-type tabs, brand, industry and year selects, search and a count
gallery.htmlThe image library: every project frame in a masonry and a lightbox, by shoot type
project-details.html / project-details-2.html / project-details-3.htmlThree project layouts: a campaign with big frames, a packshot series with its SKU sheet, a lifestyle slider; credits, previous / next
brands.html / brand-details.htmlEvery brand A to Z with its projects; one brand’s page
services.html / service-details.htmlThe four shoot types with their rates; one shoot type in full with a sample quote
packages.htmlFour packages priced by the quote engine, side by side; Start With This opens the builder
quote.htmlThe quote builder with its live summary, and the rate card
booking.htmlBook A Shoot in six steps: the studio or a location, a free day, the products, sets and usage, details, review
usage.htmlThe usage tiers, the licence grid by term, and the licence extension calculator
process.htmlHow a shoot runs in six steps, with booking questions
about.html / studio.htmlThe studio’s story; the four spaces with their specs and the locations
team.html / team-details.htmlThe team and one team profile
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 line and the sample desk, the form, studio hours, the next free days and a map
account.html / login.html / register.html / forgot-password.htmlThe client area (booked shoots, saved quotes, deliveries and invoices, details) and the login pages
coming-soon.html / 404.htmlCountdown to the daylight cove, 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 (37 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 captura/, the template. Every page sits in the template’s root; everything the pages load sits under assets/:

captura/
├── *.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
    ├── js/
    │   ├── main.js                     all custom scripts, numbered JS INDEX (37 blocks)
    │   └── plugins/                    jQuery, Bootstrap, GSAP, ScrollTrigger, Swiper, Fancybox, three.js
    ├── fonts/
    │   └── theme-icons/                the sun and moon of the theme switch
    ├── webfonts/                       Font Awesome Free font files
    └── img/                            images, one folder per section
        ├── blog/                        5 files
        ├── face/                        4 files
        ├── flags/                       6 files
        ├── icons/                       32 files
        ├── logo/                        4 files
        ├── menu/                        3 files
        ├── photo/                       3 files
        ├── team/                        6 files
        └── work/                        64 files

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

Ink--cp-ink
Terracotta--cp-terracotta
Petrol--cp-petrol
Sage--cp-sage
Sky--cp-sky
Peach--cp-peach
Blush--cp-blush
Sand--cp-sand
Caret Red--cp-red
Ground--cp-bg
Band--cp-band
Tile--cp-surface
Heading--cp-heading
Body--cp-text
Muted Word--cp-mute-word
Hairline--cp-line

The ground is a near white with white tiles under a soft lift; ink is the headings and the square buttons. The colour comes from the set papers — terracotta, petrol, sage, sky, peach, blush and sand, the painted planes of a studio set — used for colour-field bands, tile grounds, the colourways and the WebGL planes. Terracotta is also the accent for small text and hovers; the red is for marks only (the caret after a muted title word, the live dot, badges). --cp-bg, --cp-band, --cp-surface, --cp-heading and --cp-text are the semantic names the components use — the dark theme swaps those (see Dark & Light Mode).

Fonts

Two Google Fonts are loaded in the head of each page: DM Sans (titles in mixed case, the display word, figures, buttons and the navigation) and Roboto (the body and the leads). Swap them by editing the Google Fonts link and the --cp-ff-head / --cp-ff-body variables.

Titles

A section title ends on a muted word with a red caret: wrap the word in <span class="cp-mute cp-caret"> (or cp-mute alone for no caret). Titles are set on lines with <span class="line">.

Logo

The logo is Captura in DM Sans 700 with a red caret on the baseline. It ships as ready-made PNG files in assets/img/logo/:

  • logo.png — ink, for light bars
  • logo-light.png — white, over the Home 01 hero and in the dark theme
  • mark-light.png — the C and its caret alone, white (the account, coming-soon and error pages)
  • favicon.png — the browser tab icon

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

Dark & Light Mode

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

Dark Ground--cp-bg
Dark Band--cp-band
Dark Tile--cp-surface
Dark Heading--cp-heading
Dark Body--cp-text
Accent On Dark--cp-accent-text
  • Tokens — the dark values sit in one block, [data-theme="dark"] { … }, right after :root in style.css.
  • Bands that keep their ground — sections with is-night (the ink quote band) stay dark, and is-paper is-petrol / is-paper is-terracotta keep their set paper in both themes.
  • Icons — each line icon ships in an ink and a white version; the right one shows by theme and ground.
  • Start dark — add data-theme="dark" to the <html> tag of each page; the switch still works.

Quote, Usage & Booking

The figures on every page come from one data block, JS block 09 Captura Data near the top of main.js (var CAPTURA). Edit it once and the rate card, the shoot pages, the packages, the quote, the booking and the client area follow. Prices are in euros (the currency switch converts them); times are minutes after midnight (510 = 8:30); weekdays run 0 = Sunday to 6 = Saturday.

currencyEuros, pounds and dollars with their symbols and rates to the euro.
hours / intake / calendarThe studio’s hours for each weekday, the sample intake desk, and the booking calendar: 42% of shoot days booked and 14% on hold by a seeded rule, nothing bookable within 3 days, 80 days ahead.
vat / deposit / rush / deliveryVAT 21%; a 30% deposit holds the date; rush delivery adds 35% of the retouching (at least €150); the files arrive 7 working days after the shoot, 2 with rush.
shootsEach shoot type’s rate per final image, its minimum and the images a shoot day yields.
sets_build / usage / retouchThe set builds by the set; the usage tiers as a share of the creative fee with the term and territory factors; the retouching levels by the image.
colourway / location / extrasColourway variants at 40% of the rate; the location fee by the day and travel by the km both ways past 20 km; the crew by the day.
packagesFour presets of the quote form, priced by the same engine.
brands / projects / team14 brands, 15 projects with their type, year, shots, sets, usage, retouch and frames, and the team.
colourways / retouchStepsThe six colourways of Home 03’s bag (their paper, hue turn and saturation) and the five steps of Home 02’s retouch.

The shoot types

Packshot€38 an image · at least 10 images · 45 images a shoot day — Products on white or a flat colour, lit and shot to one spec for the shop and the marketplaces.
Still Life€210 an image · at least 4 images · 10 images a shoot day — Styled product images on built sets and painted papers, made for launches, packaging and print.
Lifestyle€290 an image · at least 6 images · 14 images a shoot day — Products in use with models, in the studio's room sets or on location, for social, web and the catalogue.
Campaign€680 an image · at least 3 images · 5 images a shoot day — Key visuals for a launch or a season, art directed, built and retouched to run from a phone to a billboard.

How a quote adds up

The final images (never fewer than the shoot type’s minimum) times the rate are the creative fee; the shoot days are the images plus colourways over what a day yields. Colourway variants cost 40% of the rate each. Styled and built sets are added by the set. The usage licence is the creative fee (with the colourways) times the tier’s share, the term and the territory. Retouching is by the image; rush delivery adds 35% of it. On location, a fee by the shoot day and travel both ways past 20 km are added; the crew is by the day. VAT goes on top; the deposit is 30%.

Paper Sweepincluded — White or one painted paper colour, included
Styled Set€420 a set — Props, surfaces and two papers, styled by the set designer
Built Set€1,350 a set — Plinths, flats and painted forms built in the workshop
Web & Social25% of the creative fee — Your site, the marketplaces, social posts and paid social
Web + Print55% of the creative fee — Adds catalogues, packaging, press ads and point of sale
Web + Print + Outdoor100% of the creative fee — Adds posters, billboards, transit and digital out of home
Term & territory1 Year × 1, 3 Years × 1.8, Perpetual × 3; One Country × 1, Europe × 1.4, Worldwide × 2
Basic retouchingincluded — Colour, exposure, dust and a clean background
Standard retouching€16 an image — Shape, symmetry, labels straightened, clipping path
Advanced retouching€42 an image — Colour matched to the swatch, reflections, seams and stitching
Composite retouching€95 an image — Several frames combined, new shadows, ghost mannequin
Crew & locationProp Stylist €560 a day, Hand Model €420 a day, Lifestyle Model €750 a day, Digital Technician €390 a day, Short Video Loops €640 a day; location €380 a day, travel €0.48 a km both ways past 20 km
Worked example: ten still lifes with two colourways on two styled sets, a year of web and print in Europe, advanced retouching and a prop stylist: 10 still life images €2,100; 2 colourways €168; 2 styled sets €840; usage Web + Print, Europe, 1 Year €1,746.36; advanced retouching €504; prop stylist €1,120 — subtotal €6,478.36, VAT €1,360.46, €7,838.82, deposit €2,351.65, 2 shoot days. The packages total E-Commerce Starter €2,442.99, Product Launch €5,698.62, Lifestyle Day €8,316.81, Campaign €13,231.35 with VAT.

The booking calendar and the live line

Each shoot day’s state comes from a seeded rule on the date, so every page and every visit agrees; the header’s live line says whether a set is shooting now, the studio is open or closed, and names the next free shoot day. Replace dayStatus() in block 10 with a call to your own calendar to show real bookings; the booking, the free-days strips and the live line all read from it.

Saved quotes and bookings are kept in the browser (localStorage) so they follow the visitor from page to page and show in the client area; a package’s Start With This carries its settings to the quote builder the same way. The booking confirms on screen with a reference — connect it to your own systems to take real bookings. The quote engine is block 23.

WebGL & Motion

Two WebGL layers draw the moving decoration: Colour Fields — six flat set-paper planes with hard edges sliding slowly past each other at a band’s edges, each throwing a soft shadow on the one behind — and the footer’s extruded type, the brand mark built from DM Sans outlines with three.js and turning slowly. A Colour Fields layer is one canvas:

<canvas class="cp-gl" data-gl="fields" aria-hidden="true"></canvas>
<canvas class="cp-gl" data-gl="fields" data-gl-side="end" aria-hidden="true"></canvas>   (the end side only)
  • Colours — the planes read their papers from CSS variables on the canvas or its section, --gl-p1 to --gl-p6, and their strength from --gl-alpha; the extruded type reads --type-face, --type-side and --type-caret.
  • 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.
  • Remove one — delete the canvas; nothing else depends on it.

Reveals and hover

Put cp-snap-row on a row and cp-snap on its cards: the cards are dealt out along the column grid, one column per step, and snap into their slots (block 04); cp-snap alone on a photo steps it in from two columns away. cp-fade lifts text into place; data-delay="0.2" staggers it. cp-thirds on a photo frame gives it the thirds-grid hover.

RTL (Right To Left)

Captura is RTL-ready: the layout with its paddings and margins, the sliders, the animations and the WebGL planes all mirror. Right to left comes from the stylesheets, not from separate pages: the language picker (a flag and a code) lists the languages that read left to right and right to left. Choosing Arabic stores the language and the direction (keys captura-lang and captura-dir) and reloads; the script in <head> then sets dir="rtl" and swaps the three stylesheets for the files named in their data-rtl attribute. Nothing is translated — you bring your own right-to-left copy. To make a page right to left for good:

1. Set The Direction

<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
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 Turntable preloader, the header, the Grid Snap reveals, the theme and direction switch and the Colour Fields layer.
  • 09–10 — Captura Data, Studio Live. Captura Data holds every figure; Studio Live works out the booking calendar, the live line and the sample desk from the visitor’s own date and time.
  • 11–19 — Custom Select, Currency, Hero Sliders, Card Sliders, Accordion, Filter Tabs, Grid Search, Newsletter, Choice Cards. Shared components: selects, the currency switch, sliders, accordions, filters, search, forms.
  • 20–22 — Usage Meter, Retouch Before After, Six Colourways. The three home pages’ scroll moments.
  • 23–37 — Quote Engine, Booking Wizard, Work Filters, Licence Extension, Tab Sets, Catalogue Calculator, Contact Form, Account Forms, Client Area, Article Tools, Demo Forms, Launch Countdown, Type Outlines, Extruded Type, FAQ Search. The feature pages: the quote engine and packages, the booking wizard, the project filters, the licence extension, tabs, the catalogue calculator, contact, accounts, the journal, demo forms, the countdown, the footer’s type and 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.

Countdown: 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/blog/The journal’s post photos — 5 files: 1382×1382, 2202×779, 800×800, 1385×917
img/face/The brand teams’ round portraits (voices, comments, avatar groups) — 4 files: 800×800
img/flags/The language picker’s flags (SVG, included) — 6 files: SVG
img/icons/Line icons, each in an ink and a white version (included) — 32 files: 128×128
img/logo/Logo, light logo, the C and its caret, and the favicon (included) — 4 files: 504×134, 64×64, 286×190
img/menu/Home previews in the mega menu — 3 files: 560×350
img/photo/Single photographs: page titles, the bare pages and the retouch moment’s raw frame — 3 files: 1531×1185, 1920×1200, 1330×1110
img/team/The team, square portraits — 6 files: 800×800
img/work/The projects, frame by frame (project-1.jpg is the cover frame) — 64 files: 800×800, 1404×1580, 1920×1077, 802×531, 800×619, 1294×1294, …

The logo files, the line 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, booking, 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
  • three.js
  • Font Awesome Free
  • RTLCSS
  • Google Fonts: DM Sans, Roboto

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

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.