PageSourceSearch

https://katlegoluxpreview.lovable.app/

html katlegoluxpreview.lovable.app collected 2026-10-03 03:28:25 UTC 16,282 bytes, 381 lines download raw bytes

1<!doctype html>
2<html lang="en">
3  <head>
4    <meta charset="UTF-8" />
5    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6    <link rel="icon" href="/favicon.png" type="image/png" />
7    <title>Katlego Luxury Tours | Johannesburg Chauffeur &amp; Transfers</title>
8    <meta name="description" content="Luxury airport transfers, executive chauffeur services, corporate travel and guided safaris across Johannesburg, Midrand, Pretoria and greater Gauteng." />
9    <meta name="author" content="Katlego Luxury Tours & Safaris" />
10    <meta name="keywords" content="airport transfers Johannesburg, luxury chauffeur Johannesburg, executive transport Gauteng, OR Tambo airport transfer, corporate transport Johannesburg, Midrand shuttle, safari tours South Africa" />
11    <meta name="robots" content="index, follow" />
12    <link rel="preconnect" href="https://fonts.googleapis.com" />
13    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
14    <link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@500;600;700&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
15
16    
17    
18    <meta property="og:type" content="website" />
19    <meta property="og:site_name" content="Katlego Luxury Tours & Safaris" />
20    <meta property="og:locale" content="en_ZA" />
21    <meta property="og:url" content="https://katlegoluxpreview.lovable.app/" />
22    <meta property="og:image" content="https://storage.googleapis.com/gpt-engineer-file-uploads/8aMXgWSQfxUfQXzIEadczy3NsfA2/social-images/social-1779696987279-Gemini_Generated_Image__(1).webp">
23
24    <meta name="twitter:card" content="summary_large_image" />
25    <meta name="twitter:site" content="@Lovable" />
26    <meta name="twitter:image" content="https://storage.googleapis.com/gpt-engineer-file-uploads/8aMXgWSQfxUfQXzIEadczy3NsfA2/social-images/social-1779696987279-Gemini_Generated_Image__(1).webp">
27    <meta property="og:title" content="Katlego Luxury Tours | Johannesburg Chauffeur &amp; Transfers" />
28    <meta name="twitter:title" content="Katlego Luxury Tours | Johannesburg Chauffeur &amp; Transfers" />
29    <meta property="og:description" content="Luxury airport transfers, executive chauffeur services, corporate travel and guided safaris across Johannesburg and greater Gauteng." />
30    <meta name="twitter:description" content="Luxury airport transfers, executive chauffeur services, corporate travel and guided safaris across Johannesburg and greater Gauteng." />
31
32    
32<script type="application/ld+json">
33    {
34      "@context": "https://schema.org",
35      "@type": "LocalBusiness",
36      "@id": "https://katlegoluxpreview.lovable.app/#business",
37      "name": "Katlego Luxury Tours & Safaris",
38      "image": "https://katlegoluxpreview.lovable.app/favicon.png",
39      "url": "https://katlegoluxpreview.lovable.app/",
40      "telephone": "+27675928492",
41      "email": "[email protected]",
42      "priceRange": "$$",
43      "address": {
44        "@type": "PostalAddress",
45        "streetAddress": "Unit 2, Acacia Park, Capital Hill Business Park, Halfway House",
46        "addressLocality": "Midrand",
47        "addressRegion": "Gauteng",
48        "postalCode": "1685",
49        "addressCountry": "ZA"
50      },
51      "areaServed": [
52        { "@type": "City", "name": "Johannesburg" },
53        { "@type": "City", "name": "Midrand" },
54        { "@type": "City", "name": "Pretoria" },
55        { "@type": "AdministrativeArea", "name": "Gauteng" }
56      ],
57      "openingHoursSpecification": {
58        "@type": "OpeningHoursSpecification",
59        "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
60        "opens": "00:00",
61        "closes": "23:59"
62      },
63      "aggregateRating": {
64        "@type": "AggregateRating",
65        "ratingValue": "4.8",
66        "reviewCount": "13"
67      }
68    }
69    </script>
69
70    
70<script type="application/ld+json">
71    {
72      "@context": "https://schema.org",
73      "@type": "TaxiService",
74      "name": "Katlego Luxury Chauffeur & Airport Transfers",
75      "provider": { "@id": "https://katlegoluxpreview.lovable.app/#business" },
76      "serviceType": ["Airport Transfer","Executive Chauffeur","Corporate Transport","Group & Event Transport","Guided Safari Tours"],
77      "areaServed": [
78        { "@type": "City", "name": "Johannesburg" },
79        { "@type": "Place", "name": "OR Tambo International Airport" },
80        { "@type": "Place", "name": "Lanseria International Airport" },
81        { "@type": "AdministrativeArea", "name": "Gauteng" }
82      ],
83      "url": "https://katlegoluxpreview.lovable.app/"
84    }
85    </script>
85
86    
86<script type="application/ld+json">
87    {
88      "@context": "https://schema.org",
89      "@type": "FAQPage",
90      "mainEntity": [
91        {
92          "@type": "Question",
93          "name": "Do you offer airport transfers to and from OR Tambo and Lanseria?",
94          "acceptedAnswer": { "@type": "Answer", "text": "Yes. We provide luxury airport transfers to OR Tambo, Lanseria and Durban airports with professional chauffeurs and meet-and-greet service." }
95        },
96        {
97          "@type": "Question",
98          "name": "What areas in Johannesburg and Gauteng do you serve?",
99          "acceptedAnswer": { "@type": "Answer", "text": "We serve all of Johannesburg, Midrand, Sandton, Pretoria and the wider Gauteng region, with long-distance trips across South Africa on request." }
100        },
101        {
102          "@type": "Question",
103          "name": "How far in advance should I book?",
104          "acceptedAnswer": { "@type": "Answer", "text": "Bookings should be made at least 2 hours before your pickup time. We take bookings 24/7." }
105        },
106        {
107          "@type": "Question",
108          "name": "Do you handle corporate and group transport?",
109          "acceptedAnswer": { "@type": "Answer", "text": "Yes. We offer corporate transport, conference shuttles, weddings, social clubs and event transport with sedans, executive vehicles and luxury vans." }
110        },
111        {
112          "@type": "Question",
113          "name": "How is pricing calculated?",
114          "acceptedAnswer": { "@type": "Answer", "text": "Pricing is based on the exact route distance calculated via Google Maps, the vehicle class selected, and the trip type. The final price is shown before you confirm the booking." }
115        }
116      ]
117    }
118    </script>
118
119    
119<script type="module" crossorigin src="/assets/index-CErWxwka.js"></script>
119
120    <link rel="stylesheet" crossorigin href="/assets/index-Dq2_jONi.css">
121  
122<style>
123	#lovable-badge {
124		--badge-bg: #1b1b1b;
125		--badge-text: #c5c1b9;
126		--badge-text-hover: #dcdad5;
127		--badge-radius: 6px;
128		--badge-padding: 8px;
129		--badge-gap: 6px;
130		--badge-shadow: 
131			0 0 0 1px rgba(0, 0, 0, 0.88),
132			0 1px 0 0 rgba(0, 0, 0, 0.04),
133			0 2px 2px -1px rgba(0, 0, 0, 0.08),
134			0 4px 4px -2px rgba(0, 0, 0, 0.08),
135			0 8px 8px -4px rgba(0, 0, 0, 0.08),
136			0 16px 16px -8px rgba(0, 0, 0, 0.08);
137		--badge-transition-duration: 0.2s;
138		--badge-transition-easing: cubic-bezier(0.16, 1, 0.32, 1);
139		--focus-color: #575ECF;
140		--focus-offset: 2px;
141		--focus-width: 2px;
142		
143		position: fixed;
144		bottom: 12px;
145		right: 12px;
146		height: 24px;
147		display: flex;
148		align-items: center;
149		z-index: 1000000;
150		background-color: var(--badge-bg) !important;
151		color: var(--badge-text) !important;
152		border-radius: var(--badge-radius);
153		box-shadow: var(--badge-shadow) !important;
154		font-size: 12px;
155		font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
156		font-weight: 400 !important;
157		text-transform: none !important;
158		font-feature-settings: normal !important;
159		transform: translateZ(0);
160		will-change: transform, opacity;
161		transition: opacity var(--badge-transition-duration) var(--badge-transition-easing);
162	}
163
164	#lovable-badge.closing {
165		opacity: 0;
166		pointer-events: none;
167	}
168
169	#lovable-badge-cta {
170		display: flex;
171		align-items: baseline;
172		gap: var(--badge-gap);
173		box-sizing: border-box;
174		padding: 4px var(--badge-padding) 0;
175		height: 100%;
176		color: inherit;
177		text-decoration: none;
178		white-space: nowrap;
179		border-radius: var(--badge-radius) 0 0 var(--badge-radius);
180		transition: 
181			background-color var(--badge-transition-duration) ease,
182			color var(--badge-transition-duration) ease,
183			transform 0.1s ease;
184	}
185
186	#lovable-badge-cta:hover {
187		background: rgba(255, 255, 255, 0.04);
188		color: var(--badge-text-hover);
189	}
190
191	#lovable-badge-cta:active {
192		transform: scale(0.98);
193	}
194
195	#lovable-badge-cta:focus {
196		outline: none;
197	}
198
199	#lovable-badge-cta:focus-visible {
200		outline: var(--focus-width) solid var(--focus-color);
201		outline-offset: var(--focus-offset);
202		z-index: 1;
203	}
204
205	#lovable-badge-text {
206		line-height: 1;
207	}
208
209	/* The wordmark baseline sits at y=12 of the 16px logo; an empty 12px box
210	   makes that the flex baseline so the text aligns to it on any system font. */
211	#lovable-badge-logo {
212		position: relative;
213		display: block;
214		width: 52px;
215		height: 12px;
216	}
217
218	#lovable-badge-logo svg {
219		position: absolute;
220		top: 0;
221		left: 0;
222	}
223
224	#lovable-badge-divider {
225		width: 1px;
226		height: 24px;
227		background-color: rgba(255, 255, 255, 0.04);
228		flex-shrink: 0;
229	}
230
231	#lovable-badge-close {
232		width: 24px;
233		height: 24px;
234		min-width: 24px;
235		min-height: 24px;
236		cursor: pointer;
237		background: none;
238		border: none;
239		padding: 0;
240		display: flex;
241		align-items: center;
242		justify-content: center;
243		border-radius: 0 var(--badge-radius) var(--badge-radius) 0;
244		flex-shrink: 0;
245		transition: 
246			background-color var(--badge-transition-duration) ease,
247			transform 0.1s ease;
248	}
249
250	#lovable-badge-close:hover {
251		background: rgba(255, 255, 255, 0.04);
252	}
253
254	#lovable-badge-close:active {
255		transform: scale(0.92);
256	}
257
258	#lovable-badge-close:focus {
259		outline: none;
260	}
261
262	#lovable-badge-close:focus-visible {
263		outline: var(--focus-width) solid var(--focus-color);
264		outline-offset: calc(var(--focus-offset) * -1);
265		z-index: 1;
266	}
267
268	#lovable-badge-close svg path {
269		fill: var(--badge-text);
270		transition: fill var(--badge-transition-duration) ease;
271	}
272
273	#lovable-badge-close:hover svg path {
274		fill: var(--badge-text-hover);
275	}
276
277	@media (prefers-reduced-motion: reduce) {
278		#lovable-badge,
279		#lovable-badge-cta,
280		#lovable-badge-close,
281		#lovable-badge-close svg path {
282			transition: none;
283		}
284		
285		#lovable-badge-cta:active,
286		#lovable-badge-close:active {
287			transform: none;
288		}
289	}
290
291	@media (prefers-contrast: high) {
292		#lovable-badge {
293			--badge-bg: #000;
294			--badge-text: #fff;
295			--badge-text-hover: #fff;
296			border: 2px solid currentColor;
297		}
298		
299		#lovable-badge-cta:focus-visible,
300		#lovable-badge-close:focus-visible {
301			outline-width: 3px;
302		}
303	}
304</style>
305<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
305</head>
306
307  <body>
308    <div id="root"></div>
309  
310<aside
311	id="lovable-badge"
312	role="complementary"
313	dir="ltr"
314	lang="en"
315	aria-label="Edit with Lovable">
316	<a
317		id="lovable-badge-cta" 
318		target="_blank" 
319		href="https://lovable.dev/projects/lovp_00v0jkz95k8mtbcaxqr4swe8se?utm_source=lovable-badge"
320		rel="noopener nofollow"
321		aria-label="Edit with Lovable">
322		<span id="lovable-badge-text">Edit with</span>
323		<span id="lovable-badge-logo"><svg xmlns="http://www.w3.org/2000/svg" width="52" height="16" fill="none" viewBox="0 0 52 16">
324  <path fill="#FCFBF8" fill-rule="evenodd" d="M20.318 5.25c.643 0 1.206.14 1.69.418a2.81 2.81 0 0 1 1.118 1.191c.266.513.4 1.115.4 1.807s-.134 1.296-.4 1.812a2.81 2.81 0 0 1-1.118 1.193c-.484.278-1.047.418-1.69.418s-1.208-.14-1.695-.418a2.85 2.85 0 0 1-1.125-1.193c-.262-.516-.393-1.12-.393-1.812s.131-1.294.393-1.807a2.848 2.848 0 0 1 1.125-1.191c.487-.279 1.052-.418 1.695-.418Zm0 1.425c-.27 0-.504.076-.7.228-.193.147-.34.37-.443.67-.102.295-.153.66-.153 1.093 0 .435.05.801.153 1.1.102.3.25.524.443.676.196.147.43.22.7.22.27 0 .502-.073.694-.22.193-.152.341-.375.443-.67.103-.299.153-.667.153-1.106 0-.65-.112-1.145-.337-1.481a1.08 1.08 0 0 0-.953-.51ZM32.7 5.25c.61 0 1.127.1 1.549.3.422.197.74.48.953.849.217.368.325.809.325 1.32v2.704c0 .29.02.562.062.812.044.245.108.4.19.466V12h-1.935a5.895 5.895 0 0 1-.105-.684 7.745 7.745 0 0 1-.02-.228 2.293 2.293 0 0 1-.151.203c-.205.242-.47.437-.793.584-.32.143-.685.215-1.094.215-.406 0-.77-.08-1.094-.24a1.845 1.845 0 0 1-.756-.682 1.984 1.984 0 0 1-.27-1.045c0-.606.178-1.069.535-1.388.356-.324.87-.534 1.542-.633l1.125-.16c.225-.032.403-.074.534-.123a.622.622 0 0 0 .288-.196.549.549 0 0 0 .093-.327.65.65 0 0 0-.11-.367.702.702 0 0 0-.32-.27c-.14-.07-.31-.105-.51-.105-.32 0-.576.083-.768.251-.193.164-.298.39-.314.676h-1.923c.016-.434.147-.82.393-1.155.25-.34.596-.604 1.039-.792.442-.189.954-.283 1.535-.283Zm.99 3.498a.98.98 0 0 1-.215.14 2.49 2.49 0 0 1-.584.178l-.473.092c-.315.061-.553.156-.713.283-.155.127-.233.305-.233.534 0 .23.084.412.252.547.168.135.383.203.645.203s.494-.058.694-.173c.201-.118.355-.282.461-.49.11-.21.166-.448.166-.714v-.6Zm4.526-2.375c.065-.125.138-.243.221-.349.197-.25.437-.44.719-.571.282-.135.6-.203.952-.203.528 0 .988.138 1.377.412.389.275.688.67.896 1.186.21.512.314 1.12.314 1.824 0 .7-.107 1.309-.32 1.825-.213.512-.518.906-.915 1.18-.393.275-.854.412-1.383.412-.352 0-.667-.062-.946-.184a1.832 1.832 0 0 1-.7-.554 2.2 2.2 0 0 1-.234-.383V12h-1.843V3h1.862v3.373Zm1.284.296c-.274 0-.51.085-.707.253-.192.163-.338.397-.436.7a3.376 3.376 0 0 0-.148 1.05c0 .406.05.759.148 1.058.098.299.243.53.436.694.197.164.433.246.707.246.279 0 .512-.082.7-.246.193-.164.336-.395.43-.694.099-.3.148-.652.148-1.058 0-.405-.05-.757-.147-1.056-.095-.299-.238-.53-.43-.694a1.015 1.015 0 0 0-.7-.253Zm9.416-1.419c.602 0 1.136.131 1.604.393.466.262.829.643 1.086 1.143.263.5.394 1.097.394 1.794 0 .25-.002.449-.006.596H47.51c.018.288.071.538.164.75a1.3 1.3 0 0 0 .491.596c.214.13.465.196.757.196.319 0 .583-.082.792-.246.209-.167.34-.403.393-.706h1.862a2.48 2.48 0 0 1-.485 1.235 2.54 2.54 0 0 1-1.051.805c-.439.188-.949.283-1.53.283-.655 0-1.225-.125-1.708-.375a2.672 2.672 0 0 1-1.13-1.143c-.267-.508-.4-1.137-.4-1.887 0-.712.14-1.327.418-1.843a2.86 2.86 0 0 1 1.155-1.186c.491-.27 1.051-.405 1.678-.405Zm-.044 1.345c-.274 0-.516.068-.725.203a1.29 1.29 0 0 0-.479.59 2.045 2.045 0 0 0-.132.498h2.562a1.873 1.873 0 0 0-.138-.602 1.061 1.061 0 0 0-.418-.516 1.243 1.243 0 0 0-.67-.173Z" clip-rule="evenodd"/>
325  <path fill="#FCFBF8" d="m26.605 9.995 1.342-4.566h1.924L27.628 12h-2.07l-2.33-6.57h1.98l1.397 4.565Zm-13.013.143h2.256c1.632 0 1.421 1.837 1.418 1.861h-5.603V3h1.93v7.138Zm31.516 1.861h-1.862V3h1.862v8.999Z"/>
326  <path fill="url(#a)" fill-rule="evenodd" d="M2.7 3c1.492 0 2.7 1.192 2.7 2.663v1.012h.9c1.49 0 2.7 1.192 2.7 2.662S7.791 12 6.3 12H0V5.663C0 4.193 1.209 3 2.7 3Z" clip-rule="evenodd"/>
327  <defs>
328    <radialGradient id="a" cx="0" cy="0" r="1" gradientTransform="matrix(-1.54236 7.07838 -10.231 -2.15602 4.627 5.022)" gradientUnits="userSpaceOnUse">
329      <stop offset=".106" stop-color="#FE7B02"/>
330      <stop offset=".394" stop-color="#FE3F21"/>
331      <stop offset=".608" stop-color="#F858BC"/>
332      <stop offset=".929" stop-color="#575ECF"/>
333    </radialGradient>
334  </defs>
335</svg>
336
337</span>
338	</a>
339	
340	<span id="lovable-badge-divider" aria-hidden="true"></span>
341	
342	<button 
343		id="lovable-badge-close"
344		aria-label="Dismiss"
345		title="Dismiss"
346		type="button">
347		<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" aria-hidden="true">
348			<path d="M10.646 4.646a.5.5 0 1 1 .707.708L8.707 8l2.646 2.646a.5.5 0 1 1-.707.707L8 8.707l-2.646 2.646a.5.5 0 1 1-.708-.707L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708L8 7.293l2.646-2.647Z"/>
349		</svg>
350	</button>
351</aside>
352<script>
353	(() => {
354		if (window.self !== window.top || navigator.userAgent.includes('puppeteer')) {
355			const badge = document.querySelector('#lovable-badge');
356			if (badge) {
357				badge.style.display = 'none';
358			}
359			return;
360		}
361
362		const closeButton = document.querySelector('#lovable-badge-close');
363		if (closeButton) {
364			closeButton.addEventListener('click', function(event) {
365				event.preventDefault();
366				event.stopPropagation();
367				const badge = document.querySelector('#lovable-badge');
368				if (badge) {
369					badge.classList.add('closing');
370					setTimeout(function() {
371						if (badge) {
372							badge.style.display = 'none';
373						}
374					}, 240);
375				}
376			});
377		}
378	})();
379</script>
379
380</body>
381</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.