| Server IP : 139.59.63.204 / Your IP : 216.73.217.62 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ubuntu-s-1vcpu-1gb-blr1-01 6.8.0-110-generic #110-Ubuntu SMP PREEMPT_DYNAMIC Thu Mar 19 15:09:20 UTC 2026 x86_64 User : root ( 0) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/demo/html/glowandglow/ |
Upload File : |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Glow & Glow — Beauty & Laser Salon, Stafford QLD</title>
<meta name="description" content="Glow & Glow Beauty & Laser Salon in Stafford, QLD — threading, waxing, facials, lash & brow, laser and men's grooming. Shop 15/400 Stafford Road, Stafford City Shopping Centre.">
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300;9..144,400;9..144,500;9..144,600&family=Fraunces:ital,opsz,wght@1,9..144,400&family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
:root{
--cream:#FAF4EF;
--espresso:#221B18;
--mauve:#B4707C;
--gold:#C6A15B;
--sage:#8B9A80;
--line: rgba(34,27,24,0.12);
}
*{scroll-behavior:smooth;}
body{background:var(--cream); color:var(--espresso); font-family:'Inter', sans-serif; overflow-x:hidden;}
.font-display{font-family:'Fraunces', serif;}
.font-display-italic{font-family:'Fraunces', serif; font-style:italic;}
.reveal{opacity:0; transform:translateY(28px); transition:opacity 0.9s cubic-bezier(.2,.7,.2,1), transform 0.9s cubic-bezier(.2,.7,.2,1);}
.reveal.in{opacity:1; transform:translateY(0);}
.reveal-delay-1{transition-delay:0.1s;}
.reveal-delay-2{transition-delay:0.22s;}
.reveal-delay-3{transition-delay:0.34s;}
.reveal-delay-4{transition-delay:0.46s;}
.marquee-track{display:flex; width:max-content; animation:marquee 28s linear infinite;}
@keyframes marquee{from{transform:translateX(0);} to{transform:translateX(-50%);}}
.marquee-track:hover{animation-play-state:paused;}
@keyframes float-slow{0%,100%{transform:translate(0,0) rotate(0deg);} 50%{transform:translate(0,-14px) rotate(3deg);}}
.float-slow{animation:float-slow 7s ease-in-out infinite;}
@keyframes spin-slow{from{transform:rotate(0deg);} to{transform:rotate(360deg);}}
.spin-slow{animation:spin-slow 34s linear infinite;}
@keyframes pulse-dot{0%,100%{opacity:1;} 50%{opacity:0.35;}}
.pulse-dot{animation:pulse-dot 1.8s ease-in-out infinite;}
.link-underline{position:relative; background-image:linear-gradient(var(--gold),var(--gold)); background-position:0 100%; background-repeat:no-repeat; background-size:0% 1.5px; transition:background-size 0.4s ease;}
.link-underline:hover{background-size:100% 1.5px;}
.zoom-wrap{overflow:hidden;}
.zoom-img{transition:transform 1s cubic-bezier(.2,.7,.2,1);}
.zoom-wrap:hover .zoom-img{transform:scale(1.08);}
.btn-fill{position:relative; overflow:hidden; z-index:0;}
.btn-fill::before{content:''; position:absolute; inset:0; background:var(--espresso); transform:translateY(101%); transition:transform 0.45s cubic-bezier(.2,.7,.2,1); z-index:-1;}
.btn-fill:hover::before{transform:translateY(0);}
::-webkit-scrollbar{width:10px;}
::-webkit-scrollbar-track{background:var(--cream);}
::-webkit-scrollbar-thumb{background:var(--gold); border-radius:6px;}
.tnum{font-variant-numeric:tabular-nums;}
.snap-row{scroll-snap-type:x mandatory;}
.snap-item{scroll-snap-align:start;}
/* accordion */
.acc-panel{max-height:0; overflow:hidden; transition:max-height 0.5s cubic-bezier(.2,.7,.2,1);}
.acc-item.open .acc-panel{max-height:800px;}
.acc-item.open .acc-chevron{transform:rotate(45deg);}
.acc-chevron{transition:transform 0.35s ease;}
/* mobile menu */
.mobile-menu{max-height:0; overflow:hidden; transition:max-height 0.4s ease;}
.mobile-menu.open{max-height:400px;}
@media (prefers-reduced-motion: reduce){
.marquee-track, .float-slow, .spin-slow, .pulse-dot{animation:none !important;}
.reveal{opacity:1 !important; transform:none !important; transition:none !important;}
}
.focus-gold:focus-visible{outline:2px solid var(--gold); outline-offset:3px;}
</style>
</head>
<body class="antialiased">
<!-- ============ TOP BAR ============ -->
<div class="hidden md:block bg-[var(--espresso)] text-[var(--cream)]/80 text-[12px]">
<div class="max-w-7xl mx-auto px-6 md:px-10 h-9 flex items-center justify-between">
<p>Shop 15/400 Stafford Road, Stafford City Shopping Centre, QLD 4053</p>
<div class="flex items-center gap-6">
<span id="open-status" class="flex items-center gap-2 text-[var(--gold)]">
<span id="open-dot" class="w-1.5 h-1.5 rounded-full bg-[var(--sage)] pulse-dot"></span>
<span id="open-text">Checking hours…</span>
</span>
<a href="tel:+61732000000" class="link-underline focus-gold text-[var(--gold)]">(07) 3200 0000</a>
</div>
</div>
</div>
<!-- ============ NAV ============ -->
<header class="sticky top-0 z-50 bg-[var(--cream)]/90 backdrop-blur-sm border-b border-[var(--line)]">
<div class="max-w-7xl mx-auto px-6 md:px-10 h-20 flex items-center justify-between">
<a href="#top" class="flex items-center gap-3 focus-gold">
<img src="glogo.png" class="w-auto" style="height:5.3rem;" />
</a>
<nav class="hidden md:flex items-center gap-9 text-[13px] tracking-[0.12em] uppercase">
<a href="#services" class="link-underline pb-1 focus-gold">Services</a>
<a href="#about" class="link-underline pb-1 focus-gold">About</a>
<a href="#gallery" class="link-underline pb-1 focus-gold">Gallery</a>
<a href="#hours" class="link-underline pb-1 focus-gold">Hours & Location</a>
<a href="#faq" class="link-underline pb-1 focus-gold">FAQ</a>
</nav>
<div class="flex items-center gap-3">
<a href="#book" class="btn-fill focus-gold hidden sm:inline-block border border-[var(--espresso)] text-[var(--espresso)] hover:text-[var(--cream)] transition-colors duration-300 px-6 py-2.5 text-[13px] uppercase tracking-[0.12em]">
Book Now
</a>
<button id="menu-btn" aria-label="Toggle menu" aria-expanded="false" class="md:hidden focus-gold p-2">
<svg id="menu-icon" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6">
<path d="M3 6h18M3 12h18M3 18h18"/>
</svg>
</button>
</div>
</div>
<div id="mobile-menu" class="mobile-menu md:hidden border-t border-[var(--line)] bg-[var(--cream)]">
<nav class="flex flex-col px-6 py-4 gap-4 text-[13px] tracking-[0.1em] uppercase">
<a href="#services" class="focus-gold">Services</a>
<a href="#about" class="focus-gold">About</a>
<a href="#gallery" class="focus-gold">Gallery</a>
<a href="#hours" class="focus-gold">Hours & Location</a>
<a href="#faq" class="focus-gold">FAQ</a>
<a href="#book" class="focus-gold text-[var(--gold)]">Book Now →</a>
</nav>
</div>
</header>
<!-- ============ MARQUEE ============ -->
<div class="bg-[var(--espresso)] text-[var(--cream)] py-3 overflow-hidden select-none">
<div class="marquee-track">
<span class="flex items-center gap-6 pr-6 font-display italic text-lg whitespace-nowrap">
<span>Threading</span><span class="text-[var(--gold)]">✦</span>
<span>Waxing</span><span class="text-[var(--gold)]">✦</span>
<span>Facials</span><span class="text-[var(--gold)]">✦</span>
<span>Lash & Brow</span><span class="text-[var(--gold)]">✦</span>
<span>Laser</span><span class="text-[var(--gold)]">✦</span>
<span>Men's Grooming</span><span class="text-[var(--gold)]">✦</span>
</span>
<span class="flex items-center gap-6 pr-6 font-display italic text-lg whitespace-nowrap" aria-hidden="true">
<span>Threading</span><span class="text-[var(--gold)]">✦</span>
<span>Waxing</span><span class="text-[var(--gold)]">✦</span>
<span>Facials</span><span class="text-[var(--gold)]">✦</span>
<span>Lash & Brow</span><span class="text-[var(--gold)]">✦</span>
<span>Laser</span><span class="text-[var(--gold)]">✦</span>
<span>Men's Grooming</span><span class="text-[var(--gold)]">✦</span>
</span>
</div>
</div>
<!-- ============ HERO ============ -->
<section id="top" class="relative max-w-7xl mx-auto px-6 md:px-10 pt-16 md:pt-24 pb-20 grid md:grid-cols-12 gap-10 items-center">
<div class="md:col-span-7 reveal in">
<p class="uppercase tracking-[0.25em] text-[12px] text-[var(--mauve)] mb-5">Stafford · QLD</p>
<h1 class="font-display text-[15vw] leading-[0.92] md:text-[5.2rem] md:leading-[0.95] tracking-tight">
Where beauty<br>
begins with<br>
<span class="italic font-normal text-[var(--mauve)]">quality care.</span>
</h1>
<p class="mt-7 max-w-md text-[15px] leading-relaxed text-[var(--espresso)]/75">
Threading, waxing, facials, lash & brow, laser and grooming — delivered with precision and a personal touch, right in Stafford City Shopping Centre.
</p>
<div class="mt-9 flex flex-wrap items-center gap-5">
<a href="#book" class="btn-fill focus-gold bg-[var(--espresso)] text-[var(--cream)] px-8 py-4 text-[13px] uppercase tracking-[0.12em] inline-block">
Book an Appointment
</a>
<a href="#services" class="link-underline focus-gold text-[13px] uppercase tracking-[0.12em] pb-1">
View Services
</a>
</div>
</div>
<div class="md:col-span-5 relative reveal reveal-delay-2 in">
<div class="relative mx-auto w-[78%] md:w-full max-w-sm aspect-square">
<svg class="absolute -inset-6 spin-slow text-[var(--gold)]" viewBox="0 0 200 200" fill="none">
<circle cx="100" cy="100" r="97" stroke="currentColor" stroke-width="0.6" stroke-dasharray="2 6"/>
</svg>
<div class="absolute inset-0 rounded-full overflow-hidden ring-1 ring-[var(--line)] shadow-2xl">
<img src="gngshop.png" alt="Beauty therapist performing a treatment in a warmly lit salon" class="w-full h-full object-cover" />
</div>
<div class="float-slow absolute -bottom-4 -left-8 bg-[var(--cream)] border border-[var(--line)] rounded-full px-5 py-4 shadow-lg text-center w-28">
<p class="font-display text-2xl leading-none">4.9</p>
<p class="text-[9px] uppercase tracking-[0.1em] mt-1 text-[var(--espresso)]/60">Client<br>Rating</p>
</div>
</div>
</div>
</section>
<!-- ============ ABOUT STRIP ============ -->
<section id="about" class="border-y border-[var(--line)] bg-[var(--espresso)] text-[var(--cream)]">
<div class="max-w-7xl mx-auto px-6 md:px-10 py-16 grid md:grid-cols-2 gap-12 items-center">
<div class="reveal in">
<p class="uppercase tracking-[0.2em] text-[12px] text-[var(--gold)] mb-3">Who We Are</p>
<h2 class="font-display text-3xl md:text-4xl leading-tight mb-5">Expert beauty care, with a personal touch.</h2>
<p class="text-sm text-[var(--cream)]/70 leading-relaxed max-w-md">
Glow & Glow Beauty & Laser Salon is Stafford's trusted spot for threading, waxing, facials, lash & brow and laser treatments. Every visit is tailored — so you leave feeling pampered, confident, and genuinely taken care of.
</p>
</div>
<div class="reveal reveal-delay-1 in grid grid-cols-1 sm:grid-cols-3 gap-6">
<div class="border-t border-[var(--cream)]/20 pt-4">
<p class="font-display text-2xl text-[var(--gold)] mb-1">✦</p>
<p class="text-sm">Quality service in every treatment</p>
</div>
<div class="border-t border-[var(--cream)]/20 pt-4">
<p class="font-display text-2xl text-[var(--gold)] mb-1">✦</p>
<p class="text-sm">Skilled, experienced therapists</p>
</div>
<div class="border-t border-[var(--cream)]/20 pt-4">
<p class="font-display text-2xl text-[var(--gold)] mb-1">✦</p>
<p class="text-sm">A complete range, all in one studio</p>
</div>
</div>
</div>
</section>
<!-- ============ SERVICES ============ -->
<section id="services" class="max-w-7xl mx-auto px-6 md:px-10 py-24 md:py-32">
<div class="flex flex-col md:flex-row md:items-end justify-between gap-6 mb-14">
<h2 class="reveal in font-display text-4xl md:text-5xl max-w-lg">Our <span class="italic text-[var(--mauve)]">services.</span></h2>
<p class="reveal reveal-delay-1 in max-w-sm text-sm text-[var(--espresso)]/70 leading-relaxed">Tap a category to see pricing. Indicative only — always confirm at the studio.</p>
</div>
<div id="accordion" class="grid sm:grid-cols-2 lg:grid-cols-3 gap-6">
<div class="acc-item reveal in rounded-2xl border border-[var(--line)] overflow-hidden bg-white/40">
<div class="zoom-wrap relative aspect-[4/3]">
<img src="assets/images/img3.jpeg" alt="Eyebrow threading and shaping treatment" class="zoom-img w-full h-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-[var(--espresso)] from-5% via-[var(--espresso)]/60 via-40% to-transparent"></div>
<div class="absolute bottom-0 left-0 right-0 p-5">
<p class="font-display italic text-[var(--gold)] text-xs mb-1">01</p>
<h3 class="font-display text-2xl text-[var(--cream)] [text-shadow:0_2px_8px_rgba(0,0,0,0.5)]">Threading & Brows</h3>
<p class="text-[13px] text-[var(--cream)]/90 mt-0.5 [text-shadow:0_1px_4px_rgba(0,0,0,0.5)]">From $10</p>
</div>
</div>
<button class="acc-trigger w-full flex items-center justify-between px-5 py-4 text-left focus-gold">
<span class="text-[12px] uppercase tracking-[0.12em] text-[var(--espresso)]/60">View pricing</span>
<span class="acc-chevron font-display text-2xl text-[var(--gold)]">+</span>
</button>
<div class="acc-panel">
<div class="grid gap-y-2 px-5 pb-6 text-sm">
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Eyebrow threading</span><span class="text-[var(--espresso)]/60">From $20</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Eyebrow shape (full growth)</span><span class="text-[var(--espresso)]/60">From $24</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Upper lip</span><span class="text-[var(--espresso)]/60">From $12</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Chin</span><span class="text-[var(--espresso)]/60">From $15</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Forehead</span><span class="text-[var(--espresso)]/60">From $10</span></div>
<div class="flex justify-between pb-1"><span>Brow shape + lip combo</span><span class="text-[var(--espresso)]/60">From $32</span></div>
</div>
</div>
</div>
<div class="acc-item reveal reveal-delay-1 in rounded-2xl border border-[var(--line)] overflow-hidden bg-white/40">
<div class="zoom-wrap relative aspect-[4/3]">
<img src="assets/images/img1.jpeg" alt="Relaxing body waxing treatment room" class="zoom-img w-full h-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-[var(--espresso)] from-5% via-[var(--espresso)]/60 via-40% to-transparent"></div>
<div class="absolute bottom-0 left-0 right-0 p-5">
<p class="font-display italic text-[var(--gold)] text-xs mb-1">02</p>
<h3 class="font-display text-2xl text-[var(--cream)] [text-shadow:0_2px_8px_rgba(0,0,0,0.5)]">Face Waxing</h3>
<p class="text-[13px] text-[var(--cream)]/90 mt-0.5 [text-shadow:0_1px_4px_rgba(0,0,0,0.5)]">From $25</p>
</div>
</div>
<button class="acc-trigger w-full flex items-center justify-between px-5 py-4 text-left focus-gold">
<span class="text-[12px] uppercase tracking-[0.12em] text-[var(--espresso)]/60">View pricing</span>
<span class="acc-chevron font-display text-2xl text-[var(--gold)]">+</span>
</button>
<div class="acc-panel">
<div class="grid gap-y-2 px-5 pb-6 text-sm">
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Half legs</span><span class="text-[var(--espresso)]/60">From $40</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Full legs</span><span class="text-[var(--espresso)]/60">From $55</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Underarms</span><span class="text-[var(--espresso)]/60">From $25</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Half arms</span><span class="text-[var(--espresso)]/60">From $40</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Bikini line</span><span class="text-[var(--espresso)]/60">From $30</span></div>
<div class="flex justify-between pb-1"><span>Brazilian</span><span class="text-[var(--espresso)]/60">From $50</span></div>
</div>
</div>
</div>
<div class="acc-item reveal reveal-delay-2 in rounded-2xl border border-[var(--line)] overflow-hidden bg-white/40">
<div class="zoom-wrap relative aspect-[4/3]">
<img src="assets/images/img8.jpeg" alt="Lash and brow beauty treatment close-up" class="zoom-img w-full h-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-[var(--espresso)] from-5% via-[var(--espresso)]/60 via-40% to-transparent"></div>
<div class="absolute bottom-0 left-0 right-0 p-5">
<p class="font-display italic text-[var(--gold)] text-xs mb-1">03</p>
<h3 class="font-display text-2xl text-[var(--cream)] [text-shadow:0_2px_8px_rgba(0,0,0,0.5)]">Tinting</h3>
<p class="text-[13px] text-[var(--cream)]/90 mt-0.5 [text-shadow:0_1px_4px_rgba(0,0,0,0.5)]">From $25</p>
</div>
</div>
<button class="acc-trigger w-full flex items-center justify-between px-5 py-4 text-left focus-gold">
<span class="text-[12px] uppercase tracking-[0.12em] text-[var(--espresso)]/60">View pricing</span>
<span class="acc-chevron font-display text-2xl text-[var(--gold)]">+</span>
</button>
<div class="acc-panel">
<div class="grid gap-y-2 px-5 pb-6 text-sm">
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Lash lift</span><span class="text-[var(--espresso)]/60">From $70</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Lash lift + tint</span><span class="text-[var(--espresso)]/60">From $80</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Brow lamination</span><span class="text-[var(--espresso)]/60">From $50</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Brow lamination + shape + tint</span><span class="text-[var(--espresso)]/60">From $75</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Full set soft volume lashes</span><span class="text-[var(--espresso)]/60">From $100</span></div>
<div class="flex justify-between pb-1"><span>Eyebrow tint</span><span class="text-[var(--espresso)]/60">From $25</span></div>
</div>
</div>
</div>
<div class="acc-item reveal in rounded-2xl border border-[var(--line)] overflow-hidden bg-white/40">
<div class="zoom-wrap relative aspect-[4/3]">
<img src="assets/images/img10.jpeg" alt="Relaxing facial skincare treatment" class="zoom-img w-full h-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-[var(--espresso)] from-5% via-[var(--espresso)]/60 via-40% to-transparent"></div>
<div class="absolute bottom-0 left-0 right-0 p-5">
<p class="font-display italic text-[var(--gold)] text-xs mb-1">04</p>
<h3 class="font-display text-2xl text-[var(--cream)] [text-shadow:0_2px_8px_rgba(0,0,0,0.5)]">Brow Henna</h3>
<p class="text-[13px] text-[var(--cream)]/90 mt-0.5 [text-shadow:0_1px_4px_rgba(0,0,0,0.5)]">From $30</p>
</div>
</div>
<button class="acc-trigger w-full flex items-center justify-between px-5 py-4 text-left focus-gold">
<span class="text-[12px] uppercase tracking-[0.12em] text-[var(--espresso)]/60">View pricing</span>
<span class="acc-chevron font-display text-2xl text-[var(--gold)]">+</span>
</button>
<div class="acc-panel">
<div class="grid gap-y-2 px-5 pb-6 text-sm">
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Facial cleanup (cleanse, scrub, mask)</span><span class="text-[var(--espresso)]/60">From $60</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Signature facial</span><span class="text-[var(--espresso)]/60">From $80</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Signature facial + bleach</span><span class="text-[var(--espresso)]/60">From $105</span></div>
<div class="flex justify-between pb-1"><span>Face bleach</span><span class="text-[var(--espresso)]/60">From $30</span></div>
</div>
</div>
</div>
<div class="acc-item reveal reveal-delay-1 in rounded-2xl border border-[var(--line)] overflow-hidden bg-white/40">
<div class="zoom-wrap relative aspect-[4/3]">
<img src="assets/images/img4.jpeg" alt="Laser hair removal treatment being performed" class="zoom-img w-full h-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-[var(--espresso)] from-5% via-[var(--espresso)]/60 via-40% to-transparent"></div>
<div class="absolute bottom-0 left-0 right-0 p-5">
<p class="font-display italic text-[var(--gold)] text-xs mb-1">05</p>
<h3 class="font-display text-2xl text-[var(--cream)] [text-shadow:0_2px_8px_rgba(0,0,0,0.5)]">Body Waxing</h3>
<p class="text-[13px] text-[var(--cream)]/90 mt-0.5 [text-shadow:0_1px_4px_rgba(0,0,0,0.5)]">From $25</p>
</div>
</div>
<button class="acc-trigger w-full flex items-center justify-between px-5 py-4 text-left focus-gold">
<span class="text-[12px] uppercase tracking-[0.12em] text-[var(--espresso)]/60">View pricing</span>
<span class="acc-chevron font-display text-2xl text-[var(--gold)]">+</span>
</button>
<div class="acc-panel">
<div class="grid gap-y-2 px-5 pb-6 text-sm">
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Laser — small area (lip/chin)</span><span class="text-[var(--espresso)]/60">From $25</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Laser — underarms</span><span class="text-[var(--espresso)]/60">From $45</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Laser — half legs</span><span class="text-[var(--espresso)]/60">From $90</span></div>
<div class="flex justify-between pb-1"><span>Laser — full legs</span><span class="text-[var(--espresso)]/60">From $150</span></div>
</div>
</div>
</div>
<div class="acc-item reveal reveal-delay-2 in rounded-2xl border border-[var(--line)] overflow-hidden bg-white/40">
<div class="zoom-wrap relative aspect-[4/3]">
<img src="https://images.unsplash.com/photo-1521590832167-7bcbfaa6381f?auto=format&fit=crop&w=700&q=80" alt="Men's grooming and skin treatment" class="zoom-img w-full h-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-[var(--espresso)] from-5% via-[var(--espresso)]/60 via-40% to-transparent"></div>
<div class="absolute bottom-0 left-0 right-0 p-5">
<p class="font-display italic text-[var(--gold)] text-xs mb-1">06</p>
<h3 class="font-display text-2xl text-[var(--cream)] [text-shadow:0_2px_8px_rgba(0,0,0,0.5)]">Mens' Services</h3>
<p class="text-[13px] text-[var(--cream)]/90 mt-0.5 [text-shadow:0_1px_4px_rgba(0,0,0,0.5)]">From $15</p>
</div>
</div>
<button class="acc-trigger w-full flex items-center justify-between px-5 py-4 text-left focus-gold">
<span class="text-[12px] uppercase tracking-[0.12em] text-[var(--espresso)]/60">View pricing</span>
<span class="acc-chevron font-display text-2xl text-[var(--gold)]">+</span>
</button>
<div class="acc-panel">
<div class="grid gap-y-2 px-5 pb-6 text-sm">
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Eyebrow shape</span><span class="text-[var(--espresso)]/60">From $20</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Nose / ear wax</span><span class="text-[var(--espresso)]/60">From $15</span></div>
<div class="flex justify-between border-b border-[var(--line)]/60 pb-2"><span>Head & hair oil massage (25 min)</span><span class="text-[var(--espresso)]/60">From $30</span></div>
<div class="flex justify-between pb-1"><span>Skin treatment consult</span><span class="text-[var(--espresso)]/60">From $40</span></div>
</div>
</div>
</div>
</div>
</section>
<!-- ============ GALLERY ============ -->
<section id="gallery" class="max-w-7xl mx-auto px-6 md:px-10 py-24 md:py-32">
<h2 class="reveal in font-display text-4xl md:text-5xl mb-12 max-w-lg">Our latest <span class="italic text-[var(--mauve)]">work.</span></h2>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<div class="reveal in zoom-wrap rounded-xl aspect-square md:col-span-2 md:row-span-2 md:aspect-auto">
<img src="assets/images/img11.jpeg" alt="Facial treatment in progress" class="zoom-img w-full h-full object-cover rounded-xl"/>
</div>
<div class="reveal reveal-delay-1 in zoom-wrap rounded-xl aspect-square">
<img src="assets/images/img12.jpeg" alt="Brow shaping treatment" class="zoom-img w-full h-full object-cover rounded-xl"/>
</div>
<div class="reveal reveal-delay-2 in zoom-wrap rounded-xl aspect-square">
<img src="assets/images/img9.jpeg" alt="Finished bridal makeup look" class="zoom-img w-full h-full object-cover rounded-xl"/>
</div>
<div class="reveal reveal-delay-3 in zoom-wrap rounded-xl aspect-square">
<img src="assets/images/img5.jpeg" alt="Salon interior" class="zoom-img w-full h-full object-cover rounded-xl"/>
</div>
<div class="reveal reveal-delay-4 in zoom-wrap rounded-xl aspect-square">
<img src="assets/images/img7.jpeg" alt="Close up of finished manicure" class="zoom-img w-full h-full object-cover rounded-xl"/>
</div>
</div>
</section>
<!-- ============ TESTIMONIALS ============ -->
<section class="bg-[var(--mauve)]/10 border-y border-[var(--line)]">
<div class="max-w-3xl mx-auto px-6 md:px-10 py-24 text-center relative">
<p class="font-display italic text-[var(--gold)] text-5xl mb-4">"</p>
<div id="testi-track" class="relative min-h-[9rem] md:min-h-[7rem]">
<blockquote data-testi class="testi-slide font-display text-2xl md:text-3xl leading-snug transition-opacity duration-700">
Best threading in Stafford, hands down. Quick, precise, and never over-plucked.
</blockquote>
<blockquote data-testi class="testi-slide font-display text-2xl md:text-3xl leading-snug transition-opacity duration-700 absolute inset-0 opacity-0">
Booked a facial on my lunch break and still made it back to work relaxed. Lovely team.
</blockquote>
<blockquote data-testi class="testi-slide font-display text-2xl md:text-3xl leading-snug transition-opacity duration-700 absolute inset-0 opacity-0">
My go-to for lash lifts. Convenient location right in the shopping centre too.
</blockquote>
</div>
<div class="flex items-center justify-center gap-2 mt-8" id="testi-dots"></div>
</div>
</section>
<!-- ============ HOURS & LOCATION ============ -->
<section id="hours" class="max-w-7xl mx-auto px-6 md:px-10 py-24 md:py-32 grid md:grid-cols-2 gap-12">
<div class="reveal in">
<h2 class="font-display text-4xl md:text-5xl mb-8">Hours & <span class="italic text-[var(--mauve)]">location.</span></h2>
<div class="flex items-center gap-2 mb-8">
<span id="open-dot-2" class="w-2 h-2 rounded-full bg-[var(--sage)] pulse-dot"></span>
<span id="open-text-2" class="text-sm font-medium">Checking hours…</span>
</div>
<div class="divide-y divide-[var(--line)] border-y border-[var(--line)]" id="hours-table">
<div class="flex justify-between py-3 text-sm" data-day="1"><span>Monday</span><span class="text-[var(--espresso)]/70">9:00am – 5:30pm</span></div>
<div class="flex justify-between py-3 text-sm" data-day="2"><span>Tuesday</span><span class="text-[var(--espresso)]/70">9:00am – 5:30pm</span></div>
<div class="flex justify-between py-3 text-sm" data-day="3"><span>Wednesday</span><span class="text-[var(--espresso)]/70">9:00am – 5:30pm</span></div>
<div class="flex justify-between py-3 text-sm" data-day="4"><span>Thursday</span><span class="text-[var(--espresso)]/70">9:00am – 8:00pm</span></div>
<div class="flex justify-between py-3 text-sm" data-day="5"><span>Friday</span><span class="text-[var(--espresso)]/70">9:00am – 5:30pm</span></div>
<div class="flex justify-between py-3 text-sm" data-day="6"><span>Saturday</span><span class="text-[var(--espresso)]/70">9:00am – 4:30pm</span></div>
<div class="flex justify-between py-3 text-sm" data-day="0"><span>Sunday</span><span class="text-[var(--espresso)]/70">10:00am – 4:00pm</span></div>
</div>
<a href="https://www.google.com/maps/search/?api=1&query=Shop+15%2F400+Stafford+Road+Stafford+QLD+4053" target="_blank" rel="noopener" class="link-underline focus-gold inline-block mt-8 text-[13px] uppercase tracking-[0.12em] text-[var(--gold)]">Get Directions →</a>
</div>
<div class="reveal reveal-delay-1 in rounded-2xl overflow-hidden border border-[var(--line)] min-h-[320px]">
<iframe
title="Glow & Glow location map"
class="w-full h-full min-h-[320px]"
style="border:0;"
loading="lazy"
referrerpolicy="no-referrer-when-downgrade"
src="https://www.google.com/maps?q=Shop+15%2F400+Stafford+Road+Stafford+QLD+4053&output=embed">
</iframe>
</div>
</section>
<!-- ============ BOOK CTA ============ -->
<section id="book" class="max-w-7xl mx-auto px-6 md:px-10 pb-24 md:pb-32">
<div class="relative rounded-3xl overflow-hidden bg-[var(--espresso)] text-[var(--cream)] px-8 md:px-16 py-16 md:py-24 text-center">
<div class="absolute -top-24 -right-24 w-72 h-72 rounded-full bg-[var(--gold)]/20 float-slow"></div>
<div class="absolute -bottom-24 -left-24 w-72 h-72 rounded-full bg-[var(--mauve)]/20 float-slow" style="animation-delay:2s;"></div>
<h2 class="reveal in relative font-display text-4xl md:text-6xl max-w-2xl mx-auto leading-tight">
Ready to <span class="italic text-[var(--gold)]">glow?</span>
</h2>
<p class="reveal reveal-delay-1 in relative mt-5 text-[var(--cream)]/70 max-w-md mx-auto text-sm">
Tell us what you're after and we'll get back to you to confirm a time. First visit? Ask about our consult.
</p>
<form class="reveal reveal-delay-2 in relative mt-10 max-w-lg mx-auto flex flex-col sm:flex-row gap-3" onsubmit="event.preventDefault(); this.querySelector('button').textContent='Request Sent ✓';">
<label for="phone" class="sr-only">Phone number</label>
<input id="phone" type="tel" required placeholder="Your phone number" class="focus-gold flex-1 bg-transparent border border-[var(--cream)]/30 rounded-full px-6 py-4 text-sm placeholder:text-[var(--cream)]/40 outline-none focus:border-[var(--gold)] transition-colors" />
<button type="submit" class="btn-fill focus-gold bg-[var(--gold)] text-[var(--espresso)] rounded-full px-8 py-4 text-[13px] uppercase tracking-[0.12em] whitespace-nowrap">
Request a Callback
</button>
</form>
<p class="reveal reveal-delay-3 in relative mt-5 text-[13px] text-[var(--cream)]/60">Or call us directly on <a href="tel:+61732000000" class="link-underline text-[var(--gold)]">(07) 3200 0000</a></p>
</div>
</section>
<!-- ============ FAQ ============ -->
<section id="faq" class="max-w-4xl mx-auto px-6 md:px-10 pb-24 md:pb-32">
<h2 class="reveal in font-display text-4xl md:text-5xl mb-12 text-center">Frequently asked <span class="italic text-[var(--mauve)]">questions.</span></h2>
<div id="faq-accordion" class="border-t border-[var(--line)]">
<div class="acc-item border-b border-[var(--line)]">
<button class="acc-trigger w-full flex items-center justify-between py-6 text-left focus-gold">
<span class="font-display text-lg md:text-xl">How do I book an appointment?</span>
<span class="acc-chevron font-display text-2xl text-[var(--gold)]">+</span>
</button>
<div class="acc-panel"><p class="pb-6 text-sm text-[var(--espresso)]/70 leading-relaxed">Use the callback form above, or call us directly on (07) 3200 0000 and our team will help you find a time.</p></div>
</div>
<div class="acc-item border-b border-[var(--line)]">
<button class="acc-trigger w-full flex items-center justify-between py-6 text-left focus-gold">
<span class="font-display text-lg md:text-xl">What hygiene measures do you follow?</span>
<span class="acc-chevron font-display text-2xl text-[var(--gold)]">+</span>
</button>
<div class="acc-panel"><p class="pb-6 text-sm text-[var(--espresso)]/70 leading-relaxed">All tools and equipment are sanitised between every client, and our studio is cleaned regularly in line with health regulations.</p></div>
</div>
<div class="acc-item border-b border-[var(--line)]">
<button class="acc-trigger w-full flex items-center justify-between py-6 text-left focus-gold">
<span class="font-display text-lg md:text-xl">Can I reschedule or cancel?</span>
<span class="acc-chevron font-display text-2xl text-[var(--gold)]">+</span>
</button>
<div class="acc-panel"><p class="pb-6 text-sm text-[var(--espresso)]/70 leading-relaxed">Yes — just give us at least 24 hours' notice and there's no charge. Changes within 24 hours may incur a small fee.</p></div>
</div>
<div class="acc-item border-b border-[var(--line)]">
<button class="acc-trigger w-full flex items-center justify-between py-6 text-left focus-gold">
<span class="font-display text-lg md:text-xl">Do you offer treatments for men?</span>
<span class="acc-chevron font-display text-2xl text-[var(--gold)]">+</span>
</button>
<div class="acc-panel"><p class="pb-6 text-sm text-[var(--espresso)]/70 leading-relaxed">Definitely — see our Men's Grooming menu above for brow shaping, waxing and skincare tailored for men.</p></div>
</div>
</div>
</section>
<!-- ============ FOOTER ============ -->
<footer class="border-t border-[var(--line)]">
<div class="max-w-7xl mx-auto px-6 md:px-10 py-14 grid md:grid-cols-4 gap-10 text-sm">
<div>
<p class="font-display text-2xl mb-3">Glow <span class="italic">& Glow</span></p>
<p class="text-[var(--espresso)]/60 leading-relaxed">Shop 15/400 Stafford Road<br>Stafford City Shopping Centre<br>Stafford QLD 4053</p>
<a href="https://www.google.com/maps/search/?api=1&query=Shop+15%2F400+Stafford+Road+Stafford+QLD+4053" target="_blank" rel="noopener" class="link-underline focus-gold inline-block mt-3 text-[13px] text-[var(--gold)]">Get directions →</a>
</div>
<div>
<p class="uppercase tracking-[0.15em] text-[11px] text-[var(--espresso)]/50 mb-3">Hours</p>
<p class="text-[var(--espresso)]/70">Mon, Tue, Wed, Fri · 9am – 5:30pm</p>
<p class="text-[var(--espresso)]/70">Thursday · 9am – 8pm</p>
<p class="text-[var(--espresso)]/70">Saturday · 9am – 4:30pm</p>
<p class="text-[var(--espresso)]/70">Sunday · 10am – 4pm</p>
</div>
<div>
<p class="uppercase tracking-[0.15em] text-[11px] text-[var(--espresso)]/50 mb-3">Contact</p>
<p class="text-[var(--espresso)]/70">(07) 3200 0000</p>
<p class="text-[var(--espresso)]/70">hello@glowandglow.com.au</p>
</div>
<div>
<p class="uppercase tracking-[0.15em] text-[11px] text-[var(--espresso)]/50 mb-3">Follow</p>
<div class="flex gap-4">
<a href="#" class="link-underline focus-gold">Instagram</a>
<a href="#" class="link-underline focus-gold">Facebook</a>
</div>
</div>
</div>
<div class="border-t border-[var(--line)] py-6 text-center text-[11px] text-[var(--espresso)]/40">
© 2026 Glow & Glow Beauty & Laser Salon. All rights reserved.
</div>
</footer>
<script>
// ---------- mobile menu ----------
const menuBtn = document.getElementById('menu-btn');
const mobileMenu = document.getElementById('mobile-menu');
menuBtn.addEventListener('click', () => {
const isOpen = mobileMenu.classList.toggle('open');
menuBtn.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
});
mobileMenu.querySelectorAll('a').forEach(a => a.addEventListener('click', () => {
mobileMenu.classList.remove('open');
menuBtn.setAttribute('aria-expanded', 'false');
}));
// ---------- scroll reveal ----------
const revealEls = document.querySelectorAll('.reveal');
revealEls.forEach(el => el.classList.remove('in'));
const io = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if(entry.isIntersecting){
entry.target.classList.add('in');
io.unobserve(entry.target);
}
});
}, { threshold: 0.15 });
revealEls.forEach(el => io.observe(el));
// ---------- accordions (services + faq) ----------
document.querySelectorAll('.acc-trigger').forEach(btn => {
btn.addEventListener('click', () => {
const item = btn.closest('.acc-item');
const wasOpen = item.classList.contains('open');
item.parentElement.querySelectorAll('.acc-item.open').forEach(o => { if(o !== item) o.classList.remove('open'); });
item.classList.toggle('open', !wasOpen);
});
});
// ---------- testimonial slider ----------
const slides = document.querySelectorAll('[data-testi]');
const dotsWrap = document.getElementById('testi-dots');
let active = 0;
slides.forEach((_, i) => {
const dot = document.createElement('button');
dot.className = 'w-2 h-2 rounded-full transition-colors duration-300 ' + (i===0 ? 'bg-[var(--gold)]' : 'bg-[var(--espresso)]/20');
dot.setAttribute('aria-label', 'Show testimonial ' + (i+1));
dot.addEventListener('click', () => showSlide(i));
dotsWrap.appendChild(dot);
});
function showSlide(i){
slides.forEach((s, idx) => {
s.style.opacity = idx === i ? '1' : '0';
s.style.position = idx === i ? 'relative' : 'absolute';
});
[...dotsWrap.children].forEach((d, idx) => {
d.className = 'w-2 h-2 rounded-full transition-colors duration-300 ' + (idx===i ? 'bg-[var(--gold)]' : 'bg-[var(--espresso)]/20');
});
active = i;
}
showSlide(0);
setInterval(() => showSlide((active + 1) % slides.length), 5000);
// ---------- live open/closed status ----------
// Hours: Mon,Tue,Wed,Fri 9-17:30 | Thu 9-20:00 | Sat 9-16:30 | Sun 10-16:00
const HOURS = {
0: [10*60, 16*60], // Sunday
1: [9*60, 17*60+30], // Monday
2: [9*60, 17*60+30], // Tuesday
3: [9*60, 17*60+30], // Wednesday
4: [9*60, 20*60], // Thursday
5: [9*60, 17*60+30], // Friday
6: [9*60, 16*60+30], // Saturday
};
function fmt(mins){
const h = Math.floor(mins/60), m = mins%60;
const ampm = h >= 12 ? 'pm' : 'am';
let h12 = h % 12; if(h12 === 0) h12 = 12;
return h12 + (m ? ':' + String(m).padStart(2,'0') : '') + ampm;
}
function updateOpenStatus(){
const now = new Date();
const day = now.getDay();
const mins = now.getHours()*60 + now.getMinutes();
const [openMin, closeMin] = HOURS[day];
const isOpen = mins >= openMin && mins < closeMin;
let label;
if(isOpen){
label = 'Open now · closes ' + fmt(closeMin);
} else if(mins < openMin){
label = 'Closed · opens ' + fmt(openMin) + ' today';
} else {
label = 'Closed · see hours below';
}
[['open-dot','open-text'], ['open-dot-2','open-text-2']].forEach(([dotId, textId]) => {
const dot = document.getElementById(dotId);
const text = document.getElementById(textId);
if(dot && text){
dot.className = 'w-1.5 h-1.5 rounded-full pulse-dot ' + (isOpen ? 'bg-[var(--sage)]' : 'bg-[var(--mauve)]');
if(dotId === 'open-dot-2') dot.className = 'w-2 h-2 rounded-full pulse-dot ' + (isOpen ? 'bg-[var(--sage)]' : 'bg-[var(--mauve)]');
text.textContent = label;
}
});
document.querySelectorAll('#hours-table [data-day]').forEach(row => {
const rowDay = parseInt(row.dataset.day, 10);
row.classList.toggle('font-semibold', rowDay === day);
row.classList.toggle('text-[var(--gold)]', rowDay === day);
});
}
updateOpenStatus();
setInterval(updateOpenStatus, 60000);
</script>
</body>
</html>