{"product_id":"vestido","title":"Vestido","description":"\u003c!-- ============================================================\n     SELECTOR DE TALLAS Y TABLA DE MEDIDAS (para Shopify)\n     ------------------------------------------------------------\n     Instrucciones:\n     1. Copia este código y pégalo en la descripción de tu producto\n        (en el editor, cambia a \"Vista HTML\" o \"Código fuente\").\n     2. O pégalo en un bloque de \"Liquid personalizado\" en la\n        página de producto.\n     3. Para editar las medidas, busca más abajo donde dice:\n        \"DATOS DE MEDIDAS - EDITA AQUÍ\".\n     4. Para cambiar las tallas, modifica el array \"tallas\" en la\n        misma sección.\n     ============================================================ --\u003e\n\n\u003cstyle\u003e\n  \/* Estilos generales del contenedor *\/\n  .tallas-container {\n    margin: 20px 0;\n    font-family: 'Helvetica Neue', Arial, sans-serif;\n  }\n  \n  \/* Selector de tallas - botones estilo pastilla *\/\n  .tallas-botones {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    margin-bottom: 15px;\n  }\n  .talla-btn {\n    padding: 8px 18px;\n    border: 2px solid #ddd;\n    background: #fff;\n    border-radius: 30px;\n    font-size: 0.9rem;\n    font-weight: 600;\n    color: #333;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    letter-spacing: 0.5px;\n  }\n  .talla-btn:hover {\n    border-color: #999;\n  }\n  .talla-btn.active {\n    border-color: #000;\n    background: #000;\n    color: #fff;\n  }\n  \n  \/* Botón para desplegar la tabla *\/\n  .ver-medidas-btn {\n    display: inline-block;\n    padding: 10px 25px;\n    background: #f5f5f5;\n    border: 1px solid #ccc;\n    border-radius: 30px;\n    font-size: 0.9rem;\n    font-weight: 600;\n    color: #333;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    margin-top: 5px;\n    text-decoration: none;\n    background: #fff;\n  }\n  .ver-medidas-btn:hover {\n    background: #eaeaea;\n    border-color: #999;\n  }\n  .ver-medidas-btn .flecha {\n    display: inline-block;\n    margin-left: 8px;\n    transition: transform 0.3s ease;\n  }\n  .ver-medidas-btn.abierto .flecha {\n    transform: rotate(180deg);\n  }\n  \n  \/* Tabla de medidas *\/\n  .tabla-medidas-wrapper {\n    overflow: hidden;\n    max-height: 0;\n    transition: max-height 0.4s ease-out;\n    margin-top: 15px;\n  }\n  .tabla-medidas-wrapper.abierto {\n    max-height: 800px; \/* Ajusta según contenido *\/\n    transition: max-height 0.5s ease-in;\n  }\n  \n  .tabla-medidas {\n    width: 100%;\n    border-collapse: collapse;\n    font-size: 0.9rem;\n    background: #fff;\n    border: 1px solid #e0e0e0;\n    border-radius: 8px;\n    overflow: hidden;\n    box-shadow: 0 2px 8px rgba(0,0,0,0.05);\n  }\n  .tabla-medidas th {\n    background: #f8f8f8;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    padding: 12px 10px;\n    border-bottom: 2px solid #ddd;\n    text-align: center;\n  }\n  .tabla-medidas td {\n    padding: 10px 12px;\n    border-bottom: 1px solid #eee;\n    text-align: center;\n  }\n  .tabla-medidas tr:last-child td {\n    border-bottom: none;\n  }\n  .tabla-medidas .medida-talla {\n    font-weight: 700;\n    background: #fafafa;\n  }\n  .tabla-medidas .fila-destacada {\n    background: #f0f7ff;\n    font-weight: 600;\n  }\n  \/* Alternar colores de filas *\/\n  .tabla-medidas tbody tr:nth-child(even) {\n    background: #fcfcfc;\n  }\n  .tabla-medidas tbody tr:hover {\n    background: #f5f9ff;\n  }\n  \n  \/* Pie de tabla con nota *\/\n  .tabla-nota {\n    margin-top: 10px;\n    font-size: 0.8rem;\n    color: #777;\n    font-style: italic;\n  }\n  \n  \/* Responsive: en móviles, la tabla puede hacer scroll *\/\n  @media (max-width: 600px) {\n    .tabla-medidas-wrapper {\n      overflow-x: auto;\n    }\n    .tabla-medidas {\n      font-size: 0.8rem;\n      min-width: 400px;\n    }\n    .talla-btn {\n      padding: 6px 14px;\n      font-size: 0.8rem;\n    }\n    .ver-medidas-btn {\n      padding: 8px 18px;\n      font-size: 0.8rem;\n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"tallas-container\"\u003e\n  \u003c!-- Selector de tallas --\u003e\n  \u003cdiv class=\"tallas-botones\" id=\"tallasBotones\"\u003e\n    \u003c!-- Los botones se generan con JavaScript (ver abajo) --\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- Botón para mostrar\/ocultar tabla --\u003e\n  \u003cbutton class=\"ver-medidas-btn\" id=\"btnVerMedidas\"\u003e\n    Guía de tallas \u003cspan class=\"flecha\"\u003e▼\u003c\/span\u003e\n  \u003c\/button\u003e\n\n  \u003c!-- Contenedor de la tabla --\u003e\n  \u003cdiv class=\"tabla-medidas-wrapper\" id=\"tablaWrapper\"\u003e\n    \u003ctable class=\"tabla-medidas\" id=\"tablaMedidas\"\u003e\n      \u003cthead\u003e\n        \u003ctr\u003e\n          \u003cth\u003eTalla\u003c\/th\u003e\n          \u003cth\u003eZona\u003c\/th\u003e\n          \u003cth\u003eCM\u003c\/th\u003e\n          \u003cth\u003ePulgadas\u003c\/th\u003e\n        \u003c\/tr\u003e\n      \u003c\/thead\u003e\n      \u003ctbody id=\"tablaBody\"\u003e\n        \u003c!-- Las filas se generan con JavaScript --\u003e\n      \u003c\/tbody\u003e\n    \u003c\/table\u003e\n    \u003cdiv class=\"tabla-nota\"\u003e* Medidas aproximadas en cm y pulgadas. Pueden variar ligeramente según la prenda.\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  (function() {\n    \/\/ ============================================================\n    \/\/  DATOS DE MEDIDAS - EDITA AQUÍ\n    \/\/  Agrega o modifica las tallas y sus medidas.\n    \/\/  Cada objeto tiene: talla, pecho, largoDelantero, largoManga\n    \/\/  Si quieres añadir más filas (ej. cadera, hombro), agrégalas\n    \/\/  en el array 'zonas' y en cada medida.\n    \/\/ ============================================================\n    const tallas = ['XS', 'S', 'M', 'L', 'XL', 'XXL'];\n    \n    \/\/ Medidas en cm para cada talla (orden igual al array tallas)\n    \/\/ Ejemplo: [pecho, largoDelantero, largoManga]\n    const medidas = {\n      'XS': [54.0, 62.0, 70.0],\n      'S':  [56.5, 64.0, 72.0],\n      'M':  [59.3, 66.0, 74.5],\n      'L':  [62.0, 68.0, 77.0],\n      'XL': [65.0, 70.0, 79.5],\n      'XXL':[68.0, 72.0, 82.0]\n    };\n    \n    \/\/ Nombres de las zonas (para las filas de la tabla)\n    const zonas = ['Pecho', 'Largo delantero', 'Largo de manga'];\n    \n    \/\/ Función para convertir cm a pulgadas (1 cm = 0.393701 pulg)\n    function cmToPulgadas(cm) {\n      return (cm * 0.393701).toFixed(1);\n    }\n    \/\/ ============================================================\n\n    \/\/ Obtener elementos del DOM\n    const botonesContainer = document.getElementById('tallasBotones');\n    const tablaBody = document.getElementById('tablaBody');\n    const btnToggle = document.getElementById('btnVerMedidas');\n    const wrapper = document.getElementById('tablaWrapper');\n    \n    let tallaSeleccionada = 'M'; \/\/ talla por defecto\n    \n    \/\/ Generar botones de talla\n    tallas.forEach(talla =\u003e {\n      const btn = document.createElement('button');\n      btn.className = 'talla-btn' + (talla === tallaSeleccionada ? ' active' : '');\n      btn.textContent = talla;\n      btn.dataset.talla = talla;\n      btn.addEventListener('click', function() {\n        \/\/ Remover active de todos\n        document.querySelectorAll('.talla-btn').forEach(b =\u003e b.classList.remove('active'));\n        this.classList.add('active');\n        tallaSeleccionada = this.dataset.talla;\n        \/\/ Actualizar tabla para resaltar la fila de la talla seleccionada\n        resaltarFila(tallaSeleccionada);\n      });\n      botonesContainer.appendChild(btn);\n    });\n    \n    \/\/ Generar tabla de medidas (todas las tallas)\n    function generarTabla() {\n      \/\/ Limpiar cuerpo\n      tablaBody.innerHTML = '';\n      \n      \/\/ Recorrer cada talla\n      tallas.forEach(talla =\u003e {\n        const medidasTalla = medidas[talla];\n        if (!medidasTalla) return;\n        \n        \/\/ Por cada zona, crear una fila\n        zonas.forEach((zona, index) =\u003e {\n          const tr = document.createElement('tr');\n          if (index === 0) {\n            \/\/ Primera fila de la talla: mostrar nombre de talla\n            const tdTalla = document.createElement('td');\n            tdTalla.className = 'medida-talla';\n            tdTalla.rowSpan = zonas.length; \/\/ combinar celdas verticalmente\n            tdTalla.textContent = talla;\n            tr.appendChild(tdTalla);\n          }\n          const tdZona = document.createElement('td');\n          tdZona.textContent = zona;\n          tr.appendChild(tdZona);\n          \n          const valorCm = medidasTalla[index];\n          const tdCm = document.createElement('td');\n          tdCm.textContent = valorCm.toFixed(1);\n          tr.appendChild(tdCm);\n          \n          const tdPulg = document.createElement('td');\n          tdPulg.textContent = cmToPulgadas(valorCm);\n          tr.appendChild(tdPulg);\n          \n          \/\/ Añadir atributo data-talla para identificar la fila\n          tr.dataset.talla = talla;\n          tablaBody.appendChild(tr);\n        });\n      });\n      \n      \/\/ Resaltar la talla por defecto\n      resaltarFila(tallaSeleccionada);\n    }\n    \n    \/\/ Resaltar filas de la talla seleccionada\n    function resaltarFila(talla) {\n      const filas = tablaBody.querySelectorAll('tr');\n      filas.forEach(tr =\u003e {\n        tr.classList.remove('fila-destacada');\n        if (tr.dataset.talla === talla) {\n          tr.classList.add('fila-destacada');\n        }\n      });\n    }\n    \n    \/\/ Toggle mostrar\/ocultar tabla\n    btnToggle.addEventListener('click', function() {\n      wrapper.classList.toggle('abierto');\n      this.classList.toggle('abierto');\n      \/\/ Cambiar texto del botón (opcional)\n      if (wrapper.classList.contains('abierto')) {\n        this.innerHTML = 'Ocultar medidas \u003cspan class=\"flecha\"\u003e▲\u003c\/span\u003e';\n      } else {\n        this.innerHTML = 'Guía de tallas \u003cspan class=\"flecha\"\u003e▼\u003c\/span\u003e';\n      }\n    });\n    \n    \/\/ Inicializar\n    generarTabla();\n    \/\/ Por defecto, la tabla permanece oculta (solo se muestra al hacer clic)\n    \/\/ Si quieres que aparezca abierta por defecto, quita el comentario de la siguiente línea:\n    \/\/ wrapper.classList.add('abierto');\n    \n  })();\n\u003c\/script\u003e","brand":"Moda Xu","offers":[{"title":"Dorado \/ Talla única","offer_id":65075187056989,"sku":null,"price":12.9,"currency_code":"EUR","in_stock":true},{"title":"Clara \/ Talla única","offer_id":65075187089757,"sku":null,"price":12.9,"currency_code":"EUR","in_stock":true},{"title":"Bronce \/ Talla única","offer_id":65075187122525,"sku":null,"price":12.9,"currency_code":"EUR","in_stock":true},{"title":"Beige \/ Talla única","offer_id":65075187155293,"sku":null,"price":12.9,"currency_code":"EUR","in_stock":true},{"title":"Azul marino \/ Talla única","offer_id":65075187188061,"sku":null,"price":12.9,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1087\/5135\/6253\/files\/ChatGPT_Image_24_jun_2026_23_29_31.png?v=1782341029","url":"https:\/\/modaxu.com\/products\/vestido","provider":"Moda Xu","version":"1.0","type":"link"}