{"id":164992,"date":"2026-08-12T17:39:48","date_gmt":"2026-08-12T17:39:48","guid":{"rendered":"https:\/\/ultrajewels.com\/?page_id=164992"},"modified":"2026-08-12T18:26:45","modified_gmt":"2026-08-12T18:26:45","slug":"visit-us","status":"publish","type":"page","link":"https:\/\/ultrajewels.com\/en\/visit-us\/","title":{"rendered":"Visit Us"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"164992\" class=\"elementor elementor-164992\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3a81a8 e-con-full e-flex e-con e-parent\" data-id=\"f3a81a8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a42bc00 elementor-widget elementor-widget-heading\" data-id=\"a42bc00\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">OUR BOUTIQUES<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f7c3dee elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"f7c3dee\" 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<div class=\"uj-guard\">\r\n  <style>\r\n    .uj-guard {\r\n      margin-top: 10px !important;\r\n      position: relative !important;\r\n      z-index: 0 !important;\r\n      width: 100% !important;\r\n      clear: both !important;\r\n      font-family: 'Montserrat', sans-serif !important;\r\n      color: #333 !important;\r\n      background: #fff !important;\r\n    }\r\n\r\n    .uj-guard * {\r\n      margin: 0 !important;\r\n      padding: 0 !important;\r\n      box-sizing: border-box !important;\r\n    }\r\n\r\n    .uj-center {\r\n      display: flex !important;\r\n      justify-content: center !important;\r\n      width: 100% !important;\r\n    }\r\n\r\n    .uj-center > .container-uj {\r\n      width: 100% !important;\r\n      max-width: 85% !important;\r\n      margin: 0 auto !important;\r\n    }\r\n\r\n    .uj-guard .store-locator {\r\n      display: flex !important;\r\n      min-height: 600px !important;\r\n      width: 100% !important;\r\n      flex-direction: row-reverse !important;\r\n      justify-content: center !important;\r\n      gap: 40px !important;\r\n      align-items: flex-start !important;\r\n    }\r\n\r\n    .uj-guard .map-section {\r\n      flex: 1 !important;\r\n      background: #f5f5f5 !important;\r\n      position: sticky !important;\r\n      top: 60px !important;\r\n      height: calc(180px * 4 + 20px * 3) !important;\r\n      margin-top: 80px !important;\r\n      overflow: hidden !important;\r\n    }\r\n\r\n    .uj-guard .map-container,\r\n    .uj-guard #uj-leaflet-map {\r\n      width: 100% !important;\r\n      height: 100% !important;\r\n      min-height: 600px !important;\r\n    }\r\n\r\n    .uj-guard .map-reset-btn {\r\n      position: absolute !important;\r\n      top: 10px !important;\r\n      right: 10px !important;\r\n      display: none;\r\n      font-size: 12px !important;\r\n      color: #fff !important;\r\n      background: #EF922E !important;\r\n      border-radius: 99px !important;\r\n      padding: 8px 16px !important;\r\n      border: none !important;\r\n      cursor: pointer !important;\r\n      z-index: 999 !important;\r\n      font-weight: 600 !important;\r\n      box-shadow: 0 2px 4px rgba(0,0,0,0.2) !important;\r\n    }\r\n\r\n    .uj-guard .stores-section {\r\n      flex: 1 !important;\r\n      padding: 0 20px !important;\r\n      background: #fff !important;\r\n      max-height: calc(200px * 4 + 20px * 3) !important;\r\n      display: flex !important;\r\n      flex-direction: column !important;\r\n      overflow: hidden !important;\r\n      position: sticky !important;\r\n      top: 60px !important;\r\n    }\r\n\r\n    .uj-guard .city-tabs-wrapper {\r\n      display: flex !important;\r\n      flex-direction: column !important;\r\n      gap: 12px !important;\r\n      margin-bottom: 20px !important;\r\n      align-items: flex-start !important;\r\n      position: relative !important;\r\n      z-index: 20 !important;\r\n      background: #fff !important;\r\n      padding-top: 20px !important;\r\n      padding-bottom: 10px !important;\r\n      flex-shrink: 0 !important;\r\n    }\r\n\r\n    .uj-guard .tabs-row {\r\n      display: flex !important;\r\n      flex-wrap: wrap !important;\r\n      gap: 6px !important;\r\n    }\r\n\r\n    .uj-guard .city-tab {\r\n      display: inline-block !important;\r\n      font-size: 11px !important;\r\n      color: #fff !important;\r\n      background: #d2d2d2 !important;\r\n      border-radius: 99px !important;\r\n      padding: 6px 12px !important;\r\n      border: none !important;\r\n      cursor: pointer !important;\r\n      font-weight: 600 !important;\r\n      transition: 0.2s !important;\r\n    }\r\n\r\n    .uj-guard .city-tab.active,\r\n    .uj-guard .city-tab:hover {\r\n      background: #EF922E !important;\r\n    }\r\n\r\n    .uj-guard .stores-list {\r\n      display: flex !important;\r\n      flex-direction: column !important;\r\n      gap: 20px !important;\r\n      overflow-y: auto !important;\r\n      flex: 1 !important;\r\n      padding-right: 5px !important;\r\n      padding-bottom: 80px !important;\r\n    }\r\n\r\n    .uj-guard .store-card {\r\n      display: flex !important;\r\n      flex-direction: row !important;\r\n      width: 100% !important;\r\n      background: #fafafa !important;\r\n      height: 180px !important;\r\n      position: relative !important;\r\n      overflow: hidden !important;\r\n      border: none !important;\r\n      transition: all 0.3s ease !important;\r\n      flex-shrink: 0 !important;\r\n      cursor: pointer !important;\r\n    }\r\n\r\n    .uj-guard .store-card:hover {\r\n      box-shadow: 0 4px 12px rgba(0,0,0,0.1) !important;\r\n    }\r\n\r\n    .uj-guard .store-card.active {\r\n      box-shadow: 0 4px 12px rgba(255,140,0,0.2) !important;\r\n      background: #fff !important;\r\n    }\r\n\r\n    .uj-guard .slider-wrapper {\r\n      position: relative !important;\r\n      width: 180px !important;\r\n      height: 180px !important;\r\n      flex-shrink: 0 !important;\r\n      overflow: hidden !important;\r\n    }\r\n\r\n    .uj-guard .slider-track {\r\n      display: flex !important;\r\n      height: 100% !important;\r\n      width: 100% !important;\r\n      transition: transform 0.3s ease-in-out !important;\r\n    }\r\n\r\n    .uj-guard .store-image {\r\n      width: 100% !important;\r\n      height: 100% !important;\r\n      object-fit: cover !important;\r\n      flex-shrink: 0 !important;\r\n      display: block !important;\r\n    }\r\n\r\n    .uj-guard .slider-btn {\r\n      position: absolute !important;\r\n      top: 50% !important;\r\n      transform: translateY(-50%) !important;\r\n      width: 24px !important;\r\n      height: 24px !important;\r\n      background: rgba(0,0,0,0.5) !important;\r\n      color: #fff !important;\r\n      border: none !important;\r\n      border-radius: 50% !important;\r\n      cursor: pointer !important;\r\n      z-index: 5 !important;\r\n      display: flex !important;\r\n      align-items: center !important;\r\n      justify-content: center !important;\r\n      font-size: 12px !important;\r\n      opacity: 0;\r\n      transition: opacity 0.2s !important;\r\n    }\r\n\r\n    .uj-guard .slider-wrapper:hover .slider-btn {\r\n      opacity: 1 !important;\r\n    }\r\n\r\n    .uj-guard .slider-btn.prev {\r\n      left: 5px !important;\r\n    }\r\n\r\n    .uj-guard .slider-btn.next {\r\n      right: 5px !important;\r\n    }\r\n\r\n    .uj-guard .store-info {\r\n      flex: 1 !important;\r\n      padding: 15px !important;\r\n      display: flex !important;\r\n      flex-direction: column !important;\r\n      justify-content: flex-start !important;\r\n    }\r\n\r\n    .uj-guard .store-brand {\r\n      font-size: 14px !important;\r\n      font-weight: 700 !important;\r\n      color: #EF922E !important;\r\n      text-transform: uppercase !important;\r\n      margin-bottom: 4px !important;\r\n      letter-spacing: 0.5px !important;\r\n    }\r\n\r\n    .uj-guard .store-location {\r\n      font-size: 12px !important;\r\n      font-weight: 300 !important;\r\n      color: #888 !important;\r\n      text-transform: uppercase !important;\r\n      margin-bottom: 8px !important;\r\n    }\r\n\r\n    .uj-guard .store-address {\r\n      font-size: 11px !important;\r\n      color: #666 !important;\r\n      line-height: 1.4 !important;\r\n      max-width: 90% !important;\r\n    }\r\n\r\n    .uj-guard .store-actions {\r\n      position: absolute !important;\r\n      bottom: 15px !important;\r\n      right: 15px !important;\r\n    }\r\n\r\n    .uj-guard .btn-detail {\r\n      background: #EF922E !important;\r\n      color: #fff !important;\r\n      padding: 6px 12px !important;\r\n      border-radius: 99px !important;\r\n      font-size: 10px !important;\r\n      font-weight: 700 !important;\r\n      text-decoration: none !important;\r\n      text-transform: uppercase !important;\r\n      letter-spacing: 0.5px !important;\r\n    }\r\n\r\n    .uj-guard .stores-list::-webkit-scrollbar {\r\n      width: 4px !important;\r\n    }\r\n\r\n    .uj-guard .stores-list::-webkit-scrollbar-track {\r\n      background: #f5f5f5 !important;\r\n    }\r\n\r\n    .uj-guard .stores-list::-webkit-scrollbar-thumb {\r\n      background-color: #EF922E !important;\r\n      border-radius: 10px !important;\r\n    }\r\n\r\n    .leaflet-popup-content-wrapper {\r\n      border-radius: 4px !important;\r\n      box-shadow: 0 10px 30px rgba(0,0,0,0.15) !important;\r\n    }\r\n\r\n    .leaflet-popup-content {\r\n      margin: 0 !important;\r\n    }\r\n\r\n    .leaflet-control-attribution {\r\n      font-size: 10px !important;\r\n    }\r\n\r\n    .custom-marker {\r\n      width: 20px;\r\n      height: 20px;\r\n      background: #EF922E;\r\n      border-radius: 50% 50% 50% 0;\r\n      transform: rotate(-45deg);\r\n    }\r\n\r\n    .custom-marker::after {\r\n      content: \"\";\r\n      width: 7px;\r\n      height: 7px;\r\n      background: #fff;\r\n      position: absolute;\r\n      border-radius: 50%;\r\n      top: 6px;\r\n      left: 6px;\r\n    }\r\n\r\n    @media (max-width: 968px) {\r\n      .uj-center > .container-uj {\r\n        max-width: 100% !important;\r\n      }\r\n\r\n      .uj-guard {\r\n        margin-top: 0 !important;\r\n      }\r\n\r\n      .uj-guard .store-locator {\r\n        flex-direction: column !important;\r\n        gap: 0 !important;\r\n        margin-top: 0 !important;\r\n      }\r\n\r\n      .uj-guard .map-section {\r\n        order: 1 !important;\r\n        width: 100% !important;\r\n        flex: none !important;\r\n        height: 400px !important;\r\n        position: relative !important;\r\n        top: 0 !important;\r\n        margin-top: 0 !important;\r\n      }\r\n\r\n      .uj-guard .map-container,\r\n      .uj-guard #uj-leaflet-map {\r\n        min-height: 400px !important;\r\n      }\r\n\r\n      .uj-guard .stores-section {\r\n        width: 100% !important;\r\n        padding: 0 20px !important;\r\n        position: relative !important;\r\n        top: 0 !important;\r\n        max-height: none !important;\r\n      }\r\n\r\n      .uj-guard .store-card {\r\n        flex-direction: column !important;\r\n        height: auto !important;\r\n        max-width: 100% !important;\r\n      }\r\n\r\n      .uj-guard .slider-wrapper {\r\n        width: 100% !important;\r\n        height: 220px !important;\r\n      }\r\n\r\n      .uj-guard .store-info {\r\n        padding: 15px !important;\r\n        padding-bottom: 50px !important;\r\n        position: relative !important;\r\n      }\r\n\r\n      .uj-guard .store-actions {\r\n        bottom: 15px !important;\r\n        right: 15px !important;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"uj-center\">\r\n    <div class=\"container-uj\">\r\n      <div class=\"store-locator\">\r\n\r\n        <div class=\"map-section\">\r\n          <div class=\"map-container\">\r\n            <div id=\"uj-leaflet-map\"><\/div>\r\n          <\/div>\r\n          <button class=\"map-reset-btn\" id=\"resetMapBtn\">\u2190 Ver todo<\/button>\r\n        <\/div>\r\n\r\n        <div class=\"stores-section\">\r\n          <div class=\"city-tabs-wrapper\">\r\n            <div class=\"tabs-row\">\r\n              <button class=\"city-tab\" data-city=\"cancun\">CANC\u00daN<\/button>\r\n              <button class=\"city-tab\" data-city=\"playa\">PLAYA DEL CARMEN<\/button>\r\n              <button class=\"city-tab\" data-city=\"cabos\">LOS CABOS<\/button>\r\n              <button class=\"city-tab\" data-city=\"monterrey\">MONTERREY<\/button>\r\n              <button class=\"city-tab\" data-city=\"merida\">M\u00c9RIDA<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"stores-list\" id=\"storesList\"><\/div>\r\n        <\/div>\r\n\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  const leafletCSS = 'https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css';\r\n  const leafletJS = 'https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js';\r\n\r\n  function loadLeafletCSS() {\r\n    if (document.querySelector('link[href=\"' + leafletCSS + '\"]')) return;\r\n\r\n    const link = document.createElement('link');\r\n    link.rel = 'stylesheet';\r\n    link.href = leafletCSS;\r\n    document.head.appendChild(link);\r\n  }\r\n\r\n  function loadLeafletJS(callback) {\r\n    if (window.L) {\r\n      callback();\r\n      return;\r\n    }\r\n\r\n    const existingScript = document.querySelector('script[src=\"' + leafletJS + '\"]');\r\n\r\n    if (existingScript) {\r\n      existingScript.addEventListener('load', callback);\r\n      setTimeout(function () {\r\n        if (window.L) callback();\r\n      }, 500);\r\n      return;\r\n    }\r\n\r\n    const script = document.createElement('script');\r\n    script.src = leafletJS;\r\n    script.onload = callback;\r\n    document.body.appendChild(script);\r\n  }\r\n\r\n  loadLeafletCSS();\r\n\r\n  loadLeafletJS(function () {\r\n    const stores = [\r\n      {\r\n        id: 1,\r\n        city: 'playa',\r\n        name: 'ULTRAJEWELS QUINTA AVENIDA',\r\n        address: '5ta Avenida Norte entre Calle 14 y 16, Centro, 77710 Playa del Carmen, Q.R.',\r\n        images: ['https:\/\/ultrajewels.com\/wp-content\/uploads\/2025\/12\/ULTRA_2026-enero_tienda-Twin_playa-3-scaled.jpg'],\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/ultrajewels-quinta-avenida\/',\r\n        lat: 20.628701,\r\n        lng: -87.0732615\r\n      },\r\n      {\r\n        id: 2,\r\n        city: 'cancun',\r\n        name: 'ULTRAJEWELS PUERTO CANC\u00daN',\r\n        address: 'Marina Puerto Canc\u00fan, Blvd. Kukulc\u00e1n Km 1.5, 77500 Canc\u00fan, Q.R.',\r\n        images: ['https:\/\/ultrajewels.com\/wp-content\/uploads\/2025\/12\/ULTRA_2026-enero_tienda-puerto-1-scaled.jpg'],\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/ultrajewels-puerto-cancun\/',\r\n        lat: 21.1609728,\r\n        lng: -86.8085292\r\n      },\r\n      {\r\n        id: 3,\r\n        city: 'cancun',\r\n        name: 'ULTRAJEWELS LUXURY AVENUE CANC\u00daN',\r\n        address: 'Luxury Avenue Boutique Mall, Blvd. Kukulc\u00e1n Km 13.5, Zona Hotelera, 77500 Canc\u00fan, Q.R.',\r\n        images: [\r\n          'https:\/\/ultrajewels.com\/wp-content\/uploads\/2025\/12\/ULTRA_2026-enero_tienda-luxury-2-scaled.jpg',\r\n          'https:\/\/neo-emarketing.com\/ultrajewels\/wp-content\/uploads\/2025\/10\/quintaavenida.png'\r\n        ],\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/ultrajewels-luxury-avenue-cancun\/',\r\n        lat: 21.1010994,\r\n        lng: -86.7659383\r\n      },\r\n      {\r\n        id: 4,\r\n        city: 'cabos',\r\n        name: 'ULTRAJEWELS MARINA CABO',\r\n        address: 'Blvd. Paseo de la Marina, Centro, 23450 Cabo San Lucas, B.C.S.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2026\/04\/1-1.webp',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/ultrajewels-marina-cabo-san-lucas\/',\r\n        lat: 22.8855048,\r\n        lng: -109.9141334\r\n      },\r\n      {\r\n        id: 5,\r\n        city: 'cabos',\r\n        name: 'ULTRAJEWELS LUXURY AVENUE CABO SAN LUCAS',\r\n        address: 'Plaza Puerto Para\u00edso, Av. L\u00e1zaro C\u00e1rdenas, esquina Cabo Bello, Cabo San Lucas, B.C.S.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2026\/02\/UJLUXURYAVENUELOSCABOS.jpg',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/ultrajewels-luxury-avenue-avenue-los-cabos\/',\r\n        lat: 22.8869904,\r\n        lng: -109.9115011\r\n      },\r\n      {\r\n        id: 7,\r\n        city: 'monterrey',\r\n        name: 'ULTRAJEWELS MONTERREY',\r\n        address: 'Calz. del Valle 409, Del Valle, 66220 San Pedro Garza Garc\u00eda, N.L.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2026\/04\/ULTRAJEWELS-1.webp',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/ultrajewels-monterrey\/',\r\n        lat: 25.654571,\r\n        lng: -100.3645749\r\n      },\r\n      {\r\n        id: 8,\r\n        city: 'cancun',\r\n        name: 'TAG Heuer Canc\u00fan',\r\n        address: 'Plaza la Isla, Km 12, Blvd. Kukulc\u00e1n, Zona Hotelera, 77500 Canc\u00fan, Q.R.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2026\/01\/1-1-1-scaled.jpg',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/tag-heuer-cancun\/',\r\n        lat: 21.1084681,\r\n        lng: -86.7640753\r\n      },\r\n      {\r\n        id: 9,\r\n        city: 'cabos',\r\n        name: 'TAG Heuer Cabo San Lucas',\r\n        address: 'Luxury Avenue Los Cabos, Av. L\u00e1zaro C\u00e1rdenas y Paseo Cabo Bello, Plaza Puerto Para\u00edso, 23410 Cabo San Lucas, B.C.S.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2025\/03\/upscalemedia-transformed-2.png',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/tag-heuer-cabo-san-lucas\/',\r\n        lat: 22.8869097,\r\n        lng: -109.9114938\r\n      },\r\n      {\r\n        id: 10,\r\n        city: 'merida',\r\n        name: 'Montblanc M\u00e9rida',\r\n        address: 'Av. 24 Tab 30020 X 88 Colegio Teresiano La Isla Cabo Norte, 97345 M\u00e9rida, Yuc.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2025\/03\/Montblanc-Merida-scaled-2.jpg',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/montblanc-merida\/',\r\n        lat: 21.0561448,\r\n        lng: -89.5990573\r\n      },\r\n      {\r\n        id: 11,\r\n        city: 'cancun',\r\n        name: 'Montblanc Marina Puerto Cancun',\r\n        address: 'Marina Puerto Canc\u00fan, 77500 Canc\u00fan, Q.R.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2026\/07\/UJ-2026_julio-fachada_montblanc-1.jpg-scaled.jpeg',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/montblanc-cancun\/',\r\n        lat: 21.1607742,\r\n        lng: -86.8080823\r\n      },\r\n      {\r\n        id: 12,\r\n        city: 'cabos',\r\n        name: 'Montblanc Cabo San Lucas',\r\n        address: 'Blvd. L\u00e1zaro C\u00e1rdenas, El Medano Ejidal, Marina, 23479 Cabo San Lucas, B.C.S.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2025\/03\/Montblanc-Los-Cabos-scaled-1.jpg',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/montblanc-cabo-san-lucas\/',\r\n        lat: 22.8904782,\r\n        lng: -109.9269251\r\n      },\r\n      {\r\n        id: 12,\r\n        city: 'cabos',\r\n        name: 'TAG Heuer Anima Los Cabos',\r\n        address: 'M\u00e9xico 1 Km 10.3, Tourist Corridor, Del Sol, 23455 Cabo San Lucas, B.C.S.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-10-at-13.12.19.jpeg',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/tag-heuer-anima-los-cabos\/',\r\n        lat: 22.9222496,\r\n        lng: -109.8369046\r\n      },\r\n      {\r\n        id: 13,\r\n        city: 'cancun',\r\n        name: 'Cartier Canc\u00fan',\r\n        address: 'Blvd. Kukulc\u00e1n KM 12, La Isla Canc\u00fan, Local S 21, Zona Hotelera, 77500 Canc\u00fan, Q.R.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2025\/08\/Cartier-Boutique-La-Isla-CUN-2025-14-scaled.jpg',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/cartier-la-isla-cancun\/',\r\n        lat: 21.1121563,\r\n        lng: -86.7621965\r\n      },\r\n      {\r\n        id: 14,\r\n        city: 'cancun',\r\n        name: 'Hublot Canc\u00fan',\r\n        address: '5 Lt 18-10, Blvd. Kukulc\u00e1n km 12.5, Zona Hotelera, 77500 Canc\u00fan, Q.R.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2024\/12\/Hublot-Boutique-Cancun-Ultrajewels-La-Isla-16.jpg',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/hublot-cancun\/',\r\n        lat: 21.1095337,\r\n        lng: -86.7640945\r\n      },\r\n      {\r\n        id: 15,\r\n        city: 'cabos',\r\n        name: 'Breitling Cabo San Lucas',\r\n        address: 'Blvd. Paseo de la Marina Down Town, Supermanzana esquina, Centro Malec\u00f3n, 23453 Cabo San Lucas, B.C.S.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2025\/03\/Breitling-Los-Cabos-scaled-1.jpg',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/breitling-cabo-san-lucas\/',\r\n        lat: 22.8854665,\r\n        lng: -109.9140861\r\n      },\r\n      {\r\n        id: 16,\r\n        city: 'cancun',\r\n        name: 'Breitling Boutique La Isla Canc\u00fan',\r\n        address: 'Local S-10 5, Blvd. Kukulc\u00e1n 10-km 12.5, Zona Hotelera, 77500 Canc\u00fan, Q.R.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2025\/08\/DSC_9796-Mejorado-NR-copia1-scaled-1.webp',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/breitling-la-isla-cancun\/',\r\n        lat: 21.1102072,\r\n        lng: -86.7639903\r\n      },\r\n      \r\n       {\r\n        id: 17,\r\n        city: 'cancun',\r\n        name: 'Breitling Marina Puerto Canc\u00fan',\r\n        address: 'Marina Puerto Canc\u00fan, 77500 Canc\u00fan, Q.R.',\r\n        image: 'https:\/\/ultrajewels.com\/wp-content\/uploads\/2026\/07\/Fachada-Breitling.png',\r\n        url: 'https:\/\/ultrajewels.com\/boutiques\/breitling-puerto-cancun\/',\r\n        lat: 21.160552,\r\n        lng: -86.8091696\r\n      },\r\n      \r\n    ];\r\n\r\n    let currentCity = 'todos';\r\n    let selectedStoreId = null;\r\n    let map = null;\r\n    let markerById = new Map();\r\n    let currentPopup = null;\r\n    let initialMapCenter = [23.0, -102.0];\r\n    let initialMapZoom = 5;\r\n    const sliderIndices = {};\r\n\r\n    const mapElement = document.getElementById('uj-leaflet-map');\r\n    const storesList = document.getElementById('storesList');\r\n    const resetBtn = document.getElementById('resetMapBtn');\r\n\r\n    if (!mapElement || !storesList || !resetBtn) return;\r\n    if (mapElement.dataset.initialized === 'true') return;\r\n\r\n    mapElement.dataset.initialized = 'true';\r\n\r\n    const customIcon = L.divIcon({\r\n      className: '',\r\n      html: '<div class=\"custom-marker\"><\/div>',\r\n      iconSize: [30, 30],\r\n      iconAnchor: [15, 30],\r\n      popupAnchor: [0, -30]\r\n    });\r\n\r\n    function getBrandAndLocation(name) {\r\n      let brand = 'ULTRAJEWELS';\r\n      let location = name;\r\n\r\n      if (name.includes('ULTRAJEWELS')) {\r\n        location = name.replace('ULTRAJEWELS ', '');\r\n      } else if (name.includes('TAG Heuer')) {\r\n        brand = 'TAG HEUER';\r\n        location = name.replace('TAG Heuer ', '');\r\n      } else if (name.includes('Montblanc')) {\r\n        brand = 'MONTBLANC';\r\n        location = name.replace('Montblanc ', '');\r\n      } else if (name.includes('Cartier')) {\r\n        brand = 'CARTIER';\r\n        location = name.replace('Cartier ', '');\r\n      } else if (name.includes('Hublot')) {\r\n        brand = 'HUBLOT';\r\n        location = name.replace('Hublot ', '');\r\n      } else if (name.includes('Breitling')) {\r\n        brand = 'BREITLING';\r\n        location = name.replace('Breitling ', '');\r\n      }\r\n\r\n      return { brand, location };\r\n    }\r\n\r\n    function initLeafletMap() {\r\n      const firstStore = stores.find(function (s) {\r\n        return s.lat && s.lng;\r\n      });\r\n\r\n      const startCenter = firstStore ? [firstStore.lat, firstStore.lng] : initialMapCenter;\r\n      const startZoom = firstStore ? 15 : 5;\r\n\r\n      map = L.map('uj-leaflet-map', {\r\n        center: startCenter,\r\n        zoom: startZoom,\r\n        scrollWheelZoom: true\r\n      });\r\n\r\n      L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\r\n        maxZoom: 19,\r\n        attribution: '&copy; OpenStreetMap contributors'\r\n      }).addTo(map);\r\n\r\n      stores.forEach(function (store) {\r\n        if (!store.lat || !store.lng) return;\r\n\r\n        const marker = L.marker([store.lat, store.lng], {\r\n          icon: customIcon,\r\n          title: store.name\r\n        }).addTo(map);\r\n\r\n        marker.on('click', function () {\r\n          selectStore(store.id);\r\n          openInfo(store.id);\r\n        });\r\n\r\n        markerById.set(store.id, marker);\r\n      });\r\n\r\n      fitAllStores();\r\n      renderStores();\r\n      setupEventListeners();\r\n      setupResetButton();\r\n\r\n      setTimeout(function () {\r\n        map.invalidateSize();\r\n        fitAllStores();\r\n      }, 300);\r\n\r\n      setTimeout(function () {\r\n        map.invalidateSize();\r\n      }, 1000);\r\n    }\r\n\r\n    function openInfo(id) {\r\n      const store = stores.find(function (s) {\r\n        return s.id === id;\r\n      });\r\n\r\n      const marker = markerById.get(id);\r\n\r\n      if (!store || !marker) return;\r\n\r\n      const data = getBrandAndLocation(store.name);\r\n\r\n      const popupContent = `\r\n        <div style=\"width:260px; padding:16px !important; font-family:'Montserrat', sans-serif !important; text-align:left;\">\r\n          <div style=\"font-size:10px; color:#EF922E; font-weight:700; text-transform:uppercase;\">\r\n            ${data.brand}\r\n          <\/div>\r\n\r\n          <div style=\"font-size:13px; font-weight:600; color:#222; margin-bottom:8px; text-transform:uppercase;\">\r\n            ${data.location}\r\n          <\/div>\r\n\r\n          <div style=\"font-size:11px; color:#666; margin-bottom:12px; line-height:1.4;\">\r\n            ${store.address}\r\n          <\/div>\r\n\r\n          <a\r\n            href=\"https:\/\/www.google.com\/maps\/dir\/?api=1&destination=${store.lat},${store.lng}\"\r\n            target=\"_blank\"\r\n            style=\"display:inline-block; background:#EF922E; color:white; text-decoration:none; font-size:10px; font-weight:700; padding:6px 12px; border-radius:99px; text-transform:uppercase;\"\r\n          >\r\n            Get directions\r\n          <\/a>\r\n        <\/div>\r\n      `;\r\n\r\n      marker.bindPopup(popupContent, {\r\n        closeButton: true,\r\n        autoPan: true\r\n      }).openPopup();\r\n\r\n      currentPopup = marker;\r\n    }\r\n\r\n    function fitAllStores() {\r\n      const coords = stores\r\n        .filter(function (s) {\r\n          return s.lat && s.lng;\r\n        })\r\n        .map(function (s) {\r\n          return [s.lat, s.lng];\r\n        });\r\n\r\n      if (!coords.length || !map) return;\r\n\r\n      const bounds = L.latLngBounds(coords);\r\n\r\n      map.fitBounds(bounds, {\r\n        padding: [40, 40]\r\n      });\r\n\r\n      setTimeout(function () {\r\n        initialMapCenter = map.getCenter();\r\n        initialMapZoom = map.getZoom();\r\n      }, 300);\r\n    }\r\n\r\n    function fitCity(city) {\r\n      const coords = stores\r\n        .filter(function (s) {\r\n          return s.city === city && s.lat && s.lng;\r\n        })\r\n        .map(function (s) {\r\n          return [s.lat, s.lng];\r\n        });\r\n\r\n      if (!coords.length || !map) return;\r\n\r\n      if (coords.length === 1) {\r\n        map.setView(coords[0], 15);\r\n      } else {\r\n        map.fitBounds(L.latLngBounds(coords), {\r\n          padding: [40, 40]\r\n        });\r\n      }\r\n\r\n      setTimeout(function () {\r\n        map.invalidateSize();\r\n      }, 300);\r\n    }\r\n\r\n    function selectStore(id, skipScroll) {\r\n      selectedStoreId = id;\r\n\r\n      const store = stores.find(function (s) {\r\n        return s.id === id;\r\n      });\r\n\r\n      if (!store || !map) return;\r\n\r\n      if (store.lat && store.lng) {\r\n        map.setView([store.lat, store.lng], 15, {\r\n          animate: true\r\n        });\r\n      }\r\n\r\n      setResetVisibility();\r\n\r\n      document.querySelectorAll('.uj-guard .store-card').forEach(function (card) {\r\n        const active = parseInt(card.dataset.storeId) === id;\r\n        card.classList.toggle('active', active);\r\n\r\n        if (active && !skipScroll && window.innerWidth > 968) {\r\n          setTimeout(function () {\r\n            card.scrollIntoView({\r\n              behavior: 'smooth',\r\n              block: 'center',\r\n              inline: 'nearest'\r\n            });\r\n          }, 300);\r\n        }\r\n      });\r\n    }\r\n\r\n    function renderStores() {\r\n      const filtered = currentCity === 'todos'\r\n        ? stores\r\n        : stores.filter(function (s) {\r\n            return s.city === currentCity;\r\n          });\r\n\r\n      if (!filtered.length) {\r\n        storesList.innerHTML = '<div class=\"no-stores\">No hay tiendas disponibles.<\/div>';\r\n        return;\r\n      }\r\n\r\n      storesList.innerHTML = filtered.map(function (store) {\r\n        const data = getBrandAndLocation(store.name);\r\n        const imgs = store.images || [store.image];\r\n\r\n        if (sliderIndices[store.id] === undefined) {\r\n          sliderIndices[store.id] = 0;\r\n        }\r\n\r\n        const buttons = imgs.length > 1\r\n          ? `\r\n            <button class=\"slider-btn prev\" data-store=\"${store.id}\" data-dir=\"-1\">\u276e<\/button>\r\n            <button class=\"slider-btn next\" data-store=\"${store.id}\" data-dir=\"1\">\u276f<\/button>\r\n          `\r\n          : '';\r\n\r\n        const slidesHTML = imgs.map(function (src) {\r\n          return `<img decoding=\"async\" src=\"${src}\" class=\"store-image\" draggable=\"false\">`;\r\n        }).join('');\r\n\r\n        return `\r\n          <div class=\"store-card ${selectedStoreId === store.id ? 'active' : ''}\" data-store-id=\"${store.id}\">\r\n            <div class=\"slider-wrapper\">\r\n              <div class=\"slider-track\" id=\"track-${store.id}\">\r\n                ${slidesHTML}\r\n              <\/div>\r\n              ${buttons}\r\n            <\/div>\r\n\r\n            <div class=\"store-info\">\r\n              <div class=\"store-brand\">${data.brand}<\/div>\r\n              <div class=\"store-location\">${data.location}<\/div>\r\n              <div class=\"store-address\">${store.address}<\/div>\r\n\r\n              <div class=\"store-actions\">\r\n                <a class=\"btn-detail\" href=\"${store.url}\" target=\"_blank\">\r\n                  View Boutique\r\n                <\/a>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        `;\r\n      }).join('');\r\n\r\n      document.querySelectorAll('.uj-guard .store-card').forEach(function (card) {\r\n        card.addEventListener('click', function (e) {\r\n          if (e.target.closest('.slider-btn') || e.target.closest('.btn-detail')) return;\r\n\r\n          const id = parseInt(card.dataset.storeId);\r\n          const isMobile = window.innerWidth <= 968;\r\n\r\n          selectStore(id, isMobile);\r\n          openInfo(id);\r\n\r\n          if (isMobile) {\r\n            setTimeout(function () {\r\n              const mapSection = document.querySelector('.uj-guard .map-section');\r\n              const yOffset = -20;\r\n              const y = mapSection.getBoundingClientRect().top + window.pageYOffset + yOffset;\r\n\r\n              window.scrollTo({\r\n                top: y,\r\n                behavior: 'smooth'\r\n              });\r\n            }, 150);\r\n          }\r\n        });\r\n      });\r\n\r\n      document.querySelectorAll('.uj-guard .slider-btn').forEach(function (btn) {\r\n        btn.addEventListener('click', function (e) {\r\n          e.stopPropagation();\r\n          e.preventDefault();\r\n\r\n          const storeId = parseInt(this.dataset.store);\r\n          const direction = parseInt(this.dataset.dir);\r\n\r\n          moveSlide(storeId, direction);\r\n        });\r\n      });\r\n    }\r\n\r\n    function moveSlide(storeId, direction) {\r\n      const store = stores.find(function (s) {\r\n        return s.id === storeId;\r\n      });\r\n\r\n      if (!store) return;\r\n\r\n      const imgs = store.images || [store.image];\r\n\r\n      if (!imgs || imgs.length <= 1) return;\r\n\r\n      let current = sliderIndices[storeId];\r\n      let next = current + direction;\r\n\r\n      if (next < 0) next = imgs.length - 1;\r\n      if (next >= imgs.length) next = 0;\r\n\r\n      sliderIndices[storeId] = next;\r\n\r\n      const track = document.getElementById('track-' + storeId);\r\n\r\n      if (track && track.parentElement) {\r\n        const slideWidth = track.parentElement.offsetWidth;\r\n        track.style.transform = 'translateX(-' + next * slideWidth + 'px)';\r\n      }\r\n    }\r\n\r\n    function setupResetButton() {\r\n      resetBtn.addEventListener('click', function () {\r\n        selectedStoreId = null;\r\n        currentCity = 'todos';\r\n\r\n        if (currentPopup) {\r\n          currentPopup.closePopup();\r\n        }\r\n\r\n        document.querySelectorAll('.uj-guard .store-card').forEach(function (card) {\r\n          card.classList.remove('active');\r\n        });\r\n\r\n        document.querySelectorAll('.uj-guard .city-tab').forEach(function (tab) {\r\n          tab.classList.remove('active');\r\n        });\r\n\r\n        fitAllStores();\r\n        renderStores();\r\n        setResetVisibility();\r\n      });\r\n    }\r\n\r\n    function setupEventListeners() {\r\n      document.querySelectorAll('.uj-guard .city-tab').forEach(function (tab) {\r\n        tab.addEventListener('click', function () {\r\n          document.querySelectorAll('.uj-guard .city-tab').forEach(function (t) {\r\n            t.classList.remove('active');\r\n          });\r\n\r\n          this.classList.add('active');\r\n\r\n          currentCity = this.dataset.city;\r\n          selectedStoreId = null;\r\n\r\n          if (currentPopup) {\r\n            currentPopup.closePopup();\r\n          }\r\n\r\n          renderStores();\r\n          fitCity(currentCity);\r\n          setResetVisibility();\r\n        });\r\n      });\r\n    }\r\n\r\n    function setResetVisibility() {\r\n      const shouldShow = selectedStoreId || currentCity !== 'todos';\r\n      resetBtn.style.display = shouldShow ? 'inline-block' : 'none';\r\n    }\r\n\r\n    initLeafletMap();\r\n  });\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\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>OUR BOUTIQUES \u2190 Ver todo CANC\u00daN PLAYA DEL CARMEN LOS CABOS MONTERREY M\u00c9RIDA<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-164992","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/ultrajewels.com\/en\/wp-json\/wp\/v2\/pages\/164992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ultrajewels.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ultrajewels.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ultrajewels.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ultrajewels.com\/en\/wp-json\/wp\/v2\/comments?post=164992"}],"version-history":[{"count":5,"href":"https:\/\/ultrajewels.com\/en\/wp-json\/wp\/v2\/pages\/164992\/revisions"}],"predecessor-version":[{"id":165011,"href":"https:\/\/ultrajewels.com\/en\/wp-json\/wp\/v2\/pages\/164992\/revisions\/165011"}],"wp:attachment":[{"href":"https:\/\/ultrajewels.com\/en\/wp-json\/wp\/v2\/media?parent=164992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}