{"product_id":"papel-mural-animalitos-de-la-selva","title":"Papel Mural Animalitos de la selva","description":"\u003cstyle\u003e\n    .tw-calculator {\n        font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n        width: 100%;\n        padding: 20px;\n        border: 1px solid #e8e8e8;\n        border-radius: 4px;\n        background-color: #fafafa;\n        color: #333;\n        margin-bottom: 20px;\n        box-sizing: border-box;\n    }\n    .tw-calculator h3 {\n        font-size: 14px;\n        text-transform: uppercase;\n        letter-spacing: 1px;\n        margin-top: 0;\n        margin-bottom: 20px;\n    }\n    .field-group {\n        margin-bottom: 15px;\n    }\n    .field-group label {\n        display: block;\n        font-size: 12px;\n        margin-bottom: 5px;\n        font-weight: bold;\n    }\n    .field-group select, .field-group input {\n        width: 100%;\n        padding: 10px;\n        border: 1px solid #ccc;\n        border-radius: 2px;\n        box-sizing: border-box;\n        font-size: 14px;\n        background-color: #fff;\n    }\n    .info-text {\n        font-size: 11px;\n        color: #666;\n        margin-bottom: 10px;\n    }\n    .area-display {\n        font-size: 13px;\n        color: #555;\n        margin-top: 15px;\n        display: flex;\n        justify-content: space-between;\n    }\n    .price-display {\n        margin-top: 15px;\n        padding-top: 15px;\n        border-top: 2px solid #e8e8e8;\n        font-size: 18px;\n        font-weight: bold;\n        display: flex;\n        justify-content: space-between;\n    }\n    .price-display span:last-child {\n        color: #000;\n    }\n\n    \/* OCULTAR ELEMENTOS NATIVOS DE SHOPIFY *\/\n    product-info quantity-input, \n    .product-form__quantity, \n    .quantity-selector,\n    .quantity__input,\n    variant-selects,\n    variant-radios,\n    .product-form__input--dropdown,\n    .product__tax,\n    .price, \n    .product__price,\n    .price--large {\n        display: none !important;\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"tw-calculator\"\u003e\n\u003ch3\u003eCalculadora de Pedido\u003c\/h3\u003e\n\u003cdiv class=\"field-group\"\u003e\n\u003clabel for=\"calc-material\"\u003eSelecciona el tipo de papel\u003c\/label\u003e\u003cselect id=\"calc-material\"\u003e\n\u003coption data-name=\"Papel Mural Rustic\" data-price=\"17000\" value=\"45476208312499\"\u003ePapel Mural Rustic ($17.000 m2)\u003c\/option\u003e\n\u003coption data-name=\"Papel Mural Lino\" data-price=\"17000\" value=\"45476208345267\"\u003ePapel Mural Lino ($17.000 m2)\u003c\/option\u003e\n\u003coption data-name=\"Papel Mural Canva\" data-price=\"17000\" value=\"45476208378035\"\u003ePapel Mural Canva ($17.000 m2)\u003c\/option\u003e\n\u003coption data-name=\"Adhesivo Para Muro\" data-price=\"19000\" value=\"45476208410803\"\u003eAdhesivo Para Muro ($19.000 m2)\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cp class=\"info-text\"\u003eSi vas a utilizar decimales, utiliza un punto (ej: 2.5)\u003c\/p\u003e\n\u003cdiv style=\"display: flex; gap: 15px;\"\u003e\n\u003cdiv style=\"flex: 1;\" class=\"field-group\"\u003e\n\u003clabel for=\"calc-width\"\u003eAncho en metros\u003c\/label\u003e \u003cinput placeholder=\"0.00\" min=\"0\" step=\"0.01\" id=\"calc-width\" type=\"number\"\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"flex: 1;\" class=\"field-group\"\u003e\n\u003clabel for=\"calc-height\"\u003eAltura en metros\u003c\/label\u003e \u003cinput placeholder=\"0.00\" min=\"0\" step=\"0.01\" id=\"calc-height\" type=\"number\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"area-display\"\u003e\n\u003cspan\u003eM² a cobrar (redondeado):\u003c\/span\u003e \u003cstrong\u003e\u003cspan id=\"rounded-area\"\u003e0\u003c\/span\u003e m²\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"price-display\"\u003e\n\u003cspan\u003ePrecio Total:\u003c\/span\u003e \u003cspan id=\"total-price\"\u003e$0\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function() {\n        const materialSelect = document.getElementById('calc-material');\n        const widthInput = document.getElementById('calc-width');\n        const heightInput = document.getElementById('calc-height');\n        const roundedAreaSpan = document.getElementById('rounded-area');\n        const totalPriceSpan = document.getElementById('total-price');\n\n        \/\/ Buscar el formulario EXACTO del carrito\n        const shopifyCartForm = document.querySelector('form[action*=\"\/cart\/add\"]'); \n\n        function calculatePrice() {\n            const selectedOption = materialSelect.options[materialSelect.selectedIndex];\n            const variantId = selectedOption.value; \n            const materialPrice = parseFloat(selectedOption.getAttribute('data-price')) || 17000;\n            const materialName = selectedOption.getAttribute('data-name');\n            \n            const width = parseFloat(widthInput.value) || 0;\n            const height = parseFloat(heightInput.value) || 0;\n\n            const exactArea = width * height;\n            const roundedArea = Math.ceil(exactArea); \n            const total = roundedArea * materialPrice;\n\n            roundedAreaSpan.textContent = roundedArea;\n            const formattedPrice = new Intl.NumberFormat('es-CL', {\n                style: 'currency', currency: 'CLP', minimumFractionDigits: 0\n            }).format(total);\n            totalPriceSpan.textContent = formattedPrice;\n\n            \/\/ INYECCIÓN BLINDADA AL CARRITO DE SHOPIFY\n            if (shopifyCartForm) {\n                \/\/ 1. INYECTAR CANTIDAD (Corrección principal)\n                \/\/ Buscamos TODOS los inputs de cantidad en toda la página, no solo en el formulario\n                let qtyInputs = document.querySelectorAll('input[name=\"quantity\"]');\n                \n                if (qtyInputs.length \u003e 0 \u0026\u0026 roundedArea \u003e 0) {\n                    qtyInputs.forEach(function(input) {\n                        input.value = roundedArea;\n                        \/\/ Forzamos a Shopify a \"darse cuenta\" de que cambiamos el valor\n                        input.dispatchEvent(new Event('change', { bubbles: true }));\n                    });\n                } else if (roundedArea \u003e 0) {\n                    \/\/ Fallback extremo: Si no hay inputs, creamos uno oculto a la fuerza\n                    let newQtyInput = shopifyCartForm.querySelector('input[name=\"quantity\"][type=\"hidden\"]');\n                    if (!newQtyInput) {\n                        newQtyInput = document.createElement('input');\n                        newQtyInput.type = 'hidden';\n                        newQtyInput.name = 'quantity';\n                        shopifyCartForm.appendChild(newQtyInput);\n                    }\n                    newQtyInput.value = roundedArea;\n                }\n\n                \/\/ 2. INYECTAR ID DE VARIANTE\n                let formVariantInput = shopifyCartForm.querySelector('[name=\"id\"]');\n                if (formVariantInput) {\n                    formVariantInput.value = variantId;\n                    formVariantInput.dispatchEvent(new Event('change', { bubbles: true }));\n                } else {\n                    let newVariantInput = shopifyCartForm.querySelector('input[name=\"id\"][type=\"hidden\"]');\n                    if (!newVariantInput) {\n                        newVariantInput = document.createElement('input');\n                        newVariantInput.type = 'hidden';\n                        newVariantInput.name = 'id';\n                        shopifyCartForm.appendChild(newVariantInput);\n                    }\n                    newVariantInput.value = variantId;\n                }\n\n                \/\/ 3. INYECTAR NOTAS EXACTAS\n                if (width \u003e 0 \u0026\u0026 height \u003e 0) {\n                    updateHiddenProperty('Ancho exacto (m)', width);\n                    updateHiddenProperty('Alto exacto (m)', height);\n                    updateHiddenProperty('Material seleccionado', materialName); \n                }\n            }\n        }\n\n        function updateHiddenProperty(name, value) {\n            const inputName = `properties[${name}]`;\n            let hiddenInput = shopifyCartForm.querySelector(`input[name=\"${inputName}\"]`);\n            if (!hiddenInput) {\n                hiddenInput = document.createElement('input');\n                hiddenInput.type = 'hidden';\n                hiddenInput.name = inputName;\n                shopifyCartForm.appendChild(hiddenInput);\n            }\n            hiddenInput.value = value;\n        }\n\n        materialSelect.addEventListener('change', calculatePrice);\n        widthInput.addEventListener('input', calculatePrice);\n        heightInput.addEventListener('input', calculatePrice);\n        \n        \/\/ Ejecutar con un pequeñísimo retraso para darle tiempo al tema de Shopify a cargar todo\n        setTimeout(calculatePrice, 500);\n    });\n\u003c\/script\u003e \u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\"\u003e\u003cstrong\u003ePapel Mural Animalitos de la Selva\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\"\u003e¿Sabías qué la decoración del dormitorio infantil puede convertirse en el escenario de las mejores historias antes de dormir? Imagina esa pared vacía transformada en una escena tierna y llena de vida: una jirafa pedaleando su bicicleta, un tren cargado de animalitos —león, koala, mono, zorro, cebra y panda— y globos aerostáticos flotando entre nubes suaves. Así es \u003cem\u003eAnimalitos de la Selva\u003c\/em\u003e, uno de nuestros papeles murales más queridos para espacios infantiles.\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\"\u003eIdeal para dormitorio infantil, sala de juegos o rincón de lectura, este diseño en tonos pastel aporta calidez y ternura sin saturar el ambiente, gracias a su fondo celeste-menta suave que combina fácil con cualquier mobiliario.\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\"\u003eDisponible en los siguientes modelos de papel mural:\u003c\/p\u003e\n\u003cul dir=\"auto\" class=\"[li_\u0026amp;]:mb-0 [li_\u0026amp;]:mt-1 [li_\u0026amp;]:gap-1 [\u0026amp;:not(:last-child)_ul]:pb-1 [\u0026amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\"\u003e\n\u003cli class=\"font-claude-response-body whitespace-normal break-words pl-2\"\u003e\n\u003cstrong\u003eRustic, Lino y Canvas:\u003c\/strong\u003e papeles para muro premium, requieren encolado (instalación profesional recomendada, resultado duradero y con textura).\u003c\/li\u003e\n\u003cli class=\"font-claude-response-body whitespace-normal break-words pl-2\"\u003e\n\u003cstrong\u003eAdhesivo:\u003c\/strong\u003e autoadhesivo, lavable y sin necesidad de cola — la opción más fácil y rápida si buscas un papel mural encolado sin las complicaciones del encolado tradicional.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\"\u003eCada modelo está pensado para que la transformación de tu espacio sea sin riesgo y con un acabado que se ve increíble desde el primer día.\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\"\u003e📦 \u003cstrong\u003eDespacho gratis sobre los $50.000.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\"\u003eDescubre \u003cem\u003eAnimalitos de la Selva\u003c\/em\u003e y dale a tu peque un rincón tuyo, único y lleno de aventuras.\u003c\/p\u003e","brand":"GrafDeco","offers":[{"title":"Default Title","offer_id":45703863664819,"sku":"PMI-9","price":17000.0,"currency_code":"CLP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0707\/6469\/1635\/files\/Papelmuralanimalitosdelaselva.jpg?v=1784557165","url":"https:\/\/grafdeco.cl\/products\/papel-mural-animalitos-de-la-selva","provider":"GrafDeco","version":"1.0","type":"link"}