Getting started

Thank you for choosing Roastelle. This help file explains how to install, edit and publish the template. No build tools are required: every page is plain HTML, CSS and JavaScript.

  1. Unzip the download. Open the template folder.
  2. Open index.html in your browser, or use a local server (VS Code “Live Server”, or npx serve template).
  3. Edit the HTML files in any code editor. Changes appear on refresh.
  4. Upload the contents of template/ to your web host’s public folder (for example public_html).

Need help? Email build@m00nshots.dev or visit m00nshots.dev. Please include your purchase code.

AuthorMOONSHOTS
Websitehttps://m00nshots.dev
Contactbuild@m00nshots.dev
Copyright© 2026 m00nshots

File structure

template/
├── index.html, home-2.html, home-3.html, home-4.html   ← home page demos
├── menu.html, shop.html, about.html, locations.html, blog.html, 404.html
└── assets/
    ├── css/core.css      ← layout, grid, components (shared)
    ├── css/theme.css     ← Roastelle design tokens & unique sections
    ├── js/core.js        ← animations, menu, accordion, tabs, forms…
    ├── js/theme.js       ← template-specific scripts
    ├── images/           ← favicon + placeholder images
    └── vendor/           ← GSAP 3 & Tabler Icons (subset)
documentation/index.html  ← this file

Pages

FileDescription
index.htmlSpecialty Coffee Shop
home-2.htmlCoffee Roastery & Bean Subscription
home-3.htmlBakery Café & Brunch
home-4.htmlMobile Espresso Bar & Event Catering
menu.htmlMenu
shop.htmlBeans Shop
about.htmlOur Story
locations.htmlLocations & Hours
blog.htmlJournal
404.html404 Error

To choose a different home page, rename the variant you want to index.html (or update the logo links, which point to index.html).

Colours & fonts

All colours, fonts and radii are CSS custom properties at the top of assets/css/theme.css. Change a value once and it updates everywhere. Dark-mode values live in the [data-theme="dark"] block just below.

TokenDefault
--rs-espresso#2b1a12
--rs-crema#f1e3cf
--rs-cinnamon#c0612b
--rs-pista#9fb36a
--bg#f5ead9
--bg-2#ecdcc2
--surface#fffaf1
--surface-2#efe1c9
--text#2b1a12
--muted#6b5344
--linergba(43, 26, 18, .18)
--primary#c0612b
--primary-2#9fb36a
--accent#9fb36a
--on-primary#fffaf1
--rs-page#f5ead9
--rs-em#a94f1d
--rs-edge#2b1a12
--rs-shadow#2b1a12
--rs-pista-softcolor-mix(in srgb, #9fb36a 32%, #fffaf1)
--rs-board#231915
--rs-wood#7a5238
--font-head"Alegreya", Georgia, serif
--font-body"Schibsted Grotesk", system-ui, sans-serif
--font-logo"Lobster Two", "Alegreya", cursive
--logo-weight700
--logo-size1.8rem
--logo-tracking0
--logo-casenone
--head-weight800
--head-tracking-0.012em
--radius-sm12px
--radius24px
--radius-lg30px
--radius-btn999px
--gradientlinear-gradient(120deg, #c0612b, #a94f1d)
--shadow0 20px 40px -26px rgba(43, 26, 18, .45)
--shadow-lg0 34px 70px -30px rgba(43, 26, 18, .55)
--header-h92px
--grainurl("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.17 0 0 0 0 0.1 0 0 0 0 0.07 0 0 0 0.09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")
--wave-upurl("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 20' preserveAspectRatio='none'%3E%3Cpath d='M0 20V10Q15 0 30 10T60 10T90 10T120 10V20Z'/%3E%3C/svg%3E")
--wave-downurl("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 20' preserveAspectRatio='none'%3E%3Cpath d='M0 0V10Q15 20 30 10T60 10T90 10T120 10V0Z'/%3E%3C/svg%3E")

Fonts

This template uses Google Fonts: Alegreya, Schibsted Grotesk, Lobster Two (logo). They are loaded by the <link> tag in the <head> of every page. To change fonts, pick new ones on fonts.google.com, replace that link and update --font-head, --font-body and --font-logo.

Images

The download uses neutral placeholder images (assets/images/placeholder-WxH.svg) that show the recommended size. Replace each src with your own photo at the same aspect ratio. Images use loading="lazy" and explicit width and height to avoid layout shift.

Photos in the live preview are from Unsplash and are for preview only. They are not included in the download.

Animations

Animations use GSAP 3 and ScrollTrigger. Add attributes to any element:

AttributeEffect
data-animFade up on scroll
data-anim="lines"Word-by-word headline reveal
data-anim="stagger"Children animate one after another
data-anim="zoom" | "fade" | "slide-left" | "slide-right" | "reveal"Alternative entrances
data-delay=".3"Delay in seconds
data-parallax="12"Scroll parallax (percentage)
data-count="48"Animated number counter
data-magneticMagnetic hover for buttons
data-floatGentle floating loop

Visitors who enable “reduce motion” in their OS settings see content without animation. Remove the js-anim class from <html> to disable animations globally.

Components

Forms

Forms with data-demo validate in the browser and show a success message, but do not send data. To make one work, remove data-demo and set the action to your backend or a form service such as Formspree, Basin or Netlify Forms:

<form action="https://formspree.io/f/your-id" method="POST">…</form>

Dark mode

Each page sets its default theme on <html data-theme="light|dark">. The toggle button in the header switches themes and remembers the visitor’s choice in localStorage.

SEO

Every page has a unique <title>, meta description, Open Graph tags and one <h1>. Update them for your brand. Add a sitemap.xml and submit it to Google Search Console after launch.

Credits

GSAP 3GreenSock standard “no charge” licence, free for commercial usegsap.com
Tabler IconsMIT licencetabler.io/icons
Alegreya, Schibsted Grotesk, Lobster TwoSIL Open Font LicenceGoogle Fonts
Preview photosUnsplash licence, preview only, not includedunsplash.com

Changelog

v1.0.0 · 27 September 2026 · Initial release.