{
  "version": 3,
  "sources": ["/cdn/shop/t/45/assets/ttcf-za.js?audit=1789386900"],
  "sourcesContent": ["/* South African quotation flow. No price requests or cart writes. */\n(function(){\n  'use strict';\n  const config=window.TTCF_ZA, rules=window.TTCFCommerce;\n  if(!config||!rules)return;\n  const byId=id=>document.getElementById(id);\n  const escape=s=>String(s??'').replace(/[&<>\"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]));\n  const root=(config.root||'/').replace(/\\/?$/,'/');\n  let catalog={},products={},initialized=false,scheduled=false,activeKey='',reference='',created='',model=null,pdfBusy=false,pdfUrl='',activeDrawer=null;\n  function status(s){byId('ttcf-status').textContent=s;if(pdfBusy){byId('ttcf-download-status').hidden=false;byId('ttcf-download-status').textContent=s;}}\n  async function json(url){const c=new AbortController(),timer=setTimeout(()=>c.abort(),20000);try{const r=await fetch(url,{signal:c.signal});if(!r.ok)throw Error('Data unavailable');return await r.json();}finally{clearTimeout(timer);}}\n  function saveDraft(){\n    try{if(model?.lines.length)sessionStorage.setItem('ttcf-working-draft',JSON.stringify({model,reference}));else sessionStorage.removeItem('ttcf-working-draft');}catch(_){}\n  }\n  function drawerIsFull(drawer,filled,productList){\n    if(!drawer||!filled.sets.length)return false;\n    const xs=[0,...filled.sets.map(s=>s.x+s.width)],ys=[0,...filled.sets.map(s=>s.y+s.depth)];\n    const hasRoom=productList.some(p=>{\n      if(!p.setWidth||!p.setDepth||Number(p.setHeight)>drawer.height)return false;\n      return [[Number(p.setWidth),Number(p.setDepth)],[Number(p.setDepth),Number(p.setWidth)]].some(([w,h])=>xs.some(x=>ys.some(y=>\n        x+w<=drawer.width+.01&&y+h<=drawer.depth+.01&&filled.sets.every(s=>x+w<=s.x+.01||x>=s.x+s.width-.01||y+h<=s.y+.01||y>=s.y+s.depth-.01))));\n    });\n    return !hasRoom;\n  }\n  function refresh(){\n    let snapshot=window.TengConfigurator.getSnapshot();\n    const key=rules.layoutKey(snapshot);\n    if(key===activeKey)return;\n    activeKey=key;reference='CF-'+(crypto.randomUUID?.()||Date.now().toString(36)).replace(/-/g,'').slice(0,12).toUpperCase();created=new Date().toLocaleString('en-ZA');\n    if(model){\n      if(model.payload.toolstorageIds!==snapshot.payload.toolstorageIds)activeDrawer=null;\n      else {const changed=snapshot.payload.drawers?.find(d=>d.sets.length>(model.payload.drawers.find(old=>old.drawerIndex===d.drawerIndex)?.sets.length||0));if(changed)activeDrawer=String(changed.drawerIndex);}\n    }\n    model=window.TTCFQuoteModel.make(snapshot,products,reference,created);\n    const selected=model.lines.length>0,valid=selected&&snapshot.storageIds.length>0&&!snapshot.unplacedCount&&!snapshot.errors.length;\n    byId('ttcf-total').textContent=selected?`${model.storageCount} storage selection(s) \u00B7 ${model.setCount} tool set(s) \u00B7 ${model.toolCount} tools / pieces`:'Select storage to get started.';\n    byId('ttcf-request').disabled=!valid;byId('ttcf-pdf').disabled=!selected||pdfBusy;\n    byId('ttcf-submit').disabled=!valid;\n    byId('ttcf-status').hidden=!selected||valid;\n    byId('ttcf-layout-warning').hidden=!selected||valid;byId('ttcf-layout-warning').textContent=valid?'':'Some selected sets do not fit this storage. Review your selection and choose compatible storage or remove the unplaced sets before requesting a quotation.';\n    const guidance=byId('ttcf-selection-guidance');\n    guidance.textContent=!selected?'Choose a storage unit, then add tool sets using the + buttons.':`${model.setCount} tool set(s) selected. Sets are placed automatically; drag them to rearrange. Unavailable sets are greyed out.`;\n    saveDraft();\n    byId('ttcf-lines').innerHTML=model.lines.length?'<table class=\"ttcf-selection-table\" aria-label=\"Selected products\"><thead><tr><th scope=\"col\">Product</th><th scope=\"col\">Product Title</th><th scope=\"col\">Product page</th></tr></thead><tbody>'+model.lines.map(l=>{\n      const image=window.APP_CONFIG.imageMap[products[l.sku]?.itemImageUrl];\n      const url=(config.preview?'https://teng-tools.co.za/':root)+'products/'+encodeURIComponent(l.handle);\n      return `<tr><td>${image?`<img src=\"${escape(image)}\" alt=\"${escape(l.description)}\" loading=\"lazy\" width=\"96\" height=\"80\">`:''}</td><td><strong>${escape(l.description)}</strong><span class=\"ttcf-line-meta\">${escape(l.sku)} \u00B7 Quantity: ${l.quantity}</span></td><td>${l.handle?`<a class=\"ttcf-show-product\" href=\"${escape(url)}\" target=\"_blank\" rel=\"noopener\" aria-label=\"Show Product: ${escape(l.description)}\">Show Product</a>`:'<button class=\"ttcf-show-product\" type=\"button\" disabled title=\"No local product page available\">Show Product</button>'}</td></tr>`;\n    }).join('')+'</tbody></table>':'';\n    byId('ttcf-quote-reference').value=reference;byId('ttcf-quote-body').value=window.TTCFQuoteModel.message(model);\n    byId('ttcf-form-summary').textContent=`Configuration ${reference}: ${model.storageCount} storage selection(s) and ${model.setCount} tool set(s).`;\n    byId('ttcf-pdf-result').hidden=true;byId('ttcf-download-status').hidden=true;\n    status(!selected?'All 34 storage options and 310 tool sets are available to configure.':!valid?'Place all selected tool sets in compatible storage before requesting a quotation. You can download a PDF with the current layout notes.':`Configuration ${reference} \u00B7 Ready to request a quotation or download your PDF.`);\n  }\n  function schedule(){if(scheduled)return;scheduled=true;queueMicrotask(()=>{scheduled=false;decorateProducts();refresh();compactLayout();});}\n  async function imagesFor(current){\n    const result={},ids=[...new Set(current.lines.map(l=>l.sku))];let next=0;\n    await Promise.all(Array.from({length:Math.min(4,ids.length)},async()=>{while(next<ids.length){const sku=ids[next++],source=window.APP_CONFIG.imageMap[products[sku]?.itemImageUrl];if(!source)continue;\n      try{result[sku]=await new Promise((resolve,reject)=>{const img=new Image(),timer=setTimeout(()=>reject(Error('Image timeout')),12000);img.crossOrigin='anonymous';img.onload=()=>{clearTimeout(timer);try{const scale=Math.min(1,700/Math.max(img.naturalWidth,img.naturalHeight));const c=document.createElement('canvas');c.width=Math.round(img.naturalWidth*scale);c.height=Math.round(img.naturalHeight*scale);const ctx=c.getContext('2d');ctx.fillStyle='#fff';ctx.fillRect(0,0,c.width,c.height);ctx.drawImage(img,0,0,c.width,c.height);resolve({data:c.toDataURL('image/jpeg',0.85),width:c.width,height:c.height});}catch(e){reject(e);}};img.onerror=()=>{clearTimeout(timer);reject(Error('Image unavailable'));};img.src=source;});}catch(_){/* The labelled layout and product list remain complete if a photo fails. */}\n    }}));return result;\n  }\n  async function downloadPdf(){\n    if(pdfBusy||!model?.lines.length)return;const current=structuredClone(model);pdfBusy=true;byId('ttcf-pdf').disabled=true;status('Preparing your configuration PDF\u2026');\n    try{const images=await imagesFor(current),doc=window.TTCFPdf.create(current,images);if(pdfUrl)URL.revokeObjectURL(pdfUrl);pdfUrl=URL.createObjectURL(doc.output('blob'));const link=byId('ttcf-pdf-link');link.href=pdfUrl;link.download=`TengTools-${current.reference}.pdf`;byId('ttcf-pdf-result').hidden=false;link.click();status(`PDF ready: ${current.reference}. ${Object.keys(images).length<current.lines.length?'Some photos were unavailable; all product details and labelled layouts are included.':'Keep this reference when requesting your quotation.'}`);\n    }catch(e){status('The PDF could not be generated. Please try again. Your configuration has been kept.');console.error('TengTools PDF:',e);}finally{pdfBusy=false;byId('ttcf-pdf').disabled=!model?.lines.length;}\n  }\n  function decorateProducts() {\n    for(const term of document.querySelectorAll('#productDetailBody dt')){const units={Width:'mm',Depth:'mm',Height:'mm',Weight:'g'};const unit=units[term.textContent.trim()];if(unit)term.textContent=term.textContent.trim()+' ('+unit+')';}\n    for(const button of document.querySelectorAll('#predefinedToolKitList button[data-action=\"select-predefined-tool-kit\"]')){if(button.querySelector('.ttcf-kit-label'))continue;const label=document.createElement('span');label.className='ttcf-kit-label';label.textContent='Select';button.append(label);button.closest('#predefinedToolKitList > div').append(button);}\n    const entries = [...document.querySelectorAll('#ttcf-page [data-toolset-card], #ttcf-page [data-toolstorage-card], #ttcf-page #productDetailBody[data-product-sku]')];\n    for (const entry of entries) {\n      const sku = entry.dataset.itemId || entry.dataset.productSku;\n      if (entry.querySelector('[data-ttcf-product-link]')) continue;\n      const mapping = catalog[sku];\n      if(entry.hasAttribute('data-toolset-card')){\n        const add=entry.querySelector('[data-action=\"add-toolset\"]');\n        entry.querySelector('.ttcf-fit-note')?.remove();\n        entry.classList.toggle('ttcf-does-not-fit',Boolean(add?.disabled));\n      }\n      for (const titleLink of entry.querySelectorAll('a[href=\"#\"]:not([data-action])')) {\n        titleLink.dataset.action = 'open-product-modal';\n        titleLink.dataset.itemId = sku;\n        titleLink.dataset.itemType = entry.hasAttribute('data-toolstorage-card') ? 'toolstorage' : 'toolset';\n      }\n      if (entry.id !== 'productDetailBody' || !mapping?.handle) continue;\n      const el = document.createElement('a');\n      el.dataset.ttcfProductLink = sku;\n      if (mapping?.handle) {\n        el.className = 'ttcf-catalog-link';\n        el.href = (config.preview ? 'https://teng-tools.co.za/' : root) + 'products/' + encodeURIComponent(mapping.handle);\n        el.target = '_blank'; el.rel = 'noopener';\n        el.textContent = entry.id === 'productDetailBody' ? 'View more Information' : 'View local product';\n        el.setAttribute('aria-label', el.textContent + ' ' + sku);\n      } else {\n        el.className = 'ttcf-catalog-note';\n        el.textContent = 'Local product page not listed \u00B7 available to configure and request a quote';\n      }\n      if(entry.id === 'productDetailBody'){el.classList.add('ttcf-detail-link');entry.children[1].appendChild(el);}else{entry.appendChild(el);}\n    }\n  }\n\n  function installBottomActions(){\n    if(byId('ttcf-bottom-actions'))return;\n    const bar=document.createElement('nav');bar.id='ttcf-bottom-actions';bar.setAttribute('aria-label','Configuration actions');\n    for(const id of ['ttcf-request','ttcf-pdf','ttcf-review']){\n      const original=byId(id),button=original.cloneNode(true);button.id=id+'-bottom';\n      if(id==='ttcf-review')button.innerHTML='Review selection <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\"><path d=\"m6 15 6-6 6 6\"/></svg>';\n      button.addEventListener('click',()=>{\n        if(id==='ttcf-review'){\n          const panel=byId('ttcf-review-panel');if(panel.hidden)original.click();\n          requestAnimationFrame(()=>{panel.setAttribute('tabindex','-1');panel.focus({preventScroll:true});panel.scrollIntoView({behavior:'smooth',block:'start'});});\n        }else original.click();\n      });\n      const sync=()=>{button.disabled=original.disabled;if(id==='ttcf-review')button.setAttribute('aria-expanded',original.getAttribute('aria-expanded'));};\n      new MutationObserver(sync).observe(original,{attributes:true,attributeFilter:['disabled','aria-expanded']});sync();bar.appendChild(button);\n    }\n    byId('toolkit-configurator-app').parentElement.after(bar);\n  }\n  function alignDrawerGrid(){\n    const form=byId('toolstorageForm'),grid=byId('recommendationsGrid'),strip=byId('fromToolstorageInput');\n    const catalog=[byId('toolStorageCatalog'),byId('toolSetCatalog')].find(el=>el?.getClientRects().length);\n    if(!catalog||!grid||!strip)return;\n    const sideBySide=grid.getBoundingClientRect().left>=form.getBoundingClientRect().right-1;\n    const margin=sideBySide?Math.max(16,catalog.getBoundingClientRect().top-strip.getBoundingClientRect().bottom):16;\n    const value=margin+'px';if(grid.style.marginTop!==value)grid.style.marginTop=value;\n  }\n  function clearDrawer(index){\n    const snapshot=window.TengConfigurator.getSnapshot(),drawer=snapshot.payload.drawers.find(d=>String(d.drawerIndex)===String(index));\n    if(!drawer?.sets.length)return;\n    const remove=new Map();for(const set of drawer.sets)remove.set(set.itemId,(remove.get(set.itemId)||0)+1);\n    const ids=snapshot.setIds.filter(id=>{const n=remove.get(id)||0;if(n){remove.set(id,n-1);return false;}return true;});\n    const drawers=snapshot.payload.drawers.map(d=>String(d.drawerIndex)===String(index)?{...d,sets:[]}:d);\n    window.TengConfigurator.restore({...snapshot.payload,toolsetIds:ids.join('\\n'),drawers});activeDrawer=String(index);schedule();\n  }\n\n  // Pure movement planning: never remove from the source until a destination fits.\n  function planDrawerMove(snapshot,sourceIndex,targetIndex,setIndex,productMap){\n    const source=snapshot.payload.drawers.find(d=>String(d.drawerIndex)===String(sourceIndex));\n    const target=snapshot.payload.drawers.find(d=>String(d.drawerIndex)===String(targetIndex));\n    const meta=snapshot.drawers.find(d=>String(d.index)===String(targetIndex));\n    const fail=reason=>({reason});\n    if(!source||!target||!meta||source===target)return fail('Choose another drawer');\n    if(source.locked)return fail('Unlock the source drawer first');\n    if(target.locked)return fail('Drawer is locked');\n    const moving=setIndex===null?source.sets:source.sets.filter((_,i)=>i===setIndex);\n    if(!moving.length)return fail('No sets to move');\n    if(moving.some(s=>!productMap[s.itemId]))return fail('Product dimensions unavailable');\n    if(moving.some(s=>Number(productMap[s.itemId].setHeight)>meta.height))return fail('Drawer is too shallow in height');\n    const weight=[...target.sets,...moving].reduce((n,s)=>n+(Number(productMap[s.itemId]?.itemWeight)||0),0)/1000;\n    if(meta.capacity>0&&weight>meta.capacity+.0001)return fail('Exceeds drawer weight limit');\n    const minX=Math.min(...moving.map(s=>s.x)),minY=Math.min(...moving.map(s=>s.y));\n    const variants=[moving.map(s=>({...s,x:s.x-minX,y:s.y-minY}))];\n    if(moving.length===1){const s=variants[0][0];variants.push([{...s,width:s.depth,depth:s.width}]);}\n    for(const shape of variants){\n      const w=Math.max(...shape.map(s=>s.x+s.width)),h=Math.max(...shape.map(s=>s.y+s.depth));\n      if(w>meta.width+.01||h>meta.depth+.01)continue;\n      const xs=[0,...target.sets.map(s=>s.x+s.width)],ys=[0,...target.sets.map(s=>s.y+s.depth)];\n      for(const y of ys)for(const x of xs){\n        const placed=shape.map(s=>({...s,x:s.x+x,y:s.y+y}));\n        if(placed.every(s=>s.x+s.width<=meta.width+.01&&s.y+s.depth<=meta.depth+.01&&target.sets.every(t=>s.x+s.width<=t.x+.01||s.x>=t.x+t.width-.01||s.y+s.depth<=t.y+.01||s.y>=t.y+t.depth-.01))){\n          const payload=structuredClone(snapshot.payload);\n          payload.drawers.find(d=>d.drawerIndex===source.drawerIndex).sets=source.sets.filter((_,i)=>setIndex!==null&&i!==setIndex);\n          payload.drawers.find(d=>d.drawerIndex===target.drawerIndex).sets.push(...placed);\n          return {payload,count:moving.length};\n        }\n      }\n    }\n    return fail(setIndex===null?'Not enough room for this layout':'Not enough free space');\n  }\n  let moveDialog=null,moveUndo=null,dragOrigin=null,hoverTimer=null,hoverDrawer=null;\n  function drawerLabel(snapshot,index){const d=snapshot.drawers.find(d=>String(d.index)===String(index));return d?d.storageId+' \u00B7 Drawer '+d.localIndex:'Drawer '+index;}\n  function announceMove(text,before,sourceIndex){\n    const notice=byId('ttcf-move-notice');notice.hidden=false;notice.querySelector('span').textContent=text;\n    moveUndo=before?{payload:before,sourceIndex,key:rules.layoutKey(window.TengConfigurator.getSnapshot())}:null;\n    notice.querySelector('button').hidden=!moveUndo;\n  }\n  function applyDrawerMove(plan,before,sourceIndex,targetIndex){\n    const restore=window.TengConfigurator.restore(plan.payload);\n    const after=window.TengConfigurator.getSnapshot();\n    const expected=JSON.stringify(plan.payload.drawers),actual=JSON.stringify(after.payload.drawers);\n    if(restore===false||after.errors.length||after.unplacedCount>before.unplacedCount||expected!==actual){window.TengConfigurator.restore(before.payload);refresh();activeDrawer=String(sourceIndex);compactLayout();announceMove('The move could not be completed. Your layout has been kept.',null);return;}\n    refresh();activeDrawer=String(targetIndex);compactLayout();\n    announceMove((plan.count===1?'Set moved to ':'Drawer contents moved to ')+drawerLabel(after,targetIndex)+'.',before.payload,sourceIndex);\n    if(!mobileQuery.matches)byId('recommendationsGrid').querySelector('[data-ttcf-accordion=\"'+targetIndex+'\"]>summary')?.scrollIntoView({block:'nearest',behavior:'smooth'});\n  }\n  function openMoveDialog(sourceIndex,setIndex){\n    const snapshot=window.TengConfigurator.getSnapshot(),source=snapshot.payload.drawers.find(d=>String(d.drawerIndex)===String(sourceIndex));\n    if(!source?.sets.length)return;\n    const item=setIndex===null?null:source.sets[setIndex];if(setIndex!==null&&!item)return;\n    const origin=document.activeElement;\n    moveDialog.querySelector('h2').textContent=setIndex===null?'Move drawer contents':'Move to drawer\u2026';\n    moveDialog.querySelector('.ttcf-move-description').textContent=(item?item.itemId+' \u2014 '+(products[item.itemId]?.description||'') : source.sets.length+(source.sets.length===1?' set; its position will be kept.':' sets; their arrangement will be kept.'))+' From '+drawerLabel(snapshot,sourceIndex)+'.';\n    const list=moveDialog.querySelector('.ttcf-move-destinations');list.replaceChildren();\n    let group=null,lastStorage=null;\n    const key=rules.layoutKey(snapshot);\n    for(const destination of snapshot.drawers){\n      if(String(destination.index)===String(sourceIndex))continue;\n      if(destination.storageId!==lastStorage){group=document.createElement('section');const heading=document.createElement('h3');heading.textContent=destination.storageId;group.append(heading);list.append(group);lastStorage=destination.storageId;}\n      const plan=planDrawerMove(snapshot,sourceIndex,destination.index,setIndex,products),button=document.createElement('button');button.type='button';button.className='ttcf-move-destination';button.disabled=Boolean(plan.reason);\n      button.innerHTML='<span>Drawer '+destination.localIndex+'</span><small>'+escape(plan.reason||'Move here')+'</small>';group.append(button);\n      button.addEventListener('click',()=>{if(key!==rules.layoutKey(window.TengConfigurator.getSnapshot())){openMoveDialog(sourceIndex,setIndex);return;}moveDialog.close();applyDrawerMove(plan,snapshot,sourceIndex,destination.index);updateDock();});\n    }\n    if(!list.children.length){const p=document.createElement('p');p.textContent='There are no other drawers. Add another storage option first.';list.append(p);}\n    moveDialog.onclose=()=>{updateDock();if(origin?.isConnected)origin.focus({preventScroll:true});};\n    if(!moveDialog.open)moveDialog.showModal();updateDock();\n  }\n  function installDrawerMoves(){\n    moveDialog=document.createElement('dialog');moveDialog.id='ttcf-move-dialog';moveDialog.setAttribute('role','dialog');moveDialog.setAttribute('aria-labelledby','ttcf-move-title');\n    moveDialog.innerHTML='<header><h2 id=\"ttcf-move-title\">Move to drawer\u2026</h2><button type=\"button\" aria-label=\"Close move dialog\">\u00D7</button></header><p class=\"ttcf-move-description\"></p><div class=\"ttcf-move-destinations\"></div><button type=\"button\" class=\"ttcf-move-cancel\">Cancel</button>';\n    moveDialog.querySelector('header button').onclick=()=>moveDialog.close();moveDialog.querySelector('.ttcf-move-cancel').onclick=()=>moveDialog.close();byId('ttcf-page').append(moveDialog);\n    const whole=document.createElement('button');whole.type='button';whole.id='ttcf-mobile-move';whole.textContent='Move drawer contents\u2026';whole.onclick=()=>openMoveDialog(activeDrawer,null);byId('ttcf-mobile-dock').append(whole);\n    const notice=document.createElement('div');notice.id='ttcf-move-notice';notice.hidden=true;notice.innerHTML='<span role=\"status\"></span><button type=\"button\">Undo</button><button type=\"button\" aria-label=\"Dismiss move notification\">\u00D7</button>';byId('ttcf-page').append(notice);\n    notice.querySelector('button').onclick=()=>{if(!moveUndo)return;if(moveUndo.key!==rules.layoutKey(window.TengConfigurator.getSnapshot())){announceMove('Your layout has changed since that move. Undo is no longer available.',null);return;}const undo=moveUndo;window.TengConfigurator.restore(undo.payload);refresh();activeDrawer=String(undo.sourceIndex);compactLayout();announceMove('Move undone.',null);};notice.lastElementChild.onclick=()=>{notice.hidden=true;};\n    document.addEventListener('ttcf:tile-tap',event=>{const d=event.detail,s=window.TengConfigurator.getSnapshot().payload.drawers.find(x=>String(x.drawerIndex)===String(d.drawerIndex));const i=s?.sets.findIndex(x=>x.itemId===d.setId&&x.x===Number(d.x)&&x.y===Number(d.y));if(i>=0)openMoveDialog(d.drawerIndex,i);});\n    const grid=byId('recommendationsGrid');\n    grid.addEventListener('pointerdown',event=>{const tile=event.target.closest('[data-placed-set-tile]');if(tile&&!event.target.closest('button'))dragOrigin={snapshot:window.TengConfigurator.getSnapshot(),index:tile.dataset.drawerIndex};},true);\n    window.addEventListener('pointermove',event=>{if(!dragOrigin||mobileQuery.matches)return;const summary=document.elementFromPoint(event.clientX,event.clientY)?.closest('#recommendationsGrid summary');const details=summary?.parentElement;if(!details||details.open){clearTimeout(hoverTimer);hoverDrawer=null;return;}if(hoverDrawer===details)return;clearTimeout(hoverTimer);hoverDrawer=details;hoverTimer=setTimeout(()=>{activeDrawer=details.dataset.ttcfAccordion;compactLayout();},450);});\n    window.addEventListener('pointerup',()=>{clearTimeout(hoverTimer);hoverDrawer=null;if(!dragOrigin)return;const origin=dragOrigin;dragOrigin=null;setTimeout(()=>{const after=window.TengConfigurator.getSnapshot();if(rules.layoutKey(after)!==rules.layoutKey(origin.snapshot)){const target=after.payload.drawers.find(d=>d.sets.length>(origin.snapshot.payload.drawers.find(x=>x.drawerIndex===d.drawerIndex)?.sets.length||0));if(target){refresh();activeDrawer=String(target.drawerIndex);compactLayout();announceMove('Set moved to '+drawerLabel(after,target.drawerIndex)+'.',origin.snapshot.payload,origin.index);}}},0);});\n    window.addEventListener('pointercancel',()=>{dragOrigin=null;clearTimeout(hoverTimer);});\n  }\n  function decorateDrawerMoves(section,index,placed){\n    const rows=[...section.querySelectorAll('[data-drawer-set-list-item]')];\n    rows.forEach(row=>{if(row.querySelector('.ttcf-move-set'))return;const button=document.createElement('button');button.type='button';button.className='ttcf-move-set';button.innerHTML='<span>Move</span><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 12h16m-6-6 6 6-6 6\"/></svg>';button.setAttribute('aria-label','Move '+row.dataset.setId+' to another drawer');button.disabled=Boolean(placed?.locked);button.addEventListener('click',()=>{const snap=window.TengConfigurator.getSnapshot(),drawer=snap.payload.drawers.find(d=>String(d.drawerIndex)===index);const occurrence=rows.filter(r=>r.dataset.setId===row.dataset.setId).indexOf(row);const positions=drawer.sets.map((s,i)=>({s,i})).filter(o=>o.s.itemId===row.dataset.setId).sort((a,b)=>a.s.y-b.s.y||a.s.x-b.s.x);openMoveDialog(index,positions[occurrence]?.i);});row.append(button);});\n    const footer=section.querySelector('.ttcf-drawer-footer');if(footer&&!footer.querySelector('.ttcf-move-contents')){const b=document.createElement('button');b.type='button';b.className='ttcf-move-contents';b.textContent='Move drawer contents\u2026';b.disabled=!placed?.sets.length||Boolean(placed.locked);b.onclick=()=>openMoveDialog(index,null);footer.append(b);}\n  }\n\n  function removeOneSet(sku){\n    const snapshot=window.TengConfigurator.getSnapshot();const ids=[...snapshot.setIds];const at=ids.lastIndexOf(sku);if(at<0)return;ids.splice(at,1);\n    const drawers=snapshot.payload.drawers.map(d=>({...d,sets:[...d.sets]}));\n    const ordered=[...drawers].sort((a,b)=>(String(b.drawerIndex)===activeDrawer)-(String(a.drawerIndex)===activeDrawer));\n    for(const drawer of ordered){const i=drawer.sets.map(s=>s.itemId).lastIndexOf(sku);if(i>=0){drawer.sets.splice(i,1);break;}}\n    window.TengConfigurator.restore({...snapshot.payload,toolsetIds:ids.join('\\n'),drawers});schedule();\n  }\n\n  const mobileQuery=window.matchMedia('(max-width:1099px)'), openSizes=new Set();\n  let mobileHomes=null, replacingStorage=null;\n  function installMobileControls(){\n    const dock=document.createElement('section');dock.id='ttcf-mobile-dock';dock.setAttribute('aria-label','Active drawer');dock.hidden=true;\n    const collapse=document.createElement('button');collapse.id='ttcf-dock-toggle';collapse.type='button';collapse.innerHTML='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m6 9 6 6 6-6\"/></svg><span>Collapse</span>';collapse.setAttribute('aria-expanded','true');collapse.addEventListener('click',()=>{dock.classList.toggle('ttcf-collapsed');const open=!dock.classList.contains('ttcf-collapsed');collapse.querySelector('span').textContent=open?'Collapse':'Expand';collapse.setAttribute('aria-expanded',String(open));updateDock();});const clear=document.createElement('button');clear.id='ttcf-dock-clear';clear.type='button';clear.innerHTML='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 7h16M9 7V4h6v3M6 7l1 13h10l1-13M10 10v7M14 10v7\"/></svg><span>Clear</span>';clear.addEventListener('click',()=>clearDrawer(activeDrawer));dock.append(clear,collapse);byId('toolkit-configurator-app').append(dock);\n    const menu=document.createElement('div');menu.id='ttcf-mobile-menu';menu.innerHTML='<button type=\"button\" id=\"ttcf-menu-toggle\" aria-label=\"Configurator menu\" aria-expanded=\"false\" aria-controls=\"ttcf-menu-panel\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 6h18M3 12h18M3 18h18\"/></svg></button><div id=\"ttcf-menu-panel\" hidden><div class=\"ttcf-menu-title\">Configurator menu<button type=\"button\" id=\"ttcf-menu-close\" aria-label=\"Close configurator menu\">&#215;</button></div></div>';\n    const heading=document.createElement('div');heading.id='ttcf-configuration-heading';heading.innerHTML='<h2>Your Configuration</h2>';heading.append(menu);byId('toolstorageForm').before(heading);\n    const panel=byId('ttcf-menu-panel'),toggle=byId('ttcf-menu-toggle');heading.append(panel);\n    function close(){panel.hidden=true;toggle.setAttribute('aria-expanded','false');updateDock();}\n    toggle.addEventListener('click',()=>{panel.hidden=!panel.hidden;toggle.setAttribute('aria-expanded',String(!panel.hidden));updateDock();});byId('ttcf-menu-close').addEventListener('click',()=>{close();toggle.focus();});\n    for(const source of [byId('ttcf-request'),byId('ttcf-pdf'),byId('ttcf-review'),...byId('fabActions').querySelectorAll('.fab-item')]){\n      const button=document.createElement('button');button.type='button';button.textContent=source.getAttribute('aria-label')||source.textContent.trim();const icon=source.querySelector('svg')?.cloneNode(true)||document.createElementNS('http://www.w3.org/2000/svg','svg');icon.setAttribute('viewBox','0 0 24 24');icon.setAttribute('aria-hidden','true');const paths={'ttcf-request':'M3 5h18v14H3z M3 5l9 7 9-7','ttcf-pdf':'M12 3v12m-5-5 5 5 5-5M4 16v5h16v-5','ttcf-review':'M9 6h12M9 12h12M9 18h12M3 6h1M3 12h1M3 18h1'};if(paths[source.id]){icon.innerHTML='<path d=\"'+paths[source.id]+'\"/>';icon.classList.add('ttcf-menu-line-icon');}button.prepend(icon);button.dataset.source=source.id;button.disabled=source.disabled;button.addEventListener('click',()=>{close();source.click();if(source.id==='ttcf-review')byId('ttcf-review-panel').scrollIntoView({behavior:'smooth',block:'start'});setTimeout(updateDock,0);});panel.append(button);new MutationObserver(()=>{button.disabled=source.disabled;}).observe(source,{attributes:true,attributeFilter:['disabled']});\n    }\n    document.addEventListener('keydown',event=>{if(event.key==='Escape'&&!panel.hidden){close();toggle.focus();}});\n    document.addEventListener('click',event=>{if(!heading.contains(event.target)&&!panel.hidden)close();setTimeout(updateDock,0);});\n    document.addEventListener('focusin',updateDock);document.addEventListener('focusout',()=>setTimeout(updateDock,0));window.visualViewport?.addEventListener('resize',updateDock);window.addEventListener('resize',updateDock);\n    const notice=document.createElement('div');notice.id='ttcf-replace-notice';notice.hidden=true;notice.innerHTML='<span></span><button type=\"button\">Cancel replacement</button>';byId('toolStorageCatalog').before(notice);notice.querySelector('button').addEventListener('click',()=>{replacingStorage=null;notice.hidden=true;});\n    new ResizeObserver(()=>updateDock()).observe(dock);\n  }\n  function updateDock(){\n    const dock=byId('ttcf-mobile-dock');if(!dock)return;\n    const editing=/^(INPUT|TEXTAREA|SELECT)$/.test(document.activeElement?.tagName||'');\n    const modal=[...byId('ttcf-page').querySelectorAll('[role=\"dialog\"]')].some(el=>el.getClientRects().length&&getComputedStyle(el).visibility!=='hidden');\n    const filters=[...document.querySelectorAll('[data-filter-summary]')].some(el=>el.closest('details').open);\n    const show=mobileQuery.matches&&Boolean(model?.storageCount)&&byId('tab-btn-2').getAttribute('aria-selected')==='true'&&!editing&&!modal&&!filters&&byId('ttcf-menu-panel').hidden&&byId('ttcf-quote-panel').hidden&&byId('ttcf-review-panel').hidden;\n    dock.hidden=!show;\n    byId('ttcf-dock-clear').disabled=!(model?.payload.drawers.find(d=>String(d.drawerIndex)===activeDrawer)?.sets.length);\n    const moveButton=byId('ttcf-mobile-move');if(moveButton){const d=model?.payload.drawers.find(d=>String(d.drawerIndex)===activeDrawer);moveButton.hidden=!d?.sets.length;moveButton.disabled=Boolean(d?.locked);}\n    const padding=show?Math.ceil(dock.getBoundingClientRect().height)+16:0;\n    const page=byId('ttcf-page');if(page.style.getPropertyValue('--ttcf-dock-space')!==padding+'px')page.style.setProperty('--ttcf-dock-space',padding+'px');\n  }\n  function mobileLayout(){\n    const grid=byId('recommendationsGrid'),storage=byId('fromToolstorageInput'),catalogue=byId('toolSetCatalog');\n    if(!mobileHomes){mobileHomes={};for(const [key,el] of Object.entries({grid,storage})){const mark=document.createComment('mobile '+key+' home');el.before(mark);mobileHomes[key]=mark;}}\n    const mobile=mobileQuery.matches;\n    let nav=byId('ttcf-drawer-nav');\n    if(!nav){\n      nav=document.createElement('div');nav.id='ttcf-drawer-nav';\n      nav.innerHTML='<button type=\"button\" aria-label=\"Previous drawer\">&#8249;</button><span aria-live=\"polite\"></span><button type=\"button\" aria-label=\"Next drawer\">&#8250;</button>';\n      nav.firstElementChild.addEventListener('click',()=>navigateDrawer(-1));nav.lastElementChild.addEventListener('click',()=>navigateDrawer(1));\n      let start=null;nav.addEventListener('touchstart',e=>{start=[e.touches[0].clientX,e.touches[0].clientY];},{passive:true});\n      nav.addEventListener('touchend',e=>{if(!start)return;const dx=e.changedTouches[0].clientX-start[0],dy=e.changedTouches[0].clientY-start[1];if(Math.abs(dx)>45&&Math.abs(dx)>Math.abs(dy)*1.5)navigateDrawer(dx<0?1:-1);start=null;},{passive:true});\n      grid.before(nav);\n    }\n    if(mobile){\n      if(storage.nextElementSibling!==byId('toolstorageForm'))byId('toolstorageForm').before(storage);\n      const dock=byId('ttcf-mobile-dock');\n      if(grid.parentElement!==dock)dock.append(grid);\n      if(nav.parentElement!==dock)dock.append(nav);\n    }else{\n      for(const [key,el] of Object.entries({grid,storage}))if(mobileHomes[key].parentElement!==el.parentElement)mobileHomes[key].after(el);\n      if(nav.nextElementSibling!==grid)grid.before(nav);\n    }\n    const sections=[...grid.querySelectorAll(':scope > section')];\n    for(const section of sections){const index=section.querySelector('[data-dropzone]')?.dataset.drawerIndex;section.hidden=mobile&&index!=null&&index!==activeDrawer;}\n    const drawers=model?.drawers||[],position=drawers.findIndex(d=>String(d.index)===activeDrawer),current=drawers[position];\n    nav.hidden=!mobile||!current;\n    if(current){byId('ttcf-mobile-dock').style.setProperty('--ttcf-drawer-width-scale',String(current.width/379));byId('ttcf-mobile-dock').style.setProperty('--ttcf-drawer-ratio',String(current.width/current.depth));nav.title='Usable space: '+current.width+' \u00D7 '+current.depth+' mm. Maximum tool height: '+current.height+' mm.';const total=drawers.filter(d=>d.storageId===current.storageId).length;const label=current.storageId+' \u00B7 Drawer '+current.localIndex+' of '+total;if(nav.children[1].textContent!==label){nav.children[1].replaceChildren(document.createTextNode(current.storageId+' \u00B7 '),document.createElement('br'),document.createTextNode('Drawer '));const number=document.createElement('strong');number.className='ttcf-active-number';number.textContent=current.localIndex;nav.children[1].append(number,document.createTextNode(' of '+total));}nav.firstElementChild.disabled=position<=0;nav.lastElementChild.disabled=position>=drawers.length-1;}\n    byId('toolkit-configurator-app').dataset.activeDrawer=activeDrawer||'';\n    updateDock();\n    const cards=[...catalogue.querySelectorAll('[data-toolset-card]')];\n    if(!mobile){for(const card of cards)if(card.parentElement!==catalogue)catalogue.append(card);catalogue.querySelectorAll('.ttcf-size-group').forEach(el=>el.remove());return;}\n    const groups=new Map();for(const card of cards){const type=products[card.dataset.itemId]?.typeOfSet||'Other sizes';if(!groups.has(type))groups.set(type,[]);groups.get(type).push(card);}\n    const searching=Boolean(byId('toolSetSearch').value.trim());\n    for(const [type,items] of [...groups].sort(([a],[b])=>a.localeCompare(b,undefined,{numeric:true}))){\n      let group=[...catalogue.querySelectorAll('.ttcf-size-group')].find(g=>g.dataset.size===type);\n      if(!group){group=document.createElement('details');group.className='ttcf-size-group';group.dataset.size=type;const summary=document.createElement('summary');const body=document.createElement('div');body.className='ttcf-size-products';group.append(summary,body);group.open=searching||openSizes.has(type);group.addEventListener('toggle',()=>{if(group.open)openSizes.add(type);else openSizes.delete(type);});catalogue.append(group);}\n      const label=type+' \u00B7 '+items.length+(items.length===1?' set':' sets');if(group.firstElementChild.textContent!==label)group.firstElementChild.textContent=label;\n      if(searching&&!group.open)group.open=true;\n      for(const item of items)if(item.parentElement!==group.lastElementChild)group.lastElementChild.append(item);\n    }\n    for(const group of catalogue.querySelectorAll('.ttcf-size-group'))if(!groups.has(group.dataset.size))group.remove();\n  }\n  function navigateDrawer(delta){const drawers=model?.drawers||[],index=drawers.findIndex(d=>String(d.index)===activeDrawer),next=drawers[index+delta];if(next){activeDrawer=String(next.index);decorateProducts();compactLayout();}}\n\n  function compactLayout(){\n    requestAnimationFrame(alignDrawerGrid);\n    for(const button of byId('toolStorageCatalog').querySelectorAll('[data-action=\"select-toolstorage\"]')){\n      button.disabled=false;button.classList.remove('opacity-40','cursor-not-allowed');button.removeAttribute('title');button.removeAttribute('aria-disabled');\n      button.setAttribute('aria-label',model?.payload?.toolstorageIds.split('\\n').includes(button.dataset.itemId)?'Remove selected tool storage':'Select tool storage');\n      const tile=button.closest('[data-toolstorage-card]');tile?.classList.remove('bg-red-200');tile?.classList.add('bg-white');\n    }\n    for(const tile of document.querySelectorAll('[data-toolstorage-card],[data-toolset-card]')){\n      const button=tile.querySelector('[data-action=\"select-toolstorage\"],[data-action=\"add-toolset\"]');if(!button)continue;\n      button.classList.add('ttcf-card-action');\n      if(button.parentElement!==tile)tile.append(button);\n      const selected=button.getAttribute('aria-label')==='Remove selected tool storage';\n      const isSet=button.dataset.action==='add-toolset',quantity=isSet?(model?.lines.find(l=>l.sku===button.dataset.itemId)?.quantity||0):0;\n      const label=isSet?(quantity?'Add more':'Add'):selected?'Remove':'Select';\n      if(!isSet){const icon=button.querySelector('svg');const mark=selected?'minus':'plus';if(icon&&icon.dataset.ttcfMark!==mark){icon.innerHTML=selected?'<path d=\"M4 9h12v2H4z\"/>':'<path d=\"M9 4h2v5h5v2h-5v5H9v-5H4V9h5z\"/>';icon.dataset.ttcfMark=mark;}}\n      let remove=tile.querySelector('.ttcf-remove-one'),count=tile.querySelector('.ttcf-card-quantity');\n      if(quantity){\n        if(!remove){remove=document.createElement('button');remove.type='button';remove.className='ttcf-card-action ttcf-remove-one';remove.innerHTML='<svg viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M4 9h12v2H4z\"/></svg><span>Remove</span>';remove.setAttribute('aria-label','Remove one '+button.dataset.itemId);remove.addEventListener('click',()=>removeOneSet(button.dataset.itemId));tile.append(remove);}\n        if(!count){count=document.createElement('div');count.className='ttcf-card-quantity';button.before(count);}const text=quantity+' selected';if(count.textContent!==text)count.textContent=text;\n      }else{remove?.remove();count?.remove();}\n      tile.classList.toggle('ttcf-has-quantity',quantity>0);\n\n      if(isSet&&button.getAttribute('aria-label')!==label)button.setAttribute('aria-label',label);\n      let caption=button.querySelector('.ttcf-card-action-label');if(!caption){caption=document.createElement('span');caption.className='ttcf-card-action-label';button.append(caption);}if(caption.textContent!==label)caption.textContent=label;\n    }\n    const card=byId('selectedToolstorageCard');\n    const empty=!card.querySelector('a[data-item-type=\"toolstorage\"]');\n    card.classList.toggle('ttcf-empty-storage',empty);\n    if(empty){const title=card.querySelector('h3');if(title&&title.textContent!=='Start by selecting a Storage Option')title.textContent='Start by selecting a Storage Option';}\n    const gridEmpty=byId('recommendationsGrid');gridEmpty.classList.toggle('ttcf-empty-drawers',!gridEmpty.querySelector('section'));\n    if(!gridEmpty.querySelector('section')){const title=gridEmpty.querySelector('h3');if(title&&title.textContent!=='Sets appear here after a Storage Option has been selected')title.textContent='Sets appear here after a Storage Option has been selected';}\n\n    byId('ttcf-change-storage')?.remove();\n    for(const image of card.querySelectorAll('a[data-item-type=\"toolstorage\"]')){\n      const unit=image.parentElement,sku=image.dataset.itemId;\n      if(!sku||unit.querySelector('.ttcf-change-unit'))continue;\n      unit.classList.add('ttcf-storage-unit');\n      const button=document.createElement('button');button.type='button';button.className='ttcf-change-unit';button.innerHTML='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M20 7v5h-5M20 12a8 8 0 1 0-2.3 5.7\"/></svg>';button.setAttribute('aria-label','Change storage '+sku);button.title='Change this storage';\n      button.addEventListener('click',()=>{replacingStorage=sku;const notice=byId('ttcf-replace-notice');notice.hidden=false;notice.querySelector('span').textContent='Choose a replacement for '+sku+'.';byId('tab-btn-1').click();byId('toolStorageSearch').value='';byId('toolStorageSearch').dispatchEvent(new Event('input',{bubbles:true}));byId('tab-btn-1').focus({preventScroll:true});byId('tab-btn-1').scrollIntoView({block:'start',behavior:'smooth'});updateDock();});\n      const actions=document.createElement('div');actions.className='ttcf-storage-actions';\n      const remove=document.createElement('button');remove.type='button';remove.className='ttcf-remove-unit';remove.title='Remove this storage';remove.setAttribute('aria-label','Remove storage '+sku);remove.innerHTML='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 6h18M9 6V3h6v3M5 6l1 15h12l1-15M10 10v7M14 10v7\"/></svg>';\n      remove.addEventListener('click',()=>{replacingStorage=null;byId('ttcf-replace-notice').hidden=true;const snapshot=window.TengConfigurator.getSnapshot(),ids=snapshot.storageIds.filter(id=>id!==sku);window.TengConfigurator.restore({...snapshot.payload,toolstorageId:ids[0]||'',toolstorageIds:ids.join('\\n'),drawers:[]});activeDrawer=null;schedule();});\n      actions.append(button,remove);unit.append(actions);\n    }\n    for(const title of card.querySelectorAll('h5')){if(!title.querySelector('.ttcf-drawer-count')&&/\\b\\d+\\s+drawers?\\b/i.test(title.textContent))title.innerHTML=escape(title.textContent.trim()).replace(/\\b(\\d+\\s+drawers?)\\b/ig,'<span class=\"ttcf-drawer-count\">$1</span>');}\n    card.classList.toggle('ttcf-multiple-storage',model?.storageCount>1);\n    const sections=[...byId('recommendationsGrid').querySelectorAll(':scope > section')];\n    if(!sections.some(section=>section.querySelector('[data-dropzone]')?.dataset.drawerIndex===activeDrawer))activeDrawer=sections[0]?.querySelector('[data-dropzone]')?.dataset.drawerIndex??null;\n    for(const section of sections){\n      const details=section.querySelector('details'),zone=section.querySelector('[data-dropzone]');if(!details||!zone)continue;\n      const index=zone.dataset.drawerIndex;\n      const meta=model?.drawers.find(d=>String(d.index)===index);\n      const placed=model?.payload.drawers.find(d=>String(d.drawerIndex)===index);\n      const complete=Boolean(meta&&placed&&drawerIsFull(meta,placed,Object.values(products)));\n      zone.classList.toggle('ttcf-drawer-complete',complete);\n      let completion=zone.parentElement.querySelector('.ttcf-complete-status');\n      if(complete&&!completion){completion=document.createElement('span');completion.className='ttcf-complete-status';completion.setAttribute('role','status');completion.innerHTML='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m7 12 3 3 7-7\"/></svg>Drawer complete';completion.title='No additional tool set fits the remaining space.';zone.after(completion);}\n      if(!complete)completion?.remove();\n      section.classList.toggle('ttcf-storage-group-start',Boolean(meta&&meta.localIndex===1&&section!==sections[0]));\n      const title=details.querySelector('summary .font-semibold')||details.querySelector('summary span');\n      if(title&&meta){const label=model.storageCount>1?meta.storageId+' \u00B7 Drawer '+meta.localIndex:'Drawer '+meta.localIndex;if(title.textContent!==label)title.textContent=label;}\n      if(!details.dataset.ttcfAccordion){\n        details.dataset.ttcfAccordion=index;\n        const list=details.querySelector(':scope > div');const visual=zone.parentElement;\n        const body=document.createElement('div');body.className='ttcf-drawer-content';body.append(list,visual);details.append(body);\n        details.querySelector('summary').addEventListener('click',()=>setTimeout(()=>{activeDrawer=details.open?index:null;compactLayout();},0));\n      }\n      let clear=details.querySelector('.ttcf-clear-drawer');\n      if(!clear){\n        const actions=document.createElement('div');actions.className='ttcf-drawer-actions';\n        clear=document.createElement('button');clear.type='button';clear.className='ttcf-clear-drawer';\n        clear.innerHTML='<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\"><path d=\"M4 7h16M9 7V4h6v3M6 7l1 13h10l1-13M10 10v7M14 10v7\"/></svg>Clear drawer';\n        clear.setAttribute('aria-label','Clear drawer '+index);clear.addEventListener('click',()=>clearDrawer(index));actions.append(clear);details.querySelector('.ttcf-drawer-content').append(actions);\n      }\n      if(!details.querySelector('.ttcf-drawer-footer')){\n        const body=details.querySelector('.ttcf-drawer-content'),actions=details.querySelector('.ttcf-drawer-actions'),weight=body.querySelector('[title][aria-label]');\n        const footer=document.createElement('div');footer.className='ttcf-drawer-footer';\n        if(weight){\n          weight.classList.add('ttcf-drawer-weight');\n          const icon=weight.querySelector('svg');icon.innerHTML='<path d=\"M9 7a3 3 0 1 1 6 0M6 8h12l3 13H3Z\"/><text x=\"12\" y=\"17\" text-anchor=\"middle\">KG</text>';icon.setAttribute('aria-hidden','true');\n          const reading=document.createElement('span');reading.className='ttcf-weight-reading';reading.textContent=weight.getAttribute('aria-label');weight.removeAttribute('title');weight.append(reading);footer.append(weight);\n        }\n        const position=model?.drawers.findIndex(d=>String(d.index)===index)??-1;\n        for(const [delta,label,path] of [[-1,'Previous drawer','m14 6-6 6 6 6'],[1,'Next drawer','m10 6 6 6-6 6']]){\n          const button=document.createElement('button');button.type='button';button.className='ttcf-drawer-step';button.innerHTML='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"'+path+'\"/></svg><span>'+label+'</span>';button.disabled=!model?.drawers[position+delta];\n          button.addEventListener('click',()=>{activeDrawer=index;navigateDrawer(delta);const target=byId('recommendationsGrid').querySelector('[data-ttcf-accordion=\"'+activeDrawer+'\"]');target?.querySelector('summary')?.focus({preventScroll:true});target?.scrollIntoView({block:'nearest',behavior:'smooth'});});\n          if(delta<0)actions.prepend(button);else actions.append(button);\n        }\n        actions.style.width=zone.style.width;footer.append(actions);body.append(footer);\n      }\n      decorateDrawerMoves(section,index,placed);\n      clear.disabled=!(model?.payload.drawers.find(d=>String(d.drawerIndex)===String(index))?.sets.length);\n      if(details.open!==(activeDrawer===index))details.open=activeDrawer===index;\n    }\n    mobileLayout();\n  }\n  function installFilterClose(){\n    for(const id of ['toolStorageTypeFilters','toolSetTypeFilters']){\n      const details=byId(id)?.closest('details'),panel=details?.querySelector(':scope > div');if(!panel||panel.querySelector('.ttcf-filter-close'))continue;\n      const button=document.createElement('button');button.type='button';button.className='ttcf-filter-close';button.setAttribute('aria-label','Close filters');\n      button.innerHTML='<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\"><path d=\"m6 6 12 12M6 18 18 6\"/></svg>';\n      button.addEventListener('click',()=>{details.open=false;details.querySelector('summary').focus({preventScroll:true});});\n      details.querySelector('summary').setAttribute('aria-label','Filters');panel.classList.add('ttcf-filter-with-close');panel.prepend(button);\n    }\n  }\n  function installSizeGuide(){\n    const filters=byId('toolSetTypeFilters');if(!filters||byId('ttcf-size-guide'))return;\n    const sizes=[['FOAM1 / TT1',142,264],['FOAM2 / TT2',284,264],['FOAM3 / TT3',426,264],['TT4',568,264],['FOAMX2 / TTX2',284,115],['FOAMX4 / TTX4',568,115],['FOAM4X4',568,379],['FOAM6X6',852,379]];\n    const guide=document.createElement('section');guide.id='ttcf-size-guide';guide.setAttribute('aria-label','Tool set size guide');\n    guide.innerHTML='<h4>Tool set sizes at a glance</h4><p>Outlined modules show how each size sits inside a drawer. FOAM6X6 requires a wider drawer.</p><div class=\"ttcf-size-diagrams\">'+sizes.map(([name,w,d])=>{\n      const scale=.4,drawerWidth=Math.max(568,w)*scale,x=12,y=12,mw=w*scale,md=d*scale;\n      const names=name.split(' / '),cx=x+mw/2,cy=y+md/2;\n      return `<figure><svg viewBox=\"0 0 ${drawerWidth+24} 190\" role=\"img\" aria-label=\"${name}: ${w} by ${d} millimetres\"><rect class=\"ttcf-drawer-outline\" x=\"8\" y=\"8\" width=\"${drawerWidth+8}\" height=\"160\" rx=\"3\"/><path class=\"ttcf-drawer-outline\" d=\"M${x+drawerWidth*.3} 176h${drawerWidth*.4}\"/><rect class=\"ttcf-module-outline\" x=\"${x}\" y=\"${y}\" width=\"${mw}\" height=\"${md}\"/>${names.map((n,i)=>`<text x=\"${cx}\" y=\"${cy+(i-(names.length-1)/2)*15}\" dominant-baseline=\"middle\" text-anchor=\"middle\">${n}</text>`).join('')}</svg><figcaption>${name}<span>${w} \u00D7 ${d} mm</span></figcaption></figure>`;\n    }).join('')+'</div>';\n    filters.parentElement.after(guide);filters.parentElement.parentElement.classList.add('ttcf-filter-popover');\n  }\n\n  function wireDialogFocus() {\n    const dialogs = [...document.querySelectorAll('#ttcf-page [role=\"dialog\"]:not(dialog)')];\n    const openers = new Map();\n    let lastExternalFocus = document.activeElement;\n    document.addEventListener('focusin', event => {\n      if (!event.target.closest('[role=\"dialog\"]') && event.target !== document.body) lastExternalFocus = event.target;\n    });\n    document.addEventListener('click', event => {\n      const trigger = event.target.closest('button,a,input,summary');\n      if (trigger && !trigger.closest('[role=\"dialog\"]')) lastExternalFocus = trigger;\n    }, true);\n    const focusable = dialog => [...dialog.querySelectorAll('button:not(:disabled), a[href], input:not(:disabled), textarea, [tabindex=\"0\"]')].filter(el => el.getClientRects().length);\n    for (const dialog of dialogs) {\n      new MutationObserver(() => {\n        if (!dialog.classList.contains('hidden') && !openers.has(dialog)) {\n          openers.set(dialog, lastExternalFocus);\n          focusable(dialog)[0]?.focus();\n        } else if (dialog.classList.contains('hidden') && openers.has(dialog)) {\n          const opener = openers.get(dialog); openers.delete(dialog);\n          if (opener?.isConnected) (opener.closest('#fabActions') ? document.querySelector('[data-fab-toggle]') : opener)?.focus();\n        }\n      }).observe(dialog, {attributes:true, attributeFilter:['class']});\n    }\n    document.addEventListener('keydown', event => {\n      const dialog = dialogs.find(el => !el.classList.contains('hidden'));\n      if (!dialog || event.key !== 'Tab') return;\n      const items = focusable(dialog);\n      const first = items[0], last = items[items.length-1];\n      if (event.shiftKey && (document.activeElement === first || !dialog.contains(document.activeElement))) { event.preventDefault(); last?.focus(); }\n      else if (!event.shiftKey && (document.activeElement === last || !dialog.contains(document.activeElement))) { event.preventDefault(); first?.focus(); }\n    });\n  }\n\n  async function init(){\n    if(initialized||!window.TengConfigurator)return;initialized=true;\n    const warning=document.createElement('p');warning.id='ttcf-layout-warning';warning.hidden=true;warning.setAttribute('role','alert');byId('toolstorageForm').before(warning);\n    const tabBar=byId('toolstorageForm').querySelector('[role=tablist]');tabBar.setAttribute('aria-label','Configure storage and tool sets');new ResizeObserver(()=>{byId('ttcf-page').style.setProperty('--ttcf-tab-height',tabBar.getBoundingClientRect().height+'px');requestAnimationFrame(alignDrawerGrid);}).observe(tabBar);\n    new ResizeObserver(()=>requestAnimationFrame(alignDrawerGrid)).observe(byId('toolstorageForm'));\n    window.addEventListener('resize',()=>requestAnimationFrame(compactLayout));\n    tabBar.addEventListener('click',()=>requestAnimationFrame(alignDrawerGrid));\n    const guidance=document.createElement('p');guidance.id='ttcf-selection-guidance';guidance.setAttribute('role','status');\n    const reviewClose=byId('ttcf-review-panel').querySelector('.ttcf-review-close-text');guidance.style.flexBasis='100%';reviewClose.before(guidance);\n    byId('toolSetSearch').placeholder='Search tool sets';byId('toolStorageSearch').placeholder='Search storage';\n    const saveHint=byId('downloadConfigModal')?.querySelector('p');if(saveHint)saveHint.textContent='Save this configuration file to continue later. Choose Load configuration in the configurator menu to reopen it. Use Download as PDF for a readable copy.';\n    if(byId('downloadConfigLink'))byId('downloadConfigLink').textContent='Download configuration file';\n    if(byId('downloadConfigCopy'))byId('downloadConfigCopy').textContent='Copy configuration';\n    byId('ttcf-preview-notice').hidden=!config.preview;\n    try{const [mapping,sets,storages]=await Promise.all([json(config.catalogUrl),json(window.APP_CONFIG.data.toolSets),json(window.APP_CONFIG.data.toolStorages)]);catalog=mapping.items||{};for(const p of [...sets,...storages])products[p.itemId]={...p,...catalog[p.itemId]};}\n    catch(e){byId('ttcf-review-panel').hidden=false;byId('ttcf-status').hidden=false;status('The product summary could not be loaded. Please reload before requesting a quotation.');return;}\n    installSizeGuide();installFilterClose();installMobileControls();installDrawerMoves();\n    byId('toolStorageCatalog').addEventListener('click',event=>{\n      const button=event.target.closest('[data-action=\"select-toolstorage\"]');\n      if(!button)return;\n      const sku=button.dataset.itemId;if(!products[sku]?.storagePerDrawerHeight)return;\n      event.preventDefault();event.stopImmediatePropagation();\n      const snapshot=window.TengConfigurator.getSnapshot();\n      const removing=snapshot.storageIds.includes(sku);\n      const ids=replacingStorage?[...new Set(snapshot.storageIds.map(id=>id===replacingStorage?sku:id))]:removing?snapshot.storageIds.filter(id=>id!==sku):[...snapshot.storageIds,sku];\n      const wasReplacing=Boolean(replacingStorage);replacingStorage=null;byId('ttcf-replace-notice').hidden=true;\n      window.TengConfigurator.restore({...snapshot.payload,toolstorageId:ids[0]||'',toolstorageIds:ids.join('\\n'),drawers:[]});\n      activeDrawer=null;schedule();\n      if(removing&&!wasReplacing)return;\n      byId('tab-btn-2').click();byId('tab-btn-2').focus({preventScroll:true});\n    },true);\n    byId('ttcf-steps').querySelectorAll('li').forEach((li,i)=>{const number=li.querySelector('strong');const full=document.createElement('span');full.className='ttcf-step-full';full.textContent=li.textContent.replace(number.textContent,'').trim();const short=document.createElement('span');short.className='ttcf-step-short';short.textContent=['Storage','Tool sets','Drag & Drop','Request quote'][i];li.replaceChildren(number,full,short);});\n    byId('ttcf-steps-close').addEventListener('click',()=>{byId('ttcf-steps').hidden=true;byId('ttcf-review').focus();try{sessionStorage.setItem('ttcf-steps-dismissed','1');}catch(_){}});\n    try{byId('ttcf-steps').hidden=sessionStorage.getItem('ttcf-steps-dismissed')==='1';}catch(_){}\n    for(const button of document.querySelectorAll('[data-close-review]'))button.addEventListener('click',()=>{byId('ttcf-review-panel').hidden=true;byId('ttcf-review').setAttribute('aria-expanded','false');byId('ttcf-review').focus({preventScroll:true});byId('ttcf-review').scrollIntoView({block:'nearest'});});\n    byId('ttcf-review').addEventListener('click',()=>{const panel=byId('ttcf-review-panel');panel.hidden=!panel.hidden;byId('ttcf-review').setAttribute('aria-expanded',String(!panel.hidden));});\n    byId('ttcf-request').addEventListener('click',()=>{byId('ttcf-quote-panel').hidden=false;byId('ttcf-name').focus();byId('ttcf-quote-panel').scrollIntoView({behavior:'smooth',block:'center'});});\n    byId('ttcf-cancel').addEventListener('click',()=>{byId('ttcf-quote-panel').hidden=true;byId('ttcf-request').focus();});\n    byId('ttcf-pdf').addEventListener('click',downloadPdf);\n    installBottomActions();\n    // Intercept the original print action so both PDF controls produce the same document.\n    byId('printToPdf')?.addEventListener('click',event=>{event.preventDefault();event.stopImmediatePropagation();downloadPdf();},true);\n    if(byId('printToPdf')){byId('printToPdf').setAttribute('aria-label','Download configuration PDF');byId('printToPdf').querySelector('.fab-tooltip').textContent='Download configuration PDF';}\n    byId('ttcf-quote-form').addEventListener('submit',event=>{\n      refresh();if(config.preview){event.preventDefault();byId('ttcf-form-status').textContent='Preview only. No enquiry has been sent.';return;}\n      if(byId('ttcf-submit').disabled||!model?.lines.length){event.preventDefault();byId('ttcf-form-status').textContent='Please complete a valid drawer layout first.';return;}\n      // Preserve the configuration, never customer contact details, across Shopify's CAPTCHA/redirect.\n      try{sessionStorage.setItem('ttcf-last-quote',JSON.stringify({model,reference}));}catch(_){}\n      byId('ttcf-form-status').textContent='Submitting your request\u2026';\n    });\n    new MutationObserver(schedule).observe(byId('toolkit-configurator-app'),{childList:true,subtree:true});byId('toolkit-configurator-app').addEventListener('input',schedule);\n    let previous=null;\n    const returning=byId('ttcf-quote-success')||byId('ttcf-quote-errors')||new URLSearchParams(location.search).has('contact_posted');\n    try{previous=JSON.parse(sessionStorage.getItem(returning?'ttcf-last-quote':'ttcf-working-draft')||'null');}catch(_){}\n    let restored=false;\n    if(previous?.model?.payload){try{window.TengConfigurator.restore(previous.model.payload);restored=true;}catch(_){try{sessionStorage.removeItem('ttcf-working-draft');}catch(_){}}}\n    wireDialogFocus();decorateProducts();refresh();compactLayout();\n    if(restored&&previous?.model){reference=previous.reference;created=previous.model.date;model=window.TTCFQuoteModel.make(window.TengConfigurator.getSnapshot(),products,reference,created);byId('ttcf-quote-reference').value=reference;byId('ttcf-quote-body').value=window.TTCFQuoteModel.message(model);byId('ttcf-form-summary').textContent=`Configuration ${reference}: ${model.storageCount} storage selection(s) and ${model.setCount} tool set(s).`;saveDraft();if(!returning){byId('tab-btn-2').click();guidance.textContent='Your configuration has been restored in this browser session. '+guidance.textContent;}}\n    if(byId('ttcf-quote-success')){byId('ttcf-quote-title').textContent='Quotation successfully sent';const intro=byId('ttcf-quote-title').nextElementSibling;if(intro?.tagName==='P')intro.hidden=true;byId('ttcf-quote-panel').hidden=false;const form=byId('ttcf-quote-form');for(const el of form.children)if(el.id!=='ttcf-quote-success')el.hidden=true;try{const previous=JSON.parse(sessionStorage.getItem('ttcf-last-quote')||'null');if(previous?.model){model=previous.model;byId('ttcf-pdf').disabled=false;byId('ttcf-quote-success').textContent+=` Reference: ${previous.reference}. Download your PDF to keep a copy.`;}}catch(_){}const success=byId('ttcf-quote-success');\n      const actions=document.createElement('span');actions.className='ttcf-success-actions';\n      const pdf=document.createElement('button');pdf.type='button';pdf.innerHTML='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 3v12m-5-5 5 5 5-5M4 16v5h16v-5\"/></svg><span>Download PDF</span>';pdf.disabled=!model?.lines.length;\n      const call=document.createElement('a');call.href='tel:+27212053641';call.innerHTML='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m7 3 3 5-3 3c2 3 3 4 6 6l3-3 5 3-1 4C10 22 2 14 3 4Z\"/></svg><span>Give us a call</span>';\n      const feedback=document.createElement('span');feedback.className='ttcf-success-feedback';feedback.setAttribute('role','status');feedback.hidden=true;\n      pdf.addEventListener('click',async()=>{pdf.disabled=true;feedback.hidden=false;feedback.textContent='Preparing your PDF\u2026';await downloadPdf();feedback.textContent=byId('ttcf-status').textContent;pdf.disabled=!model?.lines.length;});\n      actions.append(pdf,call);success.append(actions,feedback);success.focus();}\n    if(byId('ttcf-quote-errors')){byId('ttcf-quote-panel').hidden=false;byId('ttcf-form-status').textContent='Your request has not been sent. Please review the errors above.';}\n  }\n  window.addEventListener('ttcf:ready',init,{once:true});init();\n})();\n"],
  "mappings": "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",
  "names": ["catalog", "d", "previous"]
}
