Overview
An editorial HTML template for a film and video production company that makes commercials, music videos and documentary: white paper, ink, giant Inter capitals with an italic serif word, hairline rules and one tungsten accent. Kinora ships three home pages, a light and a dark theme, right-to-left support, and logic that is worked out rather than typed in: a shoot estimate (shoot days, crew size, camera package, edit and grade, extras, a production fee and a contingency), a six-step brief with the estimate beside it, a production board that shows where every film is today, the work by type, the showreel by timecode, the crew, the kit list, a client review room and a currency switch.
What’s included
- 3 home pages, each with its own scroll moment: The Cut (the reel’s clips snap onto the tracks of an edit timeline under a playhead), the frame that reshapes from 1.33 to 1.85 to 2.39, and a dolly push through the layered pieces of a set
- A white 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 (dollars, euros, pounds) that repaints every price
- WebGL: Film Grain (35 mm grain at 24 frames, a gate weave, light leaks at the band edges) and a film reel in an ASCII shader in the footer
- The shoot estimate and the day-rate units from the same engine; Start A Project in six steps with a reference
- A production board of four films on a 21-day cycle, worked out from the visitor’s date, and the office open-now line
- Work with type tabs and search, three project layouts, the showreel chapters, the Client Review Room with notes pinned to the frame
- The crew with day rates, the kit list by package, services, how we work, journal, FAQ with search, contact with a map and the PHP form, account pages, coming soon with a countdown, 404
- A Slate Clap preloader, Letterbox Open photo reveals, a running timecode on hover, Swiper sliders and Fancybox
- Fully responsive from 390 px to wide screens
Getting Started
Thank you for choosing Kinora. Follow the steps below to get your site live.
1. Open locally
Unzip the downloaded package and open kinora/index.html in any modern browser (Chrome, Firefox, Edge,
Safari). No build tools or server are required — the estimate, the brief, the board and the review room all work
straight from the files.
2. Deploy to a server
Upload the contents of the kinora/ 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 rates, the units, the films, the crew, the kit and the productions live
in one place — see Estimate & Production Logic.
assets/img/ with your own stills at the
same dimensions for the best result. Keep the file names and nothing else needs editing.
File Structure
Below is an overview of the key files and folders included in this template.
index.html / homepage-2.html / homepage-3.html | Three home pages: The Studio (The Cut, an edit timeline), The Reel (the frame reshapes 1.33 to 2.39), On Set (a dolly push through the set) |
projects.html | Every film with type tabs and search, each card with its format, client and running time |
project-details.html / project-details-2.html / project-details-3.html | Three single layouts: a commercial (wide stills), a music video (a still rail), a documentary (chapters and a gallery) |
showreel.html | The reel to play, its cut-by-cut chapters with timecodes, earlier reels |
review.html | The Client Review Room: a code opens it, scrub the cut by frame, pin notes to the timecode, approve |
services.html / service-details.html | Seven services with their day rates; one service in depth |
process.html | How a film is made in five stages |
estimate.html | The shoot estimate: the film, shoot days, crew, package, edit, grade, extras, a live total and where the money goes |
brief.html | Start A Project in six steps with the live estimate; a reference when it is sent |
packages.html | The day-rate units and the rate card |
crew.html / crew-details.html | The crew in slices and cards with day rates; one crew profile |
kit.html / kit-details.html | The kit list by category with search and packages; one camera in depth |
about.html | The company, the years, the crew, client words, the credits roll |
blog.html / blog-details.html | The journal with search; a post with reading time, share and comments |
faq.html | Questions by topic with search |
contact.html | The office, live status, map, hours and the contact form |
account.html / login.html / register.html / forgot-password.html | The account (saved estimates, briefs, details) and the login pages |
coming-soon.html / 404.html | Countdown to Stage Two, error page |
sendmail.php | AJAX mail handler for the contact and comment forms (see Contact Form) |
assets/css/style.css | All custom styles, numbered Table of CSS (16 sections) |
assets/css/responsive.css | Desktop-first breakpoints 1399 / 1199 / 991 / 767 / 575, plus wide screens from 1600 and 1960 |
assets/css/style.rtl.css / responsive.rtl.css | The right-to-left twins (see RTL) |
assets/css/plugins/ | Bootstrap (LTR and RTL), Swiper, Fancybox (vendor CSS) |
assets/js/main.js | All custom scripts, numbered JS INDEX (34 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.css | Font Awesome Free, loaded locally |
Folder Structure
The package unzips to two folders: Documentation/ (this guide) and kinora/, the template.
Every page sits in the template’s root; everything the pages load sits under assets/:
kinora/
├── *.html the 30 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 (34 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
├── banner/ 13 files
├── blog/ 9 files
├── bts/ 4 files
├── crew/ 6 files
├── faces/ 7 files
├── flags/ 6 files
├── logo/ 3 files
├── menu/ 3 files
├── set/ 4 files
└── work/ 28 files
To publish the site, upload the contents of kinora/ to your web root. Stills 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
--kn-tungsten-rgb) — change both together.
--kn-ink--kn-tungsten--kn-tungsten-deep--kn-tungsten-soft--kn-bg--kn-band--kn-plate--kn-heading--kn-text--kn-muted--kn-night--kn-tally--kn-edit--kn-donePaper is the ground and the bone band alternates with it; ink is the headings, the full-width rules and the pill buttons;
night is the footer and the timeline. Tungsten is the one accent: the viewfinder corner of each label, the running
timecode, the estimate’s figures and the hover of every button. Tally, edit and delivered are the production
board’s signals. --kn-bg, --kn-band, --kn-surface, --kn-heading
and --kn-text are the semantic names the components use — the dark theme swaps those.
Fonts
Two Google Fonts are loaded in the head of each page: Inter (headings in large capitals, body,
navigation, buttons, and every figure with its tabular digits) and Noto Serif Display italic (the accent
word in a title, the slide counts, the step numbers). Swap them by editing the Google Fonts link and the
--kn-ff-body / --kn-ff-serif variables. An accent word is simply an <em> inside a
title.
Logo
The logo is “Kinora” in Inter with the o in the italic serif, in tungsten. It ships as ready-made PNG files in
assets/img/logo/:
logo.png— ink, for white barslogo-light.png— white, over photographs, on the black bar, in the dark theme, the slate and the footerfavicon.png— the browser tab icon
To use your own logo, replace these files; the header sizes the logo by its height.
Dark & Light Mode
Kinora opens white. Every header (and the mobile menu) has a theme switch that turns the dark skin on. The choice is
saved in the browser under the key kinora-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.
--kn-bg--kn-band--kn-surface--kn-heading--kn-text--kn-accent-text- Tokens — the dark values sit in one block,
[data-theme="dark"] { … }, right after:rootinstyle.css. - Bands that stay black — sections with the class
is-night(The Cut, the chapters, the footer) are black in both themes. - Start dark — add
data-theme="dark"to the<html>tag of each page; the switch still works.
Estimate & Production Logic
The figures on every page come from one data block, JS block 09 Kinora Data near the
top of main.js (var KINORA). Edit it once and the estimate, the day rates, the brief, the board,
the work and the crew follow. Prices are in US dollars (the currency switch converts them); times are minutes after
midnight (540 = 9:00); weekdays run 0 = Sunday to 6 = Saturday.
rates | The crew day rate ($650 a person), the edit day ($900), the grade day by grade, one grade day for every 4 edit days, the production fee (12%) and the contingency (10%). |
types | Commercial, music video and documentary: each with its edit ratio and the crew, days, package and grade the estimate starts from. |
kits / extras | The three camera packages by the shoot day; the aerial unit by the shoot day, the sound mix and the music licence flat. |
units / services | The day-rate units (a crew size with a package) and the services, priced by the same engine. |
projects / reel | 16 films with their type, client, year, running time, format and stills; the showreel’s clips in cut order. |
crew / kitCats / kit | The crew with roles and day rates; 19 lines of kit in 6 categories with the packages they ride in. |
stages / productions | The production cycle (in prep 5 days, on set 3 days, in the edit 8 days, in the grade 3 days, delivering 2 days) and the four films on the board with their start offsets. |
hours / set / review | The office hours, the shoot day’s call and wrap, the review room’s cuts and notes. |
The estimate
Crew size × shoot days × the crew day rate, plus the camera package by the shoot day, plus edit days (suggested from the type’s edit ratio until the visitor sets them) and grade days at the grade’s rate, plus the extras; then the production fee and the contingency on the whole.
The day-rate units
| Documentary Unit | A crew of 3 with the Documentary Kit: 3 × $650 + $450 = $2,400 a shoot day |
| Music Video Day | A crew of 7 with the Anamorphic Package: 7 × $650 + $1,850 = $6,400 a shoot day |
| Commercial Unit | A crew of 12 with the Cinema Package: 12 × $650 + $1,200 = $9,000 a shoot day |
The camera packages
| Documentary Kit | $450 a shoot day — A full-frame 4K camera, two zooms, radio mics and a light kit that fits one car. |
| Cinema Package | $1,200 a shoot day — A large-format cinema camera, a set of seven primes, a dolly and the lighting truck. |
| Anamorphic Package | $1,850 a shoot day — The cinema camera on 2x anamorphic primes, a gimbal and the big lights. |
The production board
Each film runs through the cycle from its own offset, so the visitor’s date says where it is today; a shoot day is “rolling” between call and wrap. Replace the stages in block 10 with your own schedule to show real productions; every live line on the site reads from it.
Saved estimates, sent briefs and review notes are kept in the browser (localStorage) and listed on the
account page. The brief and the review room confirm on screen — connect them to your own systems to take real
briefs. Any review code of four characters or more opens the demo room.
WebGL & Motion
Small WebGL shaders draw the moving layers: Film Grain — grain that changes every frame at 24
frames a second, a gate weave that moves the band’s photograph by a pixel, light leaks blooming at the band edges
— over photo bands (grain) and as the ground of plain bands (grain-ground), and the
reel in the footer, a film reel turning, drawn as ASCII characters. Each is one canvas:
<canvas class="kn-gl" data-gl="grain" aria-hidden="true"></canvas>
- Colours — each layer reads three colours and an opacity from CSS variables on its canvas or
section:
--gl-1,--gl-2,--gl-3and--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.
- Remove one — delete the canvas; nothing else depends on it.
kn-lb to a photo frame so it opens from a letterbox band,
kn-fade to text so it rises softly into place, and kn-hr kn-draw for the full-width rule that
draws across. data-delay="0.2" staggers any of them. Add kn-tc-host and a
<span class="kn-tcode"> to a card for the running timecode on hover.RTL (Right To Left)
Kinora 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) lists the languages that
read left to right and right to left. Choosing Arabic stores the language and the direction (keys kinora-lang
and kinora-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 |
Prices, timecodes, the edit timeline, the board’s strips and the review scrubber keep reading left to right.
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 keep what must not
mirror. If you change style.css, regenerate the twin with npx rtlcss style.css style.rtl.css and
copy those last rules back to its end.JavaScript Guide
All custom behaviour lives in assets/js/main.js, wrapped in a jQuery IIFE and organised into 34 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 Slate Clap preloader, the header, the Letterbox reveals, the theme and direction switch and the Film Grain WebGL layers.
- 09–10 — Kinora Data, Production Board & Office Clock. Kinora Data holds every figure; the production board works out where each film is today from the visitor’s own date and whether the office is open.
- 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, choice cards.
- 20–23 — The Cut: Edit Timeline, Aspect Frame, Dolly Push, Timecode Hover. The three home pages’ scroll moments and the timecode hover.
- 24–34 — Shoot Estimate, Brief Wizard, Crew Slices, Client Review Room, Contact Form, Account Forms, Account Page, Article Tools, Demo Forms, Launch Countdown, FAQ Search. The feature pages: the shoot estimate, the brief wizard, the crew slices, the review room, contact, 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.
launchDays in the data block) — no date to update.Images
The download package ships with neutral placeholder images so you can see every layout at the correct dimensions.
Replace them with your own stills using the same file names, or update the src attributes. Images are
grouped inside assets/img/:
img/banner/ | Wide stills: page-title banners, photo bands, the featured films and the set's backdrop — 13 files: 2560×995, 2851×1255, 2855×1343, 2851×1146, 2860×1497, 2854×983, … |
img/blog/ | Journal posts — 9 files: 1300×666, 1386×1437, 1386×960 |
img/bts/ | Behind the scenes: the camera on set — 4 files: 2000×1047, 2560×1088, 1213×1263, 1300×666 |
img/crew/ | The crew, square portraits — 6 files: 900×885 |
img/faces/ | Round portraits for client words and avatar groups — 7 files: 400×400 |
img/flags/ | The language picker’s flags (SVG, included) — 6 files: SVG |
img/logo/ | Logo, light logo and favicon (included) — 3 files: 541×160, 64×64 |
img/menu/ | Home previews in the mega menu — 3 files: 560×350 |
img/set/ | The set pieces of the Home 03 dolly push, transparent PNG (included) — 4 files: 700×900, 990×1540, 770×1210, 3400×1913 |
img/work/ | Stills from the films: the work, the timeline clips, the project pages — 28 files: 824×986, 800×1064, 1278×1080, 1417×961, 1423×1598, 872×740, … |
The logo files, the set pieces 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, brief, review, 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, replaceYOUR_RECAPTCHA_V3_SECRET_KEYwith 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: Inter, Noto Serif Display
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.