{"id":2449,"date":"2026-10-23T09:37:31","date_gmt":"2026-10-23T09:37:31","guid":{"rendered":"https:\/\/montrealroyallimo.ca\/?page_id=2449"},"modified":"2026-10-25T12:54:31","modified_gmt":"2026-10-25T12:54:31","slug":"book-online","status":"publish","type":"page","link":"https:\/\/montrealroyallimo.ca\/fr\/book-online\/","title":{"rendered":"Book Online"},"content":{"rendered":"\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.css\">\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.js\"><\/script>\n<style>\n#mrlb{font-family:'Jost',sans-serif;color:#ece7db;max-width:1180px;margin:0 auto;padding:8px 0 40px;scroll-margin-top:90px}\n#mrlb [hidden]{display:none!important}\n#mrlb .mrlb-eyebrow{color:#c6a15b;letter-spacing:3px;font-size:12px;margin:0 0 4px;text-transform:uppercase}\n#mrlb h1.mrlb-h1{font-family:'Playfair Display',serif;color:#e7cd8a;font-size:44px;line-height:1.1;margin:0 0 10px;font-weight:600}\n#mrlb .mrlb-lede{color:#b9b4a6;max-width:680px;margin:0 0 16px;font-size:16px}\n#mrlb .mrlb-refbar{display:inline-flex;gap:12px;align-items:center;background:#141416;border:1px solid #c6a15b;border-radius:10px;padding:10px 18px;margin:0 0 6px}\n#mrlb .mrlb-refbar span{font-size:12px;letter-spacing:2px;text-transform:uppercase;color:#8f8b97}\n#mrlb .mrlb-refbar strong{color:#e7cd8a;font-size:20px;letter-spacing:1px}\n#mrlb-steps{list-style:none;display:flex;gap:8px;padding:0;margin:22px 0}\n#mrlb-steps .mrlb-step{flex:1;background:#141416;border:1px solid #2a2a2e;border-radius:10px;padding:12px 8px;text-align:center;color:#8f8b97;font-size:13px;display:flex;align-items:center;justify-content:center;gap:8px}\n#mrlb-steps .mrlb-n{display:inline-flex;width:26px;height:26px;min-width:26px;border-radius:50%;border:1px solid #c6a15b;color:#c6a15b;align-items:center;justify-content:center;font-size:13px}\n#mrlb-steps .mrlb-step.is-active{background:#1c1c1f;color:#ece7db;border-color:#c6a15b}\n#mrlb-steps .mrlb-step.is-active .mrlb-n,#mrlb-steps .mrlb-step.is-done .mrlb-n{background:#c6a15b;color:#111;border-color:#c6a15b}\n#mrlb .mrlb-alert{background:#3a1414;border:1px solid #a33;color:#ffd9d9;padding:12px 16px;border-radius:10px;margin:0 0 16px;font-size:15px}\n#mrlb .mrlb-grid{display:grid;grid-template-columns:1fr 360px;gap:24px;align-items:start}\n#mrlb .mrlb-panel{background:#101012;border:1px solid #26262b;border-radius:14px;padding:26px;scroll-margin-top:90px}\n#mrlb .mrlb-tabs{display:flex;margin-bottom:22px;border:1px solid #2a2a2e;border-radius:10px;overflow:hidden}\n#mrlb .mrlb-tab{flex:1;background:transparent;border:0;color:#8f8b97;padding:13px;font-size:14px;letter-spacing:2px;cursor:pointer;font-family:inherit}\n#mrlb .mrlb-tab.is-active{background:#c6a15b;color:#111;font-weight:700}\n#mrlb .mrlb-field{margin-bottom:16px;position:relative}\n#mrlb .mrlb-field>label{display:block;font-size:12px;letter-spacing:1.5px;color:#c6a15b;margin-bottom:7px;text-transform:uppercase}\n#mrlb .mrlb-field input[type=text],#mrlb .mrlb-field input[type=date],#mrlb .mrlb-field input[type=time],#mrlb .mrlb-field input[type=email],#mrlb .mrlb-field input[type=tel],#mrlb .mrlb-field select{width:100%;background:#0a0a0c;border:1px solid #2e2e33;color:#ece7db;border-radius:8px;padding:12px 14px;font-size:15px;font-family:inherit;box-sizing:border-box}\n#mrlb .mrlb-field input:focus,#mrlb .mrlb-field select:focus{border-color:#c6a15b;outline:none}\n#mrlb .mrlb-row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}\n#mrlb .mrlb-sug{position:absolute;top:100%;left:0;right:0;z-index:60;background:#17171a;border:1px solid #c6a15b;border-radius:8px;max-height:250px;overflow:auto;margin-top:4px;box-shadow:0 12px 30px rgba(0,0,0,.5)}\n#mrlb .mrlb-sug-i{display:block;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid #26262b;color:#ece7db;padding:10px 12px;cursor:pointer;font-size:14px;font-family:inherit}\n#mrlb .mrlb-sug-i:hover{background:#232327}\n#mrlb .mrlb-linkbtn{background:none;border:0;color:#c6a15b;cursor:pointer;font-size:14px;padding:6px 0;font-family:inherit}\n#mrlb .mrlb-linkbtn:hover{text-decoration:underline}\n#mrlb .mrlb-stop{position:relative;margin-top:10px}\n#mrlb .mrlb-stop input{width:100%;background:#0a0a0c;border:1px solid #2e2e33;color:#ece7db;border-radius:8px;padding:12px 14px;font-size:15px;font-family:inherit;box-sizing:border-box}\n#mrlb .mrlb-pills{display:flex;gap:10px}\n#mrlb .mrlb-pill{flex:1;background:#0a0a0c;border:1px solid #2e2e33;color:#ece7db;border-radius:999px;padding:11px;cursor:pointer;font-size:15px;font-family:inherit}\n#mrlb .mrlb-pill.is-active{background:#c6a15b;color:#111;border-color:#c6a15b;font-weight:700}\n#mrlb .mrlb-note{color:#8f8b97;font-size:13px;margin:4px 0 0}\n#mrlb .mrlb-nav{margin-top:22px;display:flex;justify-content:flex-end}\n#mrlb .mrlb-nav-2{justify-content:space-between}\n#mrlb .mrlb-btn{font-family:inherit;font-size:15px;letter-spacing:1px;border-radius:10px;padding:14px 30px;cursor:pointer}\n#mrlb .mrlb-btn-gold{background:linear-gradient(180deg,#e7cd8a,#c6a15b);color:#111;font-weight:700;border:0}\n#mrlb .mrlb-btn-gold:hover{filter:brightness(1.06)}\n#mrlb .mrlb-btn-ghost{background:transparent;border:1px solid #c6a15b;color:#c6a15b}\n#mrlb .mrlb-btn:disabled{opacity:.45;cursor:not-allowed}\n#mrlb .mrlb-sub{font-family:'Playfair Display',serif;color:#e7cd8a;font-size:20px;margin:22px 0 12px}\n#mrlb .mrlb-vehs{display:grid;gap:14px}\n#mrlb .mrlb-veh{display:grid;grid-template-columns:150px 1fr;gap:16px;background:#0a0a0c;border:1px solid #2e2e33;border-radius:12px;padding:12px;cursor:pointer;color:#ece7db;text-align:left;width:100%;font-family:inherit;align-items:center}\n#mrlb .mrlb-veh.is-sel{border-color:#c6a15b;box-shadow:0 0 0 1px #c6a15b}\n#mrlb .mrlb-veh.is-off{opacity:.45;cursor:not-allowed}\n#mrlb .mrlb-veh-img img{width:150px;height:110px;object-fit:cover;border-radius:8px;display:block;background:#1a1a1d}\n#mrlb .mrlb-veh-body strong{font-family:'Playfair Display',serif;font-size:21px;color:#e7cd8a;display:block;font-weight:600}\n#mrlb .mrlb-veh-body em{color:#c6a15b;font-style:normal;font-size:12px;letter-spacing:2px;text-transform:uppercase}\n#mrlb .mrlb-veh-body small{color:#8f8b97;display:block;margin:6px 0;font-size:13px}\n#mrlb .mrlb-veh-price{color:#e7cd8a;font-size:21px;font-weight:700}\n#mrlb .mrlb-distonly{display:none;color:#8f8b97;font-size:12px;margin-top:4px}\n#mrlb .mrlb-veh.is-off .mrlb-distonly{display:block}\n#mrlb .mrlb-opt{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#0a0a0c;border:1px solid #2e2e33;border-radius:10px;padding:12px 16px;margin-bottom:10px}\n#mrlb .mrlb-opt strong{display:block;font-size:15px}\n#mrlb .mrlb-opt span{color:#c6a15b;font-size:14px}\n#mrlb .mrlb-toggle{background:transparent;border:1px solid #c6a15b;color:#c6a15b;border-radius:999px;padding:9px 22px;cursor:pointer;font-size:14px;font-family:inherit}\n#mrlb .mrlb-toggle.is-on{background:#c6a15b;color:#111;font-weight:700}\n#mrlb .mrlb-stepper{display:flex;align-items:center;gap:12px}\n#mrlb .mrlb-stepper button{width:34px;height:34px;border-radius:50%;border:1px solid #c6a15b;background:transparent;color:#c6a15b;font-size:18px;cursor:pointer;line-height:1}\n#mrlb .mrlb-stepper b{min-width:22px;text-align:center;font-size:16px}\n#mrlb .mrlb-ack{display:flex;gap:10px;align-items:flex-start;margin:20px 0 4px;cursor:pointer;font-size:15px}\n#mrlb .mrlb-ack input{width:20px;height:20px;accent-color:#c6a15b;margin-top:2px;flex:none}\n#mrlb .mrlb-side{position:sticky;top:20px}\n#mrlb .mrlb-mapcard{background:#101012;border:1px solid #26262b;border-radius:14px;overflow:hidden;margin-bottom:20px}\n#mrlb .mrlb-map{height:260px;background:#0a0a0c;position:relative}\n#mrlb .mrlb-map .leaflet-container{background:#0a0a0c;font-family:inherit}\n#mrlb .mrlb-map-ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#8f8b97;padding:24px;text-align:center;font-size:14px;z-index:5}\n#mrlb .mrlb-totals{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #26262b}\n#mrlb .mrlb-totals>div{padding:14px 10px;text-align:center}\n#mrlb .mrlb-totals>div+div{border-left:1px solid #26262b}\n#mrlb .mrlb-totals span{display:block;font-size:11px;letter-spacing:2px;color:#8f8b97;margin-bottom:4px}\n#mrlb .mrlb-totals strong{font-size:22px;color:#e7cd8a}\n#mrlb .mrlb-bill{background:#101012;border:1px solid #c6a15b;border-radius:14px;padding:20px}\n#mrlb .mrlb-bill-t{font-family:'Playfair Display',serif;color:#e7cd8a;margin:0 0 10px;font-size:22px;font-weight:600}\n#mrlb .mrlb-bill-ph{color:#8f8b97;font-size:14px;margin:0}\n#mrlb .mrlb-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed #2b2b30;font-size:15px}\n#mrlb .mrlb-row b{color:#ece7db;white-space:nowrap}\n#mrlb .mrlb-row.mrlb-total{border-bottom:0;font-size:18px;padding-top:10px}\n#mrlb .mrlb-row.mrlb-total b{color:#e7cd8a}\n#mrlb .mrlb-totalis{margin:12px 0 0;font-size:16px;color:#ece7db}\n#mrlb .mrlb-totalis b{color:#e7cd8a;font-size:23px}\n#mrlb .mrlb-tips{display:flex;gap:6px}\n#mrlb .mrlb-tips button{background:#0a0a0c;border:1px solid #2e2e33;color:#ece7db;border-radius:6px;padding:7px 11px;cursor:pointer;font-size:13px;font-family:inherit}\n#mrlb .mrlb-tips button.is-on{background:#c6a15b;color:#111;border-color:#c6a15b;font-weight:700}\n#mrlb .mrlb-dl{margin:0 0 18px}\n#mrlb .mrlb-dlrow{display:grid;grid-template-columns:150px 1fr;gap:6px 12px;padding:5px 0;border-bottom:1px dashed #232327;font-size:15px}\n#mrlb .mrlb-dlrow dt{color:#8f8b97;font-size:12px;text-transform:uppercase;letter-spacing:1px}\n#mrlb .mrlb-dlrow dd{margin:0;color:#ece7db}\n#mrlb .mrlb-panel h3.mrlb-h3{font-family:'Playfair Display',serif;color:#e7cd8a;font-size:20px;margin:0 0 10px;font-weight:600}\n#mrlb .mrlb-success{text-align:center}\n#mrlb .mrlb-success h2{font-family:'Playfair Display',serif;color:#e7cd8a;font-size:32px;margin:0 0 12px}\n#mrlb .mrlb-okref{font-size:17px}\n#mrlb .mrlb-okref strong{color:#e7cd8a;font-size:24px;letter-spacing:1px}\n#mrlb .mrlb-okmsg{color:#b9b4a6;font-size:16px}\n#mrlb .mrlb-okbill{text-align:left;margin-top:18px}\n.mrlb-mfwrap{position:absolute;left:-99999px;top:0;width:640px;opacity:0;pointer-events:none;overflow:hidden}\n@media(max-width:940px){#mrlb .mrlb-grid{grid-template-columns:1fr}#mrlb .mrlb-side{position:static}#mrlb .mrlb-row2{grid-template-columns:1fr}#mrlb h1.mrlb-h1{font-size:34px}#mrlb-steps{flex-wrap:wrap}#mrlb-steps .mrlb-step{flex:1 1 45%}}\n@media(max-width:560px){#mrlb .mrlb-veh{grid-template-columns:110px 1fr}#mrlb .mrlb-veh-img img{width:110px;height:84px}#mrlb .mrlb-panel{padding:18px}}\n<\/style>\n<div id=\"mrlb\">\n<div class=\"mrlb-hero\">\n<p class=\"mrlb-eyebrow\" data-i18n=\"eyebrow\">MONTREAL ROYAL LIMO \\u2022 BOOK ONLINE<\/p>\n<h1 class=\"mrlb-h1\" data-i18n=\"h1\">Book Online<\/h1>\n<p class=\"mrlb-lede\" data-i18n=\"lede\">Book any ride in four simple steps \\u2014 airport transfers, city rides, hourly charters and long-distance trips across Quebec and beyond.<\/p>\n<div class=\"mrlb-refbar\"><span data-i18n=\"refLabel\">Your booking reference<\/span><strong id=\"mrlb-ref\">MRL-2026-0000<\/strong><\/div>\n<\/div>\n<ol id=\"mrlb-steps\">\n<li class=\"mrlb-step is-active\" data-s=\"1\"><span class=\"mrlb-n\">1<\/span><span class=\"mrlb-t\" data-i18n=\"st1\">Enter Ride Details<\/span><\/li>\n<li class=\"mrlb-step\" data-s=\"2\"><span class=\"mrlb-n\">2<\/span><span class=\"mrlb-t\" data-i18n=\"st2\">Choose a Vehicle<\/span><\/li>\n<li class=\"mrlb-step\" data-s=\"3\"><span class=\"mrlb-n\">3<\/span><span class=\"mrlb-t\" data-i18n=\"st3\">Enter Contact Details<\/span><\/li>\n<li class=\"mrlb-step\" data-s=\"4\"><span class=\"mrlb-n\">4<\/span><span class=\"mrlb-t\" data-i18n=\"st4\">Booking Summary<\/span><\/li>\n<\/ol>\n<div class=\"mrlb-alert\" id=\"mrlb-alert\" role=\"alert\" hidden><\/div>\n<div class=\"mrlb-grid\">\n<div class=\"mrlb-main\">\n<section class=\"mrlb-panel\" data-panel=\"1\">\n<div class=\"mrlb-tabs\" role=\"tablist\">\n<button type=\"button\" class=\"mrlb-tab is-active\" data-mode=\"distance\" data-i18n=\"tabD\">DISTANCE<\/button>\n<button type=\"button\" class=\"mrlb-tab\" data-mode=\"hourly\" data-i18n=\"tabH\">HOURLY<\/button>\n<\/div>\n<div class=\"mrlb-form\">\n<div class=\"mrlb-row2\">\n<div class=\"mrlb-field\"><label for=\"mrlb-date\" data-i18n=\"fDate\">Pickup Date<\/label><input type=\"date\" id=\"mrlb-date\"><\/div>\n<div class=\"mrlb-field\"><label for=\"mrlb-time\" data-i18n=\"fTime\">Pickup Time<\/label><input type=\"time\" id=\"mrlb-time\"><\/div>\n<\/div>\n<div class=\"mrlb-field\"><label for=\"mrlb-pickup\" data-i18n=\"fPickup\">Pickup Location<\/label><input type=\"text\" id=\"mrlb-pickup\" autocomplete=\"off\" data-i18n-ph=\"phAddr\" placeholder=\"Start typing an address\\u2026\"><div class=\"mrlb-sug\" id=\"mrlb-pickup-sug\" hidden><\/div><button type=\"button\" class=\"mrlb-linkbtn\" id=\"mrlb-addstop\">+ <span data-i18n=\"addStop\">Add a stop<\/span><\/button><div id=\"mrlb-stops\"><\/div><\/div>\n<div class=\"mrlb-field\" data-dist=\"1\"><label for=\"mrlb-dropoff\" data-i18n=\"fDrop\">Drop-off Location<\/label><input type=\"text\" id=\"mrlb-dropoff\" autocomplete=\"off\" data-i18n-ph=\"phAddr\" placeholder=\"Start typing an address\\u2026\"><div class=\"mrlb-sug\" id=\"mrlb-dropoff-sug\" hidden><\/div><\/div>\n<div class=\"mrlb-row2\">\n<div class=\"mrlb-field\" data-dist=\"1\"><label data-i18n=\"fTransfer\">Transfer Type<\/label><div class=\"mrlb-pills\" id=\"mrlb-transfer\"><button type=\"button\" class=\"mrlb-pill is-active\" data-v=\"oneway\" data-i18n=\"oneWay\">One Way<\/button><button type=\"button\" class=\"mrlb-pill\" data-v=\"return\" data-i18n=\"ret\">Return<\/button><\/div><\/div>\n<div class=\"mrlb-field\"><label for=\"mrlb-pax\" data-i18n=\"fPax\">Passengers<\/label><select id=\"mrlb-pax\"><option value=\"1\">1<\/option><option value=\"2\">2<\/option><option value=\"3\">3<\/option><option value=\"4\">4<\/option><option value=\"5\">5<\/option><option value=\"6\">6<\/option><option value=\"7\">7<\/option><option value=\"8\">8<\/option><option value=\"9\">9<\/option><option value=\"10\">10<\/option><option value=\"11\">11<\/option><option value=\"12\">12<\/option><\/select><\/div>\n<\/div>\n<div class=\"mrlb-row2\" data-hourly=\"1\" hidden>\n<div class=\"mrlb-field\"><label for=\"mrlb-hours\" data-i18n=\"fHours\">Hours<\/label><select id=\"mrlb-hours\"><option value=\"1\">1<\/option><option value=\"2\">2<\/option><option value=\"3\" selected>3<\/option><option value=\"4\">4<\/option><option value=\"5\">5<\/option><option value=\"6\">6<\/option><option value=\"7\">7<\/option><option value=\"8\">8<\/option><option value=\"9\">9<\/option><option value=\"10\">10<\/option><option value=\"11\">11<\/option><option value=\"12\">12<\/option><\/select><\/div>\n<div class=\"mrlb-field\"><label for=\"mrlb-extra\" data-i18n=\"fExtra\">Extra Time (hours)<\/label><select id=\"mrlb-extra\"><option value=\"0\" selected>0<\/option><option value=\"1\">1<\/option><option value=\"2\">2<\/option><option value=\"3\">3<\/option><option value=\"4\">4<\/option><option value=\"5\">5<\/option><option value=\"6\">6<\/option><\/select><\/div>\n<\/div>\n<div class=\"mrlb-field\"><label for=\"mrlb-flight\" data-i18n=\"fFlight\">Flight number (optional)<\/label><input type=\"text\" id=\"mrlb-flight\" autocomplete=\"off\" data-i18n-ph=\"phFlight\" placeholder=\"e.g. AC 422\"><\/div>\n<p class=\"mrlb-note\" data-i18n=\"note3h\">Please note: instant bookings require at least 3 hours\\u2019 notice before pickup. For urgent pickups, call us at +1 (514) 705-0850.<\/p>\n<\/div>\n<div class=\"mrlb-nav\"><button type=\"button\" class=\"mrlb-btn mrlb-btn-gold\" id=\"mrlb-to2\" data-i18n=\"toVeh\">Choose a Vehicle<\/button><\/div>\n<\/section>\n<section class=\"mrlb-panel\" data-panel=\"2\" hidden>\n<div class=\"mrlb-vehs\" id=\"mrlb-vehs\">\n<button type=\"button\" class=\"mrlb-veh\" data-veh=\"escalade\"><span class=\"mrlb-veh-img\"><img decoding=\"async\" src=\"https:\/\/montrealroyallimo.ca\/wp-content\/uploads\/2026\/10\/escalade-premium.jpg\" alt=\"Cadillac Escalade\"><\/span><span class=\"mrlb-veh-body\"><strong>Cadillac Escalade<\/strong><em data-i18n=\"vEsc\">Premium SUV<\/em><small>6 <span data-i18n=\"seats\">seats<\/span> \\u00b7 6 <span data-i18n=\"bags\">bags<\/span><\/small><b class=\"mrlb-veh-price\" data-price>\\u2014<\/b><span class=\"mrlb-distonly\" data-i18n=\"distOnly\">Distance bookings only<\/span><\/span><\/button>\n<button type=\"button\" class=\"mrlb-veh\" data-veh=\"suburban\"><span class=\"mrlb-veh-img\"><img decoding=\"async\" src=\"https:\/\/montrealroyallimo.ca\/wp-content\/uploads\/2026\/10\/suburban-premium.jpg\" alt=\"Chevrolet Suburban\"><\/span><span class=\"mrlb-veh-body\"><strong>Chevrolet Suburban<\/strong><em data-i18n=\"vSub\">Standard SUV<\/em><small>6 <span data-i18n=\"seats\">seats<\/span> \\u00b7 5 <span data-i18n=\"stdBags\">standard bags<\/span> \u00b7 2 <span data-i18n=\"carry\">hand carry-ons<\/span><\/small><b class=\"mrlb-veh-price\" data-price>\\u2014<\/b><span class=\"mrlb-distonly\" data-i18n=\"distOnly\">Distance bookings only<\/span><\/span><\/button>\n<button type=\"button\" class=\"mrlb-veh\" data-veh=\"sprinter\"><span class=\"mrlb-veh-img\"><img decoding=\"async\" src=\"https:\/\/montrealroyallimo.ca\/wp-content\/uploads\/2026\/10\/sprinter-premium.jpg\" alt=\"Mercedes Sprinter\"><\/span><span class=\"mrlb-veh-body\"><strong>Mercedes Sprinter<\/strong><em data-i18n=\"vSpr\">Executive Van<\/em><small>12 <span data-i18n=\"seats\">seats<\/span> \\u00b7 12 <span data-i18n=\"bags\">bags<\/span><\/small><b class=\"mrlb-veh-price\" data-price>\\u2014<\/b><span class=\"mrlb-distonly\" data-i18n=\"distOnly\">Distance bookings only<\/span><\/span><\/button>\n<\/div>\n<h3 class=\"mrlb-sub\" data-i18n=\"addons\">Add options<\/h3>\n<div class=\"mrlb-opts\">\n<div class=\"mrlb-opt\"><div><strong data-i18n=\"oMeet\">Meet-and-greet<\/strong><span>$45<\/span><\/div><button type=\"button\" class=\"mrlb-toggle\" id=\"mrlb-meet\" aria-pressed=\"false\"><span data-i18n=\"add\">Add<\/span><\/button><\/div>\n<div class=\"mrlb-opt\"><div><strong data-i18n=\"oChild\">Child seat<\/strong><span>$25 <span data-i18n=\"each\">each<\/span><\/span><\/div><div class=\"mrlb-stepper\"><button type=\"button\" data-q=\"child\" data-d=\"-1\">\\u2212<\/button><b id=\"mrlb-q-child\">0<\/b><button type=\"button\" data-q=\"child\" data-d=\"1\">+<\/button><\/div><\/div>\n<div class=\"mrlb-opt\"><div><strong data-i18n=\"oBoost\">Booster seat<\/strong><span>$15 <span data-i18n=\"each\">each<\/span><\/span><\/div><div class=\"mrlb-stepper\"><button type=\"button\" data-q=\"boost\" data-d=\"-1\">\\u2212<\/button><b id=\"mrlb-q-boost\">0<\/b><button type=\"button\" data-q=\"boost\" data-d=\"1\">+<\/button><\/div><\/div>\n<\/div>\n<div class=\"mrlb-nav mrlb-nav-2\"><button type=\"button\" class=\"mrlb-btn mrlb-btn-ghost\" data-back=\"1\" data-i18n=\"back\">Back<\/button><button type=\"button\" class=\"mrlb-btn mrlb-btn-gold\" id=\"mrlb-to3\" data-i18n=\"toContact\">Continue<\/button><\/div>\n<\/section>\n<section class=\"mrlb-panel\" data-panel=\"3\" hidden>\n<div class=\"mrlb-form\">\n<div class=\"mrlb-field\"><label for=\"mrlb-name\" data-i18n=\"fName\">Full name<\/label><input type=\"text\" id=\"mrlb-name\" autocomplete=\"name\"><\/div>\n<div class=\"mrlb-row2\">\n<div class=\"mrlb-field\"><label for=\"mrlb-email\" data-i18n=\"fEmail\">Email<\/label><input type=\"email\" id=\"mrlb-email\" autocomplete=\"email\"><\/div>\n<div class=\"mrlb-field\"><label for=\"mrlb-phone\" data-i18n=\"fPhone\">Phone<\/label><input type=\"tel\" id=\"mrlb-phone\" autocomplete=\"tel\"><\/div>\n<\/div>\n<\/div>\n<div class=\"mrlb-nav mrlb-nav-2\"><button type=\"button\" class=\"mrlb-btn mrlb-btn-ghost\" data-back=\"2\" data-i18n=\"back\">Back<\/button><button type=\"button\" class=\"mrlb-btn mrlb-btn-gold\" id=\"mrlb-to4\" data-i18n=\"toSummary\">Review Booking<\/button><\/div>\n<\/section>\n<section class=\"mrlb-panel\" data-panel=\"4\" hidden>\n<div id=\"mrlb-summary\"><\/div>\n<label class=\"mrlb-ack\"><input type=\"checkbox\" id=\"mrlb-ack\"><span data-i18n=\"ack\">I acknowledge and agree to proceed<\/span><\/label>\n<div class=\"mrlb-nav mrlb-nav-2\"><button type=\"button\" class=\"mrlb-btn mrlb-btn-ghost\" data-back=\"3\" data-i18n=\"back\">Back<\/button><button type=\"button\" class=\"mrlb-btn mrlb-btn-gold\" id=\"mrlb-submit\" disabled data-i18n=\"submit\">Submit Booking<\/button><\/div>\n<\/section>\n<section class=\"mrlb-panel mrlb-success\" data-panel=\"ok\" hidden>\n<h2 data-i18n=\"okH\">Booking received<\/h2>\n<p class=\"mrlb-okref\"><span data-i18n=\"okRef\">Your reservation number is<\/span><br><strong id=\"mrlb-ok-ref\"><\/strong><\/p>\n<p class=\"mrlb-okmsg\" data-i18n=\"okMsg\">Booking received \\u2014 our team will send you a payment link.<\/p>\n<div class=\"mrlb-okbill\" id=\"mrlb-ok-bill\"><\/div>\n<\/section>\n<\/div>\n<aside class=\"mrlb-side\">\n<div class=\"mrlb-mapcard\">\n<div class=\"mrlb-map\" id=\"mrlb-map\"><p class=\"mrlb-map-ph\" data-i18n=\"mapPh\">Your route map appears here once pickup and drop-off are set.<\/p><\/div>\n<div class=\"mrlb-totals\"><div><span data-i18n=\"tDist\">TOTAL DISTANCE<\/span><strong id=\"mrlb-dist\">\\u2014<\/strong><\/div><div><span data-i18n=\"tTime\">TOTAL TIME<\/span><strong id=\"mrlb-time-tot\">\u2014<\/strong><\/div><\/div>\n<\/div>\n<div class=\"mrlb-bill\" id=\"mrlb-bill\"><\/div>\n<\/aside>\n<\/div>\n<\/div>\n<div id=\"mrlb-mfwrap\" class=\"mrlb-mfwrap\" aria-hidden=\"true\" tabindex=\"-1\">\n\n\n\t\t<div\n\t\t\tid=\"metform-wrap-2364-1\"\n\t\t\tclass=\"mf-form-wrapper mfb-form metform-2364\"\n\t\t\tdata-metform-form=\"2364\"\n\t\t\tdata-form-id=\"2364\"\n\t\t\tdata-action=\"https:\/\/montrealroyallimo.ca\/fr\/wp-json\/metform\/v1\/entries\/insert\/2364\"\n\t\t\tdata-wp-nonce=\"56702dee68\"\n\t\t\tdata-form-nonce=\"420bca421a\"\n\t\t\tdata-form-type=\"general-form\"\n\t\t\tdata-quiz-summery=\"false\"\n\t\t\tdata-mf-renderer=\"php\"\n\t\t\tdata-mf-editor=\"false\"\n\t\t\t\t\t>\n\t\t<form class=\"metform-form-content\" method=\"post\" action=\"https:\/\/montrealroyallimo.ca\/fr\/wp-json\/metform\/v1\/entries\/insert\/2364\" enctype=\"multipart\/form-data\" novalidate>\n\t\t\t<input type=\"hidden\" name=\"form_nonce\" value=\"420bca421a\">\n\t\t\t<input type=\"hidden\" name=\"id\" value=\"2364\">\n\t\t\t<input type=\"hidden\" name=\"hidden-fields\" value=\"[]\">\n\t\t\t<div class=\"mf-form-response mfb-form__response\" role=\"status\" aria-live=\"polite\"><\/div>\n\t\t\t<div class=\"metform-form-main-wrapper mfb-form__content\">\n\t\t\t\t<div class=\"mfb-paragraph__wrapper metform-element-el-2bedf93f-a0dd-477b-be8d-f98f3d854d75\" data-mf-block-id=\"el-2bedf93f-a0dd-477b-be8d-f98f3d854d75\"><p class=\"mfb-paragraph__text\"><\/p><\/div><div class=\"mfb-field__wrapper mfb-field__input metform-element-el-f82b775c-2c40-44c0-a06e-78ed7083f567 mfb-required\" data-mf-block-id=\"el-f82b775c-2c40-44c0-a06e-78ed7083f567\" data-mf-field-type=\"input\" data-mf-required=\"true\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-f82b775c-2c40-44c0-a06e-78ed7083f567\">Pickup location<span class=\"mfb-field__required\">*<\/span><\/label><div class=\"mfb-field__control\">\t\t<input id=\"mfb-2364-el-f82b775c-2c40-44c0-a06e-78ed7083f567\" type=\"text\" name=\"pickup_location\" class=\"mfb-field__input\" value=\"\" placeholder=\"Start typing \u2014 e.g. YUL\" required>\n\t\t<div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__input metform-element-el-bea261f5-aad4-498e-be1c-57abb038f372 mfb-required\" data-mf-block-id=\"el-bea261f5-aad4-498e-be1c-57abb038f372\" data-mf-field-type=\"input\" data-mf-required=\"true\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-bea261f5-aad4-498e-be1c-57abb038f372\">Drop-off location<span class=\"mfb-field__required\">*<\/span><\/label><div class=\"mfb-field__control\">\t\t<input id=\"mfb-2364-el-bea261f5-aad4-498e-be1c-57abb038f372\" type=\"text\" name=\"dropoff_location\" class=\"mfb-field__input\" value=\"\" placeholder=\"Where to? \u2014 e.g. Le Germain Hotel\" required>\n\t\t<div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__date metform-element-el-7875581c-f701-4356-b9ee-6de1ea06fd11 mfb-required\" data-mf-block-id=\"el-7875581c-f701-4356-b9ee-6de1ea06fd11\" data-mf-field-type=\"date\" data-mf-required=\"true\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-7875581c-f701-4356-b9ee-6de1ea06fd11\">Pickup date<span class=\"mfb-field__required\">*<\/span><\/label><div class=\"mfb-field__control\">\t\t<input\n\t\t\tid=\"mfb-2364-el-7875581c-f701-4356-b9ee-6de1ea06fd11\"\n\t\t\ttype=\"text\"\n\t\t\tname=\"pickup_date\"\n\t\t\tclass=\"mfb-field__input mfb-date__input\"\n\t\t\tplaceholder=\"Select a date\"\n\t\t\tautocomplete=\"off\"\n\t\t\tdata-mf-date=\"1\"\n\t\t\tdata-mf-format=\"d-m-Y\"\n\t\t\tdata-mf-mode=\"single\"\n\t\t\tdata-mf-enable-time=\"false\"\n\t\t\tdata-mf-time24hr=\"false\"\n\t\t\tdata-mf-today-min=\"false\"\n\t\t\t\t\t\t\t\t\t\t\t\trequired\t\t>\n\t\t<p class=\"mfb-field__help\">Instant bookings require at least 3 hours&#039; notice before pickup.<\/p><div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__time metform-element-el-447e9b6a-56af-4e2e-9658-6b0ed094d5dd mfb-required\" data-mf-block-id=\"el-447e9b6a-56af-4e2e-9658-6b0ed094d5dd\" data-mf-field-type=\"time\" data-mf-required=\"true\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-447e9b6a-56af-4e2e-9658-6b0ed094d5dd\">Pickup time<span class=\"mfb-field__required\">*<\/span><\/label><div class=\"mfb-field__control\">\t\t<span class=\"mfb-time__wrap\">\n\t\t\t<input\n\t\t\t\tid=\"mfb-2364-el-447e9b6a-56af-4e2e-9658-6b0ed094d5dd\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tname=\"pickup_time\"\n\t\t\t\tclass=\"mfb-field__input mfb-time__input\"\n\t\t\t\tplaceholder=\"Select a time\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\taria-controls=\"mfb-2364-el-447e9b6a-56af-4e2e-9658-6b0ed094d5dd-picker\"\n\t\t\t\taria-expanded=\"false\"\n\t\t\t\tdata-mf-time=\"1\"\n\t\t\t\tdata-mf-use24h=\"false\"\n\t\t\t\tdata-mf-step=\"5\"\n\t\t\t\tdata-mf-i18n=\"{&quot;amPm&quot;:&quot;AM or PM&quot;,&quot;notSet&quot;:&quot;Not set&quot;,&quot;invalid&quot;:&quot;Enter a time like 9:30 PM&quot;}\"\n\t\t\t\trequired\t\t\t>\n\t\t\t<button type=\"button\" class=\"mfb-time__clear\" aria-label=\"Clear\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M18 6L6 18M6 6l12 12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg><\/button>\n\t\t<\/span>\n\t\t<div id=\"mfb-2364-el-447e9b6a-56af-4e2e-9658-6b0ed094d5dd-picker\" class=\"mfb-time__popup\" role=\"dialog\" aria-label=\"Set time\" hidden>\n\t\t\t<div class=\"mfb-time__row\">\n\t\t\t\t\t\t<div class=\"mfb-time__seg\">\n\t\t\t<div class=\"mfb-time__value\" data-target=\"hour\" tabindex=\"0\" role=\"spinbutton\" aria-label=\"Hour\" aria-valuemin=\"1\" aria-valuemax=\"12\"><\/div>\n\t\t\t\t\t<button type=\"button\" class=\"mfb-time__step mfb-time__step--up\" data-target=\"hour\" data-dir=\"1\" tabindex=\"-1\" aria-label=\"Increase hour\"><svg width=\"8\" height=\"5\" viewBox=\"0 0 8 5\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M1 4l3-3 3 3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\n\t\t\t\t<button type=\"button\" class=\"mfb-time__step mfb-time__step--down\" data-target=\"hour\" data-dir=\"-1\" tabindex=\"-1\" aria-label=\"Decrease hour\"><svg width=\"8\" height=\"5\" viewBox=\"0 0 8 5\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M1 1l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"mfb-time__sep\" aria-hidden=\"true\">:<\/span>\n\t\t\t\t\t\t<div class=\"mfb-time__seg\">\n\t\t\t<div class=\"mfb-time__value\" data-target=\"minute\" tabindex=\"0\" role=\"spinbutton\" aria-label=\"Minute\" aria-valuemin=\"0\" aria-valuemax=\"59\"><\/div>\n\t\t\t\t\t<button type=\"button\" class=\"mfb-time__step mfb-time__step--up\" data-target=\"minute\" data-dir=\"1\" tabindex=\"-1\" aria-label=\"Increase minute\"><svg width=\"8\" height=\"5\" viewBox=\"0 0 8 5\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M1 4l3-3 3 3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\n\t\t\t\t<button type=\"button\" class=\"mfb-time__step mfb-time__step--down\" data-target=\"minute\" data-dir=\"-1\" tabindex=\"-1\" aria-label=\"Decrease minute\"><svg width=\"8\" height=\"5\" viewBox=\"0 0 8 5\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M1 1l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"mfb-time__ampm\"><\/button>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"mfb-time__list\" role=\"group\" hidden><\/div>\n\t\t<\/div>\n\t\t<div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__input metform-element-el-998eb28a-4e65-4132-be3a-a8be999a459d\" data-mf-block-id=\"el-998eb28a-4e65-4132-be3a-a8be999a459d\" data-mf-field-type=\"input\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-998eb28a-4e65-4132-be3a-a8be999a459d\">Flight number<\/label><div class=\"mfb-field__control\">\t\t<input id=\"mfb-2364-el-998eb28a-4e65-4132-be3a-a8be999a459d\" type=\"text\" name=\"flight_number\" class=\"mfb-field__input\" value=\"\" placeholder=\"e.g. AC 771 (optional)\" >\n\t\t<div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__select metform-element-el-dba812ba-23bc-4fa2-9f21-f5cd5e184223 mfb-required\" data-mf-block-id=\"el-dba812ba-23bc-4fa2-9f21-f5cd5e184223\" data-mf-field-type=\"select\" data-mf-required=\"true\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-dba812ba-23bc-4fa2-9f21-f5cd5e184223\">Passengers<span class=\"mfb-field__required\">*<\/span><\/label><div class=\"mfb-field__control\"><select id=\"mfb-2364-el-dba812ba-23bc-4fa2-9f21-f5cd5e184223\" name=\"passengers\" class=\"mfb-field__input\"  required  ><option value=\"1\"   >1<\/option><option value=\"2\"   >2<\/option><option value=\"3\"   >3<\/option><option value=\"4\"   >4<\/option><option value=\"5\"   >5<\/option><option value=\"6\"   >6<\/option><option value=\"7\"   >7<\/option><option value=\"8\"   >8<\/option><option value=\"9\"   >9<\/option><option value=\"10\"   >10<\/option><option value=\"11\"   >11<\/option><option value=\"12\"   >12<\/option><\/select><div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__select metform-element-el-f4145944-7c52-425f-992f-5e30e9ed1d57 mfb-required\" data-mf-block-id=\"el-f4145944-7c52-425f-992f-5e30e9ed1d57\" data-mf-field-type=\"select\" data-mf-required=\"true\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-f4145944-7c52-425f-992f-5e30e9ed1d57\">Vehicle<span class=\"mfb-field__required\">*<\/span><\/label><div class=\"mfb-field__control\"><select id=\"mfb-2364-el-f4145944-7c52-425f-992f-5e30e9ed1d57\" name=\"vehicle\" class=\"mfb-field__input\"  required  ><option value=\"Cadillac Escalade\"   >Cadillac Escalade<\/option><option value=\"Chevrolet Suburban\"   >Chevrolet Suburban<\/option><option value=\"Mercedes Sprinter\"   >Mercedes Sprinter<\/option><\/select><div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__input metform-element-el-dea777f7-bdf1-476c-bb00-3030d353697e mfb-required\" data-mf-block-id=\"el-dea777f7-bdf1-476c-bb00-3030d353697e\" data-mf-field-type=\"input\" data-mf-required=\"true\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-dea777f7-bdf1-476c-bb00-3030d353697e\">Full name<span class=\"mfb-field__required\">*<\/span><\/label><div class=\"mfb-field__control\">\t\t<input id=\"mfb-2364-el-dea777f7-bdf1-476c-bb00-3030d353697e\" type=\"text\" name=\"full_name\" class=\"mfb-field__input\" value=\"\" placeholder=\"\" required>\n\t\t<div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__email metform-element-el-aada9f21-eef3-4254-b9c3-d5cee28128e4 mfb-required\" data-mf-block-id=\"el-aada9f21-eef3-4254-b9c3-d5cee28128e4\" data-mf-field-type=\"email\" data-mf-required=\"true\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-aada9f21-eef3-4254-b9c3-d5cee28128e4\">Email<span class=\"mfb-field__required\">*<\/span><\/label><div class=\"mfb-field__control\">\t\t<input id=\"mfb-2364-el-aada9f21-eef3-4254-b9c3-d5cee28128e4\" type=\"email\" name=\"email\" class=\"mfb-field__input\" value=\"\" placeholder=\"\" required>\n\t\t<div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__telephone metform-element-el-e1ed2120-0470-480d-bf97-42a7317ec7c9 mfb-required\" data-mf-block-id=\"el-e1ed2120-0470-480d-bf97-42a7317ec7c9\" data-mf-field-type=\"telephone\" data-mf-required=\"true\" data-mf-validation=\"{&quot;type&quot;:&quot;pattern&quot;,&quot;value&quot;:&quot;^[0-9+()\\\\-\\\\s]{7,20}$&quot;,&quot;message&quot;:&quot;Please enter a valid phone number.&quot;}\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-e1ed2120-0470-480d-bf97-42a7317ec7c9\">Phone<span class=\"mfb-field__required\">*<\/span><\/label><div class=\"mfb-field__control\">\t\t<input id=\"mfb-2364-el-e1ed2120-0470-480d-bf97-42a7317ec7c9\" type=\"tel\" name=\"phone\" class=\"mfb-field__input\" value=\"\" placeholder=\"\" required pattern=\"^[0-9+()\\-\\s]{7,20}$\">\n\t\t<div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__checkbox metform-element-el-210c5056-e635-4061-a1b2-7b8fd8228f70\" data-mf-block-id=\"el-210c5056-e635-4061-a1b2-7b8fd8228f70\" data-mf-field-type=\"checkbox\"><div class=\"mfb-field__row\"><div class=\"mfb-field__control\"><div class=\"mfb-field-option__group mfb-options--horizontal\"  ><label class=\"mfb-option mfb-field-option\"><span class=\"mfb-option__box-wrap\">\n\t<input type=\"checkbox\" name=\"meet_greet[]\" value=\"yes\" class=\"mfb-option__input-native\"   >\n\t<span class=\"mfb-option__input mfb-field-option__input-checkbox\" aria-hidden=\"true\">\n\t\t<svg class=\"mfb-option__check-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"><\/polyline><\/svg>\n\t<\/span>\n<\/span>\n\t\t<span class=\"mfb-option__label mfb-field-option__label\">Meet &amp; greet at arrivals with a name sign<\/span><\/label><\/div><div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div>\t\t<div class=\"mfb-button__wrapper mfb-align--left metform-element-el-9d4d7de6-4659-4302-9a1f-f4393362cab2\" data-mf-block-id=\"el-9d4d7de6-4659-4302-9a1f-f4393362cab2\">\n\t\t\t<button type=\"submit\" class=\"mfb-button\" data-submitting-text=\"Submitting...\">\n\t\t\t\t<span class=\"mfb-button__content\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"mfb-button__text\">Submit<\/span>\n\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t\t<input type=\"hidden\" name=\"booking_reference\" value=\"\" data-mf-block-id=\"el-cdd7adb2-8e7a-4874-884c-6c67fc3bb3f3\"><input type=\"hidden\" name=\"company_name\" value=\"\" data-mf-block-id=\"cl-5f121f5f-8f49-4675-bc3c-170d80f1618a\"><div class=\"mfb-paragraph__wrapper metform-element-el-bc9d342d-6746-41fc-ac0a-300583e82d8b\" data-mf-block-id=\"el-bc9d342d-6746-41fc-ac0a-300583e82d8b\"><p class=\"mfb-paragraph__text\"><\/p><\/div><div class=\"mfb-field__wrapper mfb-field__select metform-element-el-35114a2c-bbaa-4580-8500-f8c9260400fb\" data-mf-block-id=\"el-35114a2c-bbaa-4580-8500-f8c9260400fb\" data-mf-field-type=\"select\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-35114a2c-bbaa-4580-8500-f8c9260400fb\">Sprinter hours<\/label><div class=\"mfb-field__control\"><select id=\"mfb-2364-el-35114a2c-bbaa-4580-8500-f8c9260400fb\" name=\"sprinter_hours\" class=\"mfb-field__input\"    ><option value=\"1\"  selected >1<\/option><option value=\"2\"   >2<\/option><option value=\"3\"   >3<\/option><option value=\"4\"   >4<\/option><option value=\"5\"   >5<\/option><option value=\"6\"   >6<\/option><option value=\"7\"   >7<\/option><option value=\"8\"   >8<\/option><\/select><p class=\"mfb-field__help\">For Sprinter van bookings only. Billed at $250 per hour.<\/p><div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__select metform-element-el-bce3f3aa-d4bc-4c4e-a8fd-ce419c7f1ce4\" data-mf-block-id=\"el-bce3f3aa-d4bc-4c4e-a8fd-ce419c7f1ce4\" data-mf-field-type=\"select\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-bce3f3aa-d4bc-4c4e-a8fd-ce419c7f1ce4\">Child seat<\/label><div class=\"mfb-field__control\"><select id=\"mfb-2364-el-bce3f3aa-d4bc-4c4e-a8fd-ce419c7f1ce4\" name=\"child_seat\" class=\"mfb-field__input\"    ><option value=\"0\"  selected >0<\/option><option value=\"1\"   >1<\/option><option value=\"2\"   >2<\/option><option value=\"3\"   >3<\/option><option value=\"4\"   >4<\/option><\/select><p class=\"mfb-field__help\">Billed at $25 per seat.<\/p><div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><div class=\"mfb-field__wrapper mfb-field__select metform-element-el-8d7155ee-e25d-445d-9c70-3a8d40dd2191\" data-mf-block-id=\"el-8d7155ee-e25d-445d-9c70-3a8d40dd2191\" data-mf-field-type=\"select\"><div class=\"mfb-field__row\"><label class=\"mfb-field__label mfb-label\" for=\"mfb-2364-el-8d7155ee-e25d-445d-9c70-3a8d40dd2191\">Booster seat<\/label><div class=\"mfb-field__control\"><select id=\"mfb-2364-el-8d7155ee-e25d-445d-9c70-3a8d40dd2191\" name=\"booster_seat\" class=\"mfb-field__input\"    ><option value=\"0\"  selected >0<\/option><option value=\"1\"   >1<\/option><option value=\"2\"   >2<\/option><option value=\"3\"   >3<\/option><option value=\"4\"   >4<\/option><\/select><p class=\"mfb-field__help\">Billed at $15 per seat.<\/p><div class=\"mfb-field__error\" style=\"display:none;\" role=\"alert\" aria-live=\"polite\"><\/div><\/div><\/div><\/div><input type=\"hidden\" name=\"quoted_total\" value=\"\" data-mf-block-id=\"el-f7fdcb41-705f-41a2-a6e7-49f2145da6aa\">\t\t\t<\/div>\n\t\t<\/form>\n\t\t<\/div>\n\t\t\n\n\n\n<script>\n(function(){\n\"use strict\";\nvar FR=\/^\\\/fr\\\/\/.test(window.location.pathname);\nvar STR={\nen:{eyebrow:\"MONTREAL ROYAL LIMO \\u2022 BOOK ONLINE\",h1:\"Book Online\",lede:\"Book any ride in four simple steps \\u2014 airport transfers, city rides, hourly charters and long-distance trips across Quebec and beyond.\",refLabel:\"Your booking reference\",st1:\"Enter Ride Details\",st2:\"Choose a Vehicle\",st3:\"Enter Contact Details\",st4:\"Booking Summary\",tabD:\"DISTANCE\",tabH:\"HOURLY\",fDate:\"Pickup Date\",fTime:\"Pickup Time\",fPickup:\"Pickup Location\",fDrop:\"Drop-off Location\",fTransfer:\"Transfer Type\",oneWay:\"One Way\",ret:\"Return\",fPax:\"Passengers\",fHours:\"Hours\",fExtra:\"Extra Time (hours)\",fFlight:\"Flight number (optional)\",addStop:\"Add a stop\",removeStop:\"Remove\",note3h:\"Please note: instant bookings require at least 3 hours\\u2019 notice before pickup. For urgent pickups, call us at +1 (514) 705-0850.\",toVeh:\"Choose a Vehicle\",back:\"Back\",toContact:\"Continue\",toSummary:\"Review Booking\",submit:\"Submit Booking\",vEsc:\"Premium SUV\",vSub:\"Standard SUV\",vSpr:\"Executive Van\",seats:\"seats\",bags:\"bags\",stdBags:\"standard bags\",carry:\"hand carry-ons\",distOnly:\"Distance bookings only\",addons:\"Add options\",oMeet:\"Meet-and-greet\",oChild:\"Child seat\",oBoost:\"Booster seat\",each:\"each\",add:\"Add\",added:\"Added\",fName:\"Full name\",fEmail:\"Email\",fPhone:\"Phone\",ack:\"I acknowledge and agree to proceed\",okH:\"Booking received\",okRef:\"Your reservation number is\",okMsg:\"Booking received \\u2014 our team will send you a payment link.\",mapPh:\"Your route map appears here once pickup and drop-off are set.\",tDist:\"TOTAL DISTANCE\",tTime:\"TOTAL TIME\",billTitle:\"Your Quote\",billPh:\"Enter your pickup and drop-off to see your fare.\",rBase:\"Base fare\",rSub:\"Subtotal\",rTax:\"Taxes (14.975%)\",rTip:\"Tip\",rTotal:\"Total\",totalIs:\"Your total bill is\",sumRide:\"Ride\",sumVehicle:\"Vehicle\",sumContact:\"Contact\",sumService:\"Service\",sumDistance:\"Distance\",sumWhen:\"Pickup\",sumFrom:\"From\",sumTo:\"To\",sumStops:\"Stops\",sumTransfer:\"Transfer\",sumHours:\"Hours\",sumAddons:\"Options\",sumRef:\"Reference\",hourlyTag:\"Hourly\",distTag:\"Distance\",hourlyDrop:\"Hourly charter \\u2014 as directed\",errDate:\"Please choose a pickup date.\",errTime:\"Please choose a pickup time.\",errFrom:\"Please choose a pickup location from the suggestions.\",errTo:\"Please choose a drop-off location from the suggestions.\",errRoute:\"Please wait while we calculate your route\\u2026\",errVeh:\"Please choose a vehicle.\",errName:\"Please enter your full name.\",errEmail:\"Please enter a valid email address.\",errPhone:\"Please enter your phone number.\",errSoon:\"Instant bookings require at least 3 hours\\u2019 notice before pickup. Please choose a later time, or call us at +1 (514) 705-0850.\",errSend:\"Something went wrong while sending your request. Please call us at +1 (514) 705-0850 and we will book it with you directly.\",sending:\"Sending\\u2026\",noRoute:\"We could not calculate a route for these addresses. Please check them or call us at +1 (514) 705-0850.\",phAddr:\"Start typing an address\\u2026\",phFlight:\"e.g. AC 422\",metaW:\"[Book Online \\u00b7 {mode} \\u00b7 {transfer} \\u00b7 Tip {tip}%{stops}]\",via:\"via\",oneWayM:\"One Way\",retM:\"Return\",distM:\"Distance\",hourlyM:\"Hourly\"},\nfr:{eyebrow:\"MONTREAL ROYAL LIMO \\u2022 R\\u00c9SERVATION EN LIGNE\",h1:\"R\\u00e9server en ligne\",lede:\"R\\u00e9servez n\\u2019importe quel trajet en quatre \\u00e9tapes simples \\u2014 transferts a\\u00e9roport, courses en ville, nolisement \\u00e0 l\\u2019heure et longs trajets partout au Qu\\u00e9bec et au-del\\u00e0.\",refLabel:\"Votre num\\u00e9ro de r\\u00e9servation\",st1:\"D\\u00e9tails du trajet\",st2:\"Choisir un v\\u00e9hicule\",st3:\"Coordonn\\u00e9es\",st4:\"R\\u00e9sum\\u00e9 de la r\\u00e9servation\",tabD:\"DISTANCE\",tabH:\"\\u00c0 L\\u2019HEURE\",fDate:\"Date de prise en charge\",fTime:\"Heure de prise en charge\",fPickup:\"Lieu de prise en charge\",fDrop:\"Lieu de d\\u00e9pose\",fTransfer:\"Type de transfert\",oneWay:\"Aller simple\",ret:\"Aller-retour\",fPax:\"Passagers\",fHours:\"Heures\",fExtra:\"Temps suppl\\u00e9mentaire (heures)\",fFlight:\"Num\\u00e9ro de vol (facultatif)\",addStop:\"Ajouter un arr\\u00eat\",removeStop:\"Retirer\",note3h:\"Veuillez noter : les r\\u00e9servations instantan\\u00e9es exigent un pr\\u00e9avis d\\u2019au moins 3 heures avant la prise en charge. Pour les prises en charge urgentes, appelez-nous au +1 (514) 705-0850.\",toVeh:\"Choisir un v\\u00e9hicule\",back:\"Retour\",toContact:\"Continuer\",toSummary:\"V\\u00e9rifier la r\\u00e9servation\",submit:\"Envoyer la r\\u00e9servation\",vEsc:\"VUS de luxe\",vSub:\"VUS standard\",vSpr:\"Fourgon ex\\u00e9cutif\",seats:\"places\",bags:\"bagages\",stdBags:\"bagages standard\",carry:\"bagages \u00e0 main\",distOnly:\"R\\u00e9servations \\u00e0 distance seulement\",addons:\"Options suppl\\u00e9mentaires\",oMeet:\"Accueil personnalis\\u00e9\",oChild:\"Si\\u00e8ge d\\u2019enfant\",oBoost:\"Si\\u00e8ge d\\u2019appoint\",each:\"chacun\",add:\"Ajouter\",added:\"Ajout\\u00e9\",fName:\"Nom complet\",fEmail:\"Courriel\",fPhone:\"T\\u00e9l\\u00e9phone\",ack:\"Je reconnais et j\\u2019accepte de continuer\",okH:\"R\\u00e9servation re\\u00e7ue\",okRef:\"Votre num\\u00e9ro de r\\u00e9servation est\",okMsg:\"R\\u00e9servation re\\u00e7ue \\u2014 notre \\u00e9quipe vous enverra un lien de paiement.\",mapPh:\"La carte de votre itin\\u00e9raire appara\\u00eetra ici une fois la prise en charge et la d\\u00e9pose saisies.\",tDist:\"DISTANCE TOTALE\",tTime:\"DUR\\u00c9E TOTALE\",billTitle:\"Votre devis\",billPh:\"Saisissez votre prise en charge et votre d\\u00e9pose pour voir votre tarif.\",rBase:\"Tarif de base\",rSub:\"Sous-total\",rTax:\"Taxes (14,975 %)\",rTip:\"Pourboire\",rTotal:\"Total\",totalIs:\"Votre facture totale est de\",sumRide:\"Trajet\",sumVehicle:\"V\\u00e9hicule\",sumContact:\"Contact\",sumService:\"Service\",sumDistance:\"Distance\",sumWhen:\"Prise en charge\",sumFrom:\"De\",sumTo:\"\\u00c0\",sumStops:\"Arr\\u00eats\",sumTransfer:\"Transfert\",sumHours:\"Heures\",sumAddons:\"Options\",sumRef:\"R\\u00e9f\\u00e9rence\",hourlyTag:\"\\u00c0 l\\u2019heure\",distTag:\"Distance\",hourlyDrop:\"Nolis\\u00e9 \\u00e0 l\\u2019heure \\u2014 selon vos directives\",errDate:\"Veuillez choisir une date de prise en charge.\",errTime:\"Veuillez choisir une heure de prise en charge.\",errFrom:\"Veuillez choisir un lieu de prise en charge parmi les suggestions.\",errTo:\"Veuillez choisir un lieu de d\\u00e9pose parmi les suggestions.\",errRoute:\"Veuillez patienter pendant le calcul de votre itin\\u00e9raire\\u2026\",errVeh:\"Veuillez choisir un v\\u00e9hicule.\",errName:\"Veuillez saisir votre nom complet.\",errEmail:\"Veuillez saisir une adresse courriel valide.\",errPhone:\"Veuillez saisir votre num\\u00e9ro de t\\u00e9l\\u00e9phone.\",errSoon:\"Les r\\u00e9servations instantan\\u00e9es exigent un pr\\u00e9avis d\\u2019au moins 3 heures avant la prise en charge. Veuillez choisir un moment plus tardif, ou appelez-nous au +1 (514) 705-0850.\",errSend:\"Une erreur est survenue lors de l\\u2019envoi de votre demande. Veuillez nous appeler au +1 (514) 705-0850 et nous la r\\u00e9serverons avec vous directement.\",sending:\"Envoi en cours\\u2026\",noRoute:\"Nous n\\u2019avons pas pu calculer d\\u2019itin\\u00e9raire pour ces adresses. Veuillez les v\\u00e9rifier ou nous appeler au +1 (514) 705-0850.\",phAddr:\"Commencez \\u00e0 taper une adresse\\u2026\",phFlight:\"p. ex. AC 422\",metaW:\"[R\\u00e9servation en ligne \\u00b7 {mode} \\u00b7 {transfer} \\u00b7 Pourboire {tip} %{stops}]\",via:\"via\",oneWayM:\"Aller simple\",retM:\"Aller-retour\",distM:\"Distance\",hourlyM:\"\\u00c0 l\\u2019heure\"}\n};\nfunction T(k){var s=FR?STR.fr:STR.en;if(s[k]!==undefined){return s[k];}return STR.en[k];}\nfunction $(id){return document.getElementById(id);}\nfunction each(sel,fn){var n=document.querySelectorAll(sel);for(var i=0;i<n.length;i++){fn(n[i],i);}}\nvar FARE={escalade:{base:90,perkm:3.25,label:\"Cadillac Escalade\"},suburban:{base:80,perkm:2.75,label:\"Chevrolet Suburban\"},sprinter:{base:140,perkm:3.75,label:\"Mercedes Sprinter\"}};\nvar YULFLAT={escalade:150,suburban:130,sprinter:250};\nvar HBASE=400,HRATE=400;\nvar YUL={lat:45.4706,lon:-73.7408},DTWN={lat:45.5017,lon:-73.5673};\nvar SEEDS=[\n{n:\"Montreal-Trudeau Airport (YUL)\",a:\"975 boul Rom\\u00e9o-Vachon N, Dorval\",lat:45.4706,lon:-73.7408},\n{n:\"H\\u00f4tel Le Germain Montr\\u00e9al\",a:\"2050 rue Mansfield, Montr\\u00e9al\",lat:45.5025,lon:-73.5738},\n{n:\"Fairmont Le Reine Elizabeth\",a:\"900 boul Ren\\u00e9-L\\u00e9vesque O, Montr\\u00e9al\",lat:45.5007,lon:-73.5678},\n{n:\"Four Seasons Hotel Montreal\",a:\"1440 rue de la Montagne, Montr\\u00e9al\",lat:45.5005,lon:-73.5785},\n{n:\"Ritz-Carlton Montreal\",a:\"1228 rue Sherbrooke O, Montr\\u00e9al\",lat:45.4989,lon:-73.5785},\n{n:\"Hotel Nelligan\",a:\"106 rue Saint-Pierre, Montr\\u00e9al\",lat:45.5077,lon:-73.5538},\n{n:\"Marriott Ch\\u00e2teau Champlain\",a:\"1050 rue de la Gauch\\u00eati\\u00e8re O, Montr\\u00e9al\",lat:45.4968,lon:-73.5712},\n{n:\"Palais des congr\\u00e8s de Montr\\u00e9al\",a:\"1001 place Jean-Paul-Riopelle, Montr\\u00e9al\",lat:45.5052,lon:-73.5624},\n{n:\"Old Port of Montreal\",a:\"Vieux-Port de Montr\\u00e9al\",lat:45.5070,lon:-73.5510},\n{n:\"Olympic Stadium\",a:\"4141 av Pierre-De Coubertin, Montr\\u00e9al\",lat:45.5580,lon:-73.5519},\n{n:\"Quebec City\",a:\"Qu\\u00e9bec, QC\",lat:46.8139,lon:-71.2080},\n{n:\"Ottawa\",a:\"Ottawa, ON\",lat:45.4215,lon:-75.6972},\n{n:\"Parliament Hill\",a:\"Wellington St, Ottawa, ON\",lat:45.4236,lon:-75.7009},\n{n:\"Mont-Tremblant\",a:\"Mont-Tremblant, QC\",lat:46.1185,lon:-74.5967}\n];\nvar S={mode:\"distance\",from:null,to:null,stops:[],km:0,min:0,routeOK:false,transfer:\"oneway\",pax:\"1\",hours:3,extra:0,flight:\"\",vehicle:\"escalade\",meet:false,child:0,boost:0,tip:0.20,name:\"\",email:\"\",phone:\"\",ref:\"MRL-2026-\"+Math.floor(1000+Math.random()*9000),sending:false};\nfunction r2(n){return Math.round(n*100)\/100;}\nfunction money(n){return \"$\"+r2(n).toFixed(2);}\nfunction rad(d){return d*Math.PI\/180;}\nfunction distKm(a,b){var R=6371;var dLa=rad(b.lat-a.lat);var dLo=rad(b.lon-a.lon);var h=Math.sin(dLa\/2)*Math.sin(dLa\/2)+Math.cos(rad(a.lat))*Math.cos(rad(b.lat))*Math.sin(dLo\/2)*Math.sin(dLo\/2);return 2*R*Math.asin(Math.sqrt(h));}\nfunction isYUL(p){if(!p){return false;}if(\/trudeau|yul|pierre elliott\/i.test(p.label||\"\")){return true;}return distKm(p,YUL)<3;}\nfunction inMetro(p){if(!p){return false;}return distKm(p,DTWN)<=40;}\nfunction rawFare(veh,km){var f=FARE[veh];return r2(f.base+f.perkm*km);}\nfunction oneWayFare(veh,km,from,to){var raw=rawFare(veh,km);var yul=isYUL(from);if(!yul){yul=isYUL(to);}var m1=inMetro(from);var m2=false;if(m1){m2=inMetro(to);}if(yul){if(m1){if(m2){return YULFLAT[veh];}}}if(veh===\"escalade\"){if(m1){if(m2){return 150;}}}return raw;}\nfunction hourlyFare(veh){var h=parseInt(S.hours,10)+parseInt(S.extra,10);if(veh===\"escalade\"){return r2(150*h);}if(veh===\"suburban\"){return r2(125*h);}return r2(250*h)}\nfunction baseFare(){if(S.mode===\"hourly\"){return hourlyFare(S.vehicle);}var f=oneWayFare(S.vehicle,S.km,S.from,S.to);if(S.transfer===\"return\"){f=r2(2*rawFare(S.vehicle,S.km));}return f;}\nfunction vehFare(veh){if(S.mode===\"hourly\"){return hourlyFare(veh);}if(!S.routeOK){return null;}var f=oneWayFare(veh,S.km,S.from,S.to);if(S.transfer===\"return\"){f=r2(2*rawFare(veh,S.km));}return f;}\nfunction bill(){var base=baseFare();var items=[];var add=0;if(S.meet){items.push({l:T(\"oMeet\"),a:45});add+=45;}if(S.child>0){items.push({l:T(\"oChild\")+\" \\u00d7 \"+S.child,a:25*S.child});add+=25*S.child;}if(S.boost>0){items.push({l:T(\"oBoost\")+\" \\u00d7 \"+S.boost,a:15*S.boost});add+=15*S.boost;}var sub=r2(base+add);var tax=r2(sub*0.14975);var tip=r2(sub*S.tip);var total=r2(sub+tax+tip);return{base:base,items:items,sub:sub,tax:tax,tip:tip,total:total};}\nfunction billRows(b){var h='<div class=\"mrlb-row\"><span>'+T(\"rBase\")+'<\/span><b>'+money(b.base)+'<\/b><\/div>';for(var i=0;i<b.items.length;i++){h+='<div class=\"mrlb-row\"><span>'+b.items[i].l+'<\/span><b>+'+money(b.items[i].a)+'<\/b><\/div>';}h+='<div class=\"mrlb-row\"><span>'+T(\"rSub\")+'<\/span><b>'+money(b.sub)+'<\/b><\/div>';h+='<div class=\"mrlb-row\"><span>'+T(\"rTax\")+'<\/span><b>'+money(b.tax)+'<\/b><\/div>';h+='<div class=\"mrlb-row\"><span>'+T(\"rTip\")+' ('+Math.round(S.tip*100)+'%)<\/span><b>'+money(b.tip)+'<\/b><\/div>';h+='<div class=\"mrlb-row mrlb-total\"><span>'+T(\"rTotal\")+'<\/span><b>'+money(b.total)+'<\/b><\/div>';h+='<p class=\"mrlb-totalis\">'+T(\"totalIs\")+' <b>'+money(b.total)+'<\/b><\/p>';return h;}\nfunction renderBill(){var el=$(\"mrlb-bill\");if(!el){return;}var ready=S.mode===\"hourly\"?true:S.routeOK;var h='<h3 class=\"mrlb-bill-t\">'+T(\"billTitle\")+'<\/h3>';if(!ready){el.innerHTML=h+'<p class=\"mrlb-bill-ph\">'+T(\"billPh\")+'<\/p>';return;}var b=bill();h+='<div class=\"mrlb-row mrlb-tiprow\"><span>'+T(\"rTip\")+'<\/span><span class=\"mrlb-tips\">';var rates=[0.15,0.20,0.25];for(var i=0;i<rates.length;i++){h+='<button type=\"button\" data-tip=\"'+rates[i]+'\"'+(S.tip===rates[i]?' class=\"is-on\"':'')+'>'+Math.round(rates[i]*100)+'%<\/button>';}h+='<\/span><\/div>';h+=billRows(b);el.innerHTML=h;var btns=el.querySelectorAll(\"[data-tip]\");for(var j=0;j<btns.length;j++){btns[j].addEventListener(\"click\",function(){S.tip=parseFloat(this.getAttribute(\"data-tip\"));renderBill();if(curPanel()===\"4\"){renderSummary();}});}}\nfunction renderVehPrices(){each(\"#mrlb-vehs .mrlb-veh\",function(c){var v=c.getAttribute(\"data-veh\");var pe=c.querySelector(\"[data-price]\");var f=vehFare(v);pe.textContent=(f===null)?\"\\u2014\":money(f);c.classList.remove(\"is-off\");if(S.vehicle===v){c.classList.add(\"is-sel\");}else{c.classList.remove(\"is-sel\");}});}\nfunction fmtDur(min){var h=Math.floor(min\/60);var m=min%60;if(h<=0){return m+\" min\";}var ms=m<10?\"0\"+m:\"\"+m;return h+\" h \"+ms;}\nfunction paintTotals(){if(S.mode===\"hourly\"){$(\"mrlb-dist\").textContent=\"\\u2014\";var h=S.hours+S.extra;$(\"mrlb-time-tot\").textContent=h+\" h\";}else{if(S.routeOK){$(\"mrlb-dist\").textContent=S.km.toFixed(1)+\" km\";$(\"mrlb-time-tot\").textContent=fmtDur(S.min);}else{$(\"mrlb-dist\").textContent=\"\\u2014\";$(\"mrlb-time-tot\").textContent=\"\\u2014\";}}}\nvar map=null,routeLine=null,markers=[];\nfunction ensureMap(){if(typeof window.L===\"undefined\"){return false;}if(!map){map=window.L.map(\"mrlb-map\",{scrollWheelZoom:false});map.setView([45.55,-73.7],10);window.L.tileLayer(\"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png\",{maxZoom:18,attribution:\"\\u00a9 OpenStreetMap contributors\"}).addTo(map);}return true;}\nfunction drawRoute(coords){if(!ensureMap()){return;}var ph=$(\"mrlb-map\").querySelector(\".mrlb-map-ph\");if(ph){ph.style.display=\"none\";}var ll=[];for(var i=0;i<coords.length;i++){ll.push([coords[i][1],coords[i][0]]);}if(routeLine){map.removeLayer(routeLine);routeLine=null;}for(var k=0;k<markers.length;k++){map.removeLayer(markers[k]);}markers=[];routeLine=window.L.polyline(ll,{color:\"#c6a15b\",weight:4}).addTo(map);var pts=[S.from].concat(S.stops).concat([S.to]);for(var j=0;j<pts.length;j++){if(pts[j]){markers.push(window.L.marker([pts[j].lat,pts[j].lon]).addTo(map));}}map.fitBounds(routeLine.getBounds().pad(0.25));}\nfunction seedMatch(q){q=q.toLowerCase();var out=[];for(var i=0;i<SEEDS.length;i++){var s=SEEDS[i];if((s.n+\" \"+s.a).toLowerCase().indexOf(q)>-1){out.push({label:s.n+\", \"+s.a,lat:s.lat,lon:s.lon});}if(out.length>=6){break;}}return out;}\nfunction nominatim(q,cb){var url=\"https:\/\/nominatim.openstreetmap.org\/search?format=jsonv2&limit=6&countrycodes=ca,us&q=\"+encodeURIComponent(q);fetch(url).then(function(r){return r.json();}).then(function(j){var out=[];for(var i=0;i<j.length;i++){out.push({label:j[i].display_name,lat:parseFloat(j[i].lat),lon:parseFloat(j[i].lon)});}cb(out);}).catch(function(){cb([]);});}\nvar nomTimer=null;\nfunction hideSug(sug){sug.hidden=true;sug.innerHTML=\"\";}\nfunction renderSug(list,inp,sug,setFn){if(!list.length){hideSug(sug);return;}sug.innerHTML=\"\";for(var i=0;i<list.length;i++){(function(p){var b=document.createElement(\"button\");b.type=\"button\";b.className=\"mrlb-sug-i\";b.textContent=p.label;b.addEventListener(\"mousedown\",function(e){e.preventDefault();inp.value=p.label;setFn(p);hideSug(sug);scheduleRoute();});sug.appendChild(b);})(list[i]);}sug.hidden=false;}\nfunction wireAutocomplete(inputId,sugId,setFn){var inp=$(inputId);var sug=$(sugId);inp.addEventListener(\"input\",function(){var q=inp.value.trim();setFn(null);hideSug(sug);S.routeOK=false;paintTotals();renderBill();renderVehPrices();if(q.length<2){return;}var seeds=seedMatch(q);renderSug(seeds,inp,sug,setFn);if(q.length>=3){if(nomTimer){clearTimeout(nomTimer);}nomTimer=setTimeout(function(){nominatim(q,function(res){var seen={};var all=[];var combo=seeds.concat(res);for(var i=0;i<combo.length;i++){var k=combo[i].label;if(!seen[k]){seen[k]=1;all.push(combo[i]);}if(all.length>=8){break;}}var cur=document.activeElement;if(cur===inp){renderSug(all,inp,sug,setFn);}});},450);}});inp.addEventListener(\"blur\",function(){var self=this;setTimeout(function(){hideSug(sug);},220);});}\nvar routeTimer=null,routeSeq=0;\nfunction scheduleRoute(){if(routeTimer){clearTimeout(routeTimer);}routeTimer=setTimeout(updateRoute,600);}\nfunction updateRoute(){S.routeOK=false;if(S.mode===\"hourly\"){paintTotals();renderBill();renderVehPrices();return;}if(!S.from||!S.to){paintTotals();renderBill();renderVehPrices();return;}var pts=[S.from].concat(S.stops).concat([S.to]);var ok=true;for(var i=0;i<pts.length;i++){if(!pts[i]){ok=false;}}if(!ok){paintTotals();renderBill();renderVehPrices();return;}var cs=pts.map(function(p){return p.lon+\",\"+p.lat;}).join(\";\");var my=++routeSeq;fetch(\"https:\/\/router.project-osrm.org\/route\/v1\/driving\/\"+cs+\"?overview=full&#038;geometries=geojson\").then(function(r){if(!r.ok){throw new Error(\"osrm\");}return r.json();}).then(function(d){if(my!==routeSeq){return;}if(!d.routes||!d.routes.length){throw new Error(\"osrm\");}var rt=d.routes[0];S.km=r2(rt.distance\/1000);S.min=Math.round(rt.duration\/60);S.routeOK=true;paintTotals();drawRoute(rt.geometry.coordinates);renderBill();renderVehPrices();}).catch(function(){if(my!==routeSeq){return;}S.routeOK=false;paintTotals();renderBill();renderVehPrices();});}\nfunction pickupDT(){var d=$(\"mrlb-date\").value;var tm=$(\"mrlb-time\").value;if(!d||!tm){return null;}var p=d.split(\"-\");return new Date(parseInt(p[0],10),parseInt(p[1],10)-1,parseInt(p[2],10),parseInt(tm.slice(0,2),10),parseInt(tm.slice(3,5),10));}\nfunction tooSoon(){var dt=pickupDT();if(!dt){return false;}return(dt.getTime()-Date.now())<3*3600*1000;}\nfunction showAlert(msg){var a=$(\"mrlb-alert\");a.textContent=msg;a.hidden=false;try{a.scrollIntoView({behavior:\"smooth\",block:\"nearest\"});}catch(e){}}\nfunction hideAlert(){var a=$(\"mrlb-alert\");a.hidden=true;a.textContent=\"\";}\nfunction goPanel(n){each(\".mrlb-panel\",function(p){p.hidden=p.getAttribute(\"data-panel\")!==String(n);});each(\"#mrlb-steps .mrlb-step\",function(st){var s=parseInt(st.getAttribute(\"data-s\"),10);st.classList.toggle(\"is-active\",s===n);st.classList.toggle(\"is-done\",s<n);});hideAlert();var w=$(\"mrlb\");if(w){try{w.scrollIntoView({behavior:\"smooth\",block:\"start\"});}catch(e){}}}\nfunction curPanel(){var ps=document.querySelectorAll(\".mrlb-panel\");for(var i=0;i<ps.length;i++){if(!ps[i].hidden){return ps[i].getAttribute(\"data-panel\");}}return \"1\";}\nfunction validStep1(){if(!$(\"mrlb-date\").value){return T(\"errDate\");}if(!$(\"mrlb-time\").value){return T(\"errTime\");}if(!S.from){return T(\"errFrom\");}if(S.mode===\"distance\"){if(!S.to){return T(\"errTo\");}var needStop=false;for(var i=0;i<S.stops.length;i++){if(!S.stops[i]){needStop=true;}}if(needStop){return T(\"errFrom\");}if(!S.routeOK){return T(\"errRoute\");}}if(tooSoon()){return T(\"errSoon\");}return null;}\nfunction validEmail(v){return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(v);}\nfunction validContact(){S.name=$(\"mrlb-name\").value.trim();S.email=$(\"mrlb-email\").value.trim();S.phone=$(\"mrlb-phone\").value.trim();if(!S.name){return T(\"errName\");}if(!validEmail(S.email)){return T(\"errEmail\");}var digits=S.phone.replace(\/\\D\/g,\"\");if(digits.length<7){return T(\"errPhone\");}return null;}\nfunction fmtWhen(){var d=$(\"mrlb-date\").value;var tm=$(\"mrlb-time\").value;var p=d.split(\"-\");return p[2]+\"-\"+p[1]+\"-\"+p[0]+\", \"+tm;}\nfunction dlRow(k,v){return '<div class=\"mrlb-dlrow\"><dt>'+k+'<\/dt><dd>'+v+'<\/dd><\/div>';}\nfunction esc(s){return String(s).replace(\/\\u0026\/g,\"\\u0026amp;\").replace(\/<\/g,\"\\u0026lt;\").replace(\/>\/g,\"\\u0026gt;\");}\nfunction renderSummary(){var b=bill();var h='<h3 class=\"mrlb-h3\">'+T(\"sumRide\")+'<\/h3><dl class=\"mrlb-dl\">';h+=dlRow(T(\"sumWhen\"),esc(fmtWhen()));h+=dlRow(T(\"sumService\"),S.mode===\"hourly\"?T(\"hourlyTag\"):T(\"distTag\"));h+=dlRow(T(\"sumFrom\"),esc(S.from?S.from.label:\"\\u2014\"));if(S.mode===\"distance\"){h+=dlRow(T(\"sumTo\"),esc(S.to?S.to.label:\"\\u2014\"));}if(S.stops.length){var sl=[];for(var i=0;i<S.stops.length;i++){if(S.stops[i]){sl.push(S.stops[i].label);}}if(sl.length){h+=dlRow(T(\"sumStops\"),esc(sl.join(\"; \")));}}if(S.mode===\"distance\"){h+=dlRow(T(\"sumTransfer\"),S.transfer===\"return\"?T(\"retM\"):T(\"oneWayM\"));h+=dlRow(T(\"sumDistance\"),S.km.toFixed(1)+\" km\"+(S.transfer===\"return\"?\" \\u00d7 2\":\"\"));}else{h+=dlRow(T(\"sumHours\"),(S.hours+S.extra)+\" h\");}h+=dlRow(T(\"sumVehicle\"),FARE[S.vehicle].label);h+=dlRow(T(\"fPax\"),S.pax);if(S.flight){h+=dlRow(T(\"fFlight\"),esc(S.flight));}h+='<\/dl><h3 class=\"mrlb-h3\">'+T(\"sumContact\")+'<\/h3><dl class=\"mrlb-dl\">';h+=dlRow(T(\"fName\"),esc(S.name));h+=dlRow(T(\"fEmail\"),esc(S.email));h+=dlRow(T(\"fPhone\"),esc(S.phone));h+='<\/dl><h3 class=\"mrlb-h3\">'+T(\"billTitle\")+'<\/h3>';h+=billRows(b);h+=dlRow(T(\"sumRef\"),S.ref);$(\"mrlb-summary\").innerHTML=h;}\nfunction metaSuffix(){var s=T(\"metaW\");var stops=\"\";if(S.stops.length){var sl=[];for(var i=0;i<S.stops.length;i++){if(S.stops[i]){sl.push(S.stops[i].label);}}if(sl.length){stops=\" \\u00b7 \"+T(\"via\")+\": \"+sl.join(\"; \");}}var mode=S.mode===\"hourly\"?T(\"hourlyM\"):T(\"distM\");var tr=S.transfer===\"return\"?T(\"retM\"):T(\"oneWayM\");s=s.split(\"{mode}\").join(mode);s=s.split(\"{transfer}\").join(tr);s=s.split(\"{tip}\").join(String(Math.round(S.tip*100)));s=s.split(\"{stops}\").join(stops);return s;}\nfunction mfWrap(){return $(\"mrlb-mfwrap\");}\nfunction fireEl(el){var evs=[\"input\",\"change\"];for(var i=0;i<evs.length;i++){var e;try{e=new Event(evs[i],{bubbles:true});}catch(err){e=document.createEvent(\"Event\");e.initEvent(evs[i],true,true);}el.dispatchEvent(e);}}\nfunction mfSet(name,val){var w=mfWrap();if(!w){return;}var el=w.querySelector('[name=\"'+name+'\"]');if(!el){el=w.querySelector('[name=\"'+name+'[]\"]');}if(!el){return;}if(el.type===\"checkbox\"){el.checked=!!val;}else{el.value=val;}fireEl(el);}\nfunction mfSetSelect(name,val){var w=mfWrap();if(!w){return;}var el=w.querySelector('select[name=\"'+name+'\"]');if(!el){el=w.querySelector('select[name=\"'+name+'[]\"]');}if(!el){return;}var opt=null;var opts=el.options;for(var i=0;i<opts.length;i++){if(opts[i].value===val||opts[i].text===val){opt=opts[i];break;}}if(opt){el.value=opt.value;}else{el.value=val;}fireEl(el);}\nfunction mfSetByLabel(words,val){var w=mfWrap();if(!w){return false;}var inputs=w.querySelectorAll(\"input\");for(var i=0;i<inputs.length;i++){var inp=inputs[i];var tp=(inp.getAttribute(\"type\")||\"text\").toLowerCase();if(tp===\"hidden\"||tp===\"checkbox\"||tp===\"submit\"||tp===\"radio\"||tp===\"button\"){continue;}var node=inp;var lab=\"\";for(var d=0;d<6;d++){node=node.parentElement;if(!node){break;}var l=node.querySelector(\":scope > label\");if(!l){var ls=node.getElementsByTagName(\"label\");if(ls.length){l=ls[0];}}if(l){lab=(l.textContent||\"\").toLowerCase();break;}}for(var k=0;k<words.length;k++){if(lab.indexOf(words[k])>-1){inp.value=val;fireEl(inp);return true;}}}return false;}\nfunction mfDateStr(){var d=$(\"mrlb-date\").value;var p=d.split(\"-\");return p[2]+\"-\"+p[1]+\"-\"+p[0];}\nfunction mfTimeStr(){var tm=$(\"mrlb-time\").value;var h=parseInt(tm.slice(0,2),10);var m=tm.slice(3,5);var ap=h>=12?\"PM\":\"AM\";var h12=h%12;if(h12===0){h12=12;}return h12+\":\"+m+\" \"+ap;}\nfunction fillMetForm(){\nvar b=bill();\nvar fromLabel=S.from?S.from.label:\"\";\nmfSet(\"pickup_location\",fromLabel+\" \"+metaSuffix());\nif(S.mode===\"hourly\"){mfSet(\"dropoff_location\",T(\"hourlyDrop\"));}else{mfSet(\"dropoff_location\",S.to?S.to.label:\"\");}\nmfSet(\"pickup_date\",mfDateStr());\nmfSet(\"pickup_time\",mfTimeStr());\nmfSet(\"flight_number\",S.flight);\nmfSetSelect(\"passengers\",S.pax);\nmfSetSelect(\"vehicle\",FARE[S.vehicle].label);\nif(S.mode===\"hourly\"){mfSetSelect(\"sprinter_hours\",String(S.hours+S.extra));}else{mfSetSelect(\"sprinter_hours\",\"1\");}\nmfSetSelect(\"child_seat\",String(S.child));\nmfSetSelect(\"booster_seat\",String(S.boost));\nmfSet(\"meet_greet\",S.meet);\nmfSet(\"quoted_total\",b.total.toFixed(2));\nmfSet(\"booking_reference\",S.ref);\nif(!mfSetByLabel([\"full name\",\"nom complet\",\"nom\"],S.name)){mfSet(\"full_name\",S.name);}\nif(!mfSetByLabel([\"email\",\"courriel\"],S.email)){mfSet(\"email\",S.email);var w=mfWrap();var em=w.querySelector('input[type=\"email\"]');if(em){em.value=S.email;fireEl(em);}}\nif(!mfSetByLabel([\"phone\",\"t\\u00e9l\\u00e9phone\",\"tel\"],S.phone)){mfSet(\"phone\",S.phone);}\n}\nvar mo=null;\nfunction watchSuccess(){var w=mfWrap();if(!w){return;}if(mo){mo.disconnect();}mo=new MutationObserver(function(){var tx=w.innerText||\"\";if(\/thank you\/i.test(tx)){if(\/submitted successfully\/i.test(tx)){onMfSuccess();}}});mo.observe(w,{childList:true,subtree:true,characterData:true});}\nfunction onMfSuccess(){S.sending=false;if(mo){mo.disconnect();mo=null;}var sb=$(\"mrlb-submit\");sb.disabled=false;sb.textContent=T(\"submit\");$(\"mrlb-ok-ref\").textContent=S.ref;$(\"mrlb-ok-bill\").innerHTML=billRows(bill());goPanel(\"ok\");}\nfunction failSend(){S.sending=false;var sb=$(\"mrlb-submit\");sb.disabled=false;sb.textContent=T(\"submit\");showAlert(T(\"errSend\"));}\nfunction doSubmit(){if(S.sending){return;}var e1=validStep1();if(e1){showAlert(e1);return;}var e2=validContact();if(e2){showAlert(e2);return;}if(!S.vehicle){showAlert(T(\"errVeh\"));return;}if(!$(\"mrlb-ack\").checked){showAlert(T(\"ack\"));return;}S.sending=true;var sb=$(\"mrlb-submit\");sb.disabled=true;sb.textContent=T(\"sending\");try{fillMetForm();}catch(err){failSend();return;}var w=mfWrap();var btn=w?w.querySelector('button[type=\"submit\"]'):null;if(!btn){btn=w?w.querySelector('input[type=\"submit\"]'):null;}if(!btn){failSend();return;}watchSuccess();try{btn.click();}catch(err){failSend();return;}setTimeout(function(){if(S.sending){failSend();}},25000);}\nfunction applyI18n(){each(\"[data-i18n]\",function(el){el.textContent=T(el.getAttribute(\"data-i18n\"));});each(\"[data-i18n-ph]\",function(el){el.setAttribute(\"placeholder\",T(el.getAttribute(\"data-i18n-ph\")));});}\nfunction addStopRow(){if(S.stops.length>=2){return;}var idx=S.stops.length;S.stops.push(null);var wrap=$(\"mrlb-stops\");var div=document.createElement(\"div\");div.className=\"mrlb-stop\";var inp=document.createElement(\"input\");inp.type=\"text\";inp.setAttribute(\"autocomplete\",\"off\");inp.setAttribute(\"placeholder\",T(\"phAddr\"));var sug=document.createElement(\"div\");sug.className=\"mrlb-sug\";sug.hidden=true;var rm=document.createElement(\"button\");rm.type=\"button\";rm.className=\"mrlb-linkbtn\";rm.textContent=\"\\u00d7 \"+T(\"removeStop\");div.appendChild(inp);div.appendChild(sug);div.appendChild(rm);wrap.appendChild(div);rm.addEventListener(\"click\",function(){S.stops.splice(idx,1);div.parentNode.removeChild(div);reindexStops();scheduleRoute();});wireStopInput(inp,sug,idx);inp.focus();}\nfunction reindexStops(){var rows=$(\"mrlb-stops\").querySelectorAll(\".mrlb-stop\");for(var i=0;i<rows.length;i++){rows[i].querySelector(\"input\").setAttribute(\"data-idx\",i);}}\nfunction wireStopInput(inp,sug,idx){inp.setAttribute(\"data-idx\",idx);inp.addEventListener(\"input\",function(){var q=inp.value.trim();var ix=parseInt(inp.getAttribute(\"data-idx\"),10);S.stops[ix]=null;hideSug(sug);S.routeOK=false;paintTotals();renderBill();renderVehPrices();if(q.length<2){return;}var seeds=seedMatch(q);renderStopSug(seeds,inp,sug,ix);if(q.length>=3){setTimeout(function(){nominatim(q,function(res){if(document.activeElement!==inp){return;}var seen={};var all=[];var combo=seeds.concat(res);for(var i=0;i<combo.length;i++){var k=combo[i].label;if(!seen[k]){seen[k]=1;all.push(combo[i]);}if(all.length>=8){break;}}renderStopSug(all,inp,sug,ix);});},450);}});inp.addEventListener(\"blur\",function(){setTimeout(function(){hideSug(sug);},220);});}\nfunction renderStopSug(list,inp,sug,ix){if(!list.length){hideSug(sug);return;}sug.innerHTML=\"\";for(var i=0;i<list.length;i++){(function(p){var b=document.createElement(\"button\");b.type=\"button\";b.className=\"mrlb-sug-i\";b.textContent=p.label;b.addEventListener(\"mousedown\",function(e){e.preventDefault();inp.value=p.label;var ii=parseInt(inp.getAttribute(\"data-idx\"),10);S.stops[ii]=p;hideSug(sug);scheduleRoute();});sug.appendChild(b);})(list[i]);}sug.hidden=false;}\nfunction init(){\napplyI18n();\n$(\"mrlb-ref\").textContent=S.ref;\nvar now=new Date();var iso=now.getFullYear()+\"-\"+(\"0\"+(now.getMonth()+1)).slice(-2)+\"-\"+(\"0\"+now.getDate()).slice(-2);$(\"mrlb-date\").setAttribute(\"min\",iso);\nwireAutocomplete(\"mrlb-pickup\",\"mrlb-pickup-sug\",function(p){S.from=p;});\nwireAutocomplete(\"mrlb-dropoff\",\"mrlb-dropoff-sug\",function(p){S.to=p;});\n$(\"mrlb-addstop\").addEventListener(\"click\",addStopRow);\neach(\".mrlb-tab\",function(b){b.addEventListener(\"click\",function(){each(\".mrlb-tab\",function(x){x.classList.remove(\"is-active\");});b.classList.add(\"is-active\");S.mode=b.getAttribute(\"data-mode\");var dh=S.mode===\"hourly\";each('[data-dist=\"1\"]',function(el){el.style.display=dh?\"none\":\"\";});each('[data-hourly=\"1\"]',function(el){el.hidden=!dh;});S.routeOK=false;S.km=0;S.min=0;scheduleRoute();renderVehPrices();renderBill();paintTotals();});});\neach(\"#mrlb-transfer .mrlb-pill\",function(b){b.addEventListener(\"click\",function(){each(\"#mrlb-transfer .mrlb-pill\",function(x){x.classList.remove(\"is-active\");});b.classList.add(\"is-active\");S.transfer=b.getAttribute(\"data-v\");renderVehPrices();renderBill();});});\n$(\"mrlb-pax\").addEventListener(\"change\",function(){S.pax=this.value;});\n$(\"mrlb-hours\").addEventListener(\"change\",function(){S.hours=parseInt(this.value,10);paintTotals();renderVehPrices();renderBill();});\n$(\"mrlb-extra\").addEventListener(\"change\",function(){S.extra=parseInt(this.value,10);paintTotals();renderVehPrices();renderBill();});\n$(\"mrlb-flight\").addEventListener(\"input\",function(){S.flight=this.value;});\n$(\"mrlb-date\").addEventListener(\"change\",function(){if(tooSoon()){showAlert(T(\"errSoon\"));}else{hideAlert();}});\n$(\"mrlb-time\").addEventListener(\"change\",function(){if(tooSoon()){showAlert(T(\"errSoon\"));}else{hideAlert();}});\neach(\"#mrlb-vehs .mrlb-veh\",function(c){c.addEventListener(\"click\",function(){S.vehicle=c.getAttribute(\"data-veh\");renderVehPrices();renderBill();});});\n$(\"mrlb-meet\").addEventListener(\"click\",function(){S.meet=!S.meet;this.setAttribute(\"aria-pressed\",S.meet?\"true\":\"false\");this.classList.toggle(\"is-on\",S.meet);this.querySelector(\"span\").textContent=S.meet?T(\"added\"):T(\"add\");renderBill();});\neach(\"[data-q]\",function(b){b.addEventListener(\"click\",function(){var q=b.getAttribute(\"data-q\");var d=parseInt(b.getAttribute(\"data-d\"),10);var cur=q===\"child\"?S.child:S.boost;cur+=d;if(cur<0){cur=0;}if(cur>4){cur=4;}if(q===\"child\"){S.child=cur;$(\"mrlb-q-child\").textContent=cur;}else{S.boost=cur;$(\"mrlb-q-boost\").textContent=cur;}renderBill();});});\n$(\"mrlb-to2\").addEventListener(\"click\",function(){var e=validStep1();if(e){showAlert(T(\"errVeh\"));return;}renderVehPrices();goPanel(2);});\n$(\"mrlb-to3\").addEventListener(\"click\",function(){if(!S.vehicle){showAlert(T(\"errVeh\"));return;}goPanel(3);});\n$(\"mrlb-to4\").addEventListener(\"click\",function(){var e=validContact();if(e){showAlert(e);return;}var s=validStep1();if(s){showAlert(s);return;}renderSummary();goPanel(4);});\neach(\"[data-back]\",function(b){b.addEventListener(\"click\",function(){goPanel(parseInt(b.getAttribute(\"data-back\"),10));});});\n$(\"mrlb-ack\").addEventListener(\"change\",function(){$(\"mrlb-submit\").disabled=!this.checked;});\n$(\"mrlb-submit\").addEventListener(\"click\",doSubmit);\nrenderBill();renderVehPrices();paintTotals();goPanel(1);\n}\nif(document.readyState===\"loading\"){document.addEventListener(\"DOMContentLoaded\",init);}else{init();}\n})();\n<\/script>\n\n\n\n<script>\n(function(){\n\"use strict\";\n\/* Fix 1: the main widget builds its OSRM route URL with a literal &#038; sequence\n   (WordPress stored the ampersand as an HTML entity inside the script).\n   At runtime that turns the query string into a URL fragment, dropping the\n   geometries=geojson parameter. Repair it before the request is sent. *\/\nvar _mrlFetch=window.fetch;\nwindow.fetch=function(u,opt){\nif(typeof u===\"string\"){\nif(u.indexOf(\"router.project-osrm.org\")>-1){\nif(u.indexOf(\"&#038;\")>-1){\nu=u.split(\"&#038;\").join(\"&\");\n}\n}\n}\nreturn _mrlFetch.call(this,u,opt);\n};\n\/* Fix 2: the widget HTML contains literal \\uXXXX \/ \\UXXXX sequences\n   (authoring escapes that never render as glyphs in HTML text).\n   Convert them to the real characters in text nodes under #mrlb. *\/\nfunction fixEscapes(){\nvar root=document.getElementById(\"mrlb\");\nif(!root){return;}\nvar walker=document.createTreeWalker(root,NodeFilter.SHOW_TEXT,null,false);\nvar nodes=[];\nvar n;\nwhile((n=walker.nextNode())){\nvar p=n.parentNode;\nif(p){\nvar tn=p.tagName;\nif(tn===\"SCRIPT\"||tn===\"STYLE\"){continue;}\n}\nnodes.push(n);\n}\nfor(var i=0;i<nodes.length;i++){\nvar t=nodes[i].nodeValue;\nif(t.indexOf(\"\\\\u\")>-1||t.indexOf(\"\\\\U\")>-1){\nnodes[i].nodeValue=t.replace(\/\\\\[uU]([0-9a-fA-F]{4})\/g,function(m,hex){\nreturn String.fromCharCode(parseInt(hex,16));\n});\n}\n}\n}\nif(document.readyState===\"loading\"){\ndocument.addEventListener(\"DOMContentLoaded\",fixEscapes);\n}else{\nfixEscapes();\n}\n})();\n<\/script>\n\n\n\n<style>\n\/* MRL Book Online - calendar and time pickers (2026-10-23) *\/\n#mrlb-date.mrlbp-off,#mrlb-time.mrlbp-off{position:absolute!important;left:-9999px!important;top:0;width:2px;height:2px;opacity:0;pointer-events:none;}\n#mrlb .mrlbp-wrap{position:relative;}\n#mrlb .mrlbp-disp{width:100%;background:#0a0a0c;border:1px solid #2e2e33;color:#ece7db;border-radius:8px;padding:12px 44px 12px 14px!important;font-size:15px;font-family:inherit;box-sizing:border-box;cursor:pointer;}\n#mrlb .mrlbp-disp:focus{border-color:#c6a15b;outline:none;}\n#mrlb .mrlbp-disp::placeholder{color:#6d6a75;}\n#mrlb .mrlbp-icon{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:8px;color:#c6a15b;}\n#mrlb .mrlbp-icon svg{width:20px;height:20px;display:block;fill:currentColor;}\n#mrlb .mrlbp-pop{position:absolute;left:0;right:0;top:calc(100% + 6px);background:#141416;border:1px solid #c6a15b;border-radius:10px;z-index:90;box-shadow:0 12px 30px rgba(0,0,0,.55);overflow:hidden;}\n#mrlb .mrlbp-calhead{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:#0d0d0f;}\n#mrlb .mrlbp-calhead b{color:#e7cd8a;font-size:15px;letter-spacing:.5px;}\n#mrlb .mrlbp-nav{background:none;border:1px solid #c6a15b;color:#e7cd8a;border-radius:6px;width:32px;height:32px;cursor:pointer;font-size:16px;line-height:1;font-family:inherit;}\n#mrlb .mrlbp-nav:hover{background:#c6a15b;color:#111;}\n#mrlb .mrlbp-grid{display:grid;grid-template-columns:repeat(7,1fr);padding:8px 10px 12px;gap:2px;}\n#mrlb .mrlbp-dow{color:#8f8b97;font-size:11px;text-align:center;padding:6px 0;text-transform:uppercase;letter-spacing:1px;}\n#mrlb .mrlbp-day{background:none;border:none;color:#ece7db;border-radius:6px;padding:8px 0;font-size:14px;cursor:pointer;font-family:inherit;}\n#mrlb .mrlbp-day:hover{background:#232327;}\n#mrlb .mrlbp-day.is-dim{color:#55555c;}\n#mrlb .mrlbp-day.is-today{box-shadow:inset 0 0 0 1px #c6a15b;}\n#mrlb .mrlbp-day.is-sel{background:#c6a15b;color:#111;font-weight:700;}\n#mrlb .mrlbp-day:disabled{color:#3a3a40;cursor:not-allowed;background:none;box-shadow:none;}\n#mrlb .mrlbp-times{list-style:none;margin:0;padding:6px;max-height:242px;overflow-y:auto;}\n#mrlb .mrlbp-times li{margin:0;padding:0;list-style:none;}\n#mrlb .mrlbp-times button{display:block;width:100%;text-align:left;background:none;border:none;color:#ece7db;padding:9px 12px;font-size:14px;border-radius:6px;cursor:pointer;font-family:inherit;}\n#mrlb .mrlbp-times button:hover{background:#232327;color:#e7cd8a;}\n@media(max-width:700px){#mrlb .mrlbp-pop{position:fixed;left:12px;right:12px;top:auto;bottom:12px;max-height:72vh;}}\n<\/style>\n<script>\n(function(){\n\"use strict\";\n\/* Calendar date picker + AM\/PM time picker for the Book Online widget.\n   Self-contained (DOM only): it writes machine values (YYYY-MM-DD \/ HH:MM)\n   into the widget's own date\/time inputs and fires change events, so the\n   booking engine, the 3-hour rule and the MetForm bridge keep working. *\/\nvar FR=\/^\\\/fr\\\/\/.test(window.location.pathname);\nvar MO_EN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\nvar MO_EN_S=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];\nvar MO_FR=[\"janvier\",\"f\u00e9vrier\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"ao\u00fbt\",\"septembre\",\"octobre\",\"novembre\",\"d\u00e9cembre\"];\nvar MO_FR_S=[\"janv.\",\"f\u00e9vr.\",\"mars\",\"avr.\",\"mai\",\"juin\",\"juil.\",\"ao\u00fbt\",\"sept.\",\"oct.\",\"nov.\",\"d\u00e9c.\"];\nvar DOW_EN=[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"];\nvar DOW_FR=[\"Di\",\"Lu\",\"Ma\",\"Me\",\"Je\",\"Ve\",\"Sa\"];\nvar POPS=[];\nfunction pad2(n){return (n<10?\"0\":\"\")+n;}\nfunction fmtDateDisp(y,m,d){if(FR){return d+\" \"+MO_FR_S[m-1]+\" \"+y;}return MO_EN_S[m-1]+\" \"+d+\", \"+y;}\nfunction fmtTimeDisp(h,mi){var ap=h<12?\"AM\":\"PM\";var h12=h%12;if(h12===0){h12=12;}return h12+\":\"+pad2(mi)+\" \"+ap;}\nfunction fireChange(el){var ev;try{ev=new Event(\"change\",{bubbles:true});}catch(x){ev=document.createEvent(\"HTMLEvents\");ev.initEvent(\"change\",true,false);}el.dispatchEvent(ev);var ev2;try{ev2=new Event(\"input\",{bubbles:true});}catch(x2){ev2=document.createEvent(\"HTMLEvents\");ev2.initEvent(\"input\",true,false);}el.dispatchEvent(ev2);}\nfunction closePops(){for(var i=0;i<POPS.length;i++){POPS[i].hidden=true;}}\nfunction buildCal(input){\nvar wrap=document.createElement(\"div\");wrap.className=\"mrlbp-wrap\";\nvar disp=document.createElement(\"input\");disp.type=\"text\";disp.readOnly=true;disp.className=\"mrlbp-disp\";\ndisp.placeholder=FR?\"S\u00e9lectionnez une date\":\"Select a date\";\nvar icon=document.createElement(\"button\");icon.type=\"button\";icon.className=\"mrlbp-icon\";icon.setAttribute(\"aria-label\",FR?\"Choisir la date\":\"Pick a date\");\nicon.innerHTML='<svg viewBox=\"0 0 24 24\"><path d=\"M19 4h-1V2h-2v2H8V2H6v2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V10h14v10zM5 8V6h14v2H5z\"\/><\/svg>';\nvar pop=document.createElement(\"div\");pop.className=\"mrlbp-pop\";pop.hidden=true;\nPOPS.push(pop);\nwrap.appendChild(disp);wrap.appendChild(icon);wrap.appendChild(pop);\ninput.parentNode.insertBefore(wrap,input.nextSibling);\nvar today=new Date();today.setHours(0,0,0,0);\nvar viewY=today.getFullYear();\nvar viewM=today.getMonth();\nfunction syncFromInput(){\nvar v=input.value;\nif(v){\nvar p=v.split(\"-\");\nif(p.length===3){\nviewY=parseInt(p[0],10);viewM=parseInt(p[1],10)-1;\ndisp.value=fmtDateDisp(viewY,viewM+1,parseInt(p[2],10));\nreturn;\n}\n}\ndisp.value=\"\";\n}\nfunction render(){\nvar mon=FR?MO_FR:MO_EN;\nvar dows=FR?DOW_FR:DOW_EN;\nvar h='<div class=\"mrlbp-calhead\"><button type=\"button\" class=\"mrlbp-nav\" data-nav=\"-1\" aria-label=\"Previous month\">&#8249;<\/button><b>'+mon[viewM]+' '+viewY+'<\/b><button type=\"button\" class=\"mrlbp-nav\" data-nav=\"1\" aria-label=\"Next month\">&#8250;<\/button><\/div>';\nh+='<div class=\"mrlbp-grid\">';\nvar i;\nfor(i=0;i<7;i++){h+='<div class=\"mrlbp-dow\">'+dows[i]+'<\/div>';}\nvar first=new Date(viewY,viewM,1);\nvar lead=first.getDay();\nvar dim=new Date(viewY,viewM+1,0).getDate();\nvar prevDim=new Date(viewY,viewM,0).getDate();\nvar selY=null,selM=null,selD=null;\nvar v0=input.value;\nif(v0){var pp=v0.split(\"-\");selY=parseInt(pp[0],10);selM=parseInt(pp[1],10)-1;selD=parseInt(pp[2],10);}\nvar cells=[];\nvar k;\nfor(k=lead-1;k>=0;k--){cells.push({d:prevDim-k,m:viewM-1,y:viewY,dim:true});}\nvar d;\nfor(d=1;d<=dim;d++){cells.push({d:d,m:viewM,y:viewY,dim:false});}\nvar n=1;\nwhile(cells.length%7!==0){cells.push({d:n,m:viewM+1,y:viewY,dim:true});n++;}\nfor(var j=0;j<cells.length;j++){\nvar c=cells[j];\nvar yy=c.y,mm=c.m;\nif(mm<0){mm=11;yy--;}\nif(mm>11){mm=0;yy++;}\nvar dis=new Date(yy,mm,c.d)<today;\nvar cls=\"mrlbp-day\";\nif(c.dim){cls+=\" is-dim\";}\nif(yy===today.getFullYear()){if(mm===today.getMonth()){if(c.d===today.getDate()){cls+=\" is-today\";}}}\nif(selY===yy){if(selM===mm){if(selD===c.d){cls+=\" is-sel\";}}}\nh+='<button type=\"button\" class=\"'+cls+'\" data-y=\"'+yy+'\" data-m=\"'+mm+'\" data-d=\"'+c.d+'\"'+(dis?\" disabled\":\"\")+'>'+c.d+'<\/button>';\n}\nh+='<\/div>';\npop.innerHTML=h;\n}\npop.addEventListener(\"click\",function(e){\nvar t=e.target;\nvar nav=t.closest?t.closest(\"[data-nav]\"):null;\nif(nav){\nvar s=parseInt(nav.getAttribute(\"data-nav\"),10);\nviewM+=s;\nif(viewM<0){viewM=11;viewY--;}\nif(viewM>11){viewM=0;viewY++;}\nrender();\nreturn;\n}\nvar day=t.closest?t.closest(\".mrlbp-day\"):null;\nif(day){\nif(day.disabled){return;}\nvar yy=parseInt(day.getAttribute(\"data-y\"),10);\nvar mm=parseInt(day.getAttribute(\"data-m\"),10);\nvar dd=parseInt(day.getAttribute(\"data-d\"),10);\ninput.value=yy+\"-\"+pad2(mm+1)+\"-\"+pad2(dd);\nfireChange(input);\ndisp.value=fmtDateDisp(yy,mm+1,dd);\nviewY=yy;viewM=mm;\nclosePops();\n}\n});\nfunction toggle(){if(pop.hidden){closePops();syncFromInput();render();pop.hidden=false;}else{pop.hidden=true;}}\ndisp.addEventListener(\"click\",toggle);\nicon.addEventListener(\"click\",function(e){e.preventDefault();toggle();});\nsyncFromInput();\n}\nfunction buildTime(input){\nvar wrap=document.createElement(\"div\");wrap.className=\"mrlbp-wrap\";\nvar disp=document.createElement(\"input\");disp.type=\"text\";disp.readOnly=true;disp.className=\"mrlbp-disp\";\ndisp.placeholder=FR?\"S\u00e9lectionnez une heure\":\"Select a time\";\nvar icon=document.createElement(\"button\");icon.type=\"button\";icon.className=\"mrlbp-icon\";icon.setAttribute(\"aria-label\",FR?\"Choisir l'heure\":\"Pick a time\");\nicon.innerHTML='<svg viewBox=\"0 0 24 24\"><path d=\"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm1 10.6l4.2 2.5-.8 1.3L11 13.5V7h2v5.6z\"\/><\/svg>';\nvar pop=document.createElement(\"div\");pop.className=\"mrlbp-pop\";pop.hidden=true;\nPOPS.push(pop);\nvar h='<ul class=\"mrlbp-times\">';\nfor(var hh=0;hh<24;hh++){\nfor(var mi=0;mi<60;mi+=30){\nh+='<li><button type=\"button\" data-h=\"'+hh+'\" data-mi=\"'+mi+'\">'+fmtTimeDisp(hh,mi)+'<\/button><\/li>';\n}\n}\nh+='<\/ul>';\npop.innerHTML=h;\nwrap.appendChild(disp);wrap.appendChild(icon);wrap.appendChild(pop);\ninput.parentNode.insertBefore(wrap,input.nextSibling);\nfunction sync(){\nvar v=input.value;\ndisp.value=\"\";\nif(v){\nvar p=v.split(\":\");\nif(p.length>=2){disp.value=fmtTimeDisp(parseInt(p[0],10),parseInt(p[1],10));}\n}\n}\npop.addEventListener(\"click\",function(e){\nvar t=e.target;\nvar b=t.closest?t.closest(\"button[data-h]\"):null;\nif(!b){return;}\nvar hh2=parseInt(b.getAttribute(\"data-h\"),10);\nvar mi2=parseInt(b.getAttribute(\"data-mi\"),10);\ninput.value=pad2(hh2)+\":\"+pad2(mi2);\nfireChange(input);\ndisp.value=fmtTimeDisp(hh2,mi2);\nclosePops();\n});\nfunction toggle(){if(pop.hidden){closePops();pop.hidden=false;}else{pop.hidden=true;}}\ndisp.addEventListener(\"click\",toggle);\nicon.addEventListener(\"click\",function(e){e.preventDefault();toggle();});\nsync();\n}\nvar _dEl=document.getElementById(\"mrlb-date\");\nvar _tEl=document.getElementById(\"mrlb-time\");\nif(_dEl){if(_tEl){\n_dEl.classList.add(\"mrlbp-off\");\n_tEl.classList.add(\"mrlbp-off\");\nbuildCal(_dEl);\nbuildTime(_tEl);\ndocument.addEventListener(\"click\",function(e){\nvar t=e.target;\nvar inside=t.closest?t.closest(\".mrlbp-wrap\"):null;\nif(!inside){closePops();}\n});\ndocument.addEventListener(\"keydown\",function(e){if(e.key===\"Escape\"){closePops();}});\n}}\n})();\n<\/script>\n\n<script>\n\/* MRL enhancement v5 (2026-10-23): number of vehicles (1-7) multiplying the vehicle fare, passengers dropdown capped by vehicle. FR-safe: no && operator and no literal percent sign anywhere in this script (the \/fr\/ translation layer mangles them). Single add-on script working through the widget DOM; the main booking script, fare table and design are untouched. v5: vehicle range extended to 1-7 per updated spec; refreshAll\/scan adopt a fresh widget render instead of re-applying a stored raw. *\/\n(function(){\n\"use strict\";\nfunction byId(id){return document.getElementById(id);}\nvar VEHN=1;\nvar VMAX=7;\nvar LABELS=['Cadillac Escalade','Chevrolet Suburban','Mercedes Sprinter'];\nvar TAXRATE=0.14975;\nvar BOXIDS=['mrlb-bill','mrlb-summary','mrlb-ok-bill'];\nfunction money(v){return '$'+v.toFixed(2);}\nfunction rowAmt(row){var b=row.querySelector('b');if(!b){return 0;}var t=b.textContent.replace(\/[^0-9.,-]\/g,'').replace(\/,\/g,'');var v=parseFloat(t);return isNaN(v)?0:v;}\nfunction moneyRows(box){var out=[];var rows=box.querySelectorAll('.mrlb-row');for(var i=0;i<rows.length;i++){if(rows[i].querySelector('b')){out.push(rows[i]);}}return out;}\nfunction btnPct(box){var btns=box.querySelectorAll('.mrlb-tips button');for(var i=0;i<btns.length;i++){var c=btns[i].className||'';if(c.indexOf('is-on')>-1){var m=\/(\\d+)\/.exec(btns[i].textContent||'');if(m){return parseInt(m[1],10)\/100;}}}return null;}\nfunction numAfterParen(label){var m=\/\\(\\s*(\\d+(?:[.,]\\d+)?)\/.exec(label||'');if(!m){return null;}return parseFloat(m[1].replace(',','.'))\/100;}\nfunction tipPctFor(box,label,sub,tipAmt){var p=btnPct(box);if(p!==null){return p;}p=numAfterParen(label);if(p!==null){return p;}var cands=[0,0.15,0.2,0.25];if(sub>0){for(var i=0;i<cands.length;i++){if(Math.abs(tipAmt-sub*cands[i])<0.015){return cands[i];}}}return 0.2;}\nfunction readRaw(box){var rows=moneyRows(box);var n=rows.length;if(n<5){return null;}var base=rowAmt(rows[0]);var sub=rowAmt(rows[n-4]);var taxRow=rows[n-3];var tipRow=rows[n-2];var taxLabel=(taxRow.textContent||'');if(\/14\\D*975\/.test(taxLabel)===false){return null;}var tax=rowAmt(taxRow);var tipAmt=rowAmt(tipRow);var tipPct=tipPctFor(box,(tipRow.textContent||''),sub,tipAmt);var addons=sub-base;if(addons<0){addons=0;}return {base:base,addons:addons,sub:sub,tax:tax,tipAmt:tipAmt,tipPct:tipPct};}\nfunction storeRaw(box,raw){box.setAttribute('data-mrlx-raw',JSON.stringify(raw));}\nfunction loadRaw(box){var s=box.getAttribute('data-mrlx-raw');if(!s){return null;}try{return JSON.parse(s);}catch(e){return null;}}\nfunction setMoney(cell,val){var b=cell.querySelector('b');if(b){b.textContent=money(val);}}\nfunction applyBill(box,raw){var rows=moneyRows(box);var n=rows.length;if(n<5){return null;}var base=raw.base*VEHN;var sub=base+raw.addons;var tax=Math.round(sub*TAXRATE*100)\/100;var tip=Math.round(sub*raw.tipPct*100)\/100;var total=Math.round((sub+tax+tip)*100)\/100;for(var i=0;i<n;i++){rows[i].setAttribute('data-mrlx','1');}setMoney(rows[0],base);if(n>5){setMoney(rows[1],raw.addons);}setMoney(rows[n-4],sub);setMoney(rows[n-3],tax);setMoney(rows[n-2],tip);setMoney(rows[n-1],total);storeRaw(box,raw);return total;}\nfunction patchBillFresh(box){var raw=readRaw(box);if(!raw){return;}applyBill(box,raw);}\nfunction isFreshBill(box){var rows=moneyRows(box);for(var i=0;i<rows.length;i++){if(!rows[i].hasAttribute('data-mrlx')){return true;}}return false;}\nfunction scan(){patchCards();for(var i=0;i<BOXIDS.length;i++){var box=byId(BOXIDS[i]);if(!box){continue;}if(isFreshBill(box)){patchBillFresh(box);}}patchSummaryVehicle();}\nfunction scheduleScan(){setTimeout(scan,0);}\nfunction watch(el){if(!el){return;}if(el.getAttribute('data-mrlx-watch')){return;}el.setAttribute('data-mrlx-watch','1');var ob=new MutationObserver(function(){scheduleScan();});ob.observe(el,{childList:true,subtree:true});}\nfunction cardRaw(card){var p=card.querySelector('.mrlb-veh-price');if(!p){return 0;}var t=p.textContent.replace(\/[^0-9.,-]\/g,'').replace(\/,\/g,'');var v=parseFloat(t);return isNaN(v)?0:v;}\nfunction patchCards(){var cards=document.querySelectorAll('#mrlb-vehs .mrlb-veh');for(var i=0;i<cards.length;i++){var p=cards[i].querySelector('.mrlb-veh-price');if(!p){continue;}var raw=cardRaw(cards[i]);if(!cards[i].getAttribute('data-mrlx-raw')){cards[i].setAttribute('data-mrlx-raw',String(raw));}else{var sr=parseFloat(cards[i].getAttribute('data-mrlx-raw'));if(!isNaN(sr)){raw=sr;}}p.textContent=money(raw*VEHN);}}\nfunction repatchCards(){var cards=document.querySelectorAll('#mrlb-vehs .mrlb-veh');for(var i=0;i<cards.length;i++){var p=cards[i].querySelector('.mrlb-veh-price');if(!p){continue;}var sr=parseFloat(cards[i].getAttribute('data-mrlx-raw')||'0');if(isNaN(sr)||sr<=0){sr=cardRaw(cards[i]);cards[i].setAttribute('data-mrlx-raw',String(sr));}p.textContent=money(sr*VEHN);}}\nfunction patchSummaryVehicle(){var sum=byId('mrlb-summary');if(!sum){return;}var rows=sum.querySelectorAll('.mrlb-dlrow');for(var i=0;i<rows.length;i++){var dd=rows[i].querySelector('dd');if(!dd){continue;}var t=dd.textContent.replace(\/^\\s+|\\s+$\/g,'');var lab=t.replace(\/^\\d+\\s*\/,'').replace(\/^[^\\w]+\/,'');if(LABELS.indexOf(lab)>-1){if(VEHN>1){dd.textContent=VEHN+' \\u00d7 '+lab;}else{dd.textContent=lab;}}}}\nfunction refreshAll(){for(var i=0;i<BOXIDS.length;i++){var box=byId(BOXIDS[i]);if(!box){continue;}if(isFreshBill(box)){patchBillFresh(box);}else{var raw=loadRaw(box);if(raw){applyBill(box,raw);}}}repatchCards();patchSummaryVehicle();}\nfunction syncPax(){var vehs=byId('mrlb-vehs');var pax=byId('mrlb-pax');if(!vehs){return;}if(!pax){return;}var sel=vehs.querySelector('.mrlb-veh.is-sel');var max=6;if(sel){var v=sel.getAttribute('data-veh')||'';if(v.indexOf('sprinter')>-1){max=12;}}var cur=parseInt(pax.value,10);if(isNaN(cur)){cur=1;}var html='';for(var i=1;i<=max;i++){html+='<option value=\"'+i+'\"'+(i===Math.min(cur,max)?' selected':'')+'>'+i+'<\/option>';}pax.innerHTML=html;pax.value=String(Math.min(cur,max));var ev=document.createEvent('HTMLEvents');ev.initEvent('change',true,false);pax.dispatchEvent(ev);}\nfunction currentTotal(){for(var i=1;i<BOXIDS.length;i++){var box=byId(BOXIDS[i]);if(!box){continue;}var rows=moneyRows(box);if(rows.length>=5){return rowAmt(rows[rows.length-1]);}}var b0=byId(BOXIDS[0]);if(b0){var r0=moneyRows(b0);if(r0.length>=5){return rowAmt(r0[r0.length-1]);}}return 0;}\nfunction patchMf(){var wrap=byId('mrlb-mfwrap');if(!wrap){return;}var vsel=wrap.querySelector('select[name=\"vehicle\"]');if(vsel){var card=document.querySelector('#mrlb-vehs .mrlb-veh.is-sel');var lab='';if(card){var h=card.querySelector('h4, .mrlb-veh-name');lab=h?h.textContent.replace(\/^\\s+|\\s+$\/g,''):'';}if(!lab){for(var li=0;li<LABELS.length;li++){if(vsel.value.indexOf(LABELS[li])>-1){lab=LABELS[li];break;}}}if(lab){var want=VEHN>1?lab+' ('+VEHN+' vehicles)':lab;var found=false;for(var oi=0;oi<vsel.options.length;oi++){if(vsel.options[oi].text===want||vsel.options[oi].value===want){found=true;vsel.selectedIndex=oi;break;}}if(!found){var op=document.createElement('option');op.text=want;op.value=want;vsel.appendChild(op);vsel.selectedIndex=vsel.options.length-1;}var ev2=document.createEvent('HTMLEvents');ev2.initEvent('change',true,false);vsel.dispatchEvent(ev2);}}var qt=wrap.querySelector('[name=\"quoted_total\"]');if(qt){var t=currentTotal();if(t>0){qt.value=t.toFixed(2);}}}\nfunction init(){\nvar vehs=byId('mrlb-vehs');if(!vehs){return;}\nif(byId('mrlb-vehn')){return;}\nvar fld=document.createElement('div');fld.className='mrlb-field';\nvar lab=document.createElement('label');lab.textContent='Number of vehicles';fld.appendChild(lab);\nvar sel=document.createElement('select');sel.id='mrlb-vehn';\nfor(var i=1;i<=VMAX;i++){var op=document.createElement('option');op.value=String(i);op.textContent=String(i);sel.appendChild(op);}\nfld.appendChild(sel);\nvehs.parentNode.insertBefore(fld,vehs);\nsel.addEventListener('change',function(){var v=parseInt(sel.value,10);if(v>=1){if(v<=VMAX){VEHN=v;}}else{VEHN=1;}repatchCards();refreshAll();});\nsyncPax();\nvar backs=document.querySelectorAll('[data-back]');\nfor(var bi=0;bi<backs.length;bi++){backs[bi].addEventListener('click',function(){setTimeout(syncPax,50);});}\ndocument.addEventListener('click',function(e){var t=e.target;if(!t){return;}if(!t.closest){return;}if(t.closest('#mrlb-mfwrap')){patchMf();}});\ndocument.addEventListener('click',function(e){var t=e.target;if(!t){return;}if(!t.closest){return;}if(t.closest('#mrlb-vehs .mrlb-veh')){syncPax();refreshAll();}});\nfor(var wi=0;wi<BOXIDS.length;wi++){watch(byId(BOXIDS[wi]));}\nwatch(vehs);\nrepatchCards();refreshAll();\n}\nif(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init);}else{init();}\nsetTimeout(init,1200);\n})();\n<\/script>\n\n\n<script>\n\/* MRL enhancement v5.1 (2026-10-23): keep the \"Your total bill is\" line in sync with the itemized Total.\nThe v5 vehicle-count patch multiplies the itemized bill rows but never updated the .mrlb-totalis line,\nso that line kept showing the single-vehicle total. This copies the Total row's own value into the line\nwhenever any quote box changes, for every tab \/ vehicle \/ vehicle count \/ add-on \/ tip combination. *\/\n(function(){\n\"use strict\";\nfunction byId(id){return document.getElementById(id);}\nvar BOXIDS=['mrlb-bill','mrlb-summary','mrlb-ok-bill'];\nfunction syncTotalis(box){\nif(!box){return;}\nvar totalB=box.querySelector('.mrlb-row.mrlb-total b');\nvar lineB=box.querySelector('.mrlb-totalis b');\nif(!totalB){return;}\nif(!lineB){return;}\nvar t=totalB.textContent;\nif(lineB.textContent!==t){lineB.textContent=t;}\n}\nfunction syncAll(){for(var i=0;i<BOXIDS.length;i++){syncTotalis(byId(BOXIDS[i]));}}\nfunction watchBox(box){\nif(!box){return;}\nif(box.getAttribute('data-mrlx-tis')){return;}\nbox.setAttribute('data-mrlx-tis','1');\nvar mo=new MutationObserver(function(){syncTotalis(box);});\nmo.observe(box,{childList:true,subtree:true,characterData:true});\n}\nfunction init(){\nfor(var i=0;i<BOXIDS.length;i++){watchBox(byId(BOXIDS[i]));}\nsyncAll();\n}\nif(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init);}else{init();}\nsetTimeout(init,1500);\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>MONTREAL ROYAL LIMO \\u2022 BOOK ONLINE Book Online Book any ride in four simple steps \\u2014 airport transfers, city rides, hourly charters and long-distance trips across Quebec and beyond. Your booking referenceMRL-2026-0000 1Enter Ride Details 2Choose a Vehicle 3Enter Contact Details 4Booking Summary DISTANCE HOURLY Pickup Date Pickup Time Pickup Location + Add a stop [&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-2449","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Book Online - Montreal Royal Limo<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/montrealroyallimo.ca\/fr\/book-online\/\" \/>\n<meta property=\"og:locale\" content=\"fr_CA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Book Online - Montreal Royal Limo\" \/>\n<meta property=\"og:description\" content=\"MONTREAL ROYAL LIMO u2022 BOOK ONLINE Book Online Book any ride in four simple steps u2014 airport transfers, city rides, hourly charters and long-distance trips across Quebec and beyond. Your booking referenceMRL-2026-0000 1Enter Ride Details 2Choose a Vehicle 3Enter Contact Details 4Booking Summary DISTANCE HOURLY Pickup Date Pickup Time Pickup Location + Add a stop [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/montrealroyallimo.ca\/fr\/book-online\/\" \/>\n<meta property=\"og:site_name\" content=\"Montreal Royal Limo\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-25T12:54:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/montrealroyallimo.ca\/wp-content\/uploads\/2026\/10\/escalade-premium.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimation du temps de lecture\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/book-online\\\/\",\"url\":\"https:\\\/\\\/montrealroyallimo.ca\\\/book-online\\\/\",\"name\":\"Book Online - Montreal Royal Limo\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/book-online\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/book-online\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/montrealroyallimo.ca\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/escalade-premium.jpg\",\"datePublished\":\"2026-10-23T09:37:31+00:00\",\"dateModified\":\"2026-10-25T12:54:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/book-online\\\/#breadcrumb\"},\"inLanguage\":\"fr-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/montrealroyallimo.ca\\\/book-online\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/book-online\\\/#primaryimage\",\"url\":\"https:\\\/\\\/montrealroyallimo.ca\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/escalade-premium.jpg\",\"contentUrl\":\"https:\\\/\\\/montrealroyallimo.ca\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/escalade-premium.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/book-online\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/montrealroyallimo.ca\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Book Online\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/#website\",\"url\":\"https:\\\/\\\/montrealroyallimo.ca\\\/\",\"name\":\"Montreal Royal Limo\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/montrealroyallimo.ca\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-CA\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/#organization\",\"name\":\"Montreal Royal Limo\",\"url\":\"https:\\\/\\\/montrealroyallimo.ca\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/montrealroyallimo.ca\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/mrl-logo-official.png\",\"contentUrl\":\"https:\\\/\\\/montrealroyallimo.ca\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/mrl-logo-official.png\",\"width\":1983,\"height\":793,\"caption\":\"Montreal Royal Limo\"},\"image\":{\"@id\":\"https:\\\/\\\/montrealroyallimo.ca\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Book Online - Montreal Royal Limo","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/montrealroyallimo.ca\/fr\/book-online\/","og_locale":"fr_CA","og_type":"article","og_title":"Book Online - Montreal Royal Limo","og_description":"MONTREAL ROYAL LIMO u2022 BOOK ONLINE Book Online Book any ride in four simple steps u2014 airport transfers, city rides, hourly charters and long-distance trips across Quebec and beyond. Your booking referenceMRL-2026-0000 1Enter Ride Details 2Choose a Vehicle 3Enter Contact Details 4Booking Summary DISTANCE HOURLY Pickup Date Pickup Time Pickup Location + Add a stop [&hellip;]","og_url":"https:\/\/montrealroyallimo.ca\/fr\/book-online\/","og_site_name":"Montreal Royal Limo","article_modified_time":"2026-10-25T12:54:31+00:00","og_image":[{"url":"https:\/\/montrealroyallimo.ca\/wp-content\/uploads\/2026\/10\/escalade-premium.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Estimation du temps de lecture":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/montrealroyallimo.ca\/book-online\/","url":"https:\/\/montrealroyallimo.ca\/book-online\/","name":"Book Online - Montreal Royal Limo","isPartOf":{"@id":"https:\/\/montrealroyallimo.ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/montrealroyallimo.ca\/book-online\/#primaryimage"},"image":{"@id":"https:\/\/montrealroyallimo.ca\/book-online\/#primaryimage"},"thumbnailUrl":"https:\/\/montrealroyallimo.ca\/wp-content\/uploads\/2026\/10\/escalade-premium.jpg","datePublished":"2026-10-23T09:37:31+00:00","dateModified":"2026-10-25T12:54:31+00:00","breadcrumb":{"@id":"https:\/\/montrealroyallimo.ca\/book-online\/#breadcrumb"},"inLanguage":"fr-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/montrealroyallimo.ca\/book-online\/"]}]},{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/montrealroyallimo.ca\/book-online\/#primaryimage","url":"https:\/\/montrealroyallimo.ca\/wp-content\/uploads\/2026\/10\/escalade-premium.jpg","contentUrl":"https:\/\/montrealroyallimo.ca\/wp-content\/uploads\/2026\/10\/escalade-premium.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/montrealroyallimo.ca\/book-online\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/montrealroyallimo.ca\/"},{"@type":"ListItem","position":2,"name":"Book Online"}]},{"@type":"WebSite","@id":"https:\/\/montrealroyallimo.ca\/#website","url":"https:\/\/montrealroyallimo.ca\/","name":"Montreal Royal Limo","description":"","publisher":{"@id":"https:\/\/montrealroyallimo.ca\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/montrealroyallimo.ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-CA"},{"@type":"Organization","@id":"https:\/\/montrealroyallimo.ca\/#organization","name":"Montreal Royal Limo","url":"https:\/\/montrealroyallimo.ca\/","logo":{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/montrealroyallimo.ca\/#\/schema\/logo\/image\/","url":"https:\/\/montrealroyallimo.ca\/wp-content\/uploads\/2026\/10\/mrl-logo-official.png","contentUrl":"https:\/\/montrealroyallimo.ca\/wp-content\/uploads\/2026\/10\/mrl-logo-official.png","width":1983,"height":793,"caption":"Montreal Royal Limo"},"image":{"@id":"https:\/\/montrealroyallimo.ca\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/montrealroyallimo.ca\/fr\/wp-json\/wp\/v2\/pages\/2449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/montrealroyallimo.ca\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/montrealroyallimo.ca\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/montrealroyallimo.ca\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/montrealroyallimo.ca\/fr\/wp-json\/wp\/v2\/comments?post=2449"}],"version-history":[{"count":20,"href":"https:\/\/montrealroyallimo.ca\/fr\/wp-json\/wp\/v2\/pages\/2449\/revisions"}],"predecessor-version":[{"id":2587,"href":"https:\/\/montrealroyallimo.ca\/fr\/wp-json\/wp\/v2\/pages\/2449\/revisions\/2587"}],"wp:attachment":[{"href":"https:\/\/montrealroyallimo.ca\/fr\/wp-json\/wp\/v2\/media?parent=2449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}