MAKE IT YOURS

FLAKED.

FLAKED WRAP · DIAMOND SPARKLE FILM

Diamond sparkle vinyl wrap for motorcycles and cars

FLAKED is a high-impact sparkle wrap for motorcycle fairings and automotive panels. Shop Black, White and Pink in 54-inch-wide rolls, then use Find Your Roll Length for a starting estimate for your bike. Worldwide shipping, including the United States.

FLAKED WRAP — Diamond sparkle vinyl film for cars and motorcycles. Worldwide shipping, including the United States. © 2026.

(function () { var scheduled = false; function buildWordmark(title) { if (title.getAttribute('data-luxury-wordmark') === 'true') return; title.textContent = ''; var wordmark = document.createElement('span'); wordmark.className = 'flaked-store-nav__wordmark'; wordmark.textContent = 'FLAKED.'; var subtitle = document.createElement('span'); subtitle.className = 'flaked-store-nav__subtitle'; subtitle.textContent = 'HIGH-IMPACT SPARKLE FILM'; title.appendChild(wordmark); title.appendChild(subtitle); title.setAttribute('data-luxury-wordmark', 'true'); title.setAttribute('role', 'link'); title.setAttribute('tabindex', '0'); title.setAttribute('aria-label', 'Go to FLAKED home'); function goHome(event) { if (event) { event.preventDefault(); event.stopPropagation(); } var nav = title.closest('.flaked-store-nav'); var home = nav && nav.querySelector('.flaked-store-nav__home'); if (home) home.click(); else { window.location.hash = ''; } } title.addEventListener('click', goHome); title.addEventListener('keydown', function (event) { if (event.key === 'Enter' || event.key === ' ') goHome(event); }); } function syncLuxuryHeader() { scheduled = false; var root = document.querySelector('#my-store-142008311'); if (!root) return; var nav = root.querySelector('.flaked-store-nav'); if (!nav) return; var title = nav.querySelector('.flaked-store-nav__title'); if (title) buildWordmark(title); var isCatalog = !!root.querySelector('.grid-product') && !root.querySelector('.product-details'); nav.classList.toggle('flaked-store-nav--catalog', isCatalog); } function scheduleHeaderSync() { if (scheduled) return; scheduled = true; window.requestAnimationFrame(syncLuxuryHeader); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', scheduleHeaderSync); } else { scheduleHeaderSync(); } new MutationObserver(scheduleHeaderSync).observe(document.body, { childList: true, subtree: true }); window.addEventListener('hashchange', scheduleHeaderSync); })();
(function () { var testProductId = 862597073; var wantsTest = new URLSearchParams(window.location.search).get('checkout-test') === '1'; if (!wantsTest) return; var opened = false; var attempts = 0; function openTestProduct() { if (opened) return; if (window.location.hash !== '#shop') window.location.hash = 'shop'; if (window.Ecwid && typeof window.Ecwid.openPage === 'function') { opened = true; window.Ecwid.openPage('product', { id: testProductId }); } } function start() { if (window.Ecwid && Ecwid.OnAPILoaded && typeof Ecwid.OnAPILoaded.add === 'function') { Ecwid.OnAPILoaded.add(openTestProduct); } var timer = window.setInterval(function () { openTestProduct(); attempts += 1; if (opened || attempts > 100) window.clearInterval(timer); }, 100); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); } })(); (function(){ if(window.__flakedComingSoonTeasersV2)return; window.__flakedComingSoonTeasersV2=true; var timer=0,tries=0; var teasers=[ {key:'purple',title:'FLAKED PURPLE',label:'FLAKED PURPLE — Coming soon',image:'https://d2j6dbq0eux0bg.cloudfront.net/images/142008311/products/862840869/6221466777.jpg'}, {key:'sky-blue',title:'FLAKED SKY BLUE',label:'FLAKED SKY BLUE — Coming soon',image:'https://d2j6dbq0eux0bg.cloudfront.net/images/142008311/products/863813124/6228766467.jpg'} ]; function buildCard(sample,item){ var card=document.createElement('div'); card.className=sample.className.replace(/grid-product--id-\d+/g,'').replace(/ec-store-productsGrid-cell-inTheBag/g,'').trim()+' flaked-coming-soon-card flaked-coming-soon-card--'+item.key; card.setAttribute('data-flaked-teaser',item.key); card.setAttribute('aria-label',item.label); card.setAttribute('aria-disabled','true'); var wrap=document.createElement('div');wrap.className='grid-product__wrap'; var inner=document.createElement('div');inner.className='grid-product__wrap-inner'; var image=document.createElement('div');image.className='grid-product__image flaked-coming-soon-card__image';image.setAttribute('aria-hidden','true'); var imageWrap=document.createElement('div');imageWrap.className='grid-product__image-wrap'; var picture=document.createElement('img');picture.className='grid-product__picture';picture.src=item.image;picture.alt='';picture.loading='eager'; var badge=document.createElement('span');badge.className='flaked-coming-soon-card__badge';badge.textContent='COMING SOON'; var title=document.createElement('div');title.className='grid-product__title'; var titleInner=document.createElement('div');titleInner.className='grid-product__title-inner';titleInner.textContent=item.title; var status=document.createElement('div');status.className='flaked-coming-soon-card__status';status.textContent='Not yet available'; imageWrap.appendChild(picture);image.appendChild(imageWrap);image.appendChild(badge);titleInner.appendChild(status);title.appendChild(titleInner);inner.appendChild(image);inner.appendChild(title);wrap.appendChild(inner);card.appendChild(wrap); return card; } function addTeasers(){ var root=document.querySelector('#my-store-142008311'); var grid=root&&root.querySelector('.grid__products'); if(!grid)return false; if(root.querySelector('.product-details,.ec-cart'))return false; grid.classList.add('flaked-has-teaser'); grid.querySelectorAll('.flaked-coming-soon-card:not([data-flaked-teaser])').forEach(function(card){card.remove()}); var sample=grid.querySelector('.grid-product:not(.grid-product--id-862597073):not(.flaked-coming-soon-card)'); if(!sample)return false; teasers.forEach(function(item){if(!grid.querySelector('[data-flaked-teaser="'+item.key+'"]'))grid.appendChild(buildCard(sample,item))}); return teasers.every(function(item){return !!grid.querySelector('[data-flaked-teaser="'+item.key+'"]')}); } function run(){window.clearInterval(timer);tries=0;if(addTeasers())return;timer=window.setInterval(function(){tries++;if(addTeasers()||tries>40)window.clearInterval(timer)},150)} if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',run);else run(); window.addEventListener('hashchange',function(){window.setTimeout(run,80)}); if(window.Ecwid&&Ecwid.OnPageLoaded&&typeof Ecwid.OnPageLoaded.add==='function')Ecwid.OnPageLoaded.add(function(){window.setTimeout(run,60)}); })();
← BACK TO SHOPFLAKED.WRAP

MAKE IT YOURS

CUSTOM TAG.

Type your name, @handle or phrase and see it in diamond sparkle before we cut it.
LIVE PREVIEW250 mm / 9.8 in wide
@flaked.wrap
Custom text decal$39.99

Includes a pair — two matching custom text decals.

INCLUDEDPair of matching decals (2 pieces)CUTPrecision plotter-cut textHEIGHTScales to your textLIMITMaximum 24 characters

Connecting securely to the FLAKED.WRAP shop…

Please check spelling, capitals, dots and underscores. Your text is sent to the order exactly as entered.
MADE IN LATVIA1–2 working daysWORLDWIDETracked shippingSECURECard or crypto
(function(){ const root=document.getElementById('fwtag');if(!root||root.dataset.ready)return;root.dataset.ready='1'; const PRODUCT_ID=868707166,input=root.querySelector('#fwtag-input'),output=root.querySelector('#fwtag-output'),preview=root.querySelector('#fwtag-preview'),count=root.querySelector('#fwtag-count'),width=root.querySelector('#fwtag-width'),font=root.querySelector('#fwtag-font'),colour=root.querySelector('#fwtag-colour'),sizeLabel=root.querySelector('#fwtag-size-label'),form=root.querySelector('#fwtag-form'),button=root.querySelector('#fwtag-buy'),status=root.querySelector('#fwtag-status');let ecwidReady=false; const fonts={'Racing Bold':'fwtag-racing','Clean Bold':'fwtag-clean','Condensed':'fwtag-condensed'},colours={'FLAKED Black':'fwtag-black','FLAKED Pink':'fwtag-pink','FLAKED White':'fwtag-white','FLAKED Purple':'fwtag-purple','FLAKED Sky Blue':'fwtag-sky-blue'},widthFactors={'150 mm / 5.9 in':.78,'200 mm / 7.9 in':.9,'250 mm / 9.8 in':1},charWidths={'Racing Bold':.58,'Clean Bold':.62,'Condensed':.48}; function setStatus(message,type){status.textContent=message;status.className=type||''}function fit(value){const available=Math.max(220,preview.clientWidth-Math.min(140,preview.clientWidth*.16)),base=Math.min(112,preview.clientWidth*.145)*widthFactors[width.value],fitted=available/Math.max(4,value.length*charWidths[font.value]);output.style.fontSize=Math.max(25,Math.min(base,fitted))+'px'}function diamond(p,col,index){p.replaceChildren();p.setAttribute('width',96);p.setAttribute('height',96);const el=(tag,attrs,parent=p)=>{const e=document.createElementNS('http://www.w3.org/2000/svg',tag);Object.entries(attrs).forEach(([k,v])=>e.setAttribute(k,v));parent.appendChild(e);return e};el('rect',{width:96,height:96,fill:col});const grad=el('linearGradient',{id:p.id+'-shine',x1:0,y1:0,x2:1,y2:1});[[0,'#fff'],[.38,'#fff'],[.48,col],[.55,'#42434e'],[1,'#f8fbff']].forEach(([offset,color])=>el('stop',{offset,'stop-color':color},grad));let seed=924;const rnd=()=>{seed=(seed*16807)%2147483647;return seed/2147483647};for(let n=0;n<430;n++){const x=rnd()*96,y=rnd()*96,r=.25+rnd()*1.15;el('path',{d:`M${x-r} ${y}l${r*.65} ${-r}l${r*1.3} ${r*.3}l${r*.2} ${r*1.2}l${-r*1.3} ${r*.4}Z`,fill:n%5?'url(#'+p.id+'-shine)':'#fff',opacity:index===2?.16+rnd()*.28:.24+rnd()*.48,transform:`rotate(${rnd()*180} ${x} ${y})`})}for(let n=0;n<13;n++){const x=rnd()*90+3,y=rnd()*90+3,r=1.7+rnd()*2.1;el('path',{d:`M${x-r} ${y}l${r*.8} ${-r*.2}l${r*.2} ${-r*.8}l${r*.2} ${r*.8}l${r*.8} ${r*.2}l${-r*.8} ${r*.2}l${-r*.2} ${r*.8}l${-r*.2} ${-r*.8}Z`,fill:'#fff',opacity:.55})}} let lastDiamond='';function paintDiamond(){if(lastDiamond===colour.value)return;lastDiamond=colour.value;const diamondColour={'FLAKED Pink':'#dc359d','FLAKED White':'#e1e2e7','FLAKED Black':'#202026','FLAKED Purple':'#bf93e4','FLAKED Sky Blue':'#86cfe9'}[colour.value]; const ns='http://www.w3.org/2000/svg',svg=document.createElementNS(ns,'svg'),p=document.createElementNS(ns,'pattern'),r=document.createElementNS(ns,'rect');svg.setAttribute('xmlns',ns);svg.setAttribute('width',96);svg.setAttribute('height',96);p.id='tag-diamond';p.setAttribute('patternUnits','userSpaceOnUse');svg.appendChild(p);diamond(p,diamondColour,colour.value.includes('Black')?2:0);r.setAttribute('width',96);r.setAttribute('height',96);r.setAttribute('fill','url(#tag-diamond)');svg.appendChild(r);output.style.backgroundImage='url("data:image/svg+xml,'+encodeURIComponent(new XMLSerializer().serializeToString(svg))+'")';output.style.backgroundSize='96px 96px'} function update(){const value=input.value.slice(0,24),display=value||'Your text';output.textContent=display;output.dataset.text=display;output.className='fwtag-text '+fonts[font.value]+' '+colours[colour.value];count.textContent=value.length+'/24';sizeLabel.textContent=width.value+' wide';fit(display);paintDiamond()} [input,width,font,colour].forEach(el=>{el.addEventListener('input',update);el.addEventListener('change',update)});new ResizeObserver(update).observe(preview); function ready(){ecwidReady=true;setStatus('Ready to add your finished design to the bag.')}function connect(){if(window.Ecwid&&Ecwid.OnAPILoaded){Ecwid.OnAPILoaded.add(ready);return}let script=[...document.scripts].find(s=>s.src&&s.src.includes('app.ecwid.com/script.js?142008311'));if(!script){script=document.createElement('script');script.src='https://app.ecwid.com/script.js?142008311&data_platform=code';script.charset='utf-8';document.body.appendChild(script)}script.addEventListener('load',()=>{if(window.Ecwid&&Ecwid.OnAPILoaded)Ecwid.OnAPILoaded.add(ready)})} form.addEventListener('submit',e=>{e.preventDefault();const text=input.value.trim();if(!text){input.focus();setStatus('Enter the text you want us to cut.','error');return}if(!ecwidReady||!window.Ecwid||!Ecwid.Cart){setStatus('The shop connection is still loading. Please try again.','error');return}button.disabled=true;button.textContent='ADDING TO BAG…';setStatus('Sending your exact design to the bag…');Ecwid.Cart.addProduct({id:PRODUCT_ID,quantity:1,options:{'Your text / Instagram tag':text,'Finished width':width.value,'Font style':font.value,'Sparkle colour':colour.value},callback:function(success,product,cart,error){button.disabled=false;button.textContent='ADD CUSTOM DECAL TO BAG';if(success){setStatus('Added to your bag — opening secure checkout.','success');Ecwid.Cart.gotoCheckout()}else setStatus(error||'This product is not available yet.','error')}})}); update();connect();})();
← BACK TO SHOPFLAKED.WRAP

YOUR HELMET. YOUR WORDS.

VISOR TEXT.

Your name, handle or statement. Preview it on the upper visor in diamond sparkle.
LIVE PREVIEW10 mm / 0.4 in high
Front view of a motorcycle helmet with a dark closed visor@flaked.wrap@flaked.wrap@flaked.wrap
Approximate curved-visor mockup. Measure your own visor; helmet shapes and sizes vary.
Visor text decal$39.99

One custom decal · precision cut sparkle vinyl
Applicable tax calculated at checkout.

HEIGHT10 mm / 0.4 inEST. WIDTHCalculating…MAX. WIDTH280 mm / 28 cm / 11 inINCLUDEDOne decal

Measure the upper visor and keep your view clear.

Connecting to the shop…

Check spelling and capitals. We cut your text as entered. Measure your visor before ordering; preview dimensions are approximate. Up to 60 characters, including spaces; maximum width 28 cm / 11 in.
MADE IN LATVIA1–2 working daysWORLDWIDETracked shippingSECURE CHECKOUTCard & digital wallets
(function(){ const root=document.getElementById('fwvisor');if(!root||root.dataset.ready)return;root.dataset.ready='1'; function showVisor(){root.style.display=location.hash==='#visor-text'?'':'none'}window.addEventListener('hashchange',showVisor);showVisor(); const PRODUCT_ID=869039651,STORE_ID=142008311; const $=id=>root.querySelector('#fv-'+id),input=$('input'),height=$('height'),font=$('font'),colour=$('colour'),form=$('form'),button=$('buy'),status=$('status'),measure=$('measure');let shopReady=false,busy=false,widthExceeded=false;const MAX_WIDTH=280,VISOR_ARC_WIDTH_MM=330.2,VISOR_FRONT_PX=840,VISOR_ARC_ANGLE=Math.PI*2/3,VISOR_RADIUS_MM=VISOR_ARC_WIDTH_MM/VISOR_ARC_ANGLE,VISOR_RADIUS_PX=VISOR_FRONT_PX/(2*Math.sin(VISOR_ARC_ANGLE/2)),inkContext=document.createElement('canvas').getContext('2d'); const fontMap={'Racing Bold':{family:"Impact,'Arial Black',sans-serif",style:'italic',scale:1},'Clean Bold':{family:'Arial,Helvetica,sans-serif',style:'normal',scale:1},'Condensed':{family:"Impact,'Arial Narrow',sans-serif",style:'normal',scale:.84}}; const finishes={'FLAKED Black':['#787881','#dddde4','#37373c','#b7b7bf','#5b5b62'],'FLAKED Pink':['#9d0e60','#ffb5df','#c12b89','#ffe1f2','#bd237b'],'FLAKED White':['#dddde4','#fff','#c7c7d1','#fff','#eeeef4'],'FLAKED Purple':['#9265b6','#ead8f8','#bf93e4','#f3e8ff','#a877cb'],'FLAKED Sky Blue':['#509dbb','#d9f5ff','#86cfe9','#effbff','#6eb8d4']}; function setStatus(t,c){status.textContent=t;status.className=c||''} function diamond(p,col,index){p.replaceChildren();p.setAttribute('width',96);p.setAttribute('height',96);const el=(tag,attrs,parent=p)=>{const e=document.createElementNS('http://www.w3.org/2000/svg',tag);Object.entries(attrs).forEach(([k,v])=>e.setAttribute(k,v));parent.appendChild(e);return e};el('rect',{width:96,height:96,fill:col});const grad=el('linearGradient',{id:p.id+'-shine',x1:0,y1:0,x2:1,y2:1});[[0,'#fff'],[.38,'#fff'],[.48,col],[.55,'#42434e'],[1,'#f8fbff']].forEach(([offset,color])=>el('stop',{offset,'stop-color':color},grad));let seed=924;const rnd=()=>{seed=(seed*16807)%2147483647;return seed/2147483647};for(let n=0;n<430;n++){const x=rnd()*96,y=rnd()*96,r=.25+rnd()*1.15;el('path',{d:`M${x-r} ${y}l${r*.65} ${-r}l${r*1.3} ${r*.3}l${r*.2} ${r*1.2}l${-r*1.3} ${r*.4}Z`,fill:n%5?'url(#'+p.id+'-shine)':'#fff',opacity:index===2?.16+rnd()*.28:.24+rnd()*.48,transform:`rotate(${rnd()*180} ${x} ${y})`})}for(let n=0;n<13;n++){const x=rnd()*90+3,y=rnd()*90+3,r=1.7+rnd()*2.1;el('path',{d:`M${x-r} ${y}l${r*.8} ${-r*.2}l${r*.2} ${-r*.8}l${r*.2} ${r*.8}l${r*.8} ${r*.2}l${-r*.8} ${r*.2}l${-r*.2} ${r*.8}l${-r*.2} ${-r*.8}Z`,fill:'#fff',opacity:.55})}} let lastDiamond='';const diamondPattern=document.createElementNS('http://www.w3.org/2000/svg','pattern');diamondPattern.id='fv-diamond';diamondPattern.setAttribute('patternUnits','userSpaceOnUse');root.querySelector('defs').appendChild(diamondPattern);function paintDiamond(){$('letter-base').setAttribute('stroke',colour.value.includes('Black')?'#93939b':'#18181c');$('letter-base').setAttribute('stroke-width',colour.value.includes('Black')?'.35':'.45');if(lastDiamond===colour.value)return;lastDiamond=colour.value;const diamondColour={'FLAKED Pink':'#dc359d','FLAKED White':'#e1e2e7','FLAKED Black':'#65656d','FLAKED Purple':'#bf93e4','FLAKED Sky Blue':'#86cfe9'}[colour.value]; diamond(diamondPattern,diamondColour,colour.value.includes('Black')?2:0)} function update(){const value=input.value.slice(0,60),text=value||'YOUR TEXT',mm=parseInt(height.value,10),f=fontMap[font.value];$('count').textContent=value.length+'/60';$('preview-size').textContent=height.value+' high';$('height-value').textContent=height.value;measure.textContent=text;measure.style.fontFamily=f.family;measure.style.fontStyle=f.style;measure.style.fontWeight='900';measure.style.fontSize='100px';inkContext.font=f.style+' 900 100px '+f.family;const metrics=inkContext.measureText(text),inkHeight=metrics.actualBoundingBoxAscent+metrics.actualBoundingBoxDescent||100,naturalWidth=metrics.width*f.scale,widthMm=naturalWidth/inkHeight*mm;const visualHeight=mm*(VISOR_RADIUS_PX/VISOR_RADIUS_MM),size=100*visualHeight/inkHeight,baseline=780+metrics.actualBoundingBoxAscent*size/100;root.querySelector('#fv-arc').setAttribute('d','M -512 '+(baseline-80)+' Q 512 '+(baseline+80)+' 1536 '+(baseline-80));root.querySelectorAll('.fv-svg-text').forEach(el=>{el.style.fontFamily=f.family;el.style.fontStyle=f.style;el.style.fontSize=size+'px'});$('letters').textContent=text;$('clip-text').textContent=text;const projectedAngle=Math.min(widthMm,VISOR_ARC_WIDTH_MM)/VISOR_ARC_WIDTH_MM*VISOR_ARC_ANGLE,renderWidth=2*VISOR_RADIUS_PX*Math.sin(projectedAngle/2);['letters','clip-text'].forEach(id=>{$(id).setAttribute('textLength',Math.max(1,renderWidth));$(id).setAttribute('lengthAdjust','spacingAndGlyphs')});paintDiamond();$('width-value').textContent=value?widthMm.toFixed(1)+' mm / '+(widthMm/25.4).toFixed(1)+' in':'—';widthExceeded=widthMm>MAX_WIDTH;button.disabled=busy||widthExceeded;button.textContent=busy?'ADDING TO BAG…':widthExceeded?'TEXT EXCEEDS 28 CM — ADJUST DESIGN':'ADD VISOR TEXT TO BAG';root.querySelector('.fv-helmet').style.outline=widthExceeded?'2px solid #b42318':'';const long=widthExceeded;$('fit').className='fv-fit'+(long?' warning':'');$('fit').textContent=long?'Your text exceeds 280 mm / 28 cm / 11 in. Shorten it, choose a smaller letter height or use Condensed.':'Maximum finished width: 280 mm / 28 cm / 11 in. Measure your own visor and keep your view clear.';} [input,height,font,colour].forEach(el=>{el.addEventListener('input',update);el.addEventListener('change',update)});update();if(document.fonts)document.fonts.ready.then(update); function ready(){shopReady=true;update();setStatus('Ready to add your visor text to the bag.')} function connect(){if(!PRODUCT_ID){setStatus('Preview only — shop connection is being prepared.');return}if(window.Ecwid&&Ecwid.OnAPILoaded){Ecwid.OnAPILoaded.add(ready);return}let script=[...document.scripts].find(s=>s.src&&s.src.includes('app.ecwid.com/script.js?'+STORE_ID));if(!script){script=document.createElement('script');script.src='https://app.ecwid.com/script.js?'+STORE_ID+'&data_platform=code';script.charset='utf-8';document.body.appendChild(script)}script.addEventListener('load',()=>{if(window.Ecwid&&Ecwid.OnAPILoaded)Ecwid.OnAPILoaded.add(ready)})} form.addEventListener('submit',e=>{e.preventDefault();if(busy)return;update();if(widthExceeded){setStatus('Reduce your design to 280 mm / 28 cm / 11 in or less.','error');return}const text=input.value.trim();if(!text){input.focus();setStatus('Enter the text you want us to cut.','error');return}if(!shopReady||!window.Ecwid||!Ecwid.Cart){setStatus(PRODUCT_ID?'The shop is still connecting. Please try again.':'Preview only — checkout has not been connected yet.','error');return}busy=true;button.disabled=true;button.textContent='ADDING TO BAG…';setStatus('Saving your text and selected options…');Ecwid.Cart.addProduct({id:PRODUCT_ID,quantity:1,options:{'Your text / Instagram tag':text,'Letter height':height.value,'Estimated finished width':$('width-value').textContent,'Maximum finished width':'280 mm / 28 cm / 11 in','Font style':font.value,'Sparkle colour':colour.value},callback:function(success,product,cart,error){busy=false;update();if(success){setStatus('Added to your bag — opening checkout.','success');Ecwid.Cart.gotoCheckout()}else setStatus(error||'Unable to add your design. Please try again.','error')}})});connect(); })();
← BACK TO SHOPFLAKED.WRAP

MAKE IT YOURS

CUSTOM QL.

Your colours. Your text. Diamond sparkle for your motorcycle phone setup.
LIVE PREVIEWRing + custom text
MAKE MECUSTOM

Sparkle preview · colours and proportions are approximate.

Custom decal set$29.99

One sparkle ring decal + your custom text.
Phone and case not included. Applicable tax calculated at checkout.

0/7
0/7

Up to 7 characters per line, 14 total. Letters, numbers and spaces only. Spaces count. We cut your text in uppercase Racing Bold.

RING COLOUR Pink
TEXT COLOUR White
INCLUDED1 ring decal + custom letteringLAYOUTTwo angled racing linesCHARACTERS0 / 14EST. TEXT SIZE—

Connecting to the shop…

Designed for the MAG ring shape. Check your spelling and match your case's ring shape to the preview before ordering. Lettering is sized to fit a 50 × 30 mm area; dimensions show the angled text footprint.Independent FLAKED accessory. Not affiliated with or endorsed by Quad Lock. Phone and case not included.
MADE IN LATVIA1–2 working daysCUSTOM CUTDiamond sparkle vinylSECURE CHECKOUTVia our shop
(function(){ const root=document.getElementById('fwquad');if(!root||root.dataset.ready)return;root.dataset.ready='1'; const $=s=>root.querySelector(s),ns='http://www.w3.org/2000/svg',palette=[['Pink','FLAKED Pink','#dc359d'],['Light purple','FLAKED Light Purple','#bf93e4'],['Black','FLAKED Black','#202026'],['White','FLAKED White','#e1e2e7'],['Sky blue','FLAKED Sky Blue','#86cfe9']];let ring=0,ink=3,ready=false; const a=$('#fq-line1'),b=$('#fq-line2'),t1=$('#fq-out1'),t2=$('#fq-out2'),g=$('#fq-type'),status=$('#fq-status'),buy=$('#fq-buy'); function message(t,k){status.textContent=t;status.className=k||''} function texture(id,index){const p=$(id),blackText=id==='#fq-text-flake'&&index===2,col=blackText?'#65656d':palette[index][2];p.replaceChildren();p.setAttribute('width',96);p.setAttribute('height',96);const el=(tag,attrs,parent=p)=>{const e=document.createElementNS(ns,tag);Object.entries(attrs).forEach(([k,v])=>e.setAttribute(k,v));parent.appendChild(e);return e};el('rect',{width:96,height:96,fill:col});const grad=el('linearGradient',{id:p.id+'-shine',x1:0,y1:0,x2:1,y2:1});[[0,'#fff'],[.38,'#fff'],[.48,col],[.55,'#42434e'],[1,'#f8fbff']].forEach(([offset,color])=>el('stop',{offset,'stop-color':color},grad));let seed=924;const rnd=()=>{seed=(seed*16807)%2147483647;return seed/2147483647};for(let n=0;n<430;n++){const x=rnd()*96,y=rnd()*96,r=blackText?.25+rnd()*1.15:.35+rnd()*2.2;el('path',{d:`M${x-r} ${y}l${r*.65} ${-r}l${r*1.3} ${r*.3}l${r*.2} ${r*1.2}l${-r*1.3} ${r*.4}Z`,fill:n%5?'url(#'+p.id+'-shine)':'#fff',opacity:blackText?.16+rnd()*.28:index===2?.35+rnd()*.6:.38+rnd()*.62,transform:`rotate(${rnd()*180} ${x} ${y})`})}for(let n=0;n<13;n++){const x=rnd()*90+3,y=rnd()*90+3,r=1.7+rnd()*2.1;el('path',{d:`M${x-r} ${y}l${r*.8} ${-r*.2}l${r*.2} ${-r*.8}l${r*.2} ${r*.8}l${r*.8} ${r*.2}l${-r*.8} ${r*.2}l${-r*.2} ${r*.8}l${-r*.2} ${-r*.8}Z`,fill:'#fff',opacity:blackText?.55:.95})}} let dimensions=''; function fit(){g.removeAttribute('transform');const box=g.getBBox();if(!box.width||!box.height)return;const theta=20*Math.PI/180,w=box.width*Math.cos(theta)+box.height*Math.sin(theta),h=box.width*Math.sin(theta)+box.height*Math.cos(theta),unit=50/430,cap=Math.max(t1.getBBox().height,t2.getBBox().height),s=Math.min(10/(cap*unit),430/w,258/h);const mm=n=>(n*s*unit).toFixed(1),size=e=>{const q=e.getBBox();return mm(q.width)+' x '+mm(q.height)+' mm'};dimensions='Angled '+mm(w)+' x '+mm(h)+' mm; flat '+mm(box.width)+' x '+mm(box.height)+' mm; L1 '+size(t1)+(t2.textContent?'; L2 '+size(t2):'')+'; -20 deg; Racing Bold v1';$('#fq-dimensions').textContent=(a.value||b.value)?mm(w)+' × '+mm(h)+' mm':'—';g.setAttribute('transform',`translate(540 1090) rotate(-20) scale(${s}) translate(${-box.x-box.width/2} ${-box.y-box.height/2})`)} function update(){const x=a.value.toUpperCase(),y=b.value.toUpperCase();$('#fq-count1').textContent=x.length+'/7';$('#fq-count2').textContent=y.length+'/7';$('#fq-total').textContent=(x.length+y.length)+' / 14';const empty=!x&&!y;t1.textContent=empty?'MAKE ME':x;t2.textContent=empty?'CUSTOM':y;t2.setAttribute('y',x||empty?'100':'0');fit()} function choices(kind){const wrap=$('#fq-'+kind+'-choices');palette.forEach((c,i)=>{const btn=document.createElement('button');btn.type='button';btn.className='fq-swatch';btn.setAttribute('aria-label',kind+' colour: '+c[0]);const chip=document.createElement('span');chip.className='fq-chip';chip.style.setProperty('--colour',c[2]);btn.appendChild(chip);btn.appendChild(document.createTextNode(c[0]));btn.addEventListener('click',()=>{if(kind==='ring')ring=i;else ink=i;paint()});wrap.appendChild(btn)})} function paint(){g.setAttribute('stroke',ink===2?'#93939b':'none');g.setAttribute('stroke-width',ink===2?'.65':'0');g.setAttribute('paint-order','stroke fill');['ring','text'].forEach(kind=>{const index=kind==='ring'?ring:ink;$('#fq-'+kind+'-name').textContent=palette[index][0];[...$('#fq-'+kind+'-choices').children].forEach((button,i)=>button.setAttribute('aria-pressed',String(i===index)));texture('#fq-'+kind+'-flake',index)})} [a,b].forEach(input=>input.addEventListener('input',()=>{const original=input.value;input.value=original.toUpperCase().replace(/[^A-Z0-9 ]/g,'').slice(0,7);update();if(/[^A-Za-z0-9 ]/.test(original))message('Use letters, numbers and spaces only.','error');else if(ready)message('Ready to add your design to the bag.')})); function connected(){ready=true;message('Ready to add your design to the bag.')} function connect(){if(window.Ecwid&&Ecwid.Cart){connected();return}if(window.Ecwid&&Ecwid.OnAPILoaded){Ecwid.OnAPILoaded.add(connected);return}let script=[...document.scripts].find(s=>s.src.includes('app.ecwid.com/script.js?142008311'));if(!script){script=document.createElement('script');script.src='https://app.ecwid.com/script.js?142008311&data_platform=code';script.charset='utf-8';document.body.appendChild(script)}script.addEventListener('load',()=>{if(window.Ecwid&&Ecwid.Cart)connected();else if(window.Ecwid&&Ecwid.OnAPILoaded)Ecwid.OnAPILoaded.add(connected)})} $('#fq-form').addEventListener('submit',e=>{e.preventDefault();const x=a.value.trim().toUpperCase(),y=b.value.trim().toUpperCase();if(!x){a.focus();message('Enter at least one letter or number on Line 1.','error');return}if(!/^[A-Z0-9 ]{1,7}$/.test(x)||(y&&!/^[A-Z0-9 ]{1,7}$/.test(y))){message('Each line allows up to 7 letters, numbers or spaces.','error');return}if(!ready||!window.Ecwid||!Ecwid.Cart){message('Shop connection is loading. Please try again.','error');return}buy.disabled=true;buy.textContent='ADDING TO BAG…';message('Sending your colours and exact text…');const opts={'Ring colour':palette[ring][1],'Text colour':palette[ink][1],'Line 1 (max 7 characters)':x};if(y)opts['Line 2 (max 7 characters)']=y;a.value=x;b.value=y;update();opts['Estimated text size (mm)']=dimensions;Ecwid.Cart.addProduct({id:869262365,quantity:1,options:opts,callback:function(success,product,cart,error){buy.disabled=false;buy.textContent='ADD MY DESIGN TO BAG';if(success){message('Design added — opening secure checkout.','success');Ecwid.Cart.gotoCheckout()}else message(error||'Could not add your design. Please try again.','error')}})}); function route(){root.style.display=location.hash.startsWith('#!')?'none':''}addEventListener('hashchange',route);route();choices('ring');choices('text');paint();update();connect();if(document.fonts)document.fonts.ready.then(update);new ResizeObserver(update).observe($('#fq-art')); })();
Video
Video