{"id":236,"date":"2026-09-19T11:18:42","date_gmt":"2026-09-19T21:18:42","guid":{"rendered":"https:\/\/mana-corp.com\/?page_id=236"},"modified":"2026-09-19T11:19:09","modified_gmt":"2026-09-19T21:19:09","slug":"elementor-236","status":"publish","type":"page","link":"https:\/\/mana-corp.com\/?page_id=236","title":{"rendered":"Elementor #236"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"236\" class=\"elementor elementor-236\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ccaf1a8 e-flex e-con-boxed e-con e-parent\" data-id=\"ccaf1a8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6b70072 elementor-widget elementor-widget-html\" data-id=\"6b70072\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no\">\n<meta name=\"theme-color\" content=\"#000000\">\n<title>Tahiti Driver \u2022 Pro Booking<\/title>\n<script src=\"https:\/\/unpkg.com\/maplibre-gl@4.7.1\/dist\/maplibre-gl.js\"><\/script>\n<link href=\"https:\/\/unpkg.com\/maplibre-gl@4.7.1\/dist\/maplibre-gl.css\" rel=\"stylesheet\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;600;700;800&display=swap\" rel=\"stylesheet\">\n<style>\n*{box-sizing:border-box;margin:0;padding:0;font-family:Inter,system-ui}\nbody{background:#f6f6f7;color:#111;overflow:hidden;height:100dvh;display:flex;flex-direction:column}\n#map{position:absolute;inset:0;z-index:0}\n.top{position:absolute;top:0;left:0;right:0;z-index:5;padding:12px;display:flex;gap:8px}\n.pill{background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-radius:14px;padding:8px 12px;display:flex;align-items:center;gap:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);border:1px solid rgba(0,0,0,.06)}\n.pill input,.pill select{border:0;background:transparent;outline:none;font-weight:600;font-size:14px;min-width:90px}\n.icon-btn{width:44px;height:44px;border-radius:14px;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border:1px solid rgba(0,0,0,.06);display:grid;place-items:center;box-shadow:0 8px 24px rgba(0,0,0,.12);cursor:pointer}\n.bottom{position:absolute;bottom:0;left:0;right:0;z-index:6;background:rgba(255,255,255,.97);backdrop-filter:blur(18px);border-radius:28px 28px 0 0;box-shadow:0 -10px 40px rgba(0,0,0,.18);max-height:82dvh;overflow:auto;transition:transform.3s}\n.handle{width:36px;height:5px;background:#ddd;border-radius:10px;margin:10px auto}\n.grid{display:grid;gap:10px;padding:14px 16px 24px}\n.row{display:flex;gap:10px}\n.field{flex:1;background:#f2f2f3;border-radius:14px;padding:10px 12px;border:1px solid transparent}\n.field:focus-within{border-color:#111;background:white}\n.field label{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#888;font-weight:700;display:block;margin-bottom:2px}\n.field input,.field select{width:100%;border:0;background:transparent;outline:none;font-size:15px;font-weight:600}\n.eta{display:flex;gap:8px;align-items:center;background:#111;color:white;border-radius:16px;padding:12px 14px}\n.eta b{font-size:20px}\n.chip{padding:8px 12px;border-radius:999px;background:#f2f2f3;font-weight:600;font-size:13px;border:1px solid #eee;cursor:pointer}\n.chip.active{background:#111;color:white}\n.voucher{background:linear-gradient(135deg,#111 0%,#2b2b2b 100%);color:white;border-radius:20px;padding:16px;position:relative;overflow:hidden}\n.voucher:before{content:\"\";position:absolute;right:-30px;top:-30px;width:120px;height:120px;background:radial-gradient(circle at center, rgba(255,255,255,.15), transparent 70%);border-radius:50%}\n.voucher.brand{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}\n.voucher.tiki{width:32px;height:32px;border-radius:10px;background:#E61E1E;display:grid;place-items:center;font-weight:800}\n.divider{border-top:1px dashed rgba(255,255,255,.25);margin:12px 0}\n.btn{border:0;border-radius:14px;padding:14px 16px;font-weight:800;cursor:pointer}\n.btn-primary{background:#111;color:white}\n.btn-ghost{background:#f2f2f3;color:#111}\n.btn-wa{background:#25D366;color:white}\n.map-switch{position:absolute;top:64px;right:12px;z-index:5;display:flex;flex-direction:column;gap:8px}\n.badge{font-size:11px;background:#E61E1E;color:white;padding:3px 7px;border-radius:999px;font-weight:800}\n.small{font-size:12px;color:#777}\n#toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);background:#111;color:white;padding:10px 14px;border-radius:999px;z-index:20;display:none}\n<\/style>\n<\/head>\n<body>\n<div id=\"map\"><\/div>\n<div class=\"top\">\n<div class=\"pill\" style=\"flex:1\"><span>\ud83d\udd0d<\/span><input id=\"q\" placeholder=\"Where to? Hotel, beach, airport...\"><\/div>\n<button class=\"icon-btn\" id=\"btnTiles\">\ud83d\uddfa\ufe0f<\/button>\n<button class=\"icon-btn\" id=\"btnLocate\">\ud83d\udccd<\/button>\n<button class=\"icon-btn\" id=\"btnTrack\">\ud83e\udded<\/button>\n<\/div>\n<div class=\"map-switch\" id=\"tilePanel\" style=\"display:none\">\n<button class=\"pill\" data-style=\"liberty\">Light<\/button>\n<button class=\"pill\" data-style=\"sat\">Satellite<\/button>\n<button class=\"pill\" data-style=\"dark\">Dark<\/button>\n<\/div>\n<div class=\"bottom\" id=\"sheet\">\n<div class=\"handle\"><\/div>\n<div class=\"grid\">\n<div class=\"row\">\n<div class=\"field\"><label>Profile Name<\/label><input id=\"profile\" placeholder=\"John Doe\"><\/div>\n<div class=\"field\" style=\"max-width:110px\"><label>PAX (max 8)<\/label><select id=\"pax\"><option>1<\/option><option>2<\/option><option>3<\/option><option>4<\/option><option>5<\/option><option>6<\/option><option>7<\/option><option selected>8<\/option><\/select><\/div>\n<\/div>\n<div class=\"row\">\n<div class=\"field\"><label>Pickup<\/label><input id=\"pickup\" placeholder=\"Tap map or use GPS\"><\/div>\n<div class=\"field\"><label>Drop-off \/ Destination<\/label><input id=\"dropoff\" placeholder=\"Tap map or search\"><\/div>\n<\/div>\n<div id=\"airportBox\" style=\"display:none\" class=\"row\">\n<div class=\"field\"><label>Airline<\/label><select id=\"airline\"><option value=\"\">Select<\/option><option>Air Tahiti Nui - TN<\/option><option>Air Tahiti - VT<\/option><option>Air Moana<\/option><option>French Bee - BF<\/option><option>Private \/ Charter<\/option><option>Other<\/option><\/select><\/div>\n<div class=\"field\"><label>Flight No.<\/label><input id=\"flightNo\" placeholder=\"TN101\"><\/div>\n<div class=\"field\"><label>ETA \/ Arrival<\/label><input id=\"flightTime\" type=\"time\"><\/div>\n<\/div>\n<div class=\"row\" style=\"flex-wrap:wrap\">\n<span class=\"chip active\" data-svc=\"taxi\">Taxi<\/span>\n<span class=\"chip\" data-svc=\"private\">Private Ride<\/span>\n<span class=\"chip\" data-svc=\"half_am\">Half 9-13<\/span>\n<span class=\"chip\" data-svc=\"half_pm\">Half 13-17<\/span>\n<span class=\"chip\" data-svc=\"full\">Full 9-17<\/span>\n<\/div>\n<div class=\"eta\" id=\"etaBox\" style=\"display:none\"><div><div class=\"small\" style=\"color:#aaa\">ETA \u2022 Distance<\/div><b id=\"etaText\">--<\/b><div class=\"small\" id=\"etaSub\" style=\"color:#aaa\">--<\/div><\/div><span class=\"badge\" id=\"liveBadge\">LIVE GPS<\/span><\/div>\n<div class=\"voucher\" id=\"voucher\" style=\"display:none\">\n<div class=\"brand\"><div style=\"display:flex;gap:8px;align-items:center\"><div class=\"tiki\">T<\/div><div><div style=\"font-weight:800;letter-spacing:.02em\">TAHITI DRIVER<\/div><div class=\"small\" style=\"color:#aaa\">Ride Voucher \u2022 Credit Card Style<\/div><\/div><\/div><span class=\"badge\">VOUCHER<\/span><\/div>\n<div style=\"font-size:18px;font-weight:800\" id=\"vService\">Circle Island Half Day<\/div>\n<div class=\"small\" style=\"color:#ccc;margin-top:4px\" id=\"vRoute\">Papeete \u2192 Maraa Grotto<\/div>\n<div class=\"divider\"><\/div>\n<div class=\"row\" style=\"color:#ccc;font-size:13px\"><div style=\"flex:1\">PAX: <b id=\"vPax\" style=\"color:white\">8<\/b><\/div><div style=\"flex:1\">Profile: <b id=\"vProfile\" style=\"color:white\">-<\/b><\/div><div style=\"flex:1\">Fare: <b id=\"vFare\" style=\"color:white\">$400<\/b><\/div><\/div>\n<div id=\"vFlight\" class=\"small\" style=\"color:#ffb3b3;margin-top:8px;display:none\"><\/div>\n<div style=\"display:flex;gap:8px;margin-top:14px\">\n<button class=\"btn btn-ghost\" style=\"flex:1;background:white;color:#111\" id=\"btnDecline\">Decline<\/button>\n<button class=\"btn btn-wa\" style=\"flex:1\" id=\"btnAccept\">Accept & Book \u2192 WA<\/button>\n<\/div>\n<div class=\"row\" style=\"margin-top:8px\">\n<button class=\"btn btn-ghost\" style=\"flex:1\" id=\"btnICS\">\ud83d\udcc5 Add to Google Calendar (.ics)<\/button>\n<\/div>\n<\/div>\n<div class=\"row\">\n<button class=\"btn btn-primary\" style=\"flex:1\" id=\"btnGO\">Generate Voucher \/ GO<\/button>\n<\/div>\n<div class=\"small\">Fintech flow: Pickup + Drop \u2192 ETA + Fare \u2192 Voucher Card \u2192 Accept (WA) \/ Decline \u2192 ICS calendar. Number hidden. Mobile-first webapp.<\/div>\n<div id=\"adminLink\" class=\"small\" style=\"text-align:center;margin-top:6px\"><a href=\"#\" id=\"openAdmin\">Admin Fares Simulator<\/a><\/div>\n<div id=\"adminPanel\" style=\"display:none\">\n<hr style=\"margin:10px 0\">\n<div class=\"field\"><label>Admin - Add fare (stored local)<\/label><div class=\"row\"><input id=\"fareName\" placeholder=\"Name\"><input id=\"fareFlat\" type=\"number\" placeholder=\"Flat\" style=\"width:70px\"><input id=\"fareKm\" type=\"number\" placeholder=\"$\/km\" style=\"width:70px\"><input id=\"fareH\" type=\"number\" placeholder=\"$\/h\" style=\"width:70px\"><input id=\"fareMin\" type=\"number\" placeholder=\"Min\" style=\"width:70px\"><\/div><button class=\"btn btn-primary\" id=\"btnAddFare\" style=\"margin-top:8px;width:100%\">+ Add Fare<\/button><div id=\"faresList\" class=\"small\" style=\"margin-top:8px\"><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"toast\"><\/div>\n<script>\nconst _w = atob(\"Njg5ODk2NjAwMDM=\"); const WA_BASE = \"https:\/\/wa.me\/\" + _w;\nconst styles = { liberty: \"https:\/\/tiles.openfreemap.org\/styles\/liberty\", dark: \"https:\/\/tiles.openfreemap.org\/styles\/dark\", sat: { version:8, sources:{ sat:{ type:\"raster\", tiles:[\"https:\/\/server.arcgisonline.com\/ArcGIS\/rest\/services\/World_Imagery\/MapServer\/tile\/{z}\/{y}\/{x}\"], tileSize:256 } }, layers:[{id:\"sat\", type:\"raster\", source:\"sat\"}] } };\nlet currentSvc=\"taxi\"; let pickupLL=null, dropoffLL=null, pickupShort=\"\", dropoffShort=\"\"; let watchId=null, tracking=false;\nlet fares = JSON.parse(localStorage.getItem(\"tahiti_fares_pro\")||\"[]\");\nif(fares.length===0){ fares=[{id:1,name:\"Half Day\",flat:0,perKm:0,perH:100,min:400},{id:2,name:\"Full Day\",flat:0,perKm:0,perH:100,min:800},{id:3,name:\"Taxi\",flat:25,perKm:2.5,perH:0,min:25}]; localStorage.setItem(\"tahiti_fares_pro\",JSON.stringify(fares)); }\nconst map = new maplibregl.Map({ container:'map', style:styles.liberty, center:[-149.4068,-17.6509], zoom:11.5 });\nmap.addControl(new maplibregl.NavigationControl(), 'bottom-right');\nlet pickMarker=null, dropMarker=null;\nfunction toast(m){ const t=document.getElementById('toast'); t.textContent=m; t.style.display='block'; setTimeout(()=>t.style.display='none',3000); }\nfunction shortAddr(full){ if(!full) return \"Tahiti\"; let parts=full.split(',').map(s=>s.trim()).filter(Boolean); parts=parts.slice(0,3); return parts.join(', ').slice(0,60); }\nasync function reverse(lng,lat){ try{ const r=await fetch(`https:\/\/nominatim.openstreetmap.org\/reverse?format=json&lon=${lng}&lat=${lat}&zoom=14`); const j=await r.json(); return j.display_name||`${lat.toFixed(4)},${lng.toFixed(4)}`; }catch{ return `${lat.toFixed(4)},${lng.toFixed(4)}`; } }\nasync function search(q){ if(!q) return; const r=await fetch(`https:\/\/nominatim.openstreetmap.org\/search?format=json&q=${encodeURIComponent(q)}&limit=1&viewbox=-149.9,-17.3,-149.0,-18.0&bounded=1`); const d=await r.json(); if(d[0]){ const lng=parseFloat(d[0].lon), lat=parseFloat(d[0].lat); map.flyTo({center:[lng,lat],zoom:14}); const addr=shortAddr(d[0].display_name); if(!pickupLL){ setPickup([lng,lat],addr); } else { setDropoff([lng,lat],addr); } checkAirport(addr); } }\ndocument.getElementById('q').addEventListener('keydown', e=>{ if(e.key==='Enter') search(e.target.value); });\nfunction setPickup(ll, shortName){ pickupLL=ll; pickupShort=shortName; if(pickMarker) pickMarker.remove(); pickMarker=new maplibregl.Marker({color:\"#111\"}).setLngLat(ll).addTo(map); document.getElementById('pickup').value=shortName; maybeRoute(); }\nfunction setDropoff(ll, shortName){ dropoffLL=ll; dropoffShort=shortName; if(dropMarker) dropMarker.remove(); dropMarker=new maplibregl.Marker({color:\"#E61E1E\"}).setLngLat(ll).addTo(map); document.getElementById('dropoff').value=shortName; maybeRoute(); checkAirport(shortName); }\nfunction checkAirport(name){ const isAirport=\/airport|aeroport|faa'a|faaa\/i.test(name); document.getElementById('airportBox').style.display=isAirport?'flex':'none'; }\nasync function maybeRoute(){ if(!pickupLL||!dropoffLL) return; const url=`https:\/\/router.project-osrm.org\/route\/v1\/driving\/${pickupLL[0]},${pickupLL[1]};${dropoffLL[0]},${dropoffLL[1]}?overview=full&geometries=geojson`; try{ const r=await fetch(url); const j=await r.json(); if(j.routes&&j.routes[0]){ const rt=j.routes[0]; const dist=rt.distance\/1000; const dur=rt.duration\/60; if(map.getSource('route')){ map.removeLayer('route'); map.removeSource('route'); } map.addSource('route',{type:'geojson',data:{type:'Feature',geometry:rt.geometry,properties:{}}}); map.addLayer({id:'route',type:'line',source:'route',paint:{'line-color':'#111','line-width':5,'line-opacity':0.9}}); document.getElementById('etaBox').style.display='flex'; document.getElementById('etaText').textContent=`${Math.round(dur)} min \u2022 ${dist.toFixed(1)} km`; calcFare(dist,dur\/60); } }catch{} }\nfunction calcFare(distKm, durH){ let best=Infinity, bestName=\"\"; fares.forEach(f=>{ let p=f.flat + f.perKm*distKm + f.perH*durH; if(f.min) p=Math.max(p,f.min); if(p<best){ best=p; bestName=f.name; } }); if(currentSvc.startsWith('half')) best=Math.max(best,400); if(currentSvc==='full') best=Math.max(best,800); if(!isFinite(best)) best=400; document.getElementById('etaSub').textContent=`Best: ${bestName} \u2192 $${best.toFixed(0)} \u2022 $100\/h min 4h`; window._lastFare=best; }\ndocument.querySelectorAll('.chip').forEach(c=>{ c.onclick=()=>{ document.querySelectorAll('.chip').forEach(x=>x.classList.remove('active')); c.classList.add('active'); currentSvc=c.dataset.svc; calcFare(0,4); } });\nmap.on('click', async e=>{ const lng=e.lngLat.lng, lat=e.lngLat.lat; const full=await reverse(lng,lat); const short=shortAddr(full); if(!pickupLL){ setPickup([lng,lat],short); toast(\"Pickup set \u2014 now tap destination\"); } else if(!dropoffLL){ setDropoff([lng,lat],short); } else { pickupLL=null; dropoffLL=null; if(pickMarker)pickMarker.remove(); if(dropMarker)dropMarker.remove(); if(map.getSource('route')){ map.removeLayer('route'); map.removeSource('route'); } setPickup([lng,lat],short); } });\ndocument.getElementById('btnLocate').onclick=()=>{ navigator.geolocation.getCurrentPosition(async pos=>{ const ll=[pos.coords.longitude,pos.coords.latitude]; map.flyTo({center:ll,zoom:15}); const full=await reverse(ll[0],ll[1]); setPickup(ll, shortAddr(full)); },()=>toast(\"GPS denied\")); };\ndocument.getElementById('btnTrack').onclick=()=>{ if(tracking){ navigator.geolocation.clearWatch(watchId); tracking=false; toast(\"Tracking off\"); return; } tracking=true; watchId=navigator.geolocation.watchPosition(async pos=>{ const ll=[pos.coords.longitude,pos.coords.latitude]; if(!pickMarker){ setPickup(ll,\"Live GPS\"); } else { pickMarker.setLngLat(ll); } map.setCenter(ll); }, null, {enableHighAccuracy:true}); toast(\"Tracking ON\"); };\ndocument.getElementById('btnTiles').onclick=()=>{ const p=document.getElementById('tilePanel'); p.style.display=p.style.display==='none'?'flex':'none'; };\ndocument.querySelectorAll('#tilePanel button').forEach(b=>{ b.onclick=()=>{ const s=b.dataset.style; if(s==='sat') map.setStyle(styles.sat); else map.setStyle(styles[s]); document.getElementById('tilePanel').style.display='none'; } });\nfunction buildVoucherData(){ const profile=document.getElementById('profile').value||\"Guest\"; const pax=document.getElementById('pax').value; const svc=document.querySelector('.chip.active')?.textContent||\"Taxi\"; const airline=document.getElementById('airline').value; const flightNo=document.getElementById('flightNo').value; const flightTime=document.getElementById('flightTime').value; const fare=window._lastFare||400; return {profile,pax,svc,airline,flightNo,flightTime,fare, pickup:pickupShort||\"Tahiti\", dropoff:dropoffShort||\"Tahiti\", pickupLL, dropoffLL}; }\ndocument.getElementById('btnGO').onclick=()=>{ if(!pickupLL||!dropoffLL){ toast(\"Set pickup & drop-off first\"); return; } const d=buildVoucherData(); document.getElementById('voucher').style.display='block'; document.getElementById('vService').textContent=d.svc; document.getElementById('vRoute').textContent=`${d.pickup} \u2192 ${d.dropoff}`; document.getElementById('vPax').textContent=d.pax; document.getElementById('vProfile').textContent=d.profile; document.getElementById('vFare').textContent=`$${d.fare.toFixed(0)}`; if(d.airline||d.flightNo){ document.getElementById('vFlight').style.display='block'; document.getElementById('vFlight').textContent=`\u2708\ufe0f ${d.airline} ${d.flightNo} ${d.flightTime? '\u2022 '+d.flightTime:''}`; }\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Tahiti Driver \u2022 Pro Booking \ud83d\udd0d \ud83d\uddfa\ufe0f \ud83d\udccd \ud83e\udded Light Satellite Dark Profile Name PAX (max 8)12345678 Pickup Drop-off \/ Destination AirlineSelectAir Tahiti Nui &#8211; TNAir Tahiti &#8211; VTAir MoanaFrench Bee &#8211; BFPrivate \/ CharterOther Flight No. ETA \/ Arrival Taxi Private Ride Half 9-13 Half 13-17 Full 9-17 ETA \u2022 Distance&#8212;&#8211;LIVE GPS TTAHITI DRIVERRide [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-236","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mana-corp.com\/index.php?rest_route=\/wp\/v2\/pages\/236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mana-corp.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mana-corp.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mana-corp.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mana-corp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=236"}],"version-history":[{"count":4,"href":"https:\/\/mana-corp.com\/index.php?rest_route=\/wp\/v2\/pages\/236\/revisions"}],"predecessor-version":[{"id":240,"href":"https:\/\/mana-corp.com\/index.php?rest_route=\/wp\/v2\/pages\/236\/revisions\/240"}],"wp:attachment":[{"href":"https:\/\/mana-corp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}