Overview

Facetta template home pages

A black-and-white editorial HTML template for a model and talent agency: the women’s and men’s boards and the new faces, model books, a casting shortlist, a casting request with a live estimate and a become-a-model application. Facetta ships three home pages, a light and a dark theme, right-to-left support, and logic that is worked out rather than typed in: the roster filtered by height, hair, eyes and city, sizes in centimetres or inches, rates in dollars, euros or pounds, the estimate by the job, the board, the days and the usage, the boards an applicant fits, the show weeks and the scouting tour from the date, and four offices each open or closed on its own clock.

  • 3 home pages, each with its own scroll moment: the agency board (twelve digitals line up by division), the walk (a model walks down the runway toward the lens) and the height ruler (a rule slides up and stops at her height)
  • 32 models on the board in 3 divisions, each with a 2:3 card, the hover ruler and the sizes
  • The board’s filters: division, a two-thumb height range, hair, eyes, city, name search and order, with a live count
  • Three model book layouts, a shortlist kept between visits, and a casting request that starts from it
  • A live estimate: day rate by job and board, half days, travel days, the usage buyout by territory, term and media, the 20% agency fee, in three currencies
  • A become-a-model application: age from the date of birth, a guardian under 18, the boards you fit as you type, four digitals with previews
  • The show weeks and the scouting tour from the date, each office open now from its own time zone, the next open call
  • A white studio theme and a dark theme on one switch in every header, remembered and applied before the page paints
  • Right-to-left from the stylesheets through a flag language picker
  • WebGL: Colour Gel at the edges of the black bands, the agency monogram in a slit-scan in the footer
  • Contact Select preloader, Strip Cut reveals, word-rise titles, the hover ruler, Swiper sliders and Fancybox
  • Fully responsive, W3C-valid, zero console errors
📄 31 HTML files

Getting Started

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

1. Open locally

Unzip the downloaded package and open facetta/index.html in any modern browser (Chrome, Firefox, Edge, Safari). No build tools or server are required — the filters, the shortlist, the estimate, the application and the clocks all work straight from the files.

2. Deploy to a server

Upload the contents of the facetta/ 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 models, bookers, offices, show weeks, the tour, the rates and the usage live in one place — see Agency Logic.

Tip: Replace the neutral placeholder images in assets/img/ with your own photography at the same dimensions. A model card is named after the model (img/models/ines-varga.jpg) at 2:3; the runway figure in img/moments/walker.png is a transparent 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 Agency (the agency board), The Lookbook (the walk), New Faces & Scouting (the height ruler)
models.htmlThe full board: division tabs, height range, hair, eyes, city, name search, order, the live count
women.html / men.html / new-faces.htmlThe divisions in three layouts: masonry, joined gallery, pinterest; the same filters
model-details.html / model-details-2.html / model-details-3.htmlThree model book layouts: split screen, big slider, digitals with tabs
shortlist.htmlThe shortlist: the faces, a summary by division, send to a casting, copy, clear
casting.htmlThe casting request in five steps with the live estimate beside it
services.html / service-details.htmlRates & usage; runway & shows with the show weeks from the date
campaigns.html / campaign-details.htmlClient work with type filters; one show with its casting shots and the faces who walked
become-a-model.htmlThe application in four steps with the board fit and the digitals
scouting.htmlThe scouting tour (next stop and countdown, the year) and the open calls at the four offices
about.htmlThe agency, how it works, the four offices on their clocks, the bookers, client quotes
team.html / team-details.htmlThe six bookers; a booker’s desk, board and a message form
blog.html / blog-details.htmlThe journal in six post formats with search; a post with reading time, share and comments
faq.htmlQuestions by topic with search
contact.htmlThe four offices with live status, a map and the contact form
account.html / login.html / register.html / forgot-password.htmlThe client dashboard (castings, shortlist) and the login pages
coming-soon.html / 404.htmlCountdown to the Los Angeles office, error page
sendmail.phpAJAX mail handler for the contact form (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 (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.cssFont Awesome Free, loaded locally

Folder Structure

The package unzips to two folders: Documentation/ (this guide) and facetta/, the template. Every page sits in the template’s root; everything the pages load sits under assets/:

facetta/
├── *.html                              the 31 pages, all in the root (see File Structure)
├── sendmail.php                        the AJAX mail handler for the contact form
└── 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 (34 blocks)
    │   └── plugins/                    vendor scripts
    ├── fonts/
    │   └── theme-icons/                the sun and moon of the theme switch
    ├── webfonts/                       Font Awesome Free font files
    └── img/                            images, one folder per section
        ├── bands/                       5 files
        ├── banner/                      6 files
        ├── bookers/                     6 files
        ├── books/                       10 files
        ├── campaigns/                   15 files
        ├── digitals/                    13 files
        ├── flags/                       6 files
        ├── hero/                        11 files
        ├── journal/                     7 files
        ├── logo/                        4 files
        ├── menu/                        3 files
        ├── models/                      32 files
        └── moments/                     2 files

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

Black--fc-black
Night--fc-night
Panel--fc-panel
Ink--fc-ink
Lipstick--fc-red
Lipstick Deep--fc-red-deep
Lipstick On Black--fc-red-soft
Band Grey--fc-band
White Studio--fc-bg
Body--fc-text
Title Second Line--fc-ghost
Gel Magenta--fc-gel-1
Gel Blue--fc-gel-2
Gel Amber--fc-gel-3

White is the studio every page is set in; black carries the header, the footer, the strips, the rate cards and the photo bands; ink sets the headings and the buttons. Lipstick is the one colour: the short bar before every eyebrow, the hover ruler’s tick, the hearts and the focus ring. A title’s second line is set in the title grey. The three gels are light only — they colour the WebGL layer, never a control. --fc-bg, --fc-surface, --fc-band, --fc-heading and --fc-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: Mona Sans — headings, navigation and buttons in capitals at font-stretch: 75% (its condensed width), body text at the regular width — and Libre Baskerville in italic for the eyebrows, the quotes, the cities and the figures in the books. Swap them by editing the Google Fonts link and the --fc-ff-display / --fc-ff-body / --fc-ff-serif variables.

Logo

The logo is FACETTA in condensed capitals with a lipstick swipe behind the F. It ships as ready-made PNG files in assets/img/logo/:

  • logo-light.png — white letters, for the black header, the footer and dark grounds
  • logo.png — ink letters, for Home 2’s white header and the side menu
  • logo-word.png — the word alone (the edge print on the preloader’s film)
  • favicon.png — the browser tab icon

The footer’s monogram is drawn by the script with the same swipe, so it needs no file. To use your own logo, replace these files; the header sizes the logo by its height.

Light & Dark Mode

Facetta opens in the white studio, which needs no attribute. Every header (and the side menu) has a theme switch that turns the lights down. The choice is saved in the browser under the key facetta-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--fc-bg
Dark Surface--fc-surface
Dark Band--fc-band
Dark Heading--fc-heading
Dark Body--fc-text
Lipstick On Dark--fc-accent-text
  • Tokens — the dark values sit in one block, [data-theme="dark"] { … }, right after :root in style.css.
  • Bands that stay black — sections with the class is-night (the header, the footer, the strips, the runway, the scouting tour) and the photo bands (fc-photo-band) are black in both themes.
  • Start dark — add data-theme="dark" to the <html> tag of each page; the switch still works and is still remembered.

Agency Logic

The figures on every page come from one data block, JS block 09 Facetta Data near the top of main.js (var FACETTA). Edit it once and the cards, filters, books, rates and estimates follow. Measurements are in centimetres and rates in US dollars (the switches convert); times are minutes after midnight in each office’s own time zone (570 = 9:30 am); weekdays run 0 = Sunday to 6 = Saturday.

divisionsThe 3 boards with their height range, ages and booker; the application’s board fit reads them.
modelsThe 32 faces: division, height, bust or chest, waist, hips, shoe (EU), hair, eyes, city, board tier, the year they joined, the show weeks they walk and the book page their card opens.
hair / eyes / citiesThe filter choices, in order.
tiersThe boards’ rate multipliers: New Face ×0.6, Main Board ×1, Top Board ×1.75.
jobsThe rates: Editorial $450 a day, E-commerce $1,600 a day, Lookbook $2,000 a day, Advertising Campaign $3,800 a day, Runway Show $1,200 a show, Fittings $140 a hour; jobs with usage carry a buyout.
usageThe buyout shares of the fee by territory, term and medium.
halfDay / travelDay / agencyFeeHalf days at 60% of a day, travel days at 50%, the agency fee at 20%.
currenciesUSD, EUR and GBP with their rates (edit the rates to today’s).
bookers / officesThe six bookers; the four offices with their time zone, hours, open calls, address and phone.
weeks / tourThe four show weeks (two dates a year each); the scouting tour, one city a month on the first Saturday.
campaigns / quotesClient work (the clients are invented) and client quotes.

Sizes and rates everywhere

Any element with data-cm is a measurement: data-u="h" reads as a height (177 cm or 5′10″), data-u="shoe" as a shoe (EU 39 or US 8.5 with data-sex="f"), any other as a length. Any element with data-usd is an amount in dollars. The switches in the top bar (and on the rates and the estimate) repaint them all and remember the choice.

The estimate

For each model: the job’s rate × the board’s multiplier × the days (half days at 60%), plus the usage buyout as a share of that fee (territory + term + each medium), plus travel days at 50% of the day rate; then the agency fee of 20% on the whole.

Worked example: an advertising campaign, 2 days and 1 travel day, worldwide for 1 year in digital and out of home, with Ines Varga (Top Board) and Lily Haverford (New Face): fees $17,860, usage $32,148 (180% of the fees), travel $4,465, agency fee $10,895 — $65,368.

The boards an applicant fits

Women172–183 cm, from 16 years
Men183–193 cm, from 16 years
New Faces170–193 cm, from 14 to 21 years

The show weeks and the tour

New York Fashion Week6–11 February and 5–10 September
London Fashion Week13–17 February and 12–16 September
Milan Fashion Week18–24 February and 17–23 September
Paris Fashion Week25 February – 5 March and 25 September – 3 October

On a date inside a week the strip reads Now: … Day n Of m and the cards of the models who walk it are tagged; otherwise it names the next week and the days to it (on 22 October 2026: New York Fashion Week in 107 days). The scouting tour stops on the first Saturday of every month; the next six stops and a countdown to the next are worked out from the date.

The offices’ clocks

New YorkAmerica/New_York — weekdays 9:30–18:30; open calls Tuesdays 14:00, Thursdays 14:00
LondonEurope/London — weekdays 9:30–18:30; open calls Wednesdays 15:00
ParisEurope/Paris — weekdays 9:30–18:30; open calls Mondays 14:00, Fridays 14:00
MilanEurope/Rome — weekdays 9:30–18:30; open calls Thursdays 15:00

Open now, closed and the next open call are read in each office’s own time zone, so a visitor in Tokyo sees London as London is. The top bar shows the office nearest the visitor’s time zone.

The shortlist, the units and the currency are kept in the browser (localStorage). The casting request, the application, the newsletter and the account forms confirm on screen — connect them to your own systems.

WebGL Layers

Two small WebGL shaders draw the moving layers: Colour Gel — soft theatre gels in magenta, blue and amber drifting at the side edges of the black bands, adding where they cross — and the monogram — the footer’s swipe and F in a slit-scan, each row showing the mark a moment later than the row above. Each is one canvas:

<canvas class="fc-gl" data-gl="gel" aria-hidden="true"></canvas>
  • Colours — the gels read --gl-1, --gl-2, --gl-3 and --gl-alpha from the canvas’s CSS.
  • 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.

RTL (Right To Left)

Facetta is RTL-ready: the layout, 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) in the top bar lists the languages that read left to right and right to left. Choosing Arabic stores the language and the direction (keys facetta-lang and facetta-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

<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. 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 34 numbered blocks (see the JS INDEX comment at the top of the file):

  • 01 Preloader — Contact Select, once a session
  • 02 Sticky Header — the header sticks after the hero
  • 03 Offcanvas Menu — the side menu
  • 04 Scroll Reveals — Strip Cut on photos, word rise on titles, soft rise on copy
  • 05 Back To Top — the button
  • 06 Anchor Scroll — smooth in-page links
  • 07 Light & Dark Mode, Direction — the theme switch and the language picker
  • 08 WebGL Layers — Colour Gel and the slit-scan monogram
  • 09 Facetta Data — every figure
  • 10 Agency Clock — offices open now, open calls, fashion month, the scouting tour
  • 11 Custom Select — the styled selects
  • 12 Units & Currency — cm / in and USD / EUR / GBP everywhere
  • 13 Hero Sliders — the three heroes
  • 14 Card Sliders — the rails
  • 15 Accordion — FAQ and the home questions
  • 16 Filter Tabs — the campaigns filter
  • 17 Grid Search — the journal search
  • 18 Newsletter — the coming-soon sign-up
  • 19 Model Search — the header’s search over the roster
  • 20 The Agency Board — Home 1’s scroll moment
  • 21 The Walk — Home 2’s scroll moment
  • 22 The Height Ruler — Home 3’s scroll moment
  • 23 Roster Filters — division, height range, hair, eyes, city, name and order
  • 24 Shortlist — the hearts, the header count and the shortlist page
  • 25 Wizards & Casting Estimate — the step engine, the casting estimate and Home 2’s quick estimate
  • 26 Become A Model — age, guardian, board fit and the digitals
  • 27 Tabs & Book Slider — the division tabs, the book tabs and the big book slider
  • 28 Card Rulers — the hover ruler’s tick
  • 29 Contact Form — the AJAX form
  • 30 Account Forms — login, register, reset
  • 31 Article Tools — reading time and copy link
  • 32 Demo Forms — forms that confirm on screen
  • 33 Launch Countdown — coming soon
  • 34 FAQ Search — the questions by topic

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: content appears in its final state and the scrubbed scenes rest in place.

Reveals: add fc-cut to a photo’s wrapper so five strips leave it alternately up and down (Strip Cut), fc-words to a title so its words rise one after another and fc-fade to text so it rises softly. data-delay="0.2" sets any of them by hand.
Scroll moments: the agency board, the walk and the height ruler are each scrubbed against their 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 1 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/bands/Photo bands and the rate cards’ portraits — 5 files: 800×880, 2817×1300, 3840×1399, 600×660
img/banner/Page-title banners and the About photograph — 6 files: 2809×1609, 880×1100, 2809×1463, 2816×1672, 2809×1756
img/bookers/The six bookers, square portraits — 6 files: 800×800, 1047×1047
img/books/The model books’ frames — 10 files: 1600×950, 1015×800, 1206×1206, 480×944, 2812×1758, 2817×1799, …
img/campaigns/Client work: the campaign covers and the casting shots — 15 files: 1200×900, 1300×830, 2112×1584, 1100×825, 1015×761, 1067×800, …
img/digitals/The digitals: unretouched studio snapshots shown as polaroids — 13 files: 322×485, 677×1019, 489×736, 485×731
img/flags/The language picker’s flags (SVG, included) — 6 files: SVG
img/hero/The three heroes’ slides — 11 files: 2809×1580, 2118×1404, 1375×1100
img/journal/Journal posts and the sidebar promotion — 7 files: 1300×920, 2817×1994, 656×985
img/logo/Logo, light logo, wordmark and favicon (included) — 4 files: 269×96, 64×64, 276×72
img/menu/Home previews in the mega menu — 3 files: 560×350
img/models/The roster: one 2:3 card per model, named after the model — 32 files: 800×1200, 716×1074, 938×1408, 704×1056, 550×825, 743×1115, …
img/moments/The runway cut-out (transparent PNG) and the height ruler’s full-length portrait — 2 files: 756×1512, 740×1190

The logo files 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 posts to sendmail.php, a lightweight AJAX mail handler. The success or error message appears under the button without reloading the page. The casting request, the application, the booker’s message, the comment, newsletter, 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

$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 built into the handler and stays dormant until the form submits a token. 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>

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: Mona Sans, Libre Baskerville

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.