{
  "version": 3,
  "sources": ["/cdn/shop/t/42/assets/blum-designer.js?bd_revision=80"],
  "sourcesContent": ["(() => {\n const font20Characters=new Set([32, 160, 33, 34, 36, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 63, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 161, 168, 171, 173, 180, 184, 187, 191, 192, 193, 194, 195, 196, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 217, 218, 219, 220, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 249, 250, 251, 252, 305, 338, 339, 710, 732, 894, 8216, 8217, 8220, 8221, 8364]);\n function fillEnclosedHoles(mask,w,h){\n  const seen=new Uint8Array(w*h),queue=new Uint32Array(w*h);let head=0,tail=0;\n  const add=i=>{if(!mask[i]&&!seen[i]){seen[i]=1;queue[tail++]=i;}};\n  for(let x=0;x<w;x++){add(x);add((h-1)*w+x);}for(let y=0;y<h;y++){add(y*w);add(y*w+w-1);}\n  while(head<tail){const i=queue[head++],x=i%w;if(x>0)add(i-1);if(x<w-1)add(i+1);if(i>=w)add(i-w);if(i<(h-1)*w)add(i+w);}\n  for(let i=0;i<mask.length;i++)if(!seen[i])mask[i]=1;\n  return mask;\n }\n if (customElements.get('blum-designer')) return;\n customElements.define('blum-designer', class extends HTMLElement {\n  connectedCallback() {\n   if(this.ready) return; this.ready=true;\n   this.config=JSON.parse(this.querySelector('[data-config]').textContent);\n   this.variants=JSON.parse(this.querySelector('[data-variants]').textContent);\n   this.form=this.querySelector('form'); this.version=0;\n   // Native multipart upload lets Shopify retain the preview on this line item.\n   this.form.enctype='multipart/form-data';\n   this.form.addEventListener('formdata',event=>this.attachDesignPreview(event.formData));\n   this.q=s=>this.querySelector(s); this.get=s=>this.q('[data-'+s+']');\n   const countId='bd-count-'+crypto.randomUUID();\n   this.get('character-count').id=countId;this.get('username').setAttribute('aria-describedby',countId);\n   this.applyProductDefaults();\n   this.buildVisualOptions();\n   this.classList.add('bd-product-view');\n   const stage=this.q('.bd-stage');\n   const mobile=window.matchMedia('(max-width:749px)'),grid=this.q('.bd-grid');\n   let stickyFrame=0;\n   const refreshSticky=()=>{\n    stickyFrame=0;\n    if(!mobile.matches){this.classList.remove('bd-mobile-stuck');this.style.removeProperty('--bd-mobile-preview-height');return;}\n    // Reserve the original row height so shrinking the preview cannot shift the form.\n    this.style.setProperty('--bd-mobile-preview-height',(grid.clientWidth)+'px');\n    const offset=parseFloat(getComputedStyle(stage).top)||0;\n    const threshold=this.classList.contains('bd-mobile-stuck')?offset+3:offset-3;\n    this.classList.toggle('bd-mobile-stuck',window.scrollY>1 && grid.getBoundingClientRect().top<threshold);\n   };\n   const queueSticky=()=>{if(!stickyFrame)stickyFrame=requestAnimationFrame(refreshSticky);};\n   window.addEventListener('scroll',queueSticky,{passive:true});\n   window.addEventListener('resize',queueSticky,{passive:true});\n   mobile.addEventListener('change',queueSticky);\n   this.mobilePreviewObserver=new ResizeObserver(queueSticky);this.mobilePreviewObserver.observe(grid);\n   queueSticky();\n   this.scene=document.createElementNS('http://www.w3.org/2000/svg','svg');\n   this.scene.setAttribute('class','bd-scene');this.scene.setAttribute('viewBox','0 0 1100 700');this.scene.setAttribute('role','img');stage.append(this.scene);\n   const toggle=document.createElement('button');toggle.type='button';toggle.className='bd-view-toggle';toggle.textContent='Show flat design';toggle.setAttribute('aria-pressed','true');\n   const toolbar=document.createElement('div');toolbar.className='bd-preview-toolbar';\n   toolbar.append(toggle,this.q('.bd-background'));stage.append(this.q('.bd-caption'),toolbar);\n   toggle.addEventListener('click',()=>{const product=this.classList.toggle('bd-product-view');toggle.textContent=product?'Show flat design':'Show product preview';toggle.setAttribute('aria-pressed',String(product));});\n   this.q('.bd-note').textContent='Shown as a pair on contrast backing for visibility. Backing and shadows are illustrative. Switch to flat design to check the artwork. Colours may vary on screen.';\n   const previewNote=this.q('.bd-note');previewNote.classList.add('bd-preview-note-desktop');\n   const mobileNote=previewNote.cloneNode(true);mobileNote.classList.remove('bd-preview-note-desktop');mobileNote.classList.add('bd-preview-note-mobile');\n   this.form.querySelector('[type=submit]').after(mobileNote);\n   this.buildSteps();\n   this.q('.bd-background').textContent='Switch surface colour';\n   const rotatedOption=this.get('slant').options[1];rotatedOption.textContent='Slanted';rotatedOption.value='Rotated 12\u00B0';\n   this.form.addEventListener('input',e=>{\n    if(e.target===this.get('confirm')){this.refreshCartButton();return;}\n    this.get('confirm').checked=false;this.update();\n   });\n   // Native controls emit input and change; render once from input.\n\n   this.q('.bd-background').setAttribute('aria-pressed','false');\n   this.q('.bd-background').addEventListener('click',()=>{const dark=stage.classList.toggle('bd-surface-dark');this.q('.bd-background').setAttribute('aria-pressed',String(dark));});\n   this.form.addEventListener('submit',e=>{\n    const name=this.get('username');name.value=name.value.trim();\n    if(!this.canAddToCart()){e.preventDefault();this.refreshCartButton();this.form.reportValidity();return;}\n    if(this.form.dataset.demo){e.preventDefault();this.get('error').textContent='Preview only \u2014 Shopify will receive: '+JSON.stringify(Object.fromEntries(new FormData(this.form)));return;}\n    this.q('[type=submit]').disabled=true;\n   });\n   window.addEventListener('pageshow',()=>this.update());\n   this.update();\n  }\n  applyProductDefaults(){\n   // Read per-product starting choices once; customer changes remain unrestricted.\n   const normalise=value=>String(value||'').trim().toLowerCase();\n   const choose=(key,value)=>{\n    const select=this.get(key),option=Array.from(select.options).find(option=>normalise(option.value)===normalise(value));\n    if(option)select.value=option.value;\n   };\n   choose('platform',this.dataset.defaultPlatform);\n   choose('finish',this.dataset.defaultFinish);\n   const palette=window.BlumVinylFinishes?.[this.get('finish').value]||[];\n   const colour=palette.find(item=>normalise(item.name)===normalise(this.dataset.defaultColour));\n   if(colour){\n    const select=this.get('colour');\n    if(!Array.from(select.options).some(option=>option.value===colour.name)){\n     const option=document.createElement('option');option.value=colour.name;option.textContent=colour.name;select.append(option);\n    }\n    select.value=colour.name;\n   }\n   choose('outline',this.dataset.defaultOutline);\n   const fontNumber=String(this.dataset.defaultFont||'').trim();\n   const fontOption=Array.from(this.get('font').options).find(option=>option.dataset.number===fontNumber);\n   if(fontOption)this.get('font').value=fontOption.value;\n  }\n  buildSteps(){\n   const titles=['Platform & username','Choose your font','Choose your size','Finish & colour','Style your sticker','Review & add to cart'];\n   const id=crypto.randomUUID();\n   const steps=titles.map((title,index)=>{\n    const section=document.createElement('section');section.className='bd-step';\n    const heading=document.createElement('h2');heading.id='bd-step-'+id+'-'+index;heading.className='bd-step-heading';\n    const number=document.createElement('span');number.className='bd-step-number';number.textContent=String(index+1);number.setAttribute('aria-hidden','true');\n    const text=document.createElement('span');text.textContent=title;heading.append(number,text);\n    section.setAttribute('aria-labelledby',heading.id);section.append(heading);return section;\n   });\n   const username=this.get('username').closest('label');\n   const counter=this.get('character-count'),usernameNote=counter.nextElementSibling;\n   steps[0].append(this.get('platform').closest('label'),this.q('.bd-picker-platform'),username,counter,usernameNote);\n   steps[1].append(this.get('font').closest('label'),this.q('.bd-picker-font'),this.get('font-note'));\n   const finish=this.q('.bd-picker-finish');\n   steps[2].append(this.get('size').closest('.bd-two'));\n   steps[3].append(finish,this.q('.bd-colour-picker'));\n   steps[4].append(this.get('outline').closest('.bd-two'));\n   // Move remaining purchase controls together without changing their names or values.\n   steps[5].append(...Array.from(this.form.children));\n   this.form.append(...steps);\n  }\n  findSelectedVariant(){\n   const normalise=value=>String(value||'').trim().toLowerCase();\n   const size=normalise(this.get('size').value),finish=normalise(this.get('finish').value);\n   return this.variants.find(variant=>{\n    const options=(variant.options||[variant.option1,variant.option2,variant.option3]).map(normalise);\n    return options.includes(size)&&options.includes(finish);\n   });\n  }\n  usernameLimitState(){\n   const size=parseInt(this.get('size').value,10);\n   const limit=size===12?16:32;\n   const count=Array.from(this.get('username').value).length;\n   return {limit,count,over:count>limit};\n  }\n  validateUsername(){\n   const name=this.get('username'),state=this.usernameLimitState();\n   name.setCustomValidity(!name.value.trim()?'Please enter your username.':state.over?'Please shorten your username to '+state.limit+' characters for this size.':'');\n   name.setAttribute('aria-invalid',String(state.over));\n   this.get('character-count').textContent=state.count+' / 32 characters'+(state.count>32?' \u2014 shorten your text to 32 characters.':state.count>16?' \u2014 12cm unavailable above 16 characters.':' (12cm: up to 16; 20cm / 26cm: up to 32)');\n   this.get('character-count').classList.toggle('bd-limit-exceeded',state.over);\n   return !state.over;\n  }\n  attachDesignPreview(formData){\n   if(this.orderPreview?.version===this.version){\n    formData.set('properties[_Blum design preview]',this.orderPreview.file,this.orderPreview.file.name);\n    if(this.orderPreview.svg)formData.set('properties[_Blum design SVG]',this.orderPreview.svg,this.orderPreview.svg.name);\n   }\n  }\n  canAddToCart(){\n   return Boolean(!this.usernameLimitState().over && this.previewReady && this.orderPreview?.version===this.version && this.orderPreview.file && this.orderPreview.svg && this.fontLoaded && this.selected?.available &&\n    this.get('username').value.trim() && !(this.get('font').selectedOptions[0].dataset.number==='20' && this.unsupportedFont20Characters(this.get('username').value.trim()).length) && this.get('confirm').checked &&\n    ['platform','font','size','finish','colour','outline','slant'].every(key=>this.get(key).value && !this.get(key).selectedOptions[0]?.disabled) &&\n    Array.from(this.form.elements).every(control=>!control.willValidate || control.validity.valid));\n  }\n  refreshCartButton(){this.q('[type=submit]').disabled=!this.canAddToCart();}\n  buildVisualOptions(){\n   this.visualPickers=[];\n   const unique=crypto.randomUUID();\n   ['platform','font','size','finish'].forEach(kind=>{\n    const select=this.get(kind), oldLabel=select.closest('label');\n    const field=document.createElement('fieldset');field.className='bd-picker bd-picker-'+kind;\n    const legend=document.createElement('legend');legend.textContent=kind==='platform'?'Choose your platform':kind==='size'?'Size':kind==='finish'?'Vinyl finish':'Choose your font';field.append(legend);\n    const grid=document.createElement('div');grid.className='bd-option-grid';field.append(grid);\n    Array.from(select.options).forEach(option=>{\n     const card=document.createElement('label');card.className='bd-option-card';\n     const radio=document.createElement('input');radio.type='radio';radio.name='bd-'+kind+'-'+unique;radio.value=option.value;radio.checked=option.selected;\n     const content=document.createElement('span');content.className='bd-option-content';\n     if(kind==='platform'){\n      const icons=document.createElement('span');icons.className='bd-platform-icons';icons.setAttribute('aria-hidden','true');\n      const platforms=option.value==='No social icon'?[]:option.value==='TikTok + Instagram'?['TikTok','Instagram']:[option.value];\n      if(!platforms.length){icons.textContent='Aa';icons.style.fontSize='26px';icons.style.fontWeight='700';}\n      platforms.forEach(platform=>{\n       const svg=new DOMParser().parseFromString(this.config.icons[platform],'image/svg+xml').documentElement;\n       svg.removeAttribute('id');svg.removeAttribute('width');svg.removeAttribute('height');svg.setAttribute('focusable','false');\n       svg.querySelectorAll('path').forEach(path=>path.setAttribute('fill','currentColor'));\n       icons.append(document.importNode(svg,true));\n      });\n      content.append(icons);\n     }else if(kind==='font'){\n      const sample=document.createElement('span');sample.className='bd-font-sample';sample.dataset.fontSample=option.dataset.number;sample.style.fontFamily='Blum'+option.dataset.number;sample.setAttribute('aria-hidden','true');content.append(sample);\n     }\n     const title=document.createElement('span');title.className='bd-option-title';title.textContent=option.textContent;content.append(title);\n     radio.addEventListener('input',()=>{select.value=option.value;});\n     card.append(radio,content);grid.append(card);\n     this.visualPickers.push({select,radio});\n    });\n    if(kind==='font'){\n     const wrap=document.createElement('div');wrap.className='bd-font-scroll-wrap';\n     grid.replaceWith(wrap);wrap.append(grid);\n     const fade=document.createElement('span');fade.className='bd-font-fade';fade.setAttribute('aria-hidden','true');wrap.append(fade);\n     const topFade=document.createElement('span');topFade.className='bd-font-fade-top';topFade.setAttribute('aria-hidden','true');wrap.append(topFade);\n     const refreshFade=()=>{wrap.classList.toggle('bd-has-more',grid.scrollHeight-grid.clientHeight-grid.scrollTop>3);wrap.classList.toggle('bd-has-above',grid.scrollTop>3);};\n     grid.addEventListener('scroll',refreshFade,{passive:true});\n     const observer=new ResizeObserver(refreshFade);observer.observe(grid);\n     this.fontGridObserver=observer;\n     requestAnimationFrame(refreshFade);document.fonts.ready.then(refreshFade);\n    }\n    oldLabel.after(field);oldLabel.classList.add('bd-native-picker');\n   });\n   const colourSelect=this.get('colour'), colourLabel=colourSelect.closest('label');\n   const colourField=document.createElement('fieldset');colourField.className='bd-colour-picker';\n   const legend=document.createElement('legend');legend.append('Vinyl colour: ');\n   const selectedName=document.createElement('strong');selectedName.dataset.colourName='';legend.append(selectedName);colourField.append(legend);\n   const carousel=document.createElement('div');carousel.className='bd-colour-carousel';\n   const track=document.createElement('div');track.className='bd-colour-track';\n   const prev=document.createElement('button'),next=document.createElement('button');\n   [prev,next].forEach(button=>{button.type='button';button.className='bd-swatch-arrow';});\n   [prev,next].forEach((button,index)=>{\n    const icon=document.createElementNS('http://www.w3.org/2000/svg','svg');icon.setAttribute('viewBox','0 0 24 24');icon.setAttribute('aria-hidden','true');icon.setAttribute('focusable','false');\n    const path=document.createElementNS('http://www.w3.org/2000/svg','path');path.setAttribute('d',index?'M9 5l7 7-7 7':'M15 5l-7 7 7 7');path.setAttribute('fill','none');path.setAttribute('stroke','currentColor');path.setAttribute('stroke-width','2');path.setAttribute('stroke-linecap','round');path.setAttribute('stroke-linejoin','round');icon.append(path);button.append(icon);\n   });prev.setAttribute('aria-label','Previous colours');next.setAttribute('aria-label','More colours');\n   this.colourTrack=track;this.colourRadioName='bd-colour-'+unique;\n   const reducedMotion=()=>window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n   prev.addEventListener('click',()=>track.scrollBy({left:-Math.max(120,track.clientWidth*.75),behavior:reducedMotion()?'auto':'smooth'}));\n   next.addEventListener('click',()=>track.scrollBy({left:Math.max(120,track.clientWidth*.75),behavior:reducedMotion()?'auto':'smooth'}));\n   const refreshArrows=()=>{prev.disabled=track.scrollLeft<=2;next.disabled=track.scrollWidth-track.clientWidth-track.scrollLeft<=2;track.classList.toggle('bd-fade-left',!prev.disabled);track.classList.toggle('bd-fade-right',!next.disabled);};\n   track.addEventListener('scroll',refreshArrows,{passive:true});\n   carousel.append(prev,track,next);colourField.append(carousel);\n   // Move outside the size/colour two-column row to give the carousel full width.\n   colourLabel.classList.add('bd-native-picker');colourLabel.parentElement.classList.add('bd-size-row');colourLabel.parentElement.after(colourField);\n   this.colourObserver=new ResizeObserver(refreshArrows);this.colourObserver.observe(track);requestAnimationFrame(()=>{track.scrollLeft=0;refreshArrows();});\n   this.refreshColourArrows=refreshArrows;\n   this.refreshVisualOptions();\n  }\n  syncFinishColours(){\n   const finish=this.get('finish').value;\n   if(this.activeFinish===finish)return;\n   const palette=window.BlumVinylFinishes?.[finish];\n   if(!palette)return;\n   this.activeFinish=finish;\n   const select=this.get('colour'),previous=select.value;\n   const selected=palette.some(item=>item.name===previous)?previous:palette[0].name;\n   select.replaceChildren();this.colourTrack.replaceChildren();\n   this.visualPickers=this.visualPickers.filter(picker=>picker.select!==select);\n   this.config.colours=Object.fromEntries(palette.map(item=>[item.name,item.hex]));\n   palette.forEach(item=>{\n    const option=document.createElement('option');option.value=item.name;option.textContent=item.name;option.selected=item.name===selected;select.append(option);\n    const card=document.createElement('label');card.className='bd-swatch';card.title=item.name;\n    const radio=document.createElement('input');radio.type='radio';radio.name=this.colourRadioName;radio.value=item.name;radio.checked=item.name===selected;radio.setAttribute('aria-label',item.name);\n    const circle=document.createElement('span');circle.className='bd-swatch-circle';circle.style.backgroundColor=item.hex;circle.setAttribute('aria-hidden','true');\n    if(item.image){circle.style.backgroundImage='url(\"'+item.image+'\")';circle.style.backgroundSize='cover';circle.style.backgroundPosition='center';}\n    radio.addEventListener('input',()=>{select.value=item.name;});\n    radio.addEventListener('focus',()=>{\n     const track=this.colourTrack,left=card.offsetLeft;\n     if(left<track.scrollLeft)track.scrollTo({left:left-6});\n     else if(left+card.offsetWidth>track.scrollLeft+track.clientWidth)track.scrollTo({left:left+card.offsetWidth-track.clientWidth+6});\n    });\n    card.append(radio,circle);this.colourTrack.append(card);this.visualPickers.push({select,radio});\n   });\n   select.value=selected;\n   this.colourTrack.scrollLeft=0;\n   requestAnimationFrame(()=>this.refreshColourArrows());\n  }\n  currentVinyl(){return window.BlumVinylFinishes?.[this.get('finish').value]?.find(item=>item.name===this.get('colour').value);}\n  previewVinylColour(){\n   // Show matt black as soft charcoal so it remains distinct from black backing.\n   return this.get('finish').value==='Matt'&&this.get('colour').value==='Black'?'#343434':this.config.colours[this.get('colour').value];\n  }\n  async loadVinylTexture(){\n   const data=this.currentVinyl()?.image;\n   if(!data)return null;\n   this.textureCache ||= new Map();\n   if(!this.textureCache.has(data))this.textureCache.set(data,new Promise((resolve,reject)=>{const img=new Image();img.onload=()=>resolve(img);img.onerror=reject;img.src=data;}));\n   return await this.textureCache.get(data);\n  }\n  unsupportedFont20Characters(text){\n   return [...new Set(Array.from(text).filter(character=>!font20Characters.has(character.codePointAt(0))))];\n  }\n  refreshOutlineOptions(){\n   const outline=this.get('outline'),gloss=this.get('finish').value==='Gloss';\n   const colour=this.get('colour').value;\n   Array.from(outline.options).forEach(option=>{\n    option.disabled=gloss && ((option.value==='Black' && colour==='Black') || (option.value==='White' && colour==='White'));\n   });\n   if(outline.selectedOptions[0]?.disabled){\n    outline.value='None';this.get('confirm').checked=false;\n   }\n  }\n  refreshVisualOptions(){\n   this.syncFinishColours();\n   this.refreshOutlineOptions();\n   const sizeSelect=this.get('size'),count=Array.from(this.get('username').value).length;\n   const small=Array.from(sizeSelect.options).find(option=>parseInt(option.value,10)===12);\n   if(small){\n    small.disabled=count>16;\n    if(small.disabled && sizeSelect.value===small.value){\n     const next=Array.from(sizeSelect.options).find(option=>parseInt(option.value,10)===20);\n     if(next)sizeSelect.value=next.value;\n     this.get('confirm').checked=false;\n    }\n    const picker=this.visualPickers.find(({select,radio})=>select===sizeSelect && radio.value===small.value);\n    if(picker){picker.radio.disabled=small.disabled;picker.radio.closest('label').title=small.disabled?'12cm allows up to 16 characters':'';}\n   }\n\n   const missing=this.unsupportedFont20Characters(this.get('username').value.trim());\n   const fontSelect=this.get('font'),font20=Array.from(fontSelect.options).find(option=>option.dataset.number==='20');\n   const blocked=missing.length>0;\n   this.fontCompatibilityMessage=blocked?'Font 20 is unavailable for: '+missing.map(c=>'\u201C'+c+'\u201D').join(', ')+'.':'';\n   if(font20){\n    font20.disabled=blocked;\n    if(blocked && fontSelect.value===font20.value){\n     fontSelect.value=Array.from(fontSelect.options).find(option=>!option.disabled).value;\n     this.get('confirm').checked=false;\n     this.fontCompatibilityMessage+=' Your font has been switched to Font 1.';\n    }\n    const picker=this.visualPickers.find(({select,radio})=>select===fontSelect && radio.value===font20.value);\n    if(picker){\n     picker.radio.disabled=blocked;\n     const card=picker.radio.closest('label');card.classList.toggle('bd-font-unavailable',blocked);\n     card.title=this.fontCompatibilityMessage;\n     let reason=card.querySelector('.bd-font-unavailable-note');\n     if(!reason){reason=document.createElement('span');reason.className='bd-font-unavailable-note';card.querySelector('.bd-font-sample').append(reason);}\n     reason.textContent=blocked?'Unavailable for your text':'';\n    }\n   }\n\n   this.visualPickers.forEach(({select,radio})=>{radio.checked=radio.value===select.value;});\n   const colourName=this.q('[data-colour-name]');if(colourName)colourName.textContent=this.get('colour').value;\n   const username=this.get('username').value.trim()||'Your name';\n   this.querySelectorAll('[data-font-sample]').forEach(sample=>{\n    const font=this.config.fonts.find(f=>String(f.number)===sample.dataset.fontSample);\n    const reason=sample.querySelector('.bd-font-unavailable-note');\n    sample.textContent=font?.caps?username.toUpperCase():username;\n    if(reason)sample.append(reason);\n   });\n  }\n  async update(){\n   this.refreshVisualOptions();\n   const ticket=++this.version, font=this.config.fonts.find(f=>String(f.number)===this.get('font').selectedOptions[0].dataset.number);\n   this.previewReady=false;this.orderPreview=null;this.fontLoaded=false; this.q('[type=submit]').disabled=true;\n   const name=this.get('username');this.validateUsername();\n   this.get('font-note').textContent=[this.fontCompatibilityMessage,font.caps?'This font displays uppercase lettering.':'The preview shows how your text appears in this font.'].filter(Boolean).join(' ');\n   this.selected=this.findSelectedVariant();\n   const variant=this.selected;\n   this.get('variant').value=variant?.id||'';\n   // Shopify variant prices are authoritative. Never send a client-calculated price.\n   this.get('price').textContent=variant?new Intl.NumberFormat(document.documentElement.lang||'en-GB',{style:'currency',currency:window.Shopify?.currency?.active||'GBP'}).format(variant.price/100):'Unavailable';\n   this.q('[type=submit]').textContent=variant?.available?'\u2192 Add to cart \u2013 '+this.get('price').textContent:'Unavailable';\n   this.q('.bd-width').textContent=this.get('size').value+' wide';\n   this.get('error').textContent=variant?.available?'':'This size and finish combination is currently unavailable.';\n   try {\n    const [loaded,texture]=await Promise.all([document.fonts.load('64px Blum'+font.number),this.loadVinylTexture()]);\n    if(ticket!==this.version)return;\n    if(!loaded.length)throw Error('font');\n    const unsupported=window.BlumVector.unsupported(font.number,name.value.trim());\n    if(unsupported.length){this.get('error').textContent='This font does not contain '+unsupported.map(char=>JSON.stringify(char)).join(', ')+'. Please choose another font or edit your username.';return;}\n    this.vinylTexture=texture;this.fontLoaded=true;\n   }catch(e){if(ticket===this.version)this.get('error').textContent='The preview font or vinyl texture could not load. Please refresh and try again.';return;}\n   this.querySelectorAll('.bd-staging-artwork').forEach(node=>node.remove());\n   const ns='http://www.w3.org/2000/svg',group=document.createElementNS(ns,'g');\n   group.setAttribute('class','bd-staging-artwork');group.setAttribute('visibility','hidden');\n   this.q('.bd-art').append(group);\n   const make=(tag,attrs={})=>{const e=document.createElementNS(ns,tag);Object.entries(attrs).forEach(([k,v])=>e.setAttribute(k,v));return e;};\n   const fill=this.previewVinylColour(), outline=this.get('outline').value;\n   const platforms=this.get('platform').value==='No social icon'?[]:this.get('platform').value==='TikTok + Instagram'?['TikTok','Instagram']:[this.get('platform').value];\n   const slant=this.get('slant').value==='Rotated 12\u00B0';\n   const height=64, gap=outline==='None'?12:6;\n   let cursor=0;\n   const logoGroups=[];\n   // Measure actual path geometry, including the rotation, rather than SVG viewBox padding.\n   platforms.forEach((p,index)=>{\n    const holder=make('g'), shape=make('g');\n    const source=new DOMParser().parseFromString(this.config.icons[p],'image/svg+xml').documentElement;\n    Array.from(source.children).forEach(child=>shape.append(document.importNode(child,true)));\n    shape.querySelectorAll('path').forEach(path=>path.setAttribute('fill',fill));\n    if(slant)shape.setAttribute('transform','rotate(-12)');\n    holder.append(shape);group.append(holder);\n    const bounds=holder.getBBox(), scale=height/Math.max(bounds.height,1);\n    holder.setAttribute('transform',`translate(${cursor-bounds.x*scale},${-bounds.y*scale}) scale(${scale})`);\n    const nextGap=slant&&platforms.length===2&&index===0?-6:gap;\n    logoGroups.push(holder);cursor+=bounds.width*scale+nextGap;\n   });\n   const label=font.caps?(name.value.trim()||'yourname').toUpperCase():(name.value.trim()||'yourname');\n   const measuring={measureText:value=>window.BlumVector.measure(font.number,value)};\n   const metrics=measuring.measureText(label);\n   const ascent=metrics.actualBoundingBoxAscent, descent=metrics.actualBoundingBoxDescent;\n   const textScale=height/Math.max(1,ascent+descent);\n   const iconRight=platforms.length?cursor-gap:0;\n   // Slanted Instagram sits behind the first letter, including outlined designs.\n   const lastPlatform=platforms[platforms.length-1];\n   const overlapText=slant&&platforms.length>0&&lastPlatform!=='TikTok'&&(outline==='None'||lastPlatform==='Instagram');\n   if(overlapText)cursor-=gap+14;\n   let textX=cursor+metrics.actualBoundingBoxLeft*textScale;\n   const baseline=ascent*textScale;\n   const text=make('text',{x:0,y:0,'font-family':'Blum'+font.number,'font-size':64,fill,\n    transform:`translate(${textX},${baseline}) scale(${textScale})`});\n   text.textContent=label;group.append(text);\n   let width=Math.max(iconRight,cursor+Math.max(1,metrics.actualBoundingBoxLeft+metrics.actualBoundingBoxRight)*textScale);\n   // Align on the lowercase body (x-height), not ascenders/descenders.\n   const lower=measuring.measureText('x');\n   const hasLowercase=!font.caps && /[a-z]/.test(label);\n   const bodyCentre=baseline+(lower.actualBoundingBoxDescent-lower.actualBoundingBoxAscent)*textScale/2;\n   const first=Array.from(label)[0]||'';\n   const startsCapital=/[A-Z]/.test(first);\n   const firstMetrics=measuring.measureText(first);\n   const capitalCentre=baseline+(firstMetrics.actualBoundingBoxDescent-firstMetrics.actualBoundingBoxAscent)*textScale/2;\n   const iconY=slant?0:(startsCapital?capitalCentre-height/2:(hasLowercase?bodyCentre-height/2:0));\n   logoGroups.forEach(holder=>{\n    const aligned=make('g',{transform:`translate(0,${iconY})`});\n    holder.replaceWith(aligned);aligned.append(holder);\n   });\n   const alignedLogos=logoGroups.map(holder=>holder.parentNode);\n   if(outline!=='None'&&platforms.length&&!overlapText){\n    // Fit the actual silhouettes together so their 8-unit outlines merge.\n    // Preserve each complete logo; text must never cut into an outlined icon.\n    // Keep 10 units between the coloured shapes; never draw a joining bar.\n    const sampleScale=3, sampleTop=Math.min(0,iconY)-2;\n    const sampleHeight=Math.ceil((Math.max(height,iconY+height)-sampleTop+2)*sampleScale);\n    const logoCanvas=document.createElement('canvas');\n    logoCanvas.width=Math.ceil((iconRight+2)*sampleScale);logoCanvas.height=sampleHeight;\n    const logoContext=logoCanvas.getContext('2d',{willReadFrequently:true});\n    const logoSvg=make('svg',{xmlns:ns,width:iconRight+2,height:sampleHeight/sampleScale,viewBox:`0 ${sampleTop} ${iconRight+2} ${sampleHeight/sampleScale}`});\n    alignedLogos.forEach(g=>logoSvg.append(g.cloneNode(true)));\n    const sampleUrl=URL.createObjectURL(new Blob([new XMLSerializer().serializeToString(logoSvg)],{type:'image/svg+xml'}));\n    try{\n     const img=new Image();await new Promise((resolve,reject)=>{img.onload=resolve;img.onerror=reject;img.src=sampleUrl;});\n     if(ticket!==this.version)return;\n     logoContext.drawImage(img,0,0,logoCanvas.width,sampleHeight);\n     const letterCanvas=document.createElement('canvas');\n     letterCanvas.width=Math.max(1,Math.ceil((firstMetrics.actualBoundingBoxLeft+firstMetrics.actualBoundingBoxRight)*textScale*sampleScale)+4);letterCanvas.height=sampleHeight;\n     const letterContext=letterCanvas.getContext('2d',{willReadFrequently:true});\n     letterContext.scale(sampleScale*textScale,sampleScale*textScale);letterContext.font='64px Blum'+font.number;\n     letterContext.fillText(first,firstMetrics.actualBoundingBoxLeft,(baseline-sampleTop)/textScale);\n     const logoPixels=logoContext.getImageData(0,0,logoCanvas.width,sampleHeight).data;\n     const letterPixels=letterContext.getImageData(0,0,letterCanvas.width,sampleHeight).data;\n     const edges=[];\n     for(let y=0;y<sampleHeight;y++){\n      let right=logoCanvas.width-1,left=0;\n      while(right>=0&&logoPixels[(y*logoCanvas.width+right)*4+3]<128)right--;\n      while(left<letterCanvas.width&&letterPixels[(y*letterCanvas.width+left)*4+3]<128)left++;\n      edges.push({right:right/sampleScale,left:left<letterCanvas.width?left/sampleScale:Infinity});\n     }\n     let shift=Infinity;\n     for(let y=0;y<edges.length;y++)if(edges[y].right>=0){\n      for(let other=Math.max(0,y-30);other<=Math.min(edges.length-1,y+30);other++){\n       const dy=(other-y)/sampleScale;\n       shift=Math.min(shift,cursor+edges[other].left-edges[y].right-Math.sqrt(Math.max(0,100-dy*dy)));\n      }\n     }\n     if(Number.isFinite(shift)){\n      cursor-=shift;textX-=shift;\n      text.setAttribute('transform',`translate(${textX},${baseline}) scale(${textScale})`);\n      width=Math.max(iconRight,cursor+Math.max(1,metrics.actualBoundingBoxLeft+metrics.actualBoundingBoxRight)*textScale);\n     }\n    }finally{URL.revokeObjectURL(sampleUrl);}\n   }\n   const top=Math.min(0,iconY), bottom=Math.max(height,iconY+height), artHeight=bottom-top;\n   const border=8, padding=border+3;\n   let artworkViewBox=`${-padding} ${top-padding} ${width+padding*2} ${artHeight+padding*2}`;\n   if(overlapText){\n    // Knock out a rounded border around the overlapping letters from the logos.\n    // With backing selected its colour shows through; otherwise this is a clear gap.\n    const id='bd-cut-'+crypto.randomUUID();\n    const defs=make('defs'), mask=make('mask',{id,maskUnits:'userSpaceOnUse',maskContentUnits:'userSpaceOnUse',x:-padding,y:top-padding,width:width+padding*2,height:artHeight+padding*2,'mask-type':'luminance'});\n    mask.append(make('rect',{x:-padding,y:top-padding,width:width+padding*2,height:artHeight+padding*2,fill:'white'}));\n    const cut=text.cloneNode(true);cut.setAttribute('fill','black');cut.setAttribute('stroke','black');cut.setAttribute('stroke-width',10/textScale);cut.setAttribute('stroke-linejoin','round');\n    mask.append(cut);defs.append(mask);group.prepend(defs);\n    const masked=make('g',{mask:`url(#${id})`});group.insertBefore(masked,text);alignedLogos.forEach(g=>masked.append(g));\n   }\n   // Keep Instagram's small camera dot above the overlapping first letter.\n   const foregroundDots=[];\n   if(overlapText&&lastPlatform==='Instagram'){\n    const dotLayer=alignedLogos[alignedLogos.length-1].cloneNode(true);\n    const paths=Array.from(dotLayer.querySelectorAll('path'));\n    const dot=paths.pop();paths.forEach(path=>path.remove());\n    if(dot){\n     // Restore only the original dot; a halo would erase nearby icon details.\n     group.append(dotLayer);foregroundDots.push(dotLayer);\n    }\n   }\n   if(this.vinylTexture){\n    const patternId='bd-vinyl-'+crypto.randomUUID();\n    const defs=make('defs'),pattern=make('pattern',{id:patternId,width:1,height:1,patternContentUnits:'objectBoundingBox'});\n    pattern.append(make('image',{href:this.currentVinyl().image,x:0,y:0,width:1,height:1,preserveAspectRatio:'none'}));defs.append(pattern);group.prepend(defs);\n    [...alignedLogos,...foregroundDots].forEach(logo=>logo.querySelectorAll('path').forEach(path=>path.setAttribute('fill','url(#'+patternId+')')));\n    text.setAttribute('fill','url(#'+patternId+')');\n   }\n   const artworkLabel=`${this.get('platform').value} sticker: ${text.textContent}, ${this.get('colour').value}, ${this.get('size').value}`;\n   // Export the source curves directly. No raster contour tracing is involved.\n   const toModel=node=>{\n    const matrix=group.getCTM().inverse().multiply(node.getCTM());\n    return {d:node.getAttribute('d'),matrix:[matrix.a,matrix.b,matrix.c,matrix.d,matrix.e,matrix.f]};\n   };\n   const textMatrix=group.getCTM().inverse().multiply(text.getCTM());\n   const model={\n    text:{d:window.BlumVector.textPath(font.number,text.textContent).d,matrix:[textMatrix.a,textMatrix.b,textMatrix.c,textMatrix.d,textMatrix.e,textMatrix.f]},\n    logos:alignedLogos.flatMap(logo=>Array.from(logo.querySelectorAll('path')).map(toModel)),\n    dot:foregroundDots.length?toModel(foregroundDots[0].querySelector('path')):null,\n    overlap:overlapText,outline,width:this.get('size').value,colour:this.currentVinyl().hex,username:name.value.trim(),\n    details:{platform:this.get('platform').value,username:name.value.trim(),font:this.get('font').value,width:this.get('size').value,finish:this.get('finish').value,colour:this.get('colour').value,outline,style:this.get('slant').selectedOptions[0].textContent,pack:'Pair (2 stickers)',source:'Original font and logo vector curves; vector outline offset.'}\n   };\n   let nativeSvg;\n   try{nativeSvg=window.BlumVector.exportSvg(model);}catch(error){group.remove();if(ticket===this.version)this.get('error').textContent='The vector artwork could not be prepared. Please try another option.';return;}\n   const nativeRoot=new DOMParser().parseFromString(nativeSvg,'image/svg+xml').documentElement;\n   const [vx,vy,vw,vh]=nativeRoot.getAttribute('viewBox').split(' ').map(Number);\n   artworkViewBox=[vx-3,vy-3,vw+6,vh+6].join(' ');\n   const nativePaths=Array.from(nativeRoot.querySelectorAll('path')).map(path=>document.importNode(path,true));\n   nativePaths.forEach(path=>{\n    if(path.id==='outline-backing')path.setAttribute('data-bd-outline','');\n    else path.setAttribute('fill',fill);\n    path.removeAttribute('id');\n   });\n   // The live flat view and the exported SVG now use the same native paths.\n   group.replaceChildren(...nativePaths);\n\n   try{await this.renderProductView(ticket,group,artworkViewBox,nativeSvg);}catch(e){if(ticket!==this.version)return;group.remove();this.get('error').textContent='The product preview could not update. Please try another option.';return;}\n   if(ticket!==this.version)return;\n   this.q('.bd-artwork').replaceWith(group);\n   group.removeAttribute('visibility');group.setAttribute('class','bd-artwork');\n   this.q('.bd-art').setAttribute('viewBox',artworkViewBox);\n   this.q('.bd-art').setAttribute('aria-label',artworkLabel);\n   this.previewReady=true;this.refreshCartButton();\n  }\n  createVinylSurface(width,height,finish,vinyl){\n   const canvas=document.createElement('canvas');canvas.width=width;canvas.height=height;\n   const ctx=canvas.getContext('2d'),pixels=ctx.createImageData(width,height),out=pixels.data;\n   const base=vinyl.hex.slice(1).match(/../g).map(v=>parseInt(v,16));\n   const holographic=/holographic/i.test(vinyl.name)&&!/non-holographic/i.test(vinyl.name);\n   const black=/black/i.test(vinyl.name);\n   const hash=(x,y)=>{let n=Math.imul(x+37,374761393)^Math.imul(y+11,668265263);n=Math.imul(n^(n>>>13),1274126177);return ((n^(n>>>16))>>>0)/4294967295;};\n   const hueRgb=h=>{const f=n=>{const k=(n+h*12)%12;return 255*(.5-.5*Math.max(-1,Math.min(k-3,9-k,1)));};return [f(0),f(8),f(4)];};\n   for(let y=0;y<height;y++)for(let x=0;x<width;x++){\n    const u=x/width,v=y/height,i=(y*width+x)*4;\n    let colour;\n    if(finish==='Chrome'){\n     const position=u*.85+v*.28+.035*Math.sin(v*5+u*3);\n     const reflection=.82+.36*Math.sin(position*15)+.19*Math.sin(position*34+1.1);\n     const highlight=Math.pow(Math.max(0,Math.cos(position*21-.9)),24)*.55;\n     colour=base.map(c=>c*reflection+255*highlight);\n     if(holographic){\n      // A restrained diagonal iridescent reflection over a recognisable metal base.\n      // Match the supplied samples without covering the whole surface in rainbow bands.\n      const purple=/purple/i.test(vinyl.name);\n      const metal=black?[65,70,73]:purple?[125,42,190]:[174,178,182];\n      const band=u*.72+v*.28+.025*Math.sin(v*4)-.53;\n      const iridescence=Math.exp(-Math.pow(band/.16,2));\n      const rainbow=hueRgb(((band*2.4+.28)%1+1)%1);\n      const blend=iridescence*(purple?.32:black?.27:.38);\n      const softReflection=.91+.09*Math.sin(position*8)+highlight*.25;\n      colour=metal.map((c,j)=>c*softReflection*(1-blend)+rainbow[j]*blend+iridescence*(black?10:20));\n     }\n    }else{\n     // Small, irregular facets are generated across the whole tag, with no tile seams.\n     const cellX=Math.floor(x/3),cellY=Math.floor(y/3),facet=hash(cellX,cellY);\n     const grain=hash(x,y),brightness=.55+facet*.7+grain*.14;\n     const sparkle=facet>.985?Math.pow((facet-.985)/.015,2):0;\n     const rainbow=hueRgb(hash(cellX+891,cellY)*.999);\n     colour=base.map((c,j)=>c*brightness+rainbow[j]*.14*facet+(255-c*.4)*sparkle*.9);\n     const light=.91+.09*Math.cos(u*5-v*3);colour=colour.map(c=>c*light);\n    }\n    for(let c=0;c<3;c++)out[i+c]=Math.max(0,Math.min(255,colour[c]));out[i+3]=255;\n   }\n   ctx.putImageData(pixels,0,0);return canvas;\n  }\n  async renderProductView(ticket,stagedArtwork,artworkViewBox,nativeSvg){\n   const ns='http://www.w3.org/2000/svg',make=(tag,attrs={})=>{const e=document.createElementNS(ns,tag);Object.entries(attrs).forEach(([k,v])=>e.setAttribute(k,v));return e;};\n   const scene=make('svg');\n   const source=stagedArtwork.cloneNode(true);source.removeAttribute('visibility');\n   const finish=this.get('finish').value,vinyl=this.currentVinyl();\n   const textured=finish==='Chrome'||finish==='Glitter';\n   // Photo-pattern SVG fills are unreliable in Safari SVG-as-image rendering.\n   // Rasterise solid geometry first, then apply one continuous procedural surface.\n   source.querySelectorAll('[fill]').forEach(node=>{if((node.getAttribute('fill')||'').startsWith('url('))node.setAttribute('fill',vinyl.hex);});\n   source.querySelectorAll('pattern').forEach(node=>node.remove());\n   const prefix='bd-photo-'+(this.photoId||(this.photoId=crypto.randomUUID()));\n   // Keep all masks local to this scene; flat preview retains its own IDs.\n   source.querySelectorAll('[id]').forEach(e=>{const old=e.id,newId=prefix+'-'+old;e.id=newId;source.querySelectorAll('*').forEach(n=>Array.from(n.attributes).forEach(a=>{if(a.value.includes('#'+old))n.setAttribute(a.name,a.value.replaceAll('#'+old,'#'+newId));}));});\n   source.removeAttribute('class');source.id=prefix+'-art';\n   const defs=make('defs');defs.append(source);scene.append(defs);\n   const gradient=make('linearGradient',{id:prefix+'-paper',x1:'0%',x2:'0%',y1:'0%',y2:'100%'});\n   const hex=this.config.colours[this.get('colour').value];\n   const rgb=hex.slice(1).match(/../g).map(v=>parseInt(v,16)/255).map(v=>v<=.04045?v/12.92:Math.pow((v+.055)/1.055,2.4));\n   const luminance=.2126*rgb[0]+.7152*rgb[1]+.0722*rgb[2];\n   const outline=this.get('outline').value;\n   const darkPaper=false;\n   const paperStops=darkPaper?[['0%','#555b63'],['28%','#444a52'],['76%','#343a42'],['100%','#282d34']]:[['0%','#e5e6e8'],['28%','#f4f5f6'],['76%','#dedfe2'],['100%','#c1c4c9']];\n   paperStops.forEach(([offset,color])=>gradient.append(make('stop',{offset,'stop-color':color})));defs.append(gradient);\n   const shadow=make('filter',{id:prefix+'-shadow',x:'-30%',y:'-60%',width:'170%',height:'240%'});shadow.append(make('feDropShadow',{dx:8,dy:18,stdDeviation:10,'flood-color':'#000','flood-opacity':'.26'}));defs.append(shadow);\n   const [bx,by,bw,bh]=artworkViewBox.split(' ').map(Number);\n   const scale=Math.min(850/bw,140/bh),artW=bw*scale,artH=bh*scale,paperW=artW+36,paperH=artH+24;\n   const bend=30;\n   // Render once at 4x then inverse-map each output pixel. No clipped strips\n   // or 8-bit displacement filters; the continuous curve has subpixel precision.\n   const density=4, rw=Math.ceil(paperW*density), rh=Math.ceil((paperH+bend+4)*density);\n   const flat=make('svg',{xmlns:ns,width:rw,height:rh,viewBox:`0 0 ${paperW} ${rh/density}`});\n   // SVG image font loading is independent of document.fonts, notably in Safari.\n   // Bake text (including knockout-mask text) using the loaded document font first.\n   for(const text of Array.from(source.querySelectorAll('text'))){\n    const fontSize=Number(text.getAttribute('font-size'))||64;\n    const family=text.getAttribute('font-family');\n    const probe=document.createElement('canvas').getContext('2d');probe.font=`${fontSize}px ${family}`;\n    const label=text.textContent,metrics=probe.measureText(label);\n    const stroke=Number(text.getAttribute('stroke-width'))||0;\n    const pad=stroke+3,left=-metrics.actualBoundingBoxLeft-pad,top=-metrics.actualBoundingBoxAscent-pad;\n    const width=Math.max(1,metrics.actualBoundingBoxLeft+metrics.actualBoundingBoxRight+pad*2);\n    const height=Math.max(1,metrics.actualBoundingBoxAscent+metrics.actualBoundingBoxDescent+pad*2);\n    const match=(text.getAttribute('transform')||'').match(/scale\\(([^)]+)\\)/);\n    const textScale=match?Number(match[1]):1;\n    const resolution=Math.max(1,Math.min(12,density*scale*textScale,8192/width,Math.sqrt(4000000/(width*height))));\n    const lettering=document.createElement('canvas');lettering.width=Math.ceil(width*resolution);lettering.height=Math.ceil(height*resolution);\n    const lc=lettering.getContext('2d');lc.scale(resolution,resolution);lc.translate(-left,-top);lc.font=`${fontSize}px ${family}`;lc.textBaseline='alphabetic';\n    if(stroke){lc.strokeStyle=text.getAttribute('stroke');lc.lineWidth=stroke;lc.lineJoin='round';lc.strokeText(label,0,0);}\n    const textFill=text.getAttribute('fill')||'#000';\n    if(textFill.startsWith('url(') && this.vinylTexture){\n     const pattern=lc.createPattern(this.vinylTexture,'repeat');\n     pattern.setTransform(new DOMMatrix().scale(100/this.vinylTexture.width,100/this.vinylTexture.height));lc.fillStyle=pattern;\n    }else lc.fillStyle=textFill;\n    lc.fillText(label,0,0);\n    const raster=make('image',{x:left,y:top,width:lettering.width/resolution,height:lettering.height/resolution,href:lettering.toDataURL('image/png'),preserveAspectRatio:'none'});\n    if(text.hasAttribute('transform'))raster.setAttribute('transform',text.getAttribute('transform'));\n    text.replaceWith(raster);\n   }\n   const flatArt=make('g',{transform:`translate(${18-bx*scale},${12-by*scale}) scale(${scale})`});flatArt.append(source.cloneNode(true));flat.append(flatArt);\n   const svgUrl=URL.createObjectURL(new Blob([new XMLSerializer().serializeToString(flat)],{type:'image/svg+xml'}));\n   const bitmap=new Image();\n   try{await new Promise((resolve,reject)=>{bitmap.onload=resolve;bitmap.onerror=reject;bitmap.src=svgUrl;});}finally{URL.revokeObjectURL(svgUrl);}\n   if(ticket!==this.version)return;\n   const canvas=document.createElement('canvas');canvas.width=rw;canvas.height=rh;\n   const ctx=canvas.getContext('2d',{willReadFrequently:true});ctx.drawImage(bitmap,0,0,rw,rh);\n   if(textured){\n    const maskSvg=flat.cloneNode(true);\n    maskSvg.querySelectorAll('[data-bd-outline]').forEach(node=>node.remove());\n    const maskUrl=URL.createObjectURL(new Blob([new XMLSerializer().serializeToString(maskSvg)],{type:'image/svg+xml'}));\n    const maskImage=new Image();\n    try{await new Promise((resolve,reject)=>{maskImage.onload=resolve;maskImage.onerror=reject;maskImage.src=maskUrl;});}finally{URL.revokeObjectURL(maskUrl);}\n    if(ticket!==this.version)return;\n    const surface=this.createVinylSurface(rw,rh,finish,vinyl);\n    const surfaceContext=surface.getContext('2d');surfaceContext.globalCompositeOperation='destination-in';surfaceContext.drawImage(maskImage,0,0,rw,rh);\n    ctx.drawImage(surface,0,0);\n   }\n   const flatFinishedArtwork=textured?canvas.toDataURL('image/png'):null;\n   // Freeze a flat, high-resolution reference before the mockup curvature warp.\n   // A neutral grey background keeps white artwork legible when printed.\n   const orderCanvas=document.createElement('canvas');\n   orderCanvas.width=rw;orderCanvas.height=Math.ceil(paperH*density);\n   const orderContext=orderCanvas.getContext('2d');\n   orderContext.fillStyle='#e8e8e8';orderContext.fillRect(0,0,orderCanvas.width,orderCanvas.height);\n   orderContext.drawImage(canvas,0,0);\n   const orderBlob=await new Promise(resolve=>orderCanvas.toBlob(resolve,'image/png'));\n   if(ticket!==this.version)return;\n   if(!orderBlob)throw Error('The design reference image could not be generated.');\n   const designId=crypto.randomUUID();\n   const orderFile=new File([orderBlob],'blum-design-'+designId+'.png',{type:'image/png'});\n   const orderSvg=new File([nativeSvg],'blum-design-'+designId+'.svg',{type:'image/svg+xml'});\n\n   const pixels=ctx.getImageData(0,0,rw,rh), output=ctx.createImageData(rw,rh), input=pixels.data, out=output.data;\n   for(let x=0;x<rw;x++){\n    const t=(x+.5)/rw,shift=4*t*(1-t)*bend*density;\n    for(let y=0;y<rh;y++){\n     const sy=y-shift, y0=Math.floor(sy), fraction=sy-y0;\n     if(y0<0||y0+1>=rh)continue;\n     const i=(y0*rw+x)*4,j=i+rw*4,k=(y*rw+x)*4;\n     const a=input[i+3]*(1-fraction),b=input[j+3]*fraction,alpha=a+b;\n     if(alpha){for(let c=0;c<3;c++)out[k+c]=(input[i+c]*a+input[j+c]*b)/alpha;out[k+3]=alpha;}\n    }\n   }\n   ctx.putImageData(output,0,0);const curvedArtwork=canvas.toDataURL('image/png');\n   const sheen=make('linearGradient',{id:prefix+'-sheen',x1:'0%',y1:'0%',x2:'100%',y2:'0%'});\n   [['0%','#fff','.16'],['18%','#fff','.06'],['48%','#000','.07'],['74%','#fff','.02'],['100%','#fff','.2']].forEach(([offset,color,opacity])=>sheen.append(make('stop',{offset,'stop-color':color,'stop-opacity':opacity})));defs.append(sheen);\n   const composition=make('g');scene.append(composition);\n   const x=(1100-paperW)/2;\n   [220,420].forEach((y,index)=>{\n    const pair=make('g',{transform:`translate(${x+(index?22:0)},${y}) rotate(-12 ${paperW/2} ${paperH/2})`});composition.append(pair);\n    // Exact quadratic paper edges instead of a low-resolution polygon.\n    const paperPath=`M 0 0 Q ${paperW/2} ${bend*2} ${paperW} 0 L ${paperW} ${paperH} Q ${paperW/2} ${paperH+bend*2} 0 ${paperH} Z`;\n    pair.append(make('path',{d:paperPath,fill:`url(#${prefix}-paper)`,stroke:darkPaper?'#646a72':'#c6c9ce','stroke-width':.8,filter:`url(#${prefix}-shadow)`}));\n    // Slightly visible paper edge and a soft, directional highlight suggest curl.\n    pair.append(make('path',{d:`M 0 ${paperH} Q ${paperW/2} ${paperH+bend*2} ${paperW} ${paperH}`,fill:'none',stroke:darkPaper?'#20242a':'#a8adb3','stroke-width':2}));\n    pair.append(make('image',{href:curvedArtwork,x:0,y:0,width:paperW,height:rh/density,preserveAspectRatio:'none'}));\n    pair.append(make('path',{d:paperPath,fill:`url(#${prefix}-sheen)`,'pointer-events':'none'}));\n    pair.append(make('path',{d:`M 0 0 Q ${paperW/2} ${bend*2} ${paperW} 0`,fill:'none',stroke:'#fff','stroke-opacity':darkPaper?.22:.65,'stroke-width':1}));\n   });\n   // Centre the rotated pair as a whole and reserve room for its drop shadows.\n   // Fit a conservative rotated-paper envelope, including the curl and shadows.\n   const angle=12*Math.PI/180, boundW=paperW*Math.cos(angle)+(paperH+bend)*Math.sin(angle)+22;\n   const boundH=paperW*Math.sin(angle)+(paperH+bend)*Math.cos(angle)+200;\n   const fit=Math.min(1030/boundW,600/boundH);\n   composition.setAttribute('transform',`translate(${550-fit*561},${350-fit*(320+paperH/2+bend/2)}) scale(${fit})`);\n   if(flatFinishedArtwork){\n    // Reuse the identical finish before the product's curvature warp.\n    // Map the full raster (including transparent margins) back to artwork coordinates.\n    stagedArtwork.replaceChildren(make('image',{\n     href:flatFinishedArtwork,x:bx-18/scale,y:by-12/scale,\n     width:paperW/scale,height:rh/density/scale,preserveAspectRatio:'none'\n    }));\n   }\n   this.orderPreview={version:ticket,file:orderFile,svg:orderSvg};\n   this.scene.replaceChildren(...Array.from(scene.childNodes));\n   // Match the square preview frame more closely while retaining shadow clearance.\n   this.scene.setAttribute('viewBox','0 20 1100 660');\n   this.scene.setAttribute('aria-label','Product preview: pair of '+this.get('platform').value+' stickers for '+(this.get('username').value||'yourname')+' on backing paper');\n\n  }\n });\n})();\n"],
  "mappings": "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",
  "names": ["option", "legend", "x"]
}
