{"product_id":"bolso-mediano","title":"Bolso Mediano","description":"\u003cdiv class=\"c-sw\"\u003e\n  \u003cspan class=\"sw-lbl\"\u003eColor - \u003cspan id=\"selected-color-name\"\u003eBeige Khaki\u003c\/span\u003e\u003c\/span\u003e\n  \u003cdiv class=\"sg-sw\"\u003e\n    \u003cbutton type=\"button\" class=\"sw-btn active\" data-color=\"Beige Khaki\" data-slide-index=\"1\" style=\"--swatch-bg: #caab84;\" title=\"Beige Khaki\"\u003e\u003c\/button\u003e\n    \n    \u003cbutton type=\"button\" class=\"sw-btn\" data-color=\"Blanco roto\" data-slide-index=\"4\" style=\"--swatch-bg: #f3ebd9;\" title=\"Blanco roto\"\u003e\u003c\/button\u003e\n\n    \u003cbutton type=\"button\" class=\"sw-btn\" data-color=\"Negro\" data-slide-index=\"5\" style=\"--swatch-bg: #1A1A1A;\" title=\"Negro\"\u003e\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .c-sw {\n    margin: 20px 0;\n  }\n  .sw-lbl {\n    display: block;\n    font-size: 14px; \n    color: #2b2b2b;\n    margin-bottom: 12px;\n    font-family: \"New York\", -apple-system-serif, \"Playfair Display\", \"Georgia\", \"Times New Roman\", serif;\n    font-weight: 400;\n    letter-spacing: 0.1px;\n    -webkit-font-smoothing: antialiased;\n  }\n  #selected-color-name {\n    font-weight: 400;\n  }\n  .sg-sw {\n    display: flex;\n    gap: 12px;\n  }\n  .sw-btn {\n    width: 44px; \n    height: 44px;\n    border-radius: 9px;\n    border: 1px solid transparent;\n    background: var(--swatch-bg);\n    cursor: pointer;\n    position: relative;\n    box-sizing: border-box;\n    padding: 0;\n  }\n  .sw-btn.active {\n    border: 1.5px solid #8c867a !important; \n    box-shadow: inset 0 0 0 3px #ffffff;\n  }\n  .sw-btn:focus {\n    outline: none;\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  (function() {\n    function inicializarSelectorColor() {\n      \/\/ Función para desplazar la galería de imágenes\n      function moverCarruselPorPosicion(numeroFoto) {\n        const miniaturas = document.querySelectorAll('.product__thumbnail-item button, .thumbnail-list__item button, .product__thumb, .thumbnail-item, .product-single__thumbnail');\n        \n        if (miniaturas \u0026\u0026 miniaturas.length \u003e= numeroFoto) {\n          miniaturas[numeroFoto - 1].click();\n        } else {\n          const diapositivas = document.querySelectorAll('.product__media-item, .swiper-slide, .slick-slide, .product-main-slide');\n          if (diapositivas \u0026\u0026 diapositivas.length \u003e= numeroFoto) {\n            diapositivas[numeroFoto - 1].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n          }\n        }\n      }\n\n      \/\/ Evento de clic en tus botones de color personalizados\n      document.addEventListener('click', function(e) {\n        const boton = e.target.closest('.sw-btn');\n        if (!boton) return;\n        \n        e.preventDefault();\n        \n        document.querySelectorAll('.sw-btn').forEach(x =\u003e x.classList.remove('active'));\n        boton.classList.add('active');\n        document.getElementById('selected-color-name').textContent = boton.dataset.color;\n        \n        moverCarruselPorPosicion(parseInt(boton.getAttribute('data-slide-index')));\n\n        \/\/ Sincronización con las variantes nativas de Shopify (que ahora están visibles)\n        const valorLimpio = boton.dataset.color.trim();\n        const opcionesNativas = document.querySelectorAll('.product-form__input input, .product-form__input label, .swatch-element, [class*=\"variant\"] option, [class*=\"swatch\"], [class*=\"color-swatch\"]');\n        \n        opcionesNativas.forEach(el =\u003e {\n          const textoEl = (el.innerText || el.value || el.getAttribute('aria-label') || el.getAttribute('data-value') || \"\").trim();\n          \n          if (\/\\d\/.test(textoEl) \u0026\u0026 textoEl.length \u003c 4) return; \/\/ Ignora tallas numéricas\n\n          if (textoEl === valorLimpio || textoEl.toLowerCase() === valorLimpio.toLowerCase()) {\n            if (el.tagName === 'INPUT') {\n              el.checked = true;\n              el.dispatchEvent(new Event('change', { bubbles: true }));\n            } else if (el.tagName === 'OPTION') {\n              let select = el.closest('select');\n              if(select) {\n                select.value = el.value;\n                select.dispatchEvent(new Event('change', { bubbles: true }));\n              }\n            } else {\n              el.click();\n            }\n          }\n        });\n      });\n    }\n\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', inicializarSelectorColor);\n    } else {\n      inicializarSelectorColor();\n    }\n  })();\n\u003c\/script\u003e","brand":"Mi tienda","offers":[{"title":"Beige Khaki","offer_id":57674011640190,"sku":null,"price":17.99,"currency_code":"EUR","in_stock":true},{"title":"Blanco roto","offer_id":57674011672958,"sku":null,"price":17.99,"currency_code":"EUR","in_stock":true},{"title":"Negro","offer_id":57674011705726,"sku":null,"price":17.99,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1008\/4804\/2366\/files\/ChatGPTImage11jul2026_17_31_01_3b8f49e1-2e25-4402-a0f1-c8dea3f303ef.png?v=1783785788","url":"https:\/\/luzdemoda.com\/products\/bolso-mediano","provider":"LuzDeModa","version":"1.0","type":"link"}