{"id":464,"date":"2025-09-23T08:50:11","date_gmt":"2025-09-23T08:50:11","guid":{"rendered":"https:\/\/moroccotoptour.com\/?page_id=464"},"modified":"2026-03-10T23:23:03","modified_gmt":"2026-03-10T23:23:03","slug":"activities","status":"publish","type":"page","link":"https:\/\/moroccotoptour.com\/zh\/activities\/","title":{"rendered":"Activities"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"464\" class=\"elementor elementor-464\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-445ffe5 e-con-full e-flex e-con e-parent\" data-id=\"445ffe5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-27f5c50 elementor-widget elementor-widget-html\" data-id=\"27f5c50\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Morocco Top Tour \u2013 Activities Container (3-up grid + mobile carousel, isolated) -->\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\r\n\r\n<section class=\"mtt-activity\" aria-label=\"Featured Activities\">\r\n  <div class=\"mtt-activity__wrap\">\r\n    <!-- Header -->\r\n    <header class=\"mtt-activity__head\">\r\n      <div class=\"mtt-activity__titles\">\r\n        <p class=\"mtt-activity__eyebrow\">Signature Experiences<\/p>\r\n        <h2 class=\"mtt-activity__title\">Top <strong>activities<\/strong> to try<\/h2>\r\n        <p class=\"mtt-activity__sub\">Safe, guided & unforgettable \u2022 Door-to-door pick-up<\/p>\r\n      <\/div>\r\n    <\/header>\r\n\r\n    <!-- Grid \/ Track -->\r\n    <div class=\"mtt-activity__grid\" id=\"mttActivityGrid\">\r\n      <!-- SANDBOARDING -->\r\n      <article class=\"mtt-activity__card\" data-cat=\"sahara\" data-rating=\"4.8\">\r\n        <figure class=\"mtt-activity__media\">\r\n          <img decoding=\"async\" src=\"https:\/\/moroccotoptour.com\/wp-content\/uploads\/2025\/09\/USO_Sandboard_DVIDS72781.jpg\" alt=\"Sandboarding in the Sahara\" title=\"\">\r\n          <span class=\"mtt-activity__badge mtt-activity__badge--orange\"><i class=\"fa-regular fa-clock\"><\/i> 2-3 Hours<\/span>\r\n          <span class=\"mtt-activity__ribbon\">Adventure<\/span>\r\n        <\/figure>\r\n        <div class=\"mtt-activity__body\">\r\n          <h3 class=\"mtt-activity__name\">Sandboarding in the Sahara<\/h3>\r\n          <p class=\"mtt-activity__loc\"><i class=\"fa-solid fa-location-dot\"><\/i> Sahara Desert, Merzouga<\/p>\r\n          <ul class=\"mtt-activity__features\" role=\"list\">\r\n            <li><i class=\"fa-solid fa-person-snowboarding\"><\/i>Sandboard included<\/li>\r\n            <li><i class=\"fa-solid fa-user-shield\"><\/i>Professional guide<\/li>\r\n            <li><i class=\"fa-solid fa-van-shuttle\"><\/i>Transport included<\/li>\r\n          <\/ul>\r\n          <div class=\"mtt-activity__meta\">\r\n            <div class=\"mtt-activity__rating\"><i class=\"fa-solid fa-star\"><\/i> 4.8<\/div>\r\n          <\/div>\r\n          <div class=\"mtt-activity__cta\">\r\n            <a class=\"mtt-activity__btn mtt-activity__btn--primary\" href=\"https:\/\/moroccotoptour.com\/sandboarding-in-the-sahara\/\"><i class=\"fa-solid fa-circle-info\"><\/i> Details<\/a>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <!-- QUAD BIKING -->\r\n      <article class=\"mtt-activity__card\" data-cat=\"sahara\" data-rating=\"4.9\">\r\n        <figure class=\"mtt-activity__media\">\r\n          <img decoding=\"async\" src=\"https:\/\/moroccotoptour.com\/wp-content\/uploads\/2025\/09\/13.jpg\" alt=\"Quad Biking in the Sahara\" title=\"\">\r\n          <span class=\"mtt-activity__badge mtt-activity__badge--blue\"><i class=\"fa-regular fa-clock\"><\/i> 2-3 Hours<\/span>\r\n          <span class=\"mtt-activity__ribbon\">Popular<\/span>\r\n        <\/figure>\r\n        <div class=\"mtt-activity__body\">\r\n          <h3 class=\"mtt-activity__name\">Quad Biking in the Sahara<\/h3>\r\n          <p class=\"mtt-activity__loc\"><i class=\"fa-solid fa-location-dot\"><\/i> Sahara Desert, Merzouga<\/p>\r\n          <ul class=\"mtt-activity__features\" role=\"list\">\r\n            <li><i class=\"fa-solid fa-helmet-safety\"><\/i>Safety gear included<\/li>\r\n            <li><i class=\"fa-solid fa-route\"><\/i>Guided desert route<\/li>\r\n            <li><i class=\"fa-solid fa-van-shuttle\"><\/i>Transport included<\/li>\r\n          <\/ul>\r\n          <div class=\"mtt-activity__meta\">\r\n            <div class=\"mtt-activity__rating\"><i class=\"fa-solid fa-star\"><\/i> 4.9<\/div>\r\n          <\/div>\r\n          <div class=\"mtt-activity__cta\">\r\n            <a class=\"mtt-activity__btn mtt-activity__btn--primary\" href=\"https:\/\/moroccotoptour.com\/quad-biking-in-the-sahara\/\"><i class=\"fa-solid fa-circle-info\"><\/i> Details<\/a>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <!-- CAMEL RIDE -->\r\n      <article class=\"mtt-activity__card\" data-cat=\"sahara\" data-rating=\"4.7\">\r\n        <figure class=\"mtt-activity__media\">\r\n          <img decoding=\"async\" src=\"https:\/\/moroccotoptour.com\/wp-content\/uploads\/2025\/09\/WhatsApp-Image-2025-09-19-at-14.59.59_047075b3.jpg\" alt=\"Camel Ride in the Sahara\" title=\"\">\r\n          <span class=\"mtt-activity__badge mtt-activity__badge--orange\"><i class=\"fa-regular fa-clock\"><\/i> Sunset \u2022 1-2 Hours<\/span>\r\n          <span class=\"mtt-activity__ribbon\">Classic<\/span>\r\n        <\/figure>\r\n        <div class=\"mtt-activity__body\">\r\n          <h3 class=\"mtt-activity__name\">Camel Ride in the Sahara<\/h3>\r\n          <p class=\"mtt-activity__loc\"><i class=\"fa-solid fa-location-dot\"><\/i> Sahara Desert, Merzouga<\/p>\r\n          <ul class=\"mtt-activity__features\" role=\"list\">\r\n            <li><i class=\"fa-solid fa-horse\"><\/i>Traditional camel trek<\/li>\r\n            <li><i class=\"fa-solid fa-sun\"><\/i>Sunset experience<\/li>\r\n            <li><i class=\"fa-solid fa-camera\"><\/i>Photo opportunities<\/li>\r\n          <\/ul>\r\n          <div class=\"mtt-activity__meta\">\r\n            <div class=\"mtt-activity__rating\"><i class=\"fa-solid fa-star\"><\/i> 4.7<\/div>\r\n          <\/div>\r\n          <div class=\"mtt-activity__cta\">\r\n            <a class=\"mtt-activity__btn mtt-activity__btn--primary\" href=\"https:\/\/moroccotoptour.com\/camel-ride-in-the-sahara\/\"><i class=\"fa-solid fa-circle-info\"><\/i> Details<\/a>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n    <\/div>\r\n\r\n    <!-- Dots (mobile carousel) -->\r\n    <div class=\"mtt-activity__dots\" role=\"tablist\" aria-label=\"Slide navigation\"><\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<style>\r\n\/* ========== Theme-safe, scoped styles for .mtt-activity ========== *\/\r\n.mtt-activity, .mtt-activity * { box-sizing: border-box; }\r\n.mtt-activity{\r\n  --mtt-bg:#ffffff; --mtt-card:#f8fafc; --mtt-muted:#4b5563; --mtt-border:#e2e8f0;\r\n  --mtt-white:#000000; --mtt-orange:#ff7b00; --mtt-orange-700:#e66a00;\r\n  --mtt-blue:#3b82f6; --mtt-blue-700:#2563eb; --mtt-red:#ef4444;\r\n\r\n  position:relative; background:var(--mtt-bg); color:var(--mtt-white); isolation:isolate;\r\n  padding: clamp(28px,6vw,64px) 0;\r\n  font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;\r\n}\r\n.mtt-activity__wrap{ width:min(1200px,92%); margin-inline:auto; }\r\n\r\n\/* Header *\/\r\n.mtt-activity__titles{ text-align:center; }\r\n.mtt-activity__eyebrow{\r\n  display:inline-block; padding:6px 12px; border-radius:999px;\r\n  background: #e2e8f0; border:1px solid #cbd5e1; color:#1e293b;\r\n  font:700 11px\/1 system-ui; letter-spacing:.35px; text-transform:uppercase; margin-bottom:8px;\r\n}\r\n.mtt-activity__title{ margin:0; font:800 clamp(24px,4vw,40px)\/1.1 system-ui; letter-spacing:-.02em; color:#000000 !important; }\r\n.mtt-activity__title strong{ color:var(--mtt-orange) !important; }\r\n.mtt-activity__sub{ color:var(--mtt-muted); margin:6px 0 0; }\r\n\r\n\/* Grid (desktop) \/ Track (mobile) *\/\r\n.mtt-activity__grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:22px; margin-top:18px; }\r\n@media (max-width: 1020px){ .mtt-activity__grid{ grid-template-columns: repeat(2,1fr);} }\r\n@media (max-width: 680px){\r\n  .mtt-activity__grid{\r\n    display:flex; overflow-x:auto; gap:12px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;\r\n    padding-bottom:10px; scrollbar-width:none;\r\n  }\r\n  .mtt-activity__grid::-webkit-scrollbar{ display:none; }\r\n}\r\n\r\n\/* Card *\/\r\n.mtt-activity__card{\r\n  background: var(--mtt-card);\r\n  border:1px solid var(--mtt-border); border-radius:16px; overflow:hidden;\r\n  display:grid; grid-template-rows:auto 1fr;\r\n  transition: transform .2s ease, box-shadow .2s ease;\r\n}\r\n.mtt-activity__card:hover{ transform: translateY(-4px); box-shadow: 0 14px 30px rgba(0,0,0,.1); }\r\n@media (max-width:680px){ .mtt-activity__card{ min-width:88%; scroll-snap-align:center; } }\r\n\r\n.mtt-activity__media{ position:relative; height: 240px; overflow:hidden; }\r\n.mtt-activity__media img{ width:100%; height:100%; object-fit:cover; object-position:center; display:block; transition: transform .6s ease; }\r\n.mtt-activity__card:hover .mtt-activity__media img{ transform: scale(1.05); }\r\n\r\n.mtt-activity__badge{\r\n  position:absolute; top:12px; left:12px; z-index:2; padding:6px 10px;\r\n  font:800 12px\/1 system-ui; border-radius:16px; display:inline-flex; align-items:center; gap:6px; color:#fff;\r\n}\r\n.mtt-activity__badge--orange{ background:var(--mtt-orange); }\r\n.mtt-activity__badge--blue{ background:var(--mtt-blue); }\r\n\r\n.mtt-activity__ribbon{\r\n  position:absolute; right:-42px; top:14px; background: var(--mtt-red); color:#fff;\r\n  font:900 11px\/1 system-ui; padding:7px 60px; transform: rotate(30deg);\r\n  border:1px solid rgba(255,255,255,.15); border-radius:6px; text-transform:uppercase; letter-spacing:.6px;\r\n}\r\n\r\n\/* Body *\/\r\n.mtt-activity__body{ padding:16px; display:grid; gap:10px; }\r\n.mtt-activity__name{ margin:0; font:800 18px\/1.3 system-ui; color:#000000; }\r\n.mtt-activity__loc{ margin:0; color:var(--mtt-muted); font-weight:700; display:flex; align-items:center; gap:8px; }\r\n.mtt-activity__features{ margin:4px 0 0; padding:0; list-style:none; display:flex; gap:12px; flex-wrap:wrap; color:var(--mtt-muted); font-weight:700; }\r\n.mtt-activity__features li{ display:inline-flex; gap:8px; align-items:center; }\r\n\r\n\/* Meta (rating only) *\/\r\n.mtt-activity__meta{ display:flex; justify-content:flex-start; align-items:center; margin-top:2px; }\r\n.mtt-activity__rating{ color:#b45309; font-weight:900; display:flex; align-items:center; gap:6px; }\r\n.mtt-activity__rating .fa-star{ font-size:14px; }\r\n\r\n\/* CTA: single button *\/\r\n.mtt-activity__cta{ display:flex; margin-top:8px; }\r\n.mtt-activity__btn{\r\n  appearance:none; border:0; text-decoration:none; cursor:pointer; padding:12px 16px; border-radius:12px;\r\n  font:900 14px\/1 system-ui; text-align:center; background:var(--mtt-orange); color:#fff;\r\n  box-shadow:0 10px 24px rgba(255,123,0,.2); width:100%;\r\n}\r\n.mtt-activity__btn:hover{ background:var(--mtt-orange-700); }\r\n\r\n\/* Dots (mobile) *\/\r\n.mtt-activity__dots{ display:none; }\r\n@media (max-width:680px){\r\n  .mtt-activity__dots{\r\n    display:flex; justify-content:center; gap:10px; align-items:center; margin-top:10px;\r\n  }\r\n  .mtt-activity__dots button{\r\n    width:12px; height:12px; border-radius:50%; border:0; cursor:pointer;\r\n    background:#94a3b8; opacity:.85; transition:transform .15s ease, opacity .15s ease, box-shadow .15s ease;\r\n  }\r\n  .mtt-activity__dots button[aria-selected=\"true\"]{\r\n    background:#ff7b00; opacity:1; transform:scale(1.12);\r\n    box-shadow:0 0 0 4px rgba(255,123,0,.25);\r\n  }\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  const root = document.currentScript.closest('.mtt-activity');\r\n  const grid  = root.querySelector('#mttActivityGrid');\r\n  const dotsWrap = root.querySelector('.mtt-activity__dots');\r\n\r\n  \/\/ Build dots for visible cards\r\n  function buildDots(){\r\n    dotsWrap.innerHTML = '';\r\n    const visible = Array.from(grid.querySelectorAll('.mtt-activity__card'));\r\n    visible.forEach((_, i)=>{\r\n      const b = document.createElement('button');\r\n      b.type = 'button';\r\n      b.setAttribute('role','tab');\r\n      b.setAttribute('aria-label', `Go to slide ${i+1}`);\r\n      b.addEventListener('click', ()=> go(i, visible));\r\n      dotsWrap.appendChild(b);\r\n    });\r\n    updateDots(0);\r\n    \/\/ IntersectionObserver to track active slide on mobile\r\n    io?.disconnect();\r\n    io = new IntersectionObserver((entries)=>{\r\n      entries.forEach(entry=>{\r\n        if(entry.isIntersecting){\r\n          const i = visible.indexOf(entry.target);\r\n          if(i!==-1) updateDots(i);\r\n        }\r\n      });\r\n    }, { root: grid, threshold: 0.6 });\r\n    visible.forEach(s => io.observe(s));\r\n  }\r\n\r\n  function updateDots(i){\r\n    dotsWrap.querySelectorAll('button').forEach((d,di)=> d.setAttribute('aria-selected', di===i ? 'true' : 'false'));\r\n  }\r\n\r\n  function go(i, list){\r\n    const slides = list || Array.from(grid.querySelectorAll('.mtt-activity__card'));\r\n    const idx = Math.max(0, Math.min(i, slides.length-1));\r\n    slides[idx].scrollIntoView({behavior:'smooth', inline:'center', block:'nearest'});\r\n    updateDots(idx);\r\n  }\r\n\r\n  \/\/ Init\r\n  let io; \/\/ observer for mobile active dot\r\n  buildDots();\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4cbe7a4 e-flex e-con-boxed e-con e-parent\" data-id=\"4cbe7a4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-debb18b elementor-widget elementor-widget-html\" data-id=\"debb18b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\r\n  <title>Custom Tour Request<\/title>\r\n  <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.2\/css\/all.min.css\" integrity=\"sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9\/2PkfG3j3u2KSB4z9YhiJjkxFv1Jd5rhlWST\/dpD0iC5V7Q8YxcpTM1H6mQ==\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\" \/>\r\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@emailjs\/browser@3\/dist\/email.min.js\"><\/script>\r\n  <style>\r\n    \/* ============ Reset & root ============ *\/\r\n    .tour-popup * { box-sizing: border-box; margin: 0; padding: 0; }\r\n    .tour-popup {\r\n      --orange: #f59e0b; \/* orange button *\/\r\n      --orange-dark: #d97706;\r\n      --bg-dark: #0f172a;\r\n      --text: #0f172a;\r\n      --subtext: #475569;\r\n      --muted: #e2e8f0;\r\n      --ring: rgba(245, 158, 11, 0.2);\r\n      --ok: #10b981;\r\n      --error: #ef4444;\r\n      font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Apple Color Emoji\", \"Segoe UI Emoji\";\r\n    }\r\n\r\n    \/* ============ Floating button ============ *\/\r\n    .tour-popup .floating-btn {\r\n      position: fixed; right: 24px; bottom: 24px; width: 68px; height: 68px;\r\n      border-radius: 999px; border: 0; cursor: pointer; z-index: 9998;\r\n      background: var(--orange); color: #fff; box-shadow: 0 12px 24px rgba(245, 158, 11, .35);\r\n      display: grid; place-items: center; font-size: 1.6rem; transition: .2s ease;\r\n    }\r\n    .tour-popup .floating-btn:hover { transform: translateY(-3px); background: var(--orange-dark); }\r\n\r\n    \/* ============ Overlay & container ============ *\/\r\n    .tour-popup .overlay { position: fixed; inset: 0; background: rgba(2,6,23,.65); backdrop-filter: blur(4px); display: none; z-index: 9999; }\r\n    .tour-popup .overlay.active { display: grid; place-items: center; }\r\n    .tour-popup .card { width: 95%; max-width: 760px; max-height: 92vh; overflow: auto; background: #fff; border-radius: 16px; box-shadow: 0 24px 44px rgba(0,0,0,.2); animation: pop .25s ease; }\r\n    @keyframes pop { from { transform: scale(.96); opacity: 0 } to { transform: scale(1); opacity: 1 } }\r\n\r\n    \/* ============ Header ============ *\/\r\n    .tour-popup .header { padding: 18px 22px; background: linear-gradient(135deg, #f59e0b, #fb923c); color: #fff; border-radius: 16px 16px 0 0; display: flex; align-items: center; justify-content: space-between; }\r\n    .tour-popup .header h2 { font-size: 1.2rem; font-weight: 700; letter-spacing: .2px; }\r\n    .tour-popup .close { width: 36px; height: 36px; border-radius: 999px; border: 0; background: rgba(255,255,255,.18); color: #fff; display: grid; place-items: center; cursor: pointer; }\r\n\r\n    \/* ============ Steps ============ *\/\r\n    .tour-popup .content { padding: 22px; }\r\n    .tour-popup .steps { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 18px; }\r\n    .tour-popup .step { height: 6px; background: #f1f5f9; border-radius: 999px; position: relative; overflow: hidden; }\r\n    .tour-popup .step::after { content: \"\"; position: absolute; inset: 0; width: 0%; background: var(--orange); transition: width .25s ease; }\r\n    .tour-popup .step.active::after { width: 100%; }\r\n\r\n    \/* ============ Form ============ *\/\r\n    .tour-popup .form-step { display: none; }\r\n    .tour-popup .form-step.active { display: block; }\r\n\r\n    .tour-popup .group { margin-bottom: 16px; }\r\n    .tour-popup label { display: block; font-weight: 600; color: var(--text); margin-bottom: 8px; }\r\n    .tour-popup .hint { font-size: .9rem; color: var(--subtext); margin-top: 6px; }\r\n    .tour-popup input[type=\"text\"],\r\n    .tour-popup input[type=\"email\"],\r\n    .tour-popup input[type=\"tel\"],\r\n    .tour-popup input[type=\"number\"],\r\n    .tour-popup select,\r\n    .tour-popup textarea {\r\n      width: 100%; padding: 12px 14px; border: 1px solid #e5e7eb; border-radius: 10px; font-size: 1rem; color: var(--text);\r\n      transition: border-color .15s ease, box-shadow .15s ease;\r\n    }\r\n    .tour-popup textarea { min-height: 110px; resize: vertical; }\r\n    .tour-popup input:focus, .tour-popup select:focus, .tour-popup textarea:focus { outline: none; border-color: var(--orange); box-shadow: 0 0 0 3px var(--ring); }\r\n\r\n    .tour-popup .row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }\r\n    @media (max-width: 640px) { .tour-popup .row { grid-template-columns: 1fr; } }\r\n\r\n    .tour-popup .chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }\r\n    .tour-popup .chip { background: #fff7ed; border: 1px solid #fed7aa; color: #7c2d12; padding: 6px 10px; border-radius: 999px; font-size: .9rem; display: inline-flex; align-items: center; gap: 6px; }\r\n    .tour-popup .chip button { border: 0; background: transparent; cursor: pointer; color: inherit; }\r\n\r\n    .tour-popup .activities { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }\r\n    .tour-popup .activity { border: 1px solid #e5e7eb; border-radius: 10px; padding: 10px 12px; display: flex; align-items: center; gap: 10px; }\r\n    .tour-popup .activity input { width: 18px; height: 18px; }\r\n\r\n    .tour-popup .error { color: var(--error); font-size: .9rem; margin-top: 6px; display: none; }\r\n\r\n    .tour-popup .actions { display: flex; gap: 10px; margin-top: 16px; }\r\n    .tour-popup .btn { appearance: none; border: 0; border-radius: 10px; padding: 12px 16px; font-weight: 700; cursor: pointer; }\r\n    .tour-popup .btn.primary { background: var(--orange); color: #fff; }\r\n    .tour-popup .btn.primary:hover { background: var(--orange-dark); }\r\n    .tour-popup .btn.ghost { background: #fff; border: 1px solid #e5e7eb; color: var(--text); }\r\n\r\n    \/* ============ Success ============ *\/\r\n    .tour-popup .success { text-align: center; padding: 36px 20px; display: none; }\r\n    .tour-popup .success i { font-size: 3rem; color: var(--ok); margin-bottom: 12px; }\r\n    .tour-popup .success h3 { font-size: 1.4rem; margin-bottom: 8px; }\r\n    .tour-popup .success p { color: var(--subtext); }\r\n\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <div class=\"tour-popup\">\r\n    <!-- Floating action button (orange) -->\r\n    <button id=\"openTourPopup\" class=\"floating-btn\" aria-label=\"Request a custom tour\">\r\n      <i class=\"fa-solid fa-map-location-dot\"><\/i>\r\n    <\/button>\r\n\r\n    <!-- Overlay \/ Modal -->\r\n    <div id=\"tourOverlay\" class=\"overlay\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"tourTitle\">\r\n      <div class=\"card\">\r\n        <div class=\"header\">\r\n          <h2 id=\"tourTitle\">Plan Your Custom Morocco Tour<\/h2>\r\n          <button class=\"close\" id=\"closeTourPopup\" aria-label=\"Close\">\r\n            <i class=\"fa-solid fa-xmark\"><\/i>\r\n          <\/button>\r\n        <\/div>\r\n        <div class=\"content\">\r\n          <!-- progress -->\r\n          <div class=\"steps\">\r\n            <div id=\"bar1\" class=\"step active\"><\/div>\r\n            <div id=\"bar2\" class=\"step\"><\/div>\r\n          <\/div>\r\n\r\n          <!-- Success screen -->\r\n          <div id=\"successScreen\" class=\"success\">\r\n            <i class=\"fa-solid fa-circle-check\"><\/i>\r\n            <h3>Thank you! Your request was sent.<\/h3>\r\n            <p>We\u2019ll get back to you shortly to confirm the details.<\/p>\r\n            <div class=\"actions\" style=\"justify-content:center; margin-top:18px\">\r\n              <button class=\"btn primary\" id=\"successClose\">Close<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <!-- Form -->\r\n          <form id=\"tourForm\">\r\n            <!-- STEP 1: Contact + Tour name + Cities -->\r\n            <section id=\"step1\" class=\"form-step active\">\r\n              <div class=\"group\">\r\n                <label for=\"tour_name\">Tour name *<\/label>\r\n                <input id=\"tour_name\" name=\"tour_name\" type=\"text\" placeholder=\"e.g., Sahara & Imperial Cities\" required \/>\r\n                <div class=\"error\" id=\"tour_name_err\">Please enter a tour name.<\/div>\r\n              <\/div>\r\n\r\n              <div class=\"row\">\r\n                <div class=\"group\">\r\n                  <label for=\"full_name\">Full name *<\/label>\r\n                  <input id=\"full_name\" name=\"full_name\" type=\"text\" placeholder=\"Your name\" required \/>\r\n                  <div class=\"error\" id=\"full_name_err\">Please enter your name.<\/div>\r\n                <\/div>\r\n                <div class=\"group\">\r\n                  <label for=\"email\">Email *<\/label>\r\n                  <input id=\"email\" name=\"email\" type=\"email\" placeholder=\"you@example.com\" required \/>\r\n                  <div class=\"error\" id=\"email_err\">Enter a valid email.<\/div>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"group\">\r\n                <label for=\"phone\">Phone *<\/label>\r\n                <input id=\"phone\" name=\"phone\" type=\"tel\" placeholder=\"+212 6 00 00 00 00\" required \/>\r\n                <div class=\"error\" id=\"phone_err\">Please enter your phone number.<\/div>\r\n              <\/div>\r\n\r\n              <div class=\"group\">\r\n                <label>Cities to visit (add up to 30) *<\/label>\r\n                <div class=\"row\">\r\n                  <select id=\"citySelect\">\r\n                    <!-- options injected by JS -->\r\n                  <\/select>\r\n                  <button type=\"button\" class=\"btn ghost\" id=\"addCityBtn\"><i class=\"fa-solid fa-plus\"><\/i>&nbsp;Add city<\/button>\r\n                <\/div>\r\n                <div id=\"cityChips\" class=\"chips\" aria-live=\"polite\"><\/div>\r\n                <div class=\"hint\">Popular: Marrakech, Fes, Chefchaouen, Merzouga (Sahara), Ouarzazate, Essaouira, Agadir, Atlas Mountains, Tangier, Rabat, Casablanca, Meknes, A\u00eft Benhaddou, Dades\/Todra Gorges, Dakhla, Oualidia\u2026<\/div>\r\n                <div class=\"error\" id=\"cities_err\">Add at least one city.<\/div>\r\n              <\/div>\r\n\r\n              <div class=\"actions\">\r\n                <button type=\"button\" id=\"toStep2\" class=\"btn primary\">Continue<\/button>\r\n              <\/div>\r\n            <\/section>\r\n\r\n            <!-- STEP 2: Trip details + Activities + Message & Submit -->\r\n            <section id=\"step2\" class=\"form-step\">\r\n              <div class=\"row\">\r\n                <div class=\"group\">\r\n                  <label for=\"days\">How many days? *<\/label>\r\n                  <input id=\"days\" name=\"days\" type=\"number\" min=\"1\" step=\"1\" placeholder=\"e.g., 7\" required \/>\r\n                  <div class=\"error\" id=\"days_err\">Enter at least 1 day.<\/div>\r\n                <\/div>\r\n                <div class=\"group\">\r\n                  <label for=\"people\">How many people? (min 2) *<\/label>\r\n                  <input id=\"people\" name=\"people\" type=\"number\" min=\"2\" step=\"1\" placeholder=\"2\" required \/>\r\n                  <div class=\"error\" id=\"people_err\">At least 2 people.<\/div>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"group\">\r\n                <label>Activities (optional)<\/label>\r\n                <div class=\"activities\">\r\n                  <label class=\"activity\"><input type=\"checkbox\" value=\"Camel Trek\" class=\"act\"> <span>\r\n                    <i class=\"fa-solid fa-camel\"><\/i> Camel trek<\/span><\/label>\r\n                  <label class=\"activity\"><input type=\"checkbox\" value=\"Quad Biking\" class=\"act\"> <span>\r\n                    <i class=\"fa-solid fa-motorcycle\"><\/i> Quad biking<\/span><\/label>\r\n                  <label class=\"activity\"><input type=\"checkbox\" value=\"Sandboarding\" class=\"act\"> <span>\r\n                    <i class=\"fa-solid fa-person-skiing\"><\/i> Sandboarding<\/span><\/label>\r\n                  <label class=\"activity\"><input type=\"checkbox\" value=\"Air Balloon\" class=\"act\"> <span>\r\n                    <i class=\"fa-solid fa-hot-tub-person\"><\/i><\/span> Air balloon<\/label>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"group\">\r\n                <label for=\"message\">Message (optional)<\/label>\r\n                <textarea id=\"message\" name=\"message\" placeholder=\"Tell us anything else\u2026\"><\/textarea>\r\n              <\/div>\r\n\r\n              <div class=\"actions\">\r\n                <button type=\"button\" class=\"btn ghost\" id=\"backTo1\">Back<\/button>\r\n                <button type=\"submit\" class=\"btn primary\" id=\"submitBtn\"><i class=\"fa-solid fa-paper-plane\"><\/i>&nbsp;Send request<\/button>\r\n              <\/div>\r\n            <\/section>\r\n\r\n            <!-- hidden field to store cities -->\r\n            <input type=\"hidden\" id=\"cities\" name=\"cities\" \/>\r\n          <\/form>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    \/\/ ---------- EmailJS init (Public Key) ----------\r\n    (function() { emailjs.init(\"UlHaF0FvVmgEUyv26\"); })();\r\n\r\n    \/\/ ---------- Elements ----------\r\n    const overlay = document.getElementById('tourOverlay');\r\n    const openBtn = document.getElementById('openTourPopup');\r\n    const closeBtn = document.getElementById('closeTourPopup');\r\n    const successClose = document.getElementById('successClose');\r\n\r\n    const step1 = document.getElementById('step1');\r\n    const step2 = document.getElementById('step2');\r\n    const bar1 = document.getElementById('bar1');\r\n    const bar2 = document.getElementById('bar2');\r\n\r\n    const toStep2Btn = document.getElementById('toStep2');\r\n    const backTo1Btn = document.getElementById('backTo1');\r\n\r\n    const citySelect = document.getElementById('citySelect');\r\n    const addCityBtn = document.getElementById('addCityBtn');\r\n    const cityChips = document.getElementById('cityChips');\r\n    const citiesHidden = document.getElementById('cities');\r\n    const successScreen = document.getElementById('successScreen');\r\n    const form = document.getElementById('tourForm');\r\n\r\n    const fields = {\r\n      tour_name: document.getElementById('tour_name'),\r\n      full_name: document.getElementById('full_name'),\r\n      email: document.getElementById('email'),\r\n      phone: document.getElementById('phone'),\r\n      days: document.getElementById('days'),\r\n      people: document.getElementById('people'),\r\n      message: document.getElementById('message')\r\n    };\r\n\r\n    const errs = {\r\n      tour_name: document.getElementById('tour_name_err'),\r\n      full_name: document.getElementById('full_name_err'),\r\n      email: document.getElementById('email_err'),\r\n      phone: document.getElementById('phone_err'),\r\n      days: document.getElementById('days_err'),\r\n      people: document.getElementById('people_err'),\r\n      cities: document.getElementById('cities_err')\r\n    };\r\n\r\n    \/\/ ---------- City list (popular Morocco tour stops) ----------\r\n    const MOROCCO_CITIES = [\r\n      'Marrakech','Fes','Casablanca','Rabat','Chefchaouen','Tangier','Tetouan','Meknes','Essaouira','Agadir',\r\n      'Ouarzazate','Merzouga (Sahara)','Zagora','Ait Benhaddou','Ifrane','Atlas Mountains','Dades Gorges','Todra Gorge',\r\n      'Asilah','Taroudant','Oualidia','Dakhla','Laayoune','El Jadida','Oujda','Nador','Tinghir','Midelt','Erfoud','Taza'\r\n    ];\r\n\r\n    function populateCitySelect() {\r\n      MOROCCO_CITIES.forEach(c => {\r\n        const opt = document.createElement('option');\r\n        opt.value = c; opt.textContent = c; citySelect.appendChild(opt);\r\n      });\r\n    }\r\n\r\n    const selectedCities = new Set();\r\n\r\n    function renderChips() {\r\n      cityChips.innerHTML = '';\r\n      selectedCities.forEach(city => {\r\n        const chip = document.createElement('span');\r\n        chip.className = 'chip';\r\n        chip.innerHTML = `${city} <button type=\"button\" aria-label=\"Remove ${city}\" data-city=\"${city}\"><i class=\"fa-solid fa-xmark\"><\/i><\/button>`;\r\n        cityChips.appendChild(chip);\r\n      });\r\n      citiesHidden.value = Array.from(selectedCities).join(', ');\r\n    }\r\n\r\n    function addCity(city) {\r\n      if (!city) return;\r\n      if (selectedCities.size >= 30) return; \/\/ hard cap (user asked: more than 10 allowed)\r\n      selectedCities.add(city);\r\n      renderChips();\r\n    }\r\n\r\n    \/\/ ---------- Open\/close popup ----------\r\n    openBtn.addEventListener('click', () => { overlay.classList.add('active'); document.body.style.overflow = 'hidden'; });\r\n    function closePopup() { overlay.classList.remove('active'); document.body.style.overflow = ''; resetAll(); }\r\n    closeBtn.addEventListener('click', closePopup);\r\n    overlay.addEventListener('click', (e) => { if (e.target === overlay) closePopup(); });\r\n    successClose.addEventListener('click', closePopup);\r\n\r\n    \/\/ ---------- Step navigation ----------\r\n    toStep2Btn.addEventListener('click', () => {\r\n      const ok = validateStep1();\r\n      if (!ok) return;\r\n      step1.classList.remove('active'); bar1.classList.remove('active');\r\n      step2.classList.add('active'); bar2.classList.add('active');\r\n    });\r\n    backTo1Btn.addEventListener('click', () => {\r\n      step2.classList.remove('active'); bar2.classList.remove('active');\r\n      step1.classList.add('active'); bar1.classList.add('active');\r\n    });\r\n\r\n    \/\/ ---------- Add\/Remove cities ----------\r\n    addCityBtn.addEventListener('click', () => addCity(citySelect.value));\r\n    cityChips.addEventListener('click', (e) => {\r\n      const btn = e.target.closest('button[data-city]');\r\n      if (!btn) return;\r\n      selectedCities.delete(btn.getAttribute('data-city'));\r\n      renderChips();\r\n    });\r\n\r\n    \/\/ ---------- Validation ----------\r\n    function show(el) { el.style.display = 'block'; }\r\n    function hide(el) { el.style.display = 'none'; }\r\n\r\n    function validEmail(v) { return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(String(v).toLowerCase()); }\r\n\r\n    function validateStep1() {\r\n      let ok = true;\r\n      \/\/ tour name\r\n      if (!fields.tour_name.value.trim()) { show(errs.tour_name); ok = false; } else hide(errs.tour_name);\r\n      \/\/ name\r\n      if (!fields.full_name.value.trim()) { show(errs.full_name); ok = false; } else hide(errs.full_name);\r\n      \/\/ email\r\n      if (!fields.email.value.trim() || !validEmail(fields.email.value)) { show(errs.email); ok = false; } else hide(errs.email);\r\n      \/\/ phone\r\n      if (!fields.phone.value.trim()) { show(errs.phone); ok = false; } else hide(errs.phone);\r\n      \/\/ cities\r\n      if (selectedCities.size === 0) { show(errs.cities); ok = false; } else hide(errs.cities);\r\n      return ok;\r\n    }\r\n\r\n    function validateStep2() {\r\n      let ok = true;\r\n      if (!fields.days.value || Number(fields.days.value) < 1) { show(errs.days); ok = false; } else hide(errs.days);\r\n      if (!fields.people.value || Number(fields.people.value) < 2) { show(errs.people); ok = false; } else hide(errs.people);\r\n      return ok;\r\n    }\r\n\r\n    \/\/ ---------- Submit ----------\r\n    form.addEventListener('submit', function(e) {\r\n      e.preventDefault();\r\n      if (!validateStep2()) return;\r\n\r\n      \/\/ collect activities\r\n      const acts = Array.from(document.querySelectorAll('.act:checked')).map(i => i.value);\r\n\r\n      const templateParams = {\r\n        tour_name: fields.tour_name.value.trim(),\r\n        full_name: fields.full_name.value.trim(),\r\n        email: fields.email.value.trim(),\r\n        phone: fields.phone.value.trim(),\r\n        cities: Array.from(selectedCities).join(', '),\r\n        days: String(fields.days.value),\r\n        people: String(fields.people.value),\r\n        activities: acts.length ? acts.join(', ') : 'None',\r\n        message: fields.message.value.trim() || '\u2014',\r\n        created_at: new Date().toLocaleString()\r\n      };\r\n\r\n      const submitBtn = document.getElementById('submitBtn');\r\n      const oldHtml = submitBtn.innerHTML; submitBtn.disabled = true; submitBtn.innerHTML = '<i class=\"fa-solid fa-spinner fa-spin\"><\/i>&nbsp;Sending...';\r\n\r\n      \/\/ Service & Template from user request\r\n      emailjs.send('service_z8490d1', 'template_a758c81', templateParams)\r\n        .then(() => {\r\n          \/\/ show success page inside modal\r\n          form.style.display = 'none';\r\n          successScreen.style.display = 'block';\r\n          document.querySelector('.content').scrollTo({ top: 0, behavior: 'smooth' });\r\n        })\r\n        .catch(err => {\r\n          alert('There was an error submitting your request. Please try again.');\r\n          console.error('EmailJS error:', err);\r\n        })\r\n        .finally(() => { submitBtn.disabled = false; submitBtn.innerHTML = oldHtml; });\r\n    });\r\n\r\n    \/\/ ---------- Helpers ----------\r\n    function resetAll() {\r\n      \/\/ reset UI\r\n      successScreen.style.display = 'none';\r\n      form.style.display = 'block';\r\n      step2.classList.remove('active'); bar2.classList.remove('active');\r\n      step1.classList.add('active'); bar1.classList.add('active');\r\n\r\n      \/\/ reset data\r\n      form.reset();\r\n      selectedCities.clear();\r\n      renderChips();\r\n\r\n      \/\/ hide errors\r\n      Object.values(errs).forEach(hide);\r\n    }\r\n\r\n    \/\/ ---------- Init ----------\r\n    populateCitySelect();\r\n    renderChips();\r\n  <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Signature Experiences Top activities to try Safe, guided &#038; unforgettable \u2022 &#8230; <\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"class_list":["post-464","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/moroccotoptour.com\/zh\/wp-json\/wp\/v2\/pages\/464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/moroccotoptour.com\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/moroccotoptour.com\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/moroccotoptour.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/moroccotoptour.com\/zh\/wp-json\/wp\/v2\/comments?post=464"}],"version-history":[{"count":13,"href":"https:\/\/moroccotoptour.com\/zh\/wp-json\/wp\/v2\/pages\/464\/revisions"}],"predecessor-version":[{"id":814,"href":"https:\/\/moroccotoptour.com\/zh\/wp-json\/wp\/v2\/pages\/464\/revisions\/814"}],"wp:attachment":[{"href":"https:\/\/moroccotoptour.com\/zh\/wp-json\/wp\/v2\/media?parent=464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}