<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Perfect Scapes – Landscape & Patio Pros</title>

<script src="https://unpkg.com/lucide@latest"></script>

<style>

  :root{--accent:#2e4d36;--accent2:#4a6d53}

  body{margin:0;font-family:Helvetica,Arial,sans-serif;color:#fff;background:#000;overflow-x:hidden}

  

  /* HERO SECTION */

  .hero{position:relative;height:100vh;height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;overflow:hidden}

  .hero-bg{position:absolute;top:0;left:0;width:100%;height:100%;background:url('https://i.postimg.cc/mDPFr97S/dji_fly_20251103_174040_255_1762210274793_photo_optimized.jpg') center/cover no-repeat;z-index:-2;animation:slowZoom 25s infinite alternate}

  .hero::after{content:'';position:absolute;inset:0;background:rgba(0,0,0,.5);z-index:-1}

  .logo-placeholder{font-size:5.5rem;font-weight:900;letter-spacing:-4px;color:#fff;text-shadow:0 8px 30px rgba(0,0,0,.8);position:relative;z-index:1;margin:0}

  

  .scroll-hint{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);font-size:1rem;letter-spacing:3px;font-weight:bold;opacity:.9;animation:bounce 2s infinite;z-index:1;cursor:pointer;display:flex;flex-direction:column;align-items:center}

  .scroll-hint svg{width:35px;height:35px;margin-top:10px;fill:none;stroke:#fff;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}

  

  @keyframes bounce{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,-15px)}}

  @keyframes slowZoom{from{transform:scale(1)}to{transform:scale(1.1)}}


  /* TRUST BAR */

  .trust-bar{background:#111;padding:60px 20px;border-bottom:1px solid #222;text-align:center}

  .trust-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:40px;max-width:1100px;margin:0 auto}

  .trust-item{padding:20px;transition:transform 0.3s}

  .trust-item:hover{transform:translateY(-5px)}

  .trust-icon-box{height:80px;margin-bottom:15px;display:flex;justify-content:center;align-items:center}

  .lucide {width:60px; height:60px; stroke:#FFFFFF; stroke-width:1.5; fill:#A0A0A0; stroke-linejoin:round; stroke-linecap:round;}

  .trust-item h3{color:var(--accent2);font-size:1.4rem;margin-bottom:10px;text-transform:uppercase;letter-spacing:1px}

  .trust-item p{color:#ddd;line-height:1.5;font-size:1.1rem;margin:0}


  .floating-btn, .back-to-top {

    position:fixed;bottom:30px;background:var(--accent);color:#fff;padding:12px 22px;

    border-radius:50px;font-weight:bold;font-size:1.3rem;box-shadow:0 6px 20px rgba(0,0,0,.5);

    z-index:100;cursor:pointer;border:none;transition: opacity 0.5s ease, visibility 0.5s ease, background .35s, transform .25s;

    opacity:0;visibility:hidden;

  }

  .floating-btn{right:30px}

  .back-to-top{left:30px}

  .visible {opacity:1; visibility:visible;}

  .floating-btn:hover,.back-to-top:hover{background:var(--accent2);transform:scale(1.15)}


  section{padding:90px 20px;text-align:center}


  /* CORE SERVICES */

  .services{background:#111;padding:120px 20px 110px 20px} 

  .services h2{color:#fff;margin-bottom:80px;font-size:2.8rem}

  .service-row{display:grid;grid-template-columns:1fr 1fr;gap:60px;max-width:1200px;margin:0 auto 100px auto;align-items:center}

  .service-row:nth-child(even){direction:rtl}

  .service-row:nth-child(even) .text{direction:ltr}

  .zoom-box{display:block;overflow:hidden;border-radius:16px;box-shadow:0 15px 40px rgba(0,0,0,.4);cursor:zoom-in}

  .zoom-box img{width:100%;height:480px;max-height:480px;object-fit:cover;transition:transform .4s;display:block}

  .zoom-box:hover img{transform:scale(1.08)}

  .text h3{font-size:2.2rem;margin:0 0 20px;text-align:left}

  .text p{font-size:1.3rem;line-height:1.7;color:#ddd;max-width:500px;text-align:left}

  .text ul{text-align:left; color:#ddd; font-size:1.2rem; line-height:1.6; list-style-type: square; padding-left: 20px;}


  .expand-bar {

    max-width: 1200px; margin: 60px auto 0 auto; background: var(--accent);

    padding: 25px; border-radius: 12px; cursor: pointer; transition: transform 0.3s, background 0.3s;

    box-shadow: 0 10px 30px rgba(0,0,0,0.3); display: flex; justify-content: center; align-items: center; gap: 15px;

  }

  .expand-bar:hover { transform: translateY(-8px); background: var(--accent2); }

  .expand-bar h3 { margin: 0; font-size: 1.6rem; letter-spacing: 2px; text-transform: uppercase; }

  

  .detailed-content {

    max-height: 0; overflow: hidden; transition: max-height 0.8s ease-out; background: #000;

    cursor: pointer; text-align: left; width: 100%; box-sizing: border-box;

  }

  .detailed-content.active { max-height: 2500px; margin-bottom: 0px; }

  .detailed-inner { padding: 40px 20px; max-width: 1000px; margin: 0 auto; }

  .detailed-inner li { font-size: 1.3rem; line-height: 1.8; color: #ddd; margin-bottom: 35px; }

  .service-title { color: var(--accent2); font-weight: bold; text-transform: capitalize; }

  .close-bar { text-align: center; padding: 25px; background: #000; font-weight: bold; font-size: 0.95rem; letter-spacing: 2px; color: #999; text-transform: uppercase; border-top: 1px solid #222; display: flex; justify-content: center; align-items: center; gap: 10px; }

  .close-bar .x-icon { font-size: 1.8rem; line-height: 0; margin-top: -4px; }

  .close-bar:first-child { border-top: none; border-bottom: 1px solid #222; }


  /* PATIO PROCESS */

  .process{background:#0a0a0a;padding:80px 20px 130px 20px}

  .process h2{color:#fff;margin-bottom:80px;font-size:2.8rem}

  .process-row{display:grid;grid-template-columns:1fr 1fr;gap:80px;max-width:1200px;margin:0 auto 100px auto;align-items:center}

  .process-row:last-of-type {margin-bottom:0;}

  .process-text h3{font-size:2rem;margin:0 0 25px;color:var(--accent2)}

  .process-text p{font-size:1.4rem;line-height:1.7;color:#ddd}

  .process-img-container{position:relative;border-radius:16px;overflow:hidden;box-shadow:0 15px 40px rgba(0,0,0,.5);height:480px}


  /* REFINED DIAGONAL SPLITS */

  .diagonal-composite { position: relative; width: 100%; height: 480px; border-radius: 16px; overflow: hidden; box-shadow: 0 15px 40px rgba(0,0,0,0.5); background:#222; }

  .diagonal-composite img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; }

  /* Image 1: Top Left (Plan) */

  .diag-1 { z-index: 3; clip-path: polygon(0 0, 45% 0, 0 65%); }

  /* Image 2: Middle (Aerial) */

  .diag-2 { z-index: 2; clip-path: polygon(45% 0, 100% 0, 100% 65%, 0 100%, 0 65%); }

  /* Image 3: Bottom Right (Finished) */

  .diag-3 { z-index: 1; }


  /* SLIDER STYLES */

  .slider{position:relative;width:100%;height:480px;border-radius:16px;overflow:hidden;cursor:ew-resize;user-select:none;-webkit-user-select:none;touch-action:pan-y;outline:none}

  .slider img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}

  .slider .before{z-index:2;clip-path:polygon(0 0,50% 0,50% 100%,0 100%)}

  .slider .divider{position:absolute;inset:0 0;width:4px;background:#fff;left:50%;transform:translateX(-50%);z-index:9;pointer-events:none}

  .slider .handle{position:absolute;top:50%;left:50%;width:70px;height:70px;background:var(--accent);border:4px solid #fff;border-radius:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;justify-content:center;box-shadow:0 0 20px rgba(0,0,0,0.5)}

  .slider .handle svg{width:22px;height:22px;fill:#fff;margin:0 -2px; stroke: none;}

  .slider-label{position:absolute;top:40px;left:50%;padding:12px 28px;background:rgba(0,0,0,0.75);color:#fff;font-size:1.5rem;font-weight:bold;border-radius:10px;z-index:11;opacity:0;transition:opacity .35s;transform:translateX(-50%);pointer-events:none}

  .label-after{background:var(--accent);color:#fff}

  .slider-hint{position:absolute;top:140px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,0.6);color:#fff;padding:8px 24px;border-radius:30px;font-size:1.1rem;font-weight:600;z-index:12;opacity:.9;transition:opacity .6s;pointer-events:none}

  .slider-hint.hidden{opacity:0}


  /* COMPACT GALLERY SLIDER OVERRIDES */

  .compact-slider .handle { width: 44px; height: 44px; border-width: 3px; }

  .compact-slider .handle svg { width: 16px; height: 16px; }

  .compact-slider .slider-label { top: 15px; font-size: 0.9rem; padding: 6px 14px; }

  .compact-slider .slider-hint { top: 90px; padding: 6px 16px; font-size: 0.85rem; }


  /* MISSION STATEMENT */

  .mission{background:#111;padding:80px 20px 120px 20px}

  .mission h2{color:#fff;margin-bottom:30px;font-size:2.8rem}

  .mission p{font-size:1.6rem;line-height:1.7;color:#ddd;max-width:900px;margin:0 auto}


  .gallery{background:#EDE9D9;color:#333;padding:120px 20px}

  .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:50px;max-width:1200px;margin:0 auto}

  .grid img{width:100%;height:400px;object-fit:cover;transition:transform .4s}

  .grid .slider, .grid .process-img-container { height: 400px; }


  #lightbox{position:fixed;inset:0;background:rgba(0,0,0,.92);display:none;flex-direction:column;align-items:center;justify-content:center;z-index:999;cursor:pointer;padding:40px 20px}

  #lightbox.active{display:flex}

  #lightbox img{max-width:95%;max-height:80vh;border-radius:12px;box-shadow:0 0 50px rgba(0,0,0,0.8);object-fit:contain}

  

  .close-controls{position:absolute;top:20px;right:30px;display:flex;align-items:center;gap:12px;color:#fff;cursor:pointer;z-index:1000}

  .close-hint{font-size:0.85rem;letter-spacing:1.5px;opacity:0.6;text-transform:uppercase;font-weight:bold}

  .close-x{font-size:2rem;line-height:1;opacity:0.8}


  /* CONTACT SECTION */

  .contact{background:#000;padding:140px 20px 20px 20px; text-align:center}

  .contact-btns {display:flex; justify-content:center; gap:30px; width:100%; max-width:800px; margin:0 auto}

  .email-btn,.call-btn{flex: 1; min-width:200px; max-width:280px; display:inline-block; padding:18px 10px; background:var(--accent); color:#fff; border-radius:50px; font-weight:bold; font-size:1.4rem; text-decoration:none; transition:0.3s; margin:0; text-align:center}

  

  .footer-logo {width:210px; height:auto; display:block; margin:30px auto 0 auto; opacity:1.0}

  

  footer{background:#000;color:#777;padding:10px 40px 30px 40px;font-size:1.1rem}


  @media(max-width:768px){

    .hero { height: 100svh; }

    .logo-placeholder { font-size:3.8rem; letter-spacing:-2px; transform: translateY(-80px); }

    .scroll-hint { bottom: 25px; transform: translateX(-50%); }

    .service-row,.process-row{grid-template-columns:1fr; margin-bottom: 60px;}

    .service-row:nth-child(even){direction:ltr}

    .zoom-box img{height:320px;transform:none !important}

    .grid .slider, .grid .process-img-container { height: 320px; }

    .contact-btns {flex-direction:column; align-items:center; gap:20px}

    .email-btn, .call-btn {width: 100%; max-width: 320px}

    .footer-logo {width:180px; margin-top:25px}

    .detailed-content.active { max-height: 4000px; }

    .diagonal-composite { height: 320px; }

  }

</style>

</head>

<body>


<section class="hero">

  <div class="hero-bg"></div>

  <div class="logo-placeholder">PERFECT SCAPES</div>

  <div class="scroll-hint" onclick="document.getElementById('services').scrollIntoView({behavior:'smooth'})">

    SCROLL FOR MORE

    <svg viewBox="0 0 24 24"><path d="M7 13l5 5 5-5M7 6l5 5 5-5"></path></svg>

  </div>

</section>


<section class="trust-bar">

  <div class="trust-container">

    <div class="trust-item">

      <div class="trust-icon-box"><i data-lucide="shield-check"></i></div>

      <h3>NetVendor Certified</h3>

      <p>NetVendor Certified & $2M General Liability. Your property is 100% protected.</p>

    </div>

    <div class="trust-item">

      <div class="trust-icon-box"><i data-lucide="settings"></i></div>

      <h3>Commercial Grade</h3>

      <p>We use professional-spec equipment for a cleaner, longer-lasting finish.</p>

    </div>

    <div class="trust-item">

      <div class="trust-icon-box"><i data-lucide="star"></i></div>

      <h3>Quality Assured</h3>

      <p>Every project is managed with strict attention. It isn't just a name, it's the required outcome.</p>

    </div>

  </div>

</section>


<div class="floating-btn" id="contactBtn" onclick="document.getElementById('contact').scrollIntoView({behavior:'smooth'})">Contact</div>

<div class="back-to-top" id="backToTop" onclick="window.scrollTo({top:0,behavior:'smooth'})">Back to Top</div>


<section class="services" id="services">

  <h2>Our Core Services</h2>

  <div class="service-row">

    <div class="service-img">

      <div class="zoom-box"><img src="https://i.postimg.cc/bJZ2vnQf/dji_fly_20251104_173252_275_1762300615942_photo_optimized.jpg"></div>

    </div>

    <div class="text">

      <h3>Turf Care Services</h3>

      <ul>

        <li>Annual-Weekly Lawn Mowing</li>

        <li>Fertilization Program</li>

        <li>Pest Management</li>

        <li>Lawn Disease Prevention and Treatment</li>

        <li>Turf Renovation</li>

        <li>Aeration and Seeding</li>

      </ul>

    </div>

  </div>

  <div class="service-row">

    <div class="service-img">

      <div class="zoom-box"><img src="https://i.postimg.cc/K8tw35xY/counselling_lawn_mower_938555.jpg"></div>

    </div>

    <div class="text">

      <h3>Landscape Services and Enhancements</h3>

      <ul>

        <li>Annual Flower Installation</li>

        <li>Spring/Fall Clean Up</li>

        <li>Edging/Mulching</li>

        <li>Fall Displays</li>

        <li>Tree/Shrub Pruning</li>

      </ul>

    </div>

  </div>

  <div class="service-row">

    <div class="service-img">

      <div class="zoom-box"><img src="https://i.postimg.cc/9MRkcGxF/Chat_GPT_Image_Feb_23_2026_01_42_22_AM.png"></div>

    </div>

    <div class="text">

      <h3>24/7 Emergency Response</h3>

      <p>Rapid storm cleanup and debris removal; Professional snow plowing, shoveling, and hauling; Anti-ice and de-icing applications.</p>

    </div>

  </div>


  <div class="expand-bar" id="expandBar" onclick="toggleDetails()">

    <i data-lucide="plus-circle"></i>

    <h3>Expand for Detailed Services</h3>

  </div>


  <div class="detailed-content" id="detailSection" onclick="toggleDetails()">

    <div class="close-bar">Click anywhere to close <span class="x-icon">&times;</span></div>

    <div class="detailed-inner">

        <ul>

            <li><span class="service-title">Weekly Lawn Mowing Services</span> that include string trimming edges and blowing off all hard surfaces.</li>

            <li><span class="service-title">Weekly plant bed weed control service</span> includes chemically spraying weeds in open plant areas. Weed control service requires sign up of lawn mowing service.</li>

            <li><span class="service-title">Fertilizer and Turf Care Service</span> formulated to create a green and healthy lawn. Full year program consists of 5 Fertilization Applications.</li>

            <li><span class="service-title">Turf Care Applications</span> we offer include Weed control, grub control, curative grub, and turf disease protection.</li>

            <li><span class="service-title">Lawn Aeration Services</span> that break up thatch and improve soil structure. It also allows water, nutrients and fertilizers to reach roots. Aerations also promote healthy root growth and overseeding helps to fill patchy and bare areas.</li>

            <li><span class="service-title">Edging and Mulching Services</span> are used to provide definition and depth to new and existing landscapes. Edging creates depth and holds much in beds while mulching adds color and definition to all areas.</li>

            <li><span class="service-title">Spring and Fall Clean Up Services</span> involves cleaning of all beds, removal of leaves, dead plant material, sticks and any unwanted material. Fall Cleanup involves cleaning up dead pant material which reduces the risk of turf and landscape parasites and diseases.</li>

            <li><span class="service-title">Landscape Design and Installation Services</span> are guaranteed to suit your budget, taste and lifestyle. Our experienced team will guide you through design, budgeting, formal estimating, project management and post-installation maintenance to ensure your new outdoor space reaches its full potential and your experience with us is an enjoyable one.</li>

        </ul>

    </div>

    <div class="close-bar">Click anywhere to close <span class="x-icon">&times;</span></div>

  </div>

</section>


<section class="process">

  <h2>Our Patio Build Process</h2>

  <div class="process-row">

    <div class="process-text"><h3>1. Design With Your Input</h3><p>We sketch the layout with your exact wishes — shape, color, seating, lighting. 100% free, no obligation.</p></div>

    <div class="process-img">

      <div class="zoom-box"><img src="https://i.postimg.cc/K89FzD59/IMG_0173.jpg"></div>

    </div>

  </div>

  <div class="process-row">

    <div class="process-text"><h3>2. Transformation in Progress</h3><p>Watch your new patio come to life with zero resident disruption.</p></div>

    <div class="process-img">

      <div class="process-img-container">

        <div class="slider ba-slider" tabindex="0">

          <img src="https://i.postimg.cc/W3XFG8FT/IMG_0163.jpg" class="before">

          <img src="https://i.postimg.cc/d14k26kV/IMG_0162.jpg" class="after">

          <div class="divider"></div>

          <div class="handle">

            <svg viewBox="0 0 24 24"><path d="M15 18l-6-6 6-6" stroke="white" stroke-width="3" fill="none"/></svg>

            <svg viewBox="0 0 24 24"><path d="M9 18l6-6-6-6" stroke="white" stroke-width="3" fill="none"/></svg>

          </div>

          <div class="slider-label label-before">BEFORE</div>

          <div class="slider-label label-after">AFTER</div>

          <div class="slider-hint">Drag to compare</div>

        </div>

      </div>

    </div>

  </div>

  <div class="process-row">

    <div class="process-text"><h3>3. Final Product – Ready to Enjoy</h3><p>Clean, finished, and handed over — ready for whatever you throw at it.</p></div>

    <div class="process-img">

      <div class="zoom-box"><img src="https://i.postimg.cc/yxGD5Nyr/IMG_0169.jpg"></div>

    </div>

  </div>

</section>


<section class="mission">

  <h2>Mission Statement</h2>

  <p>Our mission is to deliver exceptional landscape and hardscape solutions that enhance the value, functionality, and visual impact of commercial and residential real-estate properties.</p>

</section>


<section class="gallery">

  <h2>Gallery</h2>

  <div class="grid">

    <div class="zoom-box"><img src="https://i.postimg.cc/hjX7GmV1/dji_fly_20251104_173728_284_1762300625410_photo_optimized.jpg"></div>

    <div class="zoom-box"><img src="https://i.postimg.cc/Jh6kmxHK/dji_fly_20251103_174108_256_1762210276436_photo_optimized.jpg"></div>

    

    <div class="process-img-container">

        <div class="slider ba-slider compact-slider" tabindex="0">

          <img src="https://i.postimg.cc/brrG3nkk/IMG_0167.jpg" class="before">

          <img src="https://i.postimg.cc/76mG39GC/IMG_0166.jpg" class="after">

          <div class="divider"></div>

          <div class="handle">

            <svg viewBox="0 0 24 24"><path d="M15 18l-6-6 6-6" stroke="white" stroke-width="3" fill="none"/></svg>

            <svg viewBox="0 0 24 24"><path d="M9 18l6-6-6-6" stroke="white" stroke-width="3" fill="none"/></svg>

          </div>

          <div class="slider-label label-before">BEFORE</div>

          <div class="slider-label label-after">AFTER</div>

          <div class="slider-hint">Drag to compare</div>

        </div>

    </div>


    <div class="zoom-box"><img src="https://i.postimg.cc/3Nqk6wZM/IMG_0171.jpg"></div>

    <div class="zoom-box"><img src="https://i.postimg.cc/wMr1PBQw/IMG_0168.jpg"></div>

    

    <div class="process-img-container">

        <div class="slider ba-slider compact-slider" tabindex="0">

          <img src="https://i.postimg.cc/V6DrqgSh/IMG_0165.jpg" class="before">

          <img src="https://i.postimg.cc/V6DrqgSV/IMG_0164.jpg" class="after" style="object-position: 80% center;">

          <div class="divider"></div>

          <div class="handle">

            <svg viewBox="0 0 24 24"><path d="M15 18l-6-6 6-6" stroke="white" stroke-width="3" fill="none"/></svg>

            <svg viewBox="0 0 24 24"><path d="M9 18l6-6-6-6" stroke="white" stroke-width="3" fill="none"/></svg>

          </div>

          <div class="slider-label label-before">BEFORE</div>

          <div class="slider-label label-after">AFTER</div>

          <div class="slider-hint">Drag to compare</div>

        </div>

    </div>

  </div>

</section>


<div id="lightbox" onclick="this.classList.remove('active')">

  <div class="close-controls">

    <span class="close-hint">Click anywhere to close</span>

    <span class="close-x">&times;</span>

  </div>

  <img id="lightbox-img" src="" alt="Enlarged view">

</div>


<section class="contact" id="contact">

  <h2>Ready to upgrade your property?</h2>

  <div class="contact-btns">

    <a href="mailto:info@perfectscapes.com" class="email-btn">Email Us</a>

    <a href="tel:+15551231234" class="call-btn">Call or Text</a>

  </div>

  <img src="https://i.postimg.cc/4dC9pJfY/Untitled_Artwork_5.png" class="footer-logo" alt="Perfect Scapes Logo">

</section>


<footer>© 2026 Perfect Scapes • All rights reserved</footer>


<script>

lucide.createIcons();


function toggleDetails() {

    const detail = document.getElementById('detailSection');

    const expandBar = document.getElementById('expandBar');

    if (detail.classList.contains('active')) {

        detail.classList.remove('active');

        const yOffset = -20; 

        const y = expandBar.getBoundingClientRect().top + window.pageYOffset + yOffset;

        window.scrollTo({top: y, behavior: 'smooth'});

    } else {

        detail.classList.add('active');

    }

}


const lightbox = document.getElementById('lightbox'), lbImg = document.getElementById('lightbox-img');

document.querySelectorAll('.zoom-box img').forEach(img => {

  img.addEventListener('click', () => {

    if (window.innerWidth > 768) { lbImg.src = img.src; lightbox.classList.add('active'); }

  });

});


const sliders = document.querySelectorAll('.ba-slider');

sliders.forEach(slider => {

  const handle = slider.querySelector('.handle'), divider = slider.querySelector('.divider'), beforeImg = slider.querySelector('.before'), labelBefore = slider.querySelector('.label-before'), labelAfter = slider.querySelector('.label-after'), hint = slider.querySelector('.slider-hint');

  let dragging = false;

  function moveSlider(e) {

    if (!dragging) return;

    const rect = slider.getBoundingClientRect();

    let x = e.clientX || (e.touches ? e.touches[0].clientX : 0);

    let pos = ((x - rect.left) / rect.width) * 100;

    pos = Math.max(0, Math.min(100, pos));

    handle.style.left = pos + '%';

    divider.style.left = pos + '%';

    beforeImg.style.clipPath = `polygon(0 0, ${pos}% 0, ${pos}% 100%, 0 100%)`;

    labelBefore.style.opacity = pos > 70 ? 1 : 0;

    labelAfter.style.opacity = pos < 30 ? 1 : 0;

  }

  slider.addEventListener('mousedown', () => { dragging = true; if(hint) hint.classList.add('hidden'); });

  slider.addEventListener('touchstart', () => { dragging = true; if(hint) hint.classList.add('hidden'); });

  window.addEventListener('mouseup', () => dragging = false);

  window.addEventListener('touchend', () => dragging = false);

  window.addEventListener('mousemove', moveSlider);

  window.addEventListener('touchmove', moveSlider);

});


const btt=document.getElementById('backToTop'), contactBtn=document.getElementById('contactBtn');

window.addEventListener('scroll',()=>{

  const scrolled = window.scrollY > 400;

  btt.classList.toggle('visible', scrolled);

  contactBtn.classList.toggle('visible', scrolled);

});

</script>

</body>

</html>