<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
    <title>Bike Hire Wadebridge | Camel Trail Cycle Hire & E-Bikes</title>
    <meta name="description" content="Bike hire in Wadebridge for the Camel Trail. Premium bikes, e-bikes, family equipment, helmets, locks, free onsite parking and breakdown support from Camel Trail Cycle Hire.">
    <meta name="keywords" content="bike hire Wadebridge, Camel Trail bike hire, Camel Trail Cycle Hire, e-bike hire Wadebridge, cycle hire Wadebridge, family bike hire Cornwall, group bike hire Camel Trail, bike hire Padstow, Wadebridge to Padstow cycling">
    <link rel="canonical" href="https://www.cameltrailcyclehire.co.uk/">
    <meta name="robots" content="index, follow, max-image-preview:large">
    <meta name="theme-color" content="#2d5a27">
    <meta property="og:type" content="website">
    <meta property="og:title" content="Bike Hire Wadebridge | Camel Trail Cycle Hire">
    <meta property="og:description" content="Premium bike and e-bike hire for the Camel Trail from Wadebridge, with family equipment, free onsite parking, helmets, locks and breakdown support included.">
    <meta property="og:url" content="https://www.cameltrailcyclehire.co.uk/">
    <meta property="og:image" content="https://www.cameltrailcyclehire.co.uk/media/People-Cycling-Down-Camel-Trail-Camel-Trail-Cycle-Hire.jpg">
    <meta name="twitter:card" content="summary_large_image">
    
    <!-- SEO Structured Data -->
    <script type="application/ld+json">
{
          "@context": "https://schema.org",
          "@graph": [
                {
                      "@type": [
                            "LocalBusiness",
                            "SportsActivityLocation",
                            "Store"
                      ],
                      "@id": "https://www.cameltrailcyclehire.co.uk/#business",
                      "name": "Camel Trail Cycle Hire",
                      "alternateName": [
                            "Camel Trail Bike Hire",
                            "Wadebridge Bike Hire"
                      ],
                      "foundingDate": "1983",
                      "description": "Bike hire in Wadebridge for the Camel Trail, including premium bikes, e-bikes, family cycling equipment, group hire, helmets, locks, free onsite parking and breakdown support.",
                      "url": "https://www.cameltrailcyclehire.co.uk/",
                      "telephone": "+441208814104",
                      "email": "cameltrailcyclehire@gmail.com",
                      "priceRange": "\u00a3\u00a3",
                      "image": [
                            "https://www.cameltrailcyclehire.co.uk/media/Camerl%20Trail%20Cyacle%20Hire%20Logo.png",
                            "https://www.cameltrailcyclehire.co.uk/media/People-Cycling-Down-Camel-Trail-Camel-Trail-Cycle-Hire.jpg",
                            "https://www.cameltrailcyclehire.co.uk/media/Bike%20Hire%20Wadebridge.jpg"
                      ],
                      "logo": "https://www.cameltrailcyclehire.co.uk/media/Camerl%20Trail%20Cyacle%20Hire%20Logo.png",
                      "address": {
                            "@type": "PostalAddress",
                            "streetAddress": "Eddystone Road",
                            "addressLocality": "Wadebridge",
                            "addressRegion": "Cornwall",
                            "postalCode": "PL27 7AL",
                            "addressCountry": "GB"
                      },
                      "geo": {
                            "@type": "GeoCoordinates",
                            "latitude": 50.518478,
                            "longitude": -4.838551
                      },
                      "areaServed": [
                            "Wadebridge",
                            "Camel Trail",
                            "Padstow",
                            "Bodmin",
                            "North Cornwall",
                            "Cornwall"
                      ],
                      "keywords": "bike hire Wadebridge, Camel Trail bike hire, cycle hire Wadebridge, e-bike hire Wadebridge, family bike hire Cornwall, group bike hire Camel Trail",
                      "hasMap": "https://www.google.com/maps/search/?api=1&query=Camel+Trail+Cycle+Hire+Wadebridge",
                      "openingHoursSpecification": [
                            {
                                  "@type": "OpeningHoursSpecification",
                                  "dayOfWeek": [
                                        "Monday",
                                        "Tuesday",
                                        "Wednesday",
                                        "Thursday",
                                        "Friday",
                                        "Saturday",
                                        "Sunday"
                                  ],
                                  "opens": "08:30",
                                  "closes": "17:00"
                            }
                      ],
                      "makesOffer": [
                            {
                                  "@type": "Offer",
                                  "itemOffered": {
                                        "@type": "Service",
                                        "name": "Bike hire Wadebridge"
                                  }
                            },
                            {
                                  "@type": "Offer",
                                  "itemOffered": {
                                        "@type": "Service",
                                        "name": "Camel Trail e-bike hire"
                                  }
                            },
                            {
                                  "@type": "Offer",
                                  "itemOffered": {
                                        "@type": "Service",
                                        "name": "Family bike hire with child trailers and tag-alongs"
                                  }
                            },
                            {
                                  "@type": "Offer",
                                  "itemOffered": {
                                        "@type": "Service",
                                        "name": "Group bike hire for schools, clubs and corporate days"
                                  }
                            }
                      ]
                },
                {
                      "@type": "WebSite",
                      "@id": "https://www.cameltrailcyclehire.co.uk/#website",
                      "url": "https://www.cameltrailcyclehire.co.uk/",
                      "name": "Camel Trail Cycle Hire",
                      "publisher": {
                            "@id": "https://www.cameltrailcyclehire.co.uk/#business"
                      }
                },
                {
                      "@type": "BreadcrumbList",
                      "@id": "https://www.cameltrailcyclehire.co.uk/#breadcrumbs",
                      "itemListElement": [
                            {
                                  "@type": "ListItem",
                                  "position": 1,
                                  "name": "Home",
                                  "item": "https://www.cameltrailcyclehire.co.uk/"
                            }
                      ]
                },
                {
                      "@type": "FAQPage",
                      "@id": "https://www.cameltrailcyclehire.co.uk/#faq",
                      "mainEntity": [
                            {
                                  "@type": "Question",
                                  "name": "Where can I hire bikes for the Camel Trail in Wadebridge?",
                                  "acceptedAnswer": {
                                        "@type": "Answer",
                                        "text": "Camel Trail Cycle Hire is based on Eddystone Road in Wadebridge, close to the Camel Trail, with bike hire, e-bike hire and family cycling equipment."
                                  }
                            },
                            {
                                  "@type": "Question",
                                  "name": "Are helmets and bike locks included?",
                                  "acceptedAnswer": {
                                        "@type": "Answer",
                                        "text": "Yes. Helmets and bike locks are included free of charge with hire."
                                  }
                            },
                            {
                                  "@type": "Question",
                                  "name": "Do you offer group bike hire?",
                                  "acceptedAnswer": {
                                        "@type": "Answer",
                                        "text": "Yes. Camel Trail Cycle Hire can help with group hire for schools, clubs, families and corporate days. Group enquiries are not confirmed bookings until the team contacts you."
                                  }
                            },
                            {
                                  "@type": "Question",
                                  "name": "Is breakdown support included?",
                                  "acceptedAnswer": {
                                        "@type": "Answer",
                                        "text": "Yes. Callout breakdown service is included with all hire."
                                  }
                            },
                            {
                                  "@type": "Question",
                                  "name": "Do you offer evening bike rides on the Camel Trail?",
                                  "acceptedAnswer": {
                                        "@type": "Answer",
                                        "text": "Yes. Reduced rate evening bike rides are available daily from 3:00 PM to 7:30 PM, with no booking required. Off peak return times may be as early as 5pm."
                                  }
                            }
                      ]
                }
          ]
    }
    </script>

    <script src="https://cdn.tailwindcss.com"></script>
    <script>
        tailwind.config = {
            theme: {
                extend: {
                    colors: {
                        brand: {
                            green: '#2d5a27',
                            lightGreen: '#4ade80',
                            yellow: '#facc15',
                        }
                    },
                    fontFamily: {
                        sans: ['Inter', 'sans-serif'],
                        display: ['Poppins', 'sans-serif'],
                    }
                }
            }
        }
    </script>

    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link rel="preconnect" href="https://www.cameltrailcyclehire.co.uk">
    <link rel="preconnect" href="https://8f2e8e62-d5af-4c1f-839a-a358154bdf4d.assets.booqable.com">
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;900&family=Poppins:wght@600;800;900&display=swap" rel="stylesheet">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/MotionPathPlugin.min.js"></script>

    <style>
        body { margin: 0; padding: 0; background-color: #111; overflow-x: hidden; -webkit-font-smoothing: antialiased; scroll-behavior: smooth; }
        .magnetic-btn { transition: transform 0.1s ease-out; }
        .hero-overlay { background: linear-gradient(135deg, rgba(45, 90, 39, 0.75) 0%, rgba(0, 0, 0, 0.5) 100%); z-index: 1; }
        .scroll-indicator { animation: bounce 2s infinite; }
        @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-10px); } 60% { transform: translateY(-5px); } }
        .text-glow-yellow { text-shadow: 0 0 35px rgba(250, 204, 21, 0.5); }

        .hero-video-mobile { display: none; }

        @media (max-width: 768px) {
            .hero-video-desktop { display: none; }
            .hero-video-mobile { display: block; }
        }

        .gsap-text-content, .gsap-headline { overflow: visible; }
        .gsap-headline {
            line-height: 1.16 !important;
            padding: 0.08em 0.14em 0.12em;
            margin-left: -0.14em;
            margin-right: -0.14em;
            text-wrap: balance;
            will-change: transform, opacity;
        }
        .two-tone-span { padding: 0 0.08em 0.08em; margin: 0 -0.08em -0.08em; }
        .gsap-reveal { opacity: 0; transform: translateY(40px); will-change: transform, opacity, filter; }
        .gsap-soft-reveal { opacity: 0; transform: translateY(50px); will-change: transform, opacity, filter; }
        
        .two-tone-span {
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
            background-image: linear-gradient(to right, #facc15, #ffffff);
            display: inline-block;
        }

        /* Mobile Polish */
        @media (max-width: 768px) {
            .hero-slide-text { font-size: 2.75rem !important; line-height: 1.18 !important; }
            .mobile-card-shadow { box-shadow: 0 20px 40px rgba(0,0,0,0.15); }
        }

        /* Discovery Trail Layering */
        #trail-line-container {
            z-index: 0;
            pointer-events: none;
            position: absolute;
            left: 50%;
            transform: translateX(-50%);
            width: 100px;
            height: 100%;
        }
        
        /* Flipped Bike */
        #trail-bike-wrapper {
            transform: scaleX(-1);
            display: inline-block;
        }

        .booking-pulse {
            animation: softPulse 2.5s infinite;
        }
        @keyframes softPulse {
            0% { box-shadow: 0 0 0 0 rgba(250, 204, 21, 0.4); }
            70% { box-shadow: 0 0 0 15px rgba(250, 204, 21, 0); }
            100% { box-shadow: 0 0 0 0 rgba(250, 204, 21, 0); }
        }


        .featured-product-card {
            min-width: 0;
            overflow: hidden;
        }

        .featured-product-card .booqable-product,
        .featured-product-card .booqable-product > div {
            width: 100%;
            max-width: 100%;
            min-width: 0;
        }

        .featured-product-card iframe,
        .featured-product-card img {
            max-width: 100%;
        }

        .bike-products-grid {
            grid-template-columns: 1fr;
        }

        @media (min-width: 641px) {
            .bike-products-grid {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }
        }

        .choose-ride-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        @media (min-width: 1024px) {
            .choose-ride-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
        }
        @media (max-width: 640px) {
            .choose-ride-card { height: 315px !important; border-radius: 2rem !important; }
            .choose-ride-card h3 { font-size: 1.35rem !important; line-height: 1.02 !important; margin-bottom: 0.5rem !important; }
            .choose-ride-card p { display: none; }
            .choose-ride-card button { font-size: 0.62rem !important; padding: 0.75rem 0.9rem !important; }
            .choose-ride-card > div:last-child { padding: 1rem !important; }
            .bike-products-grid { grid-template-columns: 1fr !important; gap: 1rem !important; }
            .bike-products-grid .featured-product-card { padding: 1rem !important; border-radius: 1.75rem !important; }
        }
        @media (min-width: 641px) and (max-width: 1023px) {
            .choose-ride-card { height: 430px !important; }
            .bike-products-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 1rem !important; }
        }


        @media (max-width: 640px) {
            #bike-booking-options .flex.items-start.justify-between > div { width: 100%; }
            #bike-booking-options a[href="#fleet"] { margin-top: -0.25rem; }
        }

        #mobileMenuPanel { max-height: calc(100vh - 7rem); overflow-y: auto; }


        .modal-open { overflow: hidden; }

        .site-popup-backdrop {
            position: fixed;
            inset: 0;
            z-index: 9999;
            display: none;
            align-items: center;
            justify-content: center;
            padding: 1.25rem;
            background: rgba(4, 18, 9, 0.72);
            backdrop-filter: blur(12px);
        }
        .site-popup-backdrop.is-visible { display: flex; }
        .site-popup-card {
            width: min(920px, 100%);
            max-height: min(88vh, 820px);
            overflow: auto;
            background: #ffffff;
            color: #111827;
            border-radius: 2.5rem;
            box-shadow: 0 30px 100px rgba(0,0,0,.35);
            border: 4px solid rgba(250, 204, 21, .95);
        }
        .site-popup-grid { display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr); }
        .site-popup-image { width: 100%; height: 100%; min-height: 360px; object-fit: cover; }
        .site-popup-content { padding: clamp(1.75rem, 4vw, 3.5rem); position: relative; }
        .site-popup-close {
            position: absolute;
            top: 1rem;
            right: 1rem;
            width: 3rem;
            height: 3rem;
            border-radius: 999px;
            background: #064e3b;
            color: #fff;
            font-size: 1.6rem;
            line-height: 1;
            font-weight: 900;
        }
        .site-popup-title { color: #064e3b; font-family: 'Plus Jakarta Sans', sans-serif; font-size: clamp(2rem, 4vw, 3.8rem); line-height: .95; font-weight: 900; text-transform: uppercase; font-style: italic; padding-right: 3.25rem; }
        .site-popup-body { color: #4b5563; font-size: 1.05rem; line-height: 1.7; font-weight: 700; font-style: italic; margin-top: 1.25rem; white-space: pre-line; }
        .site-popup-button { display: inline-flex; margin-top: 1.75rem; background: #facc15; color: #064e3b; border-radius: 999px; padding: 1rem 1.5rem; font-size: .8rem; font-weight: 900; text-transform: uppercase; letter-spacing: .18em; font-style: italic; box-shadow: 0 14px 35px rgba(250,204,21,.35); }
        .site-popup-kicker { color: #064e3b; font-size: .72rem; text-transform: uppercase; letter-spacing: .28em; font-weight: 900; margin-bottom: .85rem; }
        @media (max-width: 760px) {
            .site-popup-grid { grid-template-columns: 1fr; }
            .site-popup-image { min-height: 220px; max-height: 320px; }
            .site-popup-card { border-radius: 2rem; }
        }

        section { position: relative; z-index: 10; }
    </style>
</head>
<body class="antialiased text-white font-sans selection:bg-brand-yellow selection:text-black">

    <!-- HERO SECTION -->
    <section class="relative w-full h-screen flex flex-col items-center justify-center overflow-hidden z-20">
        <!-- Desktop hero video - kept close to the original working setup for reliable autoplay -->
        <video id="heroVideoDesktop" class="hero-video hero-video-desktop absolute top-0 left-0 w-full h-full object-cover z-0 opacity-80" autoplay loop muted playsinline preload="auto" poster="https://www.cameltrailcyclehire.co.uk/media/Ride%20The%20Camel%20Trail%20With%20Camel%20Trail%20Cycle%20Hire.mp4">
            <source src="https://www.cameltrailcyclehire.co.uk/media/Ride%20The%20Camel%20Trail%20With%20Camel%20Trail%20Cycle%20Hire.mp4" type="video/mp4">
        </video>

        <!-- Mobile hero video - source is injected shortly after load to give the page a cleaner first paint -->
        <video id="heroVideoMobile" class="hero-video hero-video-mobile absolute top-0 left-0 w-full h-full object-cover z-0 opacity-80" autoplay loop muted playsinline preload="none" poster="https://www.cameltrailcyclehire.co.uk/media/Ride%20The%20Camel%20Trail%20With%20Camel%20Trail%20Cycle%20Hire.mp4"></video>


        <div class="hero-overlay absolute top-0 left-0 w-full h-full"></div>

        <!-- NAV -->
        <nav class="gsap-nav opacity-0 absolute top-0 left-0 w-full p-6 md:p-10 flex justify-between items-center z-50">
            <img src="https://www.cameltrailcyclehire.co.uk/media/Camerl%20Trail%20Cyacle%20Hire%20Logo.png" alt="Camel Trail Cycle Hire Wadebridge logo" class="h-28 md:h-40 lg:h-52 w-auto object-contain drop-shadow-lg hover:scale-105 transition-transform duration-300 cursor-pointer" onclick="window.scrollTo({top: 0, behavior: 'smooth'})">
            <div class="hidden lg:flex gap-7 xl:gap-8 text-xs font-black uppercase tracking-[0.32em]">
                <a href="#fleet" class="hover:text-brand-yellow transition-colors">Bikes</a>
                <a href="#trail" class="hover:text-brand-yellow transition-colors">Discovery</a>
                <a href="#fleet" class="hover:text-brand-yellow transition-colors">Fleet</a>
                <a href="#story" class="hover:text-brand-yellow transition-colors">Story</a>
                <a href="#groups" class="hover:text-brand-yellow transition-colors">Groups</a>
                <a href="#evening-rides" class="hover:text-brand-yellow transition-colors">Evening</a>
                <a href="blog.php" class="hover:text-brand-yellow transition-colors">Blog</a>
                <a href="#contact" class="hover:text-brand-yellow transition-colors">Contact</a>
            </div>
            <button id="mobileMenuToggle" type="button" class="lg:hidden flex items-center justify-center w-14 h-14 rounded-full bg-brand-yellow text-brand-green shadow-2xl border-2 border-white/30" aria-label="Open menu" aria-expanded="false" aria-controls="mobileMenuPanel">
                <span class="sr-only">Open menu</span>
                <svg class="w-7 h-7" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="3" aria-hidden="true"><path stroke-linecap="round" d="M4 7h16M4 12h16M4 17h16"></path></svg>
            </button>
            <div id="mobileMenuPanel" class="hidden lg:hidden absolute top-[6.5rem] right-6 left-6 sm:left-auto sm:w-80 bg-white/95 backdrop-blur-2xl text-brand-green rounded-[2rem] shadow-2xl border border-brand-yellow/40 p-5">
                <div class="grid gap-2 text-sm font-black uppercase tracking-[0.22em] italic">
                    <a href="#fleet" class="px-4 py-3 rounded-2xl hover:bg-brand-yellow/20 transition-colors">Bikes</a>
                    <a href="#trail" class="px-4 py-3 rounded-2xl hover:bg-brand-yellow/20 transition-colors">Discovery</a>
                    <a href="#story" class="px-4 py-3 rounded-2xl hover:bg-brand-yellow/20 transition-colors">Story</a>
                    <a href="#bike-booking-options" class="px-4 py-3 rounded-2xl hover:bg-brand-yellow/20 transition-colors">Book Online</a>
                    <a href="#groups" class="px-4 py-3 rounded-2xl hover:bg-brand-yellow/20 transition-colors">Groups</a>
                    <a href="#evening-rides" class="px-4 py-3 rounded-2xl hover:bg-brand-yellow/20 transition-colors">Evening Rides</a>
                    <a href="blog.php" class="px-4 py-3 rounded-2xl hover:bg-brand-yellow/20 transition-colors">Blog</a>
                    <a href="#contact" class="px-4 py-3 rounded-2xl hover:bg-brand-yellow/20 transition-colors">Contact</a>
                </div>
                <a href="tel:01208814104" class="mt-4 block text-center bg-brand-green text-white rounded-full px-5 py-4 font-black uppercase tracking-widest text-xs italic hover:bg-brand-yellow hover:text-brand-green transition-colors">Call 01208 814104</a>
            </div>
        </nav>

        <!-- HERO SLIDER -->
        <div class="relative z-20 text-center px-4 max-w-5xl flex flex-col items-center mt-12 main-hero-content">
            <div class="gsap-text-content w-full">
                <h1 class="gsap-headline opacity-0 text-5xl md:text-7xl lg:text-8xl font-display font-black leading-[1.1] tracking-tighter mb-6 drop-shadow-lg uppercase italic hero-slide-text">
                    Explore The <br><span class="two-tone-span text-glow-yellow">Camel Trail</span>
                </h1>
                <p class="gsap-subhead opacity-0 text-lg md:text-xl text-gray-200 mb-10 max-w-2xl font-bold italic drop-shadow-md mx-auto leading-relaxed">
                    Wadebridge's premium bikes & e-bikes since 1983. Premium hire for every adventurer.
                </p>
            </div>

            <div class="gsap-btn-wrapper relative z-30 flex flex-col items-center transition-all duration-1000">
                <button onclick="window.location.href='#fleet'" id="bookBtn" class="gsap-btn opacity-0 magnetic-btn bg-brand-yellow text-gray-900 font-black text-lg py-5 px-12 md:px-16 rounded-full shadow-[0_0_60px_rgba(250,204,21,0.5)] hover:bg-white hover:scale-105 transition-all duration-300 flex items-center gap-4 group uppercase italic booking-pulse">
                    Book Your Ride 
                    <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" class="group-hover:translate-x-1 transition-transform"><path d="M5 12h14m-7-7 7 7-7 7"/></svg>
                </button>
            </div>
        </div>

        <div class="gsap-badge-desktop hidden md:block absolute bottom-12 right-12 z-40 opacity-0 pointer-events-none">
            <img src="https://www.cameltrailcyclehire.co.uk/media/free-onsite-parking.png" alt="Free onsite parking at Camel Trail Cycle Hire Wadebridge" class="h-24 lg:h-32 drop-shadow-2xl animate-[pulse_4s_ease-in-out_infinite]">
        </div>

        <div class="absolute bottom-8 left-0 w-full flex flex-col items-center justify-center z-20 opacity-0 scroll-indicator pointer-events-none">
            <span class="text-[10px] font-black uppercase tracking-[0.6em] opacity-40 text-white mb-2">Discover More</span>
            <div class="w-[1px] h-12 bg-gradient-to-b from-brand-yellow to-transparent"></div>
        </div>
    </section>

    <!-- OUR FLEET SECTION -->
    <section id="fleet" class="py-24 bg-white text-black relative z-10 gsap-soft-reveal">
        <div class="max-w-7xl mx-auto px-6">
            <div class="text-center mb-16 gsap-reveal">
                <span class="text-brand-green font-bold tracking-widest uppercase text-xs mb-3 block">Premium Equipment</span>
                <h2 class="text-4xl md:text-6xl font-display font-black mb-4 uppercase italic leading-none">Choose Your <span class="text-brand-green">Ride</span></h2>
                <p class="text-gray-600 max-w-3xl mx-auto text-lg italic font-medium leading-relaxed mt-4">Jump straight to the most popular bike hire options, or contact the team for larger group and school bookings.</p>
            </div>

            <div class="choose-ride-grid grid gap-3 sm:gap-6 md:gap-8">
                <!-- Fleet Cards -->
                <div onclick="window.location.href='#electric-bikes'" class="choose-ride-card gsap-reveal group relative h-[430px] md:h-[520px] rounded-[3rem] md:rounded-[4rem] overflow-hidden cursor-pointer mobile-card-shadow border-4 border-gray-50 bg-gray-100">
                    <img src="https://www.cameltrailcyclehire.co.uk/media/Volt-E-Bike-Frame-and-Person-Header-Camel-Trail-Cycle-Hire.jpg" alt="Premium e-bike hire Wadebridge for the Camel Trail" class="absolute inset-0 w-full h-full object-cover transition-transform duration-1000 group-hover:scale-110" loading="lazy">
                    <div class="absolute inset-0 bg-gradient-to-t from-black/90 via-black/20 to-transparent"></div>
                    <div class="absolute bottom-0 left-0 w-full p-8 flex flex-col justify-end h-full">
                        <h3 class="text-3xl md:text-4xl font-display font-black text-white mb-2 uppercase italic leading-none transform transition-transform duration-300 group-hover:-translate-y-2">Premium <br>E-Bikes</h3>
                        <p class="text-gray-300 text-sm opacity-0 group-hover:opacity-100 transition-all duration-300 mb-6 italic leading-relaxed">Cruise the trail effortlessly with our electric bike options.</p>
                        <button class="bg-brand-yellow text-black font-black uppercase text-xs py-4 px-8 rounded-full w-fit hover:bg-white transition-colors">View E-Bikes</button>
                    </div>
                </div>

                <div onclick="window.location.href='#adult-bikes'" class="choose-ride-card gsap-reveal group relative h-[430px] md:h-[520px] rounded-[3rem] md:rounded-[4rem] overflow-hidden cursor-pointer mobile-card-shadow border-4 border-gray-50 bg-gray-100">
                    <img src="https://www.cameltrailcyclehire.co.uk/media/Bike%20Hire%20Wadebridge.jpg" alt="Adult bike hire Wadebridge for Camel Trail cycling" class="absolute inset-0 w-full h-full object-cover transition-transform duration-1000 group-hover:scale-110" loading="lazy">
                    <div class="absolute inset-0 bg-gradient-to-t from-black/90 via-black/20 to-transparent"></div>
                    <div class="absolute bottom-0 left-0 w-full p-8 flex flex-col justify-end h-full">
                        <h3 class="text-3xl md:text-4xl font-display font-black text-white mb-2 uppercase italic leading-none transform transition-transform duration-300 group-hover:-translate-y-2">Adult <br>Bikes</h3>
                        <p class="text-gray-300 text-sm opacity-0 group-hover:opacity-100 transition-all duration-300 mb-6 italic leading-relaxed">Comfort hybrids and mountain bikes for a relaxed ride from Wadebridge.</p>
                        <button class="bg-brand-yellow text-black font-black uppercase text-xs py-4 px-8 rounded-full w-fit hover:bg-white transition-colors">View Adult Bikes</button>
                    </div>
                </div>

                <div onclick="window.location.href='#groups'" class="choose-ride-card gsap-reveal group relative h-[430px] md:h-[520px] rounded-[3rem] md:rounded-[4rem] overflow-hidden cursor-pointer mobile-card-shadow border-4 border-gray-50 bg-gray-100">
                    <img src="https://www.cameltrailcyclehire.co.uk/media/People-Cycling-Down-Camel-Trail-Camel-Trail-Cycle-Hire.jpg" alt="Group bike hire Wadebridge on the Camel Trail" class="absolute inset-0 w-full h-full object-cover transition-transform duration-1000 group-hover:scale-110" loading="lazy">
                    <div class="absolute inset-0 bg-gradient-to-t from-black/90 via-black/20 to-transparent"></div>
                    <div class="absolute bottom-0 left-0 w-full p-8 flex flex-col justify-end h-full">
                        <h3 class="text-3xl md:text-4xl font-display font-black text-white mb-2 uppercase italic leading-none transform transition-transform duration-300 group-hover:-translate-y-2">Group <br>Bookings</h3>
                        <p class="text-gray-300 text-sm opacity-0 group-hover:opacity-100 transition-all duration-300 mb-6 italic leading-relaxed">Schools, clubs, corporate groups and large family rides.</p>
                        <button class="bg-brand-yellow text-black font-black uppercase text-xs py-4 px-8 rounded-full w-fit hover:bg-white transition-colors">Group Enquiry</button>
                    </div>
                </div>

                <div onclick="window.location.href='#family-bikes'" class="choose-ride-card gsap-reveal group relative h-[430px] md:h-[520px] rounded-[3rem] md:rounded-[4rem] overflow-hidden cursor-pointer mobile-card-shadow border-4 border-gray-50 bg-gray-100">
                    <img src="https://www.cameltrailcyclehire.co.uk/media/family-bike-rides-camel-trail.jpg" alt="Family bike hire on the Camel Trail Wadebridge" class="absolute inset-0 w-full h-full object-cover transition-transform duration-1000 group-hover:scale-110" loading="lazy">
                    <div class="absolute inset-0 bg-gradient-to-t from-black/90 via-black/20 to-transparent"></div>
                    <div class="absolute bottom-0 left-0 w-full p-8 flex flex-col justify-end h-full">
                        <h3 class="text-3xl md:text-4xl font-display font-black text-white mb-2 uppercase italic leading-none transform transition-transform duration-300 group-hover:-translate-y-2">Family <br>& Kids</h3>
                        <p class="text-gray-300 text-sm opacity-0 group-hover:opacity-100 transition-all duration-300 mb-6 italic leading-relaxed">Kids' bikes plus bike-and-trailer, child seat and tag-along packages for family adventures.</p>
                        <button class="bg-brand-yellow text-black font-black uppercase text-xs py-4 px-8 rounded-full w-fit hover:bg-white transition-colors">View Family Kit</button>
                    </div>
                </div>


            </div>
        </div>

    </section>

    <!-- DISCOVER THE TRAIL -->
    <section id="trail" class="py-40 bg-gray-50 text-black overflow-visible gsap-soft-reveal">
        
        <!-- BIKE PATH - Global Animation (Layered behind cards) -->
        <div id="trail-line-container">
            <svg class="h-full w-24 overflow-visible" viewBox="0 0 100 3400" preserveAspectRatio="none" fill="none">
                <path id="animated-trail" d="M50,0 C150,400 -50,800 50,1200 C150,1600 -50,2000 50,2400 C150,2800 -50,3200 50,3400" stroke="#2d5a27" stroke-width="4" stroke-linecap="round" stroke-dasharray="12 12"></path>
                <path id="animated-trail-fill" d="M50,0 C150,400 -50,800 50,1200 C150,1600 -50,2000 50,2400 C150,2800 -50,3200 50,3400" stroke="#facc15" stroke-width="6" stroke-linecap="round"></path>
            </svg>
            <div id="trail-bike" class="absolute top-0 left-1/2 text-4xl md:text-5xl drop-shadow-md">
                <div id="trail-bike-wrapper">🚴</div>
            </div>
        </div>

        <div class="max-w-7xl mx-auto px-6 relative z-10">
            <div class="text-center mb-32 gsap-reveal">
                <span class="text-brand-green font-bold tracking-widest uppercase text-xs mb-3 block">Wadebridge Trail Experts</span>
                <h2 class="text-4xl md:text-8xl font-display font-black text-brand-green tracking-tighter italic uppercase leading-none">Discovery Routes</h2>
                <p class="text-gray-500 text-xl mt-6 max-w-2xl mx-auto font-medium italic leading-relaxed">Explore 18 miles of traffic-free scenery from our central Wadebridge hub.</p>
            </div>

            <div class="space-y-48 md:space-y-64">
                <!-- Route 1: Padstow -->
                <div class="gsap-reveal grid grid-cols-1 lg:grid-cols-2 gap-12 md:gap-20 items-center">
                    <div class="order-2 lg:order-1 bg-gray-50 p-4 md:bg-transparent rounded-[3rem] relative z-20">
                        <h3 class="text-3xl md:text-6xl font-display font-black text-brand-green uppercase italic mb-6 leading-none">Wadebridge to Padstow</h3>
                        <p class="text-gray-600 text-lg md:text-xl leading-relaxed mb-8 italic font-medium">Experience stunning estuary views. <strong>5.5 Miles</strong> of level path for families and beginners. Arrive in the historic harbor of Padstow, ready to explore local Cornish delicacies.</p>
                        <button onclick="window.location.href='#fleet'" class="bg-brand-green text-white font-black uppercase text-xs tracking-widest py-5 px-12 rounded-full shadow-lg hover:bg-brand-yellow hover:text-brand-green transition-all italic">Book This Route</button>
                    </div>
                    <div class="order-1 lg:order-2 rounded-[3.5rem] md:rounded-[5rem] overflow-hidden shadow-2xl border-8 border-white transform hover:scale-[1.03] transition-all duration-700 bg-white relative z-20">
                        <img src="https://www.cameltrailcyclehire.co.uk/media/Enjoy-the-Stunning-Estuary-Views-Cycle-Hire.jpg" class="w-full h-[350px] md:h-[500px] object-cover" alt="Cycling from Wadebridge to Padstow on the Camel Trail" loading="lazy">
                    </div>
                </div>

                <!-- Route 2: Bodmin -->
                <div class="gsap-reveal grid grid-cols-1 lg:grid-cols-2 gap-12 md:gap-20 items-center">
                    <div class="rounded-[3.5rem] md:rounded-[5rem] overflow-hidden shadow-2xl border-8 border-white transform hover:scale-[1.03] transition-all duration-700 bg-white relative z-20">
                        <img src="https://www.cameltrailcyclehire.co.uk/media/Wadebridge to Bodmin Camel Trail.webp" class="w-full h-[350px] md:h-[500px] object-cover" alt="Cycling from Wadebridge to Bodmin on the Camel Trail" loading="lazy">
                    </div>
                    <div class="bg-gray-50 p-4 md:bg-transparent rounded-[3rem] relative z-20">
                        <h3 class="text-3xl md:text-6xl font-display font-black text-brand-green uppercase italic mb-6 leading-none">Wadebridge to Bodmin</h3>
                        <p class="text-gray-600 text-lg md:text-xl leading-relaxed mb-8 italic font-medium">Follow the winding River Camel inland through <strong>6 Miles</strong> of ancient shaded woodlands. A wildlife haven where sightings of otters and kingfishers are highlights.</p>
                        <button onclick="window.location.href='#fleet'" class="bg-brand-green text-white font-black uppercase text-xs tracking-widest py-5 px-12 rounded-full shadow-lg hover:bg-brand-yellow hover:text-brand-green transition-all italic">Explore Woodland</button>
                    </div>
                </div>

                <!-- Route 3: Wenford Bridge -->
                <div class="gsap-reveal grid grid-cols-1 lg:grid-cols-2 gap-12 md:gap-20 items-center">
                    <div class="order-2 lg:order-1 bg-gray-50 p-4 md:bg-transparent rounded-[3rem] relative z-20">
                        <h3 class="text-3xl md:text-6xl font-display font-black text-brand-green uppercase italic mb-6 leading-none">Wenford Bridge</h3>
                        <p class="text-gray-600 text-lg md:text-xl leading-relaxed mb-8 italic font-medium">The ultimate discovery. <strong>12 Miles</strong> of tranquil valley scenery taking you into the heart of rural Cornwall. This stretch is the quietest on the trail, perfect for our Premium E-Bikes.</p>
                        <button onclick="window.location.href='#fleet'" class="bg-brand-green text-white font-black uppercase text-xs tracking-widest py-5 px-12 rounded-full shadow-lg hover:bg-brand-yellow hover:text-brand-green transition-all italic">Explore Full Trail</button>
                    </div>
                    <div class="order-1 lg:order-2 rounded-[3.5rem] md:rounded-[5rem] overflow-hidden shadow-2xl border-8 border-white transform hover:scale-[1.03] transition-all duration-700 bg-white relative z-20">
                        <img src="https://www.cameltrailcyclehire.co.uk/media/Towards%20wenford%20Camel%20Trail.jpg" class="w-full h-[350px] md:h-[500px] object-cover" alt="Camel Trail cycling route towards Wenford Bridge Cornwall" loading="lazy">
                    </div>
                </div>
            </div>
        </div>
    </section>


    <!-- STORY & LEGACY -->
    <section id="story" class="py-40 bg-white text-brand-green relative overflow-hidden border-y border-gray-200 z-30 gsap-soft-reveal">
        <div class="max-w-7xl mx-auto px-6 grid grid-cols-1 md:grid-cols-2 gap-24 items-center">
            <div class="gsap-reveal">
                <span class="text-[10px] font-black uppercase tracking-[0.4em] mb-6 block text-brand-yellow bg-brand-green w-fit px-4 py-1 rounded-full">Since 1983</span>
                <h2 class="text-5xl md:text-7xl font-display font-black tracking-tighter leading-none mb-10 italic uppercase">A Cornish <br/>Legacy</h2>
                <p class="text-gray-600 text-xl leading-relaxed mb-10 italic font-medium">Camel Trail Cycle Hire was grown in the heart of Wadebridge. We've shared our passion for this trail with explorers from across the globe for over 40 years.</p>
                <div class="grid grid-cols-2 gap-10 font-bold italic">
                    <div><p class="text-4xl font-black mb-2 italic text-brand-green">40+</p><p class="text-[10px] font-black uppercase tracking-widest text-gray-400">Years Knowledge</p></div>
                    <div><p class="text-4xl font-black mb-2 italic text-brand-green">100%</p><p class="text-[10px] font-black uppercase tracking-widest text-gray-400">Traffic-Free</p></div>
                </div>
            </div>
            <div class="gsap-reveal bg-gray-50 p-10 md:p-16 rounded-[4rem] md:rounded-[5rem] shadow-2xl border border-gray-100">
                 <h3 class="text-3xl font-black uppercase italic mb-8 border-b-4 border-brand-yellow pb-4 inline-block text-gray-900 leading-none">Why book with Camel Trail Cycle Hire</h3>
                 <ul class="space-y-6">
                    <li class="flex items-start gap-4">
                        <div class="w-8 h-8 rounded-full bg-brand-green flex-shrink-0 flex items-center justify-center text-white font-bold italic text-xs">✓</div>
                        <p class="text-lg font-bold text-gray-800 italic leading-tight">Free Onsite Parking when available <br> (Large Vehicles Excluded)</p>
                    </li>
                    <li class="flex items-start gap-4">
                        <div class="w-8 h-8 rounded-full bg-brand-green flex-shrink-0 flex items-center justify-center text-white font-bold italic text-xs">✓</div>
                        <p class="text-lg font-bold text-gray-800 italic leading-tight">Central Wadebridge Hub location</p>
                    </li>
                    <li class="flex items-start gap-4">
                        <div class="w-8 h-8 rounded-full bg-brand-green flex-shrink-0 flex items-center justify-center text-white font-bold italic text-xs">✓</div>
                        <p class="text-lg font-bold text-gray-800 italic leading-tight">Premium bikes and equipment</p>
                    </li>
                    <li class="flex items-start gap-4">
                        <div class="w-8 h-8 rounded-full bg-brand-green flex-shrink-0 flex items-center justify-center text-white font-bold italic text-xs">✓</div>
                        <p class="text-lg font-bold text-gray-800 italic leading-tight">Helmets and bike locks included free of charge</p>
                    </li>
                    <li class="flex items-start gap-4">
                        <div class="w-8 h-8 rounded-full bg-brand-green flex-shrink-0 flex items-center justify-center text-white font-bold italic text-xs">✓</div>
                        <p class="text-lg font-bold text-gray-800 italic leading-tight">Callout breakdown service included with all hire</p>
                    </li>
                 </ul>
                 <button onclick="window.location.href='#fleet'" class="mt-12 w-full bg-brand-yellow text-brand-green font-black uppercase py-6 rounded-full shadow-xl hover:scale-105 transition-all italic booking-pulse">Book Your Ride Now</button>
            </div>
        </div>
    </section>


    <!-- BIKE BOOKING OPTIONS -->
    <section id="bike-booking-options" class="py-28 bg-white text-gray-900 relative z-30 border-t border-gray-100 gsap-soft-reveal">
        <div class="max-w-[1500px] mx-auto px-6">
            <div class="text-center mb-16 gsap-reveal">
                <span class="text-brand-green font-black uppercase tracking-widest text-xs italic">Book Bike Hire Online</span>
                <h2 class="text-4xl md:text-6xl font-display font-black uppercase italic text-gray-900 leading-none mt-3">Bike Hire <span class="text-brand-green">Options</span></h2>
                <p class="text-gray-600 max-w-3xl mx-auto text-lg italic font-medium leading-relaxed mt-4">All of the main hire options are grouped together below so you can compare adult bikes, e-bikes and family equipment in one place.</p>
            </div>

            <div id="adult-bikes" class="mb-20 scroll-mt-24 gsap-reveal">
                <div class="flex items-start justify-between gap-4 mb-6 flex-wrap">
                    <div>
                        <span class="text-brand-green font-black uppercase tracking-widest text-xs italic">Adult Bike Hire</span>
                        <h3 class="text-3xl md:text-4xl font-display font-black uppercase italic text-gray-900 leading-none mt-2">Adult Bikes</h3>
                    </div>
                    <a href="#fleet" class="text-xs font-black uppercase tracking-widest text-brand-green hover:text-black italic">Back to bike options</a>
                </div>
                <div class="bike-products-grid grid gap-4 sm:gap-6">
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="men-s-fully-equipped-hybrid"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="hardtail-mountain-bike"></div></div>
                </div>
            </div>

            <div id="electric-bikes" class="mb-20 scroll-mt-24 gsap-reveal">
                <div class="flex items-start justify-between gap-4 mb-6 flex-wrap">
                    <div>
                        <span class="text-brand-green font-black uppercase tracking-widest text-xs italic">Electric Bike Hire</span>
                        <h3 class="text-3xl md:text-4xl font-display font-black uppercase italic text-gray-900 leading-none mt-2">E-Bikes</h3>
                        <p class="text-gray-600 max-w-3xl text-lg italic font-medium leading-relaxed mt-4">Ideal for covering more of the Camel Trail with less effort. Select your preferred electric bike below and complete the booking through Booqable.</p>
                    </div>
                    <a href="#fleet" class="text-xs font-black uppercase tracking-widest text-brand-green hover:text-black italic">Back to bike options</a>
                </div>
                <div class="bike-products-grid grid gap-4 sm:gap-6">
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="volt-metro-e-bike"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="burlington-e-bike"></div></div>
                </div>
            </div>

            <div id="family-bikes" class="scroll-mt-24 gsap-reveal">
                <div class="flex items-start justify-between gap-4 mb-6 flex-wrap">
                    <div>
                        <span class="text-brand-green font-black uppercase tracking-widest text-xs italic">Family Bike Hire</span>
                        <h3 class="text-3xl md:text-4xl font-display font-black uppercase italic text-gray-900 leading-none mt-2">Family & Kids</h3>
                    </div>
                    <a href="#fleet" class="text-xs font-black uppercase tracking-widest text-brand-green hover:text-black italic">Back to bike options</a>
                </div>
                <p class="text-gray-600 text-lg italic font-medium mb-8 max-w-4xl">
                    For trailers and tag-alongs, please book the combined bike package below. We do not offer standalone trailer or tag-along hire online.
                </p>
                <div class="bike-products-grid grid gap-4 sm:gap-6">
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="bike-with-child-seat"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="bike-with-dog-trailer"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="bike-with-childs-trailer"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="tag-along-trike-bundle"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="bike-tag-along"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="16-childs-bike"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="20-kids-bike"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="24-kids-bike"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="youth-mountain-bike"></div></div>
                    <div class="featured-product-card bg-gray-50 rounded-[2.5rem] p-5 md:p-8 border border-gray-100 shadow-lg"><div class="booqable-product" data-id="trike"></div></div>
                </div>
            </div>
        </div>
    </section>

    <!-- EVENING RIDES -->
    <section id="evening-rides" class="py-32 bg-[#fdfdf5] text-gray-900 relative overflow-hidden border-t-4 border-brand-yellow z-30 gsap-soft-reveal">
        <div class="absolute inset-0 opacity-20 pointer-events-none">
            <div class="absolute -top-24 -right-24 w-[32rem] h-[32rem] bg-brand-yellow rounded-full blur-3xl"></div>
            <div class="absolute -bottom-24 -left-24 w-[28rem] h-[28rem] bg-brand-green rounded-full blur-3xl"></div>
        </div>
        <div class="max-w-7xl mx-auto px-6 grid grid-cols-1 lg:grid-cols-2 gap-16 items-center relative z-10">
            <div class="gsap-reveal">
                <span class="text-brand-green font-black tracking-[0.35em] uppercase text-xs mb-4 block italic">Evening Bike Hire Wadebridge</span>
                <h2 class="text-4xl md:text-7xl font-display font-black tracking-tighter leading-none mb-8 italic uppercase text-brand-green">Evening Rides Along the Camel Trail</h2>
                <h3 class="text-2xl md:text-3xl font-display font-black uppercase italic text-gray-900 mb-4 leading-tight">Evening rides with Camel Trail Cycle Hire</h3>
                <p class="text-xl md:text-2xl text-gray-700 italic font-black leading-snug mb-8">Explore the Camel Trail with our affordable evening bike rides — no booking needed.</p>
                <p class="text-gray-600 text-lg leading-relaxed italic font-medium mb-6">Discover the beautiful Camel Trail in Cornwall with ease and affordability. Our reduced rate evening bike rides are available every day from <strong>3:00 PM to 7:30 PM*</strong>, and the best part is, no booking is required.</p>
                <p class="text-gray-600 text-lg leading-relaxed italic font-medium mb-8">Simply drop by and let our friendly staff assist you. With a large fleet of equipment, we can accommodate most groups. Please note that wait times may vary depending on group size.</p>
                <div class="flex flex-col sm:flex-row gap-4">
                    <a href="tel:01208814104" class="bg-brand-green text-white font-black uppercase text-sm tracking-widest px-10 py-5 rounded-full shadow-xl hover:bg-brand-yellow hover:text-brand-green transition-all italic text-center">Call 01208 814104</a>
                    <a href="#contact" class="bg-white text-brand-green border border-brand-green/10 font-black uppercase text-sm tracking-widest px-10 py-5 rounded-full shadow-xl hover:bg-brand-yellow transition-all italic text-center">Find us in Wadebridge</a>
                </div>
            </div>
            <div class="gsap-reveal bg-white rounded-[4rem] md:rounded-[5rem] shadow-2xl border border-gray-100 overflow-hidden">
                <img src="https://www.cameltrailcyclehire.co.uk/media/Enjoy-the-Stunning-Estuary-Views-Cycle-Hire.jpg" alt="Evening bike rides along the Camel Trail from Wadebridge" class="w-full h-72 md:h-96 object-cover" loading="lazy">
                <div class="p-8 md:p-12">
                    <div class="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-8">
                        <div class="bg-gray-50 rounded-[2rem] p-6 border border-gray-100">
                            <p class="text-brand-green text-4xl font-black italic leading-none">3 PM</p>
                            <p class="text-xs uppercase tracking-widest font-black text-gray-400 mt-2">Evening rides start</p>
                        </div>
                        <div class="bg-gray-50 rounded-[2rem] p-6 border border-gray-100">
                            <p class="text-brand-green text-4xl font-black italic leading-none">No Booking</p>
                            <p class="text-xs uppercase tracking-widest font-black text-gray-400 mt-2">Drop by daily</p>
                        </div>
                    </div>
                    <p class="text-sm text-gray-500 italic font-bold leading-relaxed">*Off peak return times may be as early as 5pm. Evening ride availability and wait times may vary depending on group size and equipment availability.</p>
                </div>
            </div>
        </div>
    </section>


<!-- GROUP BOOKINGS -->
<section id="groups" class="py-32 bg-brand-green text-white relative overflow-hidden z-30 gsap-soft-reveal">
    <div class="absolute inset-0 opacity-10 pointer-events-none">
        <div class="absolute top-0 right-0 w-[34rem] h-[34rem] bg-brand-yellow rounded-full blur-3xl"></div>
        <div class="absolute bottom-0 left-0 w-[28rem] h-[28rem] bg-brand-lightGreen rounded-full blur-3xl"></div>
    </div>
    <div class="max-w-7xl mx-auto px-6 grid grid-cols-1 lg:grid-cols-2 gap-16 items-center relative z-10">
        <div class="gsap-reveal">
            <span class="text-brand-yellow font-black tracking-[0.4em] uppercase text-xs mb-4 block">Group Bike Hire Wadebridge</span>
            <h2 class="text-5xl md:text-7xl font-display font-black tracking-tighter leading-none mb-8 italic uppercase">Groups & <br/>Schools</h2>
            <p class="text-brand-lightGreen/80 text-xl leading-relaxed mb-10 max-w-xl italic font-medium">Planning a school trip, corporate day, club ride, stag or hen weekend, charity ride, or large family adventure? Speak to the team and we’ll help organise the right bikes, timings, and collection details for your group.</p>
            <div class="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-10">
                <div class="bg-white/10 border border-white/10 rounded-[2rem] p-6">
                    <p class="text-brand-yellow text-3xl font-black italic mb-1">10+</p>
                    <p class="text-xs uppercase tracking-widest font-black text-brand-lightGreen/70">Ideal for groups</p>
                </div>
                <div class="bg-white/10 border border-white/10 rounded-[2rem] p-6">
                    <p class="text-brand-yellow text-3xl font-black italic mb-1">Free</p>
                    <p class="text-xs uppercase tracking-widest font-black text-brand-lightGreen/70">Onsite parking</p>
                </div>
            </div>
            <div class="flex flex-col sm:flex-row gap-4">
                <a href="tel:01208814104" class="bg-brand-yellow text-brand-green font-black uppercase text-sm tracking-widest px-10 py-5 rounded-full shadow-2xl hover:bg-white transition-all italic text-center">Call 01208 814104</a>
                <button type="button" data-open-group-enquiry class="bg-white text-brand-green font-black uppercase text-sm tracking-widest px-10 py-5 rounded-full shadow-2xl hover:bg-brand-yellow transition-all italic text-center">Group Enquiry</button>
            </div>
        </div>
        <div class="gsap-reveal bg-white text-gray-900 p-0 rounded-[4rem] shadow-2xl border-t-[12px] border-brand-yellow overflow-hidden">
            <img src="https://www.cameltrailcyclehire.co.uk/media/People-Cycling-Down-Camel-Trail-Camel-Trail-Cycle-Hire.jpg" alt="School and group bike hire on the Camel Trail Wadebridge" class="w-full h-64 object-cover" loading="lazy">
            <div class="p-8 md:p-12">
            <h3 class="text-3xl md:text-4xl font-display font-black text-brand-green uppercase italic mb-6 leading-none">Group Booking Details</h3>
            <ul class="space-y-5 mb-8">
                <li class="flex gap-4"><span class="w-8 h-8 rounded-full bg-brand-green text-white flex items-center justify-center font-black shrink-0">✓</span><span class="font-bold italic text-gray-700">Tell us your preferred date, arrival time, group size, and bike requirements.</span></li>
                <li class="flex gap-4"><span class="w-8 h-8 rounded-full bg-brand-green text-white flex items-center justify-center font-black shrink-0">✓</span><span class="font-bold italic text-gray-700">Suitable for schools, youth groups, clubs, corporate groups, and large family bookings.</span></li>
                <li class="flex gap-4"><span class="w-8 h-8 rounded-full bg-brand-green text-white flex items-center justify-center font-black shrink-0">✓</span><span class="font-bold italic text-gray-700">The team can advise on routes, timings, parking, and equipment options.</span></li>
            </ul>
            <div class="bg-gray-50 rounded-[2rem] p-6 border border-gray-100">
                <p class="text-[10px] uppercase tracking-[0.3em] font-black text-gray-400 mb-2">Best next step</p>
                <p class="text-2xl font-black text-brand-green italic leading-tight">Call the Wadebridge hub on 01208 814104 or send a group enquiry online. Enquiries are not confirmed bookings.</p>
                <button type="button" data-open-group-enquiry class="mt-5 w-full bg-brand-yellow text-brand-green font-black uppercase py-4 rounded-full hover:bg-brand-green hover:text-white transition-all italic">Send Group Enquiry</button>
            </div>
            </div>
        </div>
    </div>
</section>




    <!-- CONTACT & MAP -->
    <section class="py-24 bg-white text-black relative z-30 gsap-soft-reveal" id="contact">
        <div class="max-w-7xl mx-auto px-6">
            <div class="relative w-full h-[650px] rounded-[3.5rem] md:rounded-[5rem] overflow-hidden shadow-2xl border-[12px] border-gray-100 group">
                <iframe title="Map showing Camel Trail Cycle Hire in Wadebridge" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2530.704257805177!2d-4.838551!3d50.518478!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x486b769636d47677%3A0xfebd7370f30b9ba3!2sCamel%20Trail%20Cycle%20Hire%20Wadebridge!5e0!3m2!1sen!2suk!4v1715696123456!5m2!1sen!2suk" class="absolute inset-0 w-full h-full grayscale-[20%] opacity-90 group-hover:grayscale-0 group-hover:opacity-100 transition-all duration-1000" allowfullscreen="" loading="lazy"></iframe>
                
                <div class="absolute top-10 right-10 left-10 md:left-auto bg-white/95 backdrop-blur-2xl p-10 rounded-[3.5rem] shadow-2xl max-w-md border border-brand-yellow/30 text-left">
                    <span class="text-brand-green font-bold tracking-widest uppercase text-xs mb-3 block italic">Cycle Hub HQ</span>
                    <h2 class="text-3xl md:text-4xl font-display font-extrabold mb-8 text-gray-900 leading-tight italic uppercase">Visit <br/><span class="text-brand-green font-black">Wadebridge</span></h2>
                    <div class="space-y-6 text-left">
                        <div class="flex items-start gap-4 text-sm md:text-base">
                            <div class="w-10 h-10 rounded-xl bg-brand-green/10 flex items-center justify-center text-brand-yellow shrink-0"><svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z"/><circle cx="12" cy="10" r="3"/></svg></div>
                            <p class="text-gray-800 font-bold italic">Eddystone Road, Wadebridge, PL27 7AL</p>
                        </div>
                        <div class="flex items-start gap-4">
                            <div class="w-10 h-10 rounded-xl bg-brand-yellow/20 flex items-center justify-center text-brand-yellow shrink-0"><svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/></svg></div>
                            <p class="text-gray-900 text-2xl md:text-3xl font-black italic leading-none">01208 814104</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>



    <!-- GROUP ENQUIRY MODAL -->
    <div id="groupEnquiryModal" class="fixed inset-0 z-[9999] hidden items-center justify-center px-4 py-8 bg-black/70 backdrop-blur-sm" aria-hidden="true">
        <div class="absolute inset-0" data-close-group-enquiry></div>
        <div class="relative bg-white text-gray-900 w-full max-w-2xl rounded-[2rem] md:rounded-[3rem] shadow-2xl overflow-hidden border-t-[10px] border-brand-yellow">
            <button type="button" data-close-group-enquiry class="absolute top-5 right-5 w-10 h-10 rounded-full bg-gray-100 hover:bg-brand-yellow text-gray-900 font-black z-10">×</button>
            <div class="p-8 md:p-12">
                <span class="text-brand-green font-black uppercase tracking-[0.3em] text-[10px] italic">Group Enquiry</span>
                <h3 class="text-3xl md:text-5xl font-display font-black uppercase italic text-brand-green leading-none mt-3 mb-4">Tell us about your group</h3>
                <p class="text-gray-600 font-bold italic mb-6">This is an enquiry only and is not a confirmed booking. A member of the team will contact you shortly to confirm availability and details.</p>

                <div id="groupEnquirySuccess" class="hidden bg-green-50 border border-green-200 text-green-900 rounded-2xl p-6 mb-6 font-bold italic">
                    Thank you for your enquiry. One of the team will be in contact shortly. Please note: this is not a booking confirmation.
                </div>

                <form id="groupEnquiryForm" class="space-y-5">
                    <input type="text" name="website" class="hidden" tabindex="-1" autocomplete="off">
                    <div class="grid grid-cols-1 md:grid-cols-2 gap-5">
                        <label class="block">
                            <span class="block text-xs font-black uppercase tracking-widest text-gray-500 mb-2">Name</span>
                            <input required name="name" type="text" class="w-full rounded-2xl border border-gray-200 px-5 py-4 font-bold focus:outline-none focus:ring-4 focus:ring-brand-yellow/30" placeholder="Your name">
                        </label>
                        <label class="block">
                            <span class="block text-xs font-black uppercase tracking-widest text-gray-500 mb-2">Phone number</span>
                            <input required name="phone" type="tel" class="w-full rounded-2xl border border-gray-200 px-5 py-4 font-bold focus:outline-none focus:ring-4 focus:ring-brand-yellow/30" placeholder="Best contact number">
                        </label>
                        <label class="block">
                            <span class="block text-xs font-black uppercase tracking-widest text-gray-500 mb-2">Email</span>
                            <input required name="email" type="email" class="w-full rounded-2xl border border-gray-200 px-5 py-4 font-bold focus:outline-none focus:ring-4 focus:ring-brand-yellow/30" placeholder="For the auto-response">
                        </label>
                        <label class="block">
                            <span class="block text-xs font-black uppercase tracking-widest text-gray-500 mb-2">Date required</span>
                            <input required name="date_required" type="date" class="w-full rounded-2xl border border-gray-200 px-5 py-4 font-bold focus:outline-none focus:ring-4 focus:ring-brand-yellow/30">
                        </label>
                    </div>
                    <label class="block">
                        <span class="block text-xs font-black uppercase tracking-widest text-gray-500 mb-2">Quantity of bikes required</span>
                        <input required name="bike_quantity" type="number" min="1" step="1" class="w-full rounded-2xl border border-gray-200 px-5 py-4 font-bold focus:outline-none focus:ring-4 focus:ring-brand-yellow/30" placeholder="e.g. 12">
                    </label>
                    <label class="block">
                        <span class="block text-xs font-black uppercase tracking-widest text-gray-500 mb-2">Extra details</span>
                        <textarea name="message" rows="4" class="w-full rounded-2xl border border-gray-200 px-5 py-4 font-bold focus:outline-none focus:ring-4 focus:ring-brand-yellow/30" placeholder="Arrival time, group type, children/adults, special requirements..."></textarea>
                    </label>
                    <div id="groupEnquiryError" class="hidden bg-red-50 border border-red-200 text-red-900 rounded-2xl p-4 font-bold italic"></div>
                    <button id="groupEnquirySubmit" type="submit" class="w-full bg-brand-green text-white font-black uppercase tracking-widest py-5 rounded-full shadow-xl hover:bg-brand-yellow hover:text-brand-green transition-all italic">Send Enquiry</button>
                    <p class="text-center text-xs uppercase tracking-widest text-gray-400 font-black">This enquiry is not a booking confirmation.</p>
                </form>
            </div>
        </div>
    </div>

    <!-- SOCIAL / FACEBOOK + INSTAGRAM -->
    <section id="social" class="py-20 bg-gray-50 text-black relative z-30 gsap-soft-reveal">
        <div class="max-w-7xl mx-auto px-6">
            <div class="grid grid-cols-1 lg:grid-cols-2 gap-10 items-center">
                <div class="bg-white rounded-[3rem] p-8 md:p-12 shadow-xl border border-gray-100">
                    <span class="text-brand-green font-black tracking-widest uppercase text-xs mb-4 block">Follow The Trail</span>
                    <h2 class="text-4xl md:text-5xl font-display font-black uppercase italic leading-none text-brand-green">Follow us online</h2>
                    <p class="text-gray-600 text-lg font-bold italic leading-relaxed mt-6">Follow Camel Trail Cycle Hire for seasonal updates, trail inspiration, opening news and Wadebridge bike hire information.</p>
                    <div class="flex flex-wrap gap-4 mt-8">
                        <a href="https://www.facebook.com/thecameltrail/?locale=en_GB" target="_blank" rel="noopener" class="inline-flex items-center gap-3 bg-brand-green text-white font-black uppercase tracking-widest text-xs px-7 py-4 rounded-full hover:bg-brand-yellow hover:text-brand-green transition-all italic shadow-xl">
                            Facebook
                            <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M7 7h10v10"></path></svg>
                        </a>
                        <a href="https://www.instagram.com/cameltrailcyclehire/" target="_blank" rel="noopener" class="inline-flex items-center gap-3 bg-brand-yellow text-brand-green font-black uppercase tracking-widest text-xs px-7 py-4 rounded-full hover:bg-brand-green hover:text-white transition-all italic shadow-xl">
                            Instagram
                            <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" aria-hidden="true"><path d="M7 17 17 7"></path><path d="M7 7h10v10"></path></svg>
                        </a>
                    </div>
                </div>
                <div class="bg-white rounded-[3rem] p-4 md:p-6 shadow-xl border border-gray-100 overflow-hidden min-h-[420px] flex items-center justify-center">
                    <div class="w-full text-center" data-facebook-feed>
                        <div class="bg-brand-green text-white rounded-[2rem] p-8">
                            <p class="font-black uppercase tracking-widest text-xs text-brand-yellow mb-3">Live Facebook Feed</p>
                            <p class="font-bold italic text-brand-lightGreen/80 mb-6">The feed loads only when this section is viewed, helping the page stay lighter on first load.</p>
                            <a href="https://www.facebook.com/thecameltrail/?locale=en_GB" target="_blank" rel="noopener" class="inline-flex bg-brand-yellow text-brand-green rounded-full px-6 py-3 font-black uppercase tracking-widest text-xs italic">Open Facebook</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- FOOTER -->
    <footer class="bg-gradient-to-b from-brand-green to-[#081107] text-white pt-40 pb-12 relative overflow-hidden border-t-4 border-brand-yellow z-40">
        <div class="absolute bottom-0 left-0 w-full text-center pointer-events-none select-none opacity-10">
            <h2 class="text-[17vw] font-display font-black text-brand-lightGreen/10 uppercase tracking-tighter italic leading-none">CAMEL TRAIL</h2>
        </div>
        <div class="max-w-7xl mx-auto px-6 relative z-10 text-left">
            <div class="grid grid-cols-1 md:grid-cols-4 gap-20 mb-32 border-b border-white/10 pb-32 italic">
                <div class="md:col-span-2 text-left">
                    <img src="https://www.cameltrailcyclehire.co.uk/media/Camerl%20Trail%20Cyacle%20Hire%20Logo.png" alt="Camel Trail Cycle Hire Wadebridge logo" class="h-32 w-auto mb-10" loading="lazy">
                    <p class="text-brand-lightGreen/60 text-xl leading-relaxed max-w-md font-medium italic leading-relaxed">Wadebridge's premium hub for discovery since 1983. Quality rentals and family memories for over 40 years.</p>
                </div>
                <div>
                    <h5 class="font-display font-bold text-brand-yellow mb-8 text-xl tracking-widest uppercase italic leading-none">Quick Links</h5>
                    <ul class="space-y-5 text-brand-lightGreen/70 text-sm font-bold uppercase tracking-widest leading-none">
                        <li><a href="#fleet" class="hover:text-white transition-colors">Bike Hire</a></li>
                        <li><a href="#trail" class="hover:text-white transition-colors">Discovery Path</a></li>
                        <li><a href="#groups" class="hover:text-white transition-colors">Groups</a></li>
                        <li><a href="#evening-rides" class="hover:text-white transition-colors">Evening Rides</a></li>
                        <li><a href="blog.php" class="hover:text-white transition-colors">Blog</a></li>
                        <li><a href="https://www.facebook.com/thecameltrail/?locale=en_GB" target="_blank" rel="noopener" class="hover:text-white transition-colors">Facebook</a></li>
                        <li><a href="https://www.instagram.com/cameltrailcyclehire/" target="_blank" rel="noopener" class="hover:text-white transition-colors">Instagram</a></li>
                    </ul>
                </div>
                <div>
                    <h5 class="font-display font-bold text-brand-yellow mb-8 text-xl tracking-widest uppercase italic leading-none">Hub HQ</h5>
                    <p class="text-3xl font-black text-white italic leading-none mb-4">01208 814104</p>
                    <p class="text-xs text-brand-lightGreen/50 uppercase tracking-widest italic font-bold">Eddystone Road, Wadebridge</p>
                    <div class="flex flex-wrap gap-3 mt-8">
                        <a href="https://www.facebook.com/thecameltrail/?locale=en_GB" target="_blank" rel="noopener" class="inline-flex bg-brand-yellow text-brand-green rounded-full px-6 py-3 font-black uppercase tracking-widest text-xs italic hover:bg-white transition-colors">Facebook</a>
                        <a href="https://www.instagram.com/cameltrailcyclehire/" target="_blank" rel="noopener" class="inline-flex bg-white text-brand-green rounded-full px-6 py-3 font-black uppercase tracking-widest text-xs italic hover:bg-brand-yellow transition-colors">Instagram</a>
                    </div>
                </div>
            </div>
            <div class="flex flex-col md:flex-row justify-between items-center text-[10px] text-brand-lightGreen/20 font-black uppercase tracking-[0.8em] opacity-30 italic">
                <p>&copy; 2026 Camel Trail Cycle Hire Ltd</p>
                <p>Premium Bikes & E-Bikes Wadebridge</p>
            </div>
        </div>
    </footer>


    <div id="sitePopup" class="site-popup-backdrop" aria-hidden="true">
        <div class="site-popup-card" role="dialog" aria-modal="true" aria-labelledby="sitePopupTitle">
            <div id="sitePopupInner" class="site-popup-grid"></div>
        </div>
    </div>

    <script>
        document.addEventListener("DOMContentLoaded", () => {
            if (typeof gsap === 'undefined' || typeof ScrollTrigger === 'undefined') {
                document.querySelectorAll('.gsap-soft-reveal, .gsap-reveal, .gsap-nav, .gsap-headline, .gsap-subhead, .gsap-btn, .gsap-badge-desktop, .scroll-indicator').forEach(function(el) {
                    el.style.opacity = '1';
                    el.style.transform = 'none';
                    el.style.filter = 'none';
                });
                return;
            }
            gsap.registerPlugin(ScrollTrigger, MotionPathPlugin);

            // Admin-managed promotional popup
            const sitePopup = document.getElementById('sitePopup');
            const sitePopupInner = document.getElementById('sitePopupInner');
            const popupBaseSessionKey = 'ctch_popup_seen';

            function escapePopupHtml(value) {
                return String(value || '').replace(/[&<>'"]/g, function(char) {
                    return ({'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#39;','"':'&quot;'}[char]);
                });
            }


            function normalisePopupAssetUrl(value) {
                const raw = String(value || '').trim();
                if (!raw) return '';
                try {
                    const url = new URL(raw, window.location.origin);
                    const path = url.pathname || raw;
                    if (path.indexOf('/uploads/') !== -1) return path;
                    if (path.indexOf('/media/') !== -1) return path;
                    return url.href;
                } catch (err) {
                    return raw.replace(/^https?:\/\/www\.cameltrailcyclehire\.(?:com|co\.uk)/i, '').replace(/^https?:\/\/cameltrailcyclehire\.(?:com|co\.uk)/i, '');
                }
            }

            function popupDateAllowed(config) {
                const today = new Date();
                today.setHours(0, 0, 0, 0);
                if (config.start_date) {
                    const start = new Date(config.start_date + 'T00:00:00');
                    if (today < start) return false;
                }
                if (config.end_date) {
                    const end = new Date(config.end_date + 'T23:59:59');
                    if (today > end) return false;
                }
                return true;
            }

            function closeSitePopup() {
                if (!sitePopup) return;
                sitePopup.classList.remove('is-visible');
                sitePopup.setAttribute('aria-hidden', 'true');
                document.body.classList.remove('modal-open');
            }

            function renderSitePopup(config, popupSessionKey, forcePopup) {
                if (!sitePopup || !sitePopupInner) return;
                const image = config.image || null;
                const hasImage = image && (image.desktop || image.tablet || image.mobile);
                const button = config.button_text && config.button_url ? '<a class="site-popup-button" href="' + escapePopupHtml(config.button_url) + '">' + escapePopupHtml(config.button_text) + '</a>' : '';
                const imageHtml = hasImage ? '<picture><source media="(max-width: 640px)" srcset="' + escapePopupHtml(normalisePopupAssetUrl(image.mobile || image.tablet || image.desktop)) + '"><source media="(max-width: 1024px)" srcset="' + escapePopupHtml(normalisePopupAssetUrl(image.tablet || image.desktop || image.mobile)) + '"><img class="site-popup-image" src="' + escapePopupHtml(normalisePopupAssetUrl(image.desktop || image.tablet || image.mobile)) + '" alt="' + escapePopupHtml(image.alt || 'Camel Trail Cycle Hire update') + '" loading="eager"></picture>' : '';
                sitePopupInner.innerHTML = imageHtml + '<div class="site-popup-content"><button class="site-popup-close" type="button" aria-label="Close popup">&times;</button><p class="site-popup-kicker">Camel Trail Cycle Hire</p><h2 id="sitePopupTitle" class="site-popup-title">' + escapePopupHtml(config.title || 'Latest update') + '</h2><div class="site-popup-body">' + escapePopupHtml(config.body || '') + '</div>' + button + '</div>';
                sitePopup.classList.add('is-visible');
                sitePopup.setAttribute('aria-hidden', 'false');
                document.body.classList.add('modal-open');
                if (!forcePopup && config.show_once_per_session !== false && popupSessionKey) sessionStorage.setItem(popupSessionKey, '1');
                sitePopup.querySelector('.site-popup-close')?.addEventListener('click', closeSitePopup);
                sitePopup.addEventListener('click', (event) => { if (event.target === sitePopup) closeSitePopup(); }, { once: true });
            }

            fetch('/popup-data.php', { cache: 'no-store' })
                .then(response => response.ok ? response.json() : null)
                .then(config => {
                    const forcePopup = new URLSearchParams(window.location.search).get('show_popup') === '1';
                    if (!config) return;
                    if (!forcePopup && (!config.enabled || !popupDateAllowed(config))) return;
                    const popupSessionKey = popupBaseSessionKey + '_' + String(config.updated_at || config.version || 'default').replace(/[^a-zA-Z0-9_-]/g, '_');
                    if (!forcePopup && config.show_once_per_session !== false && sessionStorage.getItem(popupSessionKey)) return;
                    const delaySeconds = forcePopup ? 0 : Math.max(0, Math.min(60, parseInt(config.delay_seconds || 0, 10) || 0));
                    window.setTimeout(() => renderSitePopup(config, popupSessionKey, forcePopup), delaySeconds * 1000);
                })
                .catch(() => {});

            // Lazy Facebook Page Plugin iframe
            const facebookFeed = document.querySelector('[data-facebook-feed]');
            function loadFacebookFeed() {
                if (!facebookFeed || facebookFeed.dataset.loaded === '1') return;
                facebookFeed.dataset.loaded = '1';
                const iframe = document.createElement('iframe');
                iframe.title = 'Camel Trail Cycle Hire Facebook feed';
                iframe.loading = 'lazy';
                iframe.allow = 'autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share';
                iframe.allowFullscreen = true;
                iframe.frameBorder = '0';
                iframe.scrolling = 'no';
                iframe.style.border = 'none';
                iframe.style.overflow = 'hidden';
                iframe.style.width = '100%';
                iframe.style.maxWidth = '500px';
                iframe.style.height = '520px';
                iframe.src = 'https://www.facebook.com/plugins/page.php?href=' + encodeURIComponent('https://www.facebook.com/thecameltrail/?locale=en_GB') + '&tabs=timeline&width=500&height=520&small_header=false&adapt_container_width=true&hide_cover=false&show_facepile=true';
                facebookFeed.innerHTML = '';
                facebookFeed.appendChild(iframe);
            }
            if (facebookFeed && 'IntersectionObserver' in window) {
                const feedObserver = new IntersectionObserver((entries) => {
                    entries.forEach(entry => { if (entry.isIntersecting) { loadFacebookFeed(); feedObserver.disconnect(); } });
                }, { rootMargin: '250px' });
                feedObserver.observe(facebookFeed);
            } else {
                window.setTimeout(loadFacebookFeed, 2500);
            }


            const HERO_VIDEO_SRC = "https://www.cameltrailcyclehire.co.uk/media/Ride%20The%20Camel%20Trail%20With%20Camel%20Trail%20Cycle%20Hire.mp4";
            const desktopHeroVideo = document.getElementById('heroVideoDesktop');
            const mobileHeroVideo = document.getElementById('heroVideoMobile');

            function getActiveHeroVideo() {
                return window.innerWidth <= 768 ? mobileHeroVideo : desktopHeroVideo;
            }

            // Desktop keeps the original HTML source for reliable autoplay.
            if (desktopHeroVideo && window.innerWidth > 768) {
                desktopHeroVideo.muted = true;
                desktopHeroVideo.playsInline = true;
                const playPromise = desktopHeroVideo.play();
                if (playPromise && typeof playPromise.catch === 'function') {
                    playPromise.catch(() => {});
                }
            }

            // Mobile source is delayed very slightly to help first paint while keeping the hero video.
            if (mobileHeroVideo && window.innerWidth <= 768) {
                setTimeout(() => {
                    if (!mobileHeroVideo.querySelector('source')) {
                        const source = document.createElement('source');
                        source.src = HERO_VIDEO_SRC;
                        source.type = 'video/mp4';
                        mobileHeroVideo.appendChild(source);
                        mobileHeroVideo.load();
                    }
                    mobileHeroVideo.muted = true;
                    mobileHeroVideo.playsInline = true;
                    const playPromise = mobileHeroVideo.play();
                    if (playPromise && typeof playPromise.catch === 'function') {
                        playPromise.catch(() => {});
                    }
                }, 1200);
            }
            const tl = gsap.timeline({ defaults: { ease: "power4.out" } });

            tl.fromTo(".gsap-nav", { opacity: 0, y: -20 }, { opacity: 1, y: 0, duration: 1, delay: 0.2 })
              .fromTo(".gsap-headline", { opacity: 0, scale: 0.9, y: 50 }, { opacity: 1, scale: 1, y: 0, duration: 1.2 }, "-=0.6")
              .fromTo(".gsap-subhead", { opacity: 0, y: 30 }, { opacity: 1, y: 0, duration: 1 }, "-=0.8")
              .fromTo(".gsap-btn", { opacity: 0, y: 20 }, { opacity: 1, y: 0, duration: 0.8, ease: "back.out(1.5)" }, "-=0.6")
              .fromTo(".gsap-badge-desktop", { opacity: 0, scale: 0.5, rotate: -15 }, { opacity: 1, scale: 1, rotate: 0, duration: 1, ease: "back.out(1.5)" }, "-=0.4")
              .fromTo(".scroll-indicator", { opacity: 0 }, { opacity: 0.7, duration: 1 }, "-=0.4");


            // Mobile menu
            const mobileMenuToggle = document.getElementById('mobileMenuToggle');
            const mobileMenuPanel = document.getElementById('mobileMenuPanel');
            function closeMobileMenu() {
                if (!mobileMenuToggle || !mobileMenuPanel) return;
                mobileMenuPanel.classList.add('hidden');
                mobileMenuToggle.setAttribute('aria-expanded', 'false');
            }
            if (mobileMenuToggle && mobileMenuPanel) {
                mobileMenuToggle.addEventListener('click', (e) => {
                    e.stopPropagation();
                    const isOpen = !mobileMenuPanel.classList.contains('hidden');
                    mobileMenuPanel.classList.toggle('hidden', isOpen);
                    mobileMenuToggle.setAttribute('aria-expanded', isOpen ? 'false' : 'true');
                });
                mobileMenuPanel.querySelectorAll('a').forEach(link => link.addEventListener('click', closeMobileMenu));
                document.addEventListener('click', (e) => {
                    if (!mobileMenuPanel.classList.contains('hidden') && !mobileMenuPanel.contains(e.target) && !mobileMenuToggle.contains(e.target)) closeMobileMenu();
                });
                document.addEventListener('keydown', (e) => { if (e.key === 'Escape') closeMobileMenu(); });
            }

            // SEO SLIDER
            const slides = [
                { head: "Explore The <br><span class='two-tone-span text-glow-yellow'>Camel Trail</span>", sub: "With Premium Bike Hire for the whole family since 1983." },
                { head: "Great For <br><span class='two-tone-span text-glow-yellow'>Family Days Out</span>", sub: "Create unforgettable memories in the heart of Cornwall." },
                { head: "Adventure <br><span class='two-tone-span text-glow-yellow'>Awaits</span>", sub: "18 miles of traffic-free nature discovery from Wadebridge." },
                { head: "Premium <br><span class='two-tone-span text-glow-yellow'>Bikes & E-Bikes</span>", sub: "Experience the trail with Wadebridge's elite hire fleet." }
            ];

            let currentSlide = 0;
            const hEl = document.querySelector(".gsap-headline");
            const sEl = document.querySelector(".gsap-subhead");

            setInterval(() => {
                const video = getActiveHeroVideo();
                if (video && video.currentTime < 48) {
                    gsap.to([hEl, sEl], { opacity: 0, y: -20, duration: 0.8, onComplete: () => {
                        currentSlide = (currentSlide + 1) % slides.length;
                        hEl.innerHTML = slides[currentSlide].head;
                        sEl.innerHTML = slides[currentSlide].sub;
                        gsap.fromTo([hEl, sEl], { opacity: 0, y: 20 }, { opacity: 1, y: 0, duration: 1 });
                    }});
                }
            }, 7500);

            // Cinematic Reveal at 48s
            const video = getActiveHeroVideo();
            const overlay = document.querySelector('.hero-overlay');
            const textGroup = document.querySelector('.gsap-text-content');
            const btnWrapper = document.querySelector('.gsap-btn-wrapper');
            const scrollInd = document.querySelector('.scroll-indicator');
            const badges = document.querySelectorAll('.gsap-badge-desktop');
            let cinematicState = false;

            if (video) {
                video.addEventListener('timeupdate', () => {
                    if (video.currentTime >= 48 && !cinematicState) {
                        gsap.to([overlay, textGroup, scrollInd, ...badges], { opacity: 0, duration: 1.5, pointerEvents: "none", ease: "power2.inOut" });
                        gsap.to(btnWrapper, { y: 150, scale: 0.9, duration: 1.5, ease: "power3.inOut" });
                        cinematicState = true;
                    } else if (video.currentTime < 48 && cinematicState) {
                        gsap.to([overlay, textGroup, ...badges], { opacity: 1, duration: 1.5, pointerEvents: "auto", ease: "power2.inOut" });
                        gsap.to(scrollInd, { opacity: 0.7, duration: 1.5 });
                        gsap.to(btnWrapper, { y: 0, scale: 1, duration: 1.5, ease: "power3.inOut" });
                        cinematicState = false;
                    }
                });
            }

            // Magnetic Button Logic
            const btn = document.getElementById('bookBtn');
            if (btn && window.innerWidth > 768) {
                btn.addEventListener('mousemove', (e) => {
                    const rect = btn.getBoundingClientRect();
                    const x = e.clientX - rect.left - rect.width / 2;
                    const y = e.clientY - rect.top - rect.height / 2;
                    btn.style.transform = `translate(${x * 0.3}px, ${y * 0.3}px)`;
                });
                btn.addEventListener('mouseleave', () => { btn.style.transform = `translate(0px, 0px)`; });
            }

            // BIKE PATH ANIMATION - Fixed for All Devices
            const trailFill = document.querySelector('#animated-trail-fill');
            if (trailFill) {
                const pathLength = trailFill.getTotalLength();
                gsap.set(trailFill, { strokeDasharray: pathLength, strokeDashoffset: pathLength });
                
                gsap.to(trailFill, {
                    strokeDashoffset: 0,
                    ease: "none",
                    scrollTrigger: {
                        trigger: "#trail",
                        start: "top 10%",
                        end: "bottom 90%",
                        scrub: 1.2
                    }
                });

                gsap.to("#trail-bike", {
                    motionPath: {
                        path: "#animated-trail",
                        align: "#animated-trail",
                        alignOrigin: [0.5, 0.5],
                        autoRotate: false
                    },
                    ease: "none",
                    scrollTrigger: {
                        trigger: "#trail",
                        start: "top 10%",
                        end: "bottom 90%",
                        scrub: 1.2
                    }
                });
            }

            // Premium reveal animations
            gsap.utils.toArray(".gsap-soft-reveal").forEach((section, index) => {
                gsap.fromTo(section,
                    { opacity: 0, y: 70 },
                    {
                        scrollTrigger: { trigger: section, start: "top 88%" },
                        opacity: 1,
                        y: 0,
                        filter: "blur(0px)",
                        duration: 1.15,
                        ease: "power3.out"
                    }
                );
            });

            gsap.utils.toArray(".gsap-reveal").forEach((el, index) => {
                const side = index % 2 === 0 ? -38 : 38;
                const isCard = el.classList.contains('group') || el.querySelector('img');
                gsap.fromTo(el,
                    { opacity: 0, x: isCard ? side : 0, y: isCard ? 35 : 45, filter: "blur(8px)" },
                    {
                        scrollTrigger: { trigger: el, start: "top 92%" },
                        opacity: 1,
                        x: 0,
                        y: 0,
                        filter: "blur(0px)",
                        duration: 1.05,
                        delay: (index % 4) * 0.04,
                        ease: "power3.out"
                    }
                );
            });

            // Group enquiry modal
            const groupModal = document.getElementById('groupEnquiryModal');
            const groupForm = document.getElementById('groupEnquiryForm');
            const groupSuccess = document.getElementById('groupEnquirySuccess');
            const groupError = document.getElementById('groupEnquiryError');
            const groupSubmit = document.getElementById('groupEnquirySubmit');

            function openGroupModal() {
                if (!groupModal) return;
                groupModal.classList.remove('hidden');
                groupModal.classList.add('flex');
                groupModal.setAttribute('aria-hidden', 'false');
                document.body.classList.add('modal-open');
            }

            function closeGroupModal() {
                if (!groupModal) return;
                groupModal.classList.add('hidden');
                groupModal.classList.remove('flex');
                groupModal.setAttribute('aria-hidden', 'true');
                document.body.classList.remove('modal-open');
            }

            document.querySelectorAll('[data-open-group-enquiry]').forEach(btn => btn.addEventListener('click', openGroupModal));
            document.querySelectorAll('[data-close-group-enquiry]').forEach(btn => btn.addEventListener('click', closeGroupModal));
            document.addEventListener('keydown', (e) => { if (e.key === 'Escape') closeGroupModal(); });

            if (groupForm) {
                groupForm.addEventListener('submit', async (e) => {
                    e.preventDefault();
                    groupError.classList.add('hidden');
                    groupSuccess.classList.add('hidden');
                    groupSubmit.disabled = true;
                    groupSubmit.textContent = 'Sending...';

                    try {
                        const response = await fetch('group-enquiry-submit.php', {
                            method: 'POST',
                            body: new FormData(groupForm),
                            headers: { 'Accept': 'application/json' }
                        });
                        const result = await response.json();
                        if (!response.ok || !result.success) {
                            throw new Error(result.message || 'Sorry, the enquiry could not be sent. Please call 01208 814104.');
                        }
                        groupForm.reset();
                        groupSuccess.classList.remove('hidden');
                    } catch (err) {
                        groupError.textContent = err.message || 'Sorry, something went wrong. Please call 01208 814104.';
                        groupError.classList.remove('hidden');
                    } finally {
                        groupSubmit.disabled = false;
                        groupSubmit.textContent = 'Send Enquiry';
                    }
                });
            }

        });
    </script>
    <!-- Booqable Booking Engine -->
    <script src="https://8f2e8e62-d5af-4c1f-839a-a358154bdf4d.assets.booqable.com/v2/booqable.js"></script>

</body>
</html>