{"product_id":"papel-mural-bosque-invernal","title":"Papel Mural bosque invernal","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 value=\"45476208312499\" data-price=\"17000\" data-name=\"Papel Mural Rustic\"\u003ePapel Mural Rustic ($17.000 m2)\u003c\/option\u003e\n\u003coption value=\"45476208345267\" data-price=\"17000\" data-name=\"Papel Mural Lino\"\u003ePapel Mural Lino ($17.000 m2)\u003c\/option\u003e\n\u003coption value=\"45476208378035\" data-price=\"17000\" data-name=\"Papel Mural Canva\"\u003ePapel Mural Canva ($17.000 m2)\u003c\/option\u003e\n\u003coption value=\"45476208410803\" data-price=\"19000\" data-name=\"Adhesivo Para Muro\"\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 class=\"field-group\" style=\"flex: 1;\"\u003e\n\u003clabel for=\"calc-width\"\u003eAncho en metros\u003c\/label\u003e \u003cinput type=\"number\" id=\"calc-width\" step=\"0.01\" min=\"0\" placeholder=\"0.00\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"field-group\" style=\"flex: 1;\"\u003e\n\u003clabel for=\"calc-height\"\u003eAltura en metros\u003c\/label\u003e \u003cinput type=\"number\" id=\"calc-height\" step=\"0.01\" min=\"0\" placeholder=\"0.00\"\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\u003ch1\u003e\n\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 Papel Mural Bosque Invernal – Animalitos de la Selva Nórdica.\u003c\/h1\u003e\n\u003cp dir=\"ltr\" class=\"font-claude-response-body break-words whitespace-normal\"\u003e¿Sabías qué un dormitorio infantil puede convertirse en un refugio mágico solo con la pared correcta? Descubre el Papel Mural Bosque Invernal, donde un ciervo, un zorro, una ardilla, un erizo y un castor viven entre árboles nevados en tonos gris y celeste suave. Es la escena perfecta para dormitorios, salas de juegos o rincones infantiles que buscan ternura sin perder elegancia.\u003c\/p\u003e\n\u003cp dir=\"ltr\" class=\"font-claude-response-body break-words whitespace-normal\"\u003eEste papel mural forma parte de nuestra colección de \u003cstrong\u003ePapel Mural Animalitos de la Selva\u003c\/strong\u003e, pensada para transformar espacios con diseño original y una calidad que se nota al tacto y a la vista.\u003c\/p\u003e\n\u003cp dir=\"ltr\" class=\"font-claude-response-body break-words whitespace-normal\"\u003e\u003cstrong\u003eElige el material según lo que necesites:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul 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 print:block print:space-y-1\" dir=\"ltr\"\u003e\n\u003cli class=\"font-claude-response-body whitespace-normal break-words pl-2\"\u003e\n\u003cstrong\u003eRustic, Lino o Canvas\u003c\/strong\u003e — papeles para muro encolados, con texturas premium que dan profundidad y un acabado auténtico. Instalación con cola especial para papel mural (fácil con un instalador o guía DIY).\u003c\/li\u003e\n\u003cli class=\"font-claude-response-body whitespace-normal break-words pl-2\"\u003e\n\u003cstrong\u003eAdhesivo PVC laminado\u003c\/strong\u003e — el adhesivo para muros autoadhesivo, sin cola, sin complicaciones. Superficie lavable, ideal si buscas una instalación rápida y sin riesgo, perfecta para arriendos o cambios de ambiente frecuentes.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp dir=\"ltr\" class=\"font-claude-response-body break-words whitespace-normal\"\u003eSea cual sea tu elección, el resultado es el mismo: una pared con identidad propia, lista para acompañar los primeros años de tu hijo o darle un toque cálido a cualquier ambiente.\u003c\/p\u003e\n\u003cp dir=\"ltr\" class=\"font-claude-response-body break-words whitespace-normal\"\u003e📦 Despacho gratis sobre los $50.000.-\u003c\/p\u003e\n\u003cp dir=\"ltr\" class=\"font-claude-response-body break-words whitespace-normal\"\u003e\u003cstrong\u003eAprovecha esta oportunidad y haz tuyo este bosque invernal. Escríbenos por WhatsApp +56 964932390 o síguenos en Instagram @grafdeco.cl para cotizar tu medida exacta.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"GrafDeco","offers":[{"title":"Default Title","offer_id":45707641553075,"sku":"PMI-10","price":17000.0,"currency_code":"CLP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0707\/6469\/1635\/files\/Papelmuralbosqueinvernal.png?v=1784688451","url":"https:\/\/grafdeco.cl\/products\/papel-mural-bosque-invernal","provider":"GrafDeco","version":"1.0","type":"link"}