{"product_id":"stylo-dimpression-3d-recharge-50-metres-offerte","title":"Stylo d'impression 3D + 10 MODELS","description":"\u003cstyle\u003e\n  .svp-outer {\n    width: 100%;\n    padding: clamp(8px, 3vw, 20px) clamp(6px, 2vw, 16px);\n    box-sizing: border-box;\n  }\n  .svp-wrap {\n    position: relative;\n    width: 100%;\n    aspect-ratio: 16 \/ 9;\n    background: #0d0d0d;\n    border-radius: clamp(8px, 1.5vw, 16px);\n    overflow: hidden;\n    box-shadow: 0 2px 8px rgba(0,0,0,.2), 0 14px 40px rgba(0,0,0,.38);\n    font-family: -apple-system, BlinkMacSystemFont, sans-serif;\n    cursor: pointer;\n    box-sizing: border-box;\n  }\n  .svp-video {\n    width: 100%; height: 100%;\n    object-fit: contain; display: block;\n    opacity: 0; transition: opacity .45s ease;\n  }\n  .svp-poster {\n    position: absolute; inset: 0;\n    display: flex; align-items: center; justify-content: center;\n    overflow: hidden; transition: opacity .45s ease;\n  }\n  .svp-poster-bg {\n    position: absolute; inset: 0;\n    background: linear-gradient(135deg, #0f0c29 0%, #302b63 50%, #24243e 100%);\n  }\n  #svp-canvas {\n    position: absolute; inset: 0;\n    width: 100%; height: 100%;\n    object-fit: cover; display: none;\n  }\n  .svp-poster-dim { position: absolute; inset: 0; background: rgba(0,0,0,.28); }\n  .svp-play-big {\n    position: relative; z-index: 3;\n    width: clamp(56px,7vw,88px); height: clamp(56px,7vw,88px);\n    border-radius: 50%;\n    background: rgba(255,255,255,.13);\n    backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);\n    border: 2px solid rgba(255,255,255,.38);\n    display: flex; align-items: center; justify-content: center;\n    transition: transform .22s cubic-bezier(.16,1,.3,1), background .22s ease;\n    box-shadow: 0 4px 24px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.15);\n  }\n  .svp-wrap:hover .svp-play-big { transform: scale(1.1); background: rgba(255,255,255,.22); }\n  .svp-play-big svg { margin-left: clamp(3px,.4vw,5px); width: clamp(22px,3vw,32px); height: clamp(22px,3vw,32px); }\n  .svp-loading {\n    position: absolute; inset: 0; display: none;\n    align-items: center; justify-content: center;\n    pointer-events: none; z-index: 10;\n  }\n  .svp-spinner {\n    width: clamp(32px,4vw,48px); height: clamp(32px,4vw,48px);\n    border: 3px solid rgba(255,255,255,.15);\n    border-top-color: rgba(255,255,255,.85);\n    border-radius: 50%; animation: svp-spin .75s linear infinite;\n  }\n  @keyframes svp-spin { to { transform: rotate(360deg); } }\n  .svp-controls {\n    position: absolute; bottom: 0; left: 0; right: 0;\n    padding: clamp(20px,4vw,36px) clamp(10px,2vw,16px) clamp(10px,1.5vw,14px);\n    background: linear-gradient(to top, rgba(0,0,0,.78) 0%, transparent 100%);\n    display: none; flex-direction: column; gap: clamp(6px,1vw,10px);\n    opacity: 0; transition: opacity .28s ease; z-index: 5;\n  }\n  .svp-wrap:hover .svp-controls,\n  .svp-wrap:focus-within .svp-controls { opacity: 1; }\n  .svp-prog-track {\n    width: 100%; height: 4px; background: rgba(255,255,255,.25);\n    border-radius: 99px; cursor: pointer; position: relative;\n    transition: height .15s ease;\n  }\n  .svp-wrap:hover .svp-prog-track { height: 5px; }\n  .svp-prog-fill {\n    height: 100%; width: 0%; background: #fff;\n    border-radius: 99px; position: relative;\n    pointer-events: none; transition: width .1s linear;\n  }\n  .svp-prog-thumb {\n    position: absolute; right: -6px; top: 50%; transform: translateY(-50%);\n    width: 13px; height: 13px; background: #fff; border-radius: 50%;\n    opacity: 0; transition: opacity .18s ease;\n    box-shadow: 0 1px 4px rgba(0,0,0,.4); pointer-events: none;\n  }\n  .svp-wrap:hover .svp-prog-thumb { opacity: 1; }\n  .svp-row { display: flex; align-items: center; gap: clamp(4px,.8vw,8px); }\n  .svp-btn {\n    background: none; border: none; padding: clamp(3px,.5vw,6px);\n    cursor: pointer; color: #fff;\n    display: flex; align-items: center; justify-content: center;\n    opacity: .82; transition: opacity .15s ease, transform .12s ease;\n    border-radius: 6px; line-height: 1; min-width: 28px; min-height: 28px;\n  }\n  .svp-btn:hover { opacity: 1; transform: scale(1.1); }\n  .svp-time {\n    font-size: clamp(10px,1.2vw,12px); color: rgba(255,255,255,.82);\n    letter-spacing: .02em; white-space: nowrap;\n    padding-left: 4px; font-variant-numeric: tabular-nums;\n  }\n  .svp-gap { flex: 1; }\n  .svp-vol-group { display: flex; align-items: center; gap: 6px; }\n  .svp-vol {\n    -webkit-appearance: none; appearance: none;\n    width: clamp(48px,6vw,72px); height: 4px;\n    background: rgba(255,255,255,.3); border-radius: 99px;\n    cursor: pointer; outline: none;\n  }\n  .svp-vol::-webkit-slider-thumb {\n    -webkit-appearance: none; width: 13px; height: 13px;\n    background: #fff; border-radius: 50%; cursor: pointer;\n    box-shadow: 0 1px 4px rgba(0,0,0,.3);\n  }\n  .svp-vol::-moz-range-thumb {\n    width: 13px; height: 13px; background: #fff;\n    border-radius: 50%; border: none; cursor: pointer;\n  }\n  @media (max-width: 480px) {\n    .svp-outer { padding: 8px 6px; }\n    .svp-vol-group { display: none; }\n    .svp-wrap { border-radius: 10px; }\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"svp-outer\"\u003e\n\u003cdiv id=\"svp-wrap\" class=\"svp-wrap\"\u003e\n\u003cdiv id=\"svp-poster\" class=\"svp-poster\"\u003e\n\u003cdiv class=\"svp-poster-bg\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003ccanvas id=\"svp-canvas\"\u003e\u003c\/canvas\u003e\n\u003cdiv class=\"svp-poster-dim\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv aria-label=\"Lancer la vidéo\" role=\"button\" class=\"svp-play-big\"\u003e\u003csvg fill=\"none\" viewbox=\"0 0 24 24\"\u003e\n          \u003cpath stroke-linejoin=\"round\" stroke-width=\"1.4\" stroke=\"white\" fill=\"white\" d=\"M6 4.5L20 12L6 19.5V4.5Z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cvideo preload=\"none\" playsinline=\"\" id=\"svp-video\" class=\"svp-video\"\u003e\u003c\/video\u003e\n\u003cdiv id=\"svp-loading\" class=\"svp-loading\"\u003e\n\u003cdiv class=\"svp-spinner\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"svp-controls\" class=\"svp-controls\"\u003e\n\u003cdiv id=\"svp-prog\" class=\"svp-prog-track\"\u003e\n\u003cdiv id=\"svp-fill\" class=\"svp-prog-fill\"\u003e\n\u003cdiv class=\"svp-prog-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"svp-row\"\u003e\n\u003cbutton aria-label=\"Lecture\/Pause\" id=\"svp-pp\" class=\"svp-btn\"\u003e \u003csvg fill=\"white\" viewbox=\"0 0 24 24\" height=\"20\" width=\"20\" id=\"svp-iplay\"\u003e\u003cpath d=\"M5 4L19 12L5 20V4Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003csvg style=\"display: none;\" fill=\"white\" viewbox=\"0 0 24 24\" height=\"20\" width=\"20\" id=\"svp-ipause\"\u003e\u003crect rx=\"1\" height=\"16\" width=\"4\" y=\"4\" x=\"6\"\u003e\u003c\/rect\u003e\u003crect rx=\"1\" height=\"16\" width=\"4\" y=\"4\" x=\"14\"\u003e\u003c\/rect\u003e\u003c\/svg\u003e \u003c\/button\u003e \u003cspan id=\"svp-time\" class=\"svp-time\"\u003e0:00 \/ 0:00\u003c\/span\u003e\n\u003cdiv class=\"svp-gap\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"svp-vol-group\"\u003e\n\u003cbutton aria-label=\"Muet\" id=\"svp-mute\" class=\"svp-btn\"\u003e \u003csvg stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"white\" fill=\"none\" viewbox=\"0 0 24 24\" height=\"18\" width=\"18\" id=\"svp-von\"\u003e\n              \u003cpolygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"\u003e\u003c\/polygon\u003e\n              \u003cpath d=\"M19.07 4.93a10 10 0 0 1 0 14.14\"\u003e\u003c\/path\u003e\u003cpath d=\"M15.54 8.46a5 5 0 0 1 0 7.07\"\u003e\u003c\/path\u003e\n            \u003c\/svg\u003e \u003csvg style=\"display: none;\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"white\" fill=\"none\" viewbox=\"0 0 24 24\" height=\"18\" width=\"18\" id=\"svp-voff\"\u003e\n              \u003cpolygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"\u003e\u003c\/polygon\u003e\n              \u003cline y2=\"15\" x2=\"17\" y1=\"9\" x1=\"23\"\u003e\u003c\/line\u003e\u003cline y2=\"15\" x2=\"23\" y1=\"9\" x1=\"17\"\u003e\u003c\/line\u003e\n            \u003c\/svg\u003e \u003c\/button\u003e \u003cinput aria-label=\"Volume\" value=\"1\" step=\"0.05\" max=\"1\" min=\"0\" id=\"svp-vol\" type=\"range\" class=\"svp-vol\"\u003e\n\u003c\/div\u003e\n\u003cbutton aria-label=\"Plein écran\" id=\"svp-fs\" class=\"svp-btn\"\u003e \u003csvg stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"white\" fill=\"none\" viewbox=\"0 0 24 24\" height=\"18\" width=\"18\"\u003e\n            \u003cpolyline points=\"15 3 21 3 21 9\"\u003e\u003c\/polyline\u003e\u003cpolyline points=\"9 21 3 21 3 15\"\u003e\u003c\/polyline\u003e\n            \u003cline y2=\"10\" x2=\"14\" y1=\"3\" x1=\"21\"\u003e\u003c\/line\u003e\u003cline y2=\"14\" x2=\"10\" y1=\"21\" x1=\"3\"\u003e\u003c\/line\u003e\n          \u003c\/svg\u003e \u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n(function(){\n  var SRC='https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/45108c1624e24bba98e032d21e799fbe.mp4';\n  var wrap=document.getElementById('svp-wrap'),\n      video=document.getElementById('svp-video'),\n      poster=document.getElementById('svp-poster'),\n      controls=document.getElementById('svp-controls'),\n      fill=document.getElementById('svp-fill'),\n      timeEl=document.getElementById('svp-time'),\n      loading=document.getElementById('svp-loading'),\n      prog=document.getElementById('svp-prog'),\n      canvas=document.getElementById('svp-canvas');\n  var ready=false, dragging=false;\n\n  \/* Capture miniature + détecte les dimensions réelles *\/\n  (function(){\n    var t=document.createElement('video');\n    t.crossOrigin='anonymous'; t.muted=true; t.playsInline=true; t.preload='metadata'; t.src=SRC;\n    t.addEventListener('loadedmetadata',function(){\n      if(t.videoWidth\u0026\u0026t.videoHeight) wrap.style.aspectRatio=t.videoWidth+'\/'+t.videoHeight;\n      t.currentTime=0.05;\n    });\n    t.addEventListener('seeked',function(){\n      try{\n        canvas.width=t.videoWidth||1280; canvas.height=t.videoHeight||720;\n        canvas.getContext('2d').drawImage(t,0,0,canvas.width,canvas.height);\n        canvas.style.display='block';\n      }catch(e){}\n      t.src='';\n    });\n  })();\n\n  \/* Clic sur le poster → charge et joue *\/\n  poster.addEventListener('click',function(){\n    if(ready)return; ready=true;\n    loading.style.display='flex';\n    video.src=SRC; video.load();\n    video.addEventListener('loadedmetadata',function(){\n      if(video.videoWidth\u0026\u0026video.videoHeight) wrap.style.aspectRatio=video.videoWidth+'\/'+video.videoHeight;\n    });\n    video.addEventListener('canplay',function onC(){\n      video.removeEventListener('canplay',onC);\n      loading.style.display='none';\n      poster.style.opacity='0'; video.style.opacity='1';\n      controls.style.display='flex';\n      setTimeout(function(){poster.style.display='none';},460);\n      video.play(); syncPP();\n    });\n    video.addEventListener('timeupdate',onTime);\n    video.addEventListener('ended',syncPP);\n    video.addEventListener('waiting',function(){loading.style.display='flex';});\n    video.addEventListener('playing',function(){loading.style.display='none';});\n    wrap.addEventListener('click',function(e){if(!e.target.closest('.svp-controls'))toggle();});\n  });\n\n  document.getElementById('svp-pp').addEventListener('click',toggle);\n  function toggle(){if(!ready)return; video.paused?video.play():video.pause(); syncPP();}\n  function syncPP(){\n    var p=video.paused||video.ended;\n    document.getElementById('svp-iplay').style.display=p?'':'none';\n    document.getElementById('svp-ipause').style.display=p?'none':'';\n  }\n  function onTime(){\n    if(dragging||!video.duration)return;\n    fill.style.width=(video.currentTime\/video.duration*100)+'%';\n    timeEl.textContent=fmt(video.currentTime)+' \/ '+fmt(video.duration);\n  }\n  prog.addEventListener('mousedown',function(e){dragging=true;seek(e);});\n  prog.addEventListener('touchstart',function(e){dragging=true;seek(e.touches[0]);},{passive:true});\n  document.addEventListener('mousemove',function(e){if(dragging)seek(e);});\n  document.addEventListener('touchmove',function(e){if(dragging)seek(e.touches[0]);},{passive:true});\n  document.addEventListener('mouseup',function(){dragging=false;});\n  document.addEventListener('touchend',function(){dragging=false;});\n  function seek(e){\n    var r=prog.getBoundingClientRect(),ratio=Math.min(1,Math.max(0,(e.clientX-r.left)\/r.width));\n    fill.style.width=(ratio*100)+'%'; video.currentTime=ratio*(video.duration||0);\n  }\n  document.getElementById('svp-vol').addEventListener('input',function(){\n    video.volume=+this.value; video.muted=+this.value===0; syncMute();\n  });\n  document.getElementById('svp-mute').addEventListener('click',function(){\n    video.muted=!video.muted;\n    if(!video.muted\u0026\u0026video.volume===0){video.volume=0.5;document.getElementById('svp-vol').value=0.5;}\n    syncMute();\n  });\n  function syncMute(){\n    var m=video.muted||video.volume===0;\n    document.getElementById('svp-von').style.display=m?'none':'';\n    document.getElementById('svp-voff').style.display=m?'':'none';\n  }\n  document.getElementById('svp-fs').addEventListener('click',function(){\n    if(document.fullscreenElement||document.webkitFullscreenElement){\n      (document.exitFullscreen||document.webkitExitFullscreen).call(document);\n    }else if(wrap.requestFullscreen)wrap.requestFullscreen();\n    else if(wrap.webkitRequestFullscreen)wrap.webkitRequestFullscreen();\n  });\n  function fmt(s){s=Math.floor(s||0);var m=Math.floor(s\/60),sec=s%60;return m+':'+(sec\u003c10?'0':'')+sec;}\n})();\n\u003c\/script\u003e‎ \u003c!--  --\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0710\/5970\/1804\/files\/1_146917e7-b8a8-4827-b67f-0f9d1c8e612f.webp?v=1772748804\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0710\/5970\/1804\/files\/3.webp?v=1772748804\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0710\/5970\/1804\/files\/2_1cc061da-d7eb-4d91-879a-f40ceed8e442.webp?v=1772748804\"\u003e‎ \u003c\/p\u003e","brand":"Sweet Home Déco \u0026 Famille","offers":[{"title":"Blanc","offer_id":45556670267436,"sku":null,"price":32.0,"currency_code":"TND","in_stock":false},{"title":"Rose","offer_id":45546055368748,"sku":null,"price":32.0,"currency_code":"TND","in_stock":false},{"title":"Pack Blanc (Stylo Blanc + Recharge 50 mètres) à 50 Dinars au lieu de 54 Dinars","offer_id":45556691271724,"sku":null,"price":43.0,"currency_code":"TND","in_stock":false},{"title":"Bleu","offer_id":45571242524716,"sku":null,"price":32.0,"currency_code":"TND","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0710\/5970\/1804\/files\/Untitled_design_24_4bf8d510-cf3a-4375-81fc-18f1a717224c.webp?v=1772806553","url":"https:\/\/sweethome-store.tn\/products\/stylo-dimpression-3d-recharge-50-metres-offerte","provider":"Sweet Home Déco \u0026 Famille","version":"1.0","type":"link"}