← Back to Template

Muse Makeup

Your guide to making the template your own.

Start here

Muse Makeup is a Bootstrap 5 landing page for bridal and occasion makeup artists, with local photographs, a filterable service menu, appointment email drafts, FAQs, and policy dialogs. It works without a build process or a server-side application.

Quick start: extract the ZIP, keep the folder structure together, and open index.html in your browser. A local web server is optional and can help when checking clipboard behavior.

muse-makeup/
  index.html
  README.html
  LICENSES.txt
  assets/
    css/style.css
    js/main.js
    vendor/bootstrap.min.css
    vendor/bootstrap.bundle.min.js
    images/ (four WebP photos and favicon.svg)

Edit the business details

Open index.html in a text editor. Search for the section IDs home, about, services, portfolio, visit, inquiry, and faq.

Services, categories & prices

The menu is ordinary HTML, so it can be edited without JavaScript changes. Each .menu-item has a data-category of bridal, occasion, or lesson. Its heading, description, and price are editable. Prices are sample USD amounts, not business commitments.

Each filter button uses a matching data-filter. Keep the “all” button. If adding categories, add both the button and matching item values. Filters are semantic buttons with pressed states; arrow keys, Home, and End move and select within the group.

Each service link has a data-service value that must exactly match an option in the inquiry form. Keep these names aligned. Selecting a service preserves other form entries and invalidates any prepared draft. Update the initial hidden filter count if changing the number of items.

The six examples are individual services, not packages. Wedding-party makeup has a per-person sample price. No durations, removal fees, deposits, or cancellation rules have been invented. Add only your actual prices and policies.

Colors, typography & photographs

Brand colors are at the top of assets/css/style.css as CSS variables.

VariableColorUse
--ivory#FAF7F2Page background
--rose#A56C78Decorative accents
--rose-deep#865361Actions and emphasis
--blush#EEDDE0Soft section backgrounds
--champagne#D9C4A2Light accents
--plum#513C49Dark sections and header information bar

Headings use Georgia; body text uses Arial/Helvetica with system fallbacks. No fonts are downloaded. Review line wrapping if you change text or fonts. Main body copy is 18px on desktop and 17px on phones. Service descriptions and FAQs are 16px; notes and form help are 13px. Heading sizes retain the original hierarchy.

Replace the four WebP files in assets/images/, or update their HTML references. The hero is a wide photograph; two lookbook photos are portrait, and the artist tabletop is landscape. Update alt text to describe your images. Use object-position for crop changes; object-fit:cover fills image boxes without stretching. Image heights are explicitly controlled in CSS.

Navigation, layout & accessibility

Update the phone, location, and hours consistently in the top information bar, contact section, and footer. The sticky header remains accessible on desktop and mobile. The mobile menu scrolls on short screens. Escape closes it and returns focus to its toggle. Selecting an anchor closes it and moves to the target. The contact, location, and sample-hours bar stays pinned above the navigation. Keep both inside the shared sticky header. A ResizeObserver measures only the two permanent rows, excluding the expanded mobile menu, into --header-height; CSS scrolling offsets use that value.

Responsive breakpoints are 1199px, 991px, 600px, and 359px. The menu and FAQs use two columns on larger screens and one on small screens. The image gallery switches to one column on phones. Avoid fixed widths on long text. Check narrow phones after edits.

Keep the skip link, semantic headings, alt text, form labels, focus outlines, and reduced-motion rules. Keep decorative content hidden from assistive technology. Footer links and dialog buttons use the same alignment rules.

Appointment email drafts

Edit the settings object at the start of assets/js/main.js. Set the actual recipient, business name, and IANA timezone. The current timezone is America/Los_Angeles; the recipient is a reserved demonstration address and will not reach a real business. If changing the timezone, update the “Pacific time” text in the page and draft code too.

  1. The visitor enters their name, email, service, preferred date, and preferred time. Phone and message are optional.
  2. Required fields and email format are checked. Dates before today in the configured business timezone are rejected. Time preferences are not checked against opening hours or a live calendar.
  3. “Prepare my email” produces a visible, read-only draft.
  4. “Open email app” opens a mailto: link. The visitor reviews and sends it from their own app.
  5. “Copy draft” uses the clipboard when allowed. If blocked or unavailable, the text is selected for manual copying.

Editing a field or choosing a different service clears the old draft and email link. Reset clears the form and draft. The page does not send requests automatically, store entries in browser storage, accept payments, or confirm appointments. No external booking link is included. If integrating one, revise the form, explanatory text, FAQs, and policies to match the actual behavior.

The form asks for no medical records. Keep sensitive-information guidance in place.

FAQs & policy dialogs

The six FAQs use Bootstrap Collapse. Keep unique answer IDs and matching data-bs-target and aria-controls. Keep data-bs-parent="#faq-list" to allow one open answer at a time. Questions begin closed. Each whole question is a button. Content-driven heights prevent clipped answers.

Privacy and Terms of Use open Bootstrap Modals. Preserve each dialog’s ID, title reference, close controls, and dismissal attributes. Bootstrap handles focus trapping, Escape, focus return, and the page backdrop. Dialogs scroll on short screens and sit above the header.

Review both policy texts before launch. They describe browser-side draft preparation, optional clipboard access, email handoff, and the need for direct confirmation. They distinguish this page from hosting and email-provider practices. Update them if adding analytics, backend submission, external services, or other behavior.

Cache versions & troubleshooting

Launch checklist

Dependencies & notices

Bootstrap 5.3.3 and its bundled Popper 2.11.8 dependency are included locally under the MIT license. Their notices are in LICENSES.txt. Fonts are system references, not distributed font files. Photographs are illustrative template assets and do not identify verified premises, clients, staff, or actual work. The favicon is simple SVG artwork. Check rights for replacement assets.