Holt documentation.

Modern real estate HTML template. Version 1.0.0.

Introduction

Thank you for purchasing Holt, a modern real estate HTML template with six homepage layouts and nineteen inner pages. It is written in plain HTML5, one CSS file and one vanilla JavaScript file. There is no jQuery, no framework and no build step to run.

The demo photographs are not included in the download. Every image in the package is a labelled grey placeholder with the correct proportions, so you can swap in your own photography.

Package contents

Holt/
├─ template/               ← upload these files to your server
│  ├─ index.html           Home 1 (Signature)
│  ├─ home-2.html … home-6.html
│  ├─ listings.html, listings-list.html, listings-map.html
│  ├─ property.html, developments.html, development.html
│  ├─ agents.html, agent.html, about.html, careers.html
│  ├─ sell.html, mortgage.html, market.html
│  ├─ journal.html, journal-post.html, contact.html, faq.html
│  ├─ account.html, 404.html
│  └─ assets/
│     ├─ css/style.css     one stylesheet, 24 commented sections
│     ├─ js/main.js        one script, 15 commented modules
│     ├─ fonts/            self-hosted WOFF files
│     ├─ images/           placeholders, favicon, touch icon
│     └─ php/mail.php      optional contact-form handler
├─ documentation/          this file
├─ licenses/               font licences
├─ README.txt
└─ CHANGELOG.txt

Getting started

  1. Copy the contents of template/ to your web server (or open index.html locally).
  2. Replace the placeholders in assets/images/photos/ with your own images. Keep the file names or update the src attributes.
  3. Edit the text directly in the HTML files. Every page is plain, readable markup.
  4. Update the logo (.hd__logo in the header), contact details in the footer and the page <title> and meta description.

Serve the site over http(s) when possible. Some browsers restrict web fonts and localStorage on file://.

Pages

FileDescription
index.htmlHome 1 – Signature: giant headline, sentence search, index table, map
home-2.htmlHome 2 – Atlas: split screen map and district pills
home-3.htmlHome 3 – Index: dark green, data-led (theme-forest)
home-4.htmlHome 4 – Journal: full-bleed editorial hero and film strip
home-5.htmlHome 5 – Roster: lime, people-led
home-6.htmlHome 6 – Monolith: slideshow hero on ink (theme-ink)
listings.html / listings-list.htmlGrid and list search results with working filters and sort
listings-map.htmlMap search
property.htmlSingle property with lightbox, floor plan, light study, booking form
developments.html / development.htmlNew builds overview and single development
sell.htmlThree-step valuation wizard
mortgage.htmlCalculator
market.htmlQuarterly market report
agents.html / agent.htmlPartners grid and profile
about.html, careers.html, journal.html, journal-post.html, contact.html, faq.html, account.html, 404.htmlCompany and utility pages

Colours and themes

All colours live in the :root block at the top of style.css (section 02):

--cb:#2338F5;   /* primary cobalt */
--lime:#D2FF5C; /* accent */
--bone:#F1EFE8; /* page background */
--ink:#070B24;  /* text / dark */
--forest:#0F2E22;

Change a value and every page updates. Add theme-forest or theme-ink to the <body> class to switch an entire page to a dark theme. Add hd-dark to the body when the page starts with a dark hero so the transparent header uses light text.

Typography

Three families are self-hosted in assets/fonts/: Inter / Inter Display for text and headlines, Caladea Italic for the serif accent inside <em>, and DejaVu Sans Mono for small labels. Change the three --f-* variables to use other fonts. Headline accents are made by wrapping a word in <em>.

Images and the duotone effect

Photographs are shown in a cobalt duotone and turn to full colour on hover, following the cursor. This is done with an SVG filter (#duo, and #duog for green) that is embedded at the top of each page, plus a second layer with the original colour image.

<a class="ph r-4x5" href="property.html">
  <img src="assets/images/photos/house.jpg" alt="…">
  <span class="c" style="background-image:url(assets/images/photos/house.jpg)"></span>
</a>

Use both the img and the .c background with the same file. To show an image in colour only, add ph--full. Ratios: r-1x1, r-4x5, r-3x4, r-4x3, r-3x2, r-16x9, r-21x9. Recommended photo width is 1600 px at JPEG quality 75–80.

Listings, filters and sorting

Each result is an <article class="hm"> with data attributes: data-price, data-beds, data-type, data-area, data-size and data-tags (space-separated features). The filter bar, sidebar checkboxes, price slider, sort select and grid/list toggle all work on these attributes in the browser. Add a listing by copying a card and editing the values.

Maps

The maps are generated SVG contour maps with absolutely-positioned pins (.pin) placed by percentage (left / top). Hovering a pin or a list row with the same data-k highlights both and updates the preview card. To use a real map, replace the .map element with Leaflet, Mapbox or Google Maps and keep the surrounding layout.

JavaScript modules

assets/js/main.js is divided into numbered sections: header and mobile menu, scroll reveal and counters, parallax, image hover, sentence search, film carousel, hero slideshow, listings filter, favourites, tabs and accordion, lightbox, mortgage calculator, forms and wizard, map pins and small helpers. Useful attributes:

AttributeEffect
data-rReveal on scroll (fade or clip values also supported)
data-staggerOn a parent: staggers its data-r children
data-count="98.6" data-suffix="%"Animated counter
data-par="0.08"Parallax speed
data-lb="image-url"Opens the image in the lightbox (property gallery)
data-filmDraggable carousel; buttons use data-film-prev/next="id"
data-slidesHero slideshow (Home 6)
data-calcMortgage calculator
data-wizMulti-step form wizard
data-formClient-side validation and success message
data-clockLocal clock; optional IANA time zone as value

Forms

Forms validate in the browser and show a success message but do not send data. To send email, upload assets/php/mail.php to a PHP host, set the recipient address and replace the demo submit handler (the “forms” module in main.js) with a fetch() POST to it. You can also point the form action to a service such as Formspree.

Saved homes

The heart button on each card stores the home id in localStorage under holt-fav and updates the counter in the header. Connect it to your own accounts system if required.

Responsive behaviour

Breakpoints are 1280, 1100, 800 and 560 px (end of style.css). Below 1100 px the navigation becomes a full-screen menu. The template was checked for horizontal overflow at 320, 375, 600, 768, 1024, 1280 and 1920 px.

Accessibility and performance

Browser support

Current versions of Chrome, Edge, Firefox and Safari. The header button colour on lime hero pages uses the CSS :has() selector, which degrades gracefully in older browsers.

Credits and licences

Licence texts are in the licenses/ folder.

Changelog

1.0.0 – Initial release: 6 homepages, 19 inner pages, three themes, filters, calculator, wizard, lightbox, favourites and documentation.