-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
494 lines (453 loc) · 32.7 KB
/
index.html
File metadata and controls
494 lines (453 loc) · 32.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description"
content="Looking for a safe and friendly personal driver in Lombok? Giandra Transport offers reliable airport transfers and custom day tours. Book your adventure today!">
<title>Lombok Personal Driver & Tour Guide | Giandra Transport</title>
<link href="./output.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', sans-serif;
}
.hero-bg {
background-image: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('./webp/tandya-rachmat-p0CvlMLjPW8-unsplash.webp');
background-size: cover;
background-position: center;
}
.fade-in-element {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.fade-in-element.is-visible {
opacity: 1;
transform: translateY(0);
}
header.scrolled {
background-color: rgba(255, 255, 255, 0.85);
}
.lang-switcher button {
padding: 4px 8px;
border-radius: 9999px;
font-weight: 500;
transition: all 0.2s;
}
.lang-switcher button.active {
background-color: #0d9488;
color: white;
}
/* --- STYLES FOR CONTINUOUS MARQUEE SCROLL --- */
.carousel-container {
overflow: hidden;
-webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
}
.carousel-track {
display: flex;
animation: marquee 15s linear infinite;
}
.carousel-container:hover .carousel-track {
animation-play-state: paused;
}
.carousel-slide {
flex-shrink: 0;
width: 50%;
padding: 0 8px;
}
@media (min-width: 768px) {
.carousel-slide {
width: 25%;
}
}
@keyframes marquee {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
</style>
</head>
<body class="bg-gray-50 text-gray-800">
<header id="main-header" class="bg-white shadow-md sticky top-0 z-50 transition-colors duration-300">
<nav class="container mx-auto px-6 py-4 flex justify-between items-center">
<a href="#" class="text-2xl font-bold text-teal-700" data-translate-key="brandName">Giandra Transport</a>
<div class="hidden md:flex space-x-6 items-center">
<a href="#services" class="text-gray-600 hover:text-teal-600 transition duration-300"
data-translate-key="navServices">Services</a>
<a href="#destinations" class="text-gray-600 hover:text-teal-600 transition duration-300"
data-translate-key="navDestinations">Destinations</a>
<a href="#gallery" class="text-gray-600 hover:text-teal-600 transition duration-300"
data-translate-key="navGallery">Gallery</a>
<!-- <a href="#testimonials" class="text-gray-600 hover:text-teal-600 transition duration-300" data-translate-key="navTestimonials">Testimonials</a> -->
<a href="#contact"
class="bg-teal-600 text-white px-4 py-2 rounded-full hover:bg-teal-700 transition duration-300 shadow"
data-translate-key="navBookNow">Book Now</a>
<div class="lang-switcher flex items-center bg-gray-200 rounded-full p-1 text-sm">
<button id="lang-en-desktop" class="active">EN</button>
<button id="lang-id-desktop">ID</button>
</div>
</div>
<button id="mobile-menu-button" class="md:hidden">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7">
</path>
</svg>
</button>
</nav>
<div id="mobile-menu" class="hidden md:hidden px-6 pt-2 pb-4 border-t border-gray-200">
<a href="#services" class="mobile-menu-link block py-2 text-gray-600 hover:text-teal-600"
data-translate-key="navServices">Services</a>
<a href="#destinations" class="mobile-menu-link block py-2 text-gray-600 hover:text-teal-600"
data-translate-key="navDestinations">Destinations</a>
<a href="#gallery" class="mobile-menu-link block py-2 text-gray-600 hover:text-teal-600"
data-translate-key="navGallery">Gallery</a>
<!-- <a href="#testimonials" class="mobile-menu-link block py-2 text-gray-600 hover:text-teal-600" data-translate-key="navTestimonials">Testimonials</a> -->
<a href="#contact"
class="mobile-menu-link block mt-2 bg-teal-600 text-white px-4 py-2 rounded-full hover:bg-teal-700 text-center"
data-translate-key="navBookNow">Book Now</a>
<div
class="lang-switcher flex items-center justify-center bg-gray-200 rounded-full p-1 text-sm mt-4 max-w-xs mx-auto">
<button id="lang-en-mobile" class="active w-full">EN</button>
<button id="lang-id-mobile" class="w-full">ID</button>
</div>
</div>
</header>
<main>
<section class="hero-bg text-white">
<div class="container mx-auto px-6 py-32 text-center">
<h1 class="text-4xl md:text-6xl font-extrabold leading-tight mb-4" data-translate-key="heroTitle">
Explore Lombok With Your Personal Guide</h1>
<p class="text-lg md:text-xl mb-8 max-w-3xl mx-auto" data-translate-key="heroSubtitle">Safe, reliable,
and friendly transport for your unforgettable island adventure.</p>
<a id="hero-whatsapp-button" href="#" target="_blank"
class="bg-amber-500 text-gray-900 font-bold px-8 py-4 rounded-full text-lg hover:bg-amber-600 transition duration-300 shadow-lg"
data-translate-key="heroCta">Plan Your Trip Today</a>
</div>
</section>
<section id="about" class="py-20 bg-white">
<div class="container mx-auto px-6 flex flex-col md:flex-row items-center gap-12">
<div class="md:w-1/3 text-center fade-in-element">
<div id="profile-photo-container" class="relative mx-auto w-64 h-64">
<img src="./webp/IMG-20250720-WA0022.webp" alt="Your guide in Lombok"
class="profile-photo absolute inset-0 w-full h-full object-cover rounded-full shadow-xl transition-opacity duration-1000 ease-in-out">
<img src="./webp/IMG-20250720-WA0021.webp" alt="Your guide Rakhmat in Lombok"
class="profile-photo absolute inset-0 w-full h-full object-cover rounded-full shadow-xl transition-opacity duration-1000 ease-in-out opacity-0">
</div>
</div>
<div class="md:w-2/3 fade-in-element">
<h2 class="text-3xl font-bold text-teal-800 mb-4" data-translate-key="aboutTitle">Meet Your Driver,
Rakhmat</h2>
<p class="text-gray-600 mb-4 leading-relaxed" data-translate-key="aboutP1">
Hello! With over 7 years of experience driving across every corner of Lombok, I'm not just a
driver; I'm your local guide. I find great joy in sharing the beauty and culture of my island
home with visitors from all over the world.
</p>
<p class="text-gray-600 leading-relaxed" data-translate-key="aboutP2">
My priority is your safety, comfort, and having an amazing time. Whether you need a simple
airport pickup or want to create a custom multi-day tour, I'm here to make your journey seamless
and memorable.
</p>
</div>
</div>
</section>
<section id="services" class="py-20">
<div class="container mx-auto px-6 text-center">
<h2 class="text-3xl font-bold mb-2 fade-in-element" data-translate-key="servicesTitle">How I Can Help
You</h2>
<p class="text-gray-600 max-w-2xl mx-auto mb-12 fade-in-element" data-translate-key="servicesSubtitle">
Flexible services tailored to your travel needs.</p>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
<div class="bg-white p-8 rounded-lg shadow-lg text-center fade-in-element">
<div
class="bg-teal-100 text-teal-700 rounded-full w-16 h-16 flex items-center justify-center mx-auto mb-6">
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" />
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M15 11a3 3 0 11-6 0 3 3 0 016 0z" />
</svg>
</div>
<h3 class="text-xl font-bold mb-2" data-translate-key="service1Title">Airport Transfers</h3>
<p class="text-gray-600" data-translate-key="service1Desc">Stress-free pickups and drop-offs
from Lombok International Airport (LOP).</p>
</div>
<div class="bg-white p-8 rounded-lg shadow-lg text-center fade-in-element">
<div
class="bg-teal-100 text-teal-700 rounded-full w-16 h-16 flex items-center justify-center mx-auto mb-6">
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
</div>
<h3 class="text-xl font-bold mb-2" data-translate-key="service2Title">Full-Day Tours</h3>
<p class="text-gray-600" data-translate-key="service2Desc">Explore Lombok's best sights for a
full day (8-10 hours) with a flexible itinerary.</p>
</div>
<div class="bg-white p-8 rounded-lg shadow-lg text-center fade-in-element">
<div
class="bg-teal-100 text-teal-700 rounded-full w-16 h-16 flex items-center justify-center mx-auto mb-6">
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
</svg>
</div>
<h3 class="text-xl font-bold mb-2" data-translate-key="service3Title">Multi-Day Hire</h3>
<p class="text-gray-600" data-translate-key="service3Desc">Your personal driver for several
days, giving you ultimate freedom to explore.</p>
</div>
<div class="bg-white p-8 rounded-lg shadow-lg text-center fade-in-element">
<div
class="bg-teal-100 text-teal-700 rounded-full w-16 h-16 flex items-center justify-center mx-auto mb-6">
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 20l-5.447-2.724A1 1 0 013 16.382V5.618a1 1 0 011.447-.894L9 7m0 13l6-3m-6 3V7m6 10l4.553 2.276A1 1 0 0021 18.382V7.618a1 1 0 00-.553-.894L15 4m-6 3l6-3m0 13l-6-3" />
</svg>
</div>
<h3 class="text-xl font-bold mb-2" data-translate-key="service4Title">Custom Trips</h3>
<p class="text-gray-600" data-translate-key="service4Desc">Have a special request? Let's build
the perfect Lombok itinerary together.</p>
</div>
</div>
</div>
</section>
<section id="destinations" class="py-20 bg-white">
<div class="container mx-auto px-6 text-center">
<h2 class="text-3xl font-bold mb-2 fade-in-element" data-translate-key="destinationsTitle">Popular
Destinations</h2>
<p class="text-gray-600 max-w-2xl mx-auto mb-12 fade-in-element"
data-translate-key="destinationsSubtitle">Discover the magic of Lombok's most iconic locations.</p>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<div class="grid gap-4 fade-in-element">
<div class="relative overflow-hidden rounded-lg shadow-md aspect-[3/4]">
<img class="absolute inset-0 w-full h-full object-cover"
src="./webp/david-wollschlegel-dRi6xP2ZPBk-unsplash.webp"
alt="Mount Rinjani crater lake">
<p class="absolute bottom-0 w-full p-3 text-left text-sm font-bold text-white bg-black/50"
data-translate-key="destRinjani">Mount Rinjani</p>
</div>
<div class="relative overflow-hidden rounded-lg shadow-md aspect-[3/4]">
<img class="absolute inset-0 w-full h-full object-cover"
src="./webp/remi-whelan-Z8wSFxW6f1w-unsplash.webp"
alt="Gili Trawangan beach with boats">
<p class="absolute bottom-0 w-full p-3 text-left text-sm font-bold text-white bg-black/50"
data-translate-key="destGiliT">Gili Trawangan</p>
</div>
</div>
<div class="grid gap-4 fade-in-element">
<div class="relative overflow-hidden rounded-lg shadow-md aspect-[3/4]">
<img class="absolute inset-0 w-full h-full object-cover"
src="./webp/mahesh-mathews-EGLBVO4SEfk-unsplash.webp"
alt="Kuta beach Lombok with hills">
<p class="absolute bottom-0 w-full p-3 text-left text-sm font-bold text-white bg-black/50"
data-translate-key="destKuta">Kuta, Lombok</p>
</div>
<div class="relative overflow-hidden rounded-lg shadow-md aspect-[3/4]">
<img class="absolute inset-0 w-full h-full object-cover" src="./webp/pink beach.webp"
alt="Pink Beach sand in Lombok">
<p class="absolute bottom-0 w-full p-3 text-left text-sm font-bold text-white bg-black/50"
data-translate-key="destPink">Pink Beach</p>
</div>
</div>
<div class="grid gap-4 fade-in-element">
<div class="relative overflow-hidden rounded-lg shadow-md aspect-[3/4]">
<img class="absolute inset-0 w-full h-full object-cover" src="./webp/senggigi.webp"
alt="Senggigi beach sunset">
<p class="absolute bottom-0 w-full p-3 text-left text-sm font-bold text-white bg-black/50"
data-translate-key="destSenggigi">Senggigi</p>
</div>
<div class="relative overflow-hidden rounded-lg shadow-md aspect-[3/4]">
<img class="absolute inset-0 w-full h-full object-cover" src="./webp/tiu kelep.webp"
alt="Tiu Kelep waterfall in lush forest">
<p class="absolute bottom-0 w-full p-3 text-left text-sm font-bold text-white bg-black/50"
data-translate-key="destTiuKelep">Tiu Kelep Waterfall</p>
</div>
</div>
<div class="grid gap-4 fade-in-element">
<div class="relative overflow-hidden rounded-lg shadow-md aspect-[3/4]">
<img class="absolute inset-0 w-full h-full object-cover" src="./webp/merese.webp"
alt="Merese hill viewpoint">
<p class="absolute bottom-0 w-full p-3 text-left text-sm font-bold text-white bg-black/50"
data-translate-key="destMerese">Merese Hill</p>
</div>
<div class="relative overflow-hidden rounded-lg shadow-md aspect-[3/4]">
<img class="absolute inset-0 w-full h-full object-cover" src="./webp/sembalun.webp"
alt="Sembalun valley rice fields">
<p class="absolute bottom-0 w-full p-3 text-left text-sm font-bold text-white bg-black/50"
data-translate-key="destSembalun">Sembalun Valley</p>
</div>
</div>
</div>
</div>
</section>
<section id="gallery" class="py-20">
<div class="container mx-auto px-6">
<div class="text-center">
<h2 class="text-3xl font-bold mb-2 fade-in-element" data-translate-key="galleryTitle">Happy Guests,
Happy Memories</h2>
<p class="text-gray-600 max-w-2xl mx-auto mb-12 fade-in-element"
data-translate-key="gallerySubtitle">Moments captured with wonderful travelers from around the
globe.</p>
</div>
<div class="relative fade-in-element max-w-5xl mx-auto carousel-container">
<div id="carousel-track" class="carousel-track">
<!-- JS creates and duplicates images here -->
</div>
</div>
</div>
</section>
<!-- <section id="testimonials" class="py-20 bg-white"> ... </section> -->
<section id="contact" class="bg-teal-700 text-white">
<div class="container mx-auto px-6 py-20 text-center">
<h2 class="text-4xl font-extrabold mb-4" data-translate-key="contactTitle">Ready for Your Lombok
Adventure?</h2>
<p class="text-lg md:text-xl mb-8 max-w-3xl mx-auto text-teal-100" data-translate-key="contactSubtitle">
Contact me today to check availability and get a personalized quote. <br>The fastest way to reach me
is through WhatsApp.</p>
<a id="whatsapp-button" href="#" target="_blank"
class="inline-flex items-center gap-3 bg-white text-teal-800 font-bold px-8 py-4 rounded-full text-lg hover:bg-gray-200 transition duration-300 shadow-lg">
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" viewBox="0 0 24 24" fill="currentColor">
<path
d="M.057 24l1.687-6.163c-1.041-1.804-1.588-3.849-1.587-5.946.003-6.556 5.338-11.891 11.893-11.891 3.181.001 6.167 1.24 8.413 3.488 2.245 2.248 3.481 5.236 3.48 8.414-.003 6.557-5.338 11.892-11.894 11.892-1.99-.001-3.951-.5-5.688-1.448l-6.305 1.654zm6.597-3.807c1.676.995 3.276 1.591 5.392 1.592 5.448 0 9.886-4.434 9.889-9.885.002-5.462-4.415-9.89-9.881-9.892-5.452 0-9.887 4.434-9.889 9.886-.001 2.269.655 4.387 1.876 6.167l-1.057 3.875 3.992-1.052z" />
</svg>
<span data-translate-key="contactCta">Chat on WhatsApp</span>
</a>
<p class="mt-6 text-teal-200"><span data-translate-key="contactOrEmail">Or email me at:</span> <a
href="mailto:rakhmatzaini@gmail.com"
class="underline hover:text-white">rakhmatzaini@gmail.com</a></p>
</div>
</section>
</main>
<footer class="bg-gray-800 text-white">
<div class="container mx-auto px-6 py-8 text-center">
<p data-translate-key="footerText">© 2018 Rakhmat - Personal Driver Lombok. All Rights Reserved.</p>
</div>
</footer>
<script>
document.addEventListener('DOMContentLoaded', function () {
const photoContainer = document.getElementById('profile-photo-container');
if (photoContainer) {
const photos = photoContainer.querySelectorAll('.profile-photo');
if (photos.length > 1) {
let currentPhotoIndex = 0;
setInterval(() => {
photos[currentPhotoIndex].classList.add('opacity-0');
currentPhotoIndex = (currentPhotoIndex + 1) % photos.length;
photos[currentPhotoIndex].classList.remove('opacity-0');
}, 5000);
}
}
const translations = {
en: {
brandName: "Giandra Transport", navServices: "Services", navDestinations: "Destinations", navGallery: "Gallery", navTestimonials: "Testimonials", navBookNow: "Book Now",
heroTitle: "Explore Lombok With Your Personal Guide", heroSubtitle: "Safe, reliable, and friendly transport for your unforgettable island adventure.",
heroCta: "Plan Your Trip Today", aboutTitle: "Meet Your Driver, Rakhmat",
aboutP1: "Hello! With over 7 years of experience driving across every corner of Lombok, I'm not just a driver; I'm your local guide. I find great joy in sharing the beauty and culture of my island home with visitors from all over the world.",
aboutP2: "My priority is your safety, comfort, and having an amazing time. Whether you need a simple airport pickup or want to create a custom multi-day tour, I'm here to make your journey seamless and memorable.",
servicesTitle: "How I Can Help You", servicesSubtitle: "Flexible services tailored to your travel needs.", service1Title: "Airport Transfers",
service1Desc: "Stress-free pickups and drop-offs from Lombok International Airport (LOP).",
service2Title: "Full-Day Tours", service2Desc: "Explore Lombok's best sights for a full day (8-10 hours) with a flexible itinerary.",
service3Title: "Multi-Day Hire", service3Desc: "Your personal driver for several days, giving you ultimate freedom to explore.",
service4Title: "Custom Trips", service4Desc: "Have a special request? Let's build the perfect Lombok itinerary together.",
destinationsTitle: "Popular Destinations", destinationsSubtitle: "Discover the magic of Lombok's most iconic locations.",
galleryTitle: "Happy Guests, Happy Memories", gallerySubtitle: "Moments captured with wonderful travelers from around the globe.", testimonialsTitle: "What My Guests Say",
testimonial1: `"Testimony later"`, testimonial2: `"Testimony later"`, testimonial3: `"Testimony later"`, contactTitle: "Ready for Your Lombok Adventure?",
contactSubtitle: "Contact me today to check availability and get a personalized quote. <br>The fastest way to reach me is through WhatsApp.",
contactCta: "Chat on WhatsApp", contactOrEmail: "Or email me at:", footerText: "© 2018 Rakhmat - Personal Driver Lombok. All Rights Reserved.",
whatsappMessage: "Hello! I'm interested in your driver services in Lombok.",
destRinjani: "Mount Rinjani", destGiliT: "Gili Trawangan", destKuta: "Kuta, Lombok", destPink: "Pink Beach",
destSenggigi: "Senggigi Beach", destTiuKelep: "Tiu Kelep", destMerese: "Merese Hill", destSembalun: "Sembalun Valley"
},
id: {
brandName: "Giandra Transport", navServices: "Layanan", navDestinations: "Destinasi", navGallery: "Galeri", navTestimonials: "Testimoni", navBookNow: "Pesan Sekarang",
heroTitle: "Jelajahi Pesona Lombok Bersama Pemandu Lokal", heroSubtitle: "Perjalanan aman, nyaman, dan berkesan untuk petualangan tak terlupakan di pulau impian.",
heroCta: "Pesan Sekarang", aboutTitle: "Kenali Partner Perjalanan Anda, Rakhmat",
aboutP1: "Salam kenal, saya Rakhmat. Dengan pengalaman lebih dari 7 tahun, saya bukan sekadar sopir, tapi teman perjalanan Anda di Lombok. Kebahagiaan terbesar saya adalah berbagi keindahan dan budaya pulau ini kepada para wisatawan.",
aboutP2: "Keamanan, kenyamanan, dan kepuasan Anda adalah prioritas utama. Baik untuk penjemputan bandara maupun paket tur beberapa hari, saya siap memastikan perjalanan Anda lancar dan penuh kenangan indah.",
servicesTitle: "Pilihan Layanan", servicesSubtitle: "Kami menyediakan layanan fleksibel yang dirancang khusus untuk kebutuhan perjalanan Anda.", service1Title: "Antar-Jemput Bandara",
service1Desc: "Layanan antar-jemput praktis dan nyaman dari/ke Bandara Internasional Lombok (LOP).", service2Title: "Tur Sehari Penuh",
service2Desc: "Kelilingi destinasi terbaik Lombok selama satu hari penuh (8-10 jam) dengan rute fleksibel.", service3Title: "Sewa Mobil Harian + Sopir",
service3Desc: "Nikmati kebebasan berkeliling Lombok dengan sopir pribadi selama beberapa hari.", service4Title: "Rencanakan Tur Impian Anda",
service4Desc: "Punya rute atau permintaan khusus? Mari kita wujudkan bersama rencana perjalanan ideal Anda.", destinationsTitle: "Destinasi Favorit",
destinationsSubtitle: "Temukan keajaiban di berbagai lokasi paling ikonik dan terindah di Lombok.", galleryTitle: "Kenangan Tak Terlupakan",
gallerySubtitle: "Momen berharga bersama para tamu dari berbagai belahan dunia.", testimonialsTitle: "Kata Mereka Tentang Kami", testimonial1: `"Testimoni akan ditambahkan kemudian"`,
testimonial2: `"Testimoni akan ditambahkan kemudian"`, testimonial3: `"Testimoni akan ditambahkan kemudian"`, contactTitle: "Siap Memulai Petualangan di Lombok?",
contactSubtitle: "Segera hubungi saya untuk informasi ketersediaan dan penawaran harga. <br>Cara tercepat adalah melalui WhatsApp.", contactCta: "Hubungi via WhatsApp",
contactOrEmail: "Atau kirim email ke:", footerText: "© 2018 Rakhmat - Sopir Pribadi Lombok. Hak Cipta Dilindungi.",
whatsappMessage: "Halo! Saya tertarik dengan layanan transport di Lombok.",
destRinjani: "Gunung Rinjani", destGiliT: "Gili Trawangan", destKuta: "Kuta, Lombok", destPink: "Pantai Pink",
destSenggigi: "Pantai Senggigi", destTiuKelep: "Tiu Kelep", destMerese: "Bukit Merese", destSembalun: "Sembalun"
}
};
const langButtons = [document.getElementById('lang-en-desktop'), document.getElementById('lang-id-desktop'), document.getElementById('lang-en-mobile'), document.getElementById('lang-id-mobile'),];
function setLanguage(lang) {
document.querySelectorAll('[data-translate-key]').forEach(el => {
const key = el.dataset.translateKey;
if (translations[lang] && translations[lang][key]) { el.innerHTML = translations[lang][key]; }
});
// This part now updates BOTH buttons
const baseURL = 'https://wa.me/6281246268955';
const message = translations[lang].whatsappMessage || translations['en'].whatsappMessage;
const finalURL = `${baseURL}?text=${encodeURIComponent(message)}`;
const mainWhatsappButton = document.getElementById('whatsapp-button');
if (mainWhatsappButton) {
mainWhatsappButton.href = finalURL;
}
const heroWhatsappButton = document.getElementById('hero-whatsapp-button');
if (heroWhatsappButton) {
heroWhatsappButton.href = finalURL;
}
langButtons.forEach(btn => btn.classList.toggle('active', btn.id.includes(`lang-${lang}-`)));
localStorage.setItem('language', lang);
document.documentElement.lang = lang;
}
langButtons.forEach(btn => { btn.addEventListener('click', () => setLanguage(btn.id.includes('en') ? 'en' : 'id')); });
setLanguage(localStorage.getItem('language') || 'id');
const mobileMenuButton = document.getElementById('mobile-menu-button');
const mobileMenu = document.getElementById('mobile-menu');
const mobileMenuLinks = document.querySelectorAll('.mobile-menu-link');
mobileMenuButton.addEventListener('click', () => mobileMenu.classList.toggle('hidden'));
mobileMenuLinks.forEach(link => link.addEventListener('click', () => mobileMenu.classList.add('hidden')));
document.addEventListener('click', function (event) {
const isClickInsideMenu = mobileMenu.contains(event.target);
const isClickOnButton = mobileMenuButton.contains(event.target);
if (!mobileMenu.classList.contains('hidden') && !isClickInsideMenu && !isClickOnButton) {
mobileMenu.classList.add('hidden');
}
});
const header = document.getElementById('main-header'); window.addEventListener('scroll', () => header.classList.toggle('scrolled', window.scrollY > 50));
const fadeElems = document.querySelectorAll('.fade-in-element');
const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) entry.target.classList.add('is-visible'); }); }, { threshold: 0.1 });
fadeElems.forEach(elem => observer.observe(elem));
// --- CONTINUOUS MARQUEE SCRIPT ---
const photoGallery = ['./img/IMG-20250720-WA0003.jpg', './img/IMG-20250720-WA0004.jpg', './img/IMG-20250720-WA0005.jpg', './img/IMG-20250720-WA0007.jpg', './img/IMG-20250720-WA0012.jpg', './img/IMG-20250720-WA0013.jpg', './img/IMG-20250720-WA0014.jpg', './img/IMG-20250720-WA0015.jpg', './img/IMG-20250720-WA0024.jpg', './img/IMG-20250720-WA0025.jpg', './img/IMG-20250720-WA0027.jpg', './img/IMG-20250720-WA0028.jpg', './img/IMG-20250720-WA0029.jpg', './img/IMG-20250720-WA0030.jpg', './img/IMG-20250720-WA0031.jpg',];
const track = document.getElementById('carousel-track');
if (track) {
const allPhotos = [...photoGallery, ...photoGallery];
allPhotos.forEach(src => {
const slide = document.createElement('div');
slide.className = 'carousel-slide';
const img = document.createElement('img');
img.src = src;
img.loading = 'lazy';
img.className = 'w-full h-auto object-cover rounded-lg shadow-md aspect-[3/4] bg-gray-200';
img.alt = 'Guest Photo';
slide.appendChild(img);
track.appendChild(slide);
});
}
});
</script>
</body>
</html>