{
  "version": 3,
  "sources": ["/cdn/shop/t/94/assets/florame-background-loading-v3.js?florame_v=20260519-loading-background-v50"],
  "sourcesContent": ["(function () {\r\n  if (window.__FLORAME_BACKGROUND_LOADING__) return;\r\n  window.__FLORAME_BACKGROUND_LOADING__ = true;\r\n\r\n  var PROPOSAL_KEY = 'florame_funnel_proposal_job_v1';\r\n  var RESULT_KEY = 'florame_generation_result_job_v1';\r\n  var ACTIVE_KIND_KEY = 'florame_generation_active_kind_v1';\r\n  var COOKIE_KEY = 'florame_bg_ai_job_v1';\r\n  var WINDOW_NAME_PREFIX = 'florame_bg_ai_job_v1:';\r\n  var URL_PARAM = 'florame_bg_job';\r\n  var API_BASE = (window.__florameThemeConfig && window.__florameThemeConfig.apiBase) || 'https://us-central1-flower-ai-2d7aa.cloudfunctions.net';\r\n  var APP_PATH = (window.__florameThemeConfig && window.__florameThemeConfig.appPath) || '/pages/florame-app';\r\n  var pollTimer = null;\r\n  var activePolls = {};\r\n  var expanded = false;\r\n  var placementBound = false;\r\n  var placementObserver = null;\r\n  var FLOAT_POSITION_KEY = 'florame_generation_float_anchor_y_v1';\r\n  var floatDragState = null;\r\n  var floatDragFrame = null;\r\n  var suppressFloatClick = false;\r\n\r\n  function minimalJob(job) {\r\n    var next = {\r\n      v: job && job.v || 1,\r\n      kind: job && job.kind || '',\r\n      title: job && job.title || '',\r\n      storageKey: job && job.storageKey || '',\r\n      returnUrl: job && job.returnUrl || '',\r\n      requestId: job && job.requestId || '',\r\n      createRequestId: job && job.createRequestId || '',\r\n      status: job && job.status || 'running',\r\n      phase: job && job.phase || '',\r\n      progress: Number(job && job.progress || 0),\r\n      startedAt: job && job.startedAt || Date.now(),\r\n      productStartedAt: job && job.productStartedAt || null,\r\n      updatedAt: Date.now(),\r\n      complete: !!(job && job.complete),\r\n      muted: !!(job && job.muted),\r\n      bouquetId: job && job.bouquetId || null,\r\n      imageUrl: job && job.imageUrl || null\r\n    };\r\n    if (job && Array.isArray(job.variants)) next.variants = job.variants;\r\n    if (job && job.productData) next.productData = job.productData;\r\n    return next;\r\n  }\r\n\r\n  function compactProductPayload(payload) {\r\n    if (!payload || typeof payload !== 'object') return null;\r\n    var next = Object.assign({}, payload);\r\n    if (payload.marketingContent) {\r\n      next.marketingContent = {\r\n        title: payload.marketingContent.title || '',\r\n        description: payload.marketingContent.description || '',\r\n        meaning: payload.marketingContent.meaning || '',\r\n        occasion: payload.marketingContent.occasion || ''\r\n      };\r\n    }\r\n    return next;\r\n  }\r\n\r\n  function cookieJobPayload(key, job) {\r\n    var next = minimalJob(Object.assign({}, job || {}, { storageKey: key }));\r\n    if (key === PROPOSAL_KEY) {\r\n      if (job && job.payload) next.payload = job.payload;\r\n      if (job && job.funnel) next.funnel = job.funnel;\r\n      if (job && Array.isArray(job.variants)) next.variants = job.variants;\r\n      if (job && job.response && Array.isArray(job.response.variants)) {\r\n        next.variants = job.response.variants;\r\n        next.response = { variants: job.response.variants };\r\n      }\r\n    }\r\n    if (key === RESULT_KEY) {\r\n      if (job && job.productData) next.productData = compactProductPayload(job.productData);\r\n    }\r\n    return next;\r\n  }\r\n\r\n  function urlJobPayload(key, job) {\r\n    var next = cookieJobPayload(key, job || {});\r\n    try {\r\n      if (JSON.stringify(next).length > 12000) {\r\n        next = minimalJob(Object.assign({}, job || {}, { storageKey: key }));\r\n      }\r\n    } catch (_) { }\r\n    return next;\r\n  }\r\n\r\n  function decodeUrlJob(value) {\r\n    if (!value) return null;\r\n    if (String(value).length > 12000) return null;\r\n    try {\r\n      return JSON.parse(value);\r\n    } catch (_) {\r\n      try {\r\n        return JSON.parse(decodeURIComponent(value));\r\n      } catch (e) {\r\n        return null;\r\n      }\r\n    }\r\n  }\r\n\r\n  function readCookieJob(key) {\r\n    try {\r\n      var raw = document.cookie.split('; ').find(function (part) {\r\n        return part.indexOf(COOKIE_KEY + '=') === 0;\r\n      });\r\n      if (!raw) return null;\r\n      var value = raw.split('=').slice(1).join('=');\r\n      if (!value) return null;\r\n      if (value.length > 12000) return null;\r\n      var job = JSON.parse(decodeURIComponent(value));\r\n      if (!job || typeof job !== 'object') return null;\r\n      if (job.storageKey && job.storageKey !== key) return null;\r\n      job.kind = job.kind || kindForKey(key);\r\n      job.returnUrl = safeAppReturnUrl(job.returnUrl, job.kind);\r\n      var updatedAt = Number(job.updatedAt || job.startedAt || 0);\r\n      if (updatedAt && Date.now() - updatedAt > 30 * 60 * 1000) {\r\n        clearCookieJob(key);\r\n        return null;\r\n      }\r\n      return job;\r\n    } catch (_) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function readWindowNameJob(key) {\r\n    try {\r\n      var raw = String(window.name || '');\r\n      if (raw.indexOf(WINDOW_NAME_PREFIX) !== 0) return null;\r\n      var encoded = raw.slice(WINDOW_NAME_PREFIX.length);\r\n      if (!encoded) return null;\r\n      if (encoded.length > 12000) return null;\r\n      var job = JSON.parse(decodeURIComponent(encoded));\r\n      if (!job || typeof job !== 'object') return null;\r\n      if (job.storageKey && job.storageKey !== key) return null;\r\n      job.kind = job.kind || kindForKey(key);\r\n      job.returnUrl = safeAppReturnUrl(job.returnUrl, job.kind);\r\n      var updatedAt = Number(job.updatedAt || job.startedAt || 0);\r\n      if (updatedAt && Date.now() - updatedAt > 30 * 60 * 1000) {\r\n        clearWindowNameJob(key);\r\n        return null;\r\n      }\r\n      return job;\r\n    } catch (_) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function writeCookieJob(key, job) {\r\n    try {\r\n      var payload = cookieJobPayload(key, job || {});\r\n      var encoded = encodeURIComponent(JSON.stringify(payload));\r\n      if (encoded.length > 3600) {\r\n        encoded = encodeURIComponent(JSON.stringify(minimalJob(Object.assign({}, job || {}, { storageKey: key }))));\r\n      }\r\n      document.cookie = COOKIE_KEY + '=' + encoded + '; path=/; max-age=1800; SameSite=Lax';\r\n    } catch (_) { }\r\n  }\r\n\r\n  function writeWindowNameJob(key, job) {\r\n    try {\r\n      var payload = cookieJobPayload(key, job || {});\r\n      var encoded = encodeURIComponent(JSON.stringify(payload));\r\n      if (encoded.length > 12000) {\r\n        encoded = encodeURIComponent(JSON.stringify(minimalJob(Object.assign({}, job || {}, { storageKey: key }))));\r\n      }\r\n      window.name = WINDOW_NAME_PREFIX + encoded;\r\n    } catch (_) { }\r\n  }\r\n\r\n  function clearCookieJob(key) {\r\n    try {\r\n      var raw = document.cookie.split('; ').find(function (part) {\r\n        return part.indexOf(COOKIE_KEY + '=') === 0;\r\n      });\r\n      if (raw && key) {\r\n        var parsed = JSON.parse(decodeURIComponent(raw.split('=').slice(1).join('=')));\r\n        if (parsed && parsed.storageKey && parsed.storageKey !== key) return;\r\n      }\r\n    } catch (_) { }\r\n    try { document.cookie = COOKIE_KEY + '=; path=/; max-age=0; SameSite=Lax'; } catch (_) { }\r\n  }\r\n\r\n  function clearWindowNameJob(key) {\r\n    try {\r\n      var raw = String(window.name || '');\r\n      if (raw.indexOf(WINDOW_NAME_PREFIX) !== 0) return;\r\n      if (key) {\r\n        var parsed = JSON.parse(decodeURIComponent(raw.slice(WINDOW_NAME_PREFIX.length)));\r\n        if (parsed && parsed.storageKey && parsed.storageKey !== key) return;\r\n      }\r\n      window.name = '';\r\n    } catch (_) { }\r\n  }\r\n\r\n  function readJob(key) {\r\n    try {\r\n      var raw = localStorage.getItem(key);\r\n      if (!raw) {\r\n        var fallbackJob = readCookieJob(key) || readWindowNameJob(key);\r\n        if (fallbackJob) {\r\n          try { localStorage.setItem(key, JSON.stringify(fallbackJob)); } catch (_) { }\r\n        }\r\n        return fallbackJob;\r\n      }\r\n      var job = JSON.parse(raw);\r\n      if (!job || typeof job !== 'object') return null;\r\n      job.kind = job.kind || kindForKey(key);\r\n      var safeReturnUrl = safeAppReturnUrl(job.returnUrl, job.kind);\r\n      if (job.returnUrl !== safeReturnUrl) {\r\n        job.returnUrl = safeReturnUrl;\r\n        try { localStorage.setItem(key, JSON.stringify(job)); } catch (_) { }\r\n      } else {\r\n        job.returnUrl = safeReturnUrl;\r\n      }\r\n      var updatedAt = Number(job.updatedAt || job.startedAt || 0);\r\n      if (updatedAt && Date.now() - updatedAt > 30 * 60 * 1000) {\r\n        localStorage.removeItem(key);\r\n        clearCookieJob(key);\r\n        return null;\r\n      }\r\n      return job;\r\n    } catch (_) {\r\n      return readCookieJob(key) || readWindowNameJob(key);\r\n    }\r\n  }\r\n\r\n  function kindForKey(key) {\r\n    return key === RESULT_KEY ? 'result' : 'proposals';\r\n  }\r\n\r\n  function keyForKind(kind) {\r\n    return kind === 'result' ? RESULT_KEY : PROPOSAL_KEY;\r\n  }\r\n\r\n  function fallbackReturnUrlForKind(kind) {\r\n    return kind === 'result' ? APP_PATH + '?mode=create' : APP_PATH + '?mode=funnel';\r\n  }\r\n\r\n  function safeAppReturnUrl(raw, kind) {\r\n    var fallback = fallbackReturnUrlForKind(kind);\r\n    try {\r\n      var target = new URL(raw || fallback, window.location.origin);\r\n      var app = new URL(APP_PATH, window.location.origin);\r\n      var targetPath = target.pathname.replace(/\\/+$/, '');\r\n      var appPath = app.pathname.replace(/\\/+$/, '');\r\n      if (target.origin !== window.location.origin || targetPath !== appPath) return fallback;\r\n      return target.pathname + target.search + target.hash;\r\n    } catch (_) {\r\n      return fallback;\r\n    }\r\n  }\r\n\r\n  function readActiveKind() {\r\n    try {\r\n      var kind = localStorage.getItem(ACTIVE_KIND_KEY);\r\n      return kind === 'result' || kind === 'proposals' ? kind : '';\r\n    } catch (_) {\r\n      return '';\r\n    }\r\n  }\r\n\r\n  function writeActiveKind(kind) {\r\n    try {\r\n      if (kind === 'result' || kind === 'proposals') localStorage.setItem(ACTIVE_KIND_KEY, kind);\r\n      else localStorage.removeItem(ACTIVE_KIND_KEY);\r\n    } catch (_) { }\r\n  }\r\n\r\n  function jobWithKey(key, job) {\r\n    if (!job || typeof job !== 'object') return null;\r\n    return Object.assign({ storageKey: key, kind: job.kind || kindForKey(key) }, job);\r\n  }\r\n\r\n  function isUsableJob(job) {\r\n    if (!job || typeof job !== 'object') return false;\r\n    var status = String(job.status || '').toLowerCase();\r\n    if (status === 'cancelled' || status === 'canceled') return false;\r\n    return !!(job.requestId || job.createRequestId || job.bouquetId || job.returnUrl || job.complete || Array.isArray(job.variants));\r\n  }\r\n\r\n  function isNonErrorJob(job) {\r\n    return isUsableJob(job) && String(job.status || '').toLowerCase() !== 'error';\r\n  }\r\n\r\n  function isRunningJob(job) {\r\n    if (!isNonErrorJob(job)) return false;\r\n    var status = String(job.status || '').toLowerCase();\r\n    return status !== 'done' && !job.complete;\r\n  }\r\n\r\n  function jobUpdatedAt(job) {\r\n    return Number(job && (job.updatedAt || job.startedAt || job.productStartedAt) || 0);\r\n  }\r\n\r\n  function sameJobIdentity(a, b) {\r\n    if (!a || !b) return false;\r\n    var idsA = [a.requestId, a.createRequestId, a.bouquetId].filter(Boolean).map(String);\r\n    var idsB = [b.requestId, b.createRequestId, b.bouquetId].filter(Boolean).map(String);\r\n    return idsA.length > 0 && idsA.some(function (id) { return idsB.indexOf(id) !== -1; });\r\n  }\r\n\r\n  function chooseBackgroundJob(includeErrors) {\r\n    var proposal = jobWithKey(PROPOSAL_KEY, readJob(PROPOSAL_KEY));\r\n    var result = jobWithKey(RESULT_KEY, readJob(RESULT_KEY));\r\n    var activeKind = readActiveKind();\r\n    var active = activeKind === 'result' ? result : (activeKind === 'proposals' ? proposal : null);\r\n\r\n    if (isNonErrorJob(active)) return active;\r\n    if (includeErrors && isUsableJob(active) && String(active.status || '').toLowerCase() === 'error') return active;\r\n    if (isRunningJob(result)) return result;\r\n    if (isRunningJob(proposal)) return proposal;\r\n    if (isNonErrorJob(result) && isNonErrorJob(proposal)) return jobUpdatedAt(result) >= jobUpdatedAt(proposal) ? result : proposal;\r\n    if (isNonErrorJob(result)) return result;\r\n    if (isNonErrorJob(proposal)) return proposal;\r\n    if (!includeErrors) return null;\r\n    if (isUsableJob(active)) return active;\r\n    if (isUsableJob(result) && isUsableJob(proposal)) return jobUpdatedAt(result) >= jobUpdatedAt(proposal) ? result : proposal;\r\n    return isUsableJob(result) ? result : (isUsableJob(proposal) ? proposal : null);\r\n  }\r\n\r\n  function promoteJob(key, job, previous, patch) {\r\n    if (!isNonErrorJob(job)) return;\r\n    if (key === RESULT_KEY) {\r\n      if (readActiveKind() === 'proposals' && sameJobIdentity(previous, job) && !(patch && patch.forceActive)) return;\r\n      writeActiveKind('result');\r\n      return;\r\n    }\r\n    if (!isRunningJob(readJob(RESULT_KEY))) writeActiveKind('proposals');\r\n  }\r\n\r\n  function secondaryJobFor(active) {\r\n    if (!active) return null;\r\n    var otherKey = active.storageKey === RESULT_KEY || active.kind === 'result' ? PROPOSAL_KEY : RESULT_KEY;\r\n    var other = jobWithKey(otherKey, readJob(otherKey));\r\n    return isNonErrorJob(other) ? other : null;\r\n  }\r\n\r\n  function isProgressResetForNewJob(current, patch) {\r\n    if (!current || !patch) return true;\r\n    if (patch.resetProgress === true) return true;\r\n    if (patch.requestId && current.requestId && String(patch.requestId) !== String(current.requestId)) return true;\r\n    if (!current.requestId && patch.requestId && current.createRequestId && String(patch.requestId) !== String(current.createRequestId)) return true;\r\n    if (!current.requestId && !patch.requestId && patch.createRequestId && current.createRequestId && String(patch.createRequestId) !== String(current.createRequestId)) return true;\r\n    if (patch.bouquetId && current.bouquetId && String(patch.bouquetId) !== String(current.bouquetId)) return true;\r\n    return false;\r\n  }\r\n\r\n  function writeJob(key, patch) {\r\n    try {\r\n      var current = readJob(key) || {};\r\n      var next = Object.assign({}, current, patch || {}, { updatedAt: Date.now() });\r\n      var nextStatus = String(next.status || '').toLowerCase();\r\n      if (nextStatus && nextStatus !== 'done' && !(patch && patch.complete === true)) {\r\n        next.complete = false;\r\n      }\r\n      if (patch && Object.prototype.hasOwnProperty.call(patch, 'progress') && nextStatus !== 'done' && !next.complete && !isProgressResetForNewJob(current, patch)) {\r\n        var currentProgress = Number(current.progress || 0);\r\n        var nextProgress = Number(next.progress || 0);\r\n        if (Number.isFinite(currentProgress) && Number.isFinite(nextProgress) && nextProgress < currentProgress) {\r\n          next.progress = currentProgress;\r\n        }\r\n      }\r\n      next.kind = next.kind || kindForKey(key);\r\n      next.returnUrl = safeAppReturnUrl(next.returnUrl, next.kind);\r\n      try { localStorage.setItem(key, JSON.stringify(next)); } catch (_) { }\r\n      writeCookieJob(key, next);\r\n      writeWindowNameJob(key, next);\r\n      promoteJob(key, next, current, patch || {});\r\n      window.dispatchEvent(new CustomEvent('florame:background-loading-change', { detail: next }));\r\n      render();\r\n      return next;\r\n    } catch (_) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function clearJob(key) {\r\n    try {\r\n      localStorage.removeItem(key);\r\n      clearCookieJob(key);\r\n      clearWindowNameJob(key);\r\n      if (readActiveKind() === kindForKey(key)) {\r\n        var fallback = chooseBackgroundJob(false);\r\n        writeActiveKind(fallback ? fallback.kind : '');\r\n      }\r\n      window.dispatchEvent(new CustomEvent('florame:background-loading-clear', { detail: { key: key } }));\r\n      render();\r\n    } catch (_) { }\r\n  }\r\n\r\n  function activeJob() {\r\n    return chooseBackgroundJob(true);\r\n  }\r\n\r\n  function hydrateJobFromUrl() {\r\n    try {\r\n      var url = new URL(window.location.href);\r\n      var raw = url.searchParams.get(URL_PARAM);\r\n      if (!raw) return null;\r\n      var job = decodeUrlJob(raw);\r\n      if (!job || typeof job !== 'object') return null;\r\n      var key = job.storageKey || (job.kind === 'result' ? RESULT_KEY : PROPOSAL_KEY);\r\n      if (key !== PROPOSAL_KEY && key !== RESULT_KEY) return null;\r\n      try {\r\n        document.documentElement.dataset.awiBackgroundFocusKey = key;\r\n        document.documentElement.dataset.awiBackgroundFocusKind = job.kind || '';\r\n        window.__florameBackgroundFocusJob = { key: key, kind: job.kind || '', ts: Date.now() };\r\n      } catch (_) { }\r\n      writeJob(key, Object.assign({}, job, {\r\n        storageKey: key,\r\n        updatedAt: Date.now(),\r\n        returnUrl: safeAppReturnUrl(job.returnUrl, job.kind || kindForKey(key))\r\n      }));\r\n      url.searchParams.delete(URL_PARAM);\r\n      history.replaceState(history.state, '', url.toString());\r\n      return job;\r\n    } catch (_) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function attachJobToInternalLink(anchor) {\r\n    try {\r\n      if (!anchor) return;\r\n      var job = activeJob();\r\n      if (!job || job.status === 'error') return;\r\n      var target = (anchor.getAttribute('target') || '').toLowerCase();\r\n      if (target && target !== '_self') return;\r\n      var rawHref = anchor.getAttribute('href') || '';\r\n      if (!rawHref || rawHref === '#' || rawHref.indexOf('javascript:') === 0 || rawHref.indexOf('tel:') === 0 || rawHref.indexOf('mailto:') === 0) return;\r\n      var url = new URL(anchor.href, window.location.href);\r\n      if (url.origin !== window.location.origin) return;\r\n      // I link normali devono restare link normali: solo la bubble aggiunge il payload\r\n      // quando l'utente chiede esplicitamente di tornare al caricamento.\r\n    } catch (_) { }\r\n  }\r\n\r\n  function ensureStyle() {\r\n    if (document.getElementById('florameBackgroundLoadingStyle')) return;\r\n    var style = document.createElement('style');\r\n    style.id = 'florameBackgroundLoadingStyle';\r\n    style.textContent = [\r\n      '.awi-generation-float{--awi-generation-progress:0%;--awi-float-bottom-visible:calc(104px + env(safe-area-inset-bottom,0px));--awi-float-bottom-hidden:calc(22px + env(safe-area-inset-bottom,0px));position:fixed;right:clamp(14px,2.2vw,28px);bottom:var(--awi-float-bottom-visible);z-index:2147482500;display:flex;align-items:center;gap:10px;width:66px;min-height:66px;padding:9px;border:1px solid rgba(255,77,117,.20);border-radius:999px;background:linear-gradient(135deg,rgba(255,255,255,.97),rgba(255,244,248,.98));color:#1f2937;box-shadow:0 18px 46px rgba(17,24,39,.18),0 10px 28px rgba(255,77,117,.16);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);cursor:pointer;opacity:1;visibility:visible;transform:translateY(0) scale(1);transition:opacity .28s ease,visibility .28s ease,transform .28s cubic-bezier(.22,1,.36,1),width .34s cubic-bezier(.22,1,.36,1),border-radius .34s cubic-bezier(.22,1,.36,1),padding .34s cubic-bezier(.22,1,.36,1),bottom .34s cubic-bezier(.22,1,.36,1),right .34s cubic-bezier(.22,1,.36,1),top .34s cubic-bezier(.22,1,.36,1);font-family:inherit;overflow:visible;touch-action:none;user-select:none;-webkit-user-select:none;will-change:transform,top,right}',\r\n      '.awi-generation-float[hidden]{display:none!important}.awi-generation-float.is-active{opacity:1!important;visibility:visible!important;transform:translateY(0) scale(1)!important}.awi-generation-float:hover{transform:translateY(-2px) scale(1.01)}.awi-generation-float.is-positioned{bottom:auto!important}.awi-generation-float.is-dragging{cursor:grabbing;transition:opacity .18s ease,visibility .18s ease,box-shadow .18s ease!important;box-shadow:0 26px 72px rgba(17,24,39,.24),0 14px 38px rgba(255,77,117,.22)}.awi-generation-float.is-docked .awi-generation-float-ring{animation:awiFloatDockPulse .42s cubic-bezier(.22,1,.36,1) 1}',\r\n      '.awi-generation-float.is-nav-hidden{bottom:var(--awi-float-bottom-hidden)}.awi-generation-float.has-chat-offset{right:clamp(96px,7vw,122px)}',\r\n      '.awi-generation-float.is-expanded{width:min(460px,calc(100vw - 28px));min-height:76px;padding:10px 12px 10px 10px;border-radius:24px}.awi-generation-float:not(.is-expanded){justify-content:center;gap:0}',\r\n      '.awi-generation-float.has-secondary.is-expanded{margin-top:56px}.awi-generation-float-secondary{position:absolute;right:10px;left:52px;bottom:calc(100% - 10px);min-height:44px;border:1px solid rgba(255,77,117,.14);border-radius:18px 18px 10px 10px;background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(255,241,246,.98));box-shadow:0 14px 34px rgba(17,24,39,.14);color:#c2335c;display:none;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px 14px 14px;font:inherit;font-size:13px;line-height:1.1;font-weight:900;cursor:pointer;transform:translateY(12px) scale(.985);opacity:0;transition:opacity .22s ease,transform .26s cubic-bezier(.22,1,.36,1);z-index:-1}.awi-generation-float.has-secondary.is-expanded .awi-generation-float-secondary{display:flex;opacity:1;transform:translateY(0) scale(1)}.awi-generation-float-secondary span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.awi-generation-float-secondary svg{width:17px;height:17px;flex:0 0 auto;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}',\r\n      '.awi-generation-float-ring{position:relative;isolation:isolate;overflow:visible;flex:0 0 auto;width:46px;height:46px;border-radius:50%;padding:3px;background:conic-gradient(#ff4d75 var(--awi-generation-progress),rgba(255,77,117,.13) 0);box-shadow:inset 0 0 0 1px rgba(255,255,255,.85),0 8px 18px rgba(255,77,117,.18)}',\r\n      '.awi-generation-float-ring:before{content:\"\";position:absolute;z-index:0;inset:3px;border-radius:50%;background:radial-gradient(circle at 32% 24%,#fff 0,#fff7fa 48%,#ffe8f0 100%);box-shadow:0 0 0 1px rgba(255,77,117,.08);pointer-events:none}.awi-generation-float-icon{position:relative;z-index:1;width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;background:transparent;color:#ff4d75}.awi-generation-float-icon svg,.awi-generation-float-arrow svg,.awi-generation-float-cancel svg,.awi-generation-float-collapse svg{width:19px;height:19px;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}',\r\n      '.awi-generation-float-percent{position:absolute;z-index:3;left:50%;right:auto;bottom:-6px;transform:translateX(-50%);min-width:34px;padding:4px 6px;border-radius:999px;background:#111827;color:#fff;font-size:11px;line-height:1;font-weight:900;font-variant-numeric:tabular-nums;text-align:center;box-shadow:0 7px 16px rgba(17,24,39,.24);pointer-events:none}',\r\n      '.awi-generation-float-copy{min-width:0;flex:1 1 auto;display:none;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;opacity:0;transform:translateX(8px);pointer-events:none;transition:opacity .22s ease,transform .22s ease}.awi-generation-float.is-expanded .awi-generation-float-copy{display:flex;opacity:1;transform:translateX(0);pointer-events:auto}',\r\n      '.awi-generation-float-title{max-width:100%;font-size:16px;line-height:1.08;font-weight:880;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.awi-generation-float-sub{max-width:100%;font-size:14px;line-height:1.12;font-weight:780;color:#c2335c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}',\r\n      '.awi-generation-float-arrow,.awi-generation-float-cancel,.awi-generation-float-collapse{flex:0 0 auto;width:36px;height:36px;border-radius:999px;display:none;align-items:center;justify-content:center;border:0;color:#ff4d75;background:rgba(255,77,117,.10);opacity:.94;cursor:pointer}.awi-generation-float.is-expanded:not(.is-complete) .awi-generation-float-cancel,.awi-generation-float.is-expanded .awi-generation-float-collapse,.awi-generation-float.is-expanded .awi-generation-float-arrow{display:flex}.awi-generation-float-cancel{order:-1;background:rgba(17,24,39,.08);color:#374151}.awi-generation-float-collapse{margin-left:0;background:rgba(17,24,39,.07);color:#6b7280}.awi-generation-float-arrow{margin-left:auto}.awi-generation-float.is-complete .awi-generation-float-cancel{display:none}',\r\n      '.awi-generation-float.is-complete{border-color:rgba(21,194,107,.22);background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(240,253,244,.98));box-shadow:0 22px 56px rgba(17,24,39,.20),0 12px 34px rgba(21,194,107,.16)}.awi-generation-float.is-complete .awi-generation-float-ring{background:conic-gradient(#15c26b 100%,rgba(21,194,107,.16) 0)}.awi-generation-float.is-complete .awi-generation-float-icon,.awi-generation-float.is-complete .awi-generation-float-sub,.awi-generation-float.is-complete .awi-generation-float-arrow{color:#0f7d49}.awi-generation-float.is-complete .awi-generation-float-arrow{background:rgba(21,194,107,.12)}',\r\n      '.awi-generation-float.is-error{border-color:rgba(239,68,68,.24);background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(254,242,242,.98));box-shadow:0 22px 56px rgba(17,24,39,.20),0 12px 34px rgba(239,68,68,.14)}.awi-generation-float.is-error .awi-generation-float-ring{background:conic-gradient(#ef4444 var(--awi-generation-progress),rgba(239,68,68,.14) 0)}.awi-generation-float.is-error .awi-generation-float-icon,.awi-generation-float.is-error .awi-generation-float-sub,.awi-generation-float.is-error .awi-generation-float-arrow{color:#dc2626}.awi-generation-float.is-error .awi-generation-float-arrow{background:rgba(239,68,68,.12)}',\r\n      '.awi-generation-float-ring:after{content:\"\";position:absolute;z-index:0;inset:-7px;border-radius:50%;border:1px solid rgba(255,77,117,.22);opacity:0;pointer-events:none}.awi-generation-float.is-active:not(.is-expanded):not(.is-dragging) .awi-generation-float-ring:after{animation:awiFloatSoftSignal 3.2s ease-out infinite}.awi-generation-float.is-complete .awi-generation-float-ring:after{border-color:rgba(21,194,107,.24)}@keyframes awiFloatSoftSignal{0%,68%,100%{opacity:0;transform:scale(.82)}12%{opacity:.55}38%{opacity:0;transform:scale(1.46)}}@keyframes awiFloatDockPulse{0%{transform:scale(.92)}62%{transform:scale(1.08)}100%{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.awi-generation-float,.awi-generation-float *{animation:none!important;scroll-behavior:auto!important}}',\r\n      '.awi-generation-float{z-index:2147482500!important;overflow:visible!important}.awi-generation-float-ring{isolation:isolate!important;overflow:visible!important}.awi-generation-float-ring:before,.awi-generation-float-ring:after{z-index:0!important;pointer-events:none!important}.awi-generation-float-icon{z-index:1!important}.awi-generation-float-percent{z-index:3!important}.awi-generation-float:not(.is-expanded){width:66px!important;min-height:66px!important;padding:9px!important;border-radius:999px!important;justify-content:center!important;gap:0!important}.awi-generation-float.is-expanded{width:min(460px,calc(100vw - 28px))!important;min-height:76px!important;padding:10px 12px 10px 10px!important;border-radius:24px!important}.awi-generation-float-percent{left:50%!important;right:auto!important;bottom:-6px!important;transform:translateX(-50%)!important;min-width:34px!important;padding:4px 6px!important;font-size:11px!important;line-height:1!important;font-weight:900!important;text-align:center!important}.awi-generation-float-title{font-size:16px!important;line-height:1.08!important;font-weight:880!important}.awi-generation-float-sub{font-size:14px!important;line-height:1.12!important;font-weight:780!important}.awi-generation-float:not(.is-expanded) .awi-generation-float-copy{display:none!important;opacity:0!important;transform:translateX(8px)!important;pointer-events:none!important}.awi-generation-float.is-expanded .awi-generation-float-copy{display:flex!important;opacity:1!important;transform:translateX(0)!important;pointer-events:auto!important}.awi-generation-float:not(.is-expanded) .awi-generation-float-arrow,.awi-generation-float:not(.is-expanded) .awi-generation-float-cancel,.awi-generation-float:not(.is-expanded) .awi-generation-float-collapse{display:none!important}.awi-generation-float.is-expanded .awi-generation-float-arrow{display:flex!important;margin-left:auto!important}.awi-generation-float.is-expanded:not(.is-complete) .awi-generation-float-cancel,.awi-generation-float.is-expanded .awi-generation-float-collapse{display:flex!important}.awi-generation-float.is-complete .awi-generation-float-cancel{display:none!important}@media(max-width:767px){.awi-generation-float:not(.is-expanded){right:12px!important;width:64px!important;min-height:64px!important}.awi-generation-float.is-expanded{right:12px!important;width:min(360px,calc(100vw - 32px))!important;min-height:74px!important}.awi-generation-float-title{font-size:15px!important}.awi-generation-float-sub{font-size:13px!important}}',\r\n      '.awi-generation-choice-modal{position:fixed;inset:0;z-index:2147483200;display:flex;align-items:center;justify-content:center;padding:22px;background:rgba(17,24,39,.42);opacity:0;visibility:hidden;pointer-events:none;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:opacity .22s ease,visibility .22s ease}.awi-generation-choice-modal.visible{opacity:1;visibility:visible;pointer-events:auto}.awi-generation-choice-card{position:relative;width:min(470px,calc(100vw - 32px));border-radius:28px;padding:24px;background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(255,246,249,.98));border:1px solid rgba(255,77,117,.16);box-shadow:0 30px 90px rgba(17,24,39,.28),0 14px 36px rgba(255,77,117,.16);color:#111827;font-family:inherit}.awi-generation-choice-close{position:absolute;top:14px;right:14px;width:38px;height:38px;display:grid;place-items:center;border:0;border-radius:999px;background:rgba(17,24,39,.07);color:#374151;cursor:pointer}.awi-generation-choice-close svg{width:18px;height:18px;stroke:currentColor;stroke-width:2;stroke-linecap:round}.awi-generation-choice-icon{width:54px;height:54px;display:grid;place-items:center;border-radius:18px;color:#ff4d75;background:rgba(255,77,117,.10);box-shadow:inset 0 0 0 1px rgba(255,77,117,.12)}.awi-generation-choice-icon svg{width:25px;height:25px;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.awi-generation-choice-copy h3{margin:16px 44px 8px 0;font-size:22px;line-height:1.05;font-weight:930}.awi-generation-choice-copy p{margin:0;color:#5f6b7a;font-size:16px;line-height:1.38;font-weight:700}.awi-generation-choice-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}.awi-generation-choice-btn{min-height:58px;border:0;border-radius:20px;padding:10px 14px;font-size:15px;font-weight:900;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left;gap:3px}.awi-generation-choice-btn span{font-size:13px;font-weight:760;opacity:.74}.awi-generation-choice-btn.secondary{background:rgba(17,24,39,.08);color:#374151}.awi-generation-choice-btn.danger{background:#111827;color:#fff}',\r\n      '@media(max-width:767px){.awi-generation-float{right:12px;bottom:calc(86px + env(safe-area-inset-bottom,0px));width:64px;min-height:64px}.awi-generation-float.is-nav-hidden{bottom:calc(16px + env(safe-area-inset-bottom,0px))}.awi-generation-float.has-chat-offset{right:12px}.awi-generation-float.is-expanded{right:12px;width:min(360px,calc(100vw - 32px));min-height:74px}.awi-generation-float-title{font-size:15px}.awi-generation-float-sub{font-size:13px}.awi-generation-choice-actions{grid-template-columns:1fr}}'\r\n    ].join('');\r\n    document.head.appendChild(style);\r\n  }\r\n\r\n  function showResultReturnCover() {\r\n    try {\r\n      if (document.getElementById('awiResultReturnCover')) return;\r\n      if (!document.getElementById('awiResultReturnCoverStyle')) {\r\n        var style = document.createElement('style');\r\n        style.id = 'awiResultReturnCoverStyle';\r\n        style.textContent = ''\r\n          + '#awiResultReturnCover{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(255,250,252,.96);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}'\r\n          + '#awiResultReturnCover .awi-result-return-card{display:flex;align-items:center;gap:14px;max-width:min(360px,calc(100vw - 40px));padding:16px 18px;border-radius:24px;background:#fff;box-shadow:0 22px 60px rgba(255,77,117,.20),0 2px 12px rgba(17,24,39,.08);border:1px solid rgba(255,77,117,.16);font-family:inherit;color:#172033}'\r\n          + '#awiResultReturnCover .awi-result-return-ring{width:46px;height:46px;border-radius:999px;display:grid;place-items:center;background:conic-gradient(#19c58a 0 76%,rgba(25,197,138,.14) 76% 100%);box-shadow:0 0 0 8px rgba(25,197,138,.10)}'\r\n          + '#awiResultReturnCover .awi-result-return-dot{width:31px;height:31px;border-radius:999px;background:#fff;display:grid;place-items:center;color:#19a979;font-weight:900}'\r\n          + '#awiResultReturnCover .awi-result-return-title{display:block;font-size:14px;font-weight:900;line-height:1.15;margin:0}'\r\n          + '#awiResultReturnCover .awi-result-return-sub{display:block;font-size:12px;font-weight:700;line-height:1.25;margin:3px 0 0;color:#607084}';\r\n        document.head.appendChild(style);\r\n      }\r\n      var cover = document.createElement('div');\r\n      cover.id = 'awiResultReturnCover';\r\n      cover.setAttribute('role', 'status');\r\n      cover.setAttribute('aria-live', 'polite');\r\n      cover.innerHTML = '<div class=\"awi-result-return-card\"><span class=\"awi-result-return-ring\" aria-hidden=\"true\"><span class=\"awi-result-return-dot\">\u2713</span></span><span><span class=\"awi-result-return-title\">Apro il bouquet</span><span class=\"awi-result-return-sub\">Carico la pagina prodotto.</span></span></div>';\r\n      document.body.appendChild(cover);\r\n    } catch (_) {}\r\n  }\r\n\r\n  function isNavHiddenForFloat() {\r\n    try {\r\n      var nav = document.getElementById('globalNav');\r\n      if (!nav) return true;\r\n      var style = window.getComputedStyle(nav);\r\n      var rect = nav.getBoundingClientRect();\r\n      return nav.classList.contains('nav-hidden')\r\n        || style.display === 'none'\r\n        || style.visibility === 'hidden'\r\n        || rect.top >= window.innerHeight - 10;\r\n    } catch (_) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function hasVisibleChatForFloat() {\r\n    try {\r\n      if (window.matchMedia && window.matchMedia('(max-width: 767px)').matches) return false;\r\n      var chat = document.getElementById('ShopifyChat')\r\n        || document.querySelector('inbox-online-store-chat')\r\n        || document.getElementById('shopify-chat');\r\n      if (!chat) return false;\r\n      var style = window.getComputedStyle(chat);\r\n      var rect = chat.getBoundingClientRect();\r\n      return style.display !== 'none'\r\n        && style.visibility !== 'hidden'\r\n        && rect.width > 8\r\n        && rect.height > 8\r\n        && rect.left < window.innerWidth\r\n        && rect.top < window.innerHeight;\r\n    } catch (_) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function floatViewportHeight() {\r\n    return window.innerHeight || document.documentElement.clientHeight || 800;\r\n  }\r\n\r\n  function floatViewportWidth() {\r\n    return window.innerWidth || document.documentElement.clientWidth || 390;\r\n  }\r\n\r\n  function isMobileFloatViewport() {\r\n    try {\r\n      return !!(window.matchMedia && window.matchMedia('(max-width: 767px)').matches);\r\n    } catch (_) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function clampFloatNumber(value, min, max) {\r\n    var n = Number(value);\r\n    if (!Number.isFinite(n)) n = min;\r\n    return Math.max(min, Math.min(max, n));\r\n  }\r\n\r\n  function readFloatAnchorRatio() {\r\n    try {\r\n      var raw = localStorage.getItem(FLOAT_POSITION_KEY);\r\n      if (!raw) return null;\r\n      var parsed = JSON.parse(raw);\r\n      var ratio = typeof parsed === 'number' ? parsed : Number(parsed && parsed.ratio);\r\n      if (!Number.isFinite(ratio)) return null;\r\n      return clampFloatNumber(ratio, 0.04, 0.96);\r\n    } catch (_) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function writeFloatAnchorRatio(ratio) {\r\n    try {\r\n      localStorage.setItem(FLOAT_POSITION_KEY, JSON.stringify({\r\n        v: 1,\r\n        ratio: clampFloatNumber(ratio, 0.04, 0.96),\r\n        updatedAt: Date.now()\r\n      }));\r\n    } catch (_) {}\r\n  }\r\n\r\n  function getFloatSafeCenters(target) {\r\n    var rect = target && target.getBoundingClientRect ? target.getBoundingClientRect() : { height: 66 };\r\n    var height = Math.max(56, Number(rect && rect.height) || 66);\r\n    var mobile = isMobileFloatViewport();\r\n    var topReserve = mobile ? 14 : 18;\r\n    var bottomReserve = isNavHiddenForFloat() ? (mobile ? 18 : 26) : (mobile ? 88 : 106);\r\n    var min = topReserve + (height / 2);\r\n    var max = floatViewportHeight() - bottomReserve - (height / 2);\r\n    if (max < min) max = min;\r\n    return { min: min, max: max, height: height };\r\n  }\r\n\r\n  function positionFloatAtCenter(target, centerY) {\r\n    if (!target) return;\r\n    var safe = getFloatSafeCenters(target);\r\n    var y = clampFloatNumber(centerY, safe.min, safe.max);\r\n    target.classList.add('is-positioned');\r\n    target.style.bottom = 'auto';\r\n    target.style.top = Math.round(y - (safe.height / 2)) + 'px';\r\n  }\r\n\r\n  function applyFloatAnchorPosition(target) {\r\n    if (!target || (floatDragState && floatDragState.target === target)) return;\r\n    var ratio = readFloatAnchorRatio();\r\n    if (ratio == null) {\r\n      target.classList.remove('is-positioned');\r\n      target.style.removeProperty('top');\r\n      target.style.removeProperty('bottom');\r\n      return;\r\n    }\r\n    positionFloatAtCenter(target, ratio * floatViewportHeight());\r\n  }\r\n\r\n  function isFloatDragIgnored(event) {\r\n    var target = event && event.target;\r\n    return !!(target && target.closest && target.closest('[data-awi-generation-cancel],[data-awi-generation-collapse],[data-awi-generation-secondary],.awi-generation-float-arrow'));\r\n  }\r\n\r\n  function dispatchFloatDragStart() {\r\n    try {\r\n      window.dispatchEvent(new CustomEvent('florame:generation-float-drag-start'));\r\n    } catch (_) {}\r\n  }\r\n\r\n  function scheduleFloatDragPosition() {\r\n      if (!floatDragState || floatDragFrame) return;\r\n    floatDragFrame = requestAnimationFrame(function () {\r\n      floatDragFrame = null;\r\n      if (!floatDragState || !floatDragState.target) return;\r\n      var target = floatDragState.target;\r\n      var centerY = floatDragState.startCenterY + (floatDragState.lastY - floatDragState.startY);\r\n      positionFloatAtCenter(target, centerY);\r\n    });\r\n  }\r\n\r\n  function endFloatDrag(event) {\r\n    if (!floatDragState) return;\r\n    if (event && event.pointerId != null && floatDragState.pointerId != null && event.pointerId !== floatDragState.pointerId) return;\r\n    var state = floatDragState;\r\n    floatDragState = null;\r\n    window.removeEventListener('pointermove', moveFloatDrag);\r\n    window.removeEventListener('pointerup', endFloatDrag);\r\n    window.removeEventListener('pointercancel', endFloatDrag);\r\n    window.removeEventListener('mousemove', moveFloatDrag);\r\n    window.removeEventListener('mouseup', endFloatDrag);\r\n    window.removeEventListener('touchmove', moveFloatTouchDrag);\r\n    window.removeEventListener('touchend', endFloatTouchDrag);\r\n    window.removeEventListener('touchcancel', endFloatTouchDrag);\r\n    if (floatDragFrame) {\r\n      cancelAnimationFrame(floatDragFrame);\r\n      floatDragFrame = null;\r\n    }\r\n    var target = state.target;\r\n    if (!target) return;\r\n    try { target.releasePointerCapture(state.pointerId); } catch (_) {}\r\n    target.classList.remove('is-dragging');\r\n    target.removeAttribute('aria-grabbed');\r\n    if (!state.dragging) return;\r\n    if (event) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n    }\r\n    var safe = getFloatSafeCenters(target);\r\n    var centerY = clampFloatNumber(state.startCenterY + (state.lastY - state.startY), safe.min, safe.max);\r\n    writeFloatAnchorRatio(centerY / floatViewportHeight());\r\n    positionFloatAtCenter(target, centerY);\r\n    target.style.removeProperty('right');\r\n    syncFloatPlacement(target);\r\n    target.classList.add('is-docked');\r\n    clearTimeout(target.__awiFloatDockTimer);\r\n    target.__awiFloatDockTimer = setTimeout(function () { target.classList.remove('is-docked'); }, 520);\r\n    setTimeout(function () { suppressFloatClick = false; }, 520);\r\n  }\r\n\r\n  function moveFloatDrag(event) {\r\n    if (!floatDragState) return;\r\n    if (event && event.pointerId != null && floatDragState.pointerId != null && event.pointerId !== floatDragState.pointerId) return;\r\n    floatDragState.lastX = Number(event.clientX) || floatDragState.lastX;\r\n    floatDragState.lastY = Number(event.clientY) || floatDragState.lastY;\r\n    var dx = floatDragState.lastX - floatDragState.startX;\r\n    var dy = floatDragState.lastY - floatDragState.startY;\r\n    if (!floatDragState.dragging && Math.sqrt((dx * dx) + (dy * dy)) < 7) return;\r\n    if (!floatDragState.dragging) {\r\n      floatDragState.dragging = true;\r\n      suppressFloatClick = true;\r\n      expanded = false;\r\n      floatDragState.target.classList.remove('is-expanded');\r\n      floatDragState.target.classList.add('is-dragging');\r\n      floatDragState.target.setAttribute('aria-grabbed', 'true');\r\n      dispatchFloatDragStart();\r\n    }\r\n    if (event) event.preventDefault();\r\n    scheduleFloatDragPosition();\r\n  }\r\n\r\n  function startFloatDrag(event) {\r\n    if (floatDragState) return;\r\n    if (!event || isFloatDragIgnored(event)) return;\r\n    if (event.button != null && event.button !== 0) return;\r\n    var target = event.currentTarget;\r\n    if (!target || target.hidden || !target.classList.contains('is-active')) return;\r\n    var rect = target.getBoundingClientRect();\r\n    var styles = window.getComputedStyle(target);\r\n    var right = parseFloat(styles.right);\r\n    if (!Number.isFinite(right)) right = isMobileFloatViewport() ? 12 : 28;\r\n    floatDragState = {\r\n      target: target,\r\n      pointerId: event.pointerId,\r\n      startX: Number(event.clientX) || 0,\r\n      startY: Number(event.clientY) || 0,\r\n      lastX: Number(event.clientX) || 0,\r\n      lastY: Number(event.clientY) || 0,\r\n      startCenterY: rect.top + (rect.height / 2),\r\n      width: Math.max(64, rect.width || 66),\r\n      startRight: right,\r\n      baseRight: right,\r\n      dragging: false\r\n    };\r\n    try { target.setPointerCapture(event.pointerId); } catch (_) {}\r\n    window.addEventListener('pointermove', moveFloatDrag, { passive: false });\r\n    window.addEventListener('pointerup', endFloatDrag);\r\n    window.addEventListener('pointercancel', endFloatDrag);\r\n  }\r\n\r\n  function startFloatMouseDrag(event) {\r\n    if (floatDragState) return;\r\n    if (!event || isFloatDragIgnored(event)) return;\r\n    if (event.button != null && event.button !== 0) return;\r\n    var target = event.currentTarget;\r\n    if (!target || target.hidden || !target.classList.contains('is-active')) return;\r\n    var rect = target.getBoundingClientRect();\r\n    var styles = window.getComputedStyle(target);\r\n    var right = parseFloat(styles.right);\r\n    if (!Number.isFinite(right)) right = isMobileFloatViewport() ? 12 : 28;\r\n    floatDragState = {\r\n      target: target,\r\n      pointerId: 'mouse',\r\n      startX: Number(event.clientX) || 0,\r\n      startY: Number(event.clientY) || 0,\r\n      lastX: Number(event.clientX) || 0,\r\n      lastY: Number(event.clientY) || 0,\r\n      startCenterY: rect.top + (rect.height / 2),\r\n      width: Math.max(64, rect.width || 66),\r\n      startRight: right,\r\n      baseRight: right,\r\n      dragging: false\r\n    };\r\n    window.addEventListener('mousemove', moveFloatDrag, { passive: false });\r\n    window.addEventListener('mouseup', endFloatDrag);\r\n  }\r\n\r\n  function primaryFloatTouch(event) {\r\n    return event && event.touches && event.touches.length ? event.touches[0] : null;\r\n  }\r\n\r\n  function moveFloatTouchDrag(event) {\r\n    if (!floatDragState || floatDragState.pointerId !== 'touch') return;\r\n    var touch = primaryFloatTouch(event);\r\n    if (!touch) return;\r\n    floatDragState.lastX = Number(touch.clientX) || floatDragState.lastX;\r\n    floatDragState.lastY = Number(touch.clientY) || floatDragState.lastY;\r\n    var dx = floatDragState.lastX - floatDragState.startX;\r\n    var dy = floatDragState.lastY - floatDragState.startY;\r\n    if (!floatDragState.dragging && Math.sqrt((dx * dx) + (dy * dy)) < 7) return;\r\n    if (!floatDragState.dragging) {\r\n      floatDragState.dragging = true;\r\n      suppressFloatClick = true;\r\n      expanded = false;\r\n      floatDragState.target.classList.remove('is-expanded');\r\n      floatDragState.target.classList.add('is-dragging');\r\n      floatDragState.target.setAttribute('aria-grabbed', 'true');\r\n      dispatchFloatDragStart();\r\n    }\r\n    event.preventDefault();\r\n    scheduleFloatDragPosition();\r\n  }\r\n\r\n  function endFloatTouchDrag(event) {\r\n    if (!floatDragState || floatDragState.pointerId !== 'touch') return;\r\n    endFloatDrag(event);\r\n  }\r\n\r\n  function startFloatTouchDrag(event) {\r\n    if (floatDragState || !event || isFloatDragIgnored(event)) return;\r\n    var touch = primaryFloatTouch(event);\r\n    if (!touch) return;\r\n    var target = event.currentTarget;\r\n    if (!target || target.hidden || !target.classList.contains('is-active')) return;\r\n    var rect = target.getBoundingClientRect();\r\n    var styles = window.getComputedStyle(target);\r\n    var right = parseFloat(styles.right);\r\n    if (!Number.isFinite(right)) right = isMobileFloatViewport() ? 12 : 28;\r\n    floatDragState = {\r\n      target: target,\r\n      pointerId: 'touch',\r\n      startX: Number(touch.clientX) || 0,\r\n      startY: Number(touch.clientY) || 0,\r\n      lastX: Number(touch.clientX) || 0,\r\n      lastY: Number(touch.clientY) || 0,\r\n      startCenterY: rect.top + (rect.height / 2),\r\n      width: Math.max(64, rect.width || 66),\r\n      startRight: right,\r\n      baseRight: right,\r\n      dragging: false\r\n    };\r\n    window.addEventListener('touchmove', moveFloatTouchDrag, { passive: false });\r\n    window.addEventListener('touchend', endFloatTouchDrag);\r\n    window.addEventListener('touchcancel', endFloatTouchDrag);\r\n  }\r\n\r\n  function bindFloatDrag(button) {\r\n    if (!button || button.__awiGenerationFloatDragBound) return;\r\n    button.__awiGenerationFloatDragBound = true;\r\n    button.addEventListener('pointerdown', startFloatDrag);\r\n    button.addEventListener('mousedown', startFloatMouseDrag);\r\n    button.addEventListener('touchstart', startFloatTouchDrag, { passive: false });\r\n  }\r\n\r\n  function syncFloatPlacement(button) {\r\n    try {\r\n      var target = button || document.getElementById('awiGenerationFloat');\r\n      if (!target) return;\r\n      target.classList.toggle('is-nav-hidden', isNavHiddenForFloat());\r\n      target.classList.toggle('has-chat-offset', hasVisibleChatForFloat());\r\n      applyFloatAnchorPosition(target);\r\n    } catch (_) {}\r\n  }\r\n\r\n  function bindFloatPlacementWatcher() {\r\n    if (placementBound) return;\r\n    placementBound = true;\r\n    var ticking = false;\r\n    var schedule = function () {\r\n      if (ticking) return;\r\n      ticking = true;\r\n      requestAnimationFrame(function () {\r\n        ticking = false;\r\n        syncFloatPlacement();\r\n        setTimeout(function () { syncFloatPlacement(); }, 120);\r\n      });\r\n    };\r\n    window.addEventListener('scroll', function () {\r\n      if (expanded) {\r\n        expanded = false;\r\n        render();\r\n      }\r\n      schedule();\r\n    }, { passive: true });\r\n    window.addEventListener('resize', schedule);\r\n    window.addEventListener('pageshow', schedule);\r\n    window.addEventListener('florame:generation-float-drag-start', function () {\r\n      if (!expanded) return;\r\n      expanded = false;\r\n      render();\r\n    });\r\n    try {\r\n      var nav = document.getElementById('globalNav');\r\n      if (nav && window.MutationObserver) {\r\n        placementObserver = new MutationObserver(schedule);\r\n        placementObserver.observe(nav, { attributes: true, attributeFilter: ['class', 'style'] });\r\n      }\r\n    } catch (_) {}\r\n  }\r\n\r\n  function ensureButton() {\r\n    ensureStyle();\r\n    var button = document.getElementById('awiGenerationFloat');\r\n    var needsMarkup = false;\r\n    if (button && button.tagName === 'BUTTON') {\r\n      var replacement = document.createElement('div');\r\n      replacement.id = 'awiGenerationFloat';\r\n      button.replaceWith(replacement);\r\n      button = replacement;\r\n      needsMarkup = true;\r\n    }\r\n    if (!button) {\r\n      button = document.createElement('div');\r\n      button.id = 'awiGenerationFloat';\r\n      document.body.appendChild(button);\r\n      needsMarkup = true;\r\n    } else if (!button.querySelector('[data-awi-generation-float-percent]') || !button.querySelector('[data-awi-generation-secondary]')) {\r\n      needsMarkup = true;\r\n    }\r\n    if (needsMarkup) button.className = 'awi-generation-float';\r\n    else button.classList.add('awi-generation-float');\r\n    button.setAttribute('role', 'button');\r\n    button.setAttribute('tabindex', '0');\r\n    button.setAttribute('aria-live', 'polite');\r\n    if (needsMarkup) {\r\n      button.hidden = true;\r\n      button.innerHTML = '<button class=\"awi-generation-float-secondary\" type=\"button\" data-awi-generation-secondary hidden><span data-awi-generation-secondary-text>Vai al caricamento precedente</span><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 12h14\"></path><path d=\"m13 6 6 6-6 6\"></path></svg></button><button class=\"awi-generation-float-cancel\" type=\"button\" data-awi-generation-cancel aria-label=\"Gestisci o annulla generazione\" title=\"Gestisci o annulla generazione\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M18 6 6 18\"></path><path d=\"M6 6l12 12\"></path></svg></button><span class=\"awi-generation-float-ring\" aria-hidden=\"true\"><span class=\"awi-generation-float-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M12 3.5 13.35 7 17 8.35 13.35 9.7 12 13.5 10.65 9.7 7 8.35 10.65 7 12 3.5Z\"></path><path d=\"M18.5 12.2 19.25 14 21 14.75 19.25 15.5 18.5 17.3 17.75 15.5 16 14.75 17.75 14 18.5 12.2Z\"></path><path d=\"M6.5 13.5 7.35 15.65 9.5 16.5 7.35 17.35 6.5 19.5 5.65 17.35 3.5 16.5 5.65 15.65 6.5 13.5Z\"></path></svg></span><span class=\"awi-generation-float-percent\" data-awi-generation-float-percent>0%</span></span><span class=\"awi-generation-float-copy\"><span class=\"awi-generation-float-title\" data-awi-generation-float-title></span><span class=\"awi-generation-float-sub\" data-awi-generation-float-sub></span></span><button class=\"awi-generation-float-collapse\" type=\"button\" data-awi-generation-collapse aria-label=\"Comprimi notifica\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 9l6 6 6-6\"></path></svg></button><span class=\"awi-generation-float-arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 12h14\"></path><path d=\"m13 6 6 6-6 6\"></path></svg></span>';\r\n    }\r\n    if (!button.__florameBackgroundBound) {\r\n      button.addEventListener('click', onFloatClick);\r\n      button.addEventListener('keydown', function (event) {\r\n        if (event.key === 'Enter' || event.key === ' ') {\r\n          event.preventDefault();\r\n          onFloatClick(event);\r\n        }\r\n      });\r\n      button.__florameBackgroundBound = true;\r\n    }\r\n    bindFloatDrag(button);\r\n    bindFloatPlacementWatcher();\r\n    syncFloatPlacement(button);\r\n    return button;\r\n  }\r\n\r\n  function copyFor(job) {\r\n    var progress = Math.round(Math.max(0, Math.min(100, Number(job.progress || 0))));\r\n    var isDone = job.status === 'done' || job.complete;\r\n    var isError = job.status === 'error';\r\n    if (isError) {\r\n      return job.kind === 'proposals'\r\n        ? { title: 'Generazione interrotta', sub: 'Apri per riprovare' }\r\n        : { title: 'Bouquet interrotto', sub: 'Apri per controllare' };\r\n    }\r\n    if (job.kind === 'proposals') {\r\n      return isDone\r\n        ? { title: 'Caricamento terminato', sub: 'Vai alle 2 proposte' }\r\n        : { title: 'Proposte in corso', sub: progress + '% - vai al caricamento' };\r\n    }\r\n    return isDone\r\n      ? { title: 'Bouquet pronto', sub: 'Vai a vedere il tuo bouquet' }\r\n      : { title: 'Bouquet in creazione', sub: progress + '% - vai al caricamento' };\r\n  }\r\n\r\n  function secondaryCopyFor(job) {\r\n    if (!job) return '';\r\n    var progress = Math.round(Math.max(0, Math.min(100, Number(job.progress || 0))));\r\n    var status = String(job.status || '').toLowerCase();\r\n    var complete = status === 'done' || job.complete;\r\n    if (job.kind === 'proposals') {\r\n      if (complete) return 'Proposte pronte';\r\n      if (status === 'running' || status === 'queued') return 'Proposte ' + progress + '%';\r\n      return 'Vai alle proposte precedenti';\r\n    }\r\n    if (complete) return 'Ultimo bouquet pronto';\r\n    if (status === 'running' || status === 'queued') return 'Bouquet ' + progress + '%';\r\n    return 'Torna all\\'ultimo bouquet';\r\n  }\r\n\r\n  function easeOutCubic(t) {\r\n    return 1 - Math.pow(1 - Math.max(0, Math.min(1, Number(t) || 0)), 3);\r\n  }\r\n\r\n  function proposalProgressFromElapsed(elapsedMs) {\r\n    var elapsed = Math.max(0, Number(elapsedMs) || 0);\r\n    if (elapsed <= 2600) return 4 + (14 * easeOutCubic(elapsed / 2600));\r\n    if (elapsed <= 5600) return 18 + (30 * easeOutCubic((elapsed - 2600) / 3000));\r\n    if (elapsed <= 7900) return 48 + (24 * easeOutCubic((elapsed - 5600) / 2300));\r\n    if (elapsed <= 9000) return 72 + (22 * easeOutCubic((elapsed - 7900) / 1100));\r\n    return 94;\r\n  }\r\n\r\n  function resultImageProgressFromElapsed(elapsedMs) {\r\n    var elapsed = Math.max(0, Number(elapsedMs) || 0);\r\n    if (elapsed <= 10500) return 10 + (32 * easeOutCubic(elapsed / 10500));\r\n    if (elapsed <= 30000) return 42 + (28 * easeOutCubic((elapsed - 10500) / 19500));\r\n    if (elapsed <= 65000) return 70 + (22 * easeOutCubic((elapsed - 30000) / 35000));\r\n    return 92;\r\n  }\r\n\r\n  function resultProductProgressFromElapsed(elapsedMs) {\r\n    var elapsed = Math.max(0, Number(elapsedMs) || 0);\r\n    if (elapsed <= 24000) return 82 + (12 * easeOutCubic(elapsed / 24000));\r\n    return 94;\r\n  }\r\n\r\n  function syncedProgressForJob(key, job) {\r\n    if (!job || job.status !== 'running') return Number(job && job.progress || 0);\r\n    var now = Date.now();\r\n    var startedAt = Number(job.startedAt || job.updatedAt || now);\r\n    var elapsed = Math.max(0, now - startedAt);\r\n    if (key === PROPOSAL_KEY || job.kind === 'proposals') {\r\n      return proposalProgressFromElapsed(elapsed);\r\n    }\r\n    var phase = String(job.phase || '').toLowerCase();\r\n    if (phase === 'product' || job.createRequestId) {\r\n      var productStartedAt = Number(job.productStartedAt || job.updatedAt || now);\r\n      return Math.max(82, resultProductProgressFromElapsed(Math.max(0, now - productStartedAt)));\r\n    }\r\n    return resultImageProgressFromElapsed(elapsed);\r\n  }\r\n\r\n  function isOnActiveLoadingPage(job) {\r\n    if (!job || job.status === 'done' || job.complete) return false;\r\n    if (!/\\/pages\\/florame-app\\/?$/i.test(window.location.pathname || '')) return false;\r\n    if (job.kind === 'proposals') {\r\n      return !!document.querySelector('.funnel-proposals-loading-panel');\r\n    }\r\n    var loading = document.getElementById('generatedResultLoading');\r\n    if (!loading) return false;\r\n    var visible = loading.offsetParent !== null && getComputedStyle(loading).display !== 'none';\r\n    return visible && !!document.querySelector('.generated-image-container.is-loading');\r\n  }\r\n\r\n  function isOnCompletedTargetPage(job) {\r\n    if (!job || !(job.status === 'done' || job.complete)) return false;\r\n    if (!/\\/pages\\/florame-app\\/?$/i.test(window.location.pathname || '')) return false;\r\n    if (job.kind === 'proposals') {\r\n      return document.querySelectorAll('.fr-result-card, .funnel-result-card, [data-funnel-proposal-card]').length > 0;\r\n    }\r\n    try {\r\n      var params = new URLSearchParams(window.location.search || '');\r\n      var mode = String(params.get('mode') || '').toLowerCase();\r\n      if (mode && mode !== 'create' && mode !== 'custom') return false;\r\n    } catch (_) { }\r\n    return !!document.querySelector('.generated-image-container.visible, #bouquetDetailsPreview.visible');\r\n  }\r\n\r\n  function isFlorameAppOwnedFloat() {\r\n    try {\r\n      return /\\/pages\\/florame-app\\/?$/i.test(window.location.pathname || '')\r\n        && window.__awiAppGenerationFloatReady === true;\r\n    } catch (_) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function render() {\r\n    if (isFlorameAppOwnedFloat()) return;\r\n    var button = ensureButton();\r\n    var job = activeJob();\r\n    try {\r\n      document.documentElement.setAttribute('data-awi-background-monitor', JSON.stringify({\r\n        active: !!job,\r\n        kind: job && job.kind || '',\r\n        status: job && job.status || '',\r\n        progress: Math.round(Number(job && job.progress || 0)),\r\n        hasWindowName: String(window.name || '').indexOf(WINDOW_NAME_PREFIX) === 0,\r\n        hasCookie: String(document.cookie || '').indexOf(COOKIE_KEY + '=') !== -1\r\n      }));\r\n      } catch (_) { }\r\n    var done = !!job && (job.status === 'done' || job.complete);\r\n    var active = !!job && !isOnActiveLoadingPage(job);\r\n    if (job && done && isOnCompletedTargetPage(job)) {\r\n      expanded = false;\r\n      button.hidden = true;\r\n      button.classList.remove('is-active', 'is-expanded', 'is-complete', 'is-error', 'is-proposals', 'is-result');\r\n      return;\r\n    }\r\n    var hasError = !!job && job.status === 'error';\r\n    if (hasError) expanded = true;\r\n    button.hidden = !active;\r\n    syncFloatPlacement(button);\r\n    button.classList.toggle('is-active', active);\r\n    button.classList.toggle('is-expanded', active && expanded);\r\n    button.classList.toggle('is-complete', active && done);\r\n    button.classList.toggle('is-error', active && hasError);\r\n    button.classList.toggle('is-proposals', active && job && job.kind === 'proposals');\r\n    button.classList.toggle('is-result', active && job && job.kind === 'result');\r\n    var secondary = active ? secondaryJobFor(job) : null;\r\n    var showSecondary = !!(secondary && expanded && active);\r\n    button.classList.toggle('has-secondary', showSecondary);\r\n    var secondaryBtn = button.querySelector('[data-awi-generation-secondary]');\r\n    if (secondaryBtn) {\r\n      secondaryBtn.hidden = !showSecondary;\r\n      secondaryBtn.setAttribute('aria-label', secondary ? secondaryCopyFor(secondary) : '');\r\n      var secondaryText = secondaryBtn.querySelector('[data-awi-generation-secondary-text]');\r\n      if (secondaryText) secondaryText.textContent = secondary ? secondaryCopyFor(secondary) : '';\r\n    }\r\n    if (active) {\r\n      button.style.opacity = '1';\r\n      button.style.visibility = 'visible';\r\n      button.style.transform = 'translateY(0) scale(1)';\r\n    } else {\r\n      button.style.removeProperty('opacity');\r\n      button.style.removeProperty('visibility');\r\n      button.style.removeProperty('transform');\r\n    }\r\n    if (!active) return;\r\n    var progress = Math.max(0, Math.min(100, done ? 100 : Number(job.progress || 0)));\r\n    var copy = copyFor(job);\r\n    button.style.setProperty('--awi-generation-progress', progress + '%');\r\n    var title = button.querySelector('[data-awi-generation-float-title]');\r\n    var sub = button.querySelector('[data-awi-generation-float-sub]');\r\n    var percent = button.querySelector('[data-awi-generation-float-percent]');\r\n    if (title) title.textContent = copy.title;\r\n    if (sub) sub.textContent = copy.sub;\r\n    if (percent) percent.textContent = Math.round(progress) + '%';\r\n    button.setAttribute('aria-label', copy.title + '. ' + copy.sub);\r\n  }\r\n\r\n  function fetchJsonp(url, timeoutMs) {\r\n    return new Promise(function (resolve, reject) {\r\n      if (!document || !document.head) {\r\n        reject(new Error('JSONP non disponibile'));\r\n        return;\r\n      }\r\n      try {\r\n        var targetOrigin = new URL(url, window.location.href).origin;\r\n        if (targetOrigin !== window.location.origin && targetOrigin !== 'https://us-central1-flower-ai-2d7aa.cloudfunctions.net') {\r\n          reject(new Error('Endpoint stato non autorizzato'));\r\n          return;\r\n        }\r\n      } catch (_) {\r\n        reject(new Error('Endpoint stato non valido'));\r\n        return;\r\n      }\r\n      var callbackName = '__florameBgJsonp_' + Date.now() + '_' + Math.random().toString(36).slice(2);\r\n      var script = document.createElement('script');\r\n      var done = false;\r\n      var cleanup = function () {\r\n        try { delete window[callbackName]; } catch (_) { window[callbackName] = undefined; }\r\n        try { script.remove(); } catch (_) {}\r\n      };\r\n      var timer = setTimeout(function () {\r\n        if (done) return;\r\n        done = true;\r\n        cleanup();\r\n        reject(new Error('Timeout stato generazione'));\r\n      }, timeoutMs || 12000);\r\n      window[callbackName] = function (payload) {\r\n        if (done) return;\r\n        done = true;\r\n        clearTimeout(timer);\r\n        cleanup();\r\n        resolve(payload || {});\r\n      };\r\n      script.onerror = function () {\r\n        if (done) return;\r\n        done = true;\r\n        clearTimeout(timer);\r\n        cleanup();\r\n        reject(new Error('Errore stato generazione'));\r\n      };\r\n      var target = new URL(url, window.location.href);\r\n      target.searchParams.set('callback', callbackName);\r\n      target.searchParams.set('_', String(Date.now()));\r\n      script.src = target.toString();\r\n      document.head.appendChild(script);\r\n    });\r\n  }\r\n\r\n  async function fetchJson(url, options, timeoutMs) {\r\n    var controller = new AbortController();\r\n    var timer = setTimeout(function () { controller.abort(); }, timeoutMs || 15000);\r\n    try {\r\n      var response = await fetch(url, Object.assign({ signal: controller.signal }, options || {}));\r\n      var text = await response.text();\r\n      var data = text ? JSON.parse(text) : {};\r\n      return { response: response, data: data };\r\n    } catch (error) {\r\n      var method = String((options && options.method) || 'GET').toUpperCase();\r\n      if (method === 'GET') {\r\n        var jsonp = await fetchJsonp(url, timeoutMs || 12000);\r\n        var status = Number(jsonp && jsonp.httpStatus || 200);\r\n        return { response: { status: status, ok: status >= 200 && status < 300 }, data: jsonp };\r\n      }\r\n      throw error;\r\n    } finally {\r\n      clearTimeout(timer);\r\n    }\r\n  }\r\n\r\n  function simpleJsonPostOptions(payload) {\r\n    return {\r\n      method: 'POST',\r\n      headers: { 'Content-Type': 'text/plain;charset=UTF-8', Accept: 'application/json' },\r\n      body: JSON.stringify(payload || {})\r\n    };\r\n  }\r\n\r\n  function goToJob() {\r\n    var job = activeJob();\r\n    if (!job) return;\r\n    var isDone = job.status === 'done' || job.complete;\r\n    var storageKey = job.storageKey || (job.kind === 'result' ? RESULT_KEY : PROPOSAL_KEY);\r\n    var isApp = /\\/pages\\/florame-app\\/?$/i.test(window.location.pathname);\r\n    if (job.kind === 'result' && isDone && (job.bouquetId || /[?&]bouquet=/.test(String(job.returnUrl || '')))) {\r\n      var bouquetFallback = job.bouquetId\r\n        ? APP_PATH + '?mode=create&bouquet=' + encodeURIComponent(job.bouquetId)\r\n        : APP_PATH + '?mode=create';\r\n      try {\r\n        var bouquetTarget = new URL(safeAppReturnUrl(job.returnUrl || bouquetFallback, 'result'), window.location.href);\r\n        if (job.bouquetId) {\r\n          bouquetTarget.searchParams.set('mode', 'create');\r\n          bouquetTarget.searchParams.set('bouquet', job.bouquetId);\r\n        }\r\n        bouquetTarget.searchParams.set(URL_PARAM, JSON.stringify(urlJobPayload(storageKey, job)));\r\n        expanded = false;\r\n        showResultReturnCover();\r\n        try { document.documentElement.setAttribute('data-awi-background-navigation', '1'); } catch (_) {}\r\n        window.location.href = bouquetTarget.toString();\r\n      } catch (_) {\r\n        expanded = false;\r\n        showResultReturnCover();\r\n        try { document.documentElement.setAttribute('data-awi-background-navigation', '1'); } catch (e) {}\r\n        window.location.href = job.returnUrl || bouquetFallback;\r\n      }\r\n      return;\r\n    }\r\n    if (isApp && typeof window.setMode === 'function') {\r\n      if (job.kind === 'proposals') window.setMode('funnel', { force: true });\r\n      else window.setMode('custom', { force: true });\r\n      if (isDone) {\r\n        expanded = false;\r\n      }\r\n      try { window.dispatchEvent(new CustomEvent('florame:background-job-focus', { detail: { job: job, storageKey: storageKey } })); } catch (_) {}\r\n      render();\r\n      return;\r\n    }\r\n    var fallback = fallbackReturnUrlForKind(job.kind);\r\n    try {\r\n      var targetUrl = new URL(safeAppReturnUrl(job.returnUrl || fallback, job.kind), window.location.href);\r\n      targetUrl.searchParams.set(URL_PARAM, JSON.stringify(urlJobPayload(storageKey, job)));\r\n      var targetHref = targetUrl.toString();\r\n      if (isDone) {\r\n        expanded = false;\r\n      }\r\n      try { document.documentElement.setAttribute('data-awi-background-navigation', '1'); } catch (_) {}\r\n      window.location.href = targetHref;\r\n    } catch (_) {\r\n      if (isDone) {\r\n        expanded = false;\r\n      }\r\n      try { document.documentElement.setAttribute('data-awi-background-navigation', '1'); } catch (e) {}\r\n      window.location.href = safeAppReturnUrl(job.returnUrl || fallback, job.kind);\r\n    }\r\n  }\r\n\r\n  function ensureChoiceModal() {\r\n    var modal = document.getElementById('awiGenerationDecisionModal');\r\n    if (modal && !modal.querySelector('[data-choice-action]')) {\r\n      try { modal.remove(); } catch (_) {}\r\n      modal = null;\r\n    }\r\n    if (modal) return modal;\r\n    modal = document.createElement('div');\r\n    modal.id = 'awiGenerationDecisionModal';\r\n    modal.className = 'awi-generation-choice-modal';\r\n    modal.setAttribute('role', 'dialog');\r\n    modal.setAttribute('aria-modal', 'true');\r\n    modal.innerHTML = '<div class=\"awi-generation-choice-card\"><button type=\"button\" class=\"awi-generation-choice-close\" data-choice-close aria-label=\"Chiudi\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M18 6 6 18\"></path><path d=\"M6 6l12 12\"></path></svg></button><div class=\"awi-generation-choice-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M12 21.25a9.25 9.25 0 1 0 0-18.5 9.25 9.25 0 0 0 0 18.5Z\"></path><path d=\"M9.35 9.35h5.3v5.3h-5.3Z\"></path></svg></div><div class=\"awi-generation-choice-copy\"><h3>Caricamento in corso</h3><p>Lascia lavorare la generazione in background o fermala subito.</p></div><div class=\"awi-generation-choice-actions\"><button type=\"button\" class=\"awi-generation-choice-btn secondary\" data-choice-action=\"mute\">Comprimi avviso<span>La bubble resta attiva</span></button><button type=\"button\" class=\"awi-generation-choice-btn danger\" data-choice-action=\"cancel\">Interrompi<span>Annulla la richiesta</span></button></div></div>';\r\n    document.body.appendChild(modal);\r\n    modal.addEventListener('click', function (event) {\r\n      if (event.target === modal || (event.target && event.target.closest && event.target.closest('[data-choice-close]'))) {\r\n        event.preventDefault();\r\n        modal.classList.remove('visible');\r\n        return;\r\n      }\r\n      var actionBtn = event.target && event.target.closest && event.target.closest('[data-choice-action]');\r\n      if (!actionBtn) return;\r\n      event.preventDefault();\r\n      var action = actionBtn.getAttribute('data-choice-action');\r\n      var job = activeJob();\r\n      modal.classList.remove('visible');\r\n      if (!job) return;\r\n      if (action === 'mute') {\r\n        expanded = false;\r\n        writeJob(job.storageKey || (job.kind === 'result' ? RESULT_KEY : PROPOSAL_KEY), { muted: false });\r\n        render();\r\n        return;\r\n      }\r\n      cancelJob(job);\r\n    });\r\n    return modal;\r\n  }\r\n\r\n  function showChoiceModal() {\r\n    ensureChoiceModal().classList.add('visible');\r\n  }\r\n\r\n  async function cancelJob(job) {\r\n    if (!job) return;\r\n    expanded = false;\r\n    var clearKey = job.kind === 'proposals' ? PROPOSAL_KEY : RESULT_KEY;\r\n    clearJob(clearKey);\r\n    if (job.kind === 'proposals') {\r\n      if (job.requestId) {\r\n        fetchJson(API_BASE + '/cancelFunnelInspiration', simpleJsonPostOptions({ requestId: job.requestId }), 9000).catch(function () {});\r\n      }\r\n      return;\r\n    }\r\n    if (job.requestId) {\r\n      fetchJson(API_BASE + '/cancelGenerateBouquet', simpleJsonPostOptions({ requestId: job.requestId }), 9000).catch(function () {});\r\n    }\r\n    if (job.createRequestId) {\r\n      fetchJson(API_BASE + '/cancelCreateBouquet', simpleJsonPostOptions({ requestId: job.createRequestId }), 9000).catch(function () {});\r\n    }\r\n  }\r\n\r\n  function onFloatClick(event) {\r\n    if (suppressFloatClick) {\r\n      if (event) {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n        if (event.stopImmediatePropagation) event.stopImmediatePropagation();\r\n      }\r\n      suppressFloatClick = false;\r\n      return;\r\n    }\r\n    var job = activeJob();\r\n    if (!job) return;\r\n    if (event && event.target && event.target.closest && event.target.closest('[data-awi-generation-secondary]')) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      var secondary = secondaryJobFor(job);\r\n      if (secondary) {\r\n        writeActiveKind(secondary.kind);\r\n        expanded = true;\r\n        render();\r\n      }\r\n      return;\r\n    }\r\n    if (event && event.target && event.target.closest && event.target.closest('[data-awi-generation-cancel]')) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      showChoiceModal();\r\n      return;\r\n    }\r\n    if (event && event.target && event.target.closest && event.target.closest('[data-awi-generation-collapse]')) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      expanded = false;\r\n      render();\r\n      return;\r\n    }\r\n    if (!expanded && !(event && event.target && event.target.closest && event.target.closest('.awi-generation-float-arrow'))) {\r\n      expanded = true;\r\n      render();\r\n      return;\r\n    }\r\n    goToJob();\r\n  }\r\n\r\n  async function pollProposal(job) {\r\n    if (!job.requestId || activePolls.proposal === job.requestId) return;\r\n    activePolls.proposal = job.requestId;\r\n    try {\r\n      var elapsed = Date.now() - Number(job.startedAt || job.updatedAt || Date.now());\r\n      if (elapsed > 300000) {\r\n        writeJob(PROPOSAL_KEY, { status: 'error', complete: false, progress: Math.max(94, Number(job.progress || 94)), error: 'Timeout durante la generazione delle proposte', returnUrl: APP_PATH + '?mode=funnel&proposalJob=' + encodeURIComponent(job.requestId) });\r\n        return;\r\n      }\r\n      var endpoint = API_BASE + '/getFunnelInspirationStatus?requestId=' + encodeURIComponent(job.requestId);\r\n      var result = await fetchJson(endpoint, { cache: 'no-store', headers: { Accept: 'application/json' } }, 12000);\r\n      var data = result.data || {};\r\n      if (result.response.status === 202 || data.status === 'running' || data.status === 'queued') {\r\n        writeJob(PROPOSAL_KEY, { status: 'running', complete: false, returnUrl: APP_PATH + '?mode=funnel&proposalJob=' + encodeURIComponent(job.requestId) });\r\n        return;\r\n      }\r\n      if (data.status === 'cancelled') {\r\n        clearJob(PROPOSAL_KEY);\r\n        return;\r\n      }\r\n      if (data.status === 'error') {\r\n        writeJob(PROPOSAL_KEY, { status: 'error', complete: false, progress: Math.max(94, Number(job.progress || 94)), error: data.error || 'Errore generazione proposte', returnUrl: APP_PATH + '?mode=funnel&proposalJob=' + encodeURIComponent(job.requestId) });\r\n        return;\r\n      }\r\n      if (data.status === 'done' || (data.success && Array.isArray(data.variants))) {\r\n        var variants = data.variants || (data.response && data.response.variants) || (data.response && data.response.response && data.response.response.variants) || [];\r\n        if (!variants.length) {\r\n          var waitStarted = Number(job.doneWithoutVariantsAt || Date.now());\r\n          if (!job.doneWithoutVariantsAt || Date.now() - waitStarted < 30000) {\r\n            writeJob(PROPOSAL_KEY, { status: 'running', complete: false, progress: Math.max(94, Number(job.progress || 0)), doneWithoutVariantsAt: waitStarted, returnUrl: APP_PATH + '?mode=funnel&proposalJob=' + encodeURIComponent(job.requestId) });\r\n          } else {\r\n            writeJob(PROPOSAL_KEY, { status: 'error', complete: false, progress: Math.max(94, Number(job.progress || 94)), error: 'Risposta completata senza proposte recuperabili', returnUrl: APP_PATH + '?mode=funnel&proposalJob=' + encodeURIComponent(job.requestId) });\r\n          }\r\n          return;\r\n        }\r\n        writeJob(PROPOSAL_KEY, { status: 'done', complete: true, muted: false, progress: 100, variants: variants, response: data, returnUrl: APP_PATH + '?mode=funnel&proposalJob=' + encodeURIComponent(job.requestId) });\r\n        return;\r\n      }\r\n      if ((data.status === 'not_found' || data.status === 'stale' || result.response.status === 404) && job.payload && Date.now() - Number(job.startedAt || 0) > 10000) {\r\n        var restartAttempts = Number(job.restartAttempts || 0);\r\n        if (restartAttempts >= 2) {\r\n          writeJob(PROPOSAL_KEY, { status: 'error', complete: false, progress: Math.max(94, Number(job.progress || 94)), error: 'Non siamo riusciti a recuperare la generazione delle proposte', returnUrl: APP_PATH + '?mode=funnel&proposalJob=' + encodeURIComponent(job.requestId) });\r\n          return;\r\n        }\r\n        writeJob(PROPOSAL_KEY, { restartAttempts: restartAttempts + 1, lastRestartAt: Date.now() });\r\n        await fetchJson(API_BASE + '/getFunnelInspiration', simpleJsonPostOptions(Object.assign({}, job.payload, { requestId: job.requestId, forceRestart: true })), 15000).catch(function () {});\r\n      }\r\n    } catch (error) {\r\n      if (Date.now() - Number(job.startedAt || job.updatedAt || Date.now()) > 180000) {\r\n        writeJob(PROPOSAL_KEY, { status: 'error', complete: false, progress: Math.max(94, Number(job.progress || 94)), error: error && error.message || 'Errore stato generazione proposte', returnUrl: APP_PATH + '?mode=funnel&proposalJob=' + encodeURIComponent(job.requestId) });\r\n      }\r\n    } finally {\r\n      activePolls.proposal = null;\r\n    }\r\n  }\r\n\r\n  async function pollResult(job) {\r\n    if (activePolls.result === (job.createRequestId || job.requestId)) return;\r\n    activePolls.result = job.createRequestId || job.requestId || 'result';\r\n    try {\r\n      if (Date.now() - Number(job.startedAt || job.updatedAt || Date.now()) > 300000) {\r\n        writeJob(RESULT_KEY, { status: 'error', complete: false, progress: Math.max(94, Number(job.progress || 94)), error: 'Tempo massimo superato durante la generazione del bouquet' });\r\n        return;\r\n      }\r\n      if (job.createRequestId) {\r\n        var createStatus = await fetchJson(API_BASE + '/getCreateBouquetStatus?requestId=' + encodeURIComponent(job.createRequestId), { cache: 'no-store', headers: { Accept: 'application/json' } }, 12000);\r\n        var createData = createStatus.data || {};\r\n        if (createStatus.response.status === 202 || createData.status === 'running' || createData.status === 'queued') return;\r\n        if (createData.status === 'cancelled') {\r\n          clearJob(RESULT_KEY);\r\n        } else if (createData.status === 'done' && createData.response) {\r\n          var product = createData.response;\r\n          if (!product.bouquetId) {\r\n            var waitStartedAt = Number(job.productDoneWithoutBouquetAt || Date.now());\r\n            if (!job.productDoneWithoutBouquetAt) {\r\n              writeJob(RESULT_KEY, { status: 'running', complete: false, phase: 'product', progress: Math.max(96, Number(job.progress || 0)), productDoneWithoutBouquetAt: waitStartedAt, productData: product });\r\n              return;\r\n            }\r\n            if (Date.now() - waitStartedAt < 22000) {\r\n              writeJob(RESULT_KEY, { status: 'running', complete: false, phase: 'product', progress: Math.max(96, Number(job.progress || 0)), productDoneWithoutBouquetAt: waitStartedAt, productData: product });\r\n              return;\r\n            }\r\n            writeJob(RESULT_KEY, { status: 'error', complete: false, error: 'Bouquet creato senza identificativo recuperabile' });\r\n            return;\r\n          }\r\n          writeJob(RESULT_KEY, { status: 'done', complete: true, muted: false, progress: 100, productData: product, bouquetId: product.bouquetId, returnUrl: APP_PATH + '?mode=create&bouquet=' + encodeURIComponent(product.bouquetId) });\r\n        } else if ((createData.status === 'not_found' || createData.status === 'stale' || createStatus.response.status === 404) && job.productPayload && Date.now() - Number(job.updatedAt || job.startedAt || 0) > 5000) {\r\n          var createRestartAttempts = Number(job.createRestartAttempts || 0);\r\n          if (createRestartAttempts >= 2) {\r\n            writeJob(RESULT_KEY, { status: 'error', complete: false, progress: Math.max(94, Number(job.progress || 94)), error: 'Non siamo riusciti a recuperare la creazione del prodotto' });\r\n            return;\r\n          }\r\n          writeJob(RESULT_KEY, { createRestartAttempts: createRestartAttempts + 1, lastCreateRestartAt: Date.now() });\r\n          await fetchJson(API_BASE + '/createBouquet', simpleJsonPostOptions(Object.assign({}, job.productPayload, { requestId: job.createRequestId })), 25000).catch(function () {});\r\n        } else if (createData.status === 'error') {\r\n          writeJob(RESULT_KEY, { status: 'error', complete: false, error: createData.error || 'Errore creazione prodotto' });\r\n        }\r\n        return;\r\n      }\r\n\r\n      if (job.requestId) {\r\n        var imageStatus = await fetchJson(API_BASE + '/getGenerateBouquetStatus?requestId=' + encodeURIComponent(job.requestId), { cache: 'no-store', headers: { Accept: 'application/json' } }, 12000);\r\n        var imageData = imageStatus.data || {};\r\n        if (imageStatus.response.status === 202 || imageData.status === 'running' || imageData.status === 'queued') return;\r\n        if (imageData.status === 'cancelled') {\r\n          clearJob(RESULT_KEY);\r\n          return;\r\n        }\r\n        if (imageData.status === 'done' || (imageData.success && imageData.imageUrl)) {\r\n          var image = imageData.response || imageData;\r\n          if (!job.productBasePayload && !job.productPayload) {\r\n            writeJob(RESULT_KEY, { status: 'running', phase: 'product', progress: Math.max(82, Number(job.progress || 0)), productStartedAt: job.productStartedAt || Date.now(), imageUrl: image.imageUrl, seed: image.seed || null, promptData: image.promptData || null });\r\n            return;\r\n          }\r\n          var createRequestId = job.createRequestId || ('cbq_bg_' + job.requestId.replace(/[^a-zA-Z0-9_-]/g, '').slice(-42));\r\n          var productPayload = Object.assign({}, job.productBasePayload || {}, job.productPayload || {}, {\r\n            bouquetImage: image.imageUrl,\r\n            seed: image.seed,\r\n            promptData: image.promptData || null,\r\n            requestId: createRequestId\r\n          });\r\n          writeJob(RESULT_KEY, { status: 'running', phase: 'product', progress: Math.max(82, Number(job.progress || 0)), productStartedAt: job.productStartedAt || Date.now(), imageUrl: image.imageUrl, seed: image.seed || null, promptData: image.promptData || null, createRequestId: createRequestId, productPayload: productPayload });\r\n          await fetchJson(API_BASE + '/createBouquet', simpleJsonPostOptions(productPayload), 25000).catch(function () {});\r\n        } else if ((imageData.status === 'not_found' || imageData.status === 'stale' || imageStatus.response.status === 404) && job.payload && Date.now() - Number(job.startedAt || 0) > 5000) {\r\n          var imageRestartAttempts = Number(job.imageRestartAttempts || 0);\r\n          if (imageRestartAttempts >= 2) {\r\n            writeJob(RESULT_KEY, { status: 'error', complete: false, progress: Math.max(94, Number(job.progress || 94)), error: 'Non siamo riusciti a recuperare la generazione del bouquet' });\r\n            return;\r\n          }\r\n          writeJob(RESULT_KEY, { imageRestartAttempts: imageRestartAttempts + 1, lastImageRestartAt: Date.now() });\r\n          await fetchJson(API_BASE + '/generateBouquet', simpleJsonPostOptions(Object.assign({}, job.payload, { requestId: job.requestId, forceRestart: true })), 15000).catch(function () {});\r\n        }\r\n      }\r\n    } catch (error) {\r\n      if (Date.now() - Number(job.startedAt || job.updatedAt || Date.now()) > 180000) {\r\n        writeJob(RESULT_KEY, { status: 'error', complete: false, progress: Math.max(94, Number(job.progress || 94)), error: error && error.message || 'Errore stato generazione bouquet' });\r\n      }\r\n    } finally {\r\n      activePolls.result = null;\r\n    }\r\n  }\r\n\r\n  function nudgeProgress(key, job, cap) {\r\n    if (!job || job.status !== 'running') return;\r\n    var current = Number(job.progress || 0);\r\n    if (current >= cap) return;\r\n    var target = Math.min(cap, Math.max(current, syncedProgressForJob(key, job)));\r\n    if (target - current >= 0.5) writeJob(key, { progress: target });\r\n  }\r\n\r\n  function tick() {\r\n    var proposal = readJob(PROPOSAL_KEY);\r\n    var result = readJob(RESULT_KEY);\r\n    nudgeProgress(PROPOSAL_KEY, proposal, 94);\r\n    nudgeProgress(RESULT_KEY, result, result && (result.phase === 'product' || result.createRequestId) ? 94 : 76);\r\n    proposal = readJob(PROPOSAL_KEY);\r\n    result = readJob(RESULT_KEY);\r\n    render();\r\n    if (proposal && proposal.status === 'running') pollProposal(proposal);\r\n    if (result && result.status === 'running') pollResult(result);\r\n  }\r\n\r\n  function boot() {\r\n    hydrateJobFromUrl();\r\n    render();\r\n    if (!pollTimer) pollTimer = setInterval(tick, 3000);\r\n    tick();\r\n  }\r\n\r\n  window.addEventListener('storage', function (event) {\r\n    if (event.key === PROPOSAL_KEY || event.key === RESULT_KEY) render();\r\n  });\r\n  window.addEventListener('florame:background-loading-change', render);\r\n  window.addEventListener('florame:background-loading-clear', render);\r\n  window.addEventListener('pageshow', render);\r\n  document.addEventListener('click', function (event) {\r\n    var anchor = event.target && event.target.closest && event.target.closest('a[href]');\r\n    attachJobToInternalLink(anchor);\r\n  }, true);\r\n\r\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot);\r\n  else boot();\r\n})();\r\n"],
  "mappings": "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",
  "names": []
}
