{"product_id":"papel-mural-oso-grafito","title":"Papel Mural Oso Grafito","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\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\u003ch2 class=\"text-text-100 mt-3 -mb-1 text-[1.375rem] font-bold\" dir=\"auto\"\u003ePapel Mural Oso Grafito: Transforma Cualquier Espacio en un Bosque Ilustrado\u003c\/h2\u003e\n\u003cp dir=\"auto\" class=\"font-claude-response-body break-words whitespace-normal\"\u003e¿Sabías qué una sola pared puede cambiar por completo el ambiente de una habitación? Descubre el Papel Mural Oso Grafito, un mural ilustrado en tonos grafito que convierte cualquier dormitorio, sala de estar o espacio infantil en una escena de bosque digna de admirar.\u003c\/p\u003e\n\u003ch3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\"\u003eUn Diseño Original con Alma de Ilustración Botánica\u003c\/h3\u003e\n\u003cp dir=\"auto\" class=\"font-claude-response-body break-words whitespace-normal\"\u003eEste papel mural presenta un oso caminando entre ciervos, ardillas, mapaches, garzas y liebres, rodeado de ramas, hojas y flores dibujadas a mano en un estilo grabado clásico. Cada detalle —desde las mariposas hasta las montañas de fondo— está pensado para crear una atmósfera cálida, natural y atemporal, ideal para quienes buscan algo distinto a los papeles murales genéricos del mercado.\u003c\/p\u003e\n\u003ch3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\"\u003eCalidad Premium para un Resultado Impecable\u003c\/h3\u003e\n\u003cp dir=\"auto\" class=\"font-claude-response-body break-words whitespace-normal\"\u003eEn GrafDeco imprimimos en papel sintético de alta calidad, logrando una nitidez impresionante en cada trazo y una durabilidad pensada para acompañar tu espacio por años. El acabado mate resalta los detalles en escala de grises, dándole a la habitación un aire elegante y sofisticado sin recargar la decoración.\u003c\/p\u003e\n\u003ch3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\"\u003e¿Por Qué Comprar tu Papel Mural en GrafDeco?\u003c\/h3\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\" dir=\"auto\"\u003e\n\u003cli class=\"font-claude-response-body whitespace-normal break-words pl-2\"\u003e\n\u003cstrong\u003eDiseño auténtico\u003c\/strong\u003e: una ilustración única que no encontrarás en cualquier tienda.\u003c\/li\u003e\n\u003cli class=\"font-claude-response-body whitespace-normal break-words pl-2\"\u003e\n\u003cstrong\u003eImpresión de alta resolución\u003c\/strong\u003e: cada línea y textura se ve nítida, incluso de cerca.\u003c\/li\u003e\n\u003cli class=\"font-claude-response-body whitespace-normal break-words pl-2\"\u003e\n\u003cstrong\u003eInstalación fácil\u003c\/strong\u003e: pensado para adaptarse a distintos tamaños de muro.\u003c\/li\u003e\n\u003cli class=\"font-claude-response-body whitespace-normal break-words pl-2\"\u003e\n\u003cstrong\u003eVersatilidad\u003c\/strong\u003e: perfecto para dormitorios infantiles, living, oficinas o espacios de lectura.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\"\u003eImagina tu Espacio Transformado\u003c\/h3\u003e\n\u003cp dir=\"auto\" class=\"font-claude-response-body break-words whitespace-normal\"\u003eImagina abrir la puerta y encontrarte con un bosque completo esperando en tu pared. El Papel Mural Oso Grafito no es solo decoración: es una experiencia visual que acompaña, inspira y da personalidad a cualquier ambiente.\u003c\/p\u003e\n\u003ch3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\"\u003eHaz de tu Pared el Punto que Todos Van a Mirar\u003c\/h3\u003e\n\u003cp dir=\"auto\" class=\"font-claude-response-body break-words whitespace-normal\"\u003eEn GrafDeco entendemos que decorar es una forma de contar quién eres. Por eso trabajamos con materiales premium y un servicio pensado para que la transformación de tu espacio sea rápida y sin complicaciones. Cotiza tu Papel Mural Oso Grafito hoy mismo y dale a tu hogar el toque que se merece.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"GrafDeco","offers":[{"title":"Default Title","offer_id":45702026428595,"sku":"PMI-8","price":17000.0,"currency_code":"CLP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0707\/6469\/1635\/files\/PapelMuralOsoGrafito.png?v=1784509720","url":"https:\/\/grafdeco.cl\/products\/papel-mural-oso-grafito","provider":"GrafDeco","version":"1.0","type":"link"}