403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/demo/html/glowandglow/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Glow &amp; Glow — Beauty &amp; Laser Salon, Stafford QLD</title>
<meta name="description" content="Glow & Glow Beauty & Laser Salon in Stafford, QLD — threading, waxing, facials, lash &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; Glow Beauty &amp; Laser Salon is Stafford's trusted spot for threading, waxing, facials, lash &amp; 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 &amp; 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 &amp; 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 &amp; <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">&amp; 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 &amp; Glow Beauty &amp; 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>

Youez - 2016 - github.com/yon3zu
LinuXploit