<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LB5SY611KC"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LB5SY611KC');
</script>
<!-- SEO Optimized Meta Tags -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>City Transfers - Reliable City-to-City Transportation Services</title>
<meta name="description" content="City Transfers offers reliable and affordable city-to-city transportation services. Book your intercity ride today!">
<meta name="keywords" content="City Transfers, intercity transportation, city-to-city rides, reliable transport">
<meta property="og:title" content="City Transfers - Reliable City-to-City Transportation Services">
<meta property="og:description" content="City Transfers offers reliable and affordable city-to-city transportation services. Book your intercity ride today!">
<meta property="og:image" content="https://citytransfers.eu/logo.png">
<meta property="og:url" content="https://citytransfers.eu/">
<meta property="og:type" content="website">
<link rel="canonical" href="https://citytransfers.eu/">
<link rel="manifest" href="/manifest.json">
<!-- Structured Data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "City Transfers",
"url": "https://citytransfers.eu",
"potentialAction": {
"@type": "SearchAction",
"target": "https://citytransfers.eu/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
</script>
<!-- External CSS and JS Files -->
<style>
/* Reset default margins and paddings */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* Styling the logo container */
.logo-container {
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 10px;
padding: 10px 0;
}
/* Logo styling */
.logo {
height: 50px;
margin-right: 10px;
}
/* Text next to the logo */
.logo-text {
font-size: 1.5rem;
font-weight: bold;
color: #333;
text-decoration: none;
}
/* Make sure the text is not blue (for links) */
.logo-link {
text-decoration: none;
color: inherit;
}
/* Navigation Bar Styling */
.navbar {
background-color: #333;
font-family: Arial, sans-serif;
}
.navbar-container {
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
padding: 10px;
width: 100%;
}
.navbar .tab {
color: white;
text-align: center;
padding: 10px 15px;
text-decoration: none;
margin: 0 5px;
}
.navbar .tab:hover {
background-color: #ddd;
color: black;
}
.navbar-toggle {
display: none;
background-color: #333;
color: white;
border: none;
padding: 10px 15px;
font-size: 18px;
cursor: pointer;
}
/* Language Switcher Styling */
.language-switcher {
display: flex;
align-items: center;
margin-left: 20px; /* Adjust spacing as needed */
}
.language-switcher a {
margin: 0 5px;
display: inline-block;
transition: transform 0.2s;
}
.language-switcher a:hover {
transform: scale(1.1); /* Slight zoom on hover */
}
.language-switcher .flag-icon {
width: 24px; /* Adjust size as needed */
height: auto;
cursor: pointer;
border: 1px solid #ddd;
border-radius: 4px;
opacity: 0.6; /* Default opacity */
transition: opacity 0.3s, border 0.3s;
}
.language-switcher .flag-icon:hover {
opacity: 1; /* Full opacity on hover */
}
.flag-icon.active-lang {
border: 2px solid #007bff; /* Highlight color for active language */
opacity: 1;
}
/* Mobile Menu Styling */
@media screen and (max-width: 768px) {
.navbar-container {
flex-direction: column;
align-items: center;
display: none;
width: 100%;
}
.navbar-container.active {
display: flex;
}
.navbar .tab {
width: 100%;
text-align: left;
padding-left: 20px;
border-top: 1px solid #444;
}
.navbar-toggle {
display: block;
width: 100%;
text-align: left;
border: none;
background-color: #333;
}
/* Responsive Adjustments for Language Switcher */
.language-switcher {
margin-left: 0;
margin-top: 10px; /* Stack below navigation tabs */
position: absolute;
right: 15px; /* Move to the right */
top: 10px; /* Align at the top of the mobile navbar */
}
.language-switcher a {
margin: 0 3px;
}
.language-switcher .flag-icon {
width: 20px;
}
}
/* Additional Styles for Cookie Banner */
.cookie-banner a {
color: #0d6efd;
text-decoration: underline;
}
.cookie-banner a:hover {
color: #0a58ca;
}
.cookie-banner button {
margin-top: 10px;
}
@media (min-width: 768px) {
.cookie-banner button {
margin-top: 0;
}
}
/* Offers Beam Styling */
.offers-beam {
background-color: #28a745;
color: white;
padding: 10px;
text-align: center;
font-weight: bold;
position: relative;
z-index: 1000;
display: none; /* Hidden by default */
opacity: 0; /* For seamless transition */
transition: opacity 0.5s ease-in-out; /* Smooth transition */
}
.offers-beam.visible {
display: block;
opacity: 1;
}
/* Registration Beam Styling */
.register-beam {
background-color: #f7f7f7; /* Lighter background color */
padding: 8px 15px; /* Adjusted padding */
border: 1px solid #007bff; /* Border color */
border-radius: 4px; /* Slightly rounder corners */
margin: 15px auto; /* Center the beam */
width: 75%; /* Set width to 75% of the screen */
font-size: 0.85rem; /* Smaller font size */
display: flex; /* Use flexbox for horizontal alignment */
justify-content: center; /* Center the content */
align-items: center; /* Vertically center the content */
gap: 15px; /* Space between the text and button */
animation: pulse 2s infinite; /* Animation for attention */
}
.register-beam p {
font-weight: 500; /* Reduced font weight */
color: #007bff; /* Blue text */
margin: 0; /* Remove default margin */
font-size: 0.85rem; /* Smaller text */
}
.register-beam .btn {
font-size: 0.85rem; /* Smaller button text */
padding: 5px 10px; /* Smaller button padding */
}
/* Animation Styles */
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
/* Initially hide the install button */
#install-pwa {
display: none; /* Hidden by default */
cursor: pointer;
background-color: #007bff;
color: white;
border: none;
padding: 5px 10px;
border-radius: 4px;
text-decoration: none;
font-size: 0.85rem;
}
/* Optional: Add specific styles for the install button */
#install-pwa:hover {
background-color: #0056b3;
color: white;
}
/* Optional Styles for Language Switcher */
.language-switcher {
display: flex;
align-items: center;
margin-left: 20px;
}
.language-switcher a {
margin: 0 5px;
display: inline-block;
transition: transform 0.2s;
}
.language-switcher a:hover {
transform: scale(1.1); /* Slight zoom on hover */
}
.language-switcher .flag-icon {
width: 24px; /* Adjust size as needed */
height: auto;
cursor: pointer;
border: 1px solid #ddd;
border-radius: 4px;
opacity: 0.6;
transition: opacity 0.3s, border 0.3s;
}
.language-switcher .flag-icon:hover {
opacity: 1;
}
.flag-icon.active-lang {
border: 2px solid #007bff; /* Highlight color for active language */
opacity: 1;
}
/* Lightbox Styling */
.language-lightbox {
display: none; /* Hidden by default */
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.8); /* Semi-transparent background */
justify-content: center;
align-items: center;
z-index: 1000; /* Ensure it is on top of all other elements */
}
.language-lightbox.active {
display: flex; /* Show when active */
}
.lightbox-content {
background-color: white;
padding: 20px;
border-radius: 8px;
display: flex;
flex-direction: column;
align-items: center;
max-width: 90%; /* Ensure it doesn't take up too much space on larger screens */
width: 100%;
overflow-y: auto; /* Enable scrolling if the content overflows */
max-height: 90%; /* Set a maximum height for the lightbox content */
}
/* Language options in a responsive grid layout */
.lang-options {
display: grid;
grid-template-columns: repeat(3, 1fr); /* Default to 3 columns */
gap: 15px;
width: 100%;
justify-items: center;
}
.lightbox-content a {
margin: 10px;
text-decoration: none;
font-size: 18px;
color: #333;
transition: color 0.3s;
}
.lightbox-content a:hover {
color: #007bff; /* Highlight on hover */
}
/* Adjust the grid layout for smaller screens */
@media (max-width: 768px) {
.lightbox-content {
padding: 15px;
max-width: 85%; /* Reduce width for smaller screens */
margin: 0 15px; /* Add margin to prevent content from touching the sides */
}
/* Stack language options in 2 columns on smaller screens */
.lang-options {
grid-template-columns: repeat(2, 1fr); /* Use 2 columns for mobile */
}
.lightbox-content a {
font-size: 16px; /* Slightly smaller text for mobile */
}
}
/* Stack the options in 1 column on very small screens (extra small devices) */
@media (max-width: 480px) {
.lang-options {
grid-template-columns: 1fr; /* Use 1 column for extra small screens */
}
}
/* Flag icon styling */
.flag-icon {
width: 20px; /* Adjust size as needed */
height: auto;
margin-right: 10px; /* Space between the flag and the language text */
vertical-align: middle; /* Align the flag with the text */
}
</style>
</head>
<body>
<!-- Cookie Consent Banner -->
<div id="cookie-banner" class="cookie-banner fixed-bottom bg-light text-dark p-3 shadow-lg" style="display: none;">
<div class="container d-flex justify-content-between align-items-center flex-column flex-md-row">
<div class="mb-2 mb-md-0">
<strong>Cookie Notice:</strong> We use cookies to log you in and identify you to assign your rides and requests. By using our website, you agree to our <a href="/privacy-policy">Privacy Policy</a>.
</div>
<button id="accept-cookies" class="btn btn-primary">Accept</button>
</div>
</div>
<!-- Header Section with Logo -->
<header class="logo-container">
<a href="/" class="logo-link">
<img src="/logo.png" alt="City Transfers Logo" class="logo">
</a>
</header>
<!-- Offers Beam Section -->
<!-- Navigation Bar -->
<nav class="navbar">
<!-- Mobile Menu Toggle Button -->
<button class="navbar-toggle" onclick="toggleNavbar()">☰ Menu</button>
<div class="navbar-container">
<a class="tab" href="/">Home</a>
<a class="tab" href="/book-a-ride">Book a Ride</a>
<a class="tab" href="/services">Services</a>
<a class="tab" href="/blog">Blog</a>
<a class="tab" href="/login">Login</a>
<a class="tab" href="/register">Register</a>
<a class="tab" href="/#" id="install-pwa">Install App</a>
<!-- Language Switcher Section (Only Show Active Flag) -->
<div class="language-switcher" id="open-lightbox">
<img src="/assets/flags/en.svg" alt="English" class="flag-icon active-lang">
</div>
<!-- Language Lightbox -->
<div id="language-lightbox" class="language-lightbox">
<div class="lightbox-content">
<button class="close-lightbox" onclick="closeLightbox()">×</button>
<div class="lang-options">
<a href="/?lang=bg" class="lang-option">
<img src="/assets/flags/bg.svg" alt="Bulgarian Flag" class="flag-icon"> Бългaрски
</a> <!-- Bulgarian -->
<a href="/?lang=cs" class="lang-option">
<img src="/assets/flags/cz.svg" alt="Czech Flag" class="flag-icon"> Čeština
</a> <!-- Czech -->
<a href="/?lang=da" class="lang-option">
<img src="/assets/flags/dk.svg" alt="Danish Flag" class="flag-icon"> Dansk
</a> <!-- Danish -->
<a href="/?lang=de" class="lang-option">
<img src="/assets/flags/de.svg" alt="German Flag" class="flag-icon"> Deutsch
</a> <!-- German -->
<a href="/?lang=el" class="lang-option">
<img src="/assets/flags/gr.svg" alt="Greek Flag" class="flag-icon"> Ελληνικά
</a> <!-- Greek -->
<a href="/?lang=en" class="lang-option">
<img src="/assets/flags/en.svg" alt="English Flag" class="flag-icon"> English
</a> <!-- English -->
<a href="/?lang=es" class="lang-option">
<img src="/assets/flags/es.svg" alt="Spanish Flag" class="flag-icon"> Español
</a> <!-- Spanish -->
<a href="/?lang=fi" class="lang-option">
<img src="/assets/flags/fi.svg" alt="Finnish Flag" class="flag-icon"> Suomi
</a> <!-- Finnish -->
<a href="/?lang=fr" class="lang-option">
<img src="/assets/flags/fr.svg" alt="French Flag" class="flag-icon"> Français
</a> <!-- French -->
<a href="/?lang=hr" class="lang-option">
<img src="/assets/flags/hr.svg" alt="Croatian Flag" class="flag-icon"> Hrvatski
</a> <!-- Croatian -->
<a href="/?lang=hu" class="lang-option">
<img src="/assets/flags/hu.svg" alt="Hungarian Flag" class="flag-icon"> Magyar
</a> <!-- Hungarian -->
<a href="/?lang=it" class="lang-option">
<img src="/assets/flags/it.svg" alt="Italian Flag" class="flag-icon"> Italiano
</a> <!-- Italian -->
<a href="/?lang=nl" class="lang-option">
<img src="/assets/flags/nl.svg" alt="Dutch Flag" class="flag-icon"> Nederlands
</a> <!-- Dutch -->
<a href="/?lang=no" class="lang-option">
<img src="/assets/flags/no.svg" alt="Norwegian Flag" class="flag-icon"> Norsk
</a> <!-- Norwegian -->
<a href="/?lang=pl" class="lang-option">
<img src="/assets/flags/pl.svg" alt="Polish Flag" class="flag-icon"> Polski
</a> <!-- Polish -->
<a href="/?lang=pt" class="lang-option">
<img src="/assets/flags/pt.svg" alt="Portuguese Flag" class="flag-icon"> Português
</a> <!-- Portuguese -->
<a href="/?lang=ro" class="lang-option">
<img src="/assets/flags/ro.svg" alt="Romanian Flag" class="flag-icon"> Română
</a> <!-- Romanian -->
<a href="/?lang=ru" class="lang-option">
<img src="/assets/flags/xx.svg" alt="Russian Flag" class="flag-icon"> Русский
</a> <!-- Russian -->
<a href="/?lang=sk" class="lang-option">
<img src="/assets/flags/sk.svg" alt="Slovak Flag" class="flag-icon"> Slovenčina
</a> <!-- Slovak -->
<a href="/?lang=sl" class="lang-option">
<img src="/assets/flags/si.svg" alt="Slovenian Flag" class="flag-icon"> Slovenščina
</a> <!-- Slovenian -->
<a href="/?lang=sv" class="lang-option">
<img src="/assets/flags/se.svg" alt="Swedish Flag" class="flag-icon"> Svenska
</a> <!-- Swedish -->
<a href="/?lang=tr" class="lang-option">
<img src="/assets/flags/tr.svg" alt="Turkish Flag" class="flag-icon"> Türkçe
</a> <!-- Turkish -->
<a href="/?lang=uk" class="lang-option">
<img src="/assets/flags/ua.svg" alt="Ukrainian Flag" class="flag-icon"> Українська
</a> <!-- Ukrainian -->
</div>
</div>
</div>
<!-- JavaScript for Language Lightbox -->
<script>
// Open the lightbox when flag is clicked
document.getElementById('open-lightbox').addEventListener('click', function(event) {
event.preventDefault();
document.getElementById('language-lightbox').classList.add('active');
});
// Close the lightbox when the close button is clicked
function closeLightbox() {
document.getElementById('language-lightbox').classList.remove('active');
}
// Close lightbox when clicking outside the content
document.getElementById('language-lightbox').addEventListener('click', function(event) {
if (event.target === this) {
closeLightbox();
}
});
</script>
</div>
</nav>
<!-- JavaScript for Toggle Functionality, PWA Install -->
<script>
function toggleNavbar() {
var navbarContainer = document.querySelector('.navbar-container');
navbarContainer.classList.toggle('active');
}
// Show the Offers beam when offers are available
document.addEventListener('DOMContentLoaded', function() {
});
// PWA Install Logic
let deferredPrompt;
// Listen for the beforeinstallprompt event
window.addEventListener('beforeinstallprompt', (e) => {
// Prevent the mini-infobar from appearing on mobile
e.preventDefault();
// Stash the event so it can be triggered later
deferredPrompt = e;
// Show the install button
const installButton = document.getElementById('install-pwa');
installButton.style.display = 'block'; // Ensure the button is visible
installButton.textContent = 'Install App';
});
// Handle the install button click
document.getElementById('install-pwa').addEventListener('click', async (e) => {
e.preventDefault();
if (deferredPrompt) {
// Show the install prompt
deferredPrompt.prompt();
// Wait for the user to respond to the prompt
const { outcome } = await deferredPrompt.userChoice;
// Optionally, handle the response
if (outcome === 'accepted') {
console.log('User accepted the install prompt');
} else {
console.log('User dismissed the install prompt');
}
// Clear the deferredPrompt variable
deferredPrompt = null;
}
});
// Optionally, hide the install button if the app is already installed
window.addEventListener('appinstalled', () => {
console.log('PWA was installed');
const installButton = document.getElementById('install-pwa');
installButton.style.display = 'none';
});
</script>
<!-- Cookie Consent Script -->
<script>
// Function to set a cookie
function setCookie(name, value, days) {
let expires = "";
if (days) {
const date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
// Function to get a cookie
function getCookie(name) {
let nameEQ = name + "=";
let ca = document.cookie.split(';');
for(let i=0;i < ca.length;i++) {
let c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
// Function to check consent and display banner if not accepted
function checkConsent() {
const consent = getCookie('cookie_consent');
if (!consent) {
document.getElementById('cookie-banner').style.display = 'block';
}
}
// Function to accept cookies
function acceptCookies() {
setCookie('cookie_consent', 'accepted', 365);
document.getElementById('cookie-banner').style.display = 'none';
}
// Event listener for the accept button
document.getElementById('accept-cookies').addEventListener('click', acceptCookies);
// Check consent on page load
document.addEventListener('DOMContentLoaded', checkConsent);
</script>
</body>
</html><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- Responsive Meta Tag -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="manifest" href="/manifest.json">
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
<!-- Include Bootstrap 5 CSS from CDN -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Include Bootstrap Icons (optional for visual enhancements) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">
<!-- Custom CSS for additional styling -->
<style>
/* Custom styles for the larger input fields */
.large-input {
height: 60px; /* Adjust this value as needed */
padding: 0.375rem 0.75rem; /* Adjust padding if necessary */
}
/* Added Section: Features */
.features-section {
padding: 60px 0;
}
.features-section h2 {
text-align: center;
margin-bottom: 40px;
}
.feature-item {
text-align: center;
padding: 20px;
}
.feature-item i {
font-size: 3rem;
color: #0d6efd;
margin-bottom: 20px;
}
/* Custom styles for the page */
.container-custom {
width: 90%; /* Takes 90% of the screen width */
max-width: 1200px; /* But will never exceed 1200px */
margin: 30px auto;
padding-bottom: 20px;
}
/* Styling for the trip type navigation pills */
.trip-type-nav .nav-link {
border: 1px solid #dee2e6;
border-radius: 0;
color: #495057;
margin-right: 0.5rem;
cursor: pointer;
}
.trip-type-nav .nav-link.active {
background-color: #0d6efd;
color: white;
}
/* Map container to maintain aspect ratio */
.map-container {
width: 100%;
height: 0;
padding-bottom: 56.25%; /* 16:9 Aspect Ratio */
position: relative;
}
#map {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
/* Distance and duration information styling */
.info-container {
margin-top: 15px;
font-weight: bold;
}
/* Loading spinner positioning */
#loading {
display: none;
text-align: center;
margin-top: 10px;
}
/* Demo content section styling */
.demo-section {
padding: 40px 0 20px;
}
.demo-section h2 {
margin-bottom: 30px;
text-align: center;
}
/* Customer reviews card styling */
.review-card {
margin-bottom: 20px;
}
/* Notice styling */
.notice {
margin-top: 15px;
padding: 10px;
background-color: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
border-radius: 5px;
}
/* Responsive adjustments */
@media (max-width: 992px) {
/* Adjust map height for smaller screens */
.map-container {
padding-bottom: 75%; /* Adjust aspect ratio if needed */
}
}
/* Additional styling for the form */
.form-section {
padding: 20px;
background-color: #ffffff;
border: 1px solid #dee2e6;
border-radius: 5px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.form-section .form-label {
font-weight: 500;
}
.form-section .required::after {
content: " *";
color: red;
}
/* Adjust button styling */
.btn-primary {
background-color: #0d6efd;
border-color: #0d6efd;
}
.btn-primary:hover {
background-color: #0b5ed7;
border-color: #0a58ca;
}
.main-heading {
text-align: center;
font-size: 1.5rem;
font-weight: 700;
color: #343a40; /* Darker shade for contrast */
margin: 20px 0 20px;
line-height: 1.2;
}
/* Smooth Scrolling */
html {
scroll-behavior: smooth;
}
/* Custom Styling for Clickable Cards */
.clickable-card {
transition: transform 0.3s, box-shadow 0.3s;
cursor: pointer;
}
.clickable-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
}
/* Ensure Links Do Not Have Underlines */
a.text-decoration-none {
text-decoration: none;
}
/* Optional: Adjust Button Styling Inside Cards */
.clickable-card .btn-primary {
transition: background-color 0.3s, border-color 0.3s;
}
.clickable-card .btn-primary:hover {
background-color: #0b5ed7;
border-color: #0a58ca;
}
/* Responsive Adjustments for Smaller Screens */
@media (max-width: 576px) {
.clickable-card {
/* Any additional adjustments for mobile can go here */
}
}
/* Extended City Transfers Section Styling */
.extended-city-transfers-section {
background-color: #f8f9fa; /* Light background for contrast */
}
.extended-city-transfers-section h2,
.extended-city-transfers-section h3,
.extended-city-transfers-section h4,
.extended-city-transfers-section h5 {
color: #343a40; /* Dark gray for headings */
}
.extended-city-transfers-section p {
color: #6c757d; /* Medium gray for text */
line-height: 1.6;
}
.extended-city-transfers-section .highlight-item i {
font-size: 2.5rem;
color: #198754; /* Bootstrap's success color */
}
.extended-city-transfers-section .highlight-item h4 {
font-size: 1.5rem;
margin-bottom: 10px;
}
.extended-city-transfers-section .highlight-item p {
font-size: 1rem;
}
.extended-city-transfers-section .service-detail i {
font-size: 2rem;
color: #198754; /* Bootstrap's success color */
}
.extended-city-transfers-section .service-detail h4 {
font-size: 1.25rem;
margin-bottom: 5px;
}
.extended-city-transfers-section .service-detail p {
font-size: 0.95rem;
}
.extended-city-transfers-section .list-group-item {
border: none;
padding: 10px 0;
}
.extended-city-transfers-section .list-group-item i {
font-size: 1.5rem;
color: #ffc107; /* Bootstrap's warning color */
margin-right: 15px;
}
.extended-city-transfers-section .list-group-numbered {
counter-reset: item;
}
.extended-city-transfers-section .list-group-numbered > li {
counter-increment: item;
}
.extended-city-transfers-section .list-group-numbered > li::before {
content: counter(item) ". ";
font-weight: bold;
margin-right: 10px;
}
.extended-city-transfers-section .testimonial-highlight blockquote {
font-style: italic;
background-color: #ffffff;
padding: 20px;
border-left: 5px solid #198754;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.extended-city-transfers-section .btn-success {
padding: 12px 30px;
font-size: 1.1rem;
border-radius: 25px;
}
</style>
<!-- JavaScript for Google Maps and form interactions -->
<script>
let map, directionsService, directionsRenderer;
let autocompletePickup, autocompleteDropoff; // Declare globally
// Initialize the Google Map
window.initMap = function() {
try {
directionsService = new google.maps.DirectionsService();
directionsRenderer = new google.maps.DirectionsRenderer();
const defaultCenter = { lat: 51.1657, lng: 10.4515 }; // Centered on Germany
map = new google.maps.Map(document.getElementById('map'), {
zoom: 3,
center: defaultCenter
});
directionsRenderer.setMap(map);
const inputPickup = document.getElementById('pickup');
const inputDropoff = document.getElementById('dropoff');
// Autocomplete options (no types specified to allow various place types)
const options = {
// types: ['geocode'] // Uncomment this if needed for geocoded results
};
autocompletePickup = new google.maps.places.Autocomplete(inputPickup, options);
autocompleteDropoff = new google.maps.places.Autocomplete(inputDropoff, options);
// Add event listeners to validate the place and calculate the route
autocompletePickup.addListener('place_changed', function () {
const place = autocompletePickup.getPlace();
if (!isAcceptablePlace(place)) {
alert('Please select a specific pickup location (not a full city or country).');
inputPickup.value = '';
} else {
calculateRoute();
}
});
autocompleteDropoff.addListener('place_changed', function () {
const place = autocompleteDropoff.getPlace();
if (!isAcceptablePlace(place)) {
alert('Please select a specific dropoff location (not a full city or country).');
inputDropoff.value = '';
} else {
calculateRoute();
}
});
// **New Addition: Check for pre-filled form data and calculate route if applicable**
} catch (error) {
console.error('Error initializing Google Maps:', error);
alert('An error occurred while loading the map. Please refresh.');
}
}
// Calculate and display the route on the map
function calculateRoute() {
const origin = document.getElementById('pickup').value;
const destination = document.getElementById('dropoff').value;
if (origin && destination) {
// Show loading spinner
document.getElementById('loading').style.display = 'block';
const request = {
origin: origin,
destination: destination,
travelMode: 'DRIVING'
};
directionsService.route(request, function (result, status) {
// Hide loading spinner
document.getElementById('loading').style.display = 'none';
if (status === 'OK') {
directionsRenderer.setDirections(result);
const route = result.routes[0].legs[0];
document.getElementById('distance').innerText = 'Distance: ' + route.distance.text;
document.getElementById('duration').innerText = 'Duration: ' + route.duration.text;
// Populate hidden fields with route data for backend processing
document.getElementById('distance_hidden').value = route.distance.value;
document.getElementById('duration_hidden').value = route.duration.value;
document.getElementById('pickup_lat').value = route.start_location.lat();
document.getElementById('pickup_lng').value = route.start_location.lng();
document.getElementById('dropoff_lat').value = route.end_location.lat();
document.getElementById('dropoff_lng').value = route.end_location.lng();
} else {
console.error('Error fetching directions: ' + status);
alert('Could not display directions due to: ' + status);
}
});
}
}
// Function to check if the place is acceptable
function isAcceptablePlace(place) {
if (!place.types || !place.address_components) {
return false;
}
const unacceptableTypes = ['country', 'locality']; // Exclude countries and full cities
for (const type of place.types) {
if (unacceptableTypes.includes(type)) {
return false;
}
}
return true; // Acceptable place (e.g., sublocality, neighborhood, address)
}
// Function to handle trip type selection
function selectTripType(tripType) {
document.getElementById('trip_type').value = tripType;
// References to containers
const flightNumberContainer = document.getElementById('flight_number_container');
const languageContainer = document.querySelector('#language').parentElement;
const extraTimeContainer = document.getElementById('extra_time_container');
const flightNumberRow = flightNumberContainer.parentElement;
const flightNumberCol = flightNumberContainer;
const flightNumberLabel = flightNumberContainer.querySelector('label');
const noticeContainer = document.getElementById('notice_container');
const eventTypeContainer = document.getElementById('event_type_container');
const deliveryTypeContainer = document.getElementById('what_to_deliver_container');
const weightContainer = document.getElementById('weight_container');
const dimensionsContainer = document.getElementById('dimensions_container');
const serviceTypeContainer = document.getElementById('service_type_container');
const adultsField = document.getElementById('adults').closest('.row'); // Get the parent row of the adults field
const kidsField = document.getElementById('kids_with_child_seats').closest('.row'); // Get the parent row of the kids field
// Get references to the 'Additional Information' field and label
const additionalInfoField = document.getElementById('additional_info');
const additionalInfoLabel = document.getElementById('additional_info_label');
// Determine whether to make 'Additional Information' required
if (tripType === 'Sightseeing Tour' ||
tripType === 'Event Ride' ||
tripType === 'Courier Service') {
additionalInfoField.setAttribute('required', 'required');
additionalInfoLabel.classList.add('required');
} else {
additionalInfoField.removeAttribute('required');
additionalInfoLabel.classList.remove('required');
}
// Change the placeholder text based on the trip type
if (tripType === 'Sightseeing Tour') {
additionalInfoField.placeholder = 'Please specify your plans or the places you would like to visit...';
} else if (tripType === 'Event Ride') {
additionalInfoField.placeholder = 'Please provide your plans or details about the event...';
} else if (tripType === 'Courier Service') {
additionalInfoField.placeholder = 'Please provide quantity, details and special instructions for the delivery...';
} else {
additionalInfoField.placeholder = 'Specify your ride details (optional)...';
}
if (tripType === 'Chauffeur Service' ||
tripType === 'Transfer Service') {
flightNumberContainer.style.display = 'block'; // Show Flight Number field
languageContainer.classList.remove('col-md-12');
languageContainer.classList.add('col-md-6');
} else {
flightNumberContainer.style.display = 'none'; // Hide Flight Number field
languageContainer.classList.remove('col-md-6');
languageContainer.classList.add('col-md-12');
}
if (tripType === 'Event Ride') {
eventTypeContainer.style.display = 'block'; // Show event type field
} else {
eventTypeContainer.style.display = 'none'; // Hide event type field
}
if (tripType === 'Courier Service') {
deliveryTypeContainer.style.display = 'block'; // Show Delivery Type field
weightContainer.style.display = 'block'; // Show Weight field
dimensionsContainer.style.display = 'block'; // Show Dimensions field
serviceTypeContainer.style.display = 'block'; // Show Service Type field
adultsField.style.display = 'none'; // Hide Adults field
kidsField.style.display = 'none'; // Hide Kids field
} else {
deliveryTypeContainer.style.display = 'none'; // Hide Delivery Type field
weightContainer.style.display = 'none'; // Hide Weight field
dimensionsContainer.style.display = 'none'; // Hide Dimensions field
serviceTypeContainer.style.display = 'none'; // Hide Service Type field
adultsField.style.display = 'flex'; // Show Adults field
kidsField.style.display = 'flex'; // Show Kids field
}
if (tripType === 'Chauffeur Service' ||
tripType === 'Sightseeing Tour' ||
tripType === 'Event Ride') {
extraTimeContainer.style.display = 'block'; // Show Extra Time field
} else {
extraTimeContainer.style.display = 'none'; // Hide Extra Time field
}
// Show the notice for Sightseeing Tour
if (tripType === 'Sightseeing Tour') {
noticeContainer.style.display = 'block'; // Show notice
} else {
noticeContainer.style.display = 'none'; // Hide notice
}
// Optionally, expand the additional fields when a trip type is selected
// Removed as fields are always visible
}
// Function to handle setting current location for a given field (pickup or dropoff)
function setCurrentLocation(fieldType) {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
const lat = position.coords.latitude;
const lng = position.coords.longitude;
// Use Google Maps Geocoder to convert coordinates to an address
const geocoder = new google.maps.Geocoder();
const latlng = { lat: lat, lng: lng };
geocoder.geocode({ location: latlng }, function(results, status) {
if (status === 'OK') {
if (results[0]) {
// Set the address in the respective input field
if (fieldType === 'pickup') {
document.getElementById('pickup').value = results[0].formatted_address;
// Trigger the place_changed event for pickup
google.maps.event.trigger(autocompletePickup, 'place_changed');
} else if (fieldType === 'dropoff') {
document.getElementById('dropoff').value = results[0].formatted_address;
// Trigger the place_changed event for dropoff
google.maps.event.trigger(autocompleteDropoff, 'place_changed');
}
} else {
alert('No results found for your location.');
}
} else {
alert('Geocoder failed due to: ' + status);
}
});
}, function(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
alert('Location access was denied by the user.');
break;
case error.POSITION_UNAVAILABLE:
alert('Location information is unavailable.');
break;
case error.TIMEOUT:
alert('The request to get your location timed out.');
break;
case error.UNKNOWN_ERROR:
alert('An unknown error occurred while fetching your location.');
break;
}
});
} else {
alert('Geolocation is not supported by your browser.');
}
}
// Function to handle trip type selection
// (Existing function remains unchanged)
document.addEventListener('DOMContentLoaded', function () {
// Handle trip type navigation clicks
const tripTypeNavLinks = document.querySelectorAll('.trip-type-nav .nav-link');
tripTypeNavLinks.forEach(function(link) {
link.addEventListener('click', function() {
// Remove active class from all links
tripTypeNavLinks.forEach(function(l) { l.classList.remove('active'); });
// Add active class to the clicked link
this.classList.add('active');
// Set the trip type
const tripType = this.textContent.trim();
selectTripType(tripType);
});
});
// Automatically select "Transfer Service" on page load
const initialTripType = 'Transfer Service';
document.getElementById('trip_type').value = initialTripType; // Set the hidden input value
selectTripType(initialTripType); // This will set the initial state correctly
// Handle form auto-expansion when Dropoff is filled
const dropoffField = document.getElementById('dropoff');
dropoffField.addEventListener('blur', function() {
if (dropoffField.value.trim() !== '') {
// autoExpandForm(); // Uncomment if necessary
}
});
// Add event listeners for current location buttons <!-- Added -->
document.getElementById('pickup-current-location-btn').addEventListener('click', function() {
setCurrentLocation('pickup');
});
document.getElementById('dropoff-current-location-btn').addEventListener('click', function() {
setCurrentLocation('dropoff');
});
// If form data exists (for non-logged-in users after redirect), pre-fill the form
// **This is now handled inside initMap(), so it's removed from here**
});
</script>
<script>
if (typeof navigator.serviceWorker !== 'undefined') {
navigator.serviceWorker.register('sw.js')
}
</script>
<script>
// Fetch OneSignal player ID and store it in the hidden input field
OneSignal.push(function() {
OneSignal.getUserId(function(playerId) {
document.getElementById('player_id').value = playerId;
});
});
</script>
</head>
<body>
<!-- Main Content Container -->
<div class="container-custom">
<!-- Display Success or Error Messages -->
<!-- Notice for booking prompt -->
<div class="alert alert-info text-center mb-4">
<strong>Book Your Ride Now!</strong> Fill out the form below to get a free quote. </div>
<!-- Trip Type Selection Navigation Pills -->
<ul class="nav nav-pills mb-4 justify-content-center trip-type-nav" id="tripTypeTabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="transfer-tab" role="tab" aria-controls="transfer" aria-selected="true" onclick="selectTripType('Transfer Service')">Transfer Service</a>
</li>
<li class="nav-item">
<a class="nav-link" id="chauffeur-tab" role="tab" aria-controls="chauffeur" aria-selected="false" onclick="selectTripType('Chauffeur Service')">Chauffeur Service</a>
</li>
<li class="nav-item">
<a class="nav-link" id="sightseeing-tab" role="tab" aria-controls="sightseeing" aria-selected="false" onclick="selectTripType('Sightseeing Tour')">Sightseeing Tour</a>
</li>
<li class="nav-item">
<a class="nav-link" id="event-tab" role="tab" aria-controls="event" aria-selected="false" onclick="selectTripType('Event Ride')">Event Ride</a>
</li>
<li class="nav-item">
<a class="nav-link" id="courier-tab" role="tab" aria-controls="courier" aria-selected="false" onclick="selectTripType('Courier Service')">Courier Service</a>
</li>
</ul>
<!-- Notice for Sightseeing Tour -->
<div id="notice_container" class="notice" style="display: none;">
Meals or entrance tickets not included. Chauffeur only. </div>
<!-- Form and Map Section using Bootstrap Grid -->
<div class="row">
<!-- Ride Request Form Column -->
<div class="col-lg-7 mb-4">
<div class="form-section">
<form id="ride_form" action="/submit_ride.php" method="POST">
<!-- CSRF Token -->
<input type="hidden" name="csrf_token" value="f50d340b5bdbe8827609d5af446af0bc099f5448c2285962eb25cf169ef502b8">
<!-- Hidden input for customer_id or cookie_id -->
<input type="hidden" name="cookie_id" value="0">
<!-- Hidden input for OneSignal player ID -->
<input type="hidden" name="player_id" id="player_id" value="">
<!-- Hidden input to store selected trip type -->
<input type="hidden" id="trip_type" name="trip_type" value="Transfer Service">
<!-- Pickup Location Field -->
<div class="mb-3">
<label for="pickup" class="form-label required">Pickup Location</label>
<div class="input-group">
<input type="text" class="form-control large-input" id="pickup" name="pickup_location_name" placeholder="Location, Airport, Hotel..." required value="">
<button type="button" class="btn btn-outline-secondary" id="pickup-current-location-btn" title="">
<i class="bi bi-geo-alt"></i>
</button>
</div>
</div>
<!-- Dropoff Location Field -->
<div class="mb-3">
<label for="dropoff" class="form-label required">Dropoff Location</label>
<div class="input-group">
<input type="text" class="form-control large-input" id="dropoff" name="dropoff_location_name" placeholder="Location, Airport, Hotel..." required value="">
<button type="button" class="btn btn-outline-secondary" id="dropoff-current-location-btn" title="">
<i class="bi bi-geo-alt"></i>
</button>
</div>
</div>
<!-- Trip Date and Time -->
<div class="row mb-3">
<div class="col-md-6">
<label for="trip_date" class="form-label required">Trip Date</label>
<input type="date" class="form-control" id="trip_date" name="trip_date" required min="2024-11-22" max="2025-11-22" value="">
</div>
<div class="col-md-6">
<label for="trip_time" class="form-label required">Trip Time</label>
<select class="form-select" id="trip_time" name="trip_time" required>
<option value="" disabled selected>Select Time</option>
<option value="00:00" >00:00</option><option value="00:15" >00:15</option><option value="00:30" >00:30</option><option value="00:45" >00:45</option><option value="01:00" >01:00</option><option value="01:15" >01:15</option><option value="01:30" >01:30</option><option value="01:45" >01:45</option><option value="02:00" >02:00</option><option value="02:15" >02:15</option><option value="02:30" >02:30</option><option value="02:45" >02:45</option><option value="03:00" >03:00</option><option value="03:15" >03:15</option><option value="03:30" >03:30</option><option value="03:45" >03:45</option><option value="04:00" >04:00</option><option value="04:15" >04:15</option><option value="04:30" >04:30</option><option value="04:45" >04:45</option><option value="05:00" >05:00</option><option value="05:15" >05:15</option><option value="05:30" >05:30</option><option value="05:45" >05:45</option><option value="06:00" >06:00</option><option value="06:15" >06:15</option><option value="06:30" >06:30</option><option value="06:45" >06:45</option><option value="07:00" >07:00</option><option value="07:15" >07:15</option><option value="07:30" >07:30</option><option value="07:45" >07:45</option><option value="08:00" >08:00</option><option value="08:15" >08:15</option><option value="08:30" >08:30</option><option value="08:45" >08:45</option><option value="09:00" >09:00</option><option value="09:15" >09:15</option><option value="09:30" >09:30</option><option value="09:45" >09:45</option><option value="10:00" >10:00</option><option value="10:15" >10:15</option><option value="10:30" >10:30</option><option value="10:45" >10:45</option><option value="11:00" >11:00</option><option value="11:15" >11:15</option><option value="11:30" >11:30</option><option value="11:45" >11:45</option><option value="12:00" >12:00</option><option value="12:15" >12:15</option><option value="12:30" >12:30</option><option value="12:45" >12:45</option><option value="13:00" >13:00</option><option value="13:15" >13:15</option><option value="13:30" >13:30</option><option value="13:45" >13:45</option><option value="14:00" >14:00</option><option value="14:15" >14:15</option><option value="14:30" >14:30</option><option value="14:45" >14:45</option><option value="15:00" >15:00</option><option value="15:15" >15:15</option><option value="15:30" >15:30</option><option value="15:45" >15:45</option><option value="16:00" >16:00</option><option value="16:15" >16:15</option><option value="16:30" >16:30</option><option value="16:45" >16:45</option><option value="17:00" >17:00</option><option value="17:15" >17:15</option><option value="17:30" >17:30</option><option value="17:45" >17:45</option><option value="18:00" >18:00</option><option value="18:15" >18:15</option><option value="18:30" >18:30</option><option value="18:45" >18:45</option><option value="19:00" >19:00</option><option value="19:15" >19:15</option><option value="19:30" >19:30</option><option value="19:45" >19:45</option><option value="20:00" >20:00</option><option value="20:15" >20:15</option><option value="20:30" >20:30</option><option value="20:45" >20:45</option><option value="21:00" >21:00</option><option value="21:15" >21:15</option><option value="21:30" >21:30</option><option value="21:45" >21:45</option><option value="22:00" >22:00</option><option value="22:15" >22:15</option><option value="22:30" >22:30</option><option value="22:45" >22:45</option><option value="23:00" >23:00</option><option value="23:15" >23:15</option><option value="23:30" >23:30</option><option value="23:45" >23:45</option> </select>
</div>
</div>
<!-- Number of Passengers and Suitcases -->
<div class="row mb-3">
<div class="col-md-4">
<label for="adults" class="form-label required">Adults</label>
<input type="number" class="form-control" id="adults" name="adults" required min="1" value="1">
</div>
<div class="col-md-4">
<label for="kids_with_child_seats" class="form-label">Kids</label>
<input type="number" class="form-control" id="kids_with_child_seats" name="kids_with_child_seats" min="0" value="0">
</div>
<div class="col-md-4">
<label for="suitcases" class="form-label">Suitcases</label>
<input type="number" class="form-control" id="suitcases" name="suitcases" min="0" value="0">
</div>
</div>
<!-- Flight Number and Preferred Language Fields in One Row -->
<div class="row mb-3">
<!-- Flight Number Field (Only for Transfer Service and Chauffeur Service) -->
<div class="col-md-6" id="flight_number_container" style="display: none;">
<label for="flight_number" class="form-label">Flight Number</label>
<input type="text" class="form-control large-input" id="flight_number" name="flight_number" placeholder="e.g., LH1234" value="">
</div>
<!-- Preferred Language -->
<div class="col-md-6">
<label for="language" class="form-label">Preferred Language</label>
<select class="form-select large-input" id="language" name="language">
<option value="English" >English</option>
<option value="Español" >Español</option>
<option value="Deutsch" >Deutsch</option>
<option value="Français" >Français</option>
<option value="Italiano" >Italiano</option>
<option value="Português" >Português</option>
<option value="中文" >中文</option>
<option value="日本語" >日本語</option>
<option value="한국어" >한국어</option>
<option value="Русский" >Русский</option>
<option value="العربية" >العربية</option>
<option value="हिन्दी" >हिन्दी</option>
<option value="Türkçe" >Türkçe</option>
<option value="Nederlands" >Nederlands</option>
<option value="Polski" >Polski</option>
<option value="Svenska" >Svenska</option>
<option value="Ελληνικά" >Ελληνικά</option>
<option value="Tiếng Việt" >Tiếng Việt</option>
<option value="ไทย" >ไทย</option>
<option value="Українська" >Українська</option>
<!-- Add more languages as needed -->
</select>
</div>
</div>
<!-- Event Type Field (Only for Event Ride) -->
<div class="row mb-3" id="event_type_container" style="display: none;">
<div class="col-md-12">
<label for="event_type" class="form-label">Event Type</label>
<select class="form-select" id="event_type" name="event_type">
<option value="" disabled selected>Select Event Type</option>
<option value="Wedding" >Wedding</option>
<option value="Corporate Event" >Corporate Event</option>
<option value="Prom" >Prom</option>
<option value="Special Occasion (Birthday, Anniversary,...)" >Special Occasion (Birthday, Anniversary,...)</option>
<option value="Concerts or Sports Event" >Concerts or Sports Event</option>
<option value="Funeral" >Funeral</option>
<option value="Private Party" >Private Party</option>
</select>
</div>
</div>
<!-- Delivery Type Field (Only for Courier Service) -->
<div class="row mb-3" id="what_to_deliver_container" style="display: none;">
<div class="col-md-12">
<label for="what_to_deliver" class="form-label">What to Deliver</label>
<select class="form-select" id="what_to_deliver" name="what_to_deliver">
<option value="" disabled>Select Delivery Type</option>
<option value="Documents" >Documents</option>
<option value="Parcels and Packages" >Parcels and Packages</option>
<option value="Medical Supplies" >Medical Supplies</option>
<option value="Food and Beverages" >Food and Beverages</option>
<option value="E-commerce Orders" >E-commerce Orders</option>
<option value="Floral Arrangements" >Floral Arrangements</option>
<option value="Specialty Items" >Specialty Items</option>
<option value="Furniture and Appliances" >Furniture and Appliances</option>
<option value="Valuable Goods" >Valuable Goods</option>
<option value="Samples and Prototypes" >Samples and Prototypes</option>
<option value="Pets" >Pets</option>
</select>
</div>
</div>
<!-- Weight Field (Only for Courier Service) -->
<div class="row mb-3" id="weight_container" style="display: none;">
<div class="col-md-6">
<label for="weight" class="form-label">Weight (kg)</label>
<input type="number" class="form-control" id="weight" name="weight" min="0" step="0.1" value="">
</div>
</div>
<!-- Dimensions Field (Only for Courier Service) -->
<div class="row mb-3" id="dimensions_container" style="display: none;">
<div class="col-md-4">
<label for="length" class="form-label">Length (cm)</label>
<input type="number" class="form-control" id="length" name="length" min="0" step="0.1" value="">
</div>
<div class="col-md-4">
<label for="width" class="form-label">Width (cm)</label>
<input type="number" class="form-control" id="width" name="width" min="0" step="0.1" value="">
</div>
<div class="col-md-4">
<label for="height" class="form-label">Height (cm)</label>
<input type="number" class="form-control" id="height" name="height" min="0" step="0.1" value="">
</div>
</div>
<!-- Service Type Field (Only for Courier Service) -->
<div class="row mb-3" id="service_type_container" style="display: none;">
<div class="col-md-12">
<label for="service_type" class="form-label">Service Type</label>
<select class="form-select" id="service_type" name="service_type">
<option value="" disabled selected>Select Service Type</option>
<option value="Standard" selected>Standard</option>
<option value="Express" >Express</option>
</select>
</div>
</div>
<!-- Extra Time Field -->
<div class="mb-3" id="extra_time_container" style="display: none;">
<label for="extra_time" class="form-label">Extra Time (hours)</label>
<select class="form-select" id="extra_time" name="extra_time">
<option value="" disabled selected>Select Extra Time</option>
<option value="1" >
1 hour </option>
<option value="2" >
2 hours </option>
<option value="3" >
3 hours </option>
<option value="4" >
4 hours </option>
<option value="5" >
5 hours </option>
<option value="6" >
6 hours </option>
<option value="7" >
7 hours </option>
<option value="8" >
8 hours </option>
<option value="9" >
9 hours </option>
<option value="10" >
10 hours </option>
</select>
</div>
<!-- Additional Information Field -->
<div class="mb-3">
<label for="additional_info" class="form-label" id="additional_info_label">Additional Information</label>
<textarea class="form-control" id="additional_info" name="additional_info" rows="3" placeholder="Specify your ride details if necessary..."></textarea>
</div>
<!-- Email Field -->
<div class="mb-3">
<label for="email" class="form-label required">Email</label>
<input type="email" class="form-control" id="email" name="email" placeholder="Enter your email" required value="">
</div>
<!-- Hidden Fields for Geolocation and Route Data -->
<input type="hidden" id="pickup_lat" name="pickup_lat" value="">
<input type="hidden" id="pickup_lng" name="pickup_lng" value="">
<input type="hidden" id="dropoff_lat" name="dropoff_lat" value="">
<input type="hidden" id="dropoff_lng" name="dropoff_lng" value="">
<input type="hidden" id="distance_hidden" name="distance" value="">
<input type="hidden" id="duration_hidden" name="duration" value="">
<!-- Submit Button -->
<button type="submit" class="btn btn-primary w-100">Submit Ride Request</button>
</form>
</div>
</div>
<!-- Google Map Column -->
<div class="col-lg-5 mb-4">
<div class="map-section">
<div class="map-container mb-3">
<div id="map"></div>
</div>
<div class="info-container">
<p id="distance"></p>
<p id="duration"></p>
</div>
</div>
</div>
</div>
<!-- Include Google Maps JavaScript API with your API key -->
<script
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBE52aHVR7LvfQE7KqA1P9l8h3LjOwDfVo&libraries=places&callback=initMap&v=weekly"
async
defer
></script>
<!-- Loading Spinner -->
<div id="loading" class="text-center my-3">
<div class="spinner-border" role="status">
<span class="visually-hidden">Loading...</span>
</div>
</div>
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<!-- Responsive Meta Tag -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="manifest" href="/manifest.json">
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
<!-- Include Bootstrap 5 CSS from CDN -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Include Bootstrap Icons (optional for visual enhancements) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">
<!-- Custom CSS for additional styling -->
<style>
/* Custom styles for the larger input fields */
.large-input {
height: 60px; /* Adjust this value as needed */
padding: 0.375rem 0.75rem; /* Adjust padding if necessary */
}
/* Added Section: Features */
.features-section {
padding: 60px 0;
}
.features-section h2 {
text-align: center;
margin-bottom: 40px;
}
.feature-item {
text-align: center;
padding: 20px;
}
.feature-item i {
font-size: 3rem;
color: #0d6efd;
margin-bottom: 20px;
}
/* Custom styles for the page */
.container-custom {
width: 90%; /* Takes 90% of the screen width */
max-width: 1200px; /* But will never exceed 1200px */
margin: 30px auto;
padding-bottom: 20px;
}
/* Styling for the trip type navigation pills */
.trip-type-nav .nav-link {
border: 1px solid #dee2e6;
border-radius: 0;
color: #495057;
margin-right: 0.5rem;
cursor: pointer;
}
.trip-type-nav .nav-link.active {
background-color: #0d6efd;
color: white;
}
/* Map container to maintain aspect ratio */
.map-container {
width: 100%;
height: 0;
padding-bottom: 56.25%; /* 16:9 Aspect Ratio */
position: relative;
}
#map {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
/* Distance and duration information styling */
.info-container {
margin-top: 15px;
font-weight: bold;
}
/* Loading spinner positioning */
#loading {
display: none;
text-align: center;
margin-top: 10px;
}
/* Demo content section styling */
.demo-section {
padding: 40px 0 20px;
}
.demo-section h2 {
margin-bottom: 30px;
text-align: center;
}
/* Customer reviews card styling */
.review-card {
margin-bottom: 20px;
}
/* Notice styling */
.notice {
margin-top: 15px;
padding: 10px;
background-color: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
border-radius: 5px;
}
/* Responsive adjustments */
@media (max-width: 992px) {
/* Adjust map height for smaller screens */
.map-container {
padding-bottom: 75%; /* Adjust aspect ratio if needed */
}
}
/* Additional styling for the form */
.form-section {
padding: 20px;
background-color: #ffffff;
border: 1px solid #dee2e6;
border-radius: 5px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.form-section .form-label {
font-weight: 500;
}
.form-section .required::after {
content: " *";
color: red;
}
/* Adjust button styling */
.btn-primary {
background-color: #0d6efd;
border-color: #0d6efd;
}
.btn-primary:hover {
background-color: #0b5ed7;
border-color: #0a58ca;
}
.main-heading {
text-align: center;
font-size: 1.5rem;
font-weight: 700;
color: #343a40; /* Darker shade for contrast */
margin: 20px 0 20px;
line-height: 1.2;
}
/* Smooth Scrolling */
html {
scroll-behavior: smooth;
}
/* Custom Styling for Clickable Cards */
.clickable-card {
transition: transform 0.3s, box-shadow 0.3s;
cursor: pointer;
}
.clickable-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
}
/* Ensure Links Do Not Have Underlines */
a.text-decoration-none {
text-decoration: none;
}
/* Optional: Adjust Button Styling Inside Cards */
.clickable-card .btn-primary {
transition: background-color 0.3s, border-color 0.3s;
}
.clickable-card .btn-primary:hover {
background-color: #0b5ed7;
border-color: #0a58ca;
}
/* Responsive Adjustments for Smaller Screens */
@media (max-width: 576px) {
.clickable-card {
/* Any additional adjustments for mobile can go here */
}
}
/* Extended City Transfers Section Styling */
.extended-city-transfers-section {
background-color: #f8f9fa; /* Light background for contrast */
}
.extended-city-transfers-section h2,
.extended-city-transfers-section h3,
.extended-city-transfers-section h4,
.extended-city-transfers-section h5 {
color: #343a40; /* Dark gray for headings */
}
.extended-city-transfers-section p {
color: #6c757d; /* Medium gray for text */
line-height: 1.6;
}
.extended-city-transfers-section .highlight-item i {
font-size: 2.5rem;
color: #198754; /* Bootstrap's success color */
}
.extended-city-transfers-section .highlight-item h4 {
font-size: 1.5rem;
margin-bottom: 10px;
}
.extended-city-transfers-section .highlight-item p {
font-size: 1rem;
}
.extended-city-transfers-section .service-detail i {
font-size: 2rem;
color: #198754; /* Bootstrap's success color */
}
.extended-city-transfers-section .service-detail h4 {
font-size: 1.25rem;
margin-bottom: 5px;
}
.extended-city-transfers-section .service-detail p {
font-size: 0.95rem;
}
.extended-city-transfers-section .list-group-item {
border: none;
padding: 10px 0;
}
.extended-city-transfers-section .list-group-item i {
font-size: 1.5rem;
color: #ffc107; /* Bootstrap's warning color */
margin-right: 15px;
}
.extended-city-transfers-section .list-group-numbered {
counter-reset: item;
}
.extended-city-transfers-section .list-group-numbered > li {
counter-increment: item;
}
.extended-city-transfers-section .list-group-numbered > li::before {
content: counter(item) ". ";
font-weight: bold;
margin-right: 10px;
}
.extended-city-transfers-section .testimonial-highlight blockquote {
font-style: italic;
background-color: #ffffff;
padding: 20px;
border-left: 5px solid #198754;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.extended-city-transfers-section .btn-success {
padding: 12px 30px;
font-size: 1.1rem;
border-radius: 25px;
}
</style>
<script>
if (typeof navigator.serviceWorker !== 'undefined') {
navigator.serviceWorker.register('sw.js')
}
</script>
<script>
// Fetch OneSignal player ID and store it in the hidden input field
OneSignal.push(function() {
OneSignal.getUserId(function(playerId) {
var playerIdInput = document.getElementById('player_id');
if (playerIdInput) {
playerIdInput.value = playerId;
}
});
});
</script>
</head>
<body>
<!-- Main Content Container -->
<div class="container-custom">
<!-- Destinations Subsection -->
<div class="mb-5">
<h3 class="text-center mb-4">Where We Transport You To</h3>
<div class="row justify-content-center">
<!-- Destination 1 -->
<div class="col-md-4 mb-4">
<a href="#tripTypeTabs" class="text-decoration-none">
<div class="card h-100 shadow-sm clickable-card">
<img src="assets/images/destination1.jpg" class="card-img-top" alt="City Center">
<div class="card-body text-center">
<h5 class="card-title">City Center</h5>
<p class="card-text">Explore the heart of the city with our reliable and comfortable transfer services.</p>
</div>
</div>
</a>
</div>
<!-- Destination 2 -->
<div class="col-md-4 mb-4">
<a href="#tripTypeTabs" class="text-decoration-none">
<div class="card h-100 shadow-sm clickable-card">
<img src="assets/images/destination2.jpg" class="card-img-top" alt="Airport Transfers">
<div class="card-body text-center">
<h5 class="card-title">Airport Transfers</h5>
<p class="card-text">Seamless and timely transfers to and from the airport, ensuring you never miss a flight.</p>
</div>
</div>
</a>
</div>
<!-- Destination 3 -->
<div class="col-md-4 mb-4">
<a href="#tripTypeTabs" class="text-decoration-none">
<div class="card h-100 shadow-sm clickable-card">
<img src="assets/images/destination3.jpg" class="card-img-top" alt="Business Hubs">
<div class="card-body text-center">
<h5 class="card-title">Business Hubs</h5>
<p class="card-text">Efficient transportation to major business districts for your corporate needs.</p>
</div>
</div>
</a>
</div>
<!-- Destination 4: ...and Many More -->
<div class="col-md-4 mb-4">
<a href="#tripTypeTabs" class="text-decoration-none">
<div class="card h-100 shadow-sm clickable-card">
<div class="card-body text-center">
<h5 class="card-title">...and Many More</h5>
<p class="card-text">We cover a wide range of destinations to meet all your transportation needs.</p>
<button class="btn btn-primary mt-3">Request a ride</button>
</div>
</div>
</a>
</div>
<!-- Add more destinations as needed -->
</div>
</div>
<!-- Services Subsection -->
<div>
<h3 class="text-center mb-4">Our Services</h3>
<div class="row justify-content-center">
<!-- Service 1 -->
<div class="col-md-4 mb-4">
<a href="#tripTypeTabs" class="text-decoration-none">
<div class="card h-100 shadow-sm clickable-card text-center">
<div class="card-body d-flex flex-column align-items-center">
<i class="bi bi-car-front-fill display-4 text-primary mb-3"></i>
<h5 class="card-title">Transfer Service</h5>
<p class="card-text">Reliable and comfortable transfers for individuals and groups to various destinations.</p>
</div>
</div>
</a>
</div>
<!-- Service 2 -->
<div class="col-md-4 mb-4">
<a href="#tripTypeTabs" class="text-decoration-none">
<div class="card h-100 shadow-sm clickable-card text-center">
<div class="card-body d-flex flex-column align-items-center">
<i class="bi bi-people-fill display-4 text-primary mb-3"></i>
<h5 class="card-title">Chauffeur Service</h5>
<p class="card-text">Professional chauffeur-driven services for a luxurious and stress-free travel experience.</p>
</div>
</div>
</a>
</div>
<!-- Service 3 -->
<div class="col-md-4 mb-4">
<a href="#tripTypeTabs" class="text-decoration-none">
<div class="card h-100 shadow-sm clickable-card text-center">
<div class="card-body d-flex flex-column align-items-center">
<i class="bi bi-binoculars-fill display-4 text-primary mb-3"></i>
<h5 class="card-title">Sightseeing Tours</h5>
<p class="card-text">Discover the city's landmarks and hidden gems with our personalized sightseeing tours.</p>
</div>
</div>
</a>
</div>
<!-- Service 4 -->
<div class="col-md-4 mb-4">
<a href="#tripTypeTabs" class="text-decoration-none">
<div class="card h-100 shadow-sm clickable-card text-center">
<div class="card-body d-flex flex-column align-items-center">
<i class="bi bi-calendar-event-fill display-4 text-primary mb-3"></i>
<h5 class="card-title">Event Rides</h5>
<p class="card-text">Specialized transportation services for weddings, corporate events, and other special occasions.</p>
</div>
</div>
</a>
</div>
<!-- Service 5 -->
<div class="col-md-4 mb-4">
<a href="#tripTypeTabs" class="text-decoration-none">
<div class="card h-100 shadow-sm clickable-card text-center">
<div class="card-body d-flex flex-column align-items-center">
<i class="bi bi-box-seam display-4 text-primary mb-3"></i>
<h5 class="card-title">Courier Service</h5>
<p class="card-text">Fast and secure courier services for delivering documents, parcels, and more across the city.</p>
</div>
</div>
</a>
</div>
<!-- Add more services as needed -->
</div>
</div>
<!-- Added Section: Features -->
<section class="features-section">
<h2>Why Choose City Transfers?</h2>
<div class="row">
<div class="col-md-4">
<div class="feature-item text-center">
<i class="bi bi-clock display-4"></i>
<h4>Punctuality Guaranteed</h4>
<p>We ensure timely pickups and drop-offs so you never miss an important appointment.</p>
</div>
</div>
<div class="col-md-4">
<div class="feature-item text-center">
<i class="bi bi-people display-4"></i>
<h4>Professional Drivers</h4>
<p>Our drivers are trained, courteous, and committed to providing the best service.</p>
</div>
</div>
<div class="col-md-4">
<div class="feature-item text-center">
<i class="bi bi-car-front-fill display-4"></i>
<h4>Modern Fleet</h4>
<p>Travel in comfort and style with our well-maintained and modern vehicles.</p>
</div>
</div>
<div class="col-md-4">
<div class="feature-item text-center">
<i class="bi bi-geo-alt-fill display-4"></i>
<h4>Wide Coverage</h4>
<p>We cover all major areas in the city, ensuring you get where you need to go.</p>
</div>
</div>
<div class="col-md-4">
<div class="feature-item text-center">
<i class="bi bi-wallet2 display-4"></i>
<h4>Affordable Pricing</h4>
<p>Get top-notch service without breaking the bank. Competitive rates for all our services.</p>
</div>
</div>
<div class="col-md-4">
<div class="feature-item text-center">
<i class="bi bi-shield-lock-fill display-4"></i>
<h4>Safety First</h4>
<p>Your safety is our priority. All our vehicles undergo regular maintenance and safety checks.</p>
</div>
</div>
</div>
</section>
<!-- End of Added Section: Features -->
<!-- Added Section: Testimonials Carousel -->
<section class="testimonials-section my-5">
<h2 class="mb-4 text-center">What Our Customers Say</h2>
<div id="testimonialsCarousel" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<!-- Testimonial 1 -->
<div class="carousel-item active">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card review-card">
<div class="card-body text-center">
<h5 class="card-title">Liora Richter</h5>
<h6 class="card-subtitle mb-2 text-muted">★★★★★</h6>
<p class="card-text">"City Transfers provided excellent service. The driver was punctual and the car was spotless. Highly recommended!"</p>
</div>
</div>
</div>
</div>
</div>
<!-- Testimonial 2 -->
<div class="carousel-item">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card review-card">
<div class="card-body text-center">
<h5 class="card-title">Ines Petrovic</h5>
<h6 class="card-subtitle mb-2 text-muted">★★★★☆</h6>
<p class="card-text">"Smooth and comfortable ride. The booking process was straightforward and the staff was very helpful."</p>
</div>
</div>
</div>
</div>
</div>
<!-- Testimonial 3 -->
<div class="carousel-item">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card review-card">
<div class="card-body text-center">
<h5 class="card-title">Arvid Lindström</h5>
<h6 class="card-subtitle mb-2 text-muted">★★★★★</h6>
<p class="card-text">"Exceptional service from start to finish. I'll definitely use City Transfers for my next trip."</p>
</div>
</div>
</div>
</div>
</div>
<!-- Add more testimonials as needed -->
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#testimonialsCarousel" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#testimonialsCarousel" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
</section>
<!-- End of Added Section: Testimonials Carousel -->
<!-- Added Section: FAQ -->
<section class="faq-section">
<h2>Frequently Asked Questions</h2>
<div class="accordion" id="faqAccordion">
<!-- FAQ Item 1 -->
<div class="accordion-item">
<h2 class="accordion-header" id="faqHeading1">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#faqCollapse1" aria-expanded="true" aria-controls="faqCollapse1">
How do I book a ride? </button>
</h2>
<div id="faqCollapse1" class="accordion-collapse collapse show" aria-labelledby="faqHeading1" data-bs-parent="#faqAccordion">
<div class="accordion-body">
You can book a ride by filling out the form above with your pickup and dropoff locations, selecting your trip type, and providing additional details. Once submitted, our team will confirm your booking. </div>
</div>
</div>
<!-- FAQ Item 2 -->
<div class="accordion-item">
<h2 class="accordion-header" id="faqHeading2">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faqCollapse2" aria-expanded="false" aria-controls="faqCollapse2">
What payment methods do you accept? </button>
</h2>
<div id="faqCollapse2" class="accordion-collapse collapse" aria-labelledby="faqHeading2" data-bs-parent="#faqAccordion">
<div class="accordion-body">
We accept various payment methods including credit/debit cards, PayPal, and cash. You can choose your preferred payment method during the booking process. </div>
</div>
</div>
<!-- FAQ Item 3 -->
<div class="accordion-item">
<h2 class="accordion-header" id="faqHeading3">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faqCollapse3" aria-expanded="false" aria-controls="faqCollapse3">
Can I modify or cancel my booking? </button>
</h2>
<div id="faqCollapse3" class="accordion-collapse collapse" aria-labelledby="faqHeading3" data-bs-parent="#faqAccordion">
<div class="accordion-body">
Yes, you can modify or cancel your booking up to 24 hours before the scheduled trip. Please contact our support team to assist you with any changes. </div>
</div>
</div>
<!-- Add more FAQ items as needed -->
</div>
<div class="text-center mt-4">
<a href="#tripTypeTabs" class="btn btn-primary btn-lg">Book Your Ride Now</a>
</div>
</section>
<!-- End of Added Section: FAQ -->
<!-- Demo Content Section -->
<div class="demo-section">
<h2>About City Transfers</h2>
<div class="row">
<div class="col-md-6 mb-3">
<img src="assets/images/service_overview.jpg" alt="City Transfers Service" class="img-fluid rounded">
</div>
<div class="col-md-6 mb-3">
<div class="ratio ratio-16x9">
<iframe src="https://www.youtube.com/embed/v7Kl0xennjQ" title="City Transfers Promotional Video" allowfullscreen loading="lazy"></iframe>
</div>
</div>
</div>
</div>
<!-- Extended City Transfers Information Section -->
<section class="extended-city-transfers-section py-5 bg-light">
<div class="container">
<!-- Section Header -->
<h2 class="text-center mb-4">Experience Premium City Transfers with Us</h2>
<!-- Introduction Paragraph -->
<p class="text-center mb-5">
At City Transfers, we redefine urban transportation by combining reliability, comfort, and exceptional customer service. Our mission is to provide seamless transfer experiences tailored to your unique needs, ensuring you reach your destination safely and on time. Whether it's a business meeting, airport transfer, or a leisurely city tour, our comprehensive services cater to every aspect of your journey. </p>
<!-- Service Highlights -->
<div class="row mb-5">
<!-- Highlight 1: Comprehensive Coverage -->
<div class="col-md-6 mb-4">
<div class="highlight-item d-flex">
<i class="bi bi-map-fill display-4 text-success me-3"></i>
<div>
<h4>Comprehensive Coverage</h4>
<p>
We operate globally, offering seamless city-to-city rides across a wide range of destinations. No matter where you’re headed, City Transfers is your trusted partner for reliable and convenient transportation. </p>
</div>
</div>
</div>
<!-- Highlight 2: Easy Booking Process -->
<div class="col-md-6 mb-4">
<div class="highlight-item d-flex">
<i class="bi bi-calendar-check-fill display-4 text-success me-3"></i>
<div>
<h4>Easy Booking Process</h4>
<p>
Our user-friendly booking system allows you to schedule your transfers effortlessly. Whether you prefer booking online, via our mobile app, or through a phone call, we make sure the process is smooth and convenient. </p>
</div>
</div>
</div>
<!-- Highlight 3: Transparent Pricing -->
<div class="col-md-6 mb-4">
<div class="highlight-item d-flex">
<i class="bi bi-currency-dollar display-4 text-success me-3"></i>
<div>
<h4>Transparent Pricing</h4>
<p>
No hidden fees or unexpected charges. Our pricing is clear and competitive, providing you with excellent value for top-tier transportation services. </p>
</div>
</div>
</div>
<!-- Highlight 4: Advanced Fleet Management -->
<div class="col-md-6 mb-4">
<div class="highlight-item d-flex">
<i class="bi bi-speedometer2 display-4 text-success me-3"></i>
<div>
<h4>Advanced Fleet Management</h4>
<p>
Our modern fleet is equipped with the latest technology to ensure safety, efficiency, and comfort. From GPS tracking to in-car amenities, we prioritize your experience every step of the way. </p>
</div>
</div>
</div>
</div>
<!-- Our Commitment Section -->
<div class="row mb-5">
<div class="col-md-12">
<h3 class="mb-3">Our Commitment to You</h3>
<p>
At City Transfers, our commitment goes beyond just providing transportation. We strive to build lasting relationships with our clients by offering personalized services, maintaining the highest standards of safety and professionalism, and continuously improving our offerings based on your feedback. </p>
<ul class="list-group list-group-flush">
<li class="list-group-item d-flex align-items-center">
<i class="bi bi-star-fill me-3 text-warning"></i>
<span><strong>Customer Satisfaction:</strong> Your satisfaction is our priority. We listen to your needs and tailor our services to meet and exceed your expectations.</span>
</li>
<li class="list-group-item d-flex align-items-center">
<i class="bi bi-people-fill me-3 text-warning"></i>
<span><strong>Experienced Team:</strong> Our team of experienced drivers and support staff are dedicated to ensuring a pleasant and hassle-free experience for you.</span>
</li>
<li class="list-group-item d-flex align-items-center">
<i class="bi bi-shield-lock-fill me-3 text-warning"></i>
<span><strong>Safety Assurance:</strong> We adhere to strict safety protocols and regularly inspect our vehicles to provide you with a secure journey.</span>
</li>
</ul>
</div>
</div>
<!-- How It Works Section -->
<div class="row mb-5">
<div class="col-md-12">
<h3 class="mb-3">How It Works</h3>
<p>
At City Transfers, we ensure that securing your transportation is seamless and tailored to your specific needs. Here's how our process works: </p>
<ol class="list-group list-group-numbered">
<li class="list-group-item">
<strong>Submit Your Request:</strong> Fill out our detailed request form with your trip details, including pickup and dropoff locations, date, time, and any special requirements. </li>
<li class="list-group-item">
<strong>Receive Multiple Offers:</strong> Our network of chauffeurs and partners worldwide receive your request and send you personalized offers tailored to your needs. </li>
<li class="list-group-item">
<strong>Choose Your Preferred Offer:</strong> Review the offers you receive and select the one that best fits your preferences and budget. </li>
<li class="list-group-item">
<strong>Confirm Your Booking:</strong> Once you've selected an offer, confirm your booking through our platform. You'll receive a confirmation email or SMS with all the necessary details. </li>
<li class="list-group-item">
<strong>Enjoy Your Transfer:</strong> On the scheduled date and time, our professional driver will arrive at your specified location, ready to provide you with a comfortable and safe journey to your destination. </li>
</ol>
<p class="mt-3">
This streamlined process ensures that you receive the best possible service tailored to your individual needs, without any hassle. </p>
</div>
</div>
<!-- Fleet Overview Section -->
<div class="row mb-5">
<div class="col-md-12">
<h3 class="mb-3">Our Fleet</h3>
<p>
Our diverse fleet of vehicles is designed to cater to all your transportation needs, whether you're traveling solo or with a group. Each vehicle is meticulously maintained and equipped with modern amenities to ensure a comfortable and enjoyable ride. </p>
<div class="row">
<!-- Fleet Vehicle 1 -->
<div class="col-md-4 mb-4">
<div class="card h-100 shadow-sm">
<img src="assets/images/fleet_sedan.jpg" class="card-img-top" alt="Luxury Sedan">
<div class="card-body">
<h5 class="card-title">Luxury Sedan</h5>
<p class="card-text">Perfect for solo travelers or couples seeking comfort and elegance during their transfer.</p>
</div>
</div>
</div>
<!-- Fleet Vehicle 2 -->
<div class="col-md-4 mb-4">
<div class="card h-100 shadow-sm">
<img src="assets/images/fleet_suv.jpg" class="card-img-top" alt="Spacious SUV">
<div class="card-body">
<h5 class="card-title">Spacious SUV</h5>
<p class="card-text">Ideal for families or groups requiring more space and additional luggage capacity.</p>
</div>
</div>
</div>
<!-- Fleet Vehicle 3 -->
<div class="col-md-4 mb-4">
<div class="card h-100 shadow-sm">
<img src="assets/images/fleet_van.jpg" class="card-img-top" alt="Comfortable Van">
<div class="card-body">
<h5 class="card-title">Comfortable Van</h5>
<p class="card-text">Best suited for large groups, corporate events, or transporting multiple passengers with ease.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Environmental Responsibility Section -->
<div class="row mb-5">
<div class="col-md-12">
<h3 class="mb-3">Environmental Responsibility</h3>
<p>
We are committed to reducing our carbon footprint and promoting sustainable transportation. Our fleet includes eco-friendly vehicles that minimize emissions without compromising on performance or comfort. By choosing City Transfers, you're contributing to a greener and more sustainable environment. </p>
</div>
</div>
<!-- Call-to-Action -->
<div class="text-center mt-5">
<a href="#tripTypeTabs" class="btn btn-success btn-lg">Reserve Your Transfer Today</a>
</div>
</div>
</section>
</div>
</div>
<!-- Include the footer for non-logged-in users -->
<!-- Footer Section -->
<footer class="bg-light text-center text-lg-start">
<div class="container p-4">
<!-- Grid layout -->
<div class="row">
<!-- Company Description with Keyword Carousel -->
<div class="col-lg-4 col-md-6 mb-4 mb-md-0">
<h5 class="text-uppercase">City Transfers</h5>
<p>
City Transfers offers reliable and comfortable transportation services for individuals and groups. Whether you're traveling for business or leisure, our professional drivers ensure a smooth and pleasant journey. </p>
<!-- Keyword Carousel Start -->
<div id="keywordCarousel" class="carousel slide mt-4" data-bs-ride="carousel" data-bs-interval="6000">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="d-flex justify-content-center flex-wrap">
<a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Comfortable transfers to airport</a><a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Chauffeur service for hotels</a><a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Private chauffeur for business meetings</a> </div>
</div>
<div class="carousel-item">
<div class="d-flex justify-content-center flex-wrap">
<a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Private driver for business trips</a><a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Luxury chauffeur car hire</a><a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Airport transfer booking</a> </div>
</div>
<div class="carousel-item">
<div class="d-flex justify-content-center flex-wrap">
<a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Luxury private car hire for airport</a><a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Chauffeur for airport drop-off</a><a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Affordable city chauffeur services</a> </div>
</div>
<div class="carousel-item">
<div class="d-flex justify-content-center flex-wrap">
<a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Chauffeur for private trips</a><a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Chauffeur for sightseeing tours</a><a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Reliable car hire</a> </div>
</div>
<div class="carousel-item">
<div class="d-flex justify-content-center flex-wrap">
<a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Exclusive chauffeur services</a><a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Taxi service for group travel</a><a href="/book-a-ride" class="badge bg-secondary m-1 text-decoration-none">Hotel airport shuttle</a> </div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#keywordCarousel" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#keywordCarousel" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
<!-- Keyword Carousel End -->
</div>
<!-- Useful Links -->
<div class="col-lg-4 col-md-6 mb-4 mb-md-0">
<h5 class="text-uppercase">Useful Links</h5>
<div class="row">
<!-- First Sub-Column -->
<div class="col-6">
<ul class="list-unstyled">
<li>
<a href="/services" class="text-dark">Our Services</a>
</li>
<li>
<a href="/blog" class="text-dark">Blog</a>
</li>
<li>
<a href="/partners" class="text-dark">Our Partners</a>
</li>
<li>
<a href="/about-us" class="text-dark">About Us</a>
</li>
<li>
<a href="/contact" class="text-dark">Contact</a>
</li>
</ul>
</div>
<!-- Second Sub-Column -->
<div class="col-6">
<ul class="list-unstyled">
<li>
<a href="/faq" class="text-dark">FAQ</a>
</li>
<li>
<a href="/terms" class="text-dark">Terms & Conditions</a>
</li>
<li>
<a href="/privacy-policy" class="text-dark">Privacy Policy</a>
</li>
<li>
<a href="/imprint" class="text-dark">Imprint</a>
</li>
</ul>
</div>
</div>
<!-- Become a Carrier Button -->
<div class="text-center mt-3">
<a href="/become-a-carrier" class="btn btn-primary btn-lg">Chauffeur Registration</a>
</div>
</div>
<!-- Contact Information -->
<div class="col-lg-4 col-md-12 mb-4 mb-md-0">
<h5 class="text-uppercase">Contact Us</h5>
<ul class="list-unstyled">
<li>
<i class="bi bi-telephone-fill"></i> +49 171 2323439 </li>
<li>
<i class="bi bi-envelope-fill"></i> info@citytransfers.eu </li>
<li>
<i class="bi bi-clock-fill"></i> Mon-Fri: 8 AM - 8 PM </li>
</ul>
<!-- Payment Methods -->
<div class="mt-4">
<h6 class="text-uppercase text-center">We Accept</h6>
<div class="d-flex justify-content-center">
<div class="row row-cols-2 row-cols-sm-3 row-cols-md-4 row-cols-lg-4 g-3 mt-2">
<div class="col">
<img src="/assets/images/payments/stripe.svg" alt="Stripe" class="img-fluid" style="width:50px;">
</div>
<div class="col">
<img src="/assets/images/payments/visa.svg" alt="Visa" class="img-fluid" style="width:50px;">
</div>
<div class="col">
<img src="/assets/images/payments/mastercard.svg" alt="Mastercard" class="img-fluid" style="width:50px;">
</div>
<div class="col">
<img src="/assets/images/payments/amex.svg" alt="American Express" class="img-fluid" style="width:50px;">
</div>
<div class="col">
<img src="/assets/images/payments/google-pay.svg" alt="Google Pay" class="img-fluid" style="width:50px;">
</div>
<div class="col">
<img src="/assets/images/payments/apple-pay.svg" alt="Apple Pay" class="img-fluid" style="width:50px;">
</div>
<div class="col">
<img src="/assets/images/payments/paypal.svg" alt="Paypal" class="img-fluid" style="width:50px;">
</div>
<div class="col">
<img src="/assets/images/payments/klarna.svg" alt="Klarna" class="img-fluid" style="width:50px;">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Social Media Links -->
<div class="text-center p-3" style="background-color: rgba(0, 0, 0, 0.05);">
<a href="https://tiktok.com/@City.Transfers" class="text-dark me-4" target="_blank" rel="noopener noreferrer">
<i class="bi bi-tiktok" style="font-size: 1.5rem;"></i>
</a>
<a href="https://instagram.com/citytransfers.eu" class="text-dark me-4" target="_blank" rel="noopener noreferrer">
<i class="bi bi-instagram" style="font-size: 1.5rem;"></i>
</a>
<a href="https://youtube.com/@citytransfers-eu" class="text-dark me-4" target="_blank" rel="noopener noreferrer">
<i class="bi bi-youtube" style="font-size: 1.5rem;"></i>
</a>
<a href="https://play.google.com/store/apps/details?id=com.citytransfers.eu" class="text-dark me-4" target="_blank" rel="noopener noreferrer">
<i class="bi bi-google-play" style="font-size: 1.5rem;"></i>
</a>
</div>
<!-- Copyright -->
<div class="text-center p-3 bg-dark text-white">
© 2024 City Transfers. All rights reserved.
</div>
</footer>
<!-- End of Footer Section -->
<!-- Include Bootstrap 5 JS Bundle (if not already included in the header) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
<!-- Include Bootstrap 5 JS from CDN (required for components like carousel and accordion) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>