{"title":"ACCESSORI CELLULARLINE","description":"","products":[{"product_id":"custodia-airtag-soft-shell-cellularline","title":"CUSTODIA AIRTAG SOFT SHELL - CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🔧 Specifiche prodotto: Soft Shell per AirTag \/ Tracy Tag\nconst specs = [\n  {\n    titolo: \"Modello\",\n    descrizione: \"Soft Shell — Custodia in silicone morbido e durevole, progettata per proteggere AirTag e Tracy Tag da graffi e urti.\"\n  },\n  {\n    titolo: \"Materiale\",\n    descrizione: \"Silicone morbido e resistente · Protezione efficace e flessibile · Leggera e comoda da usare ogni giorno.\"\n  },\n  {\n    titolo: \"Compatibilità\",\n    descrizione: \"Compatibile con Apple AirTag e Tracy Tag.\"\n  },\n  {\n    titolo: \"Design\",\n    descrizione: \"Semplice e colorato · Si adatta a ogni stile · Minimal e pratico.\"\n  },\n  {\n    titolo: \"Anello integrato\",\n    descrizione: \"Ring incluso per aggancio rapido e sicuro a chiavi, zaini, borse o altri oggetti personali.\"\n  },\n  {\n    titolo: \"Facilità d’uso\",\n    descrizione: \"Custodia facile da applicare e da rimuovere · Perfetta per uso quotidiano senza complicazioni.\"\n  },\n  {\n    titolo: \"Colori disponibili\",\n    descrizione: \"Nero, Blu, Rosa, Verde, Rosso · Design versatile e accattivante.\"\n  },\n  {\n    titolo: \"Contenuto confezione\",\n    descrizione: \"Custodia Soft Shell per AirTag\/Tracy Tag · Manuale d’uso multilingua.\"\n  },\n  {\n    titolo: \"Sintesi\",\n    descrizione: \"La Soft Shell unisce protezione e praticità, garantendo sicurezza per AirTag e Tracy Tag senza rinunciare allo stile. Grazie al ring integrato e al design colorato, è ideale per chi vuole tenere i propri oggetti al sicuro in modo semplice e comodo.\"\n  }\n];\n\u003c\/script\u003e\n\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"NERO","offer_id":51893421769032,"sku":"SKU-51893421769032","price":9.95,"currency_code":"EUR","in_stock":true},{"title":"Blu","offer_id":51893421801800,"sku":"SKU-51893421801800","price":9.95,"currency_code":"EUR","in_stock":true},{"title":"FUCSIA","offer_id":51893421834568,"sku":"SKU-51893421834568","price":9.95,"currency_code":"EUR","in_stock":true},{"title":"Bianco","offer_id":51893421867336,"sku":"SKU-51893421867336","price":9.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/Progetto_senza_titolo_-_2025-10-30T190705.995.png?v=1761847635"},{"product_id":"vetro-protettivo-impact-glass-apple-watch-40mm-cellularline","title":"VETRO PROTETTIVO IMPACT GLASS APPLE WATCH 40MM - CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🔧 Specifiche prodotto: Impact Glass Apple Watch\nconst specs = [\n  {\n    titolo: \"Modello\",\n    descrizione: \"Impact Glass — Vetro ibrido progettato per proteggere lo schermo di Apple Watch da graffi e urti.\"\n  },\n  {\n    titolo: \"Design\",\n    descrizione: \"Curvo e ultra-sottile · Copertura totale da bordo a bordo per protezione completa del display.\"\n  },\n  {\n    titolo: \"Protezione\",\n    descrizione: \"Massima resistenza a graffi, urti e cadute leggere · Mantiene l’integrità dello schermo.\"\n  },\n  {\n    titolo: \"Sensibilità al tatto\",\n    descrizione: \"Ultra-aderente e trasparente · Garantisce la massima conduttività e reattività al tocco.\"\n  },\n  {\n    titolo: \"Compatibilità\",\n    descrizione: \"Compatibile con tutti i modelli di Apple Watch (verificare la misura specifica del quadrante).\"\n  },\n  {\n    titolo: \"Colori disponibili\",\n    descrizione: \"Trasparente cristallo · Design elegante e invisibile.\"\n  },\n  {\n    titolo: \"Contenuto confezione\",\n    descrizione: \"Vetro Impact Glass · Kit di pulizia e applicazione · Manuale d’uso multilingua.\"\n  },\n  {\n    titolo: \"Sintesi\",\n    descrizione: \"Il Impact Glass offre protezione completa e massima sensibilità al tatto per il tuo Apple Watch. Il design curvo e ultra-aderente combina sicurezza e comfort d’uso senza alterare l’esperienza del touchscreen.\"\n  }\n];\n\u003c\/script\u003e\n\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"Default Title","offer_id":51893452538184,"sku":null,"price":16.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/Progetto_senza_titolo_-_2025-10-30T192208.843.png?v=1761848626"},{"product_id":"cinturino-in-acciaio-per-apple-watch-cellularline","title":"CINTURINO IN ACCIAIO PER APPLE WATCH - CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🔧 Specifiche prodotto: STEEL BAND Apple Watch\nconst specs = [\n  {\n    titolo: \"Modello\",\n    descrizione: \"STEEL BAND — Cinturino in acciaio inossidabile con trama milanese, elegante e resistente.\"\n  },\n  {\n    titolo: \"Materiale\",\n    descrizione: \"Acciaio inossidabile · Trama milanese · Privo di Nichel, adatto a tutti i tipi di pelle.\"\n  },\n  {\n    titolo: \"Chiusura\",\n    descrizione: \"Magnetica · Garantisce perfetta aderenza e stabilità al polso.\"\n  },\n  {\n    titolo: \"Aggancio Apple Watch\",\n    descrizione: \"Sicuro sistema di aggancio magnetico · Presa salda e affidabile sul quadrante dell’orologio.\"\n  },\n  {\n    titolo: \"Taglia\",\n    descrizione: \"Taglia unica · Facilmente regolabile in base alla dimensione del polso.\"\n  },\n  {\n    titolo: \"Design\",\n    descrizione: \"Elegante, minimal e professionale · Adatto a ogni occasione.\"\n  },\n  {\n    titolo: \"Colori disponibili\",\n    descrizione: \"Argento, Nero, Oro rosa · Finitura lucida e raffinata.\"\n  },\n  {\n    titolo: \"Contenuto confezione\",\n    descrizione: \"Cinturino STEEL BAND · Manuale d’uso multilingua.\"\n  },\n  {\n    titolo: \"Sintesi\",\n    descrizione: \"Il STEEL BAND unisce stile, sicurezza e praticità per il tuo Apple Watch. Con il design magnetico e regolabile, è ideale per chi cerca un cinturino elegante e confortevole, senza rinunciare alla comodità e alla qualità.\"\n  }\n];\n\u003c\/script\u003e\n\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"NERO \/ 38\/40\/41\/42","offer_id":51893461549384,"sku":"SKU-51893461549384","price":29.95,"currency_code":"EUR","in_stock":true},{"title":"NERO \/ 42\/44\/45\/49","offer_id":51893461582152,"sku":"SKU-51893461582152","price":29.95,"currency_code":"EUR","in_stock":true},{"title":"BEIGE \/ 38\/40\/41\/42","offer_id":51893461614920,"sku":"SKU-51893461614920","price":29.95,"currency_code":"EUR","in_stock":true},{"title":"BEIGE \/ 42\/44\/45\/49","offer_id":51893461647688,"sku":"SKU-51893461647688","price":29.95,"currency_code":"EUR","in_stock":true},{"title":"ARGENTO \/ 38\/40\/41\/42","offer_id":51893461680456,"sku":"SKU-51893461680456","price":29.95,"currency_code":"EUR","in_stock":true},{"title":"ARGENTO \/ 42\/44\/45\/49","offer_id":51893461713224,"sku":"SKU-51893461713224","price":29.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/Progettosenzatitolo-2025-10-30T192613.326.png?v=1761848784"},{"product_id":"cinturino-in-nylon-per-apple-watch-serie-10-11-cellularline","title":"CINTURINO IN NYLON PER APPLE WATCH (SERIE 10\/11) - CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🔧 Specifiche prodotto: SOFT BAND Apple Watch\nconst specs = [\n  {\n    titolo: \"Modello\",\n    descrizione: \"SOFT BAND — Cinturino resistente e leggero in nylon, progettato per comfort e traspirabilità quotidiana.\"\n  },\n  {\n    titolo: \"Materiale\",\n    descrizione: \"Nylon morbido e liscio · Piacevole al tatto · Traspirante e confortevole per uso prolungato.\"\n  },\n  {\n    titolo: \"Chiusura\",\n    descrizione: \"Magnetica · Fissaggio stabile e sicuro alla cassa dell’Apple Watch.\"\n  },\n  {\n    titolo: \"Taglie disponibili\",\n    descrizione: \"38\/40\/41\/42 MM (Serie 10)\"\n  },\n  {\n    titolo: \"Regolabilità\",\n    descrizione: \"Facile da indossare · Completamente regolabile per adattarsi a qualsiasi dimensione del polso.\"\n  },\n  {\n    titolo: \"Design\",\n    descrizione: \"Minimalista ed elegante · Perfetto per uso quotidiano · Leggero e pratico.\"\n  },\n  {\n    titolo: \"Colori disponibili\",\n    descrizione: \"Nero, Blu, Rosso, Verde · Stile versatile e moderno.\"\n  },\n  {\n    titolo: \"Contenuto confezione\",\n    descrizione: \"Cinturino SOFT BAND · Manuale d’uso multilingua.\"\n  },\n  {\n    titolo: \"Sintesi\",\n    descrizione: \"Il SOFT BAND combina comfort, praticità e stile per il tuo Apple Watch. Perfetto per chi desidera un cinturino leggero, traspirante e completamente regolabile, senza rinunciare alla sicurezza e all’eleganza.\"\n  }\n];\n\u003c\/script\u003e\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"FUCSIA \/ 38\/40\/41\/42","offer_id":51893484126536,"sku":"SKU-51893484126536","price":24.95,"currency_code":"EUR","in_stock":true},{"title":"NERO \/ 38\/40\/41\/42","offer_id":51893484159304,"sku":"SKU-51893484159304","price":24.95,"currency_code":"EUR","in_stock":true},{"title":"Blu \/ 38\/40\/41\/42","offer_id":51893484192072,"sku":"SKU-51893484192072","price":24.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/42444549_2.png?v=1761849258"},{"product_id":"anello-magnetivo-per-ricarica-wireless-magsafe-cellularline","title":"ANELLO MAGNETICO PER RICARICA WIRELESS MAGSAFE - CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🔧 Specifiche prodotto: MAG ADAPTER\nconst specs = [\n  {\n    titolo: \"Modello\",\n    descrizione: \"MAG ADAPTER — Anello magnetico che rende compatibili i telefoni con ricarica wireless con gli accessori MagSafe.\"\n  },\n  {\n    titolo: \"Funzionalità principale\",\n    descrizione: \"Permette l’aggancio a qualsiasi accessorio MagSafe e consente la ricarica wireless senza interferenze.\"\n  },\n  {\n    titolo: \"Compatibilità\",\n    descrizione: \"Verificabile tramite QR code incluso · PDF con lista dispositivi compatibili e istruzioni per il corretto posizionamento.\"\n  },\n  {\n    titolo: \"Installazione\",\n    descrizione: \"Adesivo 3M incluso · Posizionamento semplice e sicuro sulla custodia dello smartphone.\"\n  },\n  {\n    titolo: \"Design\",\n    descrizione: \"Ultra-sottile e discreto · Mantiene la funzionalità originale del telefono senza ingombri.\"\n  },\n  {\n    titolo: \"Accessori inclusi\",\n    descrizione: \"Anello MAG ADAPTER · Dima di posizionamento · Manuale d’uso multilingua.\"\n  },\n  {\n    titolo: \"Colori disponibili\",\n    descrizione: \"Nero, Argento · Design minimal e compatibile con qualsiasi custodia.\"\n  },\n  {\n    titolo: \"Sintesi\",\n    descrizione: \"Il MAG ADAPTER rende qualsiasi smartphone compatibile con gli accessori MagSafe. L’adesivo 3M e la dima di posizionamento garantiscono un’installazione semplice, sicura e precisa.\"\n  }\n];\n\u003c\/script\u003e\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"Default Title","offer_id":51893515649352,"sku":"SKU-51893515649352","price":12.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/42444549_4.png?v=1761849508"},{"product_id":"kboardy-tastiera-bluethoot-ultra-sottile-e-pieghevole-cellularline","title":"KBOARDY TASTIERA BLUETHOOT ULTRA SOTTILE E PIEGHEVOLE CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🔧 Specifiche del prodotto (modifica liberamente)\nconst specs = [\n  { titolo: \"Compatibilità\", descrizione: \"Dispositivi iOS, Android, Windows, macOS, iPadOS · Connessione Bluetooth universale 5.1.\" },\n  { titolo: \"Design\", descrizione: \"Tastiera pieghevole ultra-sottile in alluminio · Layout italiano QWERTY completo · Finitura elegante e compatta per uso mobile.\" },\n  { titolo: \"Connettività\", descrizione: \"Bluetooth 5.1 · Associazione automatica · Distanza operativa fino a 10 metri · Supporta pairing multiplo con memorizzazione dispositivi.\" },\n  { titolo: \"Alimentazione\", descrizione: \"Batteria ricaricabile integrata · Autonomia fino a 60 ore di utilizzo continuo · Ricarica tramite cavo USB-C incluso.\" },\n  { titolo: \"Funzionalità\", descrizione: \"Tasti funzione multimediali dedicati · Stand integrato per smartphone\/tablet · Modalità standby automatica per risparmio energetico.\" },\n  { titolo: \"Materiali\", descrizione: \"Struttura in lega di alluminio con inserti in ABS · Chiusura magnetica · Finitura soft-touch antiscivolo.\" },\n  { titolo: \"Dimensioni \/ Peso\", descrizione: \"Aperta: ≈ 29 × 9,7 × 0,6 cm · Chiusa: ≈ 14,5 × 9,7 × 1,2 cm · Peso ≈ 180 g.\" },\n  { titolo: \"Colori disponibili\", descrizione: \"Grigio Space, Nero Opaco (a seconda mercato).\" },\n  { titolo: \"Contenuto confezione\", descrizione: \"Tastiera pieghevole Cellularline Kboardy · Cavo USB-C per ricarica · Manuale d’uso multilingue.\" },\n  { titolo: \"Sintesi\", descrizione: \"Cellularline Kboardy è una tastiera Bluetooth pieghevole e ultra-sottile progettata per portabilità e produttività: leggera, elegante e compatibile con tutti i dispositivi mobili.\" }\n];\n\u003c\/script\u003e\n\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"Default Title","offer_id":51893523185992,"sku":"SKU-51893523185992","price":24.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/42444549_8.png?v=1761849748"},{"product_id":"base-di-ricarica-wireless-per-airpods-pro-cellularline","title":"BASE DI RICARICA WIRELESS PER AIRPODS PRO CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🔧 Specifiche del prodotto (modifica liberamente)\nconst specs = [\n  { titolo: \"Compatibilità\", descrizione: \"Progettata per AirPods Pro, AirPods (2ª \/ 3ª gen) e tutti i dispositivi compatibili con standard Qi.\" },\n  { titolo: \"Potenza di ricarica\", descrizione: \"Uscita fino a 15 W (Max) · Ricarica automatica 5 W per auricolari · Supporta adattatori 18 W o superiori.\" },\n  { titolo: \"Connessione\", descrizione: \"Ingresso USB-C · Cavo incluso nella confezione · Funziona con adattatori da muro Quick Charge.\" },\n  { titolo: \"Tecnologia\", descrizione: \"Standard Qi Certified · Rilevamento automatico · Protezione da sovraccarico, cortocircuito e surriscaldamento.\" },\n  { titolo: \"Design\", descrizione: \"Forma circolare compatta · Finitura antiscivolo in silicone · LED di stato per ricarica · Ideale anche per scrivania o comodino.\" },\n  { titolo: \"Materiali\", descrizione: \"Superficie soft-touch con base in alluminio leggero · Colorazione bianca \/ nera a seconda versione.\" },\n  { titolo: \"Dimensioni \/ Peso\", descrizione: \"≈ 9 cm diametro · Spessore ~ 1 cm · Peso ~ 70 g.\" },\n  { titolo: \"Contenuto confezione\", descrizione: \"Base di ricarica wireless Cellularline · Cavo USB-C · Manuale utente.\" },\n  { titolo: \"Compatibilità accessori\", descrizione: \"Ricarica senza rimuovere la custodia degli AirPods Pro (spessore \u003c 3 mm) · Non compatibile con cover metalliche o magnetiche.\" },\n  { titolo: \"Sintesi\", descrizione: \"La base di ricarica wireless Cellularline per AirPods Pro è una soluzione elegante e sicura per ricaricare i tuoi auricolari senza cavi, con tecnologia Qi e protezione intelligente integrata.\" }\n];\n\u003c\/script\u003e\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"Default Title","offer_id":51893543043400,"sku":"SKU-51893543043400","price":34.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/42444549_12.png?v=1761850051"},{"product_id":"rider-shield-universal-supporto-smartphone-impermeabile-da-manubrio-cellularline","title":"RIDER SHIELD UNIVERSAL SUPPORTO SMARTPHONE IMPERMEABILE DA MANUBRIO - CELLULARLINE","description":"","brand":"Centroriparo srl","offers":[{"title":"NERO","offer_id":51921070162248,"sku":null,"price":34.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/IMMAGINI_X_SITO_26.png?v=1762190143"},{"product_id":"home-office-task-cuffie-con-microfono-rimovibile-cellularline","title":"HOME\u0026OFFICE TASK CUFFIE CON MICROFONO RIMOVIBILE - CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🎧 Specifiche del prodotto – Cellularline TASK\nconst specs = [\n  { titolo: \"Modello\", descrizione: \"Cellularline TASK – cuffie Bluetooth con microfono rimovibile\" },\n  { titolo: \"Tipologia\", descrizione: \"Cuffie stereo Dual Mode (Bluetooth e filo)\" },\n  { titolo: \"Tecnologia\", descrizione: \"Bluetooth 5.0 con Multipoint Connection\" },\n  { titolo: \"Connessione alternativa\", descrizione: \"Cavo AUX da 120 cm incluso\" },\n  { titolo: \"Microfono\", descrizione: \"Rimovibile e regolabile, ideale per videochiamate\" },\n  { titolo: \"Autonomia in ascolto\", descrizione: \"Fino a 18 ore\" },\n  { titolo: \"Autonomia in chiamata\", descrizione: \"Fino a 18 ore\" },\n  { titolo: \"Limitazione volume\", descrizione: \"85 dB – adatte anche ai più giovani\" },\n  { titolo: \"Ricarica\", descrizione: \"Tramite porta USB-C\" },\n  { titolo: \"Design\", descrizione: \"Moderno, con padiglioni around-the-ear per massimo comfort\" },\n  { titolo: \"Compatibilità\", descrizione: \"Smartphone, tablet e PC (Apple, Samsung, Huawei, Xiaomi, OPPO, Motorola, Realme, Honor, TCL, Alcatel)\" },\n  { titolo: \"Colore\", descrizione: \"Nero\" },\n  { titolo: \"Ergonomia\", descrizione: \"On-Ear\" },\n  { titolo: \"Caratteristiche speciali\", descrizione: \"Multipoint Connection, Microfono rimovibile, Dual Mode (Bluetooth + Cavo)\" },\n  { titolo: \"Tipologia Prodotto\", descrizione: \"Cuffie On-Ear Wireless\" },\n  { titolo: \"Sintesi\", descrizione: \"Cuffie versatili con microfono rimovibile, uso wireless o con filo, fino a 18 ore di autonomia, volume limitato a 85 dB e comfort elevato per studio, lavoro o intrattenimento.\" }\n];\n\u003c\/script\u003e\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"NERO","offer_id":51932492595528,"sku":"SKU-51932492595528","price":39.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/IMMAGINI_X_SITO_-_2025-11-04T192047.175.png?v=1762280500"},{"product_id":"bounce-airpods-3-pro-custodia-cellularline","title":"BOUNCE AIRPODS 3 PRO CUSTODIA CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🔧 Specifiche del prodotto Bounce — Custodia AirPods in silicone\nconst specs = [\n  { titolo: \"Modello\", descrizione: \"Bounce — Custodia protettiva per la custodia di ricarica degli AirPods.\" },\n  { titolo: \"Materiale\", descrizione: \"Silicone morbido soft-touch · Protegge da graffi, sporco e urti quotidiani.\" },\n  { titolo: \"Compatibilità\", descrizione: \"AirPods · Compatibile con ricarica wireless senza rimuovere la custodia.\" },\n  { titolo: \"Caratteristiche principali\", descrizione: \"Pratico gancio integrato per fissare la custodia alla borsa o ai passanti dei pantaloni · Facile accesso al connettore di ricarica.\" },\n  { titolo: \"Protezione\", descrizione: \"Garantisce protezione completa senza alterare il design originale degli AirPods.\" },\n  { titolo: \"Tipologia prodotto\", descrizione: \"Custodia AirPods.\" },\n  { titolo: \"Colori disponibili\", descrizione: \"Fucsia, Nero, Azzurro.\" },\n  { titolo: \"Contenuto confezione\", descrizione: \"Custodia Bounce · Gancio.\" },\n  { titolo: \"Sintesi\", descrizione: \"Bounce è la custodia ideale per chi vuole protezione, praticità e stile per i propri AirPods, mantenendo la possibilità di ricarica wireless senza rimuovere la cover.\" }\n];\n\u003c\/script\u003e\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"FUCSIA","offer_id":51953654956360,"sku":"SKU-51953654956360","price":9.99,"currency_code":"EUR","in_stock":true},{"title":"NERO","offer_id":51953654989128,"sku":"SKU-51953654989128","price":9.99,"currency_code":"EUR","in_stock":true},{"title":"AZZURRO","offer_id":51953655021896,"sku":"SKU-51953655021896","price":9.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/IMMAGINIXSITO-2025-11-07T164642.286.png?v=1762530493"},{"product_id":"asta-selfie-treppiede-cellularline","title":"ASTA SELFIE TREPPIEDE CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🤳 Specifiche del prodotto – Asta Selfie Treppiede Cellularline SPARKLE\n\nconst specs = [\n  { titolo: \"Modello\", descrizione: \"SPARKLE – Asta selfie ultracompatta con funzione treppiede e luce LED integrata.\" },\n  { titolo: \"Compatibilità\", descrizione: \"Compatibile con tutti gli smartphone.\" },\n  { titolo: \"Connessione\", descrizione: \"Bluetooth® per una connessione stabile fino a 10 metri.\" },\n  { titolo: \"Telecomando\", descrizione: \"Telecomando Bluetooth® estraibile per scattare foto e video a distanza.\" },\n  { titolo: \"Distanza operativa\", descrizione: \"Portata massima: 10 metri.\" },\n  { titolo: \"Illuminazione\", descrizione: \"Luce LED con intensità regolabile per selfie perfetti anche al buio.\" },\n  { titolo: \"Struttura\", descrizione: \"Funzione doppia: selfie stick + treppiede integrato per scatti stabili.\" },\n  { titolo: \"Contenuto confezione\", descrizione: \"Selfie stick, telecomando Bluetooth®, istruzioni.\" },\n  { titolo: \"Colore\", descrizione: \"Nero.\" },\n  { titolo: \"Certificazioni\", descrizione: \"Bluetooth.\" },\n  { titolo: \"Caratteristiche speciali\", descrizione: \"Telecomando estraibile, luce LED regolabile, treppiede integrato.\" },\n  { titolo: \"Sintesi\", descrizione: \"Asta selfie versatile, compatta e luminosa grazie alla luce LED. Perfetta per vlog, selfie e contenuti social.\" }\n];\n\u003c\/script\u003e\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"NERO","offer_id":51968654541128,"sku":"SKU-51968654541128","price":29.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/IMMAGINI_X_SITO_-_2025-11-10T190403.815.png?v=1762797975"},{"product_id":"lampada-da-tavolo-con-speaker-bluetooth-integrato","title":"LAMPADA DA TAVOLO CON SPEAKER BLUETOOTH INTEGRATO","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 💡 Specifiche del prodotto – Tech Pop Desk Light Speaker (Lampada da tavolo con speaker Bluetooth®)\n\nconst specs = [\n  { titolo: \"Modello\", descrizione: \"Tech Pop Desk Light Speaker – Lampada da tavolo con speaker Bluetooth® integrato.\" },\n  { titolo: \"Funzione principale\", descrizione: \"Illuminazione regolabile + speaker Bluetooth® per un’esperienza luminosa e sonora in un unico dispositivo.\" },\n  { titolo: \"Connettività\", descrizione: \"Bluetooth® 5.0 per la trasmissione audio wireless.\" },\n  { titolo: \"Potenza speaker\", descrizione: \"10 W RMS circa (unità mono da Ø 5 cm).\" },  \n  { titolo: \"Illuminazione\", descrizione: \"Luce LED integrata con intensità regolabile.\" },\n  { titolo: \"Supporto dispositivo\", descrizione: \"Base con supporto per smartphone, braccio regolabile della lampada per orientamento ottimale.\" },\n  { titolo: \"Alimentazione\", descrizione: \"Alimentatore via cavo (lunghezza cavo circa 0,15 m).\"},  \n  { titolo: \"Dimensioni\", descrizione: \"Altezza 330 mm · Larghezza 110 mm · Profondità 110 mm.\" },\n  { titolo: \"Peso\", descrizione: \"355 g.\" },\n  { titolo: \"Colore\", descrizione: \"Bianco.\" },\n  { titolo: \"Tipo prodotto\", descrizione: \"Lampada da tavolo con speaker Bluetooth® integrato.\" },\n  { titolo: \"Contenuto confezione\", descrizione: \"Lampada Desk Light Speaker · Cavo Micro-USB · Manuale utente.\" },\n  { titolo: \"Sintesi\", descrizione: \"Soluzione 2-in-1 per illuminazione e audio: perfetta per scrivania, camera o ambiente domestico.\" }\n];\n\u003c\/script\u003e\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"Bianco","offer_id":51968665649480,"sku":"SKU-51968665649480","price":34.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/IMMAGINI_X_SITO_-_2025-11-10T191016.637.png?v=1762798296"},{"product_id":"tavoletta-grafica-per-bambini-cellularline","title":"TAVOLETTA GRAFICA PER BAMBINI CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 🎨 Specifiche del prodotto – Magic ArtPad (Tavoletta grafica per bambini)\n\nconst specs = [\n  { titolo: \"Modello\", descrizione: \"Magic ArtPad – Tavoletta grafica con display LCD da 8,5″ progettata per bambini.\" },\n  { titolo: \"Display\", descrizione: \"Schermo LCD da 8,5″, a colori, con pulsante di cancellazione e funzione blocco schermo.\" },\n  { titolo: \"Funzioni\", descrizione: \"Cancellazione con un solo tocco · Pulsante blocco del contenuto visualizzato.\" },\n  { titolo: \"Accessori inclusi\", descrizione: \"Penna integrata + batterie incluse.\" },\n  { titolo: \"Protezione occhi\", descrizione: \"Schermo privo di luce blu, ideato per un uso prolungato in sicurezza.\" },\n  { titolo: \"Materiale\", descrizione: \"Plastica resistente, adatta all’uso da parte dei bambini.\" },\n  { titolo: \"Colori disponibili\", descrizione: \"Nero.\" },\n  { titolo: \"Dimensioni \/ Peso\", descrizione: \"Circa 22,5 cm × 14 cm × 0,5 cm · Peso ≈ 0,134 kg.\" },\n  { titolo: \"Contenuto confezione\", descrizione: \"Tavoletta grafica Magic ArtPad · Penna · Batterie · Istruzioni.\" },\n  { titolo: \"Sintesi\", descrizione: \"Tavoletta grafica sicura e divertente per bambini, perfetta per disegnare e scrivere liberamente.\" }\n];\n\u003c\/script\u003e\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"NERO","offer_id":51968757203272,"sku":null,"price":19.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/IMMAGINI_X_SITO_-_2025-11-10T194127.204.png?v=1762800180"},{"product_id":"fancybulb-lampadina-led-e27-soffitto-cellularline","title":"FANCYBULB LAMPADINA LED E27 SOFFITTO CELLULARLINE","description":"\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   BLOCCO CONFIGURAZIONE TIMELINE PRODOTTO – MODIFICA SOLO QUESTO     ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\u003cscript\u003e\n\/\/ 💡 Specifiche del prodotto – FancyBulb E27 Cellularline\n\nconst specs = [\n  { titolo: \"Modello\", descrizione: \"FancyBulb E27 – Lampadina LED da soffitto con attacco E27.\" },\n  { titolo: \"Utilizzo\", descrizione: \"Progettata per ambienti domestici: soggiorno, camera da letto, ufficio.\" },\n  { titolo: \"Potenza\", descrizione: \"2 W.\" },\n  { titolo: \"Attacco\", descrizione: \"E27 standard.\" },\n  { titolo: \"Colori\", descrizione: \"Blu · Rosa · Giallo.\" },\n  { titolo: \"Materiale \/ design\", descrizione: \"Plastica resistente e corpo lampada compatto.\" },\n  { titolo: \"Contenuto confezione\", descrizione: \"Lampadina FancyBulb E27.\" },\n  { titolo: \"Sintesi\", descrizione: \"Lampadina LED decorativa e funzionale con attacco E27, perfetta per aggiungere stile all’ambiente.\" }\n];\n\u003c\/script\u003e\n\n\u003c!-- ╔══════════════════════════════════════════════════════════════════════╗ --\u003e\n\u003c!-- ║   FINE BLOCCO CONFIGURAZIONE                                         ║ --\u003e\n\u003c!-- ╚══════════════════════════════════════════════════════════════════════╝ --\u003e\n\n\u003cstyle\u003e\n:root {\n  --accent: #4285f4;\n  --text: #111;\n}\n\n\/* ═══ STILI BASE ═════════════════════════════════════════════════════════ *\/\nbody {\n  margin: 0;\n  font-family: \"Segoe UI\", Roboto, system-ui, sans-serif;\n}\n\n\/* ═══ CONTENITORE TIMELINE ════════════════════════════════════════════════ *\/\n.product-timeline {\n  position: relative;\n  max-width: 700px;\n  margin: 80px auto;\n  padding: 30px;\n  color: var(--text);\n}\n\n\/* ═══ LINEA VERTICALE ═════════════════════════════════════════════════════ *\/\n.product-timeline::before {\n  content: \"\";\n  position: absolute;\n  left: 30px;\n  top: 0;\n  width: 3px;\n  height: 100%;\n  background: linear-gradient(to bottom, rgba(66,133,244,0.5), rgba(66,133,244,0.1));\n  box-shadow: 0 0 12px rgba(66,133,244,0.4);\n}\n\n\/* ═══ TITOLO PRINCIPALE ═══════════════════════════════════════════════════ *\/\n.product-timeline h1 {\n  text-align: center;\n  font-size: 2.8rem;\n  font-weight: 800;\n  color: var(--accent);\n  margin-bottom: 60px;\n}\n\n\/* ═══ ELEMENTI TIMELINE ═══════════════════════════════════════════════════ *\/\n.timeline-item {\n  position: relative;\n  padding-left: 70px;\n  margin-bottom: 45px;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: all 0.8s ease;\n}\n.timeline-item.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n.timeline-item::before {\n  content: \"\";\n  position: absolute;\n  left: 22px;\n  top: 28px;\n  width: 16px;\n  height: 16px;\n  background: var(--accent);\n  border-radius: 50%;\n  box-shadow: 0 0 14px rgba(66,133,244,0.6);\n}\n\n\/* ═══ CARD INTERNA ════════════════════════════════════════════════════════ *\/\n.timeline-card {\n  padding: 20px 26px;\n  border-left: 3px solid rgba(66,133,244,0.2);\n  border-radius: 10px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.timeline-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 8px 20px rgba(66,133,244,0.1);\n}\n.timeline-card h3 {\n  color: var(--accent);\n  margin: 0 0 8px 0;\n  font-size: 1.6rem;\n  font-weight: 700;\n}\n.timeline-card p {\n  margin: 0;\n  font-size: 1.2rem;\n  color: #222;\n  line-height: 1.6;\n}\n\n\/* ═══ TASTO ACQUISTA ══════════════════════════════════════════════════════ *\/\n.buy-button {\n  display: inline-block;\n  margin-top: 30px;\n  padding: 16px 32px;\n  background: var(--accent);\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.3rem;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.3s ease, transform 0.2s ease;\n}\n.buy-button:hover {\n  background: #2b6ce5;\n  transform: scale(1.04);\n}\n.buy-button.disabled {\n  background: #aaa;\n  cursor: not-allowed;\n  transform: none;\n}\n\n\/* ═══ RESPONSIVE ══════════════════════════════════════════════════════════ *\/\n@media (max-width: 600px) {\n  .product-timeline::before { left: 20px; }\n  .timeline-item { padding-left: 60px; }\n  .timeline-item::before { left: 14px; }\n  .timeline-card h3 { font-size: 1.4rem; }\n  .timeline-card p { font-size: 1.05rem; }\n  .product-timeline h1 { font-size: 2rem; }\n  .buy-button { font-size: 1.1rem; padding: 14px 26px; }\n}\n\u003c\/style\u003e\n\n\u003csection class=\"product-timeline\"\u003e\n  \u003ch1 id=\"product-title\"\u003e\u003c\/h1\u003e\n  \u003cdiv id=\"timeline\"\u003e\u003c\/div\u003e\n  \u003c!-- Bottone finale sempre visibile --\u003e\n  \u003cdiv style=\"text-align:center\"\u003e\n    \u003cbutton class=\"buy-button\" id=\"checkoutButton\"\u003eVerifica disponibilità...\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n\/* ═══ LOGICA JAVASCRIPT ═══════════════════════════════════════════════════ *\/\n\n\/* — Titolo automatico del prodotto — *\/\nconst productTitle =\n  document.querySelector('h1.product__title, h1.product-title, h1')?.textContent?.trim() ||\n  \"Prodotto Shopify\";\ndocument.getElementById(\"product-title\").textContent = productTitle;\n\n\/* — Genera la timeline dinamica — *\/\nconst container = document.getElementById(\"timeline\");\nspecs.forEach((item) =\u003e {\n  const el = document.createElement(\"div\");\n  el.className = \"timeline-item\";\n  el.innerHTML = `\n    \u003cdiv class=\"timeline-card\"\u003e\n      \u003ch3\u003e${item.titolo}\u003c\/h3\u003e\n      \u003cp\u003e${item.descrizione}\u003c\/p\u003e\n    \u003c\/div\u003e`;\n  container.appendChild(el);\n});\n\n\/* — Effetto di comparsa su scroll — *\/\nconst items = document.querySelectorAll(\".timeline-item\");\nconst observer = new IntersectionObserver((entries) =\u003e {\n  entries.forEach((entry) =\u003e {\n    if (entry.isIntersecting) entry.target.classList.add(\"visible\");\n  });\n});\nitems.forEach((el) =\u003e observer.observe(el));\n\n\/* — Pulsante checkout con disponibilità — *\/\ndocument.addEventListener(\"DOMContentLoaded\", () =\u003e {\n  const btn = document.getElementById(\"checkoutButton\");\n  const shopDomain = window.Shopify?.shop || window.location.hostname;\n  const variant = window.meta?.product?.variants?.[0];\n\n  if (!variant) {\n    btn.textContent = \"Prodotto non disponibile\";\n    btn.classList.add(\"disabled\");\n    return;\n  }\n\n  if (variant.available) {\n    btn.textContent = \"Acquista ora 🛒\";\n    btn.addEventListener(\"click\", () =\u003e {\n      const checkoutUrl = `https:\/\/${shopDomain}\/cart\/${variant.id}:1`;\n      window.location.href = checkoutUrl;\n    });\n  } else {\n    btn.textContent = \"Non disponibile\";\n    btn.classList.add(\"disabled\");\n  }\n});\n\u003c\/script\u003e\n","brand":"Centroriparo srl","offers":[{"title":"Blu","offer_id":51968805405000,"sku":"SKU-51968805405000","price":19.99,"currency_code":"EUR","in_stock":true},{"title":"ROSA","offer_id":51968805437768,"sku":"SKU-51968805437768","price":19.99,"currency_code":"EUR","in_stock":true},{"title":"Giallo","offer_id":51968805470536,"sku":"SKU-51968805470536","price":19.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/IMMAGINI_X_SITO_-_2025-11-10T195928.634.png?v=1762801201"},{"product_id":"kit-cable-included-15w","title":"KIT CABLE INCLUDED 15W","description":"","brand":"CELLULARLINE","offers":[{"title":"USB-C CHARGER + USB-C CABLE","offer_id":54219908448584,"sku":null,"price":19.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/cellularline-usb-c-charger--8018080434785-2.jpg?v=1791197900"},{"product_id":"multi-faster-smaller-45w","title":"MULTI FASTER \u0026 SMALLER 45W","description":"","brand":"CELLULARLINE","offers":[{"title":"MULTIPORT CHARGER","offer_id":54219919589704,"sku":null,"price":39.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/caricabatteria-45w-usbA-usb-c-bianco.jpg?v=1791198042"},{"product_id":"retractable-power-65w","title":"RETRACTABLE POWER 65W","description":"","brand":"CELLULARLINE","offers":[{"title":"MULTIPORT CHARGER 90CM","offer_id":54219933745480,"sku":null,"price":49.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/images_9.jpg?v=1791198170"},{"product_id":"kit-cable-included-20w","title":"KIT CABLE INCLUDED 20W","description":"","brand":"CELLULARLINE","offers":[{"title":"USB-C CHARGER + LIGHTNING CABLE","offer_id":54219962941768,"sku":null,"price":39.99,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/8018080398476_1.jpg?v=1791198323"},{"product_id":"multi-faster-smaller-65w","title":"MULTI FASTER \u0026 SMALLER 65W","description":"","brand":"CELLULARLINE","offers":[{"title":"MULTIPORT CHARGER","offer_id":54219984437576,"sku":null,"price":59.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/781x1200.jpg?v=1791198457"},{"product_id":"powerview-67w","title":"POWERVIEW 67W","description":"","brand":"CELLULARLINE","offers":[{"title":"FOLDABLE PLUG 3 PORTS 67W","offer_id":54220022808904,"sku":null,"price":64.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/cellularline-powerview-iq-k-8018080513435-2.jpg?v=1791198627"},{"product_id":"power-lite-20w","title":"POWER LITE 20W","description":"","brand":"CELLULARLINE","offers":[{"title":"17MM","offer_id":54220075958600,"sku":null,"price":24.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/cellularline-charger-power--8018080516382-2.jpg?v=1791199456"},{"product_id":"power-lite-30w","title":"POWER LITE 30W","description":"","brand":"CELLULARLINE","offers":[{"title":"17MM","offer_id":54220082348360,"sku":null,"price":29.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/cellularline-charger-power--8018080516375-2.jpg?v=1791199560"},{"product_id":"challenge-wireless-headphones-sport","title":"CHALLENGE WIRELESS HEADPHONES SPORT","description":"","brand":"CELLULARLINE","offers":[{"title":"IDEAL FOR SPORT","offer_id":54220435915080,"sku":null,"price":29.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/cuffia-sport-challenge-lime-cellular-line-444530-dettaglio.avif?v=1791202674"},{"product_id":"movie-theater-per-smartphone-fino-a-6-5","title":"MOVIE THEATER PER SMARTPHONE FINO A 6.5''","description":"","brand":"CELLULARLINE","offers":[{"title":"PER SMARTPHONE FINO A 6.5''","offer_id":54220448366920,"sku":null,"price":14.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/8018080426636-pv.jpg?v=1791202864"},{"product_id":"mag-duo-2-in-1-wireless-charging-station","title":"MAG DUO 2 IN 1 WIRELESS CHARGING STATION","description":"","brand":"CELLULARLINE","offers":[{"title":"15W X2","offer_id":54220505874760,"sku":null,"price":59.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/cellularline-mag-duo-8018080491917-1.jpg?v=1791203431"},{"product_id":"supporto-audio-aerazione","title":"SUPPORTO AUDIO AERAZIONE","description":"","brand":"CELLULARLINE","offers":[{"title":"AIR VENTS 360°","offer_id":54293595423048,"sku":null,"price":12.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/1381925_900x900_8499382f-5009-4eb3-b4fb-5081dc3a4bb3.jpg?v=1791878204"},{"product_id":"tracy-tag-dual","title":"TRACY TAG DUAL","description":"","brand":"CELLULARLINE","offers":[{"title":"VERDE","offer_id":54293781905736,"sku":null,"price":19.99,"currency_code":"EUR","in_stock":true},{"title":"GRIGIO","offer_id":54293781938504,"sku":null,"price":19.99,"currency_code":"EUR","in_stock":false},{"title":"BLU","offer_id":54293781971272,"sku":null,"price":19.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/8018080512353-1_1.jpg?v=1791878879"},{"product_id":"tracy-tag","title":"TRACY TAG","description":"","brand":"CELLULARLINE","offers":[{"title":"VERDE","offer_id":54293968552264,"sku":null,"price":14.99,"currency_code":"EUR","in_stock":true},{"title":"FUCSIA","offer_id":54293968585032,"sku":null,"price":14.99,"currency_code":"EUR","in_stock":true},{"title":"GRIGIO","offer_id":54293968617800,"sku":null,"price":14.99,"currency_code":"EUR","in_stock":true},{"title":"ROSA","offer_id":54294134030664,"sku":null,"price":14.99,"currency_code":"EUR","in_stock":false},{"title":"BIANCO","offer_id":54294134063432,"sku":null,"price":14.99,"currency_code":"EUR","in_stock":true},{"title":"LIMONE","offer_id":54294134096200,"sku":null,"price":14.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0799\/6663\/4312\/files\/fee_786_587_png_2.webp?v=1791880362"}],"url":"https:\/\/www.centroriparo.it\/collections\/accessori-cellularline.oembed?page=2","provider":"Centroriparo srl","version":"1.0","type":"link"}