{"title":"Home page","description":null,"products":[{"product_id":"eponge-sponki-l-eponge-animale-en-pulpe-de-bois","title":"🧽 Éponge Sponki – L’éponge Animale en Pulpe de Bois","description":"\u003ch3 class=\"PDq2pG_selectionAnchorContainer\"\u003e\n  L’éponge — Sponki\n  \u003cspan class=\"PDq2pG_selectionAnchor\"\u003e\u003c\/span\u003e\n\u003c\/h3\u003e\n\n\u003cdiv class=\"sponki-intro\"\u003e\n\n  \u003cdiv class=\"sponki-offer-title\"\u003e\n    🎁 Offre de bienvenue Sponki\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"sponki-offer-list\"\u003e\n\n    \u003cdiv\u003e\n      \u003cspan class=\"sponki-check\"\u003e✓\u003c\/span\u003e\n      \u003cstrong\u003e2 Sponki achetées → 1 Sponki offerte\u003c\/strong\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv\u003e\n      \u003cspan class=\"sponki-check\"\u003e✓\u003c\/span\u003e\n      \u003cstrong\u003e2 Sponki achetées → -30 %\u003c\/strong\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv\u003e\n      \u003cspan class=\"sponki-check\"\u003e✓\u003c\/span\u003e\n      \u003cstrong\u003e3 Sponki achetées → -43 %\u003c\/strong\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"sponki-shipping\"\u003e\n    🚚 \u003cstrong\u003eLivraison offerte\u003c\/strong\u003e\n    \u003cspan\u003e| Délai 7 à 10 jours ouvrés.\u003c\/span\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\n\u003c!-- =====================================================\n     SÉLECTEUR\n===================================================== --\u003e\n\n\u003cdiv id=\"sponki-selector\"\u003e\n\n  \u003cdiv class=\"sponki-box\"\u003e\n\n    \u003cdiv class=\"sponki-heading\"\u003e\n\n      \u003cdiv\u003e\n        \u003cdiv class=\"sponki-small-title\"\u003e\n          VOTRE SÉLECTION\n        \u003c\/div\u003e\n\n        \u003ch2\u003e\n          Choisissez vos Sponki 🧽\n        \u003c\/h2\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sponki-icon\"\u003e\n        🧽\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003c!-- =================================================\n         OFFRES\n    ================================================== --\u003e\n\n    \u003cdiv class=\"sponki-pack-list\"\u003e\n\n\n      \u003c!-- 1 SPONKI --\u003e\n\n      \u003clabel class=\"sponki-pack\" data-pack=\"1\"\u003e\n\n        \u003cdiv class=\"sponki-pack-content\"\u003e\n\n          \u003cdiv class=\"sponki-pack-top\"\u003e\n\n            \u003cdiv class=\"sponki-radio-wrap\"\u003e\n              \u003cinput type=\"radio\" name=\"sponki-pack\" value=\"1\" checked\u003e\n\n              \u003cspan class=\"sponki-custom-radio\"\u003e\u003c\/span\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"sponki-pack-text\"\u003e\n\n              \u003cdiv class=\"sponki-pack-title\"\u003e\n                1 Sponki\n              \u003c\/div\u003e\n\n              \u003cdiv class=\"sponki-pack-subtitle\"\u003e\n                Prix normal\n              \u003c\/div\u003e\n\n            \u003c\/div\u003e\n\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"sponki-pack-price\"\u003e\n            1\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n      \u003c\/label\u003e\n\n\n      \u003c!-- 2 SPONKI --\u003e\n\n      \u003clabel class=\"sponki-pack sponki-popular\" data-pack=\"2\"\u003e\n\n        \u003cdiv class=\"sponki-badge\"\u003e\n          POPULAIRE\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"sponki-pack-content\"\u003e\n\n          \u003cdiv class=\"sponki-pack-top\"\u003e\n\n            \u003cdiv class=\"sponki-radio-wrap\"\u003e\n\n              \u003cinput type=\"radio\" name=\"sponki-pack\" value=\"2\"\u003e\n\n              \u003cspan class=\"sponki-custom-radio\"\u003e\u003c\/span\u003e\n\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"sponki-pack-text\"\u003e\n\n              \u003cdiv class=\"sponki-pack-title\"\u003e\n                2 Sponki\n                \u003cspan class=\"sponki-red\"\u003e\n                  −30 %\n                \u003c\/span\u003e\n              \u003c\/div\u003e\n\n              \u003cdiv class=\"sponki-pack-subtitle sponki-gift-text\"\u003e\n                + 1 Sponki offerte 🎁\n              \u003c\/div\u003e\n\n            \u003c\/div\u003e\n\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"sponki-pack-price\"\u003e\n            2\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n      \u003c\/label\u003e\n\n\n      \u003c!-- 3 SPONKI --\u003e\n\n      \u003clabel class=\"sponki-pack\" data-pack=\"3\"\u003e\n\n        \u003cdiv class=\"sponki-pack-content\"\u003e\n\n          \u003cdiv class=\"sponki-pack-top\"\u003e\n\n            \u003cdiv class=\"sponki-radio-wrap\"\u003e\n\n              \u003cinput type=\"radio\" name=\"sponki-pack\" value=\"3\"\u003e\n\n              \u003cspan class=\"sponki-custom-radio\"\u003e\u003c\/span\u003e\n\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"sponki-pack-text\"\u003e\n\n              \u003cdiv class=\"sponki-pack-title\"\u003e\n\n                3 Sponki\n\n                \u003cspan class=\"sponki-red\"\u003e\n                  −43 %\n                \u003c\/span\u003e\n\n              \u003c\/div\u003e\n\n              \u003cdiv class=\"sponki-pack-subtitle\"\u003e\n                Choisissez vos 3 modèles\n              \u003c\/div\u003e\n\n            \u003c\/div\u003e\n\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"sponki-pack-price\"\u003e\n            3\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n      \u003c\/label\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003c!-- =================================================\n         MODÈLES\n    ================================================== --\u003e\n\n    \u003cdiv id=\"sponki-models\"\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003c!-- =================================================\n         SPONKI OFFERTE\n    ================================================== --\u003e\n\n    \u003cdiv id=\"sponki-free\"\u003e\n\n      \u003cdiv class=\"sponki-free-header\"\u003e\n\n        \u003cdiv class=\"sponki-free-icon\"\u003e\n          🎁\n        \u003c\/div\u003e\n\n        \u003cdiv\u003e\n\n          \u003cdiv class=\"sponki-free-title\"\u003e\n            Votre Sponki offerte\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"sponki-free-subtitle\"\u003e\n            Choisissez le modèle de votre choix\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n\n      \u003cselect id=\"sponki-free-select\"\u003e\n\n        \u003coption value=\"\"\u003e\n          Choisissez votre modèle\n        \u003c\/option\u003e\n\n      \u003c\/select\u003e\n\n\n      \u003cdiv class=\"sponki-free-info\"\u003e\n        ✨ Cette Sponki sera ajoutée manuellement à votre commande.\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003c!-- =================================================\n         TOTAL\n    ================================================== --\u003e\n\n    \u003cdiv id=\"sponki-total\"\u003e\u003c\/div\u003e\n\n\n    \u003c!-- =================================================\n         BOUTONS\n    ================================================== --\u003e\n\n    \u003cbutton type=\"button\" id=\"sponki-add\"\u003e\n      \u003cspan\u003eAjouter au panier\u003c\/span\u003e\n      \u003cspan\u003e→\u003c\/span\u003e\n    \u003c\/button\u003e\n\n\n    \u003cbutton type=\"button\" id=\"sponki-buy\"\u003e\n      Acheter maintenant\n    \u003c\/button\u003e\n\n\n    \u003cdiv id=\"sponki-error\"\u003e\u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\n  \u003c!-- =====================================================\n       DESCRIPTION\n  ====================================================== --\u003e\n\n  \u003cdetails class=\"sponki-dropdown\"\u003e\n\n    \u003csummary\u003e\n\n      \u003cspan class=\"sponki-dropdown-title\"\u003e\n        Description\n      \u003c\/span\u003e\n\n      \u003cspan class=\"sponki-plus\"\u003e\n        ＋\n      \u003c\/span\u003e\n\n    \u003c\/summary\u003e\n\n    \u003cdiv class=\"sponki-dropdown-content\"\u003e\n\n      \u003ch2\u003e\n        Sponki™ — L’éponge en pulpe de bois qui change la vaisselle\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Découvrez Sponki™, l’éponge en pulpe de bois pensée pour rendre la vaisselle plus agréable au quotidien. Absorbante, douce et pratique, elle vous accompagne pour nettoyer efficacement votre vaisselle tout en apportant une petite touche originale à votre cuisine.\n      \u003c\/p\u003e\n\n      \u003ch3\u003e💧 Une éponge ultra absorbante\u003c\/h3\u003e\n\n      \u003cp\u003e\n        Sa matière à base de pulpe de bois absorbe efficacement l’eau et permet de retenir une bonne quantité de liquide pour faciliter le nettoyage.\n      \u003c\/p\u003e\n\n      \u003ch3\u003e🫧 Nettoyez facilement votre vaisselle\u003c\/h3\u003e\n\n      \u003cp\u003e\n        Sponki est conçue pour vous accompagner au quotidien : assiettes, verres, couverts, casseroles et autres surfaces de cuisine.\n      \u003c\/p\u003e\n\n      \u003ch3\u003e🌱 Une matière à base de pulpe de bois\u003c\/h3\u003e\n\n      \u003cp\u003e\n        Fabriquée à partir de fibres de pulpe de bois, Sponki offre une texture agréable et absorbante pour une utilisation pratique au quotidien.\n      \u003c\/p\u003e\n\n      \u003ch3\u003e🐸 Un design qui ne ressemble pas aux autres\u003c\/h3\u003e\n\n      \u003cp\u003e\n        Grenouille, tigre, ours et autres petits animaux : choisissez votre modèle préféré et rendez votre cuisine un peu plus originale.\n      \u003c\/p\u003e\n\n      \u003ch3\u003e♻️ Facile à rincer et à réutiliser\u003c\/h3\u003e\n\n      \u003cp\u003e\n        Après utilisation, rincez simplement votre Sponki à l’eau claire, essorez-la puis laissez-la sécher.\n      \u003c\/p\u003e\n\n      \u003ch3\u003e🧽 Comment utiliser votre Sponki™ ?\u003c\/h3\u003e\n\n      \u003cp\u003e\n        1. Mouillez légèrement votre Sponki.\u003cbr\u003e\n        2. Ajoutez votre produit vaisselle.\u003cbr\u003e\n        3. Nettoyez votre vaisselle.\u003cbr\u003e\n        4. Rincez puis laissez sécher votre Sponki.\n      \u003c\/p\u003e\n\n      \u003ch3\u003e✨ Pourquoi choisir Sponki™ ?\u003c\/h3\u003e\n\n      \u003cp\u003e\n        Sponki combine praticité, absorption et un design original pour transformer une tâche quotidienne en une expérience un peu plus agréable.\n      \u003c\/p\u003e\n\n      \u003ch3\u003e🐯 Une petite éponge qui fait toute la différence\u003c\/h3\u003e\n\n      \u003cp\u003e\n        Choisissez votre animal préféré et profitez d'une éponge pensée pour vous accompagner au quotidien.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/details\u003e\n\n\n  \u003c!-- =====================================================\n       AVANTAGES\n  ====================================================== --\u003e\n\n  \u003cdetails class=\"sponki-dropdown\"\u003e\n\n    \u003csummary\u003e\n\n      \u003cspan class=\"sponki-dropdown-title\"\u003e\n        Les avantages\n      \u003c\/span\u003e\n\n      \u003cspan class=\"sponki-plus\"\u003e\n        ＋\n      \u003c\/span\u003e\n\n    \u003c\/summary\u003e\n\n    \u003cdiv class=\"sponki-dropdown-content\"\u003e\n\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1106\/5540\/6418\/files\/ChatGPT_Image_2_sept._2026_15_02_55.png?v=1788354281\" alt=\"Comparaison Sponki et éponge classique\" style=\"width:100%;height:auto;border-radius:14px;display:block;\"\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/details\u003e\n\n\n  \u003c!-- =====================================================\n       VIDÉOS\n  ====================================================== --\u003e\n\n  \u003cdetails class=\"sponki-dropdown\"\u003e\n\n    \u003csummary\u003e\n\n      \u003cspan class=\"sponki-dropdown-title\"\u003e\n        Vidéos\n      \u003c\/span\u003e\n\n      \u003cspan class=\"sponki-plus\"\u003e\n        ＋\n      \u003c\/span\u003e\n\n    \u003c\/summary\u003e\n\n    \u003cdiv class=\"sponki-dropdown-content\"\u003e\n\n      \u003cvideo autoplay muted loop playsinline controls style=\"width:100%;height:auto;border-radius:14px;margin-bottom:15px;display:block;\"\u003e\n\n        \u003csource src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/97fb93a3eb6e4dd8a749400b0f0e58d5.mp4\" type=\"video\/mp4\"\u003e\u003c\/video\u003e\n\n\n      \u003cvideo autoplay muted loop playsinline controls style=\"width:100%;height:auto;border-radius:14px;margin-bottom:15px;display:block;\"\u003e\n\n        \u003csource src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/bc2c831481cc4954aa16e814d9871ee3.mp4\" type=\"video\/mp4\"\u003e\u003c\/video\u003e\n\n\n      \u003cvideo autoplay muted loop playsinline controls style=\"width:100%;height:auto;border-radius:14px;display:block;\"\u003e\n\n        \u003csource src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/7db0c6eece0341f2bb12c2fa8c46b9e9.mp4\" type=\"video\/mp4\"\u003e\u003c\/video\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/details\u003e\n\n\n  \u003c!-- =====================================================\n       OFFRE AVIS\n  ====================================================== --\u003e\n\n  \u003cdiv class=\"sponki-review-offer\"\u003e\n\n    \u003cspan class=\"sponki-review-icon\"\u003e\n      ⭐\n    \u003c\/span\u003e\n\n    \u003cstrong\u003e\n      Offre : Un avis pour 1 code promo de 30% sur votre prochaine commande\n    \u003c\/strong\u003e\n\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\n\u003cstyle\u003e\n\n\/* =====================================================\n   INTRO\n===================================================== *\/\n\n.sponki-intro {\n  margin: 10px 0 22px;\n}\n\n.sponki-offer-title {\n  font-size: 18px;\n  font-weight: 700;\n  margin-bottom: 12px;\n}\n\n.sponki-offer-list {\n  display: flex;\n  flex-direction: column;\n  gap: 7px;\n  margin-bottom: 14px;\n}\n\n.sponki-offer-list div {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 14px;\n}\n\n.sponki-check {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 19px;\n  height: 19px;\n  border-radius: 50%;\n  background: #111;\n  color: #fff;\n  font-size: 11px;\n  flex-shrink: 0;\n}\n\n.sponki-shipping {\n  padding: 11px 13px;\n  border-radius: 10px;\n  background: #f7f7f7;\n  font-size: 13px;\n}\n\n.sponki-shipping span {\n  color: #666;\n}\n\n\n\/* =====================================================\n   BLOC\n===================================================== *\/\n\n#sponki-selector {\n  width: 100%;\n  margin: 20px 0;\n  font-family: inherit;\n}\n\n.sponki-box {\n  border: 1px solid #e5e5e5;\n  border-radius: 20px;\n  padding: 20px;\n  background: #fff;\n  box-shadow: 0 5px 25px rgba(0,0,0,.045);\n}\n\n\n\/* =====================================================\n   HEADER\n===================================================== *\/\n\n.sponki-heading {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin-bottom: 20px;\n}\n\n.sponki-small-title {\n  font-size: 10px;\n  letter-spacing: 1.5px;\n  font-weight: 700;\n  color: #888;\n  margin-bottom: 4px;\n}\n\n.sponki-box h2 {\n  margin: 0;\n  font-size: 23px;\n  line-height: 1.2;\n}\n\n.sponki-icon {\n  width: 44px;\n  height: 44px;\n  border-radius: 50%;\n  background: #f5f5f5;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 21px;\n}\n\n\n\/* =====================================================\n   PACKS\n===================================================== *\/\n\n.sponki-pack-list {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n}\n\n.sponki-pack {\n  position: relative;\n  display: block;\n  border: 1.5px solid #e3e3e3;\n  border-radius: 15px;\n  padding: 15px;\n  cursor: pointer;\n  transition: all .2s ease;\n  background: #fff;\n}\n\n.sponki-pack:hover {\n  border-color: #aaa;\n  transform: translateY(-1px);\n}\n\n.sponki-pack:has(input:checked) {\n  border-color: #111;\n  box-shadow: 0 3px 12px rgba(0,0,0,.07);\n}\n\n.sponki-pack-content {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n}\n\n.sponki-pack-top {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n}\n\n.sponki-radio-wrap {\n  position: relative;\n  width: 21px;\n  height: 21px;\n  flex-shrink: 0;\n}\n\n.sponki-radio-wrap input {\n  position: absolute;\n  opacity: 0;\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  cursor: pointer;\n  z-index: 2;\n}\n\n.sponki-custom-radio {\n  position: absolute;\n  inset: 0;\n  border: 1.5px solid #aaa;\n  border-radius: 50%;\n  background: #fff;\n}\n\n.sponki-radio-wrap input:checked + .sponki-custom-radio {\n  border-color: #111;\n}\n\n.sponki-radio-wrap input:checked + .sponki-custom-radio:after {\n  content: \"\";\n  position: absolute;\n  width: 9px;\n  height: 9px;\n  border-radius: 50%;\n  background: #111;\n  top: 4px;\n  left: 4px;\n}\n\n.sponki-pack-text {\n  display: flex;\n  flex-direction: column;\n  gap: 3px;\n}\n\n.sponki-pack-title {\n  font-size: 16px;\n  font-weight: 700;\n}\n\n.sponki-pack-subtitle {\n  font-size: 13px;\n  color: #777;\n}\n\n.sponki-red {\n  color: #e63946;\n  font-weight: 800;\n  margin-left: 3px;\n}\n\n.sponki-gift-text {\n  color: #555;\n}\n\n.sponki-pack-price {\n  width: 29px;\n  height: 29px;\n  border-radius: 50%;\n  background: #f5f5f5;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 12px;\n  font-weight: 700;\n}\n\n.sponki-badge {\n  position: absolute;\n  top: -9px;\n  right: 14px;\n  background: #111;\n  color: #fff;\n  padding: 4px 9px;\n  border-radius: 20px;\n  font-size: 9px;\n  font-weight: 800;\n  letter-spacing: .7px;\n}\n\n\n\/* =====================================================\n   MODÈLES\n===================================================== *\/\n\n#sponki-models {\n  margin-top: 20px;\n  display: flex;\n  flex-direction: column;\n  gap: 13px;\n}\n\n.sponki-model {\n  padding: 14px;\n  border-radius: 14px;\n  background: #fafafa;\n  border: 1px solid #ededed;\n}\n\n.sponki-model-label {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin-bottom: 8px;\n}\n\n.sponki-model-label strong {\n  font-size: 14px;\n}\n\n.sponki-model-number {\n  font-size: 11px;\n  color: #888;\n}\n\n.sponki-model select {\n  width: 100%;\n  padding: 13px 14px;\n  border: 1px solid #ddd;\n  border-radius: 11px;\n  background: #fff;\n  font-size: 14px;\n  color: #222;\n  outline: none;\n  cursor: pointer;\n}\n\n.sponki-model select:focus {\n  border-color: #111;\n}\n\n\n\/* =====================================================\n   CADEAU\n===================================================== *\/\n\n#sponki-free {\n  display: none;\n  margin-top: 16px;\n  padding: 16px;\n  border-radius: 15px;\n  background: #fffaf0;\n  border: 1px solid #f0dfb6;\n}\n\n.sponki-free-header {\n  display: flex;\n  align-items: center;\n  gap: 11px;\n  margin-bottom: 12px;\n}\n\n.sponki-free-icon {\n  width: 38px;\n  height: 38px;\n  border-radius: 10px;\n  background: #fff;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 19px;\n}\n\n.sponki-free-title {\n  font-weight: 800;\n  font-size: 14px;\n}\n\n.sponki-free-subtitle {\n  font-size: 12px;\n  color: #777;\n  margin-top: 2px;\n}\n\n#sponki-free-select {\n  width: 100%;\n  padding: 13px;\n  border: 1px solid #ddd;\n  border-radius: 11px;\n  background: #fff;\n  font-size: 14px;\n  cursor: pointer;\n}\n\n.sponki-free-info {\n  margin-top: 9px;\n  font-size: 11px;\n  color: #777;\n  line-height: 1.4;\n}\n\n\n\/* =====================================================\n   TOTAL\n===================================================== *\/\n\n#sponki-total {\n  margin-top: 20px;\n  padding: 14px 0;\n  border-top: 1px solid #eee;\n  font-size: 18px;\n  font-weight: 800;\n}\n\n\n\/* =====================================================\n   BOUTONS\n===================================================== *\/\n\n#sponki-add,\n#sponki-buy {\n  width: 100%;\n  border-radius: 12px;\n  padding: 15px;\n  margin-top: 10px;\n  font-family: inherit;\n  font-size: 15px;\n  font-weight: 700;\n  cursor: pointer;\n  transition: all .2s ease;\n}\n\n#sponki-add {\n  border: 0;\n  background: #111;\n  color: #fff;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  gap: 12px;\n}\n\n#sponki-add:hover {\n  transform: translateY(-1px);\n  box-shadow: 0 5px 15px rgba(0,0,0,.15);\n}\n\n#sponki-buy {\n  border: 1px solid #ddd;\n  background: #fff;\n  color: #111;\n}\n\n#sponki-buy:hover {\n  background: #f7f7f7;\n}\n\n\n\/* =====================================================\n   ERREUR\n===================================================== *\/\n\n#sponki-error {\n  color: #d33;\n  margin-top: 12px;\n  font-size: 13px;\n  text-align: center;\n}\n\n\n\/* =====================================================\n   DROPDOWNS\n===================================================== *\/\n\n.sponki-dropdown {\n  border-top: 1px solid #e5e5e5;\n}\n\n.sponki-dropdown:last-of-type {\n  border-bottom: 1px solid #e5e5e5;\n}\n\n.sponki-dropdown summary {\n  padding: 19px 2px;\n  cursor: pointer;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  list-style: none;\n}\n\n.sponki-dropdown summary::-webkit-details-marker {\n  display: none;\n}\n\n.sponki-dropdown-title {\n  font-size: 15px;\n  font-weight: 700;\n}\n\n.sponki-plus {\n  font-size: 22px;\n  font-weight: 300;\n  transition: transform .2s ease;\n}\n\n.sponki-dropdown[open] .sponki-plus {\n  transform: rotate(45deg);\n}\n\n.sponki-dropdown-content {\n  padding: 2px 2px 20px;\n  line-height: 1.65;\n}\n\n.sponki-dropdown-content h2 {\n  font-size: 21px;\n  line-height: 1.3;\n  margin: 8px 0 14px;\n}\n\n.sponki-dropdown-content h3 {\n  font-size: 16px;\n  margin: 20px 0 6px;\n}\n\n.sponki-dropdown-content p {\n  margin: 0 0 10px;\n}\n\n\n\/* =====================================================\n   AVIS\n===================================================== *\/\n\n.sponki-review-offer {\n  margin-top: 18px;\n  padding: 14px;\n  border-radius: 12px;\n  background: #f7f7f7;\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  font-size: 12px;\n  line-height: 1.4;\n}\n\n.sponki-review-icon {\n  font-size: 18px;\n  flex-shrink: 0;\n}\n\n\n\/* =====================================================\n   MOBILE\n===================================================== *\/\n\n@media (max-width: 600px) {\n\n  .sponki-box {\n    padding: 16px;\n    border-radius: 17px;\n  }\n\n  .sponki-box h2 {\n    font-size: 21px;\n  }\n\n  .sponki-heading {\n    margin-bottom: 17px;\n  }\n\n  .sponki-pack {\n    padding: 14px;\n  }\n\n  .sponki-pack-title {\n    font-size: 15px;\n  }\n\n  .sponki-pack-subtitle {\n    font-size: 12px;\n  }\n\n  .sponki-offer-list div {\n    font-size: 13px;\n  }\n\n}\n\n\u003c\/style\u003e\n\n\n\u003cscript\u003e\n\n(function() {\n\n  const selector =\n    document.getElementById('sponki-selector');\n\n  if (!selector) return;\n\n\n  const modelsContainer =\n    document.getElementById('sponki-models');\n\n  const freeBox =\n    document.getElementById('sponki-free');\n\n  const freeSelect =\n    document.getElementById('sponki-free-select');\n\n  const totalBox =\n    document.getElementById('sponki-total');\n\n  const errorBox =\n    document.getElementById('sponki-error');\n\n  const addButton =\n    document.getElementById('sponki-add');\n\n  const buyButton =\n    document.getElementById('sponki-buy');\n\n  const packs =\n    selector.querySelectorAll(\n      'input[name=\"sponki-pack\"]'\n    );\n\n\n  let variants = [];\n\n\n  \/* =================================================\n     RÉCUPÉRATION DU PRODUIT\n  ================================================= *\/\n\n  const productPath =\n    window.location.pathname\n      .split('\/products\/')[1];\n\n  if (!productPath) {\n\n    errorBox.textContent =\n      \"Impossible de trouver le produit.\";\n\n    return;\n  }\n\n\n  const handle =\n    productPath.split('\/')[0];\n\n\n  fetch(\n    '\/products\/' +\n    handle +\n    '.js'\n  )\n\n  .then(function(response) {\n\n    if (!response.ok) {\n      throw new Error(\n        \"Produit introuvable\"\n      );\n    }\n\n    return response.json();\n\n  })\n\n  .then(function(product) {\n\n    variants =\n      product.variants || [];\n\n    if (!variants.length) {\n\n      errorBox.textContent =\n        \"Aucun modèle disponible.\";\n\n      return;\n    }\n\n\n    createModelSelectors(1);\n\n    createFreeOptions();\n\n  })\n\n  .catch(function(error) {\n\n    console.error(error);\n\n    errorBox.textContent =\n      \"Impossible de charger les modèles. Rechargez la page.\";\n\n  });\n\n\n  \/* =================================================\n     NOM DU MODÈLE\n  ================================================= *\/\n\n  function getVariantName(variant) {\n\n    if (\n      variant.title \u0026\u0026\n      variant.title !== \"Default Title\"\n    ) {\n\n      return variant.title;\n\n    }\n\n\n    if (\n      variant.option1 \u0026\u0026\n      variant.option1 !== \"Default Title\"\n    ) {\n\n      return variant.option1;\n\n    }\n\n\n    return \"Modèle\";\n\n  }\n\n\n  \/* =================================================\n     CRÉER LES MODÈLES\n  ================================================= *\/\n\n  function createModelSelectors(quantity) {\n\n    modelsContainer.innerHTML = \"\";\n\n\n    for (\n      let i = 1;\n      i \u003c= quantity;\n      i++\n    ) {\n\n      const wrapper =\n        document.createElement('div');\n\n      wrapper.className =\n        'sponki-model';\n\n\n      const label =\n        document.createElement('div');\n\n      label.className =\n        'sponki-model-label';\n\n\n      const strong =\n        document.createElement('strong');\n\n      strong.textContent =\n        'Choisissez votre Sponki ' + i;\n\n\n      const number =\n        document.createElement('span');\n\n      number.className =\n        'sponki-model-number';\n\n      number.textContent =\n        'MODÈLE ' + i;\n\n\n      label.appendChild(strong);\n\n      label.appendChild(number);\n\n\n      const select =\n        document.createElement('select');\n\n      select.className =\n        'sponki-model-select';\n\n      select.dataset.index =\n        i;\n\n\n      const placeholder =\n        document.createElement('option');\n\n      placeholder.value = \"\";\n\n      placeholder.textContent =\n        \"Sélectionnez votre modèle\";\n\n      select.appendChild(\n        placeholder\n      );\n\n\n      variants.forEach(\n        function(variant) {\n\n          if (!variant.available)\n            return;\n\n\n          const option =\n            document.createElement('option');\n\n          option.value =\n            variant.id;\n\n          option.textContent =\n            getVariantName(variant);\n\n          option.dataset.price =\n            variant.price;\n\n          select.appendChild(option);\n\n        }\n      );\n\n\n      wrapper.appendChild(label);\n\n      wrapper.appendChild(select);\n\n      modelsContainer.appendChild(wrapper);\n\n    }\n\n  }\n\n\n  \/* =================================================\n     OPTIONS CADEAU\n  ================================================= *\/\n\n  function createFreeOptions() {\n\n    freeSelect.innerHTML =\n      '\u003coption value=\"\"\u003eChoisissez votre modèle\u003c\/option\u003e';\n\n\n    variants.forEach(\n      function(variant) {\n\n        if (!variant.available)\n          return;\n\n\n        const option =\n          document.createElement('option');\n\n        option.value =\n          variant.id;\n\n        option.textContent =\n          getVariantName(variant);\n\n        freeSelect.appendChild(option);\n\n      }\n    );\n\n  }\n\n\n  \/* =================================================\n     CHANGEMENT D'OFFRE\n  ================================================= *\/\n\n  packs.forEach(\n    function(radio) {\n\n      radio.addEventListener(\n        'change',\n        function() {\n\n          const quantity =\n            parseInt(this.value);\n\n\n          createModelSelectors(\n            quantity\n          );\n\n\n          if (quantity === 2) {\n\n            freeBox.style.display =\n              'block';\n\n          } else {\n\n            freeBox.style.display =\n              'none';\n\n            freeSelect.value =\n              \"\";\n\n          }\n\n\n          updateTotal();\n\n        }\n      );\n\n    }\n  );\n\n\n  \/* =================================================\n     TOTAL\n  ================================================= *\/\n\n  modelsContainer.addEventListener(\n    'change',\n    updateTotal\n  );\n\n\n  function updateTotal() {\n\n    const selected =\n      selector.querySelectorAll(\n        '.sponki-model-select'\n      );\n\n\n    let total = 0;\n\n    let count = 0;\n\n\n    selected.forEach(\n      function(select) {\n\n        const option =\n          select.options[\n            select.selectedIndex\n          ];\n\n\n        if (\n          option \u0026\u0026\n          option.value\n        ) {\n\n          total +=\n            parseInt(\n              option.dataset.price || 0\n            );\n\n          count++;\n\n        }\n\n      }\n    );\n\n\n    if (count === 0) {\n\n      totalBox.textContent =\n        \"\";\n\n      return;\n\n    }\n\n\n    const selectedPack =\n      selector.querySelector(\n        'input[name=\"sponki-pack\"]:checked'\n      );\n\n\n    const quantity =\n      selectedPack\n        ? parseInt(selectedPack.value)\n        : 1;\n\n\n    let displayTotal =\n      total;\n\n\n    if (quantity === 2) {\n\n      displayTotal =\n        Math.round(\n          total * 0.70\n        );\n\n    }\n\n\n    if (quantity === 3) {\n\n      displayTotal =\n        Math.round(\n          total * 0.57\n        );\n\n    }\n\n\n    totalBox.innerHTML =\n      \"Total estimé : \" +\n      (displayTotal \/ 100)\n        .toFixed(2)\n        .replace('.', ',') +\n      \" €\";\n\n  }\n\n\n  \/* =================================================\n     VARIANTES SÉLECTIONNÉES\n  ================================================= *\/\n\n  function getSelectedVariants() {\n\n    const selects =\n      selector.querySelectorAll(\n        '.sponki-model-select'\n      );\n\n\n    const ids = [];\n\n\n    selects.forEach(\n      function(select) {\n\n        if (select.value) {\n\n          ids.push(\n            Number(select.value)\n          );\n\n        }\n\n      }\n    );\n\n\n    return ids;\n\n  }\n\n\n  \/* =================================================\n     AJOUT AU PANIER\n  ================================================= *\/\n\n  function addToCart(redirect) {\n\n    errorBox.textContent =\n      \"\";\n\n\n    const selectedPack =\n      selector.querySelector(\n        'input[name=\"sponki-pack\"]:checked'\n      );\n\n\n    const quantity =\n      selectedPack\n        ? parseInt(selectedPack.value)\n        : 1;\n\n\n    const variantIds =\n      getSelectedVariants();\n\n\n    if (\n      variantIds.length !== quantity\n    ) {\n\n      errorBox.textContent =\n        \"Veuillez sélectionner tous vos modèles Sponki.\";\n\n      return;\n\n    }\n\n\n    if (\n      quantity === 2 \u0026\u0026\n      !freeSelect.value\n    ) {\n\n      errorBox.textContent =\n        \"Veuillez choisir votre Sponki offerte.\";\n\n      return;\n\n    }\n\n\n    const items =\n      variantIds.map(\n        function(id) {\n\n          return {\n            id: id,\n            quantity: 1\n          };\n\n        }\n      );\n\n\n    addButton.disabled =\n      true;\n\n    buyButton.disabled =\n      true;\n\n\n    \/*\n       INFORMATION DU CADEAU\n\n       On l'enregistre dans les attributs\n       du panier afin que le modèle choisi\n       soit visible dans la commande.\n    *\/\n\n    let cartAttributes = {};\n\n\n    if (\n      quantity === 2 \u0026\u0026\n      freeSelect.value\n    ) {\n\n      const freeVariant =\n        variants.find(\n          function(v) {\n\n            return String(v.id) ===\n              String(freeSelect.value);\n\n          }\n        );\n\n\n      if (freeVariant) {\n\n        cartAttributes[\n          \"🎁 Sponki offerte\"\n        ] =\n          getVariantName(\n            freeVariant\n          );\n\n      }\n\n    }\n\n\n    \/*\n       INFORMATION DE L'OFFRE\n    *\/\n\n    if (quantity === 2) {\n\n      cartAttributes[\n        \"Offre sélectionnée\"\n      ] =\n        \"2 Sponki -30 % + 1 Sponki offerte\";\n\n    }\n\n\n    if (quantity === 3) {\n\n      cartAttributes[\n        \"Offre sélectionnée\"\n      ] =\n        \"3 Sponki -43 %\";\n\n    }\n\n\n    if (quantity === 1) {\n\n      cartAttributes[\n        \"Offre sélectionnée\"\n      ] =\n        \"1 Sponki - Prix normal\";\n\n    }\n\n\n    \/*\n       ÉTAPE 1 :\n       ENREGISTRER LES INFORMATIONS\n    *\/\n\n    fetch(\n      '\/cart\/update.js',\n      {\n        method: 'POST',\n        headers: {\n          'Content-Type':\n            'application\/json',\n          'Accept':\n            'application\/json'\n        },\n        body: JSON.stringify({\n          attributes:\n            cartAttributes\n        })\n      }\n    )\n\n    .then(function(response) {\n\n      if (!response.ok) {\n\n        throw new Error(\n          \"Impossible d'enregistrer votre sélection.\"\n        );\n\n      }\n\n      return response.json();\n\n    })\n\n\n    \/*\n       ÉTAPE 2 :\n       AJOUTER LES SPONKI\n    *\/\n\n    .then(function() {\n\n      return fetch(\n        '\/cart\/add.js',\n        {\n          method: 'POST',\n          headers: {\n            'Content-Type':\n              'application\/json',\n            'Accept':\n              'application\/json'\n          },\n          body: JSON.stringify({\n            items: items\n          })\n        }\n      );\n\n    })\n\n\n    .then(function(response) {\n\n      if (!response.ok) {\n\n        return response.json()\n          .then(\n            function(data) {\n\n              throw new Error(\n                data.description ||\n                \"Erreur lors de l'ajout au panier.\"\n              );\n\n            }\n          );\n\n      }\n\n      return response.json();\n\n    })\n\n\n    .then(function() {\n\n      if (redirect) {\n\n        window.location.href =\n          '\/checkout';\n\n      } else {\n\n        window.location.href =\n          '\/cart';\n\n      }\n\n    })\n\n\n    .catch(function(error) {\n\n      console.error(error);\n\n      errorBox.textContent =\n        error.message ||\n        \"Une erreur est survenue.\";\n\n      addButton.disabled =\n        false;\n\n      buyButton.disabled =\n        false;\n\n    });\n\n  }\n\n\n  \/* =================================================\n     BOUTON PANIER\n  ================================================= *\/\n\n  addButton.addEventListener(\n    'click',\n    function() {\n\n      addToCart(false);\n\n    }\n  );\n\n\n  \/* =================================================\n     ACHETER MAINTENANT\n  ================================================= *\/\n\n  buyButton.addEventListener(\n    'click',\n    function() {\n\n      addToCart(true);\n\n    }\n  );\n\n\n})();\n\n\u003c\/script\u003e","brand":"us","offers":[{"title":"Sponki Cochon","offer_id":54498396504402,"sku":null,"price":9.99,"currency_code":"EUR","in_stock":true},{"title":"Sponki Grenouille","offer_id":54513167106386,"sku":null,"price":9.99,"currency_code":"EUR","in_stock":true},{"title":"Sponki Lapin","offer_id":54513167139154,"sku":null,"price":9.99,"currency_code":"EUR","in_stock":true},{"title":"Sponki Ours","offer_id":54513167171922,"sku":null,"price":9.99,"currency_code":"EUR","in_stock":true},{"title":"Sponki tigre","offer_id":54513167204690,"sku":null,"price":9.99,"currency_code":"EUR","in_stock":true},{"title":"Sponki Chien","offer_id":54513167237458,"sku":null,"price":9.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1106\/5540\/6418\/files\/ChatGPT_Image_2_sept._2026_03_31_19.png?v=1788312712"}],"url":"https:\/\/sponki.fr\/collections\/frontpage.oembed","provider":"Sponki","version":"1.0","type":"link"}