{"title":"Maglie Gara Personalizzate Off Store","description":"\u003cp\u003eLe \u003cstrong\u003eMaglie Gara Personalizzate Off Store\u003c\/strong\u003e sono le maglie da cross ed enduro disegnate a Moncalvo e stampate in sublimazione, senza limiti di colori e in tutte le taglie.\u003c\/p\u003e","products":[{"product_id":"maglia-gara-mx-enduro-personalizzata-off-store","title":"Maglia gara MX Enduro personalizzata Off Store","description":"\u003ch1\u003eMaglia gara MX Enduro personalizzata Off Store\u003c\/h1\u003e\u003cp\u003eLa \u003cstrong\u003eMaglia gara MX Enduro personalizzata Off Store\u003c\/strong\u003e è la maglia da cross ed enduro con la tua grafica: scegli i colori, aggiungi nome, numero e loghi degli sponsor e noi la realizziamo con stampa sublimatica, anche in un solo pezzo. La grafica viene preparata nel nostro negozio di Moncalvo (AT), la stampa e la confezione nel laboratorio di Pavia.\u003c\/p\u003e\u003ch2\u003eCaratteristiche\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003ePersonalizzazione al 100%, senza limiti di colori\u003c\/li\u003e\n\u003cli\u003eStampa sublimatica: i colori fanno parte del tessuto e non si staccano\u003c\/li\u003e\n\u003cli\u003eMateriale molto resistente, pensato per l'uso in gara\u003c\/li\u003e\n\u003cli\u003eInserti traspiranti sui fianchi\u003c\/li\u003e\n\u003cli\u003eCollo a girocollo\u003c\/li\u003e\n\u003cli\u003eDisponibile in tutte le taglie, dalla XS alla XXXL\u003c\/li\u003e\n\u003cli\u003eDisegno su tue indicazioni senza costi aggiuntivi\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch2\u003eCome personalizzarla\u003c\/h2\u003e\u003cp\u003eScegli la taglia e usa il riquadro \u003cstrong\u003eCrea la tua maglia\u003c\/strong\u003e qui sopra: colori, motivo, nome, numero e logo, con l'anteprima davanti e dietro. Prima della stampa ti mandiamo la bozza grafica da approvare.\u003c\/p\u003e\u003ch2\u003eQuantità\u003c\/h2\u003e\u003cp\u003eRealizziamo da 1 a 100 maglie in tempi brevi. Per squadre e motoclub con quantità maggiori contattaci per un prezzo dedicato.\u003c\/p\u003e\n\u003cdiv id=\"osMg\" class=\"osmg\" style=\"display:none\"\u003e\n\u003cstyle\u003e\n.osmg{border:1px solid #e3e3e3;border-radius:12px;padding:1rem;margin:0 0 1rem;background:#f7f7f5;color:#1b1b1b}\n.osmg *{box-sizing:border-box}\n.osmg .m-h{font-weight:800;font-size:1.1rem;margin:0 0 .6rem;text-transform:uppercase;letter-spacing:.02em}\n.osmg .m-stage{background:#fff;border-radius:10px;padding:.6rem;text-align:center;margin-bottom:.6rem}\n.osmg svg{width:100%;max-width:300px;height:auto}\n.osmg .m-tabs{display:flex;gap:.3rem;justify-content:center;margin-top:.3rem}\n.osmg .m-tabs button{border:1px solid #ccc;background:#fff;border-radius:999px;padding:.25rem .8rem;font-size:.8rem;cursor:pointer;color:#1b1b1b}\n.osmg .m-tabs button[aria-pressed=true]{background:#1b1b1b;color:#fff;border-color:#1b1b1b}\n.osmg .m-l{display:block;font-size:.82rem;color:#555;margin:.55rem 0 .25rem}\n.osmg .m-sw{display:flex;flex-wrap:wrap;gap:.3rem}\n.osmg .m-sw button{width:26px;height:26px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #bbb;cursor:pointer;padding:0}\n.osmg .m-sw button[aria-pressed=true]{box-shadow:0 0 0 3px #1b1b1b}\n.osmg .m-sw input[type=color]{width:26px;height:26px;border:0;padding:0;background:none;cursor:pointer}\n.osmg .m-row{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}\n.osmg input[type=text],.osmg select,.osmg textarea{width:100%;padding:.5rem .6rem;border:1px solid #cfcfcf;border-radius:6px;font:inherit;background:#fff;color:#1b1b1b}\n.osmg input[type=file]{font-size:.85rem;max-width:100%}\n.osmg .m-n{font-size:.78rem;color:#6b6b6b;margin:.6rem 0 0}\n.osmg .m-err{color:#b00020;font-size:.8rem;margin:.2rem 0 0}\n.osmg details{border-top:1px solid #e3e3e3;padding-top:.4rem;margin-top:.6rem}\n.osmg summary{cursor:pointer;font-weight:700;font-size:.9rem}\n\u003c\/style\u003e\n\u003cp class=\"m-h\"\u003eCrea la tua maglia\u003c\/p\u003e\n\u003cdiv class=\"m-stage\"\u003e\n\u003csvg id=\"mgSvg\" viewbox=\"0 0 400 430\" role=\"img\" aria-label=\"Anteprima della maglia personalizzata\"\u003e\n\u003cdefs\u003e\n\u003cclippath id=\"mgClip\"\u003e\u003cpath d=\"M140 40 Q200 72 260 40 L300 60 L300 400 Q200 418 100 400 L100 60 Z\"\u003e\u003c\/path\u003e\u003c\/clippath\u003e\n\u003cpattern id=\"mgPS\" width=\"36\" height=\"36\" patternunits=\"userSpaceOnUse\" patterntransform=\"rotate(35)\"\u003e\u003crect width=\"14\" height=\"36\" class=\"mg-pc\"\u003e\u003c\/rect\u003e\u003c\/pattern\u003e\n\u003cpattern id=\"mgPB\" width=\"400\" height=\"70\" patternunits=\"userSpaceOnUse\"\u003e\u003crect y=\"38\" width=\"400\" height=\"22\" class=\"mg-pc\"\u003e\u003c\/rect\u003e\u003c\/pattern\u003e\n\u003cpattern id=\"mgPC\" width=\"40\" height=\"40\" patternunits=\"userSpaceOnUse\"\u003e\u003crect width=\"20\" height=\"20\" class=\"mg-pc\"\u003e\u003c\/rect\u003e\u003crect x=\"20\" y=\"20\" width=\"20\" height=\"20\" class=\"mg-pc\"\u003e\u003c\/rect\u003e\u003c\/pattern\u003e\n\u003cpattern id=\"mgPV\" width=\"400\" height=\"430\" patternunits=\"userSpaceOnUse\"\u003e\u003cpath d=\"M100 120 L200 230 L300 120 L300 170 L200 280 L100 170 Z\" class=\"mg-pc\"\u003e\u003c\/path\u003e\u003c\/pattern\u003e\n\u003c\/defs\u003e\n\u003cg id=\"mgSleeves\"\u003e\u003cpath d=\"M100 60 L40 112 L8 300 L62 312 L100 172 Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M300 60 L360 112 L392 300 L338 312 L300 172 Z\"\u003e\u003c\/path\u003e\u003c\/g\u003e\n\u003cg id=\"mgCuffs\"\u003e\u003cpath d=\"M12 282 L64 294 L62 312 L8 300 Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M388 282 L336 294 L338 312 L392 300 Z\"\u003e\u003c\/path\u003e\u003c\/g\u003e\n\u003cpath id=\"mgBody\" d=\"M140 40 Q200 72 260 40 L300 60 L300 400 Q200 418 100 400 L100 60 Z\"\u003e\u003c\/path\u003e\n\u003crect id=\"mgPat\" x=\"0\" y=\"0\" width=\"400\" height=\"430\" clip-path=\"url(#mgClip)\" fill=\"none\"\u003e\u003c\/rect\u003e\n\u003cg id=\"mgSides\"\u003e\u003cpath d=\"M100 205 L124 205 L124 403 Q110 402 100 400 Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M300 205 L276 205 L276 403 Q290 402 300 400 Z\"\u003e\u003c\/path\u003e\u003c\/g\u003e\n\u003cpath id=\"mgCollar\" d=\"M140 40 Q200 72 260 40 L266 47 Q200 86 134 47 Z\"\u003e\u003c\/path\u003e\n\u003cg id=\"mgFront\"\u003e\n\u003cimage id=\"mgLogo\" x=\"160\" y=\"105\" width=\"80\" height=\"80\" preserveaspectratio=\"xMidYMid meet\" href=\"\"\u003e\u003c\/image\u003e\n\u003ctext id=\"mgFN\" x=\"200\" y=\"300\" text-anchor=\"middle\" font-size=\"80\" font-weight=\"900\"\u003e\u003c\/text\u003e\n\u003ctext id=\"mgSL\" x=\"58\" y=\"215\" text-anchor=\"middle\" font-size=\"34\" font-weight=\"900\" transform=\"rotate(-12 58 215)\"\u003e\u003c\/text\u003e\n\u003ctext id=\"mgSR\" x=\"342\" y=\"215\" text-anchor=\"middle\" font-size=\"34\" font-weight=\"900\" transform=\"rotate(12 342 215)\"\u003e\u003c\/text\u003e\n\u003c\/g\u003e\n\u003cg id=\"mgBack\" style=\"display:none\"\u003e\n\u003ctext id=\"mgBName\" x=\"200\" y=\"125\" text-anchor=\"middle\" font-size=\"34\" font-weight=\"900\" letter-spacing=\"2\"\u003e\u003c\/text\u003e\n\u003ctext id=\"mgBN\" x=\"200\" y=\"290\" text-anchor=\"middle\" font-size=\"150\" font-weight=\"900\"\u003e\u003c\/text\u003e\n\u003c\/g\u003e\n\u003c\/svg\u003e\n\u003cdiv class=\"m-tabs\"\u003e\n\u003cbutton type=\"button\" data-s=\"f\" aria-pressed=\"true\"\u003eDavanti\u003c\/button\u003e\u003cbutton type=\"button\" data-s=\"b\" aria-pressed=\"false\"\u003eDietro\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cspan class=\"m-l\"\u003eCorpo maglia\u003c\/span\u003e\u003cdiv class=\"m-sw\" data-k=\"body\"\u003e\u003c\/div\u003e\n\u003cspan class=\"m-l\"\u003eManiche\u003c\/span\u003e\u003cdiv class=\"m-sw\" data-k=\"sleeves\"\u003e\u003c\/div\u003e\n\u003cspan class=\"m-l\"\u003eFianchi, polsini e collo\u003c\/span\u003e\u003cdiv class=\"m-sw\" data-k=\"accent\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"m-row\"\u003e\n\u003cdiv\u003e\n\u003clabel class=\"m-l\" for=\"mgPatSel\"\u003eMotivo sul corpo\u003c\/label\u003e\n\u003cselect id=\"mgPatSel\" name=\"properties[Motivo]\"\u003e\u003coption value=\"Tinta unita\"\u003eTinta unita\u003c\/option\u003e\n\u003coption value=\"Strisce diagonali\"\u003eStrisce diagonali\u003c\/option\u003e\n\u003coption value=\"Bande orizzontali\"\u003eBande orizzontali\u003c\/option\u003e\n\u003coption value=\"Scacchi\"\u003eScacchi\u003c\/option\u003e\n\u003coption value=\"V sul petto\"\u003eV sul petto\u003c\/option\u003e\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003clabel class=\"m-l\" for=\"mgFont\"\u003eCarattere\u003c\/label\u003e\n\u003cselect id=\"mgFont\" name=\"properties[Carattere]\"\u003e\u003coption value=\"Racing\"\u003eRacing\u003c\/option\u003e\n\u003coption value=\"Classico\"\u003eClassico\u003c\/option\u003e\n\u003coption value=\"Squadrato\"\u003eSquadrato\u003c\/option\u003e\u003c\/select\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cspan class=\"m-l\"\u003eColore del motivo\u003c\/span\u003e\u003cdiv class=\"m-sw\" data-k=\"pattern\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"m-row\"\u003e\n\u003cdiv\u003e\n\u003clabel class=\"m-l\" for=\"mgName\"\u003eNome sul retro\u003c\/label\u003e\u003cinput type=\"text\" id=\"mgName\" name=\"properties[Nome sul retro]\" maxlength=\"14\" placeholder=\"ROSSI\"\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003clabel class=\"m-l\" for=\"mgNum\"\u003eNumero di gara\u003c\/label\u003e\u003cinput type=\"text\" id=\"mgNum\" name=\"properties[Numero]\" maxlength=\"3\" inputmode=\"numeric\" placeholder=\"27\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cspan class=\"m-l\"\u003eColore nome e numero\u003c\/span\u003e\u003cdiv class=\"m-sw\" data-k=\"text\"\u003e\u003c\/div\u003e\n\u003clabel class=\"m-l\"\u003e\u003cinput type=\"checkbox\" id=\"mgNumFront\" name=\"properties[Numero davanti]\" value=\"Sì\" checked\u003e Numero anche davanti e sulle maniche\u003c\/label\u003e\n\u003clabel class=\"m-l\" for=\"mgLogoFile\"\u003eCarica il tuo logo o sponsor (PNG, JPG o PDF, max 20 MB)\u003c\/label\u003e\n\u003cinput type=\"file\" id=\"mgLogoFile\" name=\"properties[Logo]\" accept=\"image\/png,image\/jpeg,image\/svg+xml,application\/pdf\"\u003e\n\u003cp class=\"m-err\" id=\"mgErr\"\u003e\u003c\/p\u003e\n\u003clabel class=\"m-l\" for=\"mgNotes\"\u003eNote per la grafica\u003c\/label\u003e\n\u003ctextarea id=\"mgNotes\" name=\"properties[Note grafica]\" rows=\"2\" maxlength=\"500\" placeholder=\"Sponsor sulle maniche, logo motoclub, scritte...\"\u003e\u003c\/textarea\u003e\n\u003cinput type=\"hidden\" name=\"properties[Colore corpo]\" id=\"mgPBody\"\u003e\n\u003cinput type=\"hidden\" name=\"properties[Colore maniche]\" id=\"mgPSleeves\"\u003e\n\u003cinput type=\"hidden\" name=\"properties[Colore fianchi\/collo]\" id=\"mgPAccent\"\u003e\n\u003cinput type=\"hidden\" name=\"properties[Colore motivo]\" id=\"mgPPattern\"\u003e\n\u003cinput type=\"hidden\" name=\"properties[Colore nome\/numero]\" id=\"mgPText\"\u003e\n\u003cinput type=\"file\" name=\"properties[Anteprima]\" id=\"mgPrev\" hidden\u003e\n\u003cp class=\"m-n\"\u003eAnteprima indicativa: prima della stampa ti mandiamo la bozza da approvare.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var box=document.getElementById('osMg'); if(!box||box.dataset.ready) return; box.dataset.ready=1;\n  var PAL=[['Bianco','#ffffff'],['Nero','#141414'],['Grigio','#8a8f94'],['Rosso','#da2128'],['Arancione','#f26b1d'],['Giallo fluo','#e8f20c'],['Verde','#1f9d3a'],['Verde acido','#7fd321'],['Azzurro','#2ea3f2'],['Blu','#1b3fa0'],['Blu navy','#14213d'],['Viola','#6a2c91'],['Rosa fluo','#ff3fa4'],['Bordeaux','#7a1022']];\n  var st={body:'#ffffff',sleeves:'#141414',accent:'#da2128',pattern:'#da2128',text:'#141414'};\n  var nm={body:'Bianco',sleeves:'Nero',accent:'Rosso',pattern:'Rosso',text:'Nero'};\n  var FONTS={Racing:'Impact, \"Arial Black\", sans-serif',Classico:'Georgia, \"Times New Roman\", serif',Squadrato:'\"Courier New\", monospace'};\n  var $=function(i){return document.getElementById(i)};\n  function fill(sel,c){box.querySelectorAll(sel).forEach(function(e){e.setAttribute('fill',c)})}\n  var tmr;\n  function draw(){\n    fill('#mgBody',st.body); fill('#mgSleeves path',st.sleeves); fill('#mgCuffs path',st.accent); fill('#mgSides path',st.accent); fill('#mgCollar',st.accent);\n    box.querySelectorAll('.mg-pc').forEach(function(e){e.setAttribute('fill',st.pattern)});\n    var pm={'Tinta unita':'none','Strisce diagonali':'url(#mgPS)','Bande orizzontali':'url(#mgPB)','Scacchi':'url(#mgPC)','V sul petto':'url(#mgPV)'};\n    $('mgPat').setAttribute('fill',pm[$('mgPatSel').value]||'none');\n    var n=($('mgNum').value||'').replace(\/\\D\/g,'').slice(0,3), name=($('mgName').value||'').toUpperCase().slice(0,14), f=FONTS[$('mgFont').value], fr=$('mgNumFront').checked;\n    ['mgFN','mgSL','mgSR','mgBN','mgBName'].forEach(function(i){var t=$(i);t.setAttribute('fill',st.text);t.setAttribute('font-family',f);t.setAttribute('stroke',st.text==='#ffffff'?'#141414':'#ffffff');t.setAttribute('stroke-width',i==='mgBN'?3:1.5);t.setAttribute('paint-order','stroke')});\n    $('mgFN').textContent=fr?n:''; $('mgSL').textContent=fr?n:''; $('mgSR').textContent=fr?n:''; $('mgBN').textContent=n; $('mgBName').textContent=name;\n    $('mgPBody').value=nm.body; $('mgPSleeves').value=nm.sleeves; $('mgPAccent').value=nm.accent; $('mgPPattern').value=$('mgPatSel').value==='Tinta unita'?'':nm.pattern; $('mgPText').value=nm.text;\n    clearTimeout(tmr); tmr=setTimeout(snap,600);\n  }\n  function one(side){return new Promise(function(res,rej){var c=$('mgSvg').cloneNode(true);c.querySelector('#mgBack').style.display=side==='b'?'':'none';c.querySelector('#mgFront').style.display=side==='b'?'none':'';c.setAttribute('xmlns','http:\/\/www.w3.org\/2000\/svg');c.setAttribute('width','800');c.setAttribute('height','860');var im=new Image();im.onload=function(){res(im)};im.onerror=rej;im.src='data:image\/svg+xml;charset=utf-8,'+encodeURIComponent(new XMLSerializer().serializeToString(c));})}\n  function snap(){Promise.all([one('f'),one('b')]).then(function(ims){var c=document.createElement('canvas');c.width=1600;c.height=860;var x=c.getContext('2d');x.fillStyle='#fff';x.fillRect(0,0,1600,860);x.drawImage(ims[0],0,0,800,860);x.drawImage(ims[1],800,0,800,860);c.toBlob(function(b){if(!b)return;try{var dt=new DataTransfer();dt.items.add(new File([b],'anteprima-maglia.png',{type:'image\/png'}));$('mgPrev').files=dt.files;}catch(e){}},'image\/png');}).catch(function(){});}\n  box.querySelectorAll('.m-sw').forEach(function(sw){var k=sw.getAttribute('data-k');\n    var cu=document.createElement('input');cu.type='color';cu.value=st[k];cu.title='Altro colore';cu.setAttribute('aria-label','Altro colore');\n    PAL.forEach(function(p){var b=document.createElement('button');b.type='button';b.title=p[0];b.setAttribute('aria-label',p[0]);b.style.background=p[1];b.setAttribute('aria-pressed',p[1]===st[k]?'true':'false');\n      b.addEventListener('click',function(){st[k]=p[1];nm[k]=p[0];sw.querySelectorAll('button').forEach(function(x){x.setAttribute('aria-pressed','false')});b.setAttribute('aria-pressed','true');cu.value=p[1];draw();});sw.appendChild(b);});\n    cu.addEventListener('input',function(){st[k]=cu.value;nm[k]='Personalizzato '+cu.value.toUpperCase();sw.querySelectorAll('button').forEach(function(x){x.setAttribute('aria-pressed','false')});draw();});sw.appendChild(cu);});\n  ['mgPatSel','mgName','mgNum','mgFont','mgNumFront'].forEach(function(i){$(i).addEventListener('input',draw);$(i).addEventListener('change',draw)});\n  $('mgLogoFile').addEventListener('change',function(){var f=this.files\u0026\u0026this.files[0];$('mgErr').textContent='';\n    if(f\u0026\u0026f.size\u003e20*1024*1024){$('mgErr').textContent='File troppo grande: massimo 20 MB.';this.value='';$('mgLogo').setAttribute('href','');draw();return;}\n    if(f\u0026\u0026\/^image\\\/\/.test(f.type)){var r=new FileReader();r.onload=function(e){$('mgLogo').setAttribute('href',e.target.result);draw();};r.readAsDataURL(f);}else{$('mgLogo').setAttribute('href','');draw();}});\n  box.querySelectorAll('.m-tabs button').forEach(function(b){b.addEventListener('click',function(){var bk=b.dataset.s==='b';$('mgFront').style.display=bk?'none':'';$('mgBack').style.display=bk?'':'none';box.querySelectorAll('.m-tabs button').forEach(function(x){x.setAttribute('aria-pressed',x===b?'true':'false')});});});\n  function form(){return document.querySelector('form.shopify-product-form')||document.querySelector('form[action*=\"\/cart\/add\"]:not(.payment-terms)')}\n  function place(){var f=form(); if(!f) return false; var btns=f.querySelector('.product-form-buttons'); if(btns) f.insertBefore(box,btns); else f.appendChild(box); f.setAttribute('enctype','multipart\/form-data'); box.style.display=''; return true;}\n  function init(){ if(!place()){ setTimeout(init,300); return;} draw(); }\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',init); else init();\n})();\n\u003c\/script\u003e\n","brand":"Off Store","offers":[{"title":"XS","offer_id":55363897688401,"sku":"OFF-MAGLIA-GARA-PERS-XS","price":45.08,"currency_code":"EUR","in_stock":true},{"title":"S","offer_id":55363897721169,"sku":"OFF-MAGLIA-GARA-PERS-S","price":45.08,"currency_code":"EUR","in_stock":true},{"title":"M","offer_id":55363897753937,"sku":"OFF-MAGLIA-GARA-PERS-M","price":45.08,"currency_code":"EUR","in_stock":true},{"title":"L","offer_id":55363897786705,"sku":"OFF-MAGLIA-GARA-PERS-L","price":45.08,"currency_code":"EUR","in_stock":true},{"title":"XL","offer_id":55363897819473,"sku":"OFF-MAGLIA-GARA-PERS-XL","price":45.08,"currency_code":"EUR","in_stock":true},{"title":"XXL","offer_id":55363897852241,"sku":"OFF-MAGLIA-GARA-PERS-XXL","price":45.08,"currency_code":"EUR","in_stock":true},{"title":"XXXL","offer_id":55363897885009,"sku":"OFF-MAGLIA-GARA-PERS-XXXL","price":45.08,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1088\/8065\/8769\/files\/IMG_7407.jpg?v=1792403988"}],"url":"https:\/\/www.off-store.eu\/collections\/maglie-gara-personalizzate-off-store.oembed","provider":"off-store","version":"1.0","type":"link"}