{
  "version": 3,
  "sources": ["/cdn/shop/t/37/assets/hfc-census.js?hfv=571"],
  "sourcesContent": ["/* HumanFood Census of Bad Dogs - v5.7.1 core engine (email-first)\n   Flow: GATE (email only, instant Klaviyo subscribe + Meta Lead)\n   -> reveal census steps (optional enrichment) -> final submit updates\n   the profile and generates the sheet.\n   v5.7.1: email trimmed before validation (mobile trailing-space fix);\n   Klaviyo-unreachable (ad blocker) submits fall back to the Google\n   Sheet, pass the gate, and queue for silent Klaviyo retry. A typed\n   email is never lost.\n   v5.7: gate shows the (C)RAP Sheet artwork; stable #census anchor.\n   v5.6.x: consent checkbox, rotating crime/alias inspiration,\n   no-crop mugshots, per-email dog index. */\n(() => {\n  const CONFIG = {\n    companyId: 'UzLGSQ',\n    listId: 'RXaRwV',\n    revision: '2024-10-15',\n    cloudName: 'pkg95ewm',\n    uploadPreset: 'census_mugshots',\n    webhook: 'https://script.google.com/macros/s/AKfycbzcLkG8kPjTqDlJ7VOa1oGAIYeBWpgd-3nM8DBKXyltwEfZ8Ehn1isTQA3nrurByaT0/exec',\n    uploadTimeoutMs: 9000\n  };\n\n  const UTM_KEYS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'fbclid'];\n\n  const getUtm = () => {\n    let stored = {};\n    try {\n      stored = JSON.parse(sessionStorage.getItem('hfcUtm') || '{}');\n    } catch (e) { stored = {}; }\n    const params = new URLSearchParams(window.location.search);\n    let changed = false;\n    UTM_KEYS.forEach((key) => {\n      const value = params.get(key);\n      if (value) { stored[key] = value; changed = true; }\n    });\n    if (changed) {\n      try { sessionStorage.setItem('hfcUtm', JSON.stringify(stored)); } catch (e) { /* ok */ }\n    }\n    return stored;\n  };\n\n  const mapPrefix = (value, pairs, fallback) => {\n    const v = String(value || '');\n    for (let i = 0; i < pairs.length; i += 1) {\n      if (v.indexOf(pairs[i][0]) === 0) return pairs[i][1];\n    }\n    return fallback;\n  };\n\n  const codeAge = (v) => mapPrefix(v, [['Puppy', 'puppy'], ['Adult', 'adult'], ['Senior', 'senior']], '');\n  const codeWeight = (v) => mapPrefix(v, [['Under', 'under20'], ['20', '20-50'], ['50', '50-90'], ['90', '90plus']], '');\n  const codeCount = (v) => mapPrefix(v, [['One', '1'], ['Two', '2'], ['Three', '3plus']], '');\n  const codeFood = (v) => mapPrefix(v, [['Kibble', 'kibble'], ['Fresh', 'fresh'], ['Raw', 'raw'], ['Home', 'homecooked'], ['It varies', 'varies']], '');\n  const codeBribe = (v) => mapPrefix(v, [['No', 'none'], ['Cheese', 'cheese'], ['Broth', 'topper'], ['A full', 'negotiation'], ['Hand', 'handfed']], '');\n  const codeRecipe = (v) => mapPrefix(v, [['Chicken', 'chicken'], ['Lamb', 'lamb'], ['Salmon', 'salmon'], ['Anything', 'any']], '');\n\n  const normalizePhone = (raw) => {\n    const digits = String(raw || '').replace(/\\D/g, '');\n    if (digits.length === 10) return '+1' + digits;\n    if (digits.length === 11 && digits.charAt(0) === '1') return '+' + digits;\n    return '';\n  };\n\n  const withTimeout = (promise, ms, fallbackValue) => {\n    return Promise.race([\n      promise,\n      new Promise((resolve) => { setTimeout(() => resolve(fallbackValue), ms); })\n    ]);\n  };\n\n  const dataUrlToBlob = (dataUrl) => {\n    const parts = dataUrl.split(',');\n    const mimeMatch = parts[0].match(/data:([^;]+)/);\n    const mime = mimeMatch ? mimeMatch[1] : 'image/png';\n    const binary = atob(parts[1]);\n    const bytes = new Uint8Array(binary.length);\n    for (let i = 0; i < binary.length; i += 1) bytes[i] = binary.charCodeAt(i);\n    return new Blob([bytes], { type: mime });\n  };\n\n  const uploadToCloudinary = (fileOrBlob) => {\n    const body = new FormData();\n    body.append('file', fileOrBlob);\n    body.append('upload_preset', CONFIG.uploadPreset);\n    const attempt = fetch('https://api.cloudinary.com/v1_1/' + CONFIG.cloudName + '/image/upload', {\n      method: 'POST',\n      body: body\n    })\n      .then((r) => (r.ok ? r.json() : null))\n      .then((j) => (j && j.secure_url ? j.secure_url : ''))\n      .catch(() => '');\n    return withTimeout(attempt, CONFIG.uploadTimeoutMs, '');\n  };\n\n  const isMobile =\n    /Android|iPhone|iPad|iPod/i.test(navigator.userAgent) ||\n    (navigator.maxTouchPoints || 0) > 1;\n\n  const fireLeadOnce = () => {\n    try {\n      if (typeof fbq === 'function' && !sessionStorage.getItem('hfcLeadFired')) {\n        fbq('track', 'Lead');\n        sessionStorage.setItem('hfcLeadFired', '1');\n      }\n    } catch (e) { /* no pixel, no problem */ }\n  };\n\n  /* ---------- v5 sheet drawing ---------- */\n\n  const wrapText = (context, text, x, y, maxWidth, lineHeight, maxLines) => {\n    const words = String(text || '').split(/\\s+/);\n    let line = '';\n    let lineNumber = 0;\n    for (let index = 0; index < words.length; index += 1) {\n      const testLine = line + words[index] + ' ';\n      if (context.measureText(testLine).width > maxWidth && line) {\n        context.fillText(line.trim(), x, y + lineNumber * lineHeight);\n        line = words[index] + ' ';\n        lineNumber += 1;\n        if (lineNumber >= maxLines - 1) break;\n      } else {\n        line = testLine;\n      }\n    }\n    if (lineNumber < maxLines) {\n      context.fillText(line.trim(), x, y + lineNumber * lineHeight);\n    }\n  };\n\n  const applyGrayscale = (context, x, y, width, height) => {\n    context.save();\n    context.globalCompositeOperation = 'saturation';\n    if (context.globalCompositeOperation === 'saturation') {\n      context.fillStyle = '#808080';\n      context.fillRect(x, y, width, height);\n      context.restore();\n      return;\n    }\n    context.restore();\n    try {\n      const frame = context.getImageData(x, y, width, height);\n      const data = frame.data;\n      for (let i = 0; i < data.length; i += 4) {\n        const gray = data[i] * 0.299 + data[i + 1] * 0.587 + data[i + 2] * 0.114;\n        const boosted = Math.min(255, Math.max(0, (gray - 128) * 1.12 + 128));\n        data[i] = boosted;\n        data[i + 1] = boosted;\n        data[i + 2] = boosted;\n      }\n      context.putImageData(frame, x, y);\n    } catch (error) { /* leave color rather than break */ }\n  };\n\n  const drawCoverImage = (context, image, x, y, width, height) => {\n    const containScale = Math.min(width / image.width, height / image.height);\n    const dw = image.width * containScale;\n    const dh = image.height * containScale;\n    const dx = x + (width - dw) / 2;\n    const dy = y + (height - dh) / 2;\n\n    const coverScale = Math.max(width / image.width, height / image.height);\n    const cw = image.width * coverScale;\n    const ch = image.height * coverScale;\n    const cx = x + (width - cw) / 2;\n    const cy = y + (height - ch) / 2;\n\n    context.save();\n    context.beginPath();\n    context.rect(x, y, width, height);\n    context.clip();\n    context.drawImage(image, cx, cy, cw, ch);\n    context.fillStyle = 'rgba(247, 243, 234, 0.5)';\n    context.fillRect(x, y, width, height);\n    context.drawImage(image, dx, dy, dw, dh);\n    context.restore();\n    applyGrayscale(context, x, y, width, height);\n  };\n\n  const drawPaw = (context, x, y, size, tilt) => {\n    context.save();\n    context.translate(x, y);\n    context.rotate(tilt || 0);\n    context.fillStyle = '#3A3A3A';\n    context.beginPath();\n    context.ellipse(0, size * 0.35, size * 0.55, size * 0.45, 0, 0, Math.PI * 2);\n    context.fill();\n    const toes = [[-0.62, -0.15], [-0.22, -0.45], [0.22, -0.45], [0.62, -0.15]];\n    toes.forEach((toe) => {\n      context.beginPath();\n      context.ellipse(toe[0] * size, toe[1] * size, size * 0.18, size * 0.24, 0, 0, Math.PI * 2);\n      context.fill();\n    });\n    context.restore();\n  };\n\n  const noteFor = (map, value, fallback) => {\n    if (map[value]) return map[value];\n    const keys = Object.keys(map);\n    for (let i = 0; i < keys.length; i += 1) {\n      if (value && value.indexOf(keys[i].split(' (')[0]) === 0) return map[keys[i]];\n    }\n    return fallback;\n  };\n\n  const BRIBE_NOTES = {\n    'No': 'Claims to need no bribe. Unverified.',\n    'Cheese': 'Requires cheese to perform basic tasks.',\n    'Broth or toppers': 'Dinner requires a garnish.',\n    'A full negotiation': 'Dinner is a hostage negotiation.',\n    'Hand-feeding (we document, not judge)': 'Hand-fed. We document, not judge.'\n  };\n\n  const FOOD_NOTES = {\n    'Kibble': 'History of beige pellets.',\n    'Fresh subscription (the fridge hostage)': 'The refrigerator answers to this dog.',\n    'Raw (the garage freezer situation)': 'Maintains a garage freezer operation.',\n    'Home cooked (you\u2019re tired)': 'The human cooks. The human is tired.',\n    'It varies (survival mode)': 'Diet classified as survival mode.'\n  };\n\n  /* ---------- injected markup ---------- */\n\n  const GATE_ART_URL = 'https://cdn.shopify.com/s/files/1/0733/2891/8779/files/1-_C_RAPSHEET_4x5_slide-1_1.png';\n\n  const GATE_HTML =\n    '<div data-gate>' +\n    '<style>' +\n    '.hfc-gate-grid{display:grid;grid-template-columns:minmax(0,1fr) 225px;gap:28px;align-items:center;}' +\n    '.hfc-gate-art{text-align:center;}' +\n    '.hfc-gate-art img{width:100%;max-width:225px;transform:rotate(3deg);filter:drop-shadow(0 10px 22px rgba(0,0,0,0.18));}' +\n    '.hfc-gate-art p{margin:12px 0 0;font-size:12px;color:#555555;line-height:1.4;}' +\n    '@media(max-width:749px){.hfc-gate-grid{grid-template-columns:1fr;gap:18px;}.hfc-gate-art{order:-1;}.hfc-gate-art img{max-width:200px;}}' +\n    '</style>' +\n    '<div class=\"hfc-gate-grid\">' +\n    '<div>' +\n    '<p class=\"hfc-census__form-kicker\">Official intake</p>' +\n    '<h2 class=\"hfc-census__form-title\">Get in line</h2>' +\n    '<p class=\"hfc-census__form-subtitle\">Email first. Then file your dog and get their official (C)RAP Sheet on the spot. Registered dogs eat first.</p>' +\n    '<div class=\"hfc-census__field\" style=\"margin:24px 0 0;\">' +\n    '<label class=\"hfc-census__label\">Where do we send the papers?</label>' +\n    '<input type=\"email\" placeholder=\"email\" maxlength=\"120\" autocomplete=\"email\" data-gate-email>' +\n    '</div>' +\n    '<div class=\"hfc-census__error\" data-gate-error>A valid email is required. The papers have to go somewhere.</div>' +\n    '<div class=\"hfc-census__navigation\" style=\"justify-content:flex-start;margin-top:22px;\">' +\n    '<button class=\"hfc-census__button\" type=\"button\" data-gate-submit>Join the waitlist</button>' +\n    '</div>' +\n    '<p class=\"hfc-census__consent\" style=\"margin-top:14px;\">No payment. No spam. First access when doors open.</p>' +\n    '</div>' +\n    '<div class=\"hfc-gate-art\" data-gate-art>' +\n    '<img src=\"' + GATE_ART_URL + '\" alt=\"Official HumanFood (C)RAP Sheet\" loading=\"lazy\" data-gate-art-img>' +\n    '<p>Every registered dog gets one. Suitable for framing.</p>' +\n    '</div>' +\n    '</div>' +\n    '</div>';\n\n  const BANNER_HTML =\n    '<div data-gate-banner style=\"margin:0 0 26px;padding:13px 16px;border:2px solid #111111;border-radius:12px;background:#D9F24F;color:#111111;font-size:14px;font-weight:700;line-height:1.4;\">' +\n    'ON THE LIST. Papers go to <span data-gate-banner-email></span>. ' +\n    'Now the fun part: file the dog, get their official (C)RAP Sheet.' +\n    '</div>';\n\n  const HUMAN_FIELD_HTML =\n    '<div class=\"hfc-census__field\" data-human-field>' +\n    '<label class=\"hfc-census__label\">Your name (the human)' +\n    '<small>For the official record.</small></label>' +\n    '<input type=\"text\" maxlength=\"80\" autocomplete=\"name\" data-human-name>' +\n    '</div>';\n\n  const CRIME_IDEAS = [\n    'Ate the drywall. Again.',\n    'Stole a rotisserie chicken off the counter',\n    'Barks at the vacuum like it owes him money',\n    'Ate $40 of sushi off the table, felt nothing',\n    'Screams at nothing. 3am. Every night.',\n    'Unrolled the toilet paper into the hallway',\n    'Ate a sock. Passed it. Proud of it.',\n    'Growls at his own reflection',\n    'Buried the remote in the yard',\n    'Opens the trash like a raccoon with thumbs',\n    'Chewed through a seatbelt on the highway',\n    'Ate the corner of the rug. Just the corner.'\n  ];\n\n  const ALIAS_IDEAS = [\n    'The Menace',\n    'Doofus',\n    'Goblin',\n    'Beans',\n    'The Landlord',\n    'Fat Boy',\n    'Little Man',\n    'The Intern',\n    'Stinky',\n    'Bubs'\n  ];\n\n  const PHOTO_CONSENT_HTML =\n    '<div class=\"hfc-census__field\" data-photo-consent-field>' +\n    '<label class=\"hfc-census__checkbox\">' +\n    '<input type=\"checkbox\" data-photo-consent>' +\n    '<span class=\"hfc-census__consent\">' +\n    'OK to feature my dog. I own this photo and give HumanFood permission ' +\n    'to share it in our content and marketing.' +\n    '</span>' +\n    '</label>' +\n    '</div>';\n\n  /* ---------- per-surface setup ---------- */\n\n  const setup = (root) => {\n    if (!root || root.dataset.hfcV56 === 'true') return;\n    root.dataset.hfcV56 = 'true';\n\n    const embedded = root.classList.contains('hfc-census--embedded');\n    const censusSource = embedded ? 'join-the-waitlist-lander' : 'census-bad-dog-page';\n    const utm = getUtm();\n\n    const readIndexMap = () => {\n      try {\n        return JSON.parse(localStorage.getItem('hfcDogIndexMap') || '{}');\n      } catch (e) { return {}; }\n    };\n    const indexForEmail = (email) => {\n      const map = readIndexMap();\n      return (map[String(email).toLowerCase()] || 0) + 1;\n    };\n    const commitIndexForEmail = (email, index) => {\n      const map = readIndexMap();\n      map[String(email).toLowerCase()] = index;\n      try { localStorage.setItem('hfcDogIndexMap', JSON.stringify(map)); } catch (e) { /* ok */ }\n    };\n\n    const photoInput = root.querySelector('[data-photo-input]');\n    const photoPreview = root.querySelector('[data-photo-preview]');\n    const uploadStatus = root.querySelector('[data-upload-status]');\n    const formCard = root.querySelector('.hfc-census__form');\n\n    let photoData = '';\n    let photoUrlPromise = Promise.resolve('');\n    let recordData = '';\n    let gateEmail = '';\n    let gateSubscribed = false;\n\n    const selectedValue = (groupName) => {\n      const selected = root.querySelector(\n        '[data-group=\"' + groupName + '\"] [aria-pressed=\"true\"]'\n      );\n      return selected ? selected.textContent.replace(/\\s+/g, ' ').trim() : '';\n    };\n\n    /* ---------- email-first gate ---------- */\n\n    const censusBody =\n      root.querySelector('[data-intake]') ||\n      root.querySelector('form[id^=\"hfc-census-form\"]');\n\n    const initGate = () => {\n      if (!formCard || !censusBody) return;\n      if (root.querySelector('[data-done]:not([hidden])')) return;\n\n      let gate = root.querySelector('[data-gate]');\n      if (!gate) {\n        censusBody.insertAdjacentHTML('beforebegin', GATE_HTML);\n        gate = root.querySelector('[data-gate]');\n      }\n      censusBody.hidden = true;\n      censusBody.style.display = 'none';\n\n      if (!root.querySelector('[data-human-name]')) {\n        const aliasInput = root.querySelector('[data-alias]');\n        const aliasField = aliasInput ? aliasInput.closest('.hfc-census__field') : null;\n        if (aliasField) {\n          aliasField.insertAdjacentHTML('afterend', HUMAN_FIELD_HTML);\n        }\n      }\n\n      if (!root.querySelector('[data-photo-consent]') && photoInput) {\n        const photoField = photoInput.closest('.hfc-census__field');\n        if (photoField) {\n          photoField.insertAdjacentHTML('afterend', PHOTO_CONSENT_HTML);\n        }\n      }\n\n      const artImg = root.querySelector('[data-gate-art-img]');\n      if (artImg) {\n        artImg.addEventListener('error', () => {\n          const art = root.querySelector('[data-gate-art]');\n          if (art) art.style.display = 'none';\n        });\n      }\n\n      const wrap = root.querySelector('.hfc-census__form-wrap') || formCard;\n      if (wrap && !document.getElementById('census')) {\n        wrap.id = 'census';\n        if (window.location.hash === '#census') {\n          setTimeout(() => {\n            wrap.scrollIntoView({ behavior: 'smooth', block: 'start' });\n          }, 200);\n        }\n      }\n    };\n\n    const passGate = () => {\n      const gate = root.querySelector('[data-gate]');\n      if (gate) gate.style.display = 'none';\n\n      censusBody.insertAdjacentHTML('beforebegin', BANNER_HTML);\n      const bannerEmail = root.querySelector('[data-gate-banner-email]');\n      if (bannerEmail) bannerEmail.textContent = gateEmail;\n\n      censusBody.hidden = false;\n      censusBody.style.display = '';\n\n      const emailField = root.querySelector('[data-email]');\n      if (emailField) {\n        emailField.value = gateEmail;\n        emailField.readOnly = true;\n      }\n\n      const wrap = root.querySelector('.hfc-census__form-wrap');\n      if (wrap) {\n        window.scrollTo({\n          top: wrap.getBoundingClientRect().top + window.scrollY - 110,\n          behavior: 'smooth'\n        });\n      }\n    };\n\n    /* Returns true (202), false (Klaviyo rejected), or 'network'\n       (unreachable, usually a privacy blocker killing a.klaviyo.com). */\n    const subscribeEmailOnly = async (email) => {\n      const properties = { census_source: censusSource };\n      UTM_KEYS.forEach((key) => { if (utm[key]) properties[key] = utm[key]; });\n      const payload = {\n        data: {\n          type: 'subscription',\n          attributes: {\n            custom_source: 'Census of Bad Dogs',\n            profile: {\n              data: {\n                type: 'profile',\n                attributes: { email: email, properties: properties }\n              }\n            }\n          },\n          relationships: { list: { data: { type: 'list', id: CONFIG.listId } } }\n        }\n      };\n      let response;\n      try {\n        response = await fetch(\n          'https://a.klaviyo.com/client/subscriptions/?company_id=' + CONFIG.companyId,\n          {\n            method: 'POST',\n            headers: {\n              'Content-Type': 'application/vnd.api+json',\n              'revision': CONFIG.revision\n            },\n            body: JSON.stringify(payload)\n          }\n        );\n      } catch (e) {\n        return 'network';\n      }\n      return response.status === 202;\n    };\n\n    /* Never lose a typed email: blocked submits land in the Google\n       Sheet immediately and queue locally for silent Klaviyo retry. */\n    const gateFallbackCapture = (email) => {\n      try {\n        fetch(CONFIG.webhook, {\n          method: 'POST',\n          mode: 'no-cors',\n          headers: { 'Content-Type': 'text/plain' },\n          body: JSON.stringify({\n            ts: new Date().toISOString(),\n            email: email,\n            phone: '',\n            human_name: '',\n            dog_name: '[EMAIL ONLY - Klaviyo unreachable, likely ad blocker]',\n            dog_aliases: '', dog_offense: '', dog_age: '', dog_weight: '',\n            dog_count: '', current_food: '', picky_tier: '', protein_pref: '',\n            photo_url: '', sheet_url: '', photo_consent: '',\n            census_source: censusSource,\n            utm_source: utm.utm_source || '', utm_medium: utm.utm_medium || '',\n            utm_campaign: utm.utm_campaign || '', utm_content: utm.utm_content || '',\n            utm_term: utm.utm_term || '', fbclid: utm.fbclid || '',\n            dog_index: 0\n          })\n        });\n      } catch (e) { /* best effort */ }\n      try {\n        const pending = JSON.parse(localStorage.getItem('hfcPendingGate') || '[]');\n        if (pending.length < 10 && pending.indexOf(email) === -1) {\n          pending.push(email);\n          localStorage.setItem('hfcPendingGate', JSON.stringify(pending));\n        }\n      } catch (e) { /* ok */ }\n    };\n\n    const flushPendingGate = async () => {\n      let pending;\n      try {\n        pending = JSON.parse(localStorage.getItem('hfcPendingGate') || '[]');\n      } catch (e) { return; }\n      if (!pending.length) return;\n      const remaining = [];\n      for (const email of pending) {\n        const res = await subscribeEmailOnly(email);\n        if (res !== true) remaining.push(email);\n      }\n      try {\n        localStorage.setItem('hfcPendingGate', JSON.stringify(remaining));\n      } catch (e) { /* ok */ }\n    };\n    flushPendingGate();\n\n    let gating = false;\n\n    const doGate = async (button) => {\n      if (gating) return;\n      const input = root.querySelector('[data-gate-email]');\n      if (input) input.value = input.value.trim();\n      const errorBox = root.querySelector('[data-gate-error]');\n      const valid = Boolean(input && input.validity.valid && input.value.trim());\n      if (errorBox) errorBox.classList.toggle('is-visible', !valid);\n      if (!valid) return;\n\n      gating = true;\n      const originalLabel = button.textContent;\n      button.disabled = true;\n      button.textContent = 'One second\u2026';\n\n      const email = input.value.trim();\n      const res = await subscribeEmailOnly(email);\n\n      gating = false;\n\n      if (res === false) {\n        button.disabled = false;\n        button.textContent = originalLabel;\n        if (errorBox) {\n          errorBox.textContent = 'The Bureau could not accept that email. Check it for typos and try again.';\n          errorBox.classList.add('is-visible');\n        }\n        return;\n      }\n\n      if (res === 'network') {\n        gateFallbackCapture(email);\n      }\n\n      gateEmail = email;\n      gateSubscribed = true;\n      fireLeadOnce();\n      passGate();\n    };\n\n    /* ---------- photo ---------- */\n\n    if (photoInput) {\n      photoInput.addEventListener('change', () => {\n        const file = photoInput.files && photoInput.files[0];\n        if (!file) return;\n        if (!file.type.startsWith('image/')) {\n          if (uploadStatus) uploadStatus.textContent = 'Please choose a valid image file.';\n          return;\n        }\n        photoUrlPromise = uploadToCloudinary(file);\n        const reader = new FileReader();\n        reader.onload = (event) => {\n          photoData = event.target.result;\n          if (photoPreview) {\n            photoPreview.src = photoData;\n            photoPreview.style.display = 'block';\n          }\n          if (uploadStatus) {\n            uploadStatus.textContent = 'Mugshot received. The subject looks suspicious.';\n          }\n        };\n        reader.readAsDataURL(file);\n      });\n    }\n\n    /* PAGE MODE ONLY: engine owns steps, options, validation */\n    if (!embedded) {\n      const steps = root.querySelectorAll('[data-step]');\n      const progressFill = root.querySelector('[data-progress-fill]');\n      const progressText = root.querySelector('[data-progress-text]');\n      const progress = root.querySelector('[data-progress]');\n\n      const showStep = (stepNumber) => {\n        steps.forEach((step) => {\n          step.hidden = Number(step.dataset.step) !== Number(stepNumber);\n        });\n        if (progressFill) progressFill.style.width = ((Number(stepNumber) / 3) * 100) + '%';\n        if (progressText) progressText.textContent = '0' + stepNumber + ' / 03';\n        if (progress) progress.setAttribute('aria-valuenow', String(stepNumber));\n        root.querySelectorAll('[data-error]').forEach((error) => {\n          error.classList.remove('is-visible');\n        });\n        const formTop = root.querySelector('.hfc-census__form-wrap');\n        if (formTop && window.scrollY > formTop.offsetTop) {\n          window.scrollTo({\n            top: formTop.getBoundingClientRect().top + window.scrollY - 110,\n            behavior: 'smooth'\n          });\n        }\n      };\n\n      root.querySelectorAll('[data-group]').forEach((group) => {\n        group.querySelectorAll('.hfc-census__option').forEach((option) => {\n          option.addEventListener('click', () => {\n            group.querySelectorAll('.hfc-census__option').forEach((item) => {\n              item.setAttribute('aria-pressed', 'false');\n            });\n            option.setAttribute('aria-pressed', 'true');\n          });\n        });\n      });\n\n      const validateStep = (stepNumber) => {\n        const error = root.querySelector('[data-error=\"' + stepNumber + '\"]');\n        let valid = true;\n        if (Number(stepNumber) === 1) {\n          const dogName = root.querySelector('[data-dog-name]')?.value.trim();\n          valid = Boolean(dogName && selectedValue('age') && selectedValue('weight') && selectedValue('household'));\n        }\n        if (Number(stepNumber) === 2) {\n          const offense = root.querySelector('[data-offense]')?.value.trim();\n          valid = Boolean(offense && selectedValue('food') && selectedValue('bribe') && selectedValue('recipe'));\n        }\n        if (Number(stepNumber) === 3) {\n          const email = root.querySelector('[data-email]');\n          valid = Boolean(email && email.validity.valid && email.value.trim());\n        }\n        if (error) error.classList.toggle('is-visible', !valid);\n        return valid;\n      };\n\n      root.querySelectorAll('[data-next]').forEach((button) => {\n        button.addEventListener('click', () => {\n          if (validateStep(Number(button.dataset.next) - 1)) showStep(button.dataset.next);\n        });\n      });\n      root.querySelectorAll('[data-back]').forEach((button) => {\n        button.addEventListener('click', () => showStep(button.dataset.back));\n      });\n    }\n\n    /* ---------- sheet ---------- */\n\n    const createRecord = async () => {\n      const canvas = document.createElement('canvas');\n      canvas.width = 1200;\n      canvas.height = 1500;\n      const c = canvas.getContext('2d');\n      const clean = (v) => String(v || '').trim();\n      const dogName = clean(root.querySelector('[data-dog-name]')?.value);\n      const aliases = clean(root.querySelector('[data-alias]')?.value) || 'No known aliases';\n      const offense = clean(root.querySelector('[data-offense]')?.value);\n      const weight = selectedValue('weight');\n      const recipe = selectedValue('recipe');\n      const bribe = selectedValue('bribe');\n      const food = selectedValue('food');\n      const registryNumber = String(Date.now()).slice(-8);\n\n      c.fillStyle = '#F7F3EA';\n      c.fillRect(0, 0, 1200, 1500);\n\n      c.fillStyle = '#D9F24F';\n      c.fillRect(60, 60, 1080, 175);\n      c.fillStyle = '#111111';\n      c.font = '700 28px monospace';\n      c.fillText('HUMANFOOD \u00B7 FORM 82-B', 92, 115);\n      c.font = '900 76px Arial';\n      c.fillText('(C)RAP SHEET', 88, 195);\n      c.font = '700 22px monospace';\n      c.textAlign = 'right';\n      c.fillText('REGISTRY NO. ' + registryNumber, 1108, 113);\n      c.textAlign = 'left';\n\n      c.fillStyle = '#FFFFFF';\n      c.fillRect(90, 265, 1020, 430);\n\n      if (photoData) {\n        await new Promise((resolve) => {\n          const image = new Image();\n          image.onload = () => {\n            drawCoverImage(c, image, 90, 265, 1020, 430);\n            resolve();\n          };\n          image.onerror = resolve;\n          image.src = photoData;\n        });\n      } else {\n        c.fillStyle = '#ECE7DC';\n        c.fillRect(90, 265, 1020, 430);\n        c.fillStyle = '#111111';\n        c.font = '700 32px Arial';\n        c.textAlign = 'center';\n        c.fillText('MUGSHOT NOT PROVIDED', 600, 495);\n        c.textAlign = 'left';\n      }\n\n      c.strokeStyle = '#111111';\n      c.lineWidth = 5;\n      c.strokeRect(90, 265, 1020, 430);\n\n      c.fillStyle = '#D9F24F';\n      c.fillRect(90, 265, 190, 42);\n      c.lineWidth = 3;\n      c.strokeRect(90, 265, 190, 42);\n      c.fillStyle = '#111111';\n      c.font = '700 18px monospace';\n      c.fillText('MUGSHOT', 118, 292);\n\n      c.font = '700 22px monospace';\n      c.fillText('SUBJECT', 90, 742);\n      c.font = '900 60px Arial';\n      wrapText(c, dogName.toUpperCase(), 90, 800, 1020, 58, 2);\n\n      c.font = '700 20px monospace';\n      c.fillText('KNOWN ALIASES', 90, 912);\n      c.font = '400 30px Arial';\n      wrapText(c, '\u201C' + aliases + '\u201D', 90, 948, 1020, 34, 1);\n\n      c.fillStyle = '#111111';\n      c.fillRect(90, 978, 1020, 44);\n      c.fillStyle = '#FFFFFF';\n      c.font = '700 22px monospace';\n      c.textAlign = 'center';\n      c.fillText('C H A R G E', 600, 1008);\n      c.textAlign = 'left';\n\n      c.strokeStyle = '#111111';\n      c.lineWidth = 3;\n      c.strokeRect(90, 1022, 1020, 122);\n      c.fillStyle = '#111111';\n      c.font = '400 30px Arial';\n      wrapText(c, offense, 106, 1062, 988, 36, 3);\n\n      c.strokeRect(90, 1156, 1020, 98);\n      c.font = '700 18px monospace';\n      c.fillText('NOTES:', 106, 1184);\n      c.font = '400 25px Arial';\n      c.fillText(noteFor(BRIBE_NOTES, bribe, 'Motive: dinner.'), 106, 1214);\n      c.fillText(noteFor(FOOD_NOTES, food, 'Diet under review.'), 106, 1244);\n\n      c.strokeRect(90, 1266, 1020, 60);\n      c.font = '700 18px monospace';\n      c.fillText('PRINTS:', 106, 1302);\n      for (let i = 0; i < 5; i += 1) {\n        drawPaw(c, 330 + i * 130, 1294, 22, i % 2 === 0 ? 0.14 : -0.14);\n      }\n\n      c.save();\n      c.strokeStyle = '#FF5A00';\n      c.lineWidth = 3;\n      c.setLineDash([10, 7]);\n      c.strokeRect(90, 1338, 1020, 60);\n      c.restore();\n      c.fillStyle = '#FF5A00';\n      c.font = '700 20px monospace';\n      c.fillText('REGISTERED: THE CENSUS OF BAD DOGS, 2026', 106, 1364);\n      c.fillStyle = '#555555';\n      c.font = '400 16px monospace';\n      c.fillText('@feedhumanfood  \u00B7  humanfood.co/census', 106, 1388);\n      c.fillStyle = '#111111';\n      c.font = '700 20px monospace';\n      c.textAlign = 'right';\n      c.fillText('No. PROCESSING', 1094, 1372);\n      c.textAlign = 'left';\n\n      c.fillStyle = '#D9F24F';\n      c.fillRect(60, 1408, 1080, 50);\n      c.fillStyle = '#111111';\n      c.font = '700 20px monospace';\n      c.fillText(weight.toUpperCase(), 90, 1440);\n      c.textAlign = 'right';\n      c.fillText('ORDER: ' + recipe.toUpperCase(), 1110, 1440);\n      c.textAlign = 'left';\n\n      c.strokeStyle = '#111111';\n      c.lineWidth = 12;\n      c.strokeRect(35, 35, 1130, 1430);\n\n      return canvas.toDataURL('image/png');\n    };\n\n    /* ---------- payloads ---------- */\n\n    const humanNameParts = () => {\n      const raw = String(root.querySelector('[data-human-name]')?.value || '').trim();\n      if (!raw) return { raw: '', first: '', last: '' };\n      const parts = raw.split(/\\s+/);\n      return {\n        raw: raw,\n        first: parts[0],\n        last: parts.slice(1).join(' ')\n      };\n    };\n\n    const buildProperties = (photoUrl, sheetUrl, dogIndex) => {\n      const suffix = dogIndex >= 2 ? '_' + dogIndex : '';\n      const clean = (v) => String(v || '').trim();\n      const props = {};\n      props['dog_name' + suffix] = clean(root.querySelector('[data-dog-name]')?.value);\n      props['dog_aliases' + suffix] = clean(root.querySelector('[data-alias]')?.value);\n      props['dog_offense' + suffix] = clean(root.querySelector('[data-offense]')?.value);\n      props['dog_age' + suffix] = codeAge(selectedValue('age'));\n      props['dog_weight' + suffix] = codeWeight(selectedValue('weight'));\n      props['current_food' + suffix] = codeFood(selectedValue('food'));\n      props['picky_tier' + suffix] = codeBribe(selectedValue('bribe'));\n      props['protein_pref' + suffix] = codeRecipe(selectedValue('recipe'));\n      if (photoUrl) props['photo_url' + suffix] = photoUrl;\n      if (sheetUrl) props['sheet_url' + suffix] = sheetUrl;\n      const consentBox = root.querySelector('[data-photo-consent]');\n      props['photo_consent' + suffix] = consentBox && consentBox.checked ? 'yes' : 'no';\n      props.dog_count = codeCount(selectedValue('household'));\n      props.census_source = censusSource;\n      UTM_KEYS.forEach((key) => { if (utm[key]) props[key] = utm[key]; });\n      return props;\n    };\n\n    const profileAttrs = (email, phoneE164, properties) => {\n      const attrs = { email: email, properties: properties };\n      const name = humanNameParts();\n      if (name.first) attrs.first_name = name.first;\n      if (name.last) attrs.last_name = name.last;\n      if (phoneE164) attrs.phone_number = phoneE164;\n      return attrs;\n    };\n\n    const submitToKlaviyo = async (email, phoneE164, properties) => {\n      const payload = {\n        data: {\n          type: 'subscription',\n          attributes: {\n            custom_source: 'Census of Bad Dogs',\n            profile: { data: { type: 'profile', attributes: profileAttrs(email, phoneE164, properties) } }\n          },\n          relationships: { list: { data: { type: 'list', id: CONFIG.listId } } }\n        }\n      };\n      let response;\n      try {\n        response = await fetch(\n          'https://a.klaviyo.com/client/subscriptions/?company_id=' + CONFIG.companyId,\n          {\n            method: 'POST',\n            headers: {\n              'Content-Type': 'application/vnd.api+json',\n              'revision': CONFIG.revision\n            },\n            body: JSON.stringify(payload)\n          }\n        );\n      } catch (e) {\n        return 'network';\n      }\n      return response.status === 202;\n    };\n\n    const updateKlaviyoProfile = async (email, phoneE164, properties) => {\n      const payload = {\n        data: {\n          type: 'profile',\n          attributes: profileAttrs(email, phoneE164, properties)\n        }\n      };\n      let response;\n      try {\n        response = await fetch(\n          'https://a.klaviyo.com/client/profiles/?company_id=' + CONFIG.companyId,\n          {\n            method: 'POST',\n            headers: {\n              'Content-Type': 'application/vnd.api+json',\n              'revision': CONFIG.revision\n            },\n            body: JSON.stringify(payload)\n          }\n        );\n      } catch (e) {\n        return 'network';\n      }\n      return response.status === 202;\n    };\n\n    const fireWebhook = (email, phoneRaw, properties, photoUrl, sheetUrl, dogIndex) => {\n      const suffix = dogIndex >= 2 ? '_' + dogIndex : '';\n      const name = humanNameParts();\n      const row = {\n        ts: new Date().toISOString(),\n        email: email,\n        phone: phoneRaw,\n        human_name: name.raw,\n        dog_name: properties['dog_name' + suffix] || '',\n        dog_aliases: properties['dog_aliases' + suffix] || '',\n        dog_offense: properties['dog_offense' + suffix] || '',\n        dog_age: properties['dog_age' + suffix] || '',\n        dog_weight: properties['dog_weight' + suffix] || '',\n        dog_count: properties.dog_count || '',\n        current_food: properties['current_food' + suffix] || '',\n        picky_tier: properties['picky_tier' + suffix] || '',\n        protein_pref: properties['protein_pref' + suffix] || '',\n        photo_url: photoUrl || '',\n        sheet_url: sheetUrl || '',\n        photo_consent: properties['photo_consent' + suffix] || 'no',\n        census_source: censusSource,\n        utm_source: utm.utm_source || '',\n        utm_medium: utm.utm_medium || '',\n        utm_campaign: utm.utm_campaign || '',\n        utm_content: utm.utm_content || '',\n        utm_term: utm.utm_term || '',\n        fbclid: utm.fbclid || '',\n        dog_index: dogIndex\n      };\n      try {\n        fetch(CONFIG.webhook, {\n          method: 'POST',\n          mode: 'no-cors',\n          headers: { 'Content-Type': 'text/plain' },\n          body: JSON.stringify(row)\n        });\n      } catch (e) { /* fire and forget */ }\n    };\n\n    /* ---------- success ---------- */\n\n    const SUCCESS_HTML =\n      '<div class=\"hfc-census__done\" data-done>' +\n      '<span class=\"hfc-census__stamp\">Registration received</span>' +\n      '<h2>The record is official.</h2>' +\n      '<p class=\"hfc-census__done-copy\">Save it, post it, or tape it to the refrigerator they steal from. Official numbered papers will follow by email. Registered dogs eat first.</p>' +\n      '<img class=\"hfc-census__record\" data-record-image alt=\"Official Census of Bad Dogs record\">' +\n      '<div class=\"hfc-census__done-actions\">' +\n      '<button class=\"hfc-census__button\" type=\"button\" data-save-record>Save the record</button>' +\n      '<button class=\"hfc-census__button hfc-census__button--secondary\" type=\"button\" data-new-record>File the accomplice</button>' +\n      '</div>' +\n      '<p class=\"hfc-census__save-hint\">On mobile, you can also press and hold the image to save it. Tag @feedhumanfood. The Bureau reshares its favorites.</p>' +\n      '</div>';\n\n    const showSuccess = () => {\n      const banner = root.querySelector('[data-gate-banner]');\n      if (banner) banner.style.display = 'none';\n      const intake = root.querySelector('[data-intake]');\n      let done = root.querySelector('[data-done]');\n      if (intake && done) {\n        intake.hidden = true;\n        done.hidden = false;\n      } else {\n        if (!formCard) return;\n        formCard.innerHTML = SUCCESS_HTML;\n        done = root.querySelector('[data-done]');\n      }\n      const img = root.querySelector('[data-record-image]');\n      if (img && recordData) {\n        img.src = recordData;\n        img.style.display = 'block';\n      }\n      fireLeadOnce();\n      const wrap = root.querySelector('.hfc-census__form-wrap');\n      if (wrap) {\n        window.scrollTo({\n          top: wrap.getBoundingClientRect().top + window.scrollY - 110,\n          behavior: 'smooth'\n        });\n      }\n    };\n\n    const showSubmitError = (message) => {\n      const errorBox = root.querySelector('[data-error=\"3\"]');\n      if (errorBox) {\n        errorBox.textContent = message;\n        errorBox.classList.add('is-visible');\n      }\n    };\n\n    let submitting = false;\n\n    const doSubmit = async (button) => {\n      if (submitting) return;\n      const email = root.querySelector('[data-email]');\n      const emailValue = (email && email.value.trim()) || gateEmail;\n      const valid = Boolean(emailValue) &&\n        Boolean(!email || email.validity.valid || gateEmail);\n      const errorBox = root.querySelector('[data-error=\"3\"]');\n      if (errorBox) errorBox.classList.toggle('is-visible', !valid);\n      if (!valid) return;\n\n      submitting = true;\n      const originalLabel = button.textContent;\n      button.disabled = true;\n      button.textContent = 'Processing record\u2026';\n\n      const dogIndex = indexForEmail(emailValue);\n      const phoneField = root.querySelector('input[type=\"tel\"]');\n      const phoneRaw = phoneField ? phoneField.value.trim() : '';\n      const smsBox = root.querySelector('[data-sms-checkbox]');\n      const smsConsent = Boolean(smsBox && smsBox.checked);\n      const phoneE164 = smsConsent ? normalizePhone(phoneRaw) : '';\n\n      try {\n        recordData = await createRecord();\n        try { sessionStorage.setItem('hfcBadDogRecord', recordData); } catch (e) { /* ok */ }\n      } catch (error) {\n        recordData = '';\n      }\n\n      let sheetUrl = '';\n      let photoUrl = '';\n      try {\n        const uploads = await Promise.all([\n          photoUrlPromise,\n          recordData ? uploadToCloudinary(dataUrlToBlob(recordData)) : Promise.resolve('')\n        ]);\n        photoUrl = uploads[0] || '';\n        sheetUrl = uploads[1] || '';\n      } catch (e) { /* uploads are best-effort */ }\n\n      const properties = buildProperties(photoUrl, sheetUrl, dogIndex);\n\n      const res = (gateSubscribed || dogIndex >= 2)\n        ? await updateKlaviyoProfile(emailValue, phoneE164, properties)\n        : await submitToKlaviyo(emailValue, phoneE164, properties);\n\n      if (res === false) {\n        submitting = false;\n        button.disabled = false;\n        button.textContent = originalLabel;\n        showSubmitError('Something jammed at the Bureau. Check your connection and try again.');\n        return;\n      }\n\n      /* res === true or 'network': the sheet webhook rarely gets blocked,\n         so on network failure the registration still lands in the sheet\n         and the visitor still gets their record. */\n      fireWebhook(emailValue, phoneRaw, properties, photoUrl, sheetUrl, dogIndex);\n      commitIndexForEmail(emailValue, dogIndex);\n      submitting = false;\n      showSuccess();\n    };\n\n    const doSave = async () => {\n      const data = recordData || sessionStorage.getItem('hfcBadDogRecord') || '';\n      if (!data) return;\n      if (isMobile && navigator.share) {\n        try {\n          const file = new File([dataUrlToBlob(data)], 'humanfood-crap-sheet.png', { type: 'image/png' });\n          if (!navigator.canShare || navigator.canShare({ files: [file] })) {\n            await navigator.share({ files: [file], title: 'Official (C)RAP Sheet' });\n            return;\n          }\n        } catch (error) {\n          if (error && error.name === 'AbortError') return;\n        }\n      }\n      const link = document.createElement('a');\n      link.href = data;\n      link.download = 'humanfood-bad-dog-crap-sheet.png';\n      document.body.appendChild(link);\n      link.click();\n      link.remove();\n    };\n\n    const doNewRecord = () => {\n      try { sessionStorage.removeItem('hfcBadDogRecord'); } catch (e) { /* ok */ }\n      window.location.href = window.location.pathname + '#census';\n      window.location.reload();\n    };\n\n    /* Rotating inspiration: crimes and aliases cycle while the field is\n       empty, because people are boring until reminded of the truth. */\n    const startPlaceholderIdeas = () => {\n      const offense = root.querySelector('[data-offense]');\n      const alias = root.querySelector('[data-alias]');\n      let i = Math.floor(Math.random() * 100);\n      const tick = () => {\n        if (offense && !offense.value) {\n          offense.placeholder = CRIME_IDEAS[i % CRIME_IDEAS.length];\n        }\n        if (alias && !alias.value) {\n          alias.placeholder = ALIAS_IDEAS[i % ALIAS_IDEAS.length];\n        }\n        i += 1;\n      };\n      tick();\n      setInterval(tick, 3200);\n    };\n    startPlaceholderIdeas();\n\n    root.addEventListener(\n      'click',\n      (event) => {\n        const gateBtn = event.target.closest('[data-gate-submit]');\n        if (gateBtn) {\n          event.preventDefault();\n          event.stopPropagation();\n          doGate(gateBtn);\n          return;\n        }\n        const submitBtn = event.target.closest('[data-submit-registration]');\n        if (submitBtn) {\n          event.preventDefault();\n          event.stopPropagation();\n          doSubmit(submitBtn);\n          return;\n        }\n        const saveBtn = event.target.closest('[data-save-record]');\n        if (saveBtn) {\n          event.preventDefault();\n          event.stopPropagation();\n          doSave();\n          return;\n        }\n        const newBtn = event.target.closest('[data-new-record]');\n        if (newBtn) {\n          event.preventDefault();\n          event.stopPropagation();\n          doNewRecord();\n        }\n      },\n      true\n    );\n\n    initGate();\n  };\n\n  const init = () => {\n    const page = document.querySelector('#hfc-census');\n    if (page) setup(page);\n    document.querySelectorAll('.hfc-census--embedded').forEach(setup);\n  };\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
