{
  "version": 3,
  "sources": ["/cdn/shop/t/16/assets/goat-sales-home.js?goat_v=20260727_1"],
  "sourcesContent": ["(() => {\n  document.body.classList.add('goat-luxury-active');\n\n  const slider = document.querySelector('[data-goat-slider]');\n  if (slider) {\n    const slides = [...slider.querySelectorAll('[data-goat-slide]')];\n    const dots = [...slider.querySelectorAll('[data-goat-dot]')];\n    const previous = slider.querySelector('[data-goat-prev]');\n    const next = slider.querySelector('[data-goat-next]');\n    const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    let active = 0;\n    let autoplay;\n\n    const showSlide = (index) => {\n      active = (index + slides.length) % slides.length;\n      slides.forEach((slide, slideIndex) => {\n        const selected = slideIndex === active;\n        slide.classList.toggle('is-active', selected);\n        slide.setAttribute('aria-hidden', selected ? 'false' : 'true');\n        slide.querySelectorAll('a, button').forEach((element) => { element.tabIndex = selected ? 0 : -1; });\n        const video = slide.querySelector('video');\n        if (video) {\n          if (selected && !reducedMotion) video.play().catch(() => {});\n          else video.pause();\n        }\n      });\n      dots.forEach((dot, dotIndex) => {\n        const selected = dotIndex === active;\n        dot.classList.toggle('is-active', selected);\n        dot.setAttribute('aria-selected', selected ? 'true' : 'false');\n      });\n    };\n\n    const startAutoplay = () => {\n      window.clearInterval(autoplay);\n      if (!reducedMotion) autoplay = window.setInterval(() => showSlide(active + 1), 4500);\n    };\n\n    previous?.addEventListener('click', () => { showSlide(active - 1); startAutoplay(); });\n    next?.addEventListener('click', () => { showSlide(active + 1); startAutoplay(); });\n    dots.forEach((dot) => dot.addEventListener('click', () => { showSlide(Number(dot.dataset.goatDot)); startAutoplay(); }));\n    slider.addEventListener('mouseenter', () => window.clearInterval(autoplay));\n    slider.addEventListener('mouseleave', startAutoplay);\n    slider.addEventListener('focusin', () => window.clearInterval(autoplay));\n    slider.addEventListener('focusout', startAutoplay);\n    showSlide(0);\n    startAutoplay();\n  }\n\n  const quiz = document.querySelector('[data-goat-quiz]');\n  if (quiz) {\n    const result = quiz.querySelector('[data-goat-result]');\n    const catalog = quiz.querySelector('[data-goat-catalog]');\n    const candidates = [...quiz.querySelectorAll('[data-goat-candidate]')];\n    const styleTerms = {\n      clean: ['minimal', 'field', 'shirt', 'coat', 'blazer', 'collarless', 'trench', 'signature'],\n      bomber: ['bomber', 'aviator', 'flight', 'varsity', 'shearling'],\n      moto: ['moto', 'biker', 'racer', 'riding', 'asymmetric']\n    };\n    const useTerms = {\n      everyday: ['bomber', 'field', 'shirt', 'casual', 'minimal', 'signature'],\n      riding: ['moto', 'biker', 'racer', 'riding', 'asymmetric'],\n      occasion: ['coat', 'blazer', 'trench', 'suede', 'shirt', 'minimal', 'signature']\n    };\n    const includesAny = (copy, terms) => terms.some((term) => copy.includes(term));\n\n    quiz.addEventListener('submit', (event) => {\n      event.preventDefault();\n      const data = new FormData(quiz);\n      const who = data.get('for');\n      const use = data.get('use');\n      const style = data.get('style');\n      const budget = data.get('budget');\n\n      candidates.forEach((candidate) => { candidate.hidden = true; });\n      let ranked = candidates\n        .filter((candidate) => who === 'gift' || candidate.dataset.wearer === who)\n        .filter((candidate) => {\n          const price = Number(candidate.dataset.price || 0);\n          if (budget === 'under20') return price <= 2000000;\n          if (budget === '20to30') return price > 2000000 && price <= 3000000;\n          return true;\n        })\n        .map((candidate, order) => {\n          const copy = candidate.dataset.search || '';\n          let score = 0;\n          if (includesAny(copy, styleTerms[style] || [])) score += 5;\n          if (includesAny(copy, useTerms[use] || [])) score += 3;\n          if (copy.includes('signature')) score += 1;\n          return {candidate, score, order, price: Number(candidate.dataset.price || 0)};\n        })\n        .sort((a, b) => b.score - a.score || a.price - b.price || a.order - b.order);\n\n      if (!ranked.length) {\n        if (catalog) catalog.hidden = true;\n        result.innerHTML = '<strong>No exact jacket matches all four choices yet.</strong><span>We will not ignore your budget or show an irrelevant product. Use the private design studio below and we will build the closest fit.</span><a class=\"goat-text-link\" href=\"#goat-bespoke\">Enter the design studio \u2192</a>';\n        result.hidden = false;\n        result.scrollIntoView({behavior: 'smooth', block: 'nearest'});\n        return;\n      }\n\n      ranked.slice(0, 3).forEach(({candidate}) => { candidate.hidden = false; });\n      if (catalog) catalog.hidden = false;\n      const wearerLabel = who === 'women' ? \"women's\" : who === 'gift' ? 'gift-worthy' : \"men's\";\n      result.innerHTML = `<strong>Your ${wearerLabel} private edit</strong><span>Ranked from the correct jacket collection by occasion, silhouette and investment. No bags or childrenswear are included.</span>`;\n      result.hidden = false;\n      result.scrollIntoView({behavior: 'smooth', block: 'nearest'});\n    });\n  }\n\n  const studio = document.querySelector('[data-goat-bespoke]');\n  if (studio) {\n    const form = studio.querySelector('form');\n    const steps = [...studio.querySelectorAll('[data-goat-step]')];\n    const nav = [...studio.querySelectorAll('[data-goat-step-nav]')];\n    const summaryField = studio.querySelector('[data-goat-summary]');\n    const priceOutput = studio.querySelector('[data-goat-price]');\n    const finalPriceOutput = studio.querySelector('[data-goat-final-price]');\n    const materialInputs = [...studio.querySelectorAll('[data-material]')];\n    const sizeSelect = studio.querySelector('[data-goat-size]');\n    const complexitySelect = studio.querySelector('[data-goat-complexity]');\n    const silhouetteInputs = [...studio.querySelectorAll('[data-goat-silhouette]')];\n    const selectedSilhouette = () => silhouetteInputs.find(input => input.checked)?.value || '';\n    const closureSelect = studio.querySelector('[data-goat-closure]');\n    const colourTreatment = studio.querySelector('[data-goat-colour-treatment]');\n    const secondColour = studio.querySelector('[data-goat-second-colour]');\n    const ruleNote = studio.querySelector('[data-goat-rule-note]');\n    const specCard = studio.querySelector('[data-goat-spec-card]');\n    const readinessPanel = studio.querySelector('[data-goat-readiness]');\n    const readinessTitle = studio.querySelector('[data-goat-readiness-title]');\n    const readinessList = studio.querySelector('[data-goat-readiness-list]');\n    const draftStatus = studio.querySelector('[data-goat-draft-status]');\n    const fitReuse = studio.querySelector('[data-goat-fit-reuse]');\n    const fitReuseCopy = studio.querySelector('[data-goat-fit-reuse-copy]');\n    const useFitButton = studio.querySelector('[data-goat-use-fit]');\n    const designDraftKey = 'goat-design-studio-draft-v3-maker';\n    let currentStep = 0;\n    let jacketDataUrl = '';\n    let jacketRemoteUrl = '';\n    let personDataUrl = '';\n    let currentEstimate = '';\n    let reusableFitProfile = null;\n    let usingReusableFitProfile = false;\n    let draftTimer = null;\n    let makerRefresh = () => {};\n    let makerState = null;\n\n    const showStep = (index) => {\n      currentStep = Math.max(0, Math.min(index, steps.length - 1));\n      steps.forEach((step, stepIndex) => {\n        const selected = stepIndex === currentStep;\n        step.hidden = !selected;\n        step.classList.toggle('is-active', selected);\n      });\n      nav.forEach((button, buttonIndex) => {\n        button.classList.toggle('is-active', buttonIndex === currentStep);\n        button.classList.toggle('is-complete', buttonIndex < currentStep);\n        button.setAttribute('aria-current', buttonIndex === currentStep ? 'step' : 'false');\n      });\n    };\n\n    const draftFields = () => [...form.querySelectorAll('input[name^=\"contact[\"], select[name^=\"contact[\"], textarea[name^=\"contact[\"]')]\n      .filter(field => !['file','hidden'].includes(field.type) && !['contact[name]','contact[phone]','contact[email]'].includes(field.name));\n    const saveDesignDraft = () => {\n      try {\n        const fields = {};\n        draftFields().forEach(field => {\n          if ((field.type === 'radio' || field.type === 'checkbox') && !field.checked) return;\n          fields[field.name] = field.value;\n        });\n        window.localStorage.setItem(designDraftKey, JSON.stringify({version:3,savedAt:new Date().toISOString(),fields}));\n        if (draftStatus) draftStatus.textContent = 'Draft saved privately on this device. Images and contact details are not stored in this draft.';\n      } catch (error) {\n        if (draftStatus) draftStatus.textContent = 'Draft saving is unavailable in this browser; you can still complete and submit the brief.';\n      }\n    };\n    const scheduleDraftSave = () => {\n      window.clearTimeout(draftTimer);\n      draftTimer = window.setTimeout(saveDesignDraft, 280);\n    };\n    const restoreDesignDraft = () => {\n      try {\n        const draft = JSON.parse(window.localStorage.getItem(designDraftKey) || 'null');\n        if (!draft?.fields || draft.version !== 3) return false;\n        Object.entries(draft.fields).forEach(([name,value]) => {\n          const fields = [...form.querySelectorAll(`[name=\"${name}\"]`)];\n          fields.forEach(field => {\n            if (field.type === 'radio' || field.type === 'checkbox') field.checked = field.value === value;\n            else field.value = value;\n          });\n        });\n        if (draftStatus) draftStatus.textContent = 'Your private Design Studio draft has been restored on this device.';\n        return true;\n      } catch (error) {\n        return false;\n      }\n    };\n\n    const validateStep = () => {\n      const current = steps[currentStep];\n      const fields = [...current.querySelectorAll('input[required], select[required], textarea[required]')];\n      for (const field of fields) {\n        if (!field.checkValidity()) {\n          field.reportValidity();\n          return false;\n        }\n      }\n      if (currentStep === 0) {\n        const startMode = form?.querySelector('[data-goat-start-mode]')?.value || 'pattern';\n        const reference = form?.querySelector('input[name=\"contact[reference]\"]');\n        const aiPrompt = form?.querySelector('[data-goat-ai-prompt]');\n        if (startMode === 'reference' && !reference?.value && !jacketDataUrl) {\n          reference?.setCustomValidity('Add a public image link or upload the jacket reference.');\n          reference?.reportValidity();\n          reference?.addEventListener('input', () => reference.setCustomValidity(''), {once: true});\n          return false;\n        }\n        if (startMode === 'ai' && !aiPrompt?.value.trim()) {\n          aiPrompt?.setCustomValidity('Describe the jacket you want the studio to create.');\n          aiPrompt?.reportValidity();\n          aiPrompt?.addEventListener('input', () => aiPrompt.setCustomValidity(''), {once: true});\n          return false;\n        }\n        if (!selectedSilhouette()) return false;\n      }\n      return true;\n    };\n\n    studio.querySelectorAll('[data-goat-next]').forEach((button) => button.addEventListener('click', () => {\n      if (validateStep()) {\n        showStep(currentStep + 1);\n        if (currentStep === 1) { makerRefresh(); refreshDesignState(); }\n        if (currentStep === 2) renderSpec();\n      }\n    }));\n    studio.querySelectorAll('[data-goat-back]').forEach((button) => button.addEventListener('click', () => showStep(currentStep - 1)));\n    nav.forEach((button, index) => button.addEventListener('click', () => { if (index < currentStep) showStep(index); }));\n\n    const startModeField = studio.querySelector('[data-goat-start-mode]');\n    const startChoices = [...studio.querySelectorAll('[data-goat-start-choice]')];\n    const startPanels = [...studio.querySelectorAll('[data-goat-start-panel]')];\n    const setStartMode = mode => {\n      if (startModeField) startModeField.value = mode;\n      startChoices.forEach(button => button.classList.toggle('is-active', button.dataset.goatStartChoice === mode));\n      startPanels.forEach(panel => {\n        const selected = panel.dataset.goatStartPanel === mode;\n        panel.hidden = !selected;\n        panel.classList.toggle('is-active', selected);\n      });\n      scheduleDraftSave();\n    };\n    startChoices.forEach(button => button.addEventListener('click', () => setStartMode(button.dataset.goatStartChoice)));\n\n    const aiPrompt = studio.querySelector('[data-goat-ai-prompt]');\n    const aiStatus = studio.querySelector('[data-goat-ai-status]');\n    const colourNameSelect = studio.querySelector('[data-goat-colour-name]');\n    const interpretAiBrief = () => {\n      const brief = aiPrompt?.value.trim().toLowerCase() || '';\n      if (!brief) return;\n      const patterns = {biker:'biker','caf\u00E9':'cafe','cafe':'cafe',bomber:'bomber',field:'field',trucker:'trucker',blazer:'blazer','long coat':'longline',longline:'longline',varsity:'varsity',puffer:'puffer'};\n      const matchedPattern = Object.entries(patterns).find(([word]) => brief.includes(word))?.[1] || selectedSilhouette() || 'biker';\n      const patternInput = silhouetteInputs.find(input => input.value === matchedPattern);\n      if (patternInput) patternInput.checked = true;\n      const colours = {black:'#151515',brown:'#4b2c20',tan:'#b27645',red:'#8d1d1d',yellow:'#d6ad20',green:'#1e5a3b',orange:'#d45700',blue:'#173c68',oxblood:'#6b1f35'};\n      const mentionedColours = Object.entries(colours).map(([word,value]) => ({word,value,index:brief.indexOf(word)})).filter(item => item.index >= 0).sort((a,b) => a.index - b.index);\n      const colour = mentionedColours[0] ? [mentionedColours[0].word, mentionedColours[0].value] : null;\n      if (colourNameSelect && colour) {\n        colourNameSelect.value = colour[1];\n        Object.values(makerState?.panels || {}).forEach(panel => { panel.colour = colour[1]; });\n        if (mentionedColours[1] && /collar|lapel|flap/.test(brief.slice(Math.max(0, mentionedColours[1].index - 18), mentionedColours[1].index + 32))) makerState.panels.collar.colour = mentionedColours[1].value;\n      }\n      const requestedMaterial = brief.includes('buffalo') ? 'buffalo' : brief.includes('suede') ? 'suede' : brief.includes('goat leather') ? 'goat' : brief.includes('sheep') ? 'sheep' : '';\n      if (requestedMaterial) {\n        const materialInput = materialInputs.find(input => input.dataset.material === requestedMaterial);\n        if (materialInput) materialInput.checked = true;\n        Object.values(makerState?.panels || {}).forEach(panel => { panel.material = requestedMaterial; });\n      }\n      const setValue = (selector, value) => { const field = studio.querySelector(selector); if (field) field.value = value; };\n      if (brief.includes('quilt')) setValue('[data-goat-pattern]', 'quilted');\n      else if (brief.includes('racing')) setValue('[data-goat-pattern]', 'racing');\n      else if (brief.includes('geometric') || brief.includes('colour block') || brief.includes('color block')) setValue('[data-goat-pattern]', 'geometric');\n      if (brief.includes('wide lapel')) setValue('[data-goat-collar]', 'wide');\n      else if (brief.includes('lapel')) setValue('[data-goat-collar]', 'notch');\n      else if (brief.includes('shirt collar')) setValue('[data-goat-collar]', 'shirt');\n      else if (brief.includes('hood')) setValue('[data-goat-collar]', 'hood');\n      if (brief.includes('brass')) setValue('[data-goat-closure]', brief.includes('button') ? 'snap_brass' : 'zip_brass');\n      else if (brief.includes('wrapped button')) setValue('[data-goat-closure]', 'wrapped_buttons');\n      else if (brief.includes('button')) setValue('[data-goat-closure]', 'snap_silver');\n      if (brief.includes('belt')) setValue('[data-goat-belt]', 'waist');\n      const numberWords = {one:1,two:2,three:3,four:4,five:5,six:6};\n      const pocketCount = Number(brief.match(/\\b([1-6])\\s+(?:\\w+\\s+){0,2}pockets?\\b/)?.[1] || Object.entries(numberWords).find(([word]) => brief.includes(`${word} `) && brief.includes('pocket'))?.[1] || 0);\n      if (pocketCount) {\n        const requestedPocketType = brief.includes('cargo') ? 'cargo' : brief.includes('flap') ? 'flap' : brief.includes('patch') ? 'patch' : brief.includes('welt') ? 'welt' : brief.includes('zip') ? 'zipped' : 'welt';\n        makerState.pockets = Array.from({length:pocketCount}, (_,index) => ({id:index + 1,side:'front',type:requestedPocketType,x:index % 2 ? 62 : 24,y:index < 2 ? 42 : 64,size:92}));\n        makerState.nextPocket = pocketCount + 1;\n      }\n      const tabs = studio.querySelector('[data-goat-shoulder-tabs]');\n      if (tabs && (brief.includes('epaulette') || brief.includes('shoulder flap') || brief.includes('shoulder tab'))) tabs.checked = true;\n      if (aiStatus) aiStatus.textContent = 'Editable draft created without an image-generation charge. Open the workbench to refine every panel, pocket and hardware choice.';\n      setStartMode('ai');\n      makerRefresh?.();\n      scheduleDraftSave();\n    };\n    studio.querySelector('[data-goat-ai-interpret]')?.addEventListener('click', interpretAiBrief);\n\n    const readUpload = (input, onLoaded, label) => {\n      const file = input?.files?.[0];\n      if (!file) return;\n      if (file.size > 8 * 1024 * 1024) {\n        input.value = '';\n        if (label) label.textContent = 'Please choose an image smaller than 8 MB';\n        return;\n      }\n      const reader = new FileReader();\n      reader.addEventListener('load', () => onLoaded(String(reader.result), file));\n      reader.readAsDataURL(file);\n    };\n\n    const jacketUpload = studio.querySelector('[data-goat-upload]');\n    const jacketLabel = studio.querySelector('[data-goat-upload-label]');\n    const jacketPreview = studio.querySelector('[data-goat-upload-preview]');\n    const jacketPreviewImage = jacketPreview?.querySelector('img');\n    const removeJacket = studio.querySelector('[data-goat-upload-remove]');\n    const tryon = studio.querySelector('[data-goat-tryon]');\n    const tryonJacket = studio.querySelector('[data-goat-jacket-preview]');\n    const tryonPerson = studio.querySelector('[data-goat-person-preview]');\n    const jacketFigure = studio.querySelector('[data-goat-jacket-figure]');\n    const personFigure = studio.querySelector('[data-goat-person-figure]');\n    const jacketLinkCard = studio.querySelector('[data-goat-jacket-link-card]');\n    const instagramEmbed = studio.querySelector('[data-goat-instagram-embed]');\n    const jacketDomain = studio.querySelector('[data-goat-jacket-domain]');\n    const referenceInput = studio.querySelector('[data-goat-reference-url]');\n    const referenceStatus = studio.querySelector('[data-goat-reference-status]');\n\n    const isDirectImageUrl = (value) => {\n      try {\n        const pathname = new URL(value).pathname.toLowerCase();\n        return /\\.(jpe?g|png|webp|avif|gif)$/.test(pathname);\n      } catch (error) {\n        return false;\n      }\n    };\n\n    const referenceDomain = (value) => {\n      try { return new URL(value).hostname.replace(/^www\\./, ''); }\n      catch (error) { return 'Public page link'; }\n    };\n\n    const instagramEmbedUrl = (value) => {\n      try {\n        const url = new URL(value);\n        if (!/(^|\\.)instagram\\.com$/i.test(url.hostname)) return '';\n        const match = url.pathname.match(/^\\/(p|reel|tv)\\/([^/]+)/i);\n        if (!match) return '';\n        return `https://www.instagram.com/${match[1].toLowerCase()}/${match[2]}/embed/`;\n      } catch (error) {\n        return '';\n      }\n    };\n\n    const refreshTryon = () => {\n      const referenceUrl = referenceInput?.value.trim() || '';\n      const jacketVisual = jacketDataUrl || jacketRemoteUrl;\n      const instagramUrl = !jacketDataUrl ? instagramEmbedUrl(referenceUrl) : '';\n      const hasJacketReference = Boolean(jacketVisual || instagramUrl || referenceUrl);\n      if (tryonJacket) {\n        tryonJacket.hidden = !jacketVisual;\n        if (jacketVisual) tryonJacket.src = jacketVisual;\n        else tryonJacket.removeAttribute('src');\n      }\n      if (instagramEmbed) {\n        instagramEmbed.hidden = !instagramUrl;\n        if (instagramUrl && instagramEmbed.src !== instagramUrl) instagramEmbed.src = instagramUrl;\n        else if (!instagramUrl) instagramEmbed.removeAttribute('src');\n      }\n      if (jacketLinkCard) jacketLinkCard.hidden = Boolean(jacketVisual || instagramUrl) || !referenceUrl;\n      if (jacketDomain && referenceUrl) jacketDomain.textContent = referenceDomain(referenceUrl);\n      if (jacketFigure) {\n        jacketFigure.hidden = !hasJacketReference;\n        jacketFigure.classList.toggle('is-instagram', Boolean(instagramUrl));\n      }\n      if (tryonPerson) {\n        tryonPerson.hidden = !personDataUrl;\n        if (personDataUrl) tryonPerson.src = personDataUrl;\n        else tryonPerson.removeAttribute('src');\n      }\n      if (personFigure) personFigure.hidden = !personDataUrl;\n      if (tryon) {\n        tryon.hidden = !(hasJacketReference || personDataUrl);\n        tryon.classList.toggle('is-single', Number(hasJacketReference) + Number(Boolean(personDataUrl)) === 1);\n      }\n    };\n\n    const syncReferenceUrl = () => {\n      const value = referenceInput?.value.trim() || '';\n      jacketRemoteUrl = !jacketDataUrl && isDirectImageUrl(value) ? value : '';\n      const instagramUrl = !jacketDataUrl ? instagramEmbedUrl(value) : '';\n      if (referenceStatus) {\n        if (!value) referenceStatus.textContent = 'Direct JPG, PNG and WebP links preview instantly. Page and video links are saved in your brief for specialist review.';\n        else if (jacketRemoteUrl) referenceStatus.textContent = 'Direct image detected. Loading the visual preview\u2026';\n        else if (instagramUrl) referenceStatus.textContent = 'Public Instagram reference detected. Loading Instagram\u2019s official visual embed\u2026';\n        else referenceStatus.textContent = 'Page link saved. Browsers cannot reliably extract an image from every film, video or social page; upload the image itself for an instant preview.';\n      }\n      refreshTryon();\n    };\n\n    referenceInput?.addEventListener('input', syncReferenceUrl);\n    referenceInput?.addEventListener('change', syncReferenceUrl);\n    tryonJacket?.addEventListener('load', () => {\n      if (referenceStatus && jacketRemoteUrl) referenceStatus.textContent = 'Direct image loaded and added to your reference board.';\n    });\n    instagramEmbed?.addEventListener('load', () => {\n      if (referenceStatus && instagramEmbedUrl(referenceInput?.value.trim() || '')) referenceStatus.textContent = 'Instagram reference loaded. The post is visible to you and included in the design brief.';\n    });\n    tryonJacket?.addEventListener('error', () => {\n      if (!jacketRemoteUrl) return;\n      jacketRemoteUrl = '';\n      if (referenceStatus) referenceStatus.textContent = 'That website blocked image previewing. The URL is still saved; upload the image itself to see it immediately.';\n      refreshTryon();\n    });\n\n    jacketUpload?.addEventListener('change', () => readUpload(jacketUpload, (url, file) => {\n      jacketDataUrl = url;\n      jacketRemoteUrl = '';\n      if (jacketPreviewImage) jacketPreviewImage.src = url;\n      if (jacketPreview) jacketPreview.hidden = false;\n      if (jacketLabel) jacketLabel.textContent = file.name;\n      refreshTryon();\n    }, jacketLabel));\n    removeJacket?.addEventListener('click', () => {\n      jacketDataUrl = '';\n      jacketUpload.value = '';\n      jacketPreviewImage?.removeAttribute('src');\n      if (jacketPreview) jacketPreview.hidden = true;\n      if (jacketLabel) jacketLabel.textContent = 'Choose JPG, PNG or WebP \u00B7 maximum 8 MB';\n      syncReferenceUrl();\n    });\n\n    const personUpload = studio.querySelector('[data-goat-person-upload]');\n    const personLabel = studio.querySelector('[data-goat-person-label]');\n    personUpload?.addEventListener('change', () => readUpload(personUpload, (url, file) => {\n      personDataUrl = url;\n      usingReusableFitProfile = false;\n      if (personLabel) personLabel.textContent = file.name;\n      refreshTryon();\n    }, personLabel));\n\n    const getReusableFitProfile = () => new Promise(resolve => {\n      if (!window.indexedDB) return resolve(null);\n      const request = window.indexedDB.open('goat-private-fit-profile', 1);\n      request.onupgradeneeded = () => {\n        if (!request.result.objectStoreNames.contains('profile')) request.result.createObjectStore('profile');\n      };\n      request.onerror = () => resolve(null);\n      request.onsuccess = () => {\n        const db = request.result;\n        const transaction = db.transaction('profile', 'readonly');\n        const read = transaction.objectStore('profile').get('primary');\n        read.onsuccess = () => resolve(read.result?.photo ? read.result : null);\n        read.onerror = () => resolve(null);\n        transaction.oncomplete = () => db.close();\n      };\n    });\n    const revealReusableFitProfile = async () => {\n      reusableFitProfile = await getReusableFitProfile();\n      if (!reusableFitProfile || !fitReuse) return;\n      fitReuse.hidden = false;\n      if (fitReuseCopy) {\n        const gender = ({men:'Men',women:'Women','non-binary':'Another fit','prefer-not':'Fit profile'})[reusableFitProfile.gender] || 'Fit profile';\n        fitReuseCopy.textContent = `${gender} \u00B7 size ${reusableFitProfile.size || 'not set'} \u00B7 quality-approved photograph`;\n      }\n    };\n    useFitButton?.addEventListener('click', () => {\n      if (!reusableFitProfile?.photo) return;\n      if (personDataUrl?.startsWith('blob:')) URL.revokeObjectURL(personDataUrl);\n      personDataUrl = URL.createObjectURL(reusableFitProfile.photo);\n      usingReusableFitProfile = true;\n      if (personLabel) personLabel.textContent = 'Using your saved private Fit Profile photograph';\n      if (sizeSelect && !sizeSelect.value && reusableFitProfile.size) sizeSelect.value = reusableFitProfile.size;\n      const wearer = form?.querySelector('[name=\"contact[wearer]\"]');\n      if (wearer && !wearer.value && reusableFitProfile.gender) {\n        wearer.value = reusableFitProfile.gender === 'women' ? 'Women' : reusableFitProfile.gender === 'men' ? 'Men' : 'Unisex';\n      }\n      refreshTryon();\n      updateEstimate();\n      window.dataLayer = window.dataLayer || [];\n      window.dataLayer.push({event:'design_studio_fit_profile_reused', has_size:Boolean(reusableFitProfile.size), gender:reusableFitProfile.gender || 'unknown'});\n    });\n    revealReusableFitProfile();\n\n    const maker = studio.querySelector('[data-goat-maker]');\n    const makerStage = studio.querySelector('.goat-maker__canvas-stage');\n    const makerPockets = studio.querySelector('[data-goat-maker-pockets]');\n    const zoneSelect = studio.querySelector('[data-goat-zone-select]');\n    const zoneColour = studio.querySelector('[data-goat-zone-colour]');\n    const zoneMaterial = studio.querySelector('[data-goat-zone-material]');\n    const pocketType = studio.querySelector('[data-goat-pocket-type]');\n    const pocketSize = studio.querySelector('[data-goat-pocket-size]');\n    const pocketLayout = studio.querySelector('[data-goat-pocket-layout]');\n    const panelSpecification = studio.querySelector('[data-goat-panel-specification]');\n    const addPocketButton = studio.querySelector('[data-goat-add-pocket]');\n    const removePocketButton = studio.querySelector('[data-goat-remove-pocket]');\n    const makerViewLabel = studio.querySelector('[data-goat-maker-view-label]');\n    const zones = ['body','back','back_yoke','left_sleeve','right_sleeve','left_shoulder','right_shoulder','collar','left_cuff','right_cuff','waist'];\n    makerState = {\n      view:'front', activeZone:'body', selectedPocket:null, nextPocket:3,\n      panels:Object.fromEntries(zones.map(zone => [zone,{colour:'#151515',material:'sheep'}])),\n      pockets:[\n        {id:1,side:'front',type:'welt',x:24,y:59,size:90},\n        {id:2,side:'front',type:'welt',x:62,y:59,size:90}\n      ]\n    };\n    const colourRestrictions = {\n      goat:new Set(['#151515','#4b2c20']),\n      suede:new Set(['#151515','#4b2c20']),\n      buffalo:new Set(['#151515','#4b2c20','#b27645','#1e5a3b','#173c68','#8d1d1d'])\n    };\n    const activePanel = () => makerState.panels[makerState.activeZone] || makerState.panels.body;\n    const hardwareColour = () => (closureSelect?.value || '').includes('brass') ? '#bd8d4e' : '#c6c1ba';\n    const syncMakerHiddenFields = () => {\n      if (pocketLayout) pocketLayout.value = JSON.stringify(makerState.pockets);\n      if (panelSpecification) panelSpecification.value = JSON.stringify(makerState.panels);\n    };\n    const setMakerView = view => {\n      makerState.view = view;\n      studio.querySelectorAll('[data-goat-maker-view]').forEach(button => button.classList.toggle('is-active', button.dataset.goatMakerView === view));\n      studio.querySelectorAll('[data-goat-jacket-side]').forEach(group => { group.hidden = group.dataset.goatJacketSide !== view; });\n      if (makerViewLabel) makerViewLabel.textContent = `${view === 'front' ? 'Front' : 'Back'} view`;\n      makerRefresh();\n    };\n    const setActiveZone = zone => {\n      if (!makerState.panels[zone]) return;\n      makerState.activeZone = zone;\n      if (zoneSelect) zoneSelect.value = zone;\n      if (zoneColour) zoneColour.value = activePanel().colour;\n      if (colourNameSelect) colourNameSelect.value = [...colourNameSelect.options].some(option => option.value === activePanel().colour) ? activePanel().colour : 'custom';\n      if (zoneMaterial) zoneMaterial.value = activePanel().material;\n      studio.querySelectorAll('[data-maker-zone]').forEach(shape => shape.classList.toggle('is-selected', shape.dataset.makerZone === zone && !shape.closest('[hidden]')));\n    };\n    const constrainPanelColour = () => {\n      const panel = activePanel();\n      const allowed = colourRestrictions[panel.material];\n      if (allowed && !allowed.has(panel.colour)) {\n        panel.colour = '#151515';\n        if (ruleNote) ruleNote.textContent = panel.material === 'buffalo' ? 'Buffalo leather is limited to black, brown, tan, green, blue or red; this panel was changed to black.' : `${panel.material === 'goat' ? 'Goat leather' : 'Suede'} is available in black or brown; this panel was changed to black.`;\n      }\n    };\n    const renderPockets = () => {\n      if (!makerPockets) return;\n      makerPockets.innerHTML = '';\n      makerState.pockets.filter(pocket => pocket.side === makerState.view).forEach(pocket => {\n        const node = document.createElement('button');\n        node.type = 'button';\n        node.className = `goat-maker__pocket${makerState.selectedPocket === pocket.id ? ' is-selected' : ''}`;\n        node.dataset.pocketId = String(pocket.id);\n        node.dataset.pocketType = pocket.type;\n        node.style.left = `${pocket.x}%`;\n        node.style.top = `${pocket.y}%`;\n        node.style.width = `${pocket.size}px`;\n        node.style.setProperty('--pocket-hardware', hardwareColour());\n        node.textContent = pocket.type;\n        node.setAttribute('aria-label', `${pocket.type} pocket; drag to position`);\n        node.addEventListener('click', () => {\n          makerState.selectedPocket = pocket.id;\n          if (pocketType) pocketType.value = pocket.type;\n          if (pocketSize) pocketSize.value = String(pocket.size);\n          makerRefresh();\n        });\n        node.addEventListener('pointerdown', event => {\n          event.preventDefault();\n          makerState.selectedPocket = pocket.id;\n          const bounds = makerPockets.getBoundingClientRect();\n          const move = moveEvent => {\n            pocket.x = Math.max(0, Math.min(88, ((moveEvent.clientX - bounds.left) / bounds.width) * 100));\n            pocket.y = Math.max(0, Math.min(90, ((moveEvent.clientY - bounds.top) / bounds.height) * 100));\n            node.style.left = `${pocket.x}%`;\n            node.style.top = `${pocket.y}%`;\n            syncMakerHiddenFields();\n          };\n          const stop = () => { window.removeEventListener('pointermove', move); window.removeEventListener('pointerup', stop); refreshDesignState(); };\n          window.addEventListener('pointermove', move);\n          window.addEventListener('pointerup', stop, {once:true});\n        });\n        makerPockets.appendChild(node);\n      });\n      if (removePocketButton) removePocketButton.disabled = !makerState.selectedPocket;\n    };\n    makerRefresh = () => {\n      const silhouette = selectedSilhouette();\n      makerStage?.classList.toggle('is-brass', (closureSelect?.value || '').includes('brass'));\n      makerStage?.classList.toggle('is-wrapped', closureSelect?.value === 'wrapped_buttons');\n      makerStage?.classList.toggle('is-puffer', silhouette === 'puffer');\n      makerStage?.classList.toggle('is-longline', silhouette === 'longline');\n      studio.querySelectorAll('[data-maker-zone]').forEach(shape => {\n        const panel = makerState.panels[shape.dataset.makerZone] || makerState.panels.body;\n        shape.style.fill = panel.colour;\n        shape.classList.toggle('is-selected', shape.dataset.makerZone === makerState.activeZone && !shape.closest('[hidden]'));\n      });\n      const beltVisible = studio.querySelector('[data-goat-belt]')?.value !== 'none';\n      studio.querySelectorAll('[data-goat-maker-belt]').forEach(path => { path.hidden = !beltVisible; });\n      const tabsVisible = Boolean(studio.querySelector('[data-goat-shoulder-tabs]')?.checked);\n      studio.querySelectorAll('[data-goat-maker-tabs]').forEach(path => { path.hidden = !tabsVisible; });\n      renderPockets();\n      setActiveZone(makerState.activeZone);\n      syncMakerHiddenFields();\n    };\n    studio.querySelectorAll('[data-goat-maker-view]').forEach(button => button.addEventListener('click', () => setMakerView(button.dataset.goatMakerView)));\n    studio.querySelectorAll('[data-maker-zone]').forEach(shape => shape.addEventListener('click', () => setActiveZone(shape.dataset.makerZone)));\n    zoneSelect?.addEventListener('change', () => {\n      const backOnly = ['back','back_yoke'].includes(zoneSelect.value);\n      if (backOnly && makerState.view !== 'back') setMakerView('back');\n      if (!backOnly && ['body','left_shoulder','right_shoulder'].includes(zoneSelect.value) && makerState.view !== 'front') setMakerView('front');\n      setActiveZone(zoneSelect.value);\n    });\n    colourNameSelect?.addEventListener('change', () => {\n      if (colourNameSelect.value === 'custom') return;\n      activePanel().colour = colourNameSelect.value;\n      constrainPanelColour();\n      if (zoneColour) zoneColour.value = activePanel().colour;\n      makerRefresh();\n      refreshDesignState();\n    });\n    zoneColour?.addEventListener('input', () => {\n      activePanel().colour = zoneColour.value;\n      constrainPanelColour();\n      makerRefresh();\n      refreshDesignState();\n    });\n    zoneMaterial?.addEventListener('change', () => {\n      activePanel().material = zoneMaterial.value;\n      constrainPanelColour();\n      makerRefresh();\n      refreshDesignState();\n    });\n    addPocketButton?.addEventListener('click', () => {\n      const pocket = {id:makerState.nextPocket++,side:makerState.view,type:pocketType?.value || 'welt',x:42,y:52,size:Number(pocketSize?.value || 92)};\n      makerState.pockets.push(pocket);\n      makerState.selectedPocket = pocket.id;\n      makerRefresh();\n      refreshDesignState();\n    });\n    removePocketButton?.addEventListener('click', () => {\n      makerState.pockets = makerState.pockets.filter(pocket => pocket.id !== makerState.selectedPocket);\n      makerState.selectedPocket = null;\n      makerRefresh();\n      refreshDesignState();\n    });\n    pocketType?.addEventListener('change', () => {\n      const pocket = makerState.pockets.find(item => item.id === makerState.selectedPocket);\n      if (pocket) pocket.type = pocketType.value;\n      makerRefresh();\n      refreshDesignState();\n    });\n    pocketSize?.addEventListener('input', () => {\n      const pocket = makerState.pockets.find(item => item.id === makerState.selectedPocket);\n      if (pocket) pocket.size = Number(pocketSize.value);\n      makerRefresh();\n      refreshDesignState();\n    });\n    studio.querySelectorAll('[data-goat-collar],[data-goat-pattern],[data-goat-belt],[data-goat-shoulder-tabs]').forEach(control => control.addEventListener('change', () => { makerRefresh(); refreshDesignState(); }));\n    silhouetteInputs.forEach(input => input.addEventListener('change', makerRefresh));\n\n    const priceConfig = {\n      base:Number(maker?.dataset.basePrice || 15000),\n      max:Number(maker?.dataset.maxPrice || 35000),\n      goat:Number(maker?.dataset.goatSurcharge || 4000),\n      suede:Number(maker?.dataset.suedeSurcharge || 6000),\n      buffalo:Number(maker?.dataset.buffaloSurcharge || 9000),\n      mixedPanel:Number(maker?.dataset.mixedPanelSurcharge || 1500),\n      extraPocket:Number(maker?.dataset.extraPocketSurcharge || 750),\n      detail:Number(maker?.dataset.detailSurcharge || 1000)\n    };\n    const materialLabels = {sheep:'Sheep leather',goat:'Goat leather',suede:'Suede',buffalo:'Buffalo leather'};\n    const sizeSurcharge = {S:0,M:0,L:500,XL:1000,'2XL':1500,'3XL':2250,'4XL':3000};\n    const money = (value) => new Intl.NumberFormat('en-IN', {style: 'currency', currency: 'INR', maximumFractionDigits: 0}).format(value);\n\n    const updateEstimate = () => {\n      const material = materialInputs.find((input) => input.checked)?.dataset.material;\n      const size = sizeSelect?.value;\n      if (!material || !size) {\n        currentEstimate = '';\n        if (priceOutput) priceOutput.textContent = 'Choose leather and size';\n        if (finalPriceOutput) finalPriceOutput.textContent = 'Complete leather and size choices';\n        return;\n      }\n      const pattern = form?.querySelector('[name=\"contact[panel_pattern]\"]')?.value || 'clean';\n      const closure = closureSelect?.value || 'black_zip';\n      const primarySurcharge = material === 'sheep' ? 0 : priceConfig[material] || 0;\n      const mixedPanels = Object.values(makerState?.panels || {}).filter(panel => panel.material !== material).length;\n      const extraPockets = Math.max(0, (makerState?.pockets?.length || 0) - 2);\n      const detailCount = Number(pattern !== 'clean') + Number(closure === 'wrapped_buttons') + Number(studio.querySelector('[data-goat-belt]')?.value !== 'none') + Number(studio.querySelector('[data-goat-shoulder-tabs]')?.checked);\n      const rawPrice = priceConfig.base + primarySurcharge + (sizeSurcharge[size] || 0) + mixedPanels * priceConfig.mixedPanel + extraPockets * priceConfig.extraPocket + detailCount * priceConfig.detail;\n      const price = Math.min(priceConfig.max, Math.round(rawPrice / 500) * 500);\n      currentEstimate = `${money(price)} estimated \u00B7 ${materialLabels[material]} \u00B7 size ${size}`;\n      if (priceOutput) priceOutput.textContent = currentEstimate;\n      if (finalPriceOutput) finalPriceOutput.textContent = currentEstimate;\n    };\n    const readContact = name => {\n      const fields = [...(form?.querySelectorAll(`[name=\"contact[${name}]\"]`) || [])];\n      const selected = fields.find(field => !['radio','checkbox'].includes(field.type) || field.checked);\n      return selected?.value || '';\n    };\n    const designReadiness = () => {\n      const read = readContact;\n      const material = materialInputs.find(input => input.checked)?.value || '';\n      const missing = [];\n      if (!read('silhouette')) missing.push('silhouette');\n      if (!material) missing.push('leather');\n      if (!read('size')) missing.push('size');\n      const notes = [];\n      if (read('occasion') === 'Motorcycle / riding' && material === 'Suede') notes.push('Suede for riding needs an artisan durability and reinforcement review.');\n      if (read('silhouette') === 'longline' && material === 'Buffalo leather') notes.push('A long buffalo coat will be very heavy and needs an artisan weight and movement review.');\n      if (['custom','geometric'].includes(read('panel_pattern'))) notes.push('Custom or geometric panels require a manual pattern-line review.');\n      if (read('start_mode') === 'reference') notes.push('The reference is reinterpreted as an original GOAT design; protected logos and costume marks are not reproduced.');\n      if (read('closure') === 'wrapped_buttons' && material !== 'Sheep leather') notes.push('Leather-wrapped buttons use sheep leather; the artisan will colour-match them to the approved panel.');\n      const restrictedPanels = Object.entries(makerState?.panels || {}).filter(([,panel]) => colourRestrictions[panel.material] && !colourRestrictions[panel.material].has(panel.colour));\n      if (restrictedPanels.length) notes.push('One or more panel colours are outside the selected leather availability and must be corrected.');\n      if (missing.length) return {status:'incomplete',title:`Complete ${missing.join(', ')}`,items:['The instant check is local and uses no AI credit.'],missing,notes};\n      if (notes.length) return {status:'review',title:'Buildable direction \u00B7 specialist review needed',items:notes,missing:[],notes};\n      return {status:'ready',title:'System approved \u00B7 ready for price and artisan review',items:['The selected materials, colours, hardware and placements pass the current factory rulebook. Final pattern balance remains artisan-approved.'],missing:[],notes:[]};\n    };\n    const renderReadiness = () => {\n      const readiness = designReadiness();\n      if (readinessPanel) {\n        readinessPanel.classList.toggle('is-ready', readiness.status === 'ready');\n        readinessPanel.classList.toggle('is-review', readiness.status === 'review');\n      }\n      if (readinessTitle) readinessTitle.textContent = readiness.title;\n      if (readinessList) {\n        readinessList.innerHTML = '';\n        readiness.items.forEach(item => {\n          const row = document.createElement('li');\n          row.textContent = item;\n          readinessList.appendChild(row);\n        });\n      }\n      return readiness;\n    };\n    const refreshDesignState = () => {\n      updateEstimate();\n      renderReadiness();\n      scheduleDraftSave();\n    };\n    let previousPrimaryMaterial = materialInputs.find(input => input.checked)?.dataset.material || 'sheep';\n    materialInputs.forEach((input) => input.addEventListener('change', () => {\n      if (!input.checked) return;\n      const nextMaterial = input.dataset.material;\n      Object.values(makerState?.panels || {}).forEach(panel => { if (panel.material === previousPrimaryMaterial) panel.material = nextMaterial; });\n      previousPrimaryMaterial = nextMaterial;\n      makerRefresh();\n      refreshDesignState();\n    }));\n    sizeSelect?.addEventListener('change', refreshDesignState);\n    complexitySelect?.addEventListener('change', refreshDesignState);\n    form?.querySelectorAll('[name=\"contact[occasion]\"], [name=\"contact[panel_pattern]\"], [name=\"contact[closure]\"]').forEach(input => input.addEventListener('change', refreshDesignState));\n\n    const syncRules = () => {\n      const primaryMaterial = materialInputs.find(input => input.checked)?.dataset.material || 'sheep';\n      if (closureSelect?.value === 'wrapped_buttons' && primaryMaterial !== 'sheep') {\n        if (ruleNote) ruleNote.textContent = 'Wrapped buttons are made in colour-matched sheep leather. Your main jacket leather can remain unchanged.';\n      } else if (ruleNote) ruleNote.textContent = 'Silver and brass are the supported exposed hardware finishes. Panel colours are checked against each selected leather.';\n      if (secondColour) {\n        const enabled = colourTreatment?.value !== 'single';\n        secondColour.disabled = !enabled;\n        secondColour.required = enabled;\n        if (!enabled) secondColour.value = '';\n      }\n      makerRefresh();\n      refreshDesignState();\n    };\n    silhouetteInputs.forEach(input => input.addEventListener('change', syncRules));\n    closureSelect?.addEventListener('change', syncRules);\n    colourTreatment?.addEventListener('change', syncRules);\n\n    const specification = () => {\n      const read = readContact;\n      const readiness = designReadiness();\n      return {\n        schema_version: 'goat-design-v3-maker',\n        starting_point: {mode:read('start_mode'), ai_prompt:read('ai_prompt') || null, reference:read('reference') || null},\n        customer_intent: {wearer:read('wearer'), occasion:read('occasion'), action:read('order_intent') || 'buy'},\n        garment: {\n          silhouette:read('silhouette'),\n          panels:makerState?.panels || {},\n          pockets:makerState?.pockets || [],\n          collar:read('collar'), closure:read('closure'), belt:read('belt'), shoulder_tabs:read('shoulder_tabs') === 'Yes', panel_pattern:read('panel_pattern'), lining:read('lining')\n        },\n        material:{primary:read('material'), mixed_panels:true},\n        fit:{size:read('size'), profile_reused:usingReusableFitProfile},\n        commercial:{working_estimate:currentEstimate, currency:'INR', price_floor:priceConfig.base, price_ceiling:priceConfig.max},\n        creator:{name:read('creator_name') || null, ownership:'GOAT', attribution:true, action:read('order_intent') || 'buy'},\n        feasibility:{status:readiness.status, missing:readiness.missing, notes:readiness.notes}\n      };\n    };\n    const renderSpec = () => {\n      if (!specCard) return;\n      const spec = specification();\n      specCard.innerHTML = `<p>Workshop specification</p><strong>${spec.garment.silhouette || 'Silhouette pending'} \u00B7 ${spec.material.primary || 'Leather pending'}</strong><dl><div><dt>Editable panels</dt><dd>${Object.keys(spec.garment.panels).length}</dd></div><div><dt>Placed pockets</dt><dd>${spec.garment.pockets.length}</dd></div><div><dt>Collar / flap</dt><dd>${spec.garment.collar}</dd></div><div><dt>Closure</dt><dd>${spec.garment.closure}</dd></div><div><dt>Belt</dt><dd>${spec.garment.belt}</dd></div><div><dt>Panel pattern</dt><dd>${spec.garment.panel_pattern}</dd></div><div><dt>Size</dt><dd>${spec.fit.size}</dd></div><div><dt>Readiness</dt><dd>${spec.feasibility.status}</dd></div></dl>`;\n    };\n\n    const buildSummary = () => {\n      const value = name => readContact(name.replace(/^contact\\[|\\]$/g, '')) || 'Not supplied';\n      const jacketName = jacketUpload?.files?.[0]?.name || 'No local file';\n      const personName = personUpload?.files?.[0]?.name || 'No local file';\n      return [\n        'GOAT PRIVATE DESIGN STUDIO BRIEF',\n        `Reference URL: ${value('contact[reference]')}`,\n        `Reference filename: ${jacketName}`,\n        `Wearer: ${value('contact[wearer]')}`,\n        `Occasion: ${value('contact[occasion]')}`,\n        `Leather: ${value('contact[material]')}`,\n        `Size: ${value('contact[size]')}`,\n        `Complexity: ${value('contact[complexity]')}`,\n        `Structured specification JSON: ${JSON.stringify(specification())}`,\n        `Working estimate: ${currentEstimate || 'Pending selections'}`,\n        `Try-on photo filename: ${personName}`,\n        `Design notes: ${value('contact[design_notes]')}`,\n        `Customer action: ${value('contact[order_intent]')}`,\n        `Creator credit: ${value('contact[creator_name]')}`,\n        'Ownership: GOAT; creator attribution and admin-controlled eligible-sales commission accepted.',\n        'Customer has been shown the approximation disclaimer. Please call within one working day.'\n      ].join('\\n');\n    };\n\n    form?.addEventListener('input', scheduleDraftSave);\n    form?.addEventListener('change', scheduleDraftSave);\n    form?.addEventListener('submit', () => {\n      if (summaryField) summaryField.value = buildSummary();\n      try { window.localStorage.removeItem(designDraftKey); } catch (error) { /* Submission still proceeds. */ }\n    });\n\n    document.querySelectorAll('[data-goat-inspiration]').forEach((link) => link.addEventListener('click', () => {\n      const notes = form?.querySelector('textarea[name=\"contact[design_notes]\"]');\n      if (notes && !notes.value) notes.value = link.dataset.goatInspiration || '';\n      showStep(0);\n    }));\n\n    const screenBrief = document.querySelector('[data-goat-screen-brief]');\n    screenBrief?.addEventListener('submit', (event) => {\n      event.preventDefault();\n      const query = screenBrief.querySelector('[data-goat-screen-query]')?.value.trim() || '';\n      const url = screenBrief.querySelector('[data-goat-screen-url]')?.value.trim() || '';\n      if (!query && !url) {\n        screenBrief.querySelector('input')?.focus();\n        return;\n      }\n      const notes = form?.querySelector('textarea[name=\"contact[design_notes]\"]');\n      if (notes) notes.value = `Screen inspiration: ${query || 'See supplied link'}. Reinterpret the silhouette as an original GOAT design without protected logos or costume marks.`;\n      if (referenceInput && url) referenceInput.value = url;\n      syncReferenceUrl();\n      showStep(0);\n      studio.scrollIntoView({behavior: 'smooth', block: 'start'});\n    });\n\n    nav[2]?.addEventListener('click', renderSpec);\n    studio.querySelectorAll('[data-goat-next]').forEach(button => button.addEventListener('click', () => { if (currentStep === 2 || currentStep === 1) renderSpec(); }));\n    restoreDesignDraft();\n    setStartMode(startModeField?.value || 'pattern');\n    syncRules();\n    syncReferenceUrl();\n    renderReadiness();\n    makerRefresh();\n    showStep(0);\n  }\n})();\n"],
  "mappings": "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",
  "names": ["aiPrompt"]
}
