{"id":7624,"date":"2026-05-28T11:44:42","date_gmt":"2026-05-28T10:44:42","guid":{"rendered":"https:\/\/vtcmaroc.com\/?page_id=7624"},"modified":"2026-05-28T12:03:06","modified_gmt":"2026-05-28T11:03:06","slug":"devis","status":"publish","type":"page","link":"https:\/\/vtcmaroc.com\/en_US\/devis\/","title":{"rendered":"devis"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7624\" class=\"elementor elementor-7624\">\n\t\t\t\t<div class=\"elementor-element elementor-element-294cc0a e-con e-atomic-element e-flexbox-base e-35ab419 \" data-id=\"294cc0a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"294cc0a\">\n    \t\t<div class=\"elementor-element elementor-element-f0d7e63 elementor-widget elementor-widget-html\" data-id=\"f0d7e63\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0\">\n<title>Demande de devis \u2014 VTCMAROC.COM<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap\" rel=\"stylesheet\">\n<style>\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   VTCMAROC V6 \u2014 DEMANDE DE DEVIS\n   Light Mode \u00b7 Editorial \u00b7 Typo agrandie\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n.vtcr *, .vtcr *::before, .vtcr *::after {\n  box-sizing: border-box; margin: 0; padding: 0;\n  font-family: 'Inter', -apple-system, sans-serif;\n}\n\n.vtcr {\n  --bg:    #ffffff;\n  --bg2:   #fafafa;\n  --bg3:   #f5f5f5;\n  --bg4:   #ededed;\n  --n:     #0a0a0a;\n  --n80:   rgba(10,10,10,0.80);\n  --n50:   rgba(10,10,10,0.55);\n  --n30:   rgba(10,10,10,0.35);\n  --n20:   rgba(10,10,10,0.20);\n  --n08:   rgba(10,10,10,0.06);\n  --n04:   rgba(10,10,10,0.03);\n  --wa:    #25d366;\n  --wa2:   #1aab52;\n  --line:  rgba(10,10,10,0.10);\n  --line2: rgba(10,10,10,0.05);\n  --err:   #d72d2d;\n\n  background: var(--bg);\n  color: var(--n);\n  width: 100%;\n  max-width: 720px;\n  margin: 0 auto;\n  padding: 56px 24px 72px;\n  -webkit-font-smoothing: antialiased;\n}\n\n\/* \u2550\u2550 HERO \u2550\u2550 *\/\n.vtcr .hero {\n  margin-bottom: 56px;\n  position: relative;\n}\n\n.vtcr .hero-bg-num {\n  position: absolute;\n  top: -30px;\n  right: -20px;\n  font-size: 220px;\n  font-weight: 900;\n  color: rgba(10,10,10,0.03);\n  line-height: 1;\n  pointer-events: none;\n  letter-spacing: -0.05em;\n  user-select: none;\n}\n\n.vtcr .hero-title {\n  font-size: clamp(36px, 9vw, 58px);\n  font-weight: 900;\n  line-height: 0.95;\n  letter-spacing: -0.03em;\n  color: var(--n);\n  text-transform: uppercase;\n  margin-bottom: 18px;\n}\n\n.vtcr .hero-title span {\n  color: transparent;\n  -webkit-text-stroke: 1.5px rgba(10,10,10,0.35);\n}\n\n.vtcr .hero-sub {\n  font-size: 16px;\n  font-weight: 400;\n  color: var(--n50);\n  line-height: 1.65;\n  max-width: 440px;\n}\n\n\/* \u2550\u2550 \u00c9TAPES \u2550\u2550 *\/\n.vtcr .steps-line {\n  display: flex;\n  align-items: center;\n  gap: 0;\n  margin-bottom: 44px;\n  border-top: 1px solid var(--line);\n  border-bottom: 1px solid var(--line);\n  padding: 14px 0;\n  overflow-x: auto;\n  scrollbar-width: none;\n}\n\n.vtcr .steps-line::-webkit-scrollbar { display:none; }\n\n.vtcr .sl-item {\n  flex: 1;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 6px;\n  min-width: 64px;\n  position: relative;\n  cursor: default;\n}\n\n.vtcr .sl-item + .sl-item::before {\n  content: '';\n  position: absolute;\n  left: 0;\n  top: 50%;\n  transform: translateY(-50%);\n  height: 22px;\n  width: 1px;\n  background: var(--line);\n}\n\n.vtcr .sl-num {\n  font-size: 24px;\n  font-weight: 900;\n  color: var(--n20);\n  letter-spacing: -0.03em;\n  line-height: 1;\n  transition: all 0.3s ease;\n}\n\n.vtcr .sl-label {\n  font-size: 10px;\n  font-weight: 700;\n  letter-spacing: 0.14em;\n  text-transform: uppercase;\n  color: var(--n20);\n  transition: all 0.3s ease;\n  text-align: center;\n}\n\n.vtcr .sl-item.active .sl-num  { color: var(--n); }\n.vtcr .sl-item.active .sl-label { color: var(--n50); }\n\n.vtcr .sl-item.done .sl-num {\n  color: var(--wa);\n  font-size: 18px;\n}\n\n.vtcr .sl-item.done .sl-label { color: var(--wa); }\n.vtcr .sl-item.done .sl-num-txt { display:none; }\n\n\/* \u2550\u2550 PROGRESS \u2550\u2550 *\/\n.vtcr .prog {\n  height: 1px;\n  background: var(--line);\n  margin-bottom: 52px;\n  position: relative;\n}\n\n.vtcr .prog-fill {\n  height: 1px;\n  background: var(--n);\n  transition: width 0.6s cubic-bezier(0.4,0,0.2,1);\n  position: relative;\n}\n\n.vtcr .prog-fill::after {\n  content: '';\n  position: absolute;\n  right: -3px;\n  top: -3px;\n  width: 7px;\n  height: 7px;\n  border-radius: 50%;\n  background: var(--n);\n  box-shadow: 0 0 10px rgba(10,10,10,0.4);\n}\n\n\/* \u2550\u2550 PANELS \u2550\u2550 *\/\n.vtcr .panel { display: none; }\n\n.vtcr .panel.active {\n  display: block;\n  animation: vtcrSlide 0.38s ease both;\n}\n\n@keyframes vtcrSlide {\n  from { opacity:0; transform:translateY(18px); }\n  to   { opacity:1; transform:translateY(0); }\n}\n\n\/* \u2550\u2550 HEADER PANEL \u2550\u2550 *\/\n.vtcr .ph {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  margin-bottom: 40px;\n  padding-bottom: 22px;\n  border-bottom: 1px solid var(--line);\n}\n\n.vtcr .ph-step {\n  font-size: 13px;\n  font-weight: 700;\n  letter-spacing: 0.22em;\n  text-transform: uppercase;\n  color: var(--n30);\n  margin-bottom: 10px;\n}\n\n.vtcr .ph-title {\n  font-size: clamp(26px, 6.5vw, 36px);\n  font-weight: 900;\n  text-transform: uppercase;\n  letter-spacing: -0.02em;\n  color: var(--n);\n  line-height: 1;\n}\n\n.vtcr .ph-deco {\n  font-size: 88px;\n  font-weight: 900;\n  color: var(--n08);\n  line-height: 1;\n  letter-spacing: -0.04em;\n  flex-shrink: 0;\n  user-select: none;\n}\n\n\/* \u2550\u2550 SERVICE LIST \u2550\u2550 *\/\n.vtcr .svc-list {\n  display: flex;\n  flex-direction: column;\n  gap: 0;\n  border: 1px solid var(--line);\n  border-radius: 6px;\n  overflow: hidden;\n  margin-bottom: 4px;\n  background: var(--bg2);\n}\n\n.vtcr .svc-item {\n  display: flex;\n  align-items: center;\n  gap: 18px;\n  padding: 22px 22px;\n  background: none;\n  border: none;\n  border-bottom: 1px solid var(--line);\n  cursor: pointer;\n  transition: background 0.2s ease;\n  text-align: left;\n  width: 100%;\n  position: relative;\n}\n\n.vtcr .svc-item:last-child { border-bottom: none; }\n.vtcr .svc-item:hover { background: var(--n04); }\n.vtcr .svc-item.selected { background: var(--n); color: var(--bg); }\n\n.vtcr .svc-item.selected::before {\n  content: '';\n  position: absolute;\n  left: 0;\n  top: 0;\n  bottom: 0;\n  width: 3px;\n  background: var(--wa);\n}\n\n.vtcr .svc-ico {\n  width: 42px;\n  height: 42px;\n  border-radius: 50%;\n  border: 1px solid var(--line);\n  background: var(--bg);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  transition: all 0.2s ease;\n}\n\n.vtcr .svc-ico svg {\n  width: 18px;\n  height: 18px;\n  color: var(--n50);\n  transition: color 0.2s ease;\n}\n\n.vtcr .svc-item.selected .svc-ico {\n  border-color: var(--bg);\n  background: var(--bg);\n}\n\n.vtcr .svc-item.selected .svc-ico svg { color: var(--n); }\n\n.vtcr .svc-info { flex: 1; }\n\n.vtcr .svc-name {\n  font-size: 15px;\n  font-weight: 700;\n  color: var(--n);\n  text-transform: uppercase;\n  letter-spacing: 0.04em;\n  margin-bottom: 4px;\n  transition: color 0.2s ease;\n}\n\n.vtcr .svc-item.selected .svc-name { color: var(--bg); }\n\n.vtcr .svc-desc {\n  font-size: 13px;\n  color: var(--n50);\n  font-weight: 400;\n  line-height: 1.5;\n  transition: color 0.2s ease;\n}\n\n.vtcr .svc-item.selected .svc-desc { color: rgba(255,255,255,0.65); }\n\n.vtcr .svc-check {\n  width: 22px;\n  height: 22px;\n  flex-shrink: 0;\n  opacity: 0;\n  transition: opacity 0.2s ease;\n  color: var(--wa);\n}\n\n.vtcr .svc-item.selected .svc-check { opacity: 1; }\n\n\/* \u2550\u2550 FIELDS \u2550\u2550 *\/\n.vtcr .field {\n  margin-bottom: 30px;\n  position: relative;\n}\n\n.vtcr .field.row2 {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 20px;\n}\n\n.vtcr .flabel {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 11px;\n  font-weight: 700;\n  letter-spacing: 0.22em;\n  text-transform: uppercase;\n  color: var(--n50);\n  margin-bottom: 12px;\n  transition: color 0.2s ease;\n}\n\n.vtcr .flabel svg { width:14px; height:14px; flex-shrink:0; }\n.vtcr .flabel .req { color: var(--wa); font-size:14px; }\n\n.vtcr .finput,\n.vtcr .fselect,\n.vtcr .ftextarea {\n  width: 100%;\n  background: transparent;\n  border: none;\n  border-bottom: 1px solid var(--line);\n  border-radius: 0;\n  padding: 12px 0 14px;\n  font-family: 'Inter', sans-serif;\n  font-size: 17px;\n  font-weight: 500;\n  color: var(--n);\n  outline: none;\n  transition: border-color 0.25s ease;\n  -webkit-appearance: none;\n  appearance: none;\n}\n\n.vtcr .finput::placeholder,\n.vtcr .ftextarea::placeholder {\n  color: var(--n30);\n  font-weight: 300;\n  font-size: 16px;\n}\n\n.vtcr .finput:focus,\n.vtcr .fselect:focus,\n.vtcr .ftextarea:focus {\n  border-bottom-color: var(--n);\n}\n\n.vtcr .f-underline {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  width: 0;\n  height: 1px;\n  background: var(--n);\n  transition: width 0.3s ease;\n  pointer-events: none;\n}\n\n.vtcr .finput:focus ~ .f-underline,\n.vtcr .fselect:focus ~ .f-underline { width: 100%; }\n\n.vtcr .fselect {\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='7'%3E%3Cpath d='M0 0l6 7 6-7z' fill='rgba(10,10,10,0.4)'\/%3E%3C\/svg%3E\");\n  background-repeat: no-repeat;\n  background-position: right 4px center;\n  padding-right: 26px;\n  cursor: pointer;\n}\n\n.vtcr .fselect option { background: #ffffff; color: #0a0a0a; font-size: 15px; }\n\n.vtcr .ftextarea {\n  resize: none;\n  height: 90px;\n  line-height: 1.6;\n}\n\n.vtcr input[type=\"date\"]::-webkit-calendar-picker-indicator,\n.vtcr input[type=\"time\"]::-webkit-calendar-picker-indicator {\n  opacity: 0.6;\n  cursor: pointer;\n}\n\n.vtcr .ferr {\n  font-size: 12px;\n  font-weight: 600;\n  color: var(--err);\n  margin-top: 8px;\n  display: none;\n  letter-spacing: 0.04em;\n}\n\n.vtcr .fhint {\n  font-size: 12px;\n  color: var(--n50);\n  margin-top: 8px;\n  display: flex;\n  align-items: center;\n  gap: 6px;\n  line-height: 1.4;\n}\n\n.vtcr .fhint svg { width:12px; height:12px; flex-shrink:0; color: var(--wa); }\n\n\/* \u2550\u2550 INFO BANNER (info dynamique par service) \u2550\u2550 *\/\n.vtcr .info-banner {\n  background: var(--bg3);\n  border-left: 3px solid var(--n);\n  padding: 14px 18px;\n  margin-bottom: 28px;\n  border-radius: 0 4px 4px 0;\n  display: flex;\n  align-items: flex-start;\n  gap: 12px;\n}\n\n.vtcr .info-banner svg {\n  width: 18px;\n  height: 18px;\n  color: var(--n);\n  flex-shrink: 0;\n  margin-top: 1px;\n}\n\n.vtcr .info-banner-text {\n  font-size: 13px;\n  color: var(--n80);\n  line-height: 1.5;\n  font-weight: 500;\n}\n\n.vtcr .info-banner-text strong { font-weight: 700; }\n\n\/* \u2550\u2550 PHONE ROW \u2550\u2550 *\/\n.vtcr .phone-row { display:flex; gap:18px; }\n.vtcr .phone-row .p-code { width: 116px; flex-shrink:0; position: relative; }\n.vtcr .phone-row .p-num  { flex:1; position: relative; }\n\n\/* \u2550\u2550 COUNTRY PICKER BUTTON \u2550\u2550 *\/\n.vtcr .country-btn {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  width: 100%;\n  background: transparent;\n  border: none;\n  border-bottom: 1px solid var(--line);\n  border-radius: 0;\n  padding: 12px 0 14px;\n  font-family: 'Inter', sans-serif;\n  font-size: 17px;\n  font-weight: 500;\n  color: var(--n);\n  outline: none;\n  cursor: pointer;\n  transition: border-color 0.25s ease;\n  text-align: left;\n}\n\n.vtcr .country-btn:hover { border-bottom-color: var(--n); }\n.vtcr .country-btn:focus { border-bottom-color: var(--n); }\n\n.vtcr .country-btn-flag { font-size: 20px; line-height: 1; flex-shrink: 0; }\n.vtcr .country-btn-code { flex: 1; font-weight: 600; }\n.vtcr .country-btn-arrow { width: 10px; height: 6px; color: var(--n50); flex-shrink: 0; }\n\n\/* \u2550\u2550 COUNTRY MODAL \u2550\u2550 *\/\n.vtcr-cm-overlay {\n  display: none;\n  position: fixed;\n  inset: 0;\n  z-index: 10000;\n  background: rgba(10,10,10,0.55);\n  backdrop-filter: blur(6px);\n  align-items: flex-end;\n  justify-content: center;\n  animation: vtcrCmFade 0.2s ease both;\n}\n\n.vtcr-cm-overlay.on { display: flex; }\n\n@keyframes vtcrCmFade { from { opacity: 0; } to { opacity: 1; } }\n\n.vtcr-cm {\n  background: #ffffff;\n  width: 100%;\n  max-width: 540px;\n  max-height: 85vh;\n  border-radius: 16px 16px 0 0;\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  animation: vtcrCmSlide 0.3s cubic-bezier(0.4,0,0.2,1) both;\n}\n\n@keyframes vtcrCmSlide {\n  from { transform: translateY(30px); opacity: 0; }\n  to { transform: translateY(0); opacity: 1; }\n}\n\n.vtcr-cm-head {\n  padding: 18px 20px;\n  border-bottom: 1px solid rgba(10,10,10,0.08);\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  flex-shrink: 0;\n}\n\n.vtcr-cm-title {\n  font-family: 'Inter', sans-serif;\n  font-size: 13px;\n  font-weight: 800;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  color: #0a0a0a;\n}\n\n.vtcr-cm-close {\n  width: 32px;\n  height: 32px;\n  border-radius: 50%;\n  background: rgba(10,10,10,0.05);\n  border: none;\n  cursor: pointer;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  transition: background 0.2s;\n}\n\n.vtcr-cm-close:hover { background: rgba(10,10,10,0.1); }\n.vtcr-cm-close svg { width: 14px; height: 14px; color: #0a0a0a; }\n\n.vtcr-cm-search {\n  padding: 14px 20px;\n  border-bottom: 1px solid rgba(10,10,10,0.06);\n  flex-shrink: 0;\n  position: relative;\n}\n\n.vtcr-cm-search-input {\n  width: 100%;\n  background: rgba(10,10,10,0.04);\n  border: 1px solid transparent;\n  border-radius: 8px;\n  padding: 12px 14px 12px 40px;\n  font-family: 'Inter', sans-serif;\n  font-size: 15px;\n  color: #0a0a0a;\n  outline: none;\n  transition: all 0.2s;\n}\n\n.vtcr-cm-search-input::placeholder { color: rgba(10,10,10,0.4); }\n.vtcr-cm-search-input:focus { background: #fff; border-color: #0a0a0a; }\n\n.vtcr-cm-search svg {\n  position: absolute;\n  left: 32px;\n  top: 50%;\n  transform: translateY(-50%);\n  width: 16px;\n  height: 16px;\n  color: rgba(10,10,10,0.4);\n  pointer-events: none;\n}\n\n.vtcr-cm-list {\n  overflow-y: auto;\n  flex: 1;\n  -webkit-overflow-scrolling: touch;\n}\n\n.vtcr-cm-item {\n  display: flex;\n  align-items: center;\n  gap: 14px;\n  padding: 14px 20px;\n  cursor: pointer;\n  border: none;\n  background: none;\n  width: 100%;\n  text-align: left;\n  border-bottom: 1px solid rgba(10,10,10,0.04);\n  transition: background 0.15s;\n  font-family: 'Inter', sans-serif;\n}\n\n.vtcr-cm-item:hover { background: rgba(10,10,10,0.04); }\n.vtcr-cm-item.selected { background: rgba(37,211,102,0.08); }\n\n.vtcr-cm-flag { font-size: 22px; line-height: 1; flex-shrink: 0; }\n\n.vtcr-cm-info { flex: 1; min-width: 0; }\n\n.vtcr-cm-name {\n  font-size: 14px;\n  font-weight: 600;\n  color: #0a0a0a;\n  margin-bottom: 2px;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.vtcr-cm-code {\n  font-size: 12px;\n  color: rgba(10,10,10,0.5);\n  font-weight: 500;\n}\n\n.vtcr-cm-check {\n  width: 18px;\n  height: 18px;\n  flex-shrink: 0;\n  color: var(--wa);\n  opacity: 0;\n  transition: opacity 0.2s;\n}\n\n.vtcr-cm-item.selected .vtcr-cm-check { opacity: 1; }\n\n.vtcr-cm-empty {\n  padding: 40px 20px;\n  text-align: center;\n  font-size: 13px;\n  color: rgba(10,10,10,0.5);\n}\n\n@media (min-width: 640px) {\n  .vtcr-cm-overlay { align-items: center; }\n  .vtcr-cm { border-radius: 16px; max-height: 75vh; }\n}\n\n@media (max-width: 600px) {\n  .vtcr .phone-row .p-code { width: 110px; }\n  .vtcr .country-btn { font-size: 15px; }\n  .vtcr .country-btn-flag { font-size: 18px; }\n}\n\n\/* \u2550\u2550 PASSAGERS INPUT \u2550\u2550 *\/\n.vtcr .pax-input-wrap {\n  display: flex;\n  align-items: center;\n  gap: 14px;\n  border-bottom: 1px solid var(--line);\n  padding: 8px 0 10px;\n}\n\n.vtcr .pax-icon {\n  width: 36px;\n  height: 36px;\n  border-radius: 50%;\n  background: var(--bg3);\n  border: 1px solid var(--line);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n}\n\n.vtcr .pax-icon svg { width: 16px; height: 16px; color: var(--n50); }\n\n.vtcr .pax-input {\n  flex: 1;\n  background: transparent;\n  border: none;\n  font-family: 'Inter', sans-serif;\n  font-size: 22px;\n  font-weight: 800;\n  color: var(--n);\n  outline: none;\n  letter-spacing: -0.02em;\n  -moz-appearance: textfield;\n}\n\n.vtcr .pax-input::-webkit-outer-spin-button,\n.vtcr .pax-input::-webkit-inner-spin-button {\n  -webkit-appearance: none;\n  margin: 0;\n}\n\n.vtcr .pax-input::placeholder { color: var(--n30); }\n\n.vtcr .pax-hint {\n  font-size: 11px;\n  color: var(--n30);\n  font-weight: 600;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  flex-shrink: 0;\n}\n\n\/* \u2550\u2550 RGPD \u2550\u2550 *\/\n.vtcr .check-row {\n  display: flex;\n  align-items: flex-start;\n  gap: 14px;\n  cursor: pointer;\n  padding: 18px 0;\n  border-top: 1px solid var(--line);\n  border-bottom: 1px solid var(--line);\n}\n\n.vtcr .cbox {\n  width: 20px;\n  height: 20px;\n  border: 1.5px solid var(--line);\n  border-radius: 2px;\n  background: var(--bg);\n  flex-shrink: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  transition: all 0.2s ease;\n  margin-top: 1px;\n}\n\n.vtcr .check-row.on .cbox {\n  background: var(--n);\n  border-color: var(--n);\n}\n\n.vtcr .cbox svg { width:11px; height:11px; display:none; color: var(--bg); }\n.vtcr .check-row.on .cbox svg { display:block; }\n\n.vtcr .ctext {\n  font-size: 13px;\n  color: var(--n50);\n  line-height: 1.55;\n  font-weight: 400;\n}\n\n\/* \u2550\u2550 SUMMARY \u2550\u2550 *\/\n.vtcr .summary {\n  margin-bottom: 36px;\n  background: var(--bg2);\n  border: 1px solid var(--line);\n  border-radius: 6px;\n  overflow: hidden;\n}\n\n.vtcr .sum-head {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 16px 20px;\n  background: var(--n);\n  color: var(--bg);\n}\n\n.vtcr .sum-title {\n  font-size: 11px;\n  font-weight: 700;\n  letter-spacing: 0.22em;\n  text-transform: uppercase;\n  color: var(--bg);\n}\n\n.vtcr .sum-edit {\n  font-size: 12px;\n  color: rgba(255,255,255,0.7);\n  cursor: pointer;\n  text-decoration: underline;\n  text-underline-offset: 3px;\n  transition: color 0.2s;\n  font-weight: 500;\n}\n\n.vtcr .sum-edit:hover { color: var(--bg); }\n\n.vtcr .sum-row {\n  display: grid;\n  grid-template-columns: 110px 1fr;\n  align-items: start;\n  gap: 18px;\n  padding: 14px 20px;\n  border-bottom: 1px solid var(--line2);\n}\n\n.vtcr .sum-row:last-child { border-bottom: none; }\n\n.vtcr .sum-k {\n  font-size: 10px;\n  font-weight: 700;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  color: var(--n50);\n  padding-top: 3px;\n}\n\n.vtcr .sum-v {\n  font-size: 14px;\n  font-weight: 500;\n  color: var(--n);\n  word-break: break-word;\n  line-height: 1.5;\n}\n\n.vtcr .sum-v.hi {\n  font-weight: 800;\n  font-size: 15px;\n  text-transform: uppercase;\n  letter-spacing: 0.02em;\n}\n\n\/* \u2550\u2550 BUTTONS \u2550\u2550 *\/\n.vtcr .btn-main {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  width: 100%;\n  padding: 22px 26px;\n  background: var(--n);\n  border: none;\n  border-radius: 4px;\n  color: var(--bg);\n  font-family: 'Inter', sans-serif;\n  font-size: 13px;\n  font-weight: 800;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  cursor: pointer;\n  transition: all 0.25s ease;\n  margin-top: 36px;\n}\n\n.vtcr .btn-main:hover {\n  background: #1f1f1f;\n  transform: translateY(-1px);\n  box-shadow: 0 12px 32px rgba(10,10,10,0.18);\n}\n\n.vtcr .btn-main:active { transform: translateY(0); }\n\n.vtcr .btn-main-arrow {\n  width: 36px;\n  height: 36px;\n  border-radius: 50%;\n  background: var(--bg);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  transition: transform 0.25s ease;\n}\n\n.vtcr .btn-main:hover .btn-main-arrow { transform: translateX(4px); }\n\n.vtcr .btn-main-arrow svg { width:16px; height:16px; color:var(--n); }\n\n.vtcr .btn-back {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n  background: none;\n  border: none;\n  color: var(--n30);\n  font-family: 'Inter', sans-serif;\n  font-size: 12px;\n  font-weight: 600;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  cursor: pointer;\n  padding: 18px 0 0;\n  transition: color 0.2s ease;\n  width: 100%;\n}\n\n.vtcr .btn-back:hover { color: var(--n); }\n.vtcr .btn-back svg   { width:14px; height:14px; flex-shrink:0; }\n\n.vtcr .btn-wa {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  width: 100%;\n  padding: 22px 26px;\n  background: var(--wa);\n  border: none;\n  border-radius: 4px;\n  color: #ffffff;\n  font-family: 'Inter', sans-serif;\n  font-size: 13px;\n  font-weight: 800;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  cursor: pointer;\n  transition: all 0.25s ease;\n}\n\n.vtcr .btn-wa:hover {\n  background: var(--wa2);\n  transform: translateY(-1px);\n  box-shadow: 0 12px 36px rgba(37,211,102,0.32);\n}\n\n.vtcr .btn-wa:active { transform: translateY(0); }\n\n.vtcr .btn-wa-left {\n  display: flex;\n  align-items: center;\n  gap: 14px;\n}\n\n.vtcr .btn-wa-left svg { width:24px; height:24px; flex-shrink:0; }\n\n.vtcr .btn-wa-arrow {\n  width: 36px;\n  height: 36px;\n  border-radius: 50%;\n  background: rgba(255,255,255,0.2);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n}\n\n.vtcr .btn-wa-arrow svg { width:16px; height:16px; }\n\n.vtcr .wa-sub {\n  text-align: center;\n  font-size: 11px;\n  font-weight: 500;\n  color: var(--n30);\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  margin-top: 16px;\n}\n\n\/* \u2550\u2550 TRUST \u2550\u2550 *\/\n.vtcr .trust {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 0;\n  padding: 32px 0 0;\n  border-top: 1px solid var(--line);\n  margin-top: 56px;\n  flex-wrap: wrap;\n}\n\n.vtcr .ti {\n  flex: 1;\n  min-width: 90px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 8px;\n  padding: 14px 10px;\n}\n\n.vtcr .ti-ico {\n  width: 32px;\n  height: 32px;\n  border-radius: 50%;\n  border: 1px solid var(--line);\n  background: var(--bg2);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.vtcr .ti-ico svg { width:14px; height:14px; color:var(--n50); }\n\n.vtcr .ti-txt {\n  font-size: 10px;\n  font-weight: 700;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--n50);\n  text-align: center;\n  line-height: 1.4;\n}\n\n\/* \u2550\u2550 OVERLAY \u2550\u2550 *\/\n.vtcr-ov {\n  display: none;\n  position: fixed;\n  inset: 0;\n  z-index: 9999;\n  background: rgba(255,255,255,0.92);\n  align-items: center;\n  justify-content: center;\n  backdrop-filter: blur(8px);\n}\n\n.vtcr-ov.on { display: flex; }\n\n.vtcr-spin {\n  width: 44px;\n  height: 44px;\n  border: 1.5px solid rgba(10,10,10,0.12);\n  border-top-color: #0a0a0a;\n  border-radius: 50%;\n  animation: vtcrSpin 0.7s linear infinite;\n}\n\n@keyframes vtcrSpin { to { transform: rotate(360deg); } }\n\n\/* \u2550\u2550 SUCCESS \u2550\u2550 *\/\n.vtcr .success {\n  display: none;\n  padding: 64px 0;\n  text-align: center;\n}\n\n.vtcr .success.on {\n  display: block;\n  animation: vtcrSlide 0.5s ease both;\n}\n\n.vtcr .s-num {\n  font-size: 130px;\n  font-weight: 900;\n  color: rgba(37,211,102,0.08);\n  line-height: 1;\n  letter-spacing: -0.05em;\n  margin-bottom: -22px;\n  user-select: none;\n}\n\n.vtcr .s-check {\n  width: 60px;\n  height: 60px;\n  border-radius: 50%;\n  border: 1px solid rgba(37,211,102,0.35);\n  background: rgba(37,211,102,0.07);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  margin: 0 auto 24px;\n}\n\n.vtcr .s-check svg { width:26px; height:26px; color:var(--wa); }\n\n.vtcr .s-title {\n  font-size: 34px;\n  font-weight: 900;\n  text-transform: uppercase;\n  letter-spacing: -0.02em;\n  color: var(--n);\n  margin-bottom: 12px;\n  line-height: 1;\n}\n\n.vtcr .s-text {\n  font-size: 14px;\n  color: var(--n50);\n  line-height: 1.7;\n  max-width: 340px;\n  margin: 0 auto 36px;\n}\n\n.vtcr .btn-new {\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  background: none;\n  border: 1px solid var(--line);\n  border-radius: 4px;\n  padding: 16px 30px;\n  color: var(--n50);\n  font-family: 'Inter', sans-serif;\n  font-size: 11px;\n  font-weight: 700;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  cursor: pointer;\n  transition: all 0.2s ease;\n}\n\n.vtcr .btn-new:hover {\n  border-color: var(--n);\n  color: var(--n);\n}\n\n\/* \u2550\u2550 ERROR \u2550\u2550 *\/\n.vtcr .has-err .ferr { display: block; }\n.vtcr .has-err .finput,\n.vtcr .has-err .fselect,\n.vtcr .has-err .pax-input-wrap { border-bottom-color: var(--err); }\n\n\/* \u2550\u2550 RESPONSIVE \u2550\u2550 *\/\n@media (max-width: 600px) {\n  .vtcr { padding: 36px 18px 56px; }\n  .vtcr .field.row2 { grid-template-columns: 1fr; gap:0; }\n  .vtcr .hero-title { font-size: clamp(30px, 9vw, 44px); }\n  .vtcr .finput, .vtcr .fselect, .vtcr .ftextarea { font-size: 16px; }\n  .vtcr .sum-row { grid-template-columns: 90px 1fr; gap: 14px; padding: 12px 16px; }\n  .vtcr .sum-k { font-size: 9px; }\n  .vtcr .sum-v { font-size: 13px; }\n  .vtcr .sum-v.hi { font-size: 14px; }\n  .vtcr .btn-main, .vtcr .btn-wa { padding: 18px 20px; font-size: 12px; }\n  .vtcr .btn-main-arrow, .vtcr .btn-wa-arrow { width: 32px; height: 32px; }\n}\n\n@media (max-width: 400px) {\n  .vtcr .ph-deco { display: none; }\n  .vtcr .svc-item { padding: 18px 16px; gap: 14px; }\n  .vtcr .svc-ico { width: 38px; height: 38px; }\n  .vtcr .svc-name { font-size: 14px; }\n  .vtcr .svc-desc { font-size: 12px; }\n}\n\n\/* Desktop refinement *\/\n@media (min-width: 1024px) {\n  .vtcr { padding: 72px 32px 88px; }\n  .vtcr .hero { margin-bottom: 64px; }\n  .vtcr .sum-row { padding: 16px 24px; }\n}\n<\/style>\n<\/head>\n<body style=\"background:#ffffff;margin:0;padding:0;\">\n\n<div class=\"vtcr-ov\" id=\"vtcrOv\"><div class=\"vtcr-spin\"><\/div><\/div>\n\n<!-- \u2550\u2550 COUNTRY MODAL \u2550\u2550 -->\n<div class=\"vtcr-cm-overlay\" id=\"vtcrCmOverlay\" onclick=\"vrCountry.bgClose(event)\">\n  <div class=\"vtcr-cm\" onclick=\"event.stopPropagation()\">\n    <div class=\"vtcr-cm-head\">\n      <div class=\"vtcr-cm-title\">S\u00e9lectionnez un pays<\/div>\n      <button type=\"button\" class=\"vtcr-cm-close\" onclick=\"vrCountry.close()\">\n        <svg viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <path d=\"M1 1l12 12M13 1L1 13\"\/>\n        <\/svg>\n      <\/button>\n    <\/div>\n    <div class=\"vtcr-cm-search\">\n      <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n        <circle cx=\"7\" cy=\"7\" r=\"5\"\/><path d=\"M11 11l3 3\"\/>\n      <\/svg>\n      <input type=\"text\" class=\"vtcr-cm-search-input\" id=\"vtcrCmSearch\" placeholder=\"Rechercher un pays ou un indicatif\u2026\" autocomplete=\"off\">\n    <\/div>\n    <div class=\"vtcr-cm-list\" id=\"vtcrCmList\"><\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550 FORMULAIRE \u2550\u2550 -->\n<div class=\"vtcr\" id=\"vtcrForm\">\n\n  <!-- HERO \u2014 sans point vert, sans \"Chauffeur Priv\u00e9 - Maroc\" -->\n  <div class=\"hero\">\n    <div class=\"hero-bg-num\">V<\/div>\n    <h1 class=\"hero-title\">\n      Demande<br>\n      <span>de Devis<\/span>\n    <\/h1>\n    <p class=\"hero-sub\">R\u00e9servez votre chauffeur priv\u00e9 au Maroc \u2014 transferts, excursions et circuits sur mesure. R\u00e9ponse personnalis\u00e9e sous quelques minutes.<\/p>\n  <\/div>\n\n  <!-- STEPS -->\n  <div class=\"steps-line\">\n    <div class=\"sl-item active\" id=\"sl1\">\n      <div class=\"sl-num\"><span class=\"sl-num-txt\">01<\/span>\n        <svg style=\"display:none;width:16px;height:16px;\" class=\"sl-chk\" viewBox=\"0 0 12 9\" fill=\"none\" stroke=\"#25d366\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 4l3.5 3.5L11 1\"\/><\/svg>\n      <\/div>\n      <div class=\"sl-label\">Service<\/div>\n    <\/div>\n    <div class=\"sl-item\" id=\"sl2\">\n      <div class=\"sl-num\"><span class=\"sl-num-txt\">02<\/span>\n        <svg style=\"display:none;width:16px;height:16px;\" class=\"sl-chk\" viewBox=\"0 0 12 9\" fill=\"none\" stroke=\"#25d366\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 4l3.5 3.5L11 1\"\/><\/svg>\n      <\/div>\n      <div class=\"sl-label\">D\u00e9tails<\/div>\n    <\/div>\n    <div class=\"sl-item\" id=\"sl3\">\n      <div class=\"sl-num\"><span class=\"sl-num-txt\">03<\/span>\n        <svg style=\"display:none;width:16px;height:16px;\" class=\"sl-chk\" viewBox=\"0 0 12 9\" fill=\"none\" stroke=\"#25d366\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 4l3.5 3.5L11 1\"\/><\/svg>\n      <\/div>\n      <div class=\"sl-label\">Passagers<\/div>\n    <\/div>\n    <div class=\"sl-item\" id=\"sl4\">\n      <div class=\"sl-num\"><span class=\"sl-num-txt\">04<\/span>\n        <svg style=\"display:none;width:16px;height:16px;\" class=\"sl-chk\" viewBox=\"0 0 12 9\" fill=\"none\" stroke=\"#25d366\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 4l3.5 3.5L11 1\"\/><\/svg>\n      <\/div>\n      <div class=\"sl-label\">Contact<\/div>\n    <\/div>\n    <div class=\"sl-item\" id=\"sl5\">\n      <div class=\"sl-num\"><span class=\"sl-num-txt\">05<\/span>\n        <svg style=\"display:none;width:16px;height:16px;\" class=\"sl-chk\" viewBox=\"0 0 12 9\" fill=\"none\" stroke=\"#25d366\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 4l3.5 3.5L11 1\"\/><\/svg>\n      <\/div>\n      <div class=\"sl-label\">Envoi<\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"prog\"><div class=\"prog-fill\" id=\"pFill\" style=\"width:20%\"><\/div><\/div>\n\n  <!-- \u2550\u2550\u2550\u2550 P1 : SERVICE \u2550\u2550\u2550\u2550 -->\n  <div class=\"panel active\" id=\"p1\">\n    <div class=\"ph\">\n      <div>\n        <div class=\"ph-step\">\u00c9tape 01 \u2014 Service<\/div>\n        <h2 class=\"ph-title\">Type de<br>prestation<\/h2>\n      <\/div>\n      <div class=\"ph-deco\">01<\/div>\n    <\/div>\n\n    <div class=\"svc-list\">\n\n      <button class=\"svc-item\" data-s=\"aeroport\" data-name=\"Transfert A\u00e9roport\" onclick=\"vr.pickS(this)\">\n        <div class=\"svc-ico\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M21 16v-2l-8-5V3.5a1.5 1.5 0 00-3 0V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5z\"\/>\n          <\/svg>\n        <\/div>\n        <div class=\"svc-info\">\n          <div class=\"svc-name\">A\u00e9roport<\/div>\n          <div class=\"svc-desc\">Transfert arriv\u00e9e ou d\u00e9part \u2014 RAK \/ CMN \/ A\u00e9roports Maroc<\/div>\n        <\/div>\n        <svg class=\"svc-check\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 8l3.5 3.5L13 5\"\/><\/svg>\n      <\/button>\n\n      <button class=\"svc-item\" data-s=\"transfert\" data-name=\"Transfert Ville\" onclick=\"vr.pickS(this)\">\n        <div class=\"svc-ico\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M5 17H3a2 2 0 01-2-2V5a2 2 0 012-2h11a2 2 0 012 2v3\"\/><rect x=\"9\" y=\"11\" width=\"14\" height=\"10\" rx=\"2\"\/>\n            <circle cx=\"12\" cy=\"21\" r=\"1\"\/><circle cx=\"20\" cy=\"21\" r=\"1\"\/>\n          <\/svg>\n        <\/div>\n        <div class=\"svc-info\">\n          <div class=\"svc-name\">Transfert ville<\/div>\n          <div class=\"svc-desc\">Point A vers Point B, intra-ville ou inter-villes<\/div>\n        <\/div>\n        <svg class=\"svc-check\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 8l3.5 3.5L13 5\"\/><\/svg>\n      <\/button>\n\n      <button class=\"svc-item\" data-s=\"dispo\" data-name=\"Mise \u00e0 Disposition\" onclick=\"vr.pickS(this)\">\n        <div class=\"svc-ico\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12 6 12 12 16 14\"\/>\n          <\/svg>\n        <\/div>\n        <div class=\"svc-info\">\n          <div class=\"svc-name\">Mise \u00e0 disposition<\/div>\n          <div class=\"svc-desc\">Chauffeur \u00e0 l'heure, \u00e0 votre service toute la dur\u00e9e souhait\u00e9e<\/div>\n        <\/div>\n        <svg class=\"svc-check\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 8l3.5 3.5L13 5\"\/><\/svg>\n      <\/button>\n\n      <button class=\"svc-item\" data-s=\"excursion\" data-name=\"Excursion Journ\u00e9e\" onclick=\"vr.pickS(this)\">\n        <div class=\"svc-ico\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M3 17l4-8 4 4 3-5 4 9H3z\"\/><circle cx=\"17\" cy=\"5\" r=\"2\"\/><path d=\"M2 20h20\"\/>\n          <\/svg>\n        <\/div>\n        <div class=\"svc-info\">\n          <div class=\"svc-name\">Excursion journ\u00e9e<\/div>\n          <div class=\"svc-desc\">Sortie d'une journ\u00e9e \u2014 Atlas, Essaouira, Ourika, A\u00eft Benhaddou\u2026<\/div>\n        <\/div>\n        <svg class=\"svc-check\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 8l3.5 3.5L13 5\"\/><\/svg>\n      <\/button>\n\n      <button class=\"svc-item\" data-s=\"circuit\" data-name=\"Circuit Multi-Jours\" onclick=\"vr.pickS(this)\">\n        <div class=\"svc-ico\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polygon points=\"3 11 22 2 13 21 11 13 3 11\"\/>\n          <\/svg>\n        <\/div>\n        <div class=\"svc-info\">\n          <div class=\"svc-name\">Circuit multi-jours<\/div>\n          <div class=\"svc-desc\">\u00c0 partir de 2 jours \u2014 d\u00e9sert, villes imp\u00e9riales, c\u00f4tes<\/div>\n        <\/div>\n        <svg class=\"svc-check\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 8l3.5 3.5L13 5\"\/><\/svg>\n      <\/button>\n\n    <\/div>\n\n    <p class=\"ferr\" id=\"sErr\" style=\"margin-top:10px\">\u26a0 S\u00e9lectionnez un service<\/p>\n\n    <button class=\"btn-main\" onclick=\"vr.go(2)\">\n      <span>Continuer<\/span>\n      <span class=\"btn-main-arrow\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 8h10M9 4l4 4-4 4\"\/><\/svg>\n      <\/span>\n    <\/button>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550 P2 : D\u00c9TAILS (dynamique selon service) \u2550\u2550\u2550\u2550 -->\n  <div class=\"panel\" id=\"p2\">\n    <div class=\"ph\">\n      <div>\n        <div class=\"ph-step\">\u00c9tape 02 \u2014 D\u00e9tails<\/div>\n        <h2 class=\"ph-title\" id=\"p2Title\">D\u00e9tails<br>du service<\/h2>\n      <\/div>\n      <div class=\"ph-deco\">02<\/div>\n    <\/div>\n\n    <!-- INFO BANNER DYNAMIQUE -->\n    <div class=\"info-banner\" id=\"infoBanner\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 16v-4M12 8h.01\"\/><\/svg>\n      <div class=\"info-banner-text\" id=\"infoBannerText\">Informations sp\u00e9cifiques au service.<\/div>\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550 A\u00c9ROPORT \u2550\u2550\u2550\u2550 -->\n    <div id=\"svc-aeroport-fields\" style=\"display:none\">\n\n      <div class=\"field\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><path d=\"M8 5v3l2 2\"\/><\/svg>\n          Sens du transfert <span class=\"req\">*<\/span>\n        <\/div>\n        <select class=\"fselect\" id=\"aeroDirection\">\n          <option value=\"arrivee\">Arriv\u00e9e \u00e0 l'a\u00e9roport \u2192 Destination<\/option>\n          <option value=\"depart\">Lieu de prise en charge \u2192 A\u00e9roport<\/option>\n        <\/select>\n        <div class=\"f-underline\"><\/div>\n      <\/div>\n\n      <div class=\"field\" id=\"f-aero-airport\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 10v-2l-5.3-3.3V2a1 1 0 00-2 0v2.7L1.4 8H1v2l5.4-1.7V13l-1.4 1V15l2.3-.7 2.3.7v-1l-1.3-1V8.3L14 10z\"\/><\/svg>\n          A\u00e9roport <span class=\"req\">*<\/span>\n        <\/div>\n        <select class=\"fselect\" id=\"aeroAirport\">\n          <option value=\"\">S\u00e9lectionnez un a\u00e9roport<\/option>\n          <option value=\"Marrakech M\u00e9nara (RAK)\">Marrakech M\u00e9nara (RAK)<\/option>\n          <option value=\"Casablanca Mohammed V (CMN)\">Casablanca Mohammed V (CMN)<\/option>\n          <option value=\"Agadir Al Massira (AGA)\">Agadir Al Massira (AGA)<\/option>\n          <option value=\"F\u00e8s-Sa\u00efss (FEZ)\">F\u00e8s-Sa\u00efss (FEZ)<\/option>\n          <option value=\"Rabat-Sal\u00e9 (RBA)\">Rabat-Sal\u00e9 (RBA)<\/option>\n          <option value=\"Tanger Ibn Battouta (TNG)\">Tanger Ibn Battouta (TNG)<\/option>\n          <option value=\"Ouarzazate (OZZ)\">Ouarzazate (OZZ)<\/option>\n          <option value=\"Essaouira-Mogador (ESU)\">Essaouira-Mogador (ESU)<\/option>\n        <\/select>\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"aeroAirportErr\">S\u00e9lectionnez un a\u00e9roport<\/p>\n      <\/div>\n\n      <div class=\"field\" id=\"f-aero-other\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"6\" r=\"2\"\/><path d=\"M8 2C5.8 2 4 3.8 4 6c0 3 4 8 4 8s4-5 4-8c0-2.2-1.8-4-4-4z\"\/><\/svg>\n          <span id=\"aeroOtherLabel\">Lieu de destination<\/span> <span class=\"req\">*<\/span>\n        <\/div>\n        <input type=\"text\" class=\"finput\" id=\"aeroOther\" placeholder=\"H\u00f4tel, adresse, riad\u2026\" autocomplete=\"off\">\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"aeroOtherErr\">Champ obligatoire<\/p>\n      <\/div>\n\n      <div class=\"field row2\">\n        <div id=\"f-aero-date\">\n          <div class=\"flabel\">\n            <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\"\/><path d=\"M5 1v4M11 1v4M2 7h12\"\/><\/svg>\n            Date <span class=\"req\">*<\/span>\n          <\/div>\n          <input type=\"date\" class=\"finput\" id=\"aeroDate\">\n          <div class=\"f-underline\"><\/div>\n          <p class=\"ferr\" id=\"aeroDateErr\">Requis<\/p>\n        <\/div>\n        <div id=\"f-aero-time\">\n          <div class=\"flabel\">\n            <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><polyline points=\"8 5 8 8 10.5 10.5\"\/><\/svg>\n            <span id=\"aeroTimeLabel\">Heure d'atterrissage<\/span> <span class=\"req\">*<\/span>\n          <\/div>\n          <input type=\"time\" class=\"finput\" id=\"aeroTime\" value=\"09:00\">\n          <div class=\"f-underline\"><\/div>\n          <p class=\"ferr\" id=\"aeroTimeErr\">Requis<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\" id=\"f-aero-flight\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 10v-2l-5.3-3.3V2a1 1 0 00-2 0v2.7L1.4 8H1v2l5.4-1.7V13l-1.4 1V15l2.3-.7 2.3.7v-1l-1.3-1V8.3L14 10z\"\/><\/svg>\n          Num\u00e9ro de vol <span class=\"req\" id=\"aeroFlightReq\">*<\/span>\n        <\/div>\n        <input type=\"text\" class=\"finput\" id=\"aeroFlight\" placeholder=\"AT256, FR1234, RAM502\u2026\" style=\"text-transform:uppercase\">\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"aeroFlightErr\">Num\u00e9ro de vol obligatoire pour une arriv\u00e9e<\/p>\n        <p class=\"fhint\" id=\"aeroFlightHint\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><path d=\"M8 7v5M8 5v.5\"\/><\/svg>\n          Obligatoire pour l'arriv\u00e9e \u2014 Suivi de vol en temps r\u00e9el inclus\n        <\/p>\n      <\/div>\n\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550 TRANSFERT VILLE \u2550\u2550\u2550\u2550 -->\n    <div id=\"svc-transfert-fields\" style=\"display:none\">\n\n      <div class=\"field\" id=\"f-tr-pickup\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"6\" r=\"2\"\/><path d=\"M8 2C5.8 2 4 3.8 4 6c0 3 4 8 4 8s4-5 4-8c0-2.2-1.8-4-4-4z\"\/><\/svg>\n          Lieu de prise en charge <span class=\"req\">*<\/span>\n        <\/div>\n        <input type=\"text\" class=\"finput\" id=\"trPickup\" placeholder=\"H\u00f4tel, adresse, ville de d\u00e9part\u2026\" autocomplete=\"off\">\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"trPickupErr\">Champ obligatoire<\/p>\n      <\/div>\n\n      <div class=\"field\" id=\"f-tr-drop\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 2v12M4 10l4 4 4-4\"\/><\/svg>\n          Destination <span class=\"req\">*<\/span>\n        <\/div>\n        <input type=\"text\" class=\"finput\" id=\"trDrop\" placeholder=\"Ville, adresse ou site d'arriv\u00e9e\u2026\" autocomplete=\"off\">\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"trDropErr\">Champ obligatoire<\/p>\n      <\/div>\n\n      <div class=\"field row2\">\n        <div id=\"f-tr-date\">\n          <div class=\"flabel\">\n            <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\"\/><path d=\"M5 1v4M11 1v4M2 7h12\"\/><\/svg>\n            Date <span class=\"req\">*<\/span>\n          <\/div>\n          <input type=\"date\" class=\"finput\" id=\"trDate\">\n          <div class=\"f-underline\"><\/div>\n          <p class=\"ferr\" id=\"trDateErr\">Requis<\/p>\n        <\/div>\n        <div id=\"f-tr-time\">\n          <div class=\"flabel\">\n            <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><polyline points=\"8 5 8 8 10.5 10.5\"\/><\/svg>\n            Heure de d\u00e9part <span class=\"req\">*<\/span>\n          <\/div>\n          <input type=\"time\" class=\"finput\" id=\"trTime\" value=\"09:00\">\n          <div class=\"f-underline\"><\/div>\n          <p class=\"ferr\" id=\"trTimeErr\">Requis<\/p>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550 MISE \u00c0 DISPOSITION \u2550\u2550\u2550\u2550 -->\n    <div id=\"svc-dispo-fields\" style=\"display:none\">\n\n      <div class=\"field\" id=\"f-dp-pickup\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"6\" r=\"2\"\/><path d=\"M8 2C5.8 2 4 3.8 4 6c0 3 4 8 4 8s4-5 4-8c0-2.2-1.8-4-4-4z\"\/><\/svg>\n          Lieu de prise en charge <span class=\"req\">*<\/span>\n        <\/div>\n        <input type=\"text\" class=\"finput\" id=\"dpPickup\" placeholder=\"H\u00f4tel, adresse de d\u00e9part\u2026\" autocomplete=\"off\">\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"dpPickupErr\">Champ obligatoire<\/p>\n      <\/div>\n\n      <div class=\"field row2\">\n        <div id=\"f-dp-date\">\n          <div class=\"flabel\">\n            <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\"\/><path d=\"M5 1v4M11 1v4M2 7h12\"\/><\/svg>\n            Date <span class=\"req\">*<\/span>\n          <\/div>\n          <input type=\"date\" class=\"finput\" id=\"dpDate\">\n          <div class=\"f-underline\"><\/div>\n          <p class=\"ferr\" id=\"dpDateErr\">Requis<\/p>\n        <\/div>\n        <div id=\"f-dp-time\">\n          <div class=\"flabel\">\n            <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><polyline points=\"8 5 8 8 10.5 10.5\"\/><\/svg>\n            Heure de d\u00e9but <span class=\"req\">*<\/span>\n          <\/div>\n          <input type=\"time\" class=\"finput\" id=\"dpTime\" value=\"09:00\">\n          <div class=\"f-underline\"><\/div>\n          <p class=\"ferr\" id=\"dpTimeErr\">Requis<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\" id=\"f-dp-duration\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><path d=\"M8 4v4l3 2\"\/><\/svg>\n          Dur\u00e9e souhait\u00e9e <span class=\"req\">*<\/span>\n        <\/div>\n        <select class=\"fselect\" id=\"dpDuration\">\n          <option value=\"\">S\u00e9lectionnez une dur\u00e9e<\/option>\n          <option value=\"12 heures (journ\u00e9e)\">12 heures (journ\u00e9e)<\/option>\n          <option value=\"1 jour\">1 jour<\/option>\n          <option value=\"2 jours\">2 jours<\/option>\n          <option value=\"3 jours\">3 jours<\/option>\n          <option value=\"Semaine compl\u00e8te\">Semaine compl\u00e8te<\/option>\n          <option value=\"Personnalis\u00e9e\">Dur\u00e9e personnalis\u00e9e (\u00e0 pr\u00e9ciser)<\/option>\n        <\/select>\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"dpDurationErr\">S\u00e9lectionnez une dur\u00e9e<\/p>\n      <\/div>\n\n      <div class=\"field\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 2v12M4 10l4 4 4-4\"\/><\/svg>\n          Lieux \u00e0 visiter ou zone d'activit\u00e9\n        <\/div>\n        <textarea class=\"ftextarea\" id=\"dpZone\" placeholder=\"M\u00e9dina, palais, jardins, shopping, restaurants\u2026 (optionnel)\"><\/textarea>\n      <\/div>\n\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550 EXCURSION JOURN\u00c9E \u2550\u2550\u2550\u2550 -->\n    <div id=\"svc-excursion-fields\" style=\"display:none\">\n\n      <div class=\"field\" id=\"f-ex-dest\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 17l4-8 4 4 3-5 4 9H3z\"\/><\/svg>\n          Destination de l'excursion <span class=\"req\">*<\/span>\n        <\/div>\n        <select class=\"fselect\" id=\"exDest\">\n          <option value=\"\">Choisissez une destination<\/option>\n          <option value=\"Vall\u00e9e de l'Ourika\">Vall\u00e9e de l'Ourika<\/option>\n          <option value=\"Cascades d'Ouzoud\">Cascades d'Ouzoud<\/option>\n          <option value=\"Essaouira\">Essaouira<\/option>\n          <option value=\"D\u00e9sert d'Agafay\">D\u00e9sert d'Agafay<\/option>\n          <option value=\"Vall\u00e9e de l'Atlas - Imlil\">Vall\u00e9e de l'Atlas \u2014 Imlil<\/option>\n          <option value=\"A\u00eft Benhaddou & Ouarzazate\">A\u00eft Benhaddou & Ouarzazate<\/option>\n          <option value=\"Casablanca\">Casablanca<\/option>\n          <option value=\"Vall\u00e9e du Dra\u00e2\">Vall\u00e9e du Dra\u00e2<\/option>\n          <option value=\"Lac Lalla Takerkoust\">Lac Lalla Takerkoust<\/option>\n          <option value=\"Autre destination\">Autre destination (\u00e0 pr\u00e9ciser)<\/option>\n        <\/select>\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"exDestErr\">S\u00e9lectionnez une destination<\/p>\n      <\/div>\n\n      <div class=\"field\" id=\"f-ex-pickup\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"6\" r=\"2\"\/><path d=\"M8 2C5.8 2 4 3.8 4 6c0 3 4 8 4 8s4-5 4-8c0-2.2-1.8-4-4-4z\"\/><\/svg>\n          Lieu de prise en charge <span class=\"req\">*<\/span>\n        <\/div>\n        <input type=\"text\" class=\"finput\" id=\"exPickup\" placeholder=\"Votre h\u00f4tel ou riad \u00e0 Marrakech\u2026\" autocomplete=\"off\">\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"exPickupErr\">Champ obligatoire<\/p>\n      <\/div>\n\n      <div class=\"field row2\">\n        <div id=\"f-ex-date\">\n          <div class=\"flabel\">\n            <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\"\/><path d=\"M5 1v4M11 1v4M2 7h12\"\/><\/svg>\n            Date <span class=\"req\">*<\/span>\n          <\/div>\n          <input type=\"date\" class=\"finput\" id=\"exDate\">\n          <div class=\"f-underline\"><\/div>\n          <p class=\"ferr\" id=\"exDateErr\">Requis<\/p>\n        <\/div>\n        <div id=\"f-ex-time\">\n          <div class=\"flabel\">\n            <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><polyline points=\"8 5 8 8 10.5 10.5\"\/><\/svg>\n            Heure de d\u00e9part <span class=\"req\">*<\/span>\n          <\/div>\n          <input type=\"time\" class=\"finput\" id=\"exTime\" value=\"08:00\">\n          <div class=\"f-underline\"><\/div>\n          <p class=\"ferr\" id=\"exTimeErr\">Requis<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M2 3h12a1 1 0 011 1v9a1 1 0 01-1 1H2a1 1 0 01-1-1V4a1 1 0 011-1z\"\/><path d=\"M5 7h6M5 10h4\"\/><\/svg>\n          Centres d'int\u00e9r\u00eat\n        <\/div>\n        <textarea class=\"ftextarea\" id=\"exNotes\" placeholder=\"Activit\u00e9s, arr\u00eats photos, d\u00e9jeuner berb\u00e8re, balade \u00e0 dos de chameau\u2026 (optionnel)\"><\/textarea>\n      <\/div>\n\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550 CIRCUIT MULTI-JOURS \u2550\u2550\u2550\u2550 -->\n    <div id=\"svc-circuit-fields\" style=\"display:none\">\n\n      <div class=\"field\" id=\"f-ci-start\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"6\" r=\"2\"\/><path d=\"M8 2C5.8 2 4 3.8 4 6c0 3 4 8 4 8s4-5 4-8c0-2.2-1.8-4-4-4z\"\/><\/svg>\n          Ville de d\u00e9part <span class=\"req\">*<\/span>\n        <\/div>\n        <input type=\"text\" class=\"finput\" id=\"ciStart\" placeholder=\"Marrakech, Casablanca, F\u00e8s\u2026\" autocomplete=\"off\">\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"ciStartErr\">Champ obligatoire<\/p>\n      <\/div>\n\n      <div class=\"field\" id=\"f-ci-end\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 2v12M4 10l4 4 4-4\"\/><\/svg>\n          Ville d'arriv\u00e9e\n        <\/div>\n        <input type=\"text\" class=\"finput\" id=\"ciEnd\" placeholder=\"M\u00eame ville si circuit en boucle\" autocomplete=\"off\">\n        <div class=\"f-underline\"><\/div>\n      <\/div>\n\n      <div class=\"field row2\">\n        <div id=\"f-ci-date1\">\n          <div class=\"flabel\">\n            <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\"\/><path d=\"M5 1v4M11 1v4M2 7h12\"\/><\/svg>\n            Date de d\u00e9but <span class=\"req\">*<\/span>\n          <\/div>\n          <input type=\"date\" class=\"finput\" id=\"ciDate1\">\n          <div class=\"f-underline\"><\/div>\n          <p class=\"ferr\" id=\"ciDate1Err\">Requis<\/p>\n        <\/div>\n        <div id=\"f-ci-date2\">\n          <div class=\"flabel\">\n            <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\"\/><path d=\"M5 1v4M11 1v4M2 7h12\"\/><\/svg>\n            Date de fin <span class=\"req\">*<\/span>\n          <\/div>\n          <input type=\"date\" class=\"finput\" id=\"ciDate2\">\n          <div class=\"f-underline\"><\/div>\n          <p class=\"ferr\" id=\"ciDate2Err\">Requis (min. 2 jours)<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\" id=\"f-ci-theme\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"3 11 13 2 9 14 7 9 3 11\"\/><\/svg>\n          Th\u00e8me du circuit <span class=\"req\">*<\/span>\n        <\/div>\n        <select class=\"fselect\" id=\"ciTheme\">\n          <option value=\"\">Choisissez un th\u00e8me<\/option>\n          <option value=\"D\u00e9sert (Merzouga \/ Erg Chebbi)\">D\u00e9sert (Merzouga \/ Erg Chebbi)<\/option>\n          <option value=\"Villes imp\u00e9riales (F\u00e8s, Mekn\u00e8s, Rabat)\">Villes imp\u00e9riales (F\u00e8s, Mekn\u00e8s, Rabat)<\/option>\n          <option value=\"C\u00f4te atlantique (Essaouira, Agadir)\">C\u00f4te atlantique (Essaouira, Agadir)<\/option>\n          <option value=\"Grand Sud (Ouarzazate, Zagora, Draa)\">Grand Sud (Ouarzazate, Zagora, Draa)<\/option>\n          <option value=\"Nord du Maroc (Chefchaouen, Tanger)\">Nord du Maroc (Chefchaouen, Tanger)<\/option>\n          <option value=\"Tour du Maroc complet\">Tour du Maroc complet<\/option>\n          <option value=\"Circuit sur mesure\">Circuit sur mesure (\u00e0 d\u00e9finir ensemble)<\/option>\n        <\/select>\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"ciThemeErr\">S\u00e9lectionnez un th\u00e8me<\/p>\n      <\/div>\n\n      <div class=\"field\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M2 3h12a1 1 0 011 1v9a1 1 0 01-1 1H2a1 1 0 01-1-1V4a1 1 0 011-1z\"\/><path d=\"M5 7h6M5 10h4\"\/><\/svg>\n          \u00c9tapes & souhaits sp\u00e9cifiques\n        <\/div>\n        <textarea class=\"ftextarea\" id=\"ciNotes\" placeholder=\"Villes \u00e0 visiter, h\u00e9bergements souhait\u00e9s, activit\u00e9s, rythme du voyage\u2026\"><\/textarea>\n      <\/div>\n\n    <\/div>\n\n    <button class=\"btn-main\" onclick=\"vr.go(3)\">\n      <span>Continuer<\/span>\n      <span class=\"btn-main-arrow\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 8h10M9 4l4 4-4 4\"\/><\/svg>\n      <\/span>\n    <\/button>\n    <button class=\"btn-back\" onclick=\"vr.back(1)\">\n      <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M13 8H3M7 12l-4-4 4-4\"\/><\/svg>\n      Retour\n    <\/button>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550 P3 : PASSAGERS & V\u00c9HICULE \u2550\u2550\u2550\u2550 -->\n  <div class=\"panel\" id=\"p3\">\n    <div class=\"ph\">\n      <div>\n        <div class=\"ph-step\">\u00c9tape 03 \u2014 Passagers<\/div>\n        <h2 class=\"ph-title\">Passagers &<br>v\u00e9hicule<\/h2>\n      <\/div>\n      <div class=\"ph-deco\">03<\/div>\n    <\/div>\n\n    <!-- PASSAGERS \u2014 input num\u00e9rique 1 \u00e0 200 -->\n    <div class=\"field\" id=\"f-pax\">\n      <div class=\"flabel\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"5\" r=\"2.5\"\/><path d=\"M3 14c0-2.8 2.2-5 5-5s5 2.2 5 5\"\/><\/svg>\n        Nombre de passagers <span class=\"req\">*<\/span>\n      <\/div>\n      <div class=\"pax-input-wrap\">\n        <div class=\"pax-icon\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"5\" r=\"2.5\"\/><path d=\"M3 14c0-2.8 2.2-5 5-5s5 2.2 5 5\"\/><\/svg>\n        <\/div>\n        <input type=\"number\" class=\"pax-input\" id=\"paxNum\" placeholder=\"2\" min=\"1\" max=\"200\" inputmode=\"numeric\">\n        <span class=\"pax-hint\">de 1 \u00e0 200<\/span>\n      <\/div>\n      <p class=\"ferr\" id=\"paxErr\">Indiquez le nombre de passagers (1 \u00e0 200)<\/p>\n    <\/div>\n\n    <!-- V\u00c9HICULE -->\n    <div class=\"field\" id=\"f-veh\">\n      <div class=\"flabel\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"1\" y=\"6\" width=\"14\" height=\"7\" rx=\"1.5\"\/><path d=\"M4 6V5a4 4 0 018 0v1\"\/><circle cx=\"4.5\" cy=\"13\" r=\"1\"\/><circle cx=\"11.5\" cy=\"13\" r=\"1\"\/><\/svg>\n        Type de v\u00e9hicule <span class=\"req\">*<\/span>\n      <\/div>\n      <select class=\"fselect\" id=\"vehicle\">\n        <option value=\"\">S\u00e9lectionnez selon le nombre de passagers<\/option>\n        <option value=\"Berline\">Berline \u2014 1 \u00e0 3 passagers<\/option>\n        <option value=\"SUV\">SUV \u2014 1 \u00e0 3 passagers<\/option>\n        <option value=\"Van\">Van \u2014 1 \u00e0 7 passagers<\/option>\n        <option value=\"Minibus\">Minibus \u2014 1 \u00e0 17 passagers<\/option>\n        <option value=\"Plusieurs v\u00e9hicules\">Plusieurs v\u00e9hicules (groupe important)<\/option>\n      <\/select>\n      <div class=\"f-underline\"><\/div>\n      <p class=\"ferr\" id=\"vehErr\">S\u00e9lectionnez un v\u00e9hicule adapt\u00e9<\/p>\n      <p class=\"fhint\" id=\"vehHint\" style=\"display:none\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><path d=\"M8 7v5M8 5v.5\"\/><\/svg>\n        <span id=\"vehHintText\"><\/span>\n      <\/p>\n    <\/div>\n\n    <!-- BAGAGES \u2014 input texte libre -->\n    <div class=\"field\">\n      <div class=\"flabel\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"4\" width=\"8\" height=\"10\" rx=\"1\"\/><path d=\"M6 4V3a2 2 0 014 0v1\"\/><path d=\"M6 8h4\"\/><\/svg>\n        Bagages\n      <\/div>\n      <input type=\"text\" class=\"finput\" id=\"luggage\" placeholder=\"Ex : 2 grandes valises + 3 sacs cabine\">\n      <div class=\"f-underline\"><\/div>\n      <p class=\"fhint\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><path d=\"M8 7v5M8 5v.5\"\/><\/svg>\n        Pr\u00e9cisez la quantit\u00e9 et le type de bagages\n      <\/p>\n    <\/div>\n\n    <!-- NOTES -->\n    <div class=\"field\">\n      <div class=\"flabel\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M2 3h12a1 1 0 011 1v9a1 1 0 01-1 1H2a1 1 0 01-1-1V4a1 1 0 011-1z\"\/><path d=\"M5 7h6M5 10h4\"\/><\/svg>\n        Demandes sp\u00e9ciales\n      <\/div>\n      <textarea class=\"ftextarea\" id=\"notes\" placeholder=\"Si\u00e8ge b\u00e9b\u00e9, langue du chauffeur, accessibilit\u00e9, demandes particuli\u00e8res\u2026\"><\/textarea>\n    <\/div>\n\n    <button class=\"btn-main\" onclick=\"vr.go(4)\">\n      <span>Continuer<\/span>\n      <span class=\"btn-main-arrow\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 8h10M9 4l4 4-4 4\"\/><\/svg>\n      <\/span>\n    <\/button>\n    <button class=\"btn-back\" onclick=\"vr.back(2)\">\n      <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M13 8H3M7 12l-4-4 4-4\"\/><\/svg>\n      Retour\n    <\/button>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550 P4 : CONTACT \u2550\u2550\u2550\u2550 -->\n  <div class=\"panel\" id=\"p4\">\n    <div class=\"ph\">\n      <div>\n        <div class=\"ph-step\">\u00c9tape 04 \u2014 Contact<\/div>\n        <h2 class=\"ph-title\">Vos<br>coordonn\u00e9es<\/h2>\n      <\/div>\n      <div class=\"ph-deco\">04<\/div>\n    <\/div>\n\n    <div class=\"field row2\">\n      <div id=\"f-fname\">\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"5\" r=\"2.5\"\/><path d=\"M3 14c0-2.8 2.2-5 5-5s5 2.2 5 5\"\/><\/svg>\n          Pr\u00e9nom <span class=\"req\">*<\/span>\n        <\/div>\n        <input type=\"text\" class=\"finput\" id=\"fname\" placeholder=\"Votre pr\u00e9nom\" autocomplete=\"given-name\">\n        <div class=\"f-underline\"><\/div>\n        <p class=\"ferr\" id=\"fnErr\">Requis<\/p>\n      <\/div>\n      <div>\n        <div class=\"flabel\">\n          <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"5\" r=\"2.5\"\/><path d=\"M3 14c0-2.8 2.2-5 5-5s5 2.2 5 5\"\/><\/svg>\n          Nom\n        <\/div>\n        <input type=\"text\" class=\"finput\" id=\"lname\" placeholder=\"Votre nom\" autocomplete=\"family-name\">\n        <div class=\"f-underline\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"field\" id=\"f-phone\">\n      <div class=\"flabel\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5.5 2h-2a1 1 0 00-1 1v1.5C2.5 10 6 13.5 11 13.5H12.5a1 1 0 001-1v-2a1 1 0 00-1-1l-2-.5a1 1 0 00-1 .3l-.5.7a6.6 6.6 0 01-3-3l.7-.5a1 1 0 00.3-1L6.5 3a1 1 0 00-1-1z\"\/><\/svg>\n        WhatsApp \/ T\u00e9l\u00e9phone <span class=\"req\">*<\/span>\n      <\/div>\n      <div class=\"phone-row\">\n        <div class=\"p-code\">\n          <button type=\"button\" class=\"country-btn\" id=\"countryBtn\" onclick=\"vrCountry.open()\">\n            <span class=\"country-btn-flag\" id=\"cbFlag\">\ud83c\uddf2\ud83c\udde6<\/span>\n            <span class=\"country-btn-code\" id=\"cbCode\">+212<\/span>\n            <svg class=\"country-btn-arrow\" viewBox=\"0 0 10 6\" fill=\"none\">\n              <path d=\"M1 1l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n            <\/svg>\n          <\/button>\n          <input type=\"hidden\" id=\"dialCode\" value=\"+212\">\n          <input type=\"hidden\" id=\"dialCountry\" value=\"Maroc\">\n        <\/div>\n        <div class=\"p-num\">\n          <input type=\"tel\" class=\"finput\" id=\"phoneNum\" placeholder=\"6 12 34 56 78\" inputmode=\"numeric\">\n          <div class=\"f-underline\"><\/div>\n        <\/div>\n      <\/div>\n      <p class=\"ferr\" id=\"phErr\">Num\u00e9ro invalide (8 chiffres minimum)<\/p>\n      <p class=\"fhint\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5.5 2h-2a1 1 0 00-1 1v1.5C2.5 10 6 13.5 11 13.5H12.5a1 1 0 001-1v-2a1 1 0 00-1-1l-2-.5a1 1 0 00-1 .3l-.5.7a6.6 6.6 0 01-3-3l.7-.5a1 1 0 00.3-1L6.5 3a1 1 0 00-1-1z\"\/><\/svg>\n        R\u00e9ponse directe via WhatsApp\n      <\/p>\n    <\/div>\n\n    <div class=\"field\" id=\"f-email\">\n      <div class=\"flabel\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"1\" y=\"3\" width=\"14\" height=\"10\" rx=\"1.5\"\/><path d=\"M1 5l7 5 7-5\"\/><\/svg>\n        Email <span class=\"req\">*<\/span>\n      <\/div>\n      <input type=\"email\" class=\"finput\" id=\"email\" placeholder=\"pour@confirmation.com\" autocomplete=\"email\">\n      <div class=\"f-underline\"><\/div>\n      <p class=\"ferr\" id=\"emailErr\">Adresse email valide requise<\/p>\n    <\/div>\n\n    <input type=\"text\" name=\"_h\" tabindex=\"-1\" autocomplete=\"off\" style=\"position:absolute;left:-9999px;opacity:0;height:0;width:0;\">\n\n    <div class=\"field\" style=\"margin-bottom:0\">\n      <div class=\"check-row\" id=\"rgpdRow\" onclick=\"vr.rgpd()\">\n        <div class=\"cbox\" id=\"cBox\">\n          <svg viewBox=\"0 0 12 9\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 4l3.5 3.5L11 1\"\/><\/svg>\n        <\/div>\n        <p class=\"ctext\">J'accepte que mes donn\u00e9es soient utilis\u00e9es pour traiter ma demande de devis. Aucun d\u00e9marchage commercial.<\/p>\n      <\/div>\n      <p class=\"ferr\" id=\"rgpdErr\" style=\"margin-top:8px\">Veuillez accepter pour continuer<\/p>\n    <\/div>\n\n    <button class=\"btn-main\" onclick=\"vr.go(5)\">\n      <span>V\u00e9rifier ma demande<\/span>\n      <span class=\"btn-main-arrow\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 8h10M9 4l4 4-4 4\"\/><\/svg>\n      <\/span>\n    <\/button>\n    <button class=\"btn-back\" onclick=\"vr.back(3)\">\n      <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M13 8H3M7 12l-4-4 4-4\"\/><\/svg>\n      Retour\n    <\/button>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550 P5 : R\u00c9CAPITULATIF \u2550\u2550\u2550\u2550 -->\n  <div class=\"panel\" id=\"p5\">\n    <div class=\"ph\">\n      <div>\n        <div class=\"ph-step\">\u00c9tape 05 \u2014 Envoi<\/div>\n        <h2 class=\"ph-title\">R\u00e9capitulatif<\/h2>\n      <\/div>\n      <div class=\"ph-deco\">05<\/div>\n    <\/div>\n\n    <div class=\"summary\">\n      <div class=\"sum-head\">\n        <span class=\"sum-title\">Votre demande<\/span>\n        <span class=\"sum-edit\" onclick=\"vr.back(1)\">\u2190 Modifier<\/span>\n      <\/div>\n      <div id=\"sumBody\"><\/div>\n    <\/div>\n\n    <button class=\"btn-wa\" onclick=\"vr.send()\">\n      <span class=\"btn-wa-left\">\n        <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z\"\/><\/svg>\n        Envoyer sur WhatsApp\n      <\/span>\n      <span class=\"btn-wa-arrow\">\n        <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"white\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 8h10M9 4l4 4-4 4\"\/><\/svg>\n      <\/span>\n    <\/button>\n\n    <div class=\"wa-sub\">R\u00e9ponse garantie sous 30 min \u00b7 24h\/7j<\/div>\n\n    <button class=\"btn-back\" onclick=\"vr.back(4)\" style=\"margin-top:20px\">\n      <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M13 8H3M7 12l-4-4 4-4\"\/><\/svg>\n      Modifier\n    <\/button>\n  <\/div>\n\n  <!-- SUCCESS -->\n  <div class=\"success\" id=\"vrSuccess\">\n    <div class=\"s-num\">\u2713<\/div>\n    <div class=\"s-check\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n    <\/div>\n    <h2 class=\"s-title\">Envoy\u00e9 !<\/h2>\n    <p class=\"s-text\">Votre demande WhatsApp a \u00e9t\u00e9 pr\u00e9par\u00e9e. Notre \u00e9quipe confirme votre devis sous quelques minutes.<\/p>\n    <button class=\"btn-new\" onclick=\"vr.reset()\">+ Nouvelle demande<\/button>\n  <\/div>\n\n<\/div>\n\n<script>\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   VTCMAROC V6 \u2014 Logique formulaire\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nconst vr = (() => {\n\n  const S = {\n    step: 1,\n    svc: '',\n    svcName: '',\n    pax: '',\n    veh: '',\n    ok: false,\n    data: {}\n  };\n\n  \/* Capacit\u00e9s v\u00e9hicules : [min, max] passagers *\/\n  const VEH_CAP = {\n    'Berline':              [1, 3],\n    'SUV':                  [1, 3],\n    'Van':                  [1, 7],\n    'Minibus':              [1, 17],\n    'Plusieurs v\u00e9hicules':  [1, 200]\n  };\n\n  \/* Info banni\u00e8res par service *\/\n  const INFO_TEXTS = {\n    aeroport:  '<strong>Transfert a\u00e9roport<\/strong> \u2014 Pr\u00e9cisez le sens (arriv\u00e9e\/d\u00e9part), l\\'a\u00e9roport et le num\u00e9ro de vol pour un suivi en temps r\u00e9el.',\n    transfert: '<strong>Transfert ville<\/strong> \u2014 Trajet direct du point A au point B, en ville ou entre villes du Maroc.',\n    dispo:     '<strong>Mise \u00e0 disposition<\/strong> \u2014 Chauffeur \u00e0 votre service pour la dur\u00e9e souhait\u00e9e (minimum 12 heures).',\n    excursion: '<strong>Excursion journ\u00e9e<\/strong> \u2014 Sortie d\\'une journ\u00e9e compl\u00e8te, retour le soir m\u00eame au point de d\u00e9part.',\n    circuit:   '<strong>Circuit multi-jours<\/strong> \u2014 \u00c0 partir de 2 jours. H\u00e9bergement non inclus (devis sur mesure possible).'\n  };\n\n  const P2_TITLES = {\n    aeroport:  'D\u00e9tails du<br>transfert',\n    transfert: 'Votre trajet',\n    dispo:     'Mise \u00e0<br>disposition',\n    excursion: 'Votre<br>excursion',\n    circuit:   'Votre circuit'\n  };\n\n  \/* INIT *\/\n  document.addEventListener('DOMContentLoaded', () => {\n    const today = new Date().toISOString().split('T')[0];\n    ['aeroDate','trDate','dpDate','exDate','ciDate1','ciDate2'].forEach(id => {\n      const e = document.getElementById(id);\n      if (e) { e.min = today; e.value = today; }\n    });\n  });\n\n  const $ = id => document.getElementById(id);\n  const gv = id => $(id) ? $(id).value.trim() : '';\n  const show = id => { if($(id)) $(id).style.display = 'block'; };\n  const hide = id => { if($(id)) $(id).style.display = 'none'; };\n  const errOn  = (fid,eid) => { if($(fid)) $(fid).classList.add('has-err'); show(eid); };\n  const errOff = (fid,eid) => { if($(fid)) $(fid).classList.remove('has-err'); hide(eid); };\n\n  \/* SERVICE PICK *\/\n  function pickS(el) {\n    document.querySelectorAll('.vtcr .svc-item').forEach(c => c.classList.remove('selected'));\n    el.classList.add('selected');\n    S.svc = el.dataset.s;\n    S.svcName = el.dataset.name;\n    hide('sErr');\n    showServiceFields();\n  }\n\n  function showServiceFields() {\n    ['aeroport','transfert','dispo','excursion','circuit'].forEach(s => {\n      const el = $('svc-' + s + '-fields');\n      if (el) el.style.display = (s === S.svc) ? 'block' : 'none';\n    });\n    if (S.svc) {\n      $('infoBannerText').innerHTML = INFO_TEXTS[S.svc];\n      $('p2Title').innerHTML = P2_TITLES[S.svc];\n    }\n    \/* Adapter le label arriv\u00e9e\/d\u00e9part pour a\u00e9roport *\/\n    if (S.svc === 'aeroport') {\n      updateAeroLabels();\n      const sel = $('aeroDirection');\n      if (sel) sel.onchange = updateAeroLabels;\n    }\n  }\n\n  function updateAeroLabels() {\n    const dir = $('aeroDirection').value;\n    if (dir === 'arrivee') {\n      $('aeroOtherLabel').textContent = 'Lieu de destination';\n      $('aeroOther').placeholder = 'H\u00f4tel, riad, adresse de destination\u2026';\n      $('aeroTimeLabel').textContent = \"Heure d'atterrissage\";\n      \/* Vol obligatoire en arriv\u00e9e *\/\n      $('aeroFlightReq').style.display = 'inline';\n      $('aeroFlightHint').innerHTML = '<svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><path d=\"M8 7v5M8 5v.5\"\/><\/svg> Obligatoire pour l\\'arriv\u00e9e \u2014 Suivi de vol en temps r\u00e9el inclus';\n    } else {\n      $('aeroOtherLabel').textContent = 'Lieu de prise en charge';\n      $('aeroOther').placeholder = 'H\u00f4tel, riad, adresse de d\u00e9part\u2026';\n      $('aeroTimeLabel').textContent = 'Heure de prise en charge';\n      \/* Vol optionnel au d\u00e9part *\/\n      $('aeroFlightReq').style.display = 'none';\n      $('aeroFlightHint').innerHTML = '<svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><circle cx=\"8\" cy=\"8\" r=\"6\"\/><path d=\"M8 7v5M8 5v.5\"\/><\/svg> Recommand\u00e9 pour mieux organiser votre transfert';\n      $('f-aero-flight').classList.remove('has-err');\n      hide('aeroFlightErr');\n    }\n  }\n\n  \/* RGPD *\/\n  function rgpd() {\n    S.ok = !S.ok;\n    $('rgpdRow').classList.toggle('on', S.ok);\n    if (S.ok) hide('rgpdErr');\n  }\n\n  \/* V\u00c9HICULE - hint dynamique *\/\n  document.addEventListener('DOMContentLoaded', () => {\n    const veh = $('vehicle');\n    if (veh) veh.addEventListener('change', updateVehHint);\n    const pax = $('paxNum');\n    if (pax) pax.addEventListener('input', updateVehHint);\n  });\n\n  function updateVehHint() {\n    const v = $('vehicle').value;\n    const p = parseInt($('paxNum').value) || 0;\n    const hint = $('vehHint');\n    const txt = $('vehHintText');\n\n    if (v && VEH_CAP[v]) {\n      const [min, max] = VEH_CAP[v];\n      if (p > 0 && p > max && v !== 'Plusieurs v\u00e9hicules') {\n        hint.style.display = 'flex';\n        hint.style.color = '#d72d2d';\n        txt.textContent = `Capacit\u00e9 d\u00e9pass\u00e9e : ${v} accepte ${min} \u00e0 ${max} passagers. Pour ${p}, choisissez \"Plusieurs v\u00e9hicules\".`;\n      } else if (v !== 'Plusieurs v\u00e9hicules') {\n        hint.style.display = 'flex';\n        hint.style.color = '';\n        txt.textContent = `${v} : capacit\u00e9 ${min} \u00e0 ${max} passagers`;\n      } else {\n        hint.style.display = 'flex';\n        hint.style.color = '';\n        txt.textContent = 'Devis personnalis\u00e9 pour groupe important';\n      }\n    } else {\n      hint.style.display = 'none';\n    }\n  }\n\n  \/* VALIDATION *\/\n  function validate(step) {\n    let ok = true;\n\n    if (step === 1) {\n      if (!S.svc) { show('sErr'); ok = false; }\n    }\n\n    if (step === 2) {\n      if (S.svc === 'aeroport') {\n        const dir = $('aeroDirection').value;\n        if (!gv('aeroAirport')) { errOn('f-aero-airport','aeroAirportErr'); ok=false; } else errOff('f-aero-airport','aeroAirportErr');\n        if (!gv('aeroOther'))   { errOn('f-aero-other','aeroOtherErr'); ok=false; } else errOff('f-aero-other','aeroOtherErr');\n        if (!gv('aeroDate'))    { show('aeroDateErr'); ok=false; } else hide('aeroDateErr');\n        if (!gv('aeroTime'))    { show('aeroTimeErr'); ok=false; } else hide('aeroTimeErr');\n        \/* N\u00b0 de vol obligatoire uniquement pour une ARRIV\u00c9E *\/\n        if (dir === 'arrivee') {\n          if (!gv('aeroFlight')) { errOn('f-aero-flight','aeroFlightErr'); ok=false; } else errOff('f-aero-flight','aeroFlightErr');\n        } else errOff('f-aero-flight','aeroFlightErr');\n      }\n      else if (S.svc === 'transfert') {\n        if (!gv('trPickup')) { errOn('f-tr-pickup','trPickupErr'); ok=false; } else errOff('f-tr-pickup','trPickupErr');\n        if (!gv('trDrop'))   { errOn('f-tr-drop','trDropErr'); ok=false; } else errOff('f-tr-drop','trDropErr');\n        if (!gv('trDate'))   { show('trDateErr'); ok=false; } else hide('trDateErr');\n        if (!gv('trTime'))   { show('trTimeErr'); ok=false; } else hide('trTimeErr');\n      }\n      else if (S.svc === 'dispo') {\n        if (!gv('dpPickup'))   { errOn('f-dp-pickup','dpPickupErr'); ok=false; } else errOff('f-dp-pickup','dpPickupErr');\n        if (!gv('dpDate'))     { show('dpDateErr'); ok=false; } else hide('dpDateErr');\n        if (!gv('dpTime'))     { show('dpTimeErr'); ok=false; } else hide('dpTimeErr');\n        if (!gv('dpDuration')) { errOn('f-dp-duration','dpDurationErr'); ok=false; } else errOff('f-dp-duration','dpDurationErr');\n      }\n      else if (S.svc === 'excursion') {\n        if (!gv('exDest'))   { errOn('f-ex-dest','exDestErr'); ok=false; } else errOff('f-ex-dest','exDestErr');\n        if (!gv('exPickup')) { errOn('f-ex-pickup','exPickupErr'); ok=false; } else errOff('f-ex-pickup','exPickupErr');\n        if (!gv('exDate'))   { show('exDateErr'); ok=false; } else hide('exDateErr');\n        if (!gv('exTime'))   { show('exTimeErr'); ok=false; } else hide('exTimeErr');\n      }\n      else if (S.svc === 'circuit') {\n        if (!gv('ciStart'))  { errOn('f-ci-start','ciStartErr'); ok=false; } else errOff('f-ci-start','ciStartErr');\n        if (!gv('ciDate1'))  { show('ciDate1Err'); ok=false; } else hide('ciDate1Err');\n        const d1 = gv('ciDate1'), d2 = gv('ciDate2');\n        if (!d2 || (d1 && d2 && new Date(d2) <= new Date(d1))) {\n          show('ciDate2Err'); ok=false;\n        } else hide('ciDate2Err');\n        if (!gv('ciTheme'))  { errOn('f-ci-theme','ciThemeErr'); ok=false; } else errOff('f-ci-theme','ciThemeErr');\n      }\n    }\n\n    if (step === 3) {\n      const p = parseInt($('paxNum').value) || 0;\n      if (p < 1 || p > 200) {\n        errOn('f-pax','paxErr'); ok=false;\n      } else {\n        errOff('f-pax','paxErr');\n        S.pax = p;\n      }\n      const v = gv('vehicle');\n      if (!v) {\n        errOn('f-veh','vehErr'); ok=false;\n      } else if (VEH_CAP[v]) {\n        const [, max] = VEH_CAP[v];\n        if (p > max && v !== 'Plusieurs v\u00e9hicules') {\n          errOn('f-veh','vehErr');\n          $('vehErr').textContent = `Capacit\u00e9 d\u00e9pass\u00e9e. Choisissez \"Plusieurs v\u00e9hicules\" pour ${p} passagers.`;\n          ok=false;\n        } else {\n          errOff('f-veh','vehErr');\n          $('vehErr').textContent = 'S\u00e9lectionnez un v\u00e9hicule adapt\u00e9';\n          S.veh = v;\n        }\n      }\n    }\n\n    if (step === 4) {\n      const fn=gv('fname'), ph=gv('phoneNum').replace(\/\\D\/g,''), em=gv('email');\n      if(!fn){errOn('f-fname','fnErr');ok=false;}else errOff('f-fname','fnErr');\n      if(ph.length<8){show('phErr');$('phoneNum').classList.add('err');ok=false;}\n      else{hide('phErr');$('phoneNum').classList.remove('err');}\n      \/* Email obligatoire + format valide *\/\n      const emailRe = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\n      if(!em || !emailRe.test(em)){errOn('f-email','emailErr');$('email').classList.add('err');ok=false;}\n      else{errOff('f-email','emailErr');$('email').classList.remove('err');}\n      if(!S.ok){show('rgpdErr');ok=false;}else hide('rgpdErr');\n    }\n\n    return ok;\n  }\n\n  \/* NAVIGATION *\/\n  function go(to) {\n    if (!validate(S.step)) { shake(); return; }\n    if (S.step === 1 && to === 2) showServiceFields();\n    if (to === 5) buildSum();\n    moveTo(to);\n  }\n\n  function back(to) { moveTo(to); }\n\n  function moveTo(step) {\n    document.querySelectorAll('.vtcr .panel').forEach(p => p.classList.remove('active'));\n    $('p' + step).classList.add('active');\n    S.step = step;\n    const pct = {1:20,2:40,3:60,4:80,5:100};\n    $('pFill').style.width = pct[step] + '%';\n    updateTracker(step);\n    const form = $('vtcrForm');\n    if (form) form.scrollIntoView({ behavior: 'smooth', block: 'start' });\n  }\n\n  function updateTracker(active) {\n    for (let i = 1; i <= 5; i++) {\n      const el = $('sl' + i);\n      if (!el) continue;\n      el.classList.remove('active', 'done');\n      const numTxt = el.querySelector('.sl-num-txt');\n      const chk    = el.querySelector('.sl-chk');\n      if (i < active) {\n        el.classList.add('done');\n        if (numTxt) numTxt.style.display = 'none';\n        if (chk) chk.style.display = 'block';\n      } else {\n        if (numTxt) numTxt.style.display = 'inline';\n        if (chk) chk.style.display = 'none';\n        if (i === active) el.classList.add('active');\n      }\n    }\n  }\n\n  function shake() {\n    const btn = document.querySelector('#p' + S.step + ' .btn-main');\n    if (!btn) return;\n    [0,-7,7,-5,5,-2,2,0].forEach((x, i) =>\n      setTimeout(() => { btn.style.transform = 'translateX(' + x + 'px)'; }, i * 50));\n    setTimeout(() => { btn.style.transform = ''; }, 450);\n  }\n\n  \/* COLLECT DATA *\/\n  function collectData() {\n    const data = {\n      service: S.svcName,\n      pax: S.pax,\n      veh: S.veh,\n      luggage: gv('luggage'),\n      notes: gv('notes'),\n      fname: gv('fname'),\n      lname: gv('lname'),\n      dialCode: $('dialCode').value,\n      phone: gv('phoneNum'),\n      email: gv('email')\n    };\n\n    const fmtDate = d => d ? new Date(d + 'T12:00').toLocaleDateString('fr-FR', {\n      weekday:'long', day:'numeric', month:'long', year:'numeric'\n    }) : '';\n\n    if (S.svc === 'aeroport') {\n      const dir = $('aeroDirection').value;\n      data.svcDetails = [\n        { k: 'Sens', v: dir === 'arrivee' ? 'Arriv\u00e9e \u00e0 l\\'a\u00e9roport' : 'D\u00e9part vers l\\'a\u00e9roport' },\n        { k: 'A\u00e9roport', v: gv('aeroAirport') },\n        { k: dir === 'arrivee' ? 'Destination' : 'Prise en charge', v: gv('aeroOther') },\n        { k: 'Date', v: fmtDate(gv('aeroDate')) },\n        { k: 'Heure', v: gv('aeroTime') }\n      ];\n      if (gv('aeroFlight')) data.svcDetails.push({ k: 'Vol', v: gv('aeroFlight').toUpperCase() });\n    }\n    else if (S.svc === 'transfert') {\n      data.svcDetails = [\n        { k: 'D\u00e9part', v: gv('trPickup') },\n        { k: 'Destination', v: gv('trDrop') },\n        { k: 'Date', v: fmtDate(gv('trDate')) },\n        { k: 'Heure', v: gv('trTime') }\n      ];\n    }\n    else if (S.svc === 'dispo') {\n      data.svcDetails = [\n        { k: 'Prise en charge', v: gv('dpPickup') },\n        { k: 'Date', v: fmtDate(gv('dpDate')) },\n        { k: 'Heure d\u00e9but', v: gv('dpTime') },\n        { k: 'Dur\u00e9e', v: gv('dpDuration') }\n      ];\n      if (gv('dpZone')) data.svcDetails.push({ k: 'Lieux\/zone', v: gv('dpZone') });\n    }\n    else if (S.svc === 'excursion') {\n      data.svcDetails = [\n        { k: 'Destination', v: gv('exDest') },\n        { k: 'Prise en charge', v: gv('exPickup') },\n        { k: 'Date', v: fmtDate(gv('exDate')) },\n        { k: 'Heure d\u00e9part', v: gv('exTime') }\n      ];\n      if (gv('exNotes')) data.svcDetails.push({ k: 'Int\u00e9r\u00eats', v: gv('exNotes') });\n    }\n    else if (S.svc === 'circuit') {\n      const d1 = gv('ciDate1'), d2 = gv('ciDate2');\n      const nbJours = (d1 && d2) ? Math.round((new Date(d2) - new Date(d1)) \/ 86400000) + 1 : '';\n      data.svcDetails = [\n        { k: 'D\u00e9part', v: gv('ciStart') }\n      ];\n      if (gv('ciEnd')) data.svcDetails.push({ k: 'Arriv\u00e9e', v: gv('ciEnd') });\n      data.svcDetails.push(\n        { k: 'Du', v: fmtDate(d1) },\n        { k: 'Au', v: fmtDate(d2) }\n      );\n      if (nbJours) data.svcDetails.push({ k: 'Dur\u00e9e', v: nbJours + ' jours' });\n      data.svcDetails.push({ k: 'Th\u00e8me', v: gv('ciTheme') });\n      if (gv('ciNotes')) data.svcDetails.push({ k: '\u00c9tapes', v: gv('ciNotes') });\n    }\n\n    return data;\n  }\n\n  \/* BUILD SUMMARY *\/\n  function buildSum() {\n    const d = collectData();\n    let html = '';\n\n    html += rowHtml('Service', d.service, true);\n    d.svcDetails.forEach(r => { html += rowHtml(r.k, r.v); });\n    html += rowHtml('Passagers', d.pax + ' personne' + (d.pax>1?'s':''));\n    html += rowHtml('V\u00e9hicule', d.veh);\n    if (d.luggage) html += rowHtml('Bagages', d.luggage);\n    if (d.notes)   html += rowHtml('Notes', d.notes);\n    html += rowHtml('Contact', d.fname + ' ' + d.lname + ' \u00b7 ' + d.dialCode + ' ' + d.phone);\n    if (d.email)   html += rowHtml('Email', d.email);\n\n    $('sumBody').innerHTML = html;\n    S.data = d;\n  }\n\n  function rowHtml(k, v, hi) {\n    if (!v) return '';\n    return `<div class=\"sum-row\"><div class=\"sum-k\">${k}<\/div><div class=\"sum-v${hi?' hi':''}\">${v}<\/div><\/div>`;\n  }\n\n  \/* WHATSAPP *\/\n  function send() {\n    const d = S.data;\n\n    let m = '\u2726 *Demande de devis \u2014 VTCMAROC.COM*\\n\\n';\n    m += '\ud83d\ude97 *Service :* ' + d.service + '\\n\\n';\n    d.svcDetails.forEach(r => { m += '\u2022 *' + r.k + ' :* ' + r.v + '\\n'; });\n    m += '\\n\ud83d\udc65 *Passagers :* ' + d.pax + '\\n';\n    m += '\ud83d\ude98 *V\u00e9hicule :* ' + d.veh + '\\n';\n    if (d.luggage) m += '\ud83e\uddf3 *Bagages :* ' + d.luggage + '\\n';\n    if (d.notes)   m += '\\n\ud83d\udcdd *Notes :* ' + d.notes + '\\n';\n    m += '\\n\ud83d\udc64 *Client :* ' + d.fname + ' ' + d.lname + '\\n';\n    m += '\ud83d\udcf1 *T\u00e9l :* ' + d.dialCode + ' ' + d.phone + '\\n';\n    if (d.email)   m += '\u2709\ufe0f *Email :* ' + d.email + '\\n';\n    m += '\\n_Envoy\u00e9 depuis vtcmaroc.com_';\n\n    $('vtcrOv').classList.add('on');\n    setTimeout(() => {\n      $('vtcrOv').classList.remove('on');\n      \/* \u2550\u2550\u2550\u2550 REMPLACER par votre num\u00e9ro \u2550\u2550\u2550\u2550 *\/\n      window.open('https:\/\/wa.me\/212600000000?text=' + encodeURIComponent(m), '_blank');\n      document.querySelectorAll('.vtcr .panel').forEach(p => p.classList.remove('active'));\n      $('vrSuccess').classList.add('on');\n      $('pFill').style.width = '100%';\n      document.querySelector('.vtcr .steps-line').style.opacity = '0.25';\n    }, 850);\n  }\n\n  \/* RESET *\/\n  function reset() {\n    S.step=1; S.svc=''; S.svcName=''; S.pax=''; S.veh=''; S.ok=false; S.data={};\n    $('vrSuccess').classList.remove('on');\n    document.querySelectorAll('.vtcr .svc-item').forEach(c => c.classList.remove('selected'));\n    document.querySelectorAll('.vtcr .finput, .vtcr .ftextarea, .vtcr .pax-input').forEach(f => {\n      if (f.type !== 'time') f.value = '';\n    });\n    document.querySelectorAll('.vtcr .fselect').forEach(s => { s.selectedIndex = 0; });\n    const today = new Date().toISOString().split('T')[0];\n    ['aeroDate','trDate','dpDate','exDate','ciDate1','ciDate2'].forEach(id => {\n      const e = $(id); if (e) e.value = today;\n    });\n    ['aeroTime','trTime','dpTime'].forEach(id => { const e=$(id); if(e) e.value='09:00'; });\n    if ($('exTime')) $('exTime').value = '08:00';\n    $('rgpdRow').classList.remove('on');\n    document.querySelector('.vtcr .steps-line').style.opacity = '1';\n    moveTo(1);\n  }\n\n  \/* LIVE PHONE *\/\n  document.addEventListener('DOMContentLoaded', () => {\n    const ph = $('phoneNum');\n    if (ph) ph.addEventListener('input', function() {\n      if (this.value.replace(\/\\D\/g,'').length >= 8) {\n        this.classList.remove('err'); hide('phErr');\n      }\n    });\n    const flt = $('aeroFlight');\n    if (flt) flt.addEventListener('input', function() {\n      this.value = this.value.toUpperCase();\n    });\n  });\n\n  return { pickS, rgpd, go, back, send, reset };\n\n})();\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   COUNTRY PICKER \u2014 Liste compl\u00e8te des pays du monde\n   Tri par usage probable au Maroc (Maroc, France, etc. en haut)\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nconst vrCountry = (() => {\n\n  \/* Liste de tous les pays avec indicatifs t\u00e9l\u00e9phoniques *\/\n  const COUNTRIES = [\n    \/* Pays prioritaires (clients fr\u00e9quents au Maroc) *\/\n    { c: '+212', f: '\ud83c\uddf2\ud83c\udde6', n: 'Maroc' },\n    { c: '+33',  f: '\ud83c\uddeb\ud83c\uddf7', n: 'France' },\n    { c: '+34',  f: '\ud83c\uddea\ud83c\uddf8', n: 'Espagne' },\n    { c: '+32',  f: '\ud83c\udde7\ud83c\uddea', n: 'Belgique' },\n    { c: '+41',  f: '\ud83c\udde8\ud83c\udded', n: 'Suisse' },\n    { c: '+39',  f: '\ud83c\uddee\ud83c\uddf9', n: 'Italie' },\n    { c: '+49',  f: '\ud83c\udde9\ud83c\uddea', n: 'Allemagne' },\n    { c: '+44',  f: '\ud83c\uddec\ud83c\udde7', n: 'Royaume-Uni' },\n    { c: '+31',  f: '\ud83c\uddf3\ud83c\uddf1', n: 'Pays-Bas' },\n    { c: '+1',   f: '\ud83c\uddfa\ud83c\uddf8', n: '\u00c9tats-Unis' },\n    { c: '+1',   f: '\ud83c\udde8\ud83c\udde6', n: 'Canada' },\n    { c: '+971', f: '\ud83c\udde6\ud83c\uddea', n: '\u00c9mirats arabes unis' },\n    { c: '+966', f: '\ud83c\uddf8\ud83c\udde6', n: 'Arabie saoudite' },\n    { c: '+974', f: '\ud83c\uddf6\ud83c\udde6', n: 'Qatar' },\n    { c: '+965', f: '\ud83c\uddf0\ud83c\uddfc', n: 'Kowe\u00eft' },\n\n    \/* Tous les autres pays (ordre alphab\u00e9tique fran\u00e7ais) *\/\n    { c: '+93',  f: '\ud83c\udde6\ud83c\uddeb', n: 'Afghanistan' },\n    { c: '+27',  f: '\ud83c\uddff\ud83c\udde6', n: 'Afrique du Sud' },\n    { c: '+355', f: '\ud83c\udde6\ud83c\uddf1', n: 'Albanie' },\n    { c: '+213', f: '\ud83c\udde9\ud83c\uddff', n: 'Alg\u00e9rie' },\n    { c: '+376', f: '\ud83c\udde6\ud83c\udde9', n: 'Andorre' },\n    { c: '+244', f: '\ud83c\udde6\ud83c\uddf4', n: 'Angola' },\n    { c: '+1268',f: '\ud83c\udde6\ud83c\uddec', n: 'Antigua-et-Barbuda' },\n    { c: '+966', f: '\ud83c\uddf8\ud83c\udde6', n: 'Arabie saoudite' },\n    { c: '+54',  f: '\ud83c\udde6\ud83c\uddf7', n: 'Argentine' },\n    { c: '+374', f: '\ud83c\udde6\ud83c\uddf2', n: 'Arm\u00e9nie' },\n    { c: '+297', f: '\ud83c\udde6\ud83c\uddfc', n: 'Aruba' },\n    { c: '+61',  f: '\ud83c\udde6\ud83c\uddfa', n: 'Australie' },\n    { c: '+43',  f: '\ud83c\udde6\ud83c\uddf9', n: 'Autriche' },\n    { c: '+994', f: '\ud83c\udde6\ud83c\uddff', n: 'Azerba\u00efdjan' },\n    { c: '+1242',f: '\ud83c\udde7\ud83c\uddf8', n: 'Bahamas' },\n    { c: '+973', f: '\ud83c\udde7\ud83c\udded', n: 'Bahre\u00efn' },\n    { c: '+880', f: '\ud83c\udde7\ud83c\udde9', n: 'Bangladesh' },\n    { c: '+1246',f: '\ud83c\udde7\ud83c\udde7', n: 'Barbade' },\n    { c: '+501', f: '\ud83c\udde7\ud83c\uddff', n: 'Belize' },\n    { c: '+229', f: '\ud83c\udde7\ud83c\uddef', n: 'B\u00e9nin' },\n    { c: '+975', f: '\ud83c\udde7\ud83c\uddf9', n: 'Bhoutan' },\n    { c: '+375', f: '\ud83c\udde7\ud83c\uddfe', n: 'Bi\u00e9lorussie' },\n    { c: '+591', f: '\ud83c\udde7\ud83c\uddf4', n: 'Bolivie' },\n    { c: '+387', f: '\ud83c\udde7\ud83c\udde6', n: 'Bosnie-Herz\u00e9govine' },\n    { c: '+267', f: '\ud83c\udde7\ud83c\uddfc', n: 'Botswana' },\n    { c: '+673', f: '\ud83c\udde7\ud83c\uddf3', n: 'Brunei' },\n    { c: '+55',  f: '\ud83c\udde7\ud83c\uddf7', n: 'Br\u00e9sil' },\n    { c: '+359', f: '\ud83c\udde7\ud83c\uddec', n: 'Bulgarie' },\n    { c: '+226', f: '\ud83c\udde7\ud83c\uddeb', n: 'Burkina Faso' },\n    { c: '+257', f: '\ud83c\udde7\ud83c\uddee', n: 'Burundi' },\n    { c: '+855', f: '\ud83c\uddf0\ud83c\udded', n: 'Cambodge' },\n    { c: '+237', f: '\ud83c\udde8\ud83c\uddf2', n: 'Cameroun' },\n    { c: '+238', f: '\ud83c\udde8\ud83c\uddfb', n: 'Cap-Vert' },\n    { c: '+56',  f: '\ud83c\udde8\ud83c\uddf1', n: 'Chili' },\n    { c: '+86',  f: '\ud83c\udde8\ud83c\uddf3', n: 'Chine' },\n    { c: '+357', f: '\ud83c\udde8\ud83c\uddfe', n: 'Chypre' },\n    { c: '+57',  f: '\ud83c\udde8\ud83c\uddf4', n: 'Colombie' },\n    { c: '+269', f: '\ud83c\uddf0\ud83c\uddf2', n: 'Comores' },\n    { c: '+242', f: '\ud83c\udde8\ud83c\uddec', n: 'Congo' },\n    { c: '+243', f: '\ud83c\udde8\ud83c\udde9', n: 'Congo (RDC)' },\n    { c: '+850', f: '\ud83c\uddf0\ud83c\uddf5', n: 'Cor\u00e9e du Nord' },\n    { c: '+82',  f: '\ud83c\uddf0\ud83c\uddf7', n: 'Cor\u00e9e du Sud' },\n    { c: '+506', f: '\ud83c\udde8\ud83c\uddf7', n: 'Costa Rica' },\n    { c: '+225', f: '\ud83c\udde8\ud83c\uddee', n: \"C\u00f4te d'Ivoire\" },\n    { c: '+385', f: '\ud83c\udded\ud83c\uddf7', n: 'Croatie' },\n    { c: '+53',  f: '\ud83c\udde8\ud83c\uddfa', n: 'Cuba' },\n    { c: '+599', f: '\ud83c\udde8\ud83c\uddfc', n: 'Cura\u00e7ao' },\n    { c: '+45',  f: '\ud83c\udde9\ud83c\uddf0', n: 'Danemark' },\n    { c: '+253', f: '\ud83c\udde9\ud83c\uddef', n: 'Djibouti' },\n    { c: '+1767',f: '\ud83c\udde9\ud83c\uddf2', n: 'Dominique' },\n    { c: '+593', f: '\ud83c\uddea\ud83c\udde8', n: '\u00c9quateur' },\n    { c: '+503', f: '\ud83c\uddf8\ud83c\uddfb', n: 'Salvador' },\n    { c: '+291', f: '\ud83c\uddea\ud83c\uddf7', n: '\u00c9rythr\u00e9e' },\n    { c: '+372', f: '\ud83c\uddea\ud83c\uddea', n: 'Estonie' },\n    { c: '+1',   f: '\ud83c\uddfa\ud83c\uddf8', n: '\u00c9tats-Unis' },\n    { c: '+251', f: '\ud83c\uddea\ud83c\uddf9', n: '\u00c9thiopie' },\n    { c: '+679', f: '\ud83c\uddeb\ud83c\uddef', n: 'Fidji' },\n    { c: '+358', f: '\ud83c\uddeb\ud83c\uddee', n: 'Finlande' },\n    { c: '+241', f: '\ud83c\uddec\ud83c\udde6', n: 'Gabon' },\n    { c: '+220', f: '\ud83c\uddec\ud83c\uddf2', n: 'Gambie' },\n    { c: '+995', f: '\ud83c\uddec\ud83c\uddea', n: 'G\u00e9orgie' },\n    { c: '+233', f: '\ud83c\uddec\ud83c\udded', n: 'Ghana' },\n    { c: '+350', f: '\ud83c\uddec\ud83c\uddee', n: 'Gibraltar' },\n    { c: '+30',  f: '\ud83c\uddec\ud83c\uddf7', n: 'Gr\u00e8ce' },\n    { c: '+1473',f: '\ud83c\uddec\ud83c\udde9', n: 'Grenade' },\n    { c: '+299', f: '\ud83c\uddec\ud83c\uddf1', n: 'Groenland' },\n    { c: '+590', f: '\ud83c\uddec\ud83c\uddf5', n: 'Guadeloupe' },\n    { c: '+1671',f: '\ud83c\uddec\ud83c\uddfa', n: 'Guam' },\n    { c: '+502', f: '\ud83c\uddec\ud83c\uddf9', n: 'Guatemala' },\n    { c: '+44',  f: '\ud83c\uddec\ud83c\uddec', n: 'Guernesey' },\n    { c: '+224', f: '\ud83c\uddec\ud83c\uddf3', n: 'Guin\u00e9e' },\n    { c: '+245', f: '\ud83c\uddec\ud83c\uddfc', n: 'Guin\u00e9e-Bissau' },\n    { c: '+240', f: '\ud83c\uddec\ud83c\uddf6', n: 'Guin\u00e9e \u00e9quatoriale' },\n    { c: '+592', f: '\ud83c\uddec\ud83c\uddfe', n: 'Guyana' },\n    { c: '+594', f: '\ud83c\uddec\ud83c\uddeb', n: 'Guyane fran\u00e7aise' },\n    { c: '+509', f: '\ud83c\udded\ud83c\uddf9', n: 'Ha\u00efti' },\n    { c: '+504', f: '\ud83c\udded\ud83c\uddf3', n: 'Honduras' },\n    { c: '+852', f: '\ud83c\udded\ud83c\uddf0', n: 'Hong Kong' },\n    { c: '+36',  f: '\ud83c\udded\ud83c\uddfa', n: 'Hongrie' },\n    { c: '+91',  f: '\ud83c\uddee\ud83c\uddf3', n: 'Inde' },\n    { c: '+62',  f: '\ud83c\uddee\ud83c\udde9', n: 'Indon\u00e9sie' },\n    { c: '+98',  f: '\ud83c\uddee\ud83c\uddf7', n: 'Iran' },\n    { c: '+964', f: '\ud83c\uddee\ud83c\uddf6', n: 'Irak' },\n    { c: '+353', f: '\ud83c\uddee\ud83c\uddea', n: 'Irlande' },\n    { c: '+354', f: '\ud83c\uddee\ud83c\uddf8', n: 'Islande' },\n    { c: '+972', f: '\ud83c\uddee\ud83c\uddf1', n: 'Isra\u00ebl' },\n    { c: '+1876',f: '\ud83c\uddef\ud83c\uddf2', n: 'Jama\u00efque' },\n    { c: '+81',  f: '\ud83c\uddef\ud83c\uddf5', n: 'Japon' },\n    { c: '+44',  f: '\ud83c\uddef\ud83c\uddea', n: 'Jersey' },\n    { c: '+962', f: '\ud83c\uddef\ud83c\uddf4', n: 'Jordanie' },\n    { c: '+7',   f: '\ud83c\uddf0\ud83c\uddff', n: 'Kazakhstan' },\n    { c: '+254', f: '\ud83c\uddf0\ud83c\uddea', n: 'Kenya' },\n    { c: '+996', f: '\ud83c\uddf0\ud83c\uddec', n: 'Kirghizistan' },\n    { c: '+686', f: '\ud83c\uddf0\ud83c\uddee', n: 'Kiribati' },\n    { c: '+383', f: '\ud83c\uddfd\ud83c\uddf0', n: 'Kosovo' },\n    { c: '+856', f: '\ud83c\uddf1\ud83c\udde6', n: 'Laos' },\n    { c: '+266', f: '\ud83c\uddf1\ud83c\uddf8', n: 'Lesotho' },\n    { c: '+371', f: '\ud83c\uddf1\ud83c\uddfb', n: 'Lettonie' },\n    { c: '+961', f: '\ud83c\uddf1\ud83c\udde7', n: 'Liban' },\n    { c: '+231', f: '\ud83c\uddf1\ud83c\uddf7', n: 'Lib\u00e9ria' },\n    { c: '+218', f: '\ud83c\uddf1\ud83c\uddfe', n: 'Libye' },\n    { c: '+423', f: '\ud83c\uddf1\ud83c\uddee', n: 'Liechtenstein' },\n    { c: '+370', f: '\ud83c\uddf1\ud83c\uddf9', n: 'Lituanie' },\n    { c: '+352', f: '\ud83c\uddf1\ud83c\uddfa', n: 'Luxembourg' },\n    { c: '+853', f: '\ud83c\uddf2\ud83c\uddf4', n: 'Macao' },\n    { c: '+389', f: '\ud83c\uddf2\ud83c\uddf0', n: 'Mac\u00e9doine du Nord' },\n    { c: '+261', f: '\ud83c\uddf2\ud83c\uddec', n: 'Madagascar' },\n    { c: '+60',  f: '\ud83c\uddf2\ud83c\uddfe', n: 'Malaisie' },\n    { c: '+265', f: '\ud83c\uddf2\ud83c\uddfc', n: 'Malawi' },\n    { c: '+960', f: '\ud83c\uddf2\ud83c\uddfb', n: 'Maldives' },\n    { c: '+223', f: '\ud83c\uddf2\ud83c\uddf1', n: 'Mali' },\n    { c: '+356', f: '\ud83c\uddf2\ud83c\uddf9', n: 'Malte' },\n    { c: '+1670',f: '\ud83c\uddf2\ud83c\uddf5', n: 'Mariannes du Nord' },\n    { c: '+212', f: '\ud83c\uddea\ud83c\udded', n: 'Sahara occidental' },\n    { c: '+596', f: '\ud83c\uddf2\ud83c\uddf6', n: 'Martinique' },\n    { c: '+230', f: '\ud83c\uddf2\ud83c\uddfa', n: 'Maurice' },\n    { c: '+222', f: '\ud83c\uddf2\ud83c\uddf7', n: 'Mauritanie' },\n    { c: '+262', f: '\ud83c\uddfe\ud83c\uddf9', n: 'Mayotte' },\n    { c: '+52',  f: '\ud83c\uddf2\ud83c\uddfd', n: 'Mexique' },\n    { c: '+691', f: '\ud83c\uddeb\ud83c\uddf2', n: 'Micron\u00e9sie' },\n    { c: '+373', f: '\ud83c\uddf2\ud83c\udde9', n: 'Moldavie' },\n    { c: '+377', f: '\ud83c\uddf2\ud83c\udde8', n: 'Monaco' },\n    { c: '+976', f: '\ud83c\uddf2\ud83c\uddf3', n: 'Mongolie' },\n    { c: '+382', f: '\ud83c\uddf2\ud83c\uddea', n: 'Mont\u00e9n\u00e9gro' },\n    { c: '+1664',f: '\ud83c\uddf2\ud83c\uddf8', n: 'Montserrat' },\n    { c: '+258', f: '\ud83c\uddf2\ud83c\uddff', n: 'Mozambique' },\n    { c: '+95',  f: '\ud83c\uddf2\ud83c\uddf2', n: 'Myanmar' },\n    { c: '+264', f: '\ud83c\uddf3\ud83c\udde6', n: 'Namibie' },\n    { c: '+674', f: '\ud83c\uddf3\ud83c\uddf7', n: 'Nauru' },\n    { c: '+977', f: '\ud83c\uddf3\ud83c\uddf5', n: 'N\u00e9pal' },\n    { c: '+505', f: '\ud83c\uddf3\ud83c\uddee', n: 'Nicaragua' },\n    { c: '+227', f: '\ud83c\uddf3\ud83c\uddea', n: 'Niger' },\n    { c: '+234', f: '\ud83c\uddf3\ud83c\uddec', n: 'Nigeria' },\n    { c: '+683', f: '\ud83c\uddf3\ud83c\uddfa', n: 'Niue' },\n    { c: '+47',  f: '\ud83c\uddf3\ud83c\uddf4', n: 'Norv\u00e8ge' },\n    { c: '+687', f: '\ud83c\uddf3\ud83c\udde8', n: 'Nouvelle-Cal\u00e9donie' },\n    { c: '+64',  f: '\ud83c\uddf3\ud83c\uddff', n: 'Nouvelle-Z\u00e9lande' },\n    { c: '+968', f: '\ud83c\uddf4\ud83c\uddf2', n: 'Oman' },\n    { c: '+256', f: '\ud83c\uddfa\ud83c\uddec', n: 'Ouganda' },\n    { c: '+998', f: '\ud83c\uddfa\ud83c\uddff', n: 'Ouzb\u00e9kistan' },\n    { c: '+92',  f: '\ud83c\uddf5\ud83c\uddf0', n: 'Pakistan' },\n    { c: '+680', f: '\ud83c\uddf5\ud83c\uddfc', n: 'Palaos' },\n    { c: '+970', f: '\ud83c\uddf5\ud83c\uddf8', n: 'Palestine' },\n    { c: '+507', f: '\ud83c\uddf5\ud83c\udde6', n: 'Panama' },\n    { c: '+675', f: '\ud83c\uddf5\ud83c\uddec', n: 'Papouasie-Nouvelle-Guin\u00e9e' },\n    { c: '+595', f: '\ud83c\uddf5\ud83c\uddfe', n: 'Paraguay' },\n    { c: '+51',  f: '\ud83c\uddf5\ud83c\uddea', n: 'P\u00e9rou' },\n    { c: '+63',  f: '\ud83c\uddf5\ud83c\udded', n: 'Philippines' },\n    { c: '+48',  f: '\ud83c\uddf5\ud83c\uddf1', n: 'Pologne' },\n    { c: '+689', f: '\ud83c\uddf5\ud83c\uddeb', n: 'Polyn\u00e9sie fran\u00e7aise' },\n    { c: '+1787',f: '\ud83c\uddf5\ud83c\uddf7', n: 'Porto Rico' },\n    { c: '+351', f: '\ud83c\uddf5\ud83c\uddf9', n: 'Portugal' },\n    { c: '+1809',f: '\ud83c\udde9\ud83c\uddf4', n: 'R\u00e9publique dominicaine' },\n    { c: '+236', f: '\ud83c\udde8\ud83c\uddeb', n: 'R\u00e9publique centrafricaine' },\n    { c: '+420', f: '\ud83c\udde8\ud83c\uddff', n: 'R\u00e9publique tch\u00e8que' },\n    { c: '+262', f: '\ud83c\uddf7\ud83c\uddea', n: 'R\u00e9union' },\n    { c: '+40',  f: '\ud83c\uddf7\ud83c\uddf4', n: 'Roumanie' },\n    { c: '+7',   f: '\ud83c\uddf7\ud83c\uddfa', n: 'Russie' },\n    { c: '+250', f: '\ud83c\uddf7\ud83c\uddfc', n: 'Rwanda' },\n    { c: '+1869',f: '\ud83c\uddf0\ud83c\uddf3', n: 'Saint-Kitts-et-Nevis' },\n    { c: '+378', f: '\ud83c\uddf8\ud83c\uddf2', n: 'Saint-Marin' },\n    { c: '+1758',f: '\ud83c\uddf1\ud83c\udde8', n: 'Sainte-Lucie' },\n    { c: '+1784',f: '\ud83c\uddfb\ud83c\udde8', n: 'Saint-Vincent-et-les-Grenadines' },\n    { c: '+685', f: '\ud83c\uddfc\ud83c\uddf8', n: 'Samoa' },\n    { c: '+239', f: '\ud83c\uddf8\ud83c\uddf9', n: 'Sao Tom\u00e9-et-Principe' },\n    { c: '+221', f: '\ud83c\uddf8\ud83c\uddf3', n: 'S\u00e9n\u00e9gal' },\n    { c: '+381', f: '\ud83c\uddf7\ud83c\uddf8', n: 'Serbie' },\n    { c: '+248', f: '\ud83c\uddf8\ud83c\udde8', n: 'Seychelles' },\n    { c: '+232', f: '\ud83c\uddf8\ud83c\uddf1', n: 'Sierra Leone' },\n    { c: '+65',  f: '\ud83c\uddf8\ud83c\uddec', n: 'Singapour' },\n    { c: '+421', f: '\ud83c\uddf8\ud83c\uddf0', n: 'Slovaquie' },\n    { c: '+386', f: '\ud83c\uddf8\ud83c\uddee', n: 'Slov\u00e9nie' },\n    { c: '+252', f: '\ud83c\uddf8\ud83c\uddf4', n: 'Somalie' },\n    { c: '+249', f: '\ud83c\uddf8\ud83c\udde9', n: 'Soudan' },\n    { c: '+211', f: '\ud83c\uddf8\ud83c\uddf8', n: 'Soudan du Sud' },\n    { c: '+94',  f: '\ud83c\uddf1\ud83c\uddf0', n: 'Sri Lanka' },\n    { c: '+46',  f: '\ud83c\uddf8\ud83c\uddea', n: 'Su\u00e8de' },\n    { c: '+597', f: '\ud83c\uddf8\ud83c\uddf7', n: 'Suriname' },\n    { c: '+268', f: '\ud83c\uddf8\ud83c\uddff', n: 'Eswatini' },\n    { c: '+963', f: '\ud83c\uddf8\ud83c\uddfe', n: 'Syrie' },\n    { c: '+992', f: '\ud83c\uddf9\ud83c\uddef', n: 'Tadjikistan' },\n    { c: '+886', f: '\ud83c\uddf9\ud83c\uddfc', n: 'Ta\u00efwan' },\n    { c: '+255', f: '\ud83c\uddf9\ud83c\uddff', n: 'Tanzanie' },\n    { c: '+235', f: '\ud83c\uddf9\ud83c\udde9', n: 'Tchad' },\n    { c: '+66',  f: '\ud83c\uddf9\ud83c\udded', n: 'Tha\u00eflande' },\n    { c: '+670', f: '\ud83c\uddf9\ud83c\uddf1', n: 'Timor oriental' },\n    { c: '+228', f: '\ud83c\uddf9\ud83c\uddec', n: 'Togo' },\n    { c: '+676', f: '\ud83c\uddf9\ud83c\uddf4', n: 'Tonga' },\n    { c: '+1868',f: '\ud83c\uddf9\ud83c\uddf9', n: 'Trinit\u00e9-et-Tobago' },\n    { c: '+216', f: '\ud83c\uddf9\ud83c\uddf3', n: 'Tunisie' },\n    { c: '+993', f: '\ud83c\uddf9\ud83c\uddf2', n: 'Turkm\u00e9nistan' },\n    { c: '+90',  f: '\ud83c\uddf9\ud83c\uddf7', n: 'Turquie' },\n    { c: '+688', f: '\ud83c\uddf9\ud83c\uddfb', n: 'Tuvalu' },\n    { c: '+380', f: '\ud83c\uddfa\ud83c\udde6', n: 'Ukraine' },\n    { c: '+598', f: '\ud83c\uddfa\ud83c\uddfe', n: 'Uruguay' },\n    { c: '+678', f: '\ud83c\uddfb\ud83c\uddfa', n: 'Vanuatu' },\n    { c: '+58',  f: '\ud83c\uddfb\ud83c\uddea', n: 'Venezuela' },\n    { c: '+84',  f: '\ud83c\uddfb\ud83c\uddf3', n: 'Vietnam' },\n    { c: '+681', f: '\ud83c\uddfc\ud83c\uddeb', n: 'Wallis-et-Futuna' },\n    { c: '+967', f: '\ud83c\uddfe\ud83c\uddea', n: 'Y\u00e9men' },\n    { c: '+260', f: '\ud83c\uddff\ud83c\uddf2', n: 'Zambie' },\n    { c: '+263', f: '\ud83c\uddff\ud83c\uddfc', n: 'Zimbabwe' }\n  ];\n\n  let selectedCode    = '+212';\n  let selectedCountry = 'Maroc';\n  let selectedFlag    = '\ud83c\uddf2\ud83c\udde6';\n\n  function normalize(str) {\n    return str.toLowerCase()\n      .normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, '')\n      .trim();\n  }\n\n  function render(filter = '') {\n    const list = document.getElementById('vtcrCmList');\n    const q = normalize(filter);\n\n    const filtered = q\n      ? COUNTRIES.filter(c => normalize(c.n).includes(q) || c.c.includes(q))\n      : COUNTRIES;\n\n    if (filtered.length === 0) {\n      list.innerHTML = '<div class=\"vtcr-cm-empty\">Aucun pays trouv\u00e9 pour \u00ab ' + filter + ' \u00bb<\/div>';\n      return;\n    }\n\n    let html = '';\n    filtered.forEach((c, idx) => {\n      const isSel = c.c === selectedCode && c.n === selectedCountry;\n      html += `<button type=\"button\" class=\"vtcr-cm-item${isSel ? ' selected' : ''}\" data-code=\"${c.c}\" data-flag=\"${c.f}\" data-name=\"${c.n}\" onclick=\"vrCountry.pick(this)\">\n        <span class=\"vtcr-cm-flag\">${c.f}<\/span>\n        <div class=\"vtcr-cm-info\">\n          <div class=\"vtcr-cm-name\">${c.n}<\/div>\n          <div class=\"vtcr-cm-code\">${c.c}<\/div>\n        <\/div>\n        <svg class=\"vtcr-cm-check\" viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <path d=\"M3 9l4 4 8-8\"\/>\n        <\/svg>\n      <\/button>`;\n    });\n    list.innerHTML = html;\n  }\n\n  function open() {\n    document.getElementById('vtcrCmOverlay').classList.add('on');\n    document.body.style.overflow = 'hidden';\n    render();\n    \/* Focus auto sur la recherche apr\u00e8s l'animation *\/\n    setTimeout(() => {\n      const s = document.getElementById('vtcrCmSearch');\n      if (s) {\n        s.value = '';\n        if (window.innerWidth > 640) s.focus();\n      }\n    }, 250);\n    \/* Scroll vers l'\u00e9l\u00e9ment s\u00e9lectionn\u00e9 *\/\n    setTimeout(() => {\n      const sel = document.querySelector('.vtcr-cm-item.selected');\n      if (sel) sel.scrollIntoView({ block: 'center' });\n    }, 100);\n  }\n\n  function close() {\n    document.getElementById('vtcrCmOverlay').classList.remove('on');\n    document.body.style.overflow = '';\n  }\n\n  function bgClose(e) {\n    if (e.target.id === 'vtcrCmOverlay') close();\n  }\n\n  function pick(btn) {\n    selectedCode    = btn.dataset.code;\n    selectedFlag    = btn.dataset.flag;\n    selectedCountry = btn.dataset.name;\n    document.getElementById('cbFlag').textContent = selectedFlag;\n    document.getElementById('cbCode').textContent = selectedCode;\n    document.getElementById('dialCode').value     = selectedCode;\n    document.getElementById('dialCountry').value  = selectedCountry;\n    close();\n  }\n\n  \/* INIT \u2014 search input listener *\/\n  document.addEventListener('DOMContentLoaded', () => {\n    const s = document.getElementById('vtcrCmSearch');\n    if (s) {\n      s.addEventListener('input', e => render(e.target.value));\n    }\n    \/* ESC to close *\/\n    document.addEventListener('keydown', e => {\n      if (e.key === 'Escape' && document.getElementById('vtcrCmOverlay').classList.contains('on')) {\n        close();\n      }\n    });\n  });\n\n  return { open, close, pick, bgClose };\n\n})();\n<\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Demande de devis \u2014 VTCMAROC.COM S\u00e9lectionnez un pays V Demande de Devis R\u00e9servez votre chauffeur priv\u00e9 au Maroc \u2014 transferts, excursions et circuits sur mesure. R\u00e9ponse personnalis\u00e9e sous quelques minutes. 01 Service 02 D\u00e9tails 03 Passagers 04 Contact 05 Envoi \u00c9tape 01 \u2014 Service Type deprestation 01 A\u00e9roport Transfert arriv\u00e9e ou d\u00e9part \u2014 RAK \/ CMN \/ A\u00e9roports Maroc Transfert ville Point A vers Point B, intra-ville ou inter-villes Mise \u00e0 disposition Chauffeur \u00e0 l&rsquo;heure, \u00e0 votre service toute la dur\u00e9e souhait\u00e9e Excursion journ\u00e9e Sortie d&rsquo;une journ\u00e9e \u2014 Atlas, Essaouira, Ourika, A\u00eft Benhaddou\u2026 Circuit multi-jours \u00c0 partir de 2 jours \u2014 d\u00e9sert, villes imp\u00e9riales, c\u00f4tes \u26a0 S\u00e9lectionnez un service Continuer \u00c9tape 02 \u2014 D\u00e9tails D\u00e9tailsdu service 02 Informations sp\u00e9cifiques au service. Sens du transfert * Arriv\u00e9e \u00e0 l&rsquo;a\u00e9roport \u2192 DestinationLieu de prise en charge \u2192 A\u00e9roport A\u00e9roport * S\u00e9lectionnez un a\u00e9roportMarrakech M\u00e9nara (RAK)Casablanca Mohammed V (CMN)Agadir Al Massira (AGA)F\u00e8s-Sa\u00efss (FEZ)Rabat-Sal\u00e9 (RBA)Tanger Ibn Battouta (TNG)Ouarzazate (OZZ)Essaouira-Mogador (ESU) S\u00e9lectionnez un a\u00e9roport Lieu de destination * Champ obligatoire Date * Requis Heure d&rsquo;atterrissage * Requis Num\u00e9ro de vol * Num\u00e9ro de vol obligatoire pour une arriv\u00e9e Obligatoire pour l&rsquo;arriv\u00e9e \u2014 Suivi de vol en temps r\u00e9el inclus Lieu de prise en charge * Champ obligatoire Destination * Champ obligatoire Date * Requis Heure de d\u00e9part * Requis Lieu de prise en charge * Champ obligatoire Date * Requis Heure de d\u00e9but * Requis Dur\u00e9e souhait\u00e9e * S\u00e9lectionnez une dur\u00e9e12 heures (journ\u00e9e)1 jour2 jours3 joursSemaine compl\u00e8teDur\u00e9e personnalis\u00e9e (\u00e0 pr\u00e9ciser) S\u00e9lectionnez une dur\u00e9e Lieux \u00e0 visiter ou zone d&rsquo;activit\u00e9 Destination de l&rsquo;excursion * Choisissez une destinationVall\u00e9e de l&rsquo;OurikaCascades d&rsquo;OuzoudEssaouiraD\u00e9sert d&rsquo;AgafayVall\u00e9e de l&rsquo;Atlas \u2014 ImlilA\u00eft Benhaddou &#038; OuarzazateCasablancaVall\u00e9e du Dra\u00e2Lac Lalla TakerkoustAutre destination (\u00e0 pr\u00e9ciser) S\u00e9lectionnez une destination Lieu de prise en charge * Champ obligatoire Date * Requis Heure de d\u00e9part * Requis Centres d&rsquo;int\u00e9r\u00eat Ville de d\u00e9part * Champ obligatoire Ville d&rsquo;arriv\u00e9e Date de d\u00e9but * Requis Date de fin * Requis (min. 2 jours) Th\u00e8me du circuit * Choisissez un th\u00e8meD\u00e9sert (Merzouga \/ Erg Chebbi)Villes imp\u00e9riales (F\u00e8s, Mekn\u00e8s, Rabat)C\u00f4te atlantique (Essaouira, Agadir)Grand Sud (Ouarzazate, Zagora, Draa)Nord du Maroc (Chefchaouen, Tanger)Tour du Maroc completCircuit sur mesure (\u00e0 d\u00e9finir ensemble) S\u00e9lectionnez un th\u00e8me \u00c9tapes &#038; souhaits sp\u00e9cifiques Continuer Retour \u00c9tape 03 \u2014 Passagers Passagers &#038;v\u00e9hicule 03 Nombre de passagers * de 1 \u00e0 200 Indiquez le nombre de passagers (1 \u00e0 200) Type de v\u00e9hicule * S\u00e9lectionnez selon le nombre de passagersBerline \u2014 1 \u00e0 3 passagersSUV \u2014 1 \u00e0 3 passagersVan \u2014 1 \u00e0 7 passagersMinibus \u2014 1 \u00e0 17 passagersPlusieurs v\u00e9hicules (groupe important) S\u00e9lectionnez un v\u00e9hicule adapt\u00e9 Bagages Pr\u00e9cisez la quantit\u00e9 et le type de bagages Demandes sp\u00e9ciales Continuer Retour \u00c9tape 04 \u2014 Contact Voscoordonn\u00e9es 04 Pr\u00e9nom * Requis Nom WhatsApp \/ T\u00e9l\u00e9phone * \ud83c\uddf2\ud83c\udde6 +212 Num\u00e9ro invalide (8 chiffres minimum) R\u00e9ponse directe via WhatsApp Email * Adresse email valide requise J&rsquo;accepte que mes donn\u00e9es soient utilis\u00e9es pour traiter ma demande de devis. Aucun d\u00e9marchage commercial. Veuillez accepter pour continuer V\u00e9rifier ma demande Retour \u00c9tape 05 \u2014 Envoi R\u00e9capitulatif 05 Votre demande \u2190 Modifier Envoyer sur WhatsApp R\u00e9ponse garantie sous 30 min \u00b7 24h\/7j Modifier \u2713 Envoy\u00e9 ! Votre demande WhatsApp a \u00e9t\u00e9 pr\u00e9par\u00e9e. Notre \u00e9quipe confirme votre devis sous quelques minutes. + Nouvelle demande<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-7624","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>devis - VTC MAROC<\/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:\/\/vtcmaroc.com\/en_US\/devis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"devis - VTC MAROC\" \/>\n<meta property=\"og:description\" content=\"Demande de devis \u2014 VTCMAROC.COM S\u00e9lectionnez un pays V Demande de Devis R\u00e9servez votre chauffeur priv\u00e9 au Maroc \u2014 transferts, excursions et circuits sur mesure. R\u00e9ponse personnalis\u00e9e sous quelques minutes. 01 Service 02 D\u00e9tails 03 Passagers 04 Contact 05 Envoi \u00c9tape 01 \u2014 Service Type deprestation 01 A\u00e9roport Transfert arriv\u00e9e ou d\u00e9part \u2014 RAK \/ CMN \/ A\u00e9roports Maroc Transfert ville Point A vers Point B, intra-ville ou inter-villes Mise \u00e0 disposition Chauffeur \u00e0 l&rsquo;heure, \u00e0 votre service toute la dur\u00e9e souhait\u00e9e Excursion journ\u00e9e Sortie d&rsquo;une journ\u00e9e \u2014 Atlas, Essaouira, Ourika, A\u00eft Benhaddou\u2026 Circuit multi-jours \u00c0 partir de 2 jours \u2014 d\u00e9sert, villes imp\u00e9riales, c\u00f4tes \u26a0 S\u00e9lectionnez un service Continuer \u00c9tape 02 \u2014 D\u00e9tails D\u00e9tailsdu service 02 Informations sp\u00e9cifiques au service. Sens du transfert * Arriv\u00e9e \u00e0 l&rsquo;a\u00e9roport \u2192 DestinationLieu de prise en charge \u2192 A\u00e9roport A\u00e9roport * S\u00e9lectionnez un a\u00e9roportMarrakech M\u00e9nara (RAK)Casablanca Mohammed V (CMN)Agadir Al Massira (AGA)F\u00e8s-Sa\u00efss (FEZ)Rabat-Sal\u00e9 (RBA)Tanger Ibn Battouta (TNG)Ouarzazate (OZZ)Essaouira-Mogador (ESU) S\u00e9lectionnez un a\u00e9roport Lieu de destination * Champ obligatoire Date * Requis Heure d&rsquo;atterrissage * Requis Num\u00e9ro de vol * Num\u00e9ro de vol obligatoire pour une arriv\u00e9e Obligatoire pour l&rsquo;arriv\u00e9e \u2014 Suivi de vol en temps r\u00e9el inclus Lieu de prise en charge * Champ obligatoire Destination * Champ obligatoire Date * Requis Heure de d\u00e9part * Requis Lieu de prise en charge * Champ obligatoire Date * Requis Heure de d\u00e9but * Requis Dur\u00e9e souhait\u00e9e * S\u00e9lectionnez une dur\u00e9e12 heures (journ\u00e9e)1 jour2 jours3 joursSemaine compl\u00e8teDur\u00e9e personnalis\u00e9e (\u00e0 pr\u00e9ciser) S\u00e9lectionnez une dur\u00e9e Lieux \u00e0 visiter ou zone d&rsquo;activit\u00e9 Destination de l&rsquo;excursion * Choisissez une destinationVall\u00e9e de l&rsquo;OurikaCascades d&rsquo;OuzoudEssaouiraD\u00e9sert d&rsquo;AgafayVall\u00e9e de l&rsquo;Atlas \u2014 ImlilA\u00eft Benhaddou &#038; OuarzazateCasablancaVall\u00e9e du Dra\u00e2Lac Lalla TakerkoustAutre destination (\u00e0 pr\u00e9ciser) S\u00e9lectionnez une destination Lieu de prise en charge * Champ obligatoire Date * Requis Heure de d\u00e9part * Requis Centres d&rsquo;int\u00e9r\u00eat Ville de d\u00e9part * Champ obligatoire Ville d&rsquo;arriv\u00e9e Date de d\u00e9but * Requis Date de fin * Requis (min. 2 jours) Th\u00e8me du circuit * Choisissez un th\u00e8meD\u00e9sert (Merzouga \/ Erg Chebbi)Villes imp\u00e9riales (F\u00e8s, Mekn\u00e8s, Rabat)C\u00f4te atlantique (Essaouira, Agadir)Grand Sud (Ouarzazate, Zagora, Draa)Nord du Maroc (Chefchaouen, Tanger)Tour du Maroc completCircuit sur mesure (\u00e0 d\u00e9finir ensemble) S\u00e9lectionnez un th\u00e8me \u00c9tapes &#038; souhaits sp\u00e9cifiques Continuer Retour \u00c9tape 03 \u2014 Passagers Passagers &#038;v\u00e9hicule 03 Nombre de passagers * de 1 \u00e0 200 Indiquez le nombre de passagers (1 \u00e0 200) Type de v\u00e9hicule * S\u00e9lectionnez selon le nombre de passagersBerline \u2014 1 \u00e0 3 passagersSUV \u2014 1 \u00e0 3 passagersVan \u2014 1 \u00e0 7 passagersMinibus \u2014 1 \u00e0 17 passagersPlusieurs v\u00e9hicules (groupe important) S\u00e9lectionnez un v\u00e9hicule adapt\u00e9 Bagages Pr\u00e9cisez la quantit\u00e9 et le type de bagages Demandes sp\u00e9ciales Continuer Retour \u00c9tape 04 \u2014 Contact Voscoordonn\u00e9es 04 Pr\u00e9nom * Requis Nom WhatsApp \/ T\u00e9l\u00e9phone * \ud83c\uddf2\ud83c\udde6 +212 Num\u00e9ro invalide (8 chiffres minimum) R\u00e9ponse directe via WhatsApp Email * Adresse email valide requise J&rsquo;accepte que mes donn\u00e9es soient utilis\u00e9es pour traiter ma demande de devis. Aucun d\u00e9marchage commercial. Veuillez accepter pour continuer V\u00e9rifier ma demande Retour \u00c9tape 05 \u2014 Envoi R\u00e9capitulatif 05 Votre demande \u2190 Modifier Envoyer sur WhatsApp R\u00e9ponse garantie sous 30 min \u00b7 24h\/7j Modifier \u2713 Envoy\u00e9 ! Votre demande WhatsApp a \u00e9t\u00e9 pr\u00e9par\u00e9e. Notre \u00e9quipe confirme votre devis sous quelques minutes. + Nouvelle demande\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vtcmaroc.com\/en_US\/devis\/\" \/>\n<meta property=\"og:site_name\" content=\"VTC MAROC\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-28T11:03:06+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vtcmaroc.com\\\/devis\\\/\",\"url\":\"https:\\\/\\\/vtcmaroc.com\\\/devis\\\/\",\"name\":\"devis - VTC MAROC\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vtcmaroc.com\\\/#website\"},\"datePublished\":\"2026-05-28T10:44:42+00:00\",\"dateModified\":\"2026-05-28T11:03:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vtcmaroc.com\\\/devis\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vtcmaroc.com\\\/devis\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vtcmaroc.com\\\/devis\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vtcmaroc.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"devis\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vtcmaroc.com\\\/#website\",\"url\":\"https:\\\/\\\/vtcmaroc.com\\\/\",\"name\":\"VTC MAROC\",\"description\":\"Chauffeur priv&eacute; a Marrakech\",\"publisher\":{\"@id\":\"https:\\\/\\\/vtcmaroc.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vtcmaroc.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vtcmaroc.com\\\/#organization\",\"name\":\"VTC MAROC\",\"url\":\"https:\\\/\\\/vtcmaroc.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vtcmaroc.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/vtcmaroc.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/favicon_vtc-1.svg\",\"contentUrl\":\"https:\\\/\\\/vtcmaroc.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/favicon_vtc-1.svg\",\"width\":512,\"height\":512,\"caption\":\"VTC MAROC\"},\"image\":{\"@id\":\"https:\\\/\\\/vtcmaroc.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"devis - VTC MAROC","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:\/\/vtcmaroc.com\/en_US\/devis\/","og_locale":"en_US","og_type":"article","og_title":"devis - VTC MAROC","og_description":"Demande de devis \u2014 VTCMAROC.COM S\u00e9lectionnez un pays V Demande de Devis R\u00e9servez votre chauffeur priv\u00e9 au Maroc \u2014 transferts, excursions et circuits sur mesure. R\u00e9ponse personnalis\u00e9e sous quelques minutes. 01 Service 02 D\u00e9tails 03 Passagers 04 Contact 05 Envoi \u00c9tape 01 \u2014 Service Type deprestation 01 A\u00e9roport Transfert arriv\u00e9e ou d\u00e9part \u2014 RAK \/ CMN \/ A\u00e9roports Maroc Transfert ville Point A vers Point B, intra-ville ou inter-villes Mise \u00e0 disposition Chauffeur \u00e0 l&rsquo;heure, \u00e0 votre service toute la dur\u00e9e souhait\u00e9e Excursion journ\u00e9e Sortie d&rsquo;une journ\u00e9e \u2014 Atlas, Essaouira, Ourika, A\u00eft Benhaddou\u2026 Circuit multi-jours \u00c0 partir de 2 jours \u2014 d\u00e9sert, villes imp\u00e9riales, c\u00f4tes \u26a0 S\u00e9lectionnez un service Continuer \u00c9tape 02 \u2014 D\u00e9tails D\u00e9tailsdu service 02 Informations sp\u00e9cifiques au service. Sens du transfert * Arriv\u00e9e \u00e0 l&rsquo;a\u00e9roport \u2192 DestinationLieu de prise en charge \u2192 A\u00e9roport A\u00e9roport * S\u00e9lectionnez un a\u00e9roportMarrakech M\u00e9nara (RAK)Casablanca Mohammed V (CMN)Agadir Al Massira (AGA)F\u00e8s-Sa\u00efss (FEZ)Rabat-Sal\u00e9 (RBA)Tanger Ibn Battouta (TNG)Ouarzazate (OZZ)Essaouira-Mogador (ESU) S\u00e9lectionnez un a\u00e9roport Lieu de destination * Champ obligatoire Date * Requis Heure d&rsquo;atterrissage * Requis Num\u00e9ro de vol * Num\u00e9ro de vol obligatoire pour une arriv\u00e9e Obligatoire pour l&rsquo;arriv\u00e9e \u2014 Suivi de vol en temps r\u00e9el inclus Lieu de prise en charge * Champ obligatoire Destination * Champ obligatoire Date * Requis Heure de d\u00e9part * Requis Lieu de prise en charge * Champ obligatoire Date * Requis Heure de d\u00e9but * Requis Dur\u00e9e souhait\u00e9e * S\u00e9lectionnez une dur\u00e9e12 heures (journ\u00e9e)1 jour2 jours3 joursSemaine compl\u00e8teDur\u00e9e personnalis\u00e9e (\u00e0 pr\u00e9ciser) S\u00e9lectionnez une dur\u00e9e Lieux \u00e0 visiter ou zone d&rsquo;activit\u00e9 Destination de l&rsquo;excursion * Choisissez une destinationVall\u00e9e de l&rsquo;OurikaCascades d&rsquo;OuzoudEssaouiraD\u00e9sert d&rsquo;AgafayVall\u00e9e de l&rsquo;Atlas \u2014 ImlilA\u00eft Benhaddou &#038; OuarzazateCasablancaVall\u00e9e du Dra\u00e2Lac Lalla TakerkoustAutre destination (\u00e0 pr\u00e9ciser) S\u00e9lectionnez une destination Lieu de prise en charge * Champ obligatoire Date * Requis Heure de d\u00e9part * Requis Centres d&rsquo;int\u00e9r\u00eat Ville de d\u00e9part * Champ obligatoire Ville d&rsquo;arriv\u00e9e Date de d\u00e9but * Requis Date de fin * Requis (min. 2 jours) Th\u00e8me du circuit * Choisissez un th\u00e8meD\u00e9sert (Merzouga \/ Erg Chebbi)Villes imp\u00e9riales (F\u00e8s, Mekn\u00e8s, Rabat)C\u00f4te atlantique (Essaouira, Agadir)Grand Sud (Ouarzazate, Zagora, Draa)Nord du Maroc (Chefchaouen, Tanger)Tour du Maroc completCircuit sur mesure (\u00e0 d\u00e9finir ensemble) S\u00e9lectionnez un th\u00e8me \u00c9tapes &#038; souhaits sp\u00e9cifiques Continuer Retour \u00c9tape 03 \u2014 Passagers Passagers &#038;v\u00e9hicule 03 Nombre de passagers * de 1 \u00e0 200 Indiquez le nombre de passagers (1 \u00e0 200) Type de v\u00e9hicule * S\u00e9lectionnez selon le nombre de passagersBerline \u2014 1 \u00e0 3 passagersSUV \u2014 1 \u00e0 3 passagersVan \u2014 1 \u00e0 7 passagersMinibus \u2014 1 \u00e0 17 passagersPlusieurs v\u00e9hicules (groupe important) S\u00e9lectionnez un v\u00e9hicule adapt\u00e9 Bagages Pr\u00e9cisez la quantit\u00e9 et le type de bagages Demandes sp\u00e9ciales Continuer Retour \u00c9tape 04 \u2014 Contact Voscoordonn\u00e9es 04 Pr\u00e9nom * Requis Nom WhatsApp \/ T\u00e9l\u00e9phone * \ud83c\uddf2\ud83c\udde6 +212 Num\u00e9ro invalide (8 chiffres minimum) R\u00e9ponse directe via WhatsApp Email * Adresse email valide requise J&rsquo;accepte que mes donn\u00e9es soient utilis\u00e9es pour traiter ma demande de devis. Aucun d\u00e9marchage commercial. Veuillez accepter pour continuer V\u00e9rifier ma demande Retour \u00c9tape 05 \u2014 Envoi R\u00e9capitulatif 05 Votre demande \u2190 Modifier Envoyer sur WhatsApp R\u00e9ponse garantie sous 30 min \u00b7 24h\/7j Modifier \u2713 Envoy\u00e9 ! Votre demande WhatsApp a \u00e9t\u00e9 pr\u00e9par\u00e9e. Notre \u00e9quipe confirme votre devis sous quelques minutes. + Nouvelle demande","og_url":"https:\/\/vtcmaroc.com\/en_US\/devis\/","og_site_name":"VTC MAROC","article_modified_time":"2026-05-28T11:03:06+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vtcmaroc.com\/devis\/","url":"https:\/\/vtcmaroc.com\/devis\/","name":"devis - VTC MAROC","isPartOf":{"@id":"https:\/\/vtcmaroc.com\/#website"},"datePublished":"2026-05-28T10:44:42+00:00","dateModified":"2026-05-28T11:03:06+00:00","breadcrumb":{"@id":"https:\/\/vtcmaroc.com\/devis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vtcmaroc.com\/devis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vtcmaroc.com\/devis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vtcmaroc.com\/"},{"@type":"ListItem","position":2,"name":"devis"}]},{"@type":"WebSite","@id":"https:\/\/vtcmaroc.com\/#website","url":"https:\/\/vtcmaroc.com\/","name":"VTC MAROC","description":"Chauffeur priv&eacute; a Marrakech","publisher":{"@id":"https:\/\/vtcmaroc.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vtcmaroc.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/vtcmaroc.com\/#organization","name":"VTC MAROC","url":"https:\/\/vtcmaroc.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vtcmaroc.com\/#\/schema\/logo\/image\/","url":"https:\/\/vtcmaroc.com\/wp-content\/uploads\/2026\/05\/favicon_vtc-1.svg","contentUrl":"https:\/\/vtcmaroc.com\/wp-content\/uploads\/2026\/05\/favicon_vtc-1.svg","width":512,"height":512,"caption":"VTC MAROC"},"image":{"@id":"https:\/\/vtcmaroc.com\/#\/schema\/logo\/image\/"}}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/vtcmaroc.com\/en_US\/wp-json\/wp\/v2\/pages\/7624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vtcmaroc.com\/en_US\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vtcmaroc.com\/en_US\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vtcmaroc.com\/en_US\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vtcmaroc.com\/en_US\/wp-json\/wp\/v2\/comments?post=7624"}],"version-history":[{"count":4,"href":"https:\/\/vtcmaroc.com\/en_US\/wp-json\/wp\/v2\/pages\/7624\/revisions"}],"predecessor-version":[{"id":7629,"href":"https:\/\/vtcmaroc.com\/en_US\/wp-json\/wp\/v2\/pages\/7624\/revisions\/7629"}],"wp:attachment":[{"href":"https:\/\/vtcmaroc.com\/en_US\/wp-json\/wp\/v2\/media?parent=7624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}