{
  "version": 3,
  "sources": ["/cdn/shop/t/131/assets/florame-account-center.js?florame_v=20260924-sheet-motion-v940"],
  "sourcesContent": ["(function () {\r\n  'use strict';\r\n\r\n  var ROOT_SELECTOR = '[data-florame-account-center]';\r\n  var TRIGGER_SELECTOR = '[data-florame-account-trigger]';\r\n  var AUTH_TRIGGER_SELECTOR = '[data-florame-auth-trigger]';\r\n  var CUSTOMER_LOGIN_PATH = '/account/login';\r\n  var HAPTICS_KEY = 'florame_haptics_enabled';\r\n  var THEME_KEY = 'florame-theme-preference';\r\n  var WEB_PUSH_HASH_KEY = 'florame_web_push_subscription_hash';\r\n  var LANGUAGE_KEYS = ['florame_native_lang', 'bouquetLanguage'];\r\n  var WEB_CUSTOMER_ID_KEY = 'florame_customer_id';\r\n  var WEB_CUSTOMER_EMAIL_KEY = 'florame_customer_email';\r\n  var AUTH_CONTEXT_KEY = 'florame_account_auth_context_v1';\r\n  var LAST_GENERATION_KEY = 'florame_generation_result_job_v1';\r\n  var LAST_GENERATION_ACTIVE_KIND_KEY = 'florame_generation_active_kind_v1';\r\n  var LAST_GENERATION_ARCHIVE_KEY_PREFIX = 'florame_last_generation_v2:';\r\n  var LAST_GENERATION_URL_PARAM = 'florame_bg_job';\r\n  var LAST_GENERATION_MAX_AGE_MS = 30 * 60 * 1000;\r\n  var LAST_GENERATION_SYNC_INTERVAL_MS = 12000;\r\n  var AUTH_PROBE_INTERVAL_MS = 12000;\r\n  var instances = [];\r\n  var authProbePromise = null;\r\n  var lastAuthProbeAt = 0;\r\n  var lastGenerationSyncPromise = null;\r\n  var lastGenerationSyncAt = 0;\r\n  var pendingPointerTrigger = null;\r\n  var pointerActivationTimer = 0;\r\n\r\n  var COPY = {\r\n    it: {\r\n      checking: 'Controllo disponibilit\u00E0\u2026',\r\n      active: 'Attive',\r\n      inactive: 'Da attivare',\r\n      complete: 'Da completare',\r\n      denied: 'Bloccate nelle impostazioni',\r\n      deniedHelp: 'Apri il lucchetto del browser, consenti le notifiche e riprova',\r\n      unsupported: 'Non disponibili su questo dispositivo',\r\n      unavailable: 'Servizio momentaneamente non disponibile',\r\n      installFirst: 'Installa Florame per attivarle',\r\n      nativeAction: 'Tocca per verificare e attivare',\r\n      nativeActive: 'Attive sul dispositivo',\r\n      notificationsError: 'Non \u00E8 stato possibile aggiornare le notifiche',\r\n      hapticsOn: 'Attiva',\r\n      hapticsOff: 'Spenta',\r\n      hapticsUnsupported: 'Non supportata su questo dispositivo',\r\n      installing: 'Apro le istruzioni\u2026',\r\n      helpTitle: 'Supporto Florame',\r\n      helpDescription: 'FAQ, contatti email diretti e chat quando ti serve.',\r\n      chatOpening: 'Apro la chat\u2026',\r\n      chatUnavailable: 'La chat non \u00E8 disponibile in questo momento. Riprova tra poco.'\r\n    },\r\n    en: {\r\n      checking: 'Checking availability\u2026',\r\n      active: 'On',\r\n      inactive: 'Ready to enable',\r\n      complete: 'Setup incomplete',\r\n      denied: 'Blocked in device settings',\r\n      deniedHelp: 'Open the browser lock, allow notifications, then try again',\r\n      unsupported: 'Not available on this device',\r\n      unavailable: 'Service temporarily unavailable',\r\n      installFirst: 'Install Florame to enable them',\r\n      nativeAction: 'Tap to check and enable',\r\n      nativeActive: 'On for this device',\r\n      notificationsError: 'Notifications could not be updated',\r\n      hapticsOn: 'On',\r\n      hapticsOff: 'Off',\r\n      hapticsUnsupported: 'Not supported on this device',\r\n      installing: 'Opening instructions\u2026',\r\n      helpTitle: 'Florame support',\r\n      helpDescription: 'FAQs, direct email contacts and chat when you need it.',\r\n      chatOpening: 'Opening chat\u2026',\r\n      chatUnavailable: 'Chat is unavailable right now. Please try again shortly.'\r\n    }\r\n  };\r\n\r\n  function storageGet(key) {\r\n    try { return window.localStorage.getItem(key); } catch (_) { return null; }\r\n  }\r\n\r\n  function storageSet(key, value) {\r\n    try { window.localStorage.setItem(key, String(value)); } catch (_) {}\r\n  }\r\n\r\n  function storageRemove(key) {\r\n    try { window.localStorage.removeItem(key); } catch (_) {}\r\n  }\r\n\r\n  function lastGenerationCustomerId(root) {\r\n    if (!rootIsAuthenticated(root)) return '';\r\n    var customer = window.__loggedCustomer || {};\r\n    return String(customer.id || storageGet(WEB_CUSTOMER_ID_KEY) || '').trim();\r\n  }\r\n\r\n  function lastGenerationArchiveKey(root) {\r\n    return LAST_GENERATION_ARCHIVE_KEY_PREFIX + (lastGenerationCustomerId(root) || 'guest');\r\n  }\r\n\r\n  function parsedLastGeneration(raw, maxAgeMs) {\r\n    if (!raw) return null;\r\n    try {\r\n      var job = typeof raw === 'string' ? JSON.parse(raw) : raw;\r\n      if (!job || typeof job !== 'object') return null;\r\n      var status = String(job.status || '').toLowerCase();\r\n      if (status === 'error' || status === 'cancelled' || status === 'canceled') return null;\r\n      var updatedAt = Number(job.updatedAt || job.startedAt || job.productStartedAt || 0);\r\n      if (maxAgeMs && updatedAt && Date.now() - updatedAt > maxAgeMs) return null;\r\n      if (!(job.requestId || job.createRequestId || job.bouquetId || job.imageUrl || job.complete || job.returnUrl)) return null;\r\n      return job;\r\n    } catch (_) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function emit(name, detail) {\r\n    try { window.dispatchEvent(new CustomEvent(name, { detail: detail || {} })); } catch (_) {}\r\n  }\r\n\r\n  function readLastGeneration(root) {\r\n    var active = parsedLastGeneration(storageGet(LAST_GENERATION_KEY), LAST_GENERATION_MAX_AGE_MS);\r\n    var archived = parsedLastGeneration(storageGet(lastGenerationArchiveKey(root)), 0);\r\n    if (!active) return archived;\r\n    if (!archived) return active;\r\n    return Number(active.updatedAt || 0) >= Number(archived.updatedAt || 0) ? active : archived;\r\n  }\r\n\r\n  function lastGenerationTitle(job, root) {\r\n    var marketing = job && job.productData && job.productData.marketingContent;\r\n    var title = marketing && marketing.title || job && job.productData && job.productData.title || job && job.title || '';\r\n    title = String(title || '').replace(/\\s+/g, ' ').trim();\r\n    if (title && !/generazione|generation/i.test(title)) return title.slice(0, 90);\r\n    return root && root.getAttribute('data-language') === 'en' ? 'Your latest bouquet' : 'Il tuo ultimo bouquet';\r\n  }\r\n\r\n  function lastGenerationStatus(job, root) {\r\n    var english = root && root.getAttribute('data-language') === 'en';\r\n    var done = !!job && (String(job.status || '').toLowerCase() === 'done' || job.complete === true);\r\n    if (done) return english ? 'Ready \u00B7 Open the creation again' : 'Pronto \u00B7 Riapri la creazione';\r\n    return english ? 'Generating \u00B7 Follow the progress' : 'In generazione \u00B7 Segui l\u2019avanzamento';\r\n  }\r\n\r\n  function lastGenerationImage(job) {\r\n    var product = job && job.productData || {};\r\n    return String(job && job.imageUrl || product.imageUrl || product.bouquetImage || product.image || '').trim();\r\n  }\r\n\r\n  function refreshLastGeneration(instance) {\r\n    if (!instance || !instance.lastGeneration) return null;\r\n    var job = readLastGeneration(instance.root);\r\n    instance.lastGeneration.hidden = !job;\r\n    instance.lastGenerationJob = job;\r\n    if (!job) return null;\r\n    if (instance.lastGenerationTitle) instance.lastGenerationTitle.textContent = lastGenerationTitle(job, instance.root);\r\n    if (instance.lastGenerationStatus) instance.lastGenerationStatus.textContent = lastGenerationStatus(job, instance.root);\r\n    var imageUrl = lastGenerationImage(job);\r\n    if (instance.lastGenerationImage) {\r\n      instance.lastGenerationImage.hidden = !imageUrl;\r\n      if (imageUrl) instance.lastGenerationImage.src = imageUrl;\r\n      else instance.lastGenerationImage.removeAttribute('src');\r\n    }\r\n    if (instance.lastGenerationFallback) instance.lastGenerationFallback.hidden = !!imageUrl;\r\n    if (instance.lastGenerationOpen) {\r\n      instance.lastGenerationOpen.setAttribute('aria-label', (instance.root.getAttribute('data-language') === 'en' ? 'Open latest generation: ' : 'Riapri ultima generazione: ') + lastGenerationTitle(job, instance.root));\r\n    }\r\n    return job;\r\n  }\r\n\r\n  function lastGenerationApi(instance, action, body) {\r\n    var endpoint = instance && instance.root && instance.root.getAttribute('data-loyalty-endpoint') || '/apps/florame-messages';\r\n    var url = new URL(endpoint, window.location.origin);\r\n    url.searchParams.set('action', action);\r\n    return window.fetch(url.toString(), {\r\n      method: body ? 'POST' : 'GET',\r\n      credentials: 'same-origin',\r\n      cache: 'no-store',\r\n      headers: { Accept: 'application/json', 'Content-Type': 'application/json' },\r\n      body: body ? JSON.stringify(Object.assign({ action: action }, body)) : undefined\r\n    }).then(function (response) {\r\n      return response.json().catch(function () { return null; }).then(function (payload) {\r\n        if (!response.ok || !payload || payload.success === false) throw new Error(payload && payload.error || 'generation_sync_unavailable');\r\n        return payload;\r\n      });\r\n    });\r\n  }\r\n\r\n  function syncLastGeneration(instance, options) {\r\n    if (!instance || !rootIsAuthenticated(instance.root) || !lastGenerationCustomerId(instance.root)) return Promise.resolve(null);\r\n    var now = Date.now();\r\n    if (lastGenerationSyncPromise) return lastGenerationSyncPromise;\r\n    if (!(options && options.force) && now - lastGenerationSyncAt < LAST_GENERATION_SYNC_INTERVAL_MS) return Promise.resolve(readLastGeneration(instance.root));\r\n    lastGenerationSyncAt = now;\r\n    var local = readLastGeneration(instance.root);\r\n    lastGenerationSyncPromise = lastGenerationApi(instance, 'generation_latest').then(function (payload) {\r\n      var remote = parsedLastGeneration(payload && payload.generation, 0);\r\n      var localUpdatedAt = Number(local && local.updatedAt || 0);\r\n      var remoteUpdatedAt = Number(remote && remote.updatedAt || 0);\r\n      if (remote && remoteUpdatedAt > localUpdatedAt) {\r\n        storageSet(lastGenerationArchiveKey(instance.root), JSON.stringify(remote));\r\n        refreshLastGeneration(instance);\r\n        emit('florame:last-generation-restored', { source: 'account-cloud', generation: remote });\r\n        return remote;\r\n      }\r\n      if (local && (local.complete === true || String(local.status || '').toLowerCase() === 'done') && localUpdatedAt > remoteUpdatedAt) {\r\n        return lastGenerationApi(instance, 'generation_save', { generation: local }).then(function (saved) {\r\n          var canonical = parsedLastGeneration(saved && saved.generation, 0) || local;\r\n          storageSet(lastGenerationArchiveKey(instance.root), JSON.stringify(canonical));\r\n          refreshLastGeneration(instance);\r\n          return canonical;\r\n        });\r\n      }\r\n      refreshLastGeneration(instance);\r\n      return remote || local;\r\n    }).catch(function () {\r\n      refreshLastGeneration(instance);\r\n      return local;\r\n    }).finally(function () {\r\n      lastGenerationSyncPromise = null;\r\n    });\r\n    return lastGenerationSyncPromise;\r\n  }\r\n\r\n  function lastGenerationTarget(job) {\r\n    var appPath = window.__florameThemeConfig && window.__florameThemeConfig.appPath || '/pages/florame-app';\r\n    var fallback = appPath + '?mode=create';\r\n    var target;\r\n    try {\r\n      target = new URL(job && job.returnUrl || fallback, window.location.origin);\r\n      var appUrl = new URL(appPath, window.location.origin);\r\n      if (target.origin !== window.location.origin || target.pathname.replace(/\\/+$/, '') !== appUrl.pathname.replace(/\\/+$/, '')) target = new URL(fallback, window.location.origin);\r\n    } catch (_) {\r\n      target = new URL(fallback, window.location.origin);\r\n    }\r\n    target.searchParams.set('mode', 'create');\r\n    if (job && job.bouquetId) target.searchParams.set('bouquet', String(job.bouquetId));\r\n    var payload = {\r\n      v: job && job.v || 1,\r\n      kind: 'result',\r\n      storageKey: LAST_GENERATION_KEY,\r\n      returnUrl: target.pathname + target.search,\r\n      requestId: job && job.requestId || '',\r\n      createRequestId: job && job.createRequestId || '',\r\n      status: job && job.status || 'running',\r\n      progress: Number(job && job.progress || 0),\r\n      updatedAt: Date.now(),\r\n      complete: !!(job && job.complete),\r\n      muted: false,\r\n      bouquetId: job && job.bouquetId || null,\r\n      imageUrl: lastGenerationImage(job) || null\r\n    };\r\n    target.searchParams.set(LAST_GENERATION_URL_PARAM, JSON.stringify(payload));\r\n    return target.toString();\r\n  }\r\n\r\n  function openLastGeneration(instance) {\r\n    var job = refreshLastGeneration(instance);\r\n    if (!job) return;\r\n    job.updatedAt = Date.now();\r\n    job.muted = false;\r\n    try {\r\n      storageSet(LAST_GENERATION_KEY, JSON.stringify(job));\r\n      storageSet(LAST_GENERATION_ACTIVE_KIND_KEY, 'result');\r\n      storageSet(lastGenerationArchiveKey(instance.root), JSON.stringify(job));\r\n    } catch (_) {}\r\n    var target = lastGenerationTarget(job);\r\n    emit('florame:last-generation-open', { job: job, target: target });\r\n    instance.close(false);\r\n    window.setTimeout(function () { window.location.assign(target); }, 260);\r\n  }\r\n\r\n  function isNativeAccountActive() {\r\n    try {\r\n      if (window.__loggedCustomer && window.__loggedCustomer.nativeApp) return true;\r\n      if (document.documentElement.getAttribute('data-florame-native-signed-in') === 'true') return true;\r\n      return storageGet('florame_native_signed_in') === '1';\r\n    } catch (_) { return false; }\r\n  }\r\n\r\n  function rootIsAuthenticated(root) {\r\n    return !!root && root.getAttribute('data-authenticated') === 'true';\r\n  }\r\n\r\n  function applyWebCustomerIdentity(customerId, customerEmail) {\r\n    var normalizedId = customerId == null ? '' : String(customerId).trim();\r\n    var normalizedEmail = customerEmail == null ? '' : String(customerEmail).trim().toLowerCase();\r\n\r\n    if (normalizedId) storageSet(WEB_CUSTOMER_ID_KEY, normalizedId);\r\n    else storageRemove(WEB_CUSTOMER_ID_KEY);\r\n    if (normalizedEmail) storageSet(WEB_CUSTOMER_EMAIL_KEY, normalizedEmail);\r\n    else storageRemove(WEB_CUSTOMER_EMAIL_KEY);\r\n\r\n    try {\r\n      var loggedCustomer = window.__loggedCustomer && typeof window.__loggedCustomer === 'object'\r\n        ? window.__loggedCustomer\r\n        : {};\r\n      loggedCustomer.id = normalizedId || null;\r\n      loggedCustomer.email = normalizedEmail || null;\r\n      window.__loggedCustomer = loggedCustomer;\r\n      window.AWI_CUSTOMER_EMAIL = normalizedEmail || null;\r\n      window.__AWI_CUSTOMER_EMAIL = normalizedEmail || null;\r\n      window.customerEmail = normalizedEmail || null;\r\n      window.__customerEmail = normalizedEmail || null;\r\n      window.HOMEPAGE_INIT_CUSTOMER_EMAIL = normalizedEmail || null;\r\n      if (window.customerData && typeof window.customerData === 'object') {\r\n        window.customerData.email = normalizedEmail || null;\r\n      }\r\n      if (normalizedEmail) document.documentElement.setAttribute('data-customer-email', normalizedEmail);\r\n      else document.documentElement.removeAttribute('data-customer-email');\r\n    } catch (_) {}\r\n\r\n    try {\r\n      if (window.__florameWebPushConfig) {\r\n        window.__florameWebPushConfig.customerId = normalizedId || null;\r\n        window.__florameWebPushConfig.customerEmail = normalizedEmail || null;\r\n      }\r\n    } catch (_) {}\r\n  }\r\n\r\n  function syncClientAuthFromServer(instance) {\r\n    if (!instance || !instance.root) return;\r\n    var authenticated = rootIsAuthenticated(instance.root);\r\n    var customer = window.__loggedCustomer || {};\r\n    var customerId = authenticated && customer.id != null ? String(customer.id).trim() : '';\r\n    var customerEmail = authenticated && customer.email ? String(customer.email).trim() : '';\r\n\r\n    if (!authenticated && isNativeAccountActive()) {\r\n      emit('florame:auth-state', {\r\n        authenticated: true,\r\n        customerId: customer.id || null,\r\n        customerEmail: customer.email || null,\r\n        source: 'native-app'\r\n      });\r\n      return;\r\n    }\r\n\r\n    applyWebCustomerIdentity(customerId, customerEmail);\r\n    emit('florame:auth-state', {\r\n      authenticated: authenticated,\r\n      customerId: customerId || null,\r\n      customerEmail: customerEmail || null,\r\n      source: 'shopify-server'\r\n    });\r\n    if (authenticated && customerId) syncLastGeneration(instance);\r\n  }\r\n\r\n  function authProbeUrl() {\r\n    try {\r\n      var url = new URL(window.location.href);\r\n      url.hash = '';\r\n      url.searchParams.set('_florame_auth_probe', String(Date.now()));\r\n      return url.pathname + url.search;\r\n    } catch (_) {\r\n      return String(window.location.pathname || '/') + '?_florame_auth_probe=' + Date.now();\r\n    }\r\n  }\r\n\r\n  function parsedAuthState(html) {\r\n    if (!html || typeof window.DOMParser !== 'function') return null;\r\n    try {\r\n      var parsed = new window.DOMParser().parseFromString(html, 'text/html');\r\n      var root = parsed.querySelector(ROOT_SELECTOR);\r\n      if (!root) return null;\r\n      return root.getAttribute('data-authenticated') === 'true';\r\n    } catch (_) { return null; }\r\n  }\r\n\r\n  function ensureAuthFresh(instance, options) {\r\n    if (!instance || !instance.root || isNativeAccountActive() || typeof window.fetch !== 'function') {\r\n      return Promise.resolve(true);\r\n    }\r\n    var force = !!(options && options.force);\r\n    var now = Date.now();\r\n    if (authProbePromise) return authProbePromise;\r\n    if (!force && now - lastAuthProbeAt < AUTH_PROBE_INTERVAL_MS) return Promise.resolve(true);\r\n    lastAuthProbeAt = now;\r\n\r\n    authProbePromise = window.fetch(authProbeUrl(), {\r\n      method: 'GET',\r\n      credentials: 'same-origin',\r\n      cache: 'no-store',\r\n      headers: { Accept: 'text/html' }\r\n    }).then(function (response) {\r\n      if (!response || !response.ok) return null;\r\n      return response.text();\r\n    }).then(function (html) {\r\n      var serverAuthenticated = parsedAuthState(html);\r\n      if (serverAuthenticated == null) return true;\r\n      var renderedAuthenticated = rootIsAuthenticated(instance.root);\r\n      if (serverAuthenticated !== renderedAuthenticated) {\r\n        emit('florame:auth-stale', {\r\n          renderedAuthenticated: renderedAuthenticated,\r\n          serverAuthenticated: serverAuthenticated\r\n        });\r\n        window.location.reload();\r\n        return false;\r\n      }\r\n      syncClientAuthFromServer(instance);\r\n      return true;\r\n    }).catch(function () {\r\n      return true;\r\n    }).finally(function () {\r\n      authProbePromise = null;\r\n    });\r\n    return authProbePromise;\r\n  }\r\n\r\n  function waitForShopifyInboxToggle() {\r\n    var controller = window.FlorameShopifyInbox;\r\n    if (controller && typeof controller.waitForToggle === 'function') return controller.waitForToggle();\r\n    return Promise.resolve(null);\r\n  }\r\n\r\n  function languageOf(root) {\r\n    var raw = (root && root.getAttribute('data-language')) || storageGet(LANGUAGE_KEYS[0]) || document.documentElement.lang || 'it';\r\n    return String(raw).toLowerCase().indexOf('en') === 0 ? 'en' : 'it';\r\n  }\r\n\r\n  function copyFor(root) {\r\n    return COPY[languageOf(root)];\r\n  }\r\n\r\n  function currentLanguage() {\r\n    var value = storageGet(LANGUAGE_KEYS[0]) || storageGet(LANGUAGE_KEYS[1]) || document.documentElement.lang || 'it';\r\n    return String(value).slice(0, 2).toLowerCase();\r\n  }\r\n\r\n  function partnerSlug() {\r\n    try {\r\n      var params = new URLSearchParams(window.location.search);\r\n      var query = params.get('partner') || params.get('partnerSlug');\r\n      if (query) return String(query).trim();\r\n    } catch (_) {}\r\n    try {\r\n      var context = window.FloramePartner && typeof window.FloramePartner.getContext === 'function'\r\n        ? window.FloramePartner.getContext()\r\n        : null;\r\n      if (context && context.active && context.slug) return String(context.slug).trim();\r\n    } catch (_) {}\r\n    return '';\r\n  }\r\n\r\n  function safeCurrentReturnTo() {\r\n    var value = String(window.location.pathname || '/') + String(window.location.search || '') + String(window.location.hash || '');\r\n    return value.indexOf('//') === 0 ? '/' : value;\r\n  }\r\n\r\n  function safeReturnTo(value) {\r\n    var fallback = safeCurrentReturnTo();\r\n    if (!value) return fallback;\r\n    try {\r\n      var url = new URL(String(value), window.location.origin);\r\n      if (url.origin !== window.location.origin) return fallback;\r\n      var result = String(url.pathname || '/') + String(url.search || '') + String(url.hash || '');\r\n      return result.indexOf('//') === 0 ? fallback : result;\r\n    } catch (_) { return fallback; }\r\n  }\r\n\r\n  function authReturnTo(root) {\r\n    return safeReturnTo(root && root.getAttribute('data-fac-auth-return-to'));\r\n  }\r\n\r\n  function decorateLink(anchor) {\r\n    if (!anchor || !anchor.href) return;\r\n    try {\r\n      var url = new URL(anchor.href, window.location.origin);\r\n      var slug = partnerSlug();\r\n      var lang = currentLanguage();\r\n      var authRoute = anchor.getAttribute('data-fac-auth-route');\r\n      if (['favorites', 'creations'].indexOf(anchor.getAttribute('data-fac-route')) !== -1) {\r\n        url.pathname = lang === 'en' ? '/en' : '/';\r\n      }\r\n      var isAccountHost = String(url.hostname || '').toLowerCase() === 'account.florame.ai';\r\n\r\n      if (slug && !isAccountHost && !url.searchParams.has('partner') && !url.searchParams.has('partnerSlug')) {\r\n        url.searchParams.set('partner', slug);\r\n      }\r\n      if (lang && !url.searchParams.has('lang')) url.searchParams.set('lang', lang);\r\n      if (authRoute === 'login' || authRoute === 'register') {\r\n        url.searchParams.set('return_to', authReturnTo(anchor.closest(ROOT_SELECTOR)));\r\n      }\r\n      anchor.href = url.toString();\r\n    } catch (_) {}\r\n  }\r\n\r\n  function decorateLinks(root) {\r\n    if (!root) return;\r\n    Array.prototype.forEach.call(root.querySelectorAll('a[data-fac-route], a[data-fac-auth-route]'), decorateLink);\r\n  }\r\n\r\n  function rememberAuthContext(root, options) {\r\n    var opts = options || {};\r\n    var returnTo = safeReturnTo(opts.returnTo);\r\n    var intent = String(opts.intent || 'account').trim().slice(0, 80) || 'account';\r\n    if (root) {\r\n      root.setAttribute('data-fac-auth-return-to', returnTo);\r\n      root.setAttribute('data-fac-auth-intent', intent);\r\n    }\r\n    try {\r\n      window.sessionStorage.setItem(AUTH_CONTEXT_KEY, JSON.stringify({\r\n        returnTo: returnTo,\r\n        intent: intent,\r\n        scrollY: Math.max(0, Math.round(window.scrollY || 0)),\r\n        savedAt: Date.now()\r\n      }));\r\n    } catch (_) {}\r\n    return { returnTo: returnTo, intent: intent };\r\n  }\r\n\r\n  function restoreAuthContext(instance) {\r\n    if (!instance || !rootIsAuthenticated(instance.root)) return;\r\n    var saved = null;\r\n    try { saved = JSON.parse(window.sessionStorage.getItem(AUTH_CONTEXT_KEY) || 'null'); } catch (_) {}\r\n    if (!saved || safeReturnTo(saved.returnTo) !== safeCurrentReturnTo()) return;\r\n    try { window.sessionStorage.removeItem(AUTH_CONTEXT_KEY); } catch (_) {}\r\n    if (!Number.isFinite(Number(saved.scrollY))) return;\r\n    window.requestAnimationFrame(function () {\r\n      window.requestAnimationFrame(function () { window.scrollTo(0, Math.max(0, Number(saved.scrollY))); });\r\n    });\r\n  }\r\n\r\n  function focusables(panel) {\r\n    if (!panel) return [];\r\n    return Array.prototype.filter.call(\r\n      panel.querySelectorAll('a[href], button:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'),\r\n      function (node) { return !node.hidden && node.offsetParent !== null && node.getAttribute('aria-hidden') !== 'true'; }\r\n    );\r\n  }\r\n\r\n  function setSwitch(button, options) {\r\n    if (!button) return;\r\n    var opts = options || {};\r\n    button.classList.toggle('is-on', !!opts.on);\r\n    button.classList.toggle('is-checking', !!opts.checking);\r\n    button.classList.toggle('is-error', !!opts.error);\r\n    button.classList.toggle('is-action', !!opts.action);\r\n    button.disabled = !!opts.disabled;\r\n    if (button.hasAttribute('data-fac-haptics')) button.setAttribute('aria-checked', opts.on ? 'true' : 'false');\r\n    else button.setAttribute('aria-pressed', opts.on ? 'true' : 'false');\r\n    var status = button.querySelector('[data-fac-notifications-status], [data-fac-haptics-status]');\r\n    if (status && opts.label) status.textContent = opts.label;\r\n  }\r\n\r\n  function pushLabel(root, state) {\r\n    var c = copyFor(root);\r\n    if (!state || state.supported === false) return c.unsupported;\r\n    if (state.permission === 'denied') return c.denied;\r\n    if (state.platform === 'ios' && state.standalone === false && !state.subscribed) return c.installFirst;\r\n    if (state.subscribed) return c.active;\r\n    if (state.permission === 'granted') return c.complete;\r\n    return c.inactive;\r\n  }\r\n\r\n  function applyPushState(instance, state, options) {\r\n    var button = instance.notifications;\r\n    if (!button) return;\r\n    var opts = options || {};\r\n    var denied = state && state.permission === 'denied';\r\n    var unsupported = state && state.supported === false;\r\n    setSwitch(button, {\r\n      on: !!(state && state.subscribed),\r\n      checking: !!opts.checking,\r\n      error: !!opts.error || denied,\r\n      disabled: !!opts.checking || !!unsupported,\r\n      action: !!opts.action || denied,\r\n      label: opts.label || (opts.error ? copyFor(instance.root).notificationsError : pushLabel(instance.root, state))\r\n    });\r\n    instance.pushState = state || null;\r\n  }\r\n\r\n  function nativePushAvailable() {\r\n    return !!(window.FlorameNative && window.FlorameNative.isNative && typeof window.FlorameNative.requestNotifications === 'function');\r\n  }\r\n\r\n  function immediateWebPushState(api) {\r\n    if (api && typeof api.peekStatus === 'function') {\r\n      try { return api.peekStatus(); } catch (_) {}\r\n    }\r\n    var supported = 'serviceWorker' in navigator && 'Notification' in window && 'PushManager' in window;\r\n    var permission = 'Notification' in window ? Notification.permission : 'unsupported';\r\n    return {\r\n      supported: supported,\r\n      permission: permission,\r\n      subscribed: supported && permission === 'granted' && !!storageGet(WEB_PUSH_HASH_KEY),\r\n      platform: 'web',\r\n      verified: false\r\n    };\r\n  }\r\n\r\n  function refreshPush(instance) {\r\n    if (!instance.notifications) return Promise.resolve(null);\r\n    var c = copyFor(instance.root);\r\n    var refreshId = (instance.pushRefreshId || 0) + 1;\r\n    instance.pushRefreshId = refreshId;\r\n    if (nativePushAvailable()) {\r\n      if (instance.pushState && instance.pushState.platform === 'native') applyPushState(instance, instance.pushState);\r\n      else setSwitch(instance.notifications, { checking: true, label: c.checking });\r\n      var nativeStatus = typeof window.FlorameNative.notificationStatus === 'function'\r\n        ? window.FlorameNative.notificationStatus()\r\n        : window.FlorameNative.requestNotifications({ prompt: false, source: 'account_center_status' });\r\n      return Promise.resolve(nativeStatus)\r\n        .then(function (state) {\r\n          if (refreshId !== instance.pushRefreshId) return instance.pushState;\r\n          var normalized = state || { supported: true, subscribed: false, permission: 'default', platform: 'native' };\r\n          normalized.platform = 'native';\r\n          instance.nativePushActive = !!normalized.subscribed;\r\n          applyPushState(instance, normalized, { action: !normalized.subscribed, label: normalized.subscribed ? c.nativeActive : c.nativeAction });\r\n          return normalized;\r\n        })\r\n        .catch(function () {\r\n          if (refreshId !== instance.pushRefreshId) return instance.pushState;\r\n          var fallback = instance.pushState || { supported: true, subscribed: false, permission: 'default', platform: 'native' };\r\n          applyPushState(instance, fallback, { action: true, error: true, label: c.notificationsError });\r\n          return fallback;\r\n        });\r\n    }\r\n\r\n    var api = window.FlorameWebPush;\r\n    var immediate = immediateWebPushState(api);\r\n    applyPushState(instance, immediate);\r\n    if (!api || typeof api.status !== 'function') {\r\n      return Promise.resolve(immediate);\r\n    }\r\n\r\n    return Promise.resolve(api.status()).then(function (state) {\r\n      if (refreshId !== instance.pushRefreshId) return instance.pushState;\r\n      applyPushState(instance, state || { supported: false });\r\n      return state;\r\n    }).catch(function () {\r\n      if (refreshId !== instance.pushRefreshId) return instance.pushState;\r\n      applyPushState(instance, { supported: true }, { error: true, label: c.unavailable });\r\n      return null;\r\n    });\r\n  }\r\n\r\n  function togglePush(instance) {\r\n    if (!instance || !instance.notifications || instance.notifications.disabled) return;\r\n    instance.pushRefreshId = (instance.pushRefreshId || 0) + 1;\r\n    var c = copyFor(instance.root);\r\n    if (instance.pushState && instance.pushState.permission === 'denied') {\r\n      applyPushState(instance, instance.pushState, { action: true, error: true, label: c.deniedHelp });\r\n      return;\r\n    }\r\n    if (nativePushAvailable()) {\r\n      setSwitch(instance.notifications, { on: !!(instance.pushState && instance.pushState.subscribed), checking: true, action: true, label: c.checking });\r\n      Promise.resolve(window.FlorameNative.requestNotifications({ prompt: true, source: 'account_center' }))\r\n        .then(function (result) {\r\n          instance.nativePushActive = !!(result && result.permission === 'granted');\r\n          applyPushState(instance, { supported: true, subscribed: instance.nativePushActive, permission: result && result.permission, platform: 'native' }, { action: true, label: instance.nativePushActive ? c.nativeActive : c.nativeAction });\r\n        })\r\n        .catch(function (error) {\r\n          var denied = error && (error.permission === 'denied' || error.permission === 'prompt-with-rationale');\r\n          applyPushState(instance, { supported: true, subscribed: false, permission: denied ? 'denied' : 'default', platform: 'native' }, { action: true, error: true, label: denied ? c.denied : c.notificationsError });\r\n        });\r\n      return;\r\n    }\r\n\r\n    var api = window.FlorameWebPush;\r\n    if (!api || typeof api.setEnabled !== 'function') {\r\n      applyPushState(instance, { supported: true }, { error: true, label: c.unavailable });\r\n      return;\r\n    }\r\n    var target = !(instance.pushState && instance.pushState.subscribed);\r\n    setSwitch(instance.notifications, { on: target, checking: true, label: c.checking });\r\n    Promise.resolve(api.setEnabled(target))\r\n      .then(function (state) { applyPushState(instance, state || { supported: true, subscribed: target }); })\r\n      .catch(function () { refreshPush(instance).then(function () {\r\n        if (!instance.pushState || instance.pushState.permission !== 'denied') {\r\n          setSwitch(instance.notifications, { on: !!(instance.pushState && instance.pushState.subscribed), error: true, label: c.notificationsError });\r\n        }\r\n      }); });\r\n  }\r\n\r\n  function hapticsSupported() {\r\n    try {\r\n      if (window.FlorameHaptics && typeof window.FlorameHaptics.supported === 'function') return window.FlorameHaptics.supported();\r\n      if (typeof navigator === 'undefined' || typeof navigator.vibrate !== 'function') return false;\r\n      var userAgent = String(navigator.userAgent || '');\r\n      var isIos = /iPad|iPhone|iPod/i.test(userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);\r\n      var isMobile = navigator.userAgentData && typeof navigator.userAgentData.mobile === 'boolean'\r\n        ? navigator.userAgentData.mobile\r\n        : /Android|Mobi/i.test(userAgent);\r\n      return !isIos && isMobile;\r\n    } catch (_) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function hapticsEnabled() {\r\n    try {\r\n      if (window.FlorameHaptics && typeof window.FlorameHaptics.enabled === 'function') return window.FlorameHaptics.enabled();\r\n    } catch (_) {}\r\n    return storageGet(HAPTICS_KEY) !== '0';\r\n  }\r\n\r\n  function refreshHaptics(instance) {\r\n    if (!instance.haptics) return;\r\n    var c = copyFor(instance.root);\r\n    instance.haptics.hidden = !hapticsSupported();\r\n    if (instance.haptics.hidden) return;\r\n    var enabled = hapticsEnabled();\r\n    setSwitch(instance.haptics, { on: enabled, label: enabled ? c.hapticsOn : c.hapticsOff });\r\n  }\r\n\r\n  function toggleHaptics(instance) {\r\n    if (!instance || !instance.haptics || instance.haptics.disabled) return;\r\n    var next = !hapticsEnabled();\r\n    try {\r\n      if (window.FlorameHaptics && typeof window.FlorameHaptics.setEnabled === 'function') {\r\n        next = window.FlorameHaptics.setEnabled(next);\r\n      } else {\r\n        storageSet(HAPTICS_KEY, next ? '1' : '0');\r\n        emit('florame:hapticschange', { enabled: next });\r\n      }\r\n    } catch (_) {\r\n      storageSet(HAPTICS_KEY, next ? '1' : '0');\r\n    }\r\n    refreshHaptics(instance);\r\n    if (next && window.FlorameHaptics && typeof window.FlorameHaptics.vibrate === 'function') {\r\n      try { window.FlorameHaptics.vibrate([12, 24, 12]); } catch (_) {}\r\n    }\r\n  }\r\n\r\n  function refreshTheme(instance) {\r\n    storageSet(THEME_KEY, 'light');\r\n    document.documentElement.setAttribute('data-theme', 'light');\r\n    if (instance.theme) instance.theme.value = 'light';\r\n  }\r\n\r\n  function syncInstall(instance, detail) {\r\n    if (!instance.install) return;\r\n    var api = window.FlorameWebPush;\r\n    var native = !!(window.FlorameNative && window.FlorameNative.isNative);\r\n    var installed = detail && typeof detail.installed === 'boolean'\r\n      ? detail.installed\r\n      : !!(api && typeof api.isInstalled === 'function' && api.isInstalled());\r\n    var installable = detail && typeof detail.installable === 'boolean'\r\n      ? detail.installable\r\n      : document.documentElement.getAttribute('data-florame-pwa-installable') === '1';\r\n    var mobileInstructions = !!(api && ((typeof api.isAppleTouchDevice === 'function' && api.isAppleTouchDevice()) || (typeof api.isAndroidDevice === 'function' && api.isAndroidDevice())));\r\n    instance.install.hidden = native || installed || !api || typeof api.showInstall !== 'function' || (!installable && !mobileInstructions);\r\n  }\r\n\r\n  function openInstall(instance) {\r\n    if (!instance.install || instance.install.hidden) return;\r\n    var api = window.FlorameWebPush;\r\n    if (!api || typeof api.showInstall !== 'function') return;\r\n    instance.install.setAttribute('aria-busy', 'true');\r\n    var status = instance.install.querySelector('small');\r\n    var previous = status ? status.textContent : '';\r\n    if (status) status.textContent = copyFor(instance.root).installing;\r\n    try { api.showInstall(); } catch (_) {}\r\n    window.setTimeout(function () {\r\n      instance.install.removeAttribute('aria-busy');\r\n      if (status) status.textContent = previous;\r\n      syncInstall(instance);\r\n    }, 900);\r\n  }\r\n\r\n  function changeLanguage(instance) {\r\n    var select = instance.language;\r\n    if (!select) return;\r\n    var language = String(select.value || 'it').slice(0, 8);\r\n    // Only expose locales whose custom Florame flows are ready.\r\n    if (language !== 'it' && language !== 'en') return;\r\n    LANGUAGE_KEYS.forEach(function (key) { storageSet(key, language); });\r\n    var next = language.slice(0, 2).toLowerCase() === 'en' ? 'en' : 'it';\r\n    instance.root.setAttribute('data-language', next);\r\n    if (typeof window.__florameLoadNativeI18n === 'function') {\r\n      window.__florameLoadNativeI18n(next).catch(function () {});\r\n    } else if (window.FlorameI18n && typeof window.FlorameI18n.setLanguage === 'function') {\r\n      window.FlorameI18n.setLanguage(next);\r\n    } else {\r\n      document.documentElement.setAttribute('lang', next);\r\n      emit('florame:native-language-change', { language: next });\r\n    }\r\n    refreshCapabilities(instance);\r\n    refreshLastGeneration(instance);\r\n  }\r\n\r\n  function refreshCapabilities(instance) {\r\n    if (!instance) return Promise.resolve();\r\n    decorateLinks(instance.root);\r\n    refreshHaptics(instance);\r\n    refreshTheme(instance);\r\n    syncInstall(instance);\r\n    return refreshPush(instance);\r\n  }\r\n\r\n  function AccountCenter(root) {\r\n    this.root = root;\r\n    this.panel = root.querySelector('.fac__panel');\r\n    this.notifications = root.querySelector('[data-fac-notifications]');\r\n    this.haptics = root.querySelector('[data-fac-haptics]');\r\n    this.theme = root.querySelector('[data-fac-theme]');\r\n    this.language = root.querySelector('[data-fac-language]');\r\n    this.install = root.querySelector('[data-fac-install]');\r\n    this.helpButton = root.querySelector('[data-fac-help]');\r\n    this.helpView = root.querySelector('[data-fac-help-view]');\r\n    this.helpBack = root.querySelector('[data-fac-help-back]');\r\n    this.chatButtons = root.querySelectorAll('[data-fac-chat]');\r\n    this.chatStatus = root.querySelector('[data-fac-chat-status]');\r\n    this.lastGeneration = root.querySelector('[data-fac-last-generation]');\r\n    this.lastGenerationOpen = root.querySelector('[data-fac-last-generation-open]');\r\n    this.lastGenerationImage = root.querySelector('[data-fac-last-generation-image]');\r\n    this.lastGenerationFallback = root.querySelector('[data-fac-last-generation-fallback]');\r\n    this.lastGenerationTitle = root.querySelector('[data-fac-last-generation-title]');\r\n    this.lastGenerationStatus = root.querySelector('[data-fac-last-generation-status]');\r\n    this.lastGenerationJob = null;\r\n    this.title = root.querySelector('.fac__title');\r\n    this.description = root.querySelector('.fac__description');\r\n    this.scroll = root.querySelector('.fac__scroll');\r\n    this.accountTitle = this.title ? this.title.textContent : '';\r\n    this.accountDescription = this.description ? this.description.textContent : '';\r\n    this.lastTrigger = null;\r\n    this.restoreTriggerFocusOnClose = true;\r\n    this.closeTimer = 0;\r\n    this.openFrame = 0;\r\n    this.pushState = null;\r\n    this.pushRefreshId = 0;\r\n    this.nativePushActive = false;\r\n    this.dragState = null;\r\n    this.bind();\r\n    decorateLinks(root);\r\n    syncClientAuthFromServer(this);\r\n    lastAuthProbeAt = Date.now();\r\n    refreshHaptics(this);\r\n    refreshTheme(this);\r\n    syncInstall(this);\r\n    refreshLastGeneration(this);\r\n    syncLastGeneration(this, { force: true });\r\n  }\r\n\r\n  AccountCenter.prototype.bind = function () {\r\n    var self = this;\r\n    Array.prototype.forEach.call(this.root.querySelectorAll('[data-fac-close]'), function (button) {\r\n      button.addEventListener('click', function () { self.close(); });\r\n    });\r\n    if (this.notifications) this.notifications.addEventListener('click', function () { togglePush(self); });\r\n    if (this.haptics) this.haptics.addEventListener('click', function () { toggleHaptics(self); });\r\n    if (this.language) this.language.addEventListener('change', function () { changeLanguage(self); });\r\n    if (this.install) this.install.addEventListener('click', function () { openInstall(self); });\r\n    if (this.helpButton) this.helpButton.addEventListener('click', function () { self.openHelp(); });\r\n    if (this.helpBack) this.helpBack.addEventListener('click', function () { self.closeHelp(); });\r\n    if (this.lastGenerationOpen) this.lastGenerationOpen.addEventListener('click', function () { openLastGeneration(self); });\r\n    if (this.lastGenerationImage) this.lastGenerationImage.addEventListener('error', function () {\r\n      self.lastGenerationImage.hidden = true;\r\n      self.lastGenerationImage.removeAttribute('src');\r\n      if (self.lastGenerationFallback) self.lastGenerationFallback.hidden = false;\r\n    });\r\n    Array.prototype.forEach.call(this.chatButtons, function (button) {\r\n      button.addEventListener('click', function (event) { self.openChat(event); });\r\n    });\r\n    this.root.addEventListener('keydown', function (event) {\r\n      if (self.panel.hasAttribute('data-florame-bottom-sheet-enhanced')) return;\r\n      if (event.key === 'Escape') { event.preventDefault(); self.close(); return; }\r\n      if (event.key !== 'Tab') return;\r\n      var items = focusables(self.panel);\r\n      if (!items.length) { event.preventDefault(); self.panel.focus(); return; }\r\n      var first = items[0];\r\n      var last = items[items.length - 1];\r\n      if (event.shiftKey && document.activeElement === first) { event.preventDefault(); last.focus(); }\r\n      else if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first.focus(); }\r\n    });\r\n    this.bindSwipeToClose();\r\n  };\r\n\r\n  AccountCenter.prototype.bindSwipeToClose = function () {\r\n    var self = this;\r\n    var surfaces = this.root.querySelectorAll('[data-fac-drag-surface]');\r\n\r\n    function resetDrag() {\r\n      self.dragState = null;\r\n      self.root.classList.remove('is-dragging');\r\n      self.root.style.removeProperty('--fac-drag-y');\r\n      self.root.style.removeProperty('--fac-drag-backdrop');\r\n    }\r\n\r\n    function onPointerDown(event) {\r\n      if (self.panel?.hasAttribute('data-florame-bottom-sheet-enhanced')) return;\r\n      if (self.root.hidden || !self.root.classList.contains('is-open')) return;\r\n      if (event.button != null && event.button !== 0) return;\r\n      if (event.target && event.target.closest && event.target.closest('button,a,input,select,textarea')) return;\r\n      self.dragState = {\r\n        pointerId: event.pointerId,\r\n        startY: event.clientY,\r\n        lastY: event.clientY,\r\n        lastTime: event.timeStamp || Date.now(),\r\n        velocity: 0\r\n      };\r\n      self.root.classList.remove('is-swipe-closing');\r\n      self.root.classList.add('is-dragging');\r\n      try { event.currentTarget.setPointerCapture(event.pointerId); } catch (_) {}\r\n    }\r\n\r\n    function onPointerMove(event) {\r\n      var state = self.dragState;\r\n      if (!state || state.pointerId !== event.pointerId) return;\r\n      var y = Number(event.clientY || 0);\r\n      var delta = Math.max(0, y - state.startY);\r\n      var now = event.timeStamp || Date.now();\r\n      var elapsed = Math.max(1, now - state.lastTime);\r\n      state.velocity = Math.max(0, (y - state.lastY) / elapsed);\r\n      state.lastY = y;\r\n      state.lastTime = now;\r\n      self.root.style.setProperty('--fac-drag-y', delta.toFixed(1) + 'px');\r\n      self.root.style.setProperty('--fac-drag-backdrop', String(Math.max(.18, 1 - delta / Math.max(280, window.innerHeight * .72))));\r\n      if (delta > 4) event.preventDefault();\r\n    }\r\n\r\n    function onPointerEnd(event) {\r\n      var state = self.dragState;\r\n      if (!state || state.pointerId !== event.pointerId) return;\r\n      var delta = Math.max(0, Number(event.clientY || state.lastY) - state.startY);\r\n      var threshold = Math.max(92, Math.min(140, window.innerHeight * .13));\r\n      var shouldClose = event.type !== 'pointercancel' && (delta >= threshold || (delta >= 48 && state.velocity > .55));\r\n      try { event.currentTarget.releasePointerCapture(event.pointerId); } catch (_) {}\r\n      resetDrag();\r\n      if (shouldClose) {\r\n        self.root.classList.add('is-swipe-closing');\r\n        self.close();\r\n      }\r\n    }\r\n\r\n    Array.prototype.forEach.call(surfaces, function (surface) {\r\n      surface.addEventListener('pointerdown', onPointerDown);\r\n      surface.addEventListener('pointermove', onPointerMove);\r\n      surface.addEventListener('pointerup', onPointerEnd);\r\n      surface.addEventListener('pointercancel', onPointerEnd);\r\n    });\r\n  };\r\n\r\n  AccountCenter.prototype.open = function (trigger, restoreTriggerFocusOnClose) {\r\n    var self = this;\r\n    if (this.closeTimer) { window.clearTimeout(this.closeTimer); this.closeTimer = 0; }\r\n    if (this.openFrame) window.cancelAnimationFrame(this.openFrame);\r\n    this.lastTrigger = trigger || document.activeElement;\r\n    this.restoreTriggerFocusOnClose = restoreTriggerFocusOnClose !== false;\r\n    this.dragState = null;\r\n    this.root.classList.remove('is-dragging', 'is-swipe-closing');\r\n    this.root.style.removeProperty('--fac-drag-y');\r\n    this.root.style.removeProperty('--fac-drag-backdrop');\r\n    this.root.hidden = false;\r\n    document.body.classList.add('fac-scroll-locked');\r\n    if (trigger) trigger.setAttribute('aria-expanded', 'true');\r\n    // The shared sheet engine supplies the entering pose without a forced layout.\r\n    if (!this.panel.hasAttribute('data-florame-bottom-sheet-enhanced')) this.panel.getBoundingClientRect();\r\n    this.openFrame = window.requestAnimationFrame(function () {\r\n      self.openFrame = 0;\r\n      if (self.root.hidden) return;\r\n      self.root.classList.add('is-open');\r\n      self.panel.focus({ preventScroll: true });\r\n      // Give the opening surface one frame before refreshing storage, auth and push.\r\n      window.requestAnimationFrame(function () {\r\n        if (self.root.hidden) return;\r\n        refreshLastGeneration(self);\r\n        syncLastGeneration(self, { force: true });\r\n        refreshCapabilities(self);\r\n        syncClientAuthFromServer(self);\r\n        ensureAuthFresh(self);\r\n      });\r\n    });\r\n    emit('florame:account-center-open', { authenticated: this.root.getAttribute('data-authenticated') === 'true' });\r\n  };\r\n\r\n  AccountCenter.prototype.openHelp = function () {\r\n    if (!this.helpView) return;\r\n    var c = copyFor(this.root);\r\n    this.helpView.hidden = false;\r\n    this.root.classList.add('is-help-view');\r\n    if (this.title) this.title.textContent = c.helpTitle;\r\n    if (this.description) this.description.textContent = c.helpDescription;\r\n    if (this.chatStatus) this.chatStatus.textContent = '';\r\n    if (this.scroll) this.scroll.scrollTop = 0;\r\n    var firstSummary = this.helpView.querySelector('summary');\r\n    if (firstSummary && typeof firstSummary.focus === 'function') firstSummary.focus({ preventScroll: true });\r\n    emit('florame:account-help-open');\r\n  };\r\n\r\n  AccountCenter.prototype.closeHelp = function (restoreFocus) {\r\n    this.root.classList.remove('is-help-view');\r\n    if (this.helpView) this.helpView.hidden = true;\r\n    if (this.title) this.title.textContent = this.accountTitle;\r\n    if (this.description) this.description.textContent = this.accountDescription;\r\n    if (this.chatStatus) this.chatStatus.textContent = '';\r\n    if (this.scroll) this.scroll.scrollTop = 0;\r\n    if (restoreFocus !== false && this.helpButton && typeof this.helpButton.focus === 'function') this.helpButton.focus({ preventScroll: true });\r\n  };\r\n\r\n  AccountCenter.prototype.openChat = function (event) {\r\n    var self = this;\r\n    var c = copyFor(this.root);\r\n    var sourceButton = event && event.currentTarget ? event.currentTarget : null;\r\n    try { event.preventDefault(); event.stopPropagation(); } catch (_) {}\r\n    if (sourceButton) sourceButton.setAttribute('aria-busy', 'true');\r\n    if (this.chatStatus) this.chatStatus.textContent = c.chatOpening;\r\n\r\n    waitForShopifyInboxToggle().then(function (button) {\r\n      if (!button) {\r\n        if (sourceButton) sourceButton.removeAttribute('aria-busy');\r\n        if (self.chatStatus) self.chatStatus.textContent = c.chatUnavailable;\r\n        emit('florame:shopify-inbox-unavailable');\r\n        return;\r\n      }\r\n\r\n      self.close(false);\r\n      window.setTimeout(function () {\r\n        var controller = window.FlorameShopifyInbox;\r\n        var opener = controller && typeof controller.open === 'function'\r\n          ? controller.open\r\n          : window.openShopifyInboxFromMenu;\r\n        var result = typeof opener === 'function'\r\n          ? opener({ preventDefault: function () {}, stopPropagation: function () {} })\r\n          : false;\r\n        Promise.resolve(result).then(function (opened) {\r\n          if (sourceButton) sourceButton.removeAttribute('aria-busy');\r\n          if (opened === false) {\r\n            emit('florame:shopify-inbox-unavailable');\r\n            return;\r\n          }\r\n          emit('florame:shopify-inbox-opened');\r\n        });\r\n      }, 260);\r\n    });\r\n  };\r\n\r\n  AccountCenter.prototype.close = function (restoreFocus) {\r\n    var self = this;\r\n    if (this.openFrame) { window.cancelAnimationFrame(this.openFrame); this.openFrame = 0; }\r\n    if (this.root.hidden) return;\r\n    this.root.classList.remove('is-open');\r\n    document.body.classList.remove('fac-scroll-locked');\r\n    if (this.lastTrigger) this.lastTrigger.setAttribute('aria-expanded', 'false');\r\n    this.closeTimer = window.setTimeout(function () {\r\n      self.root.hidden = true;\r\n      self.root.classList.remove('is-dragging', 'is-swipe-closing');\r\n      self.root.style.removeProperty('--fac-drag-y');\r\n      self.root.style.removeProperty('--fac-drag-backdrop');\r\n      self.dragState = null;\r\n      self.closeHelp(false);\r\n      self.closeTimer = 0;\r\n    }, 240);\r\n    var shouldRestoreFocus = restoreFocus === true || (restoreFocus !== false && this.restoreTriggerFocusOnClose);\r\n    if (shouldRestoreFocus && this.lastTrigger && typeof this.lastTrigger.focus === 'function') {\r\n      try { this.lastTrigger.focus({ preventScroll: true }); } catch (_) { this.lastTrigger.focus(); }\r\n    } else if (this.lastTrigger && typeof this.lastTrigger.blur === 'function') {\r\n      // iOS Safari can keep a native ring around a tapped trigger after the sheet closes.\r\n      // Pointer users do not need focus restoration; keyboard and assistive activation still do.\r\n      this.lastTrigger.blur();\r\n    }\r\n    emit('florame:account-center-close');\r\n  };\r\n\r\n  function init(scope) {\r\n    var context = scope && scope.querySelectorAll ? scope : document;\r\n    var roots = [];\r\n    if (scope && scope.matches && scope.matches(ROOT_SELECTOR)) roots.push(scope);\r\n    Array.prototype.push.apply(roots, context.querySelectorAll(ROOT_SELECTOR));\r\n    roots.forEach(function (root) {\r\n      if (root.__florameAccountCenter) return;\r\n      var instance = new AccountCenter(root);\r\n      root.__florameAccountCenter = instance;\r\n      instances.push(instance);\r\n    });\r\n    Array.prototype.forEach.call(document.querySelectorAll(TRIGGER_SELECTOR), function (trigger) {\r\n      trigger.setAttribute('aria-haspopup', 'dialog');\r\n      trigger.setAttribute('aria-controls', 'FlorameAccountCenter');\r\n      if (!trigger.hasAttribute('aria-expanded')) trigger.setAttribute('aria-expanded', 'false');\r\n      trigger.style.touchAction = 'manipulation';\r\n    });\r\n    return instances;\r\n  }\r\n\r\n  function firstInstance() {\r\n    if (!instances.length) init(document);\r\n    return instances[0] || null;\r\n  }\r\n\r\n  function openUtility(instance, kind) {\r\n    if (!instance) return null;\r\n    var utility = String(kind || '').toLowerCase();\r\n    refreshCapabilities(instance);\r\n    if (utility === 'install') {\r\n      openInstall(instance);\r\n      return instance;\r\n    }\r\n    if (utility === 'last_generation' || utility === 'latest_generation') {\r\n      openLastGeneration(instance);\r\n      return instance;\r\n    }\r\n\r\n    instance.open(null, false);\r\n    window.requestAnimationFrame(function () {\r\n      if (utility === 'help') {\r\n        instance.openHelp();\r\n        return;\r\n      }\r\n      if (utility === 'club' || utility === 'florame_club') {\r\n        var clubEntry = instance.root.querySelector('[data-fac-loyalty-open], .fac__loyalty-entry--guest');\r\n        if (!clubEntry || clubEntry.hidden || instance.root.getAttribute('data-loyalty-available') !== 'true') return;\r\n        if (rootIsAuthenticated(instance.root) && window.FlorameCustomerLoyalty && typeof window.FlorameCustomerLoyalty.open === 'function') {\r\n          window.setTimeout(function () { window.FlorameCustomerLoyalty.open(clubEntry); }, 120);\r\n          return;\r\n        }\r\n        try { clubEntry.scrollIntoView({ behavior: 'smooth', block: 'center' }); } catch (_) {}\r\n        window.setTimeout(function () {\r\n          try { clubEntry.focus({ preventScroll: true }); } catch (_) { clubEntry.focus(); }\r\n        }, 180);\r\n        return;\r\n      }\r\n      if (utility !== 'language' || !instance.language) return;\r\n      try { instance.language.scrollIntoView({ behavior: 'smooth', block: 'center' }); } catch (_) {}\r\n      window.setTimeout(function () {\r\n        try { instance.language.focus({ preventScroll: true }); } catch (_) { instance.language.focus(); }\r\n      }, 180);\r\n    });\r\n    return instance;\r\n  }\r\n\r\n  function activateTrigger(trigger, restoreTriggerFocusOnClose) {\r\n    var instance = firstInstance();\r\n    if (instance) instance.open(trigger, restoreTriggerFocusOnClose);\r\n    return instance;\r\n  }\r\n\r\n  function isCustomerLoginLink(anchor) {\r\n    if (!anchor || !anchor.href || anchor.hasAttribute('data-florame-auth-native-bypass')) return false;\r\n    try {\r\n      var url = new URL(anchor.href, window.location.origin);\r\n      var host = String(url.hostname || '').toLowerCase();\r\n      var ownHost = String(window.location.hostname || '').toLowerCase();\r\n      var normalizedPath = String(url.pathname || '').replace(/^\\/[a-z]{2}(?:-[a-z]{2})?(?=\\/)/i, '');\r\n      return (host === ownHost || host === 'account.florame.ai') && normalizedPath === CUSTOMER_LOGIN_PATH;\r\n    } catch (_) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function loginLinkReturnTo(anchor) {\r\n    if (!anchor || !anchor.href) return '';\r\n    try {\r\n      var url = new URL(anchor.href, window.location.origin);\r\n      return url.searchParams.get('return_to') || url.searchParams.get('return_url') || '';\r\n    } catch (_) {\r\n      return '';\r\n    }\r\n  }\r\n\r\n  function nativeAuthFallbackUrl(context) {\r\n    var url = new URL(CUSTOMER_LOGIN_PATH, window.location.origin);\r\n    url.searchParams.set('return_to', safeReturnTo(context && context.returnTo));\r\n    return url.pathname + url.search;\r\n  }\r\n\r\n  function waitForNativeAccountApi(timeoutMs) {\r\n    return new Promise(function (resolve) {\r\n      var deadline = Date.now() + Math.max(0, Number(timeoutMs || 0));\r\n      function check() {\r\n        var api = window.FlorameShopifyAccountUi;\r\n        if (api && typeof api.open === 'function') { resolve(api); return; }\r\n        if (Date.now() >= deadline) { resolve(null); return; }\r\n        window.setTimeout(check, 32);\r\n      }\r\n      check();\r\n    });\r\n  }\r\n\r\n  function openNativeAuth(instance, context, trigger) {\r\n    var delay = instance && !instance.root.hidden ? 260 : 0;\r\n    if (delay) instance.close(false);\r\n\r\n    window.setTimeout(function () {\r\n      waitForNativeAccountApi(1200).then(function (nativeAccount) {\r\n        return nativeAccount\r\n          ? nativeAccount.open({ trigger: trigger || null, intent: context.intent, returnTo: context.returnTo })\r\n          : false;\r\n      }).then(function (opened) {\r\n        if (opened) return;\r\n        emit('florame:shopify-account-unavailable', {\r\n          intent: context.intent,\r\n          returnTo: context.returnTo\r\n        });\r\n        window.location.assign(nativeAuthFallbackUrl(context));\r\n      }).catch(function () {\r\n        window.location.assign(nativeAuthFallbackUrl(context));\r\n      });\r\n    }, delay);\r\n  }\r\n\r\n  function requestAuth(options) {\r\n    var opts = options || {};\r\n    var instance = firstInstance();\r\n    var context = {\r\n      returnTo: safeReturnTo(opts.returnTo),\r\n      intent: String(opts.intent || 'account').trim().slice(0, 80) || 'account'\r\n    };\r\n    if (!opts.force && ((instance && rootIsAuthenticated(instance.root)) || isNativeAccountActive())) {\r\n      emit('florame:auth-ready', {\r\n        authenticated: true,\r\n        intent: context.intent,\r\n        returnTo: context.returnTo\r\n      });\r\n      return instance;\r\n    }\r\n    context = rememberAuthContext(instance && instance.root, context);\r\n    if (instance) decorateLinks(instance.root);\r\n    emit('florame:auth-requested', {\r\n      intent: context.intent,\r\n      returnTo: context.returnTo,\r\n      trigger: opts.trigger || null\r\n    });\r\n    openNativeAuth(instance, context, opts.trigger || null);\r\n    return instance;\r\n  }\r\n\r\n  function authOptionsFromTrigger(trigger) {\r\n    var requestedReturnTo = trigger.getAttribute('data-florame-auth-return-to') || loginLinkReturnTo(trigger);\r\n    return {\r\n      intent: trigger.getAttribute('data-florame-auth-intent') || 'account',\r\n      returnTo: requestedReturnTo || (window.location.pathname + window.location.search + window.location.hash),\r\n      trigger: trigger\r\n    };\r\n  }\r\n\r\n  function cancelPointerActivation(trigger) {\r\n    if (trigger && pendingPointerTrigger && trigger !== pendingPointerTrigger) return;\r\n    if (pointerActivationTimer) window.clearTimeout(pointerActivationTimer);\r\n    pointerActivationTimer = 0;\r\n    pendingPointerTrigger = null;\r\n  }\r\n\r\n  function schedulePointerActivation(trigger) {\r\n    cancelPointerActivation();\r\n    pendingPointerTrigger = trigger;\r\n    pointerActivationTimer = window.setTimeout(function () {\r\n      var queuedTrigger = pendingPointerTrigger;\r\n      pointerActivationTimer = 0;\r\n      pendingPointerTrigger = null;\r\n      if (queuedTrigger && queuedTrigger.isConnected !== false) activateTrigger(queuedTrigger, false);\r\n    }, 380);\r\n  }\r\n\r\n  document.addEventListener('pointerup', function (event) {\r\n    if (event.pointerType !== 'touch' && event.pointerType !== 'pen') return;\r\n    var trigger = event.target && event.target.closest ? event.target.closest(TRIGGER_SELECTOR) : null;\r\n    if (!trigger) return;\r\n    schedulePointerActivation(trigger);\r\n  }, true);\r\n\r\n  document.addEventListener('click', function (event) {\r\n    var logoutLink = event.target && event.target.closest ? event.target.closest('a[href]') : null;\r\n    if (logoutLink && (logoutLink.hasAttribute('data-native-account-logout') || logoutLink.getAttribute('data-fac-auth-route') === 'logout' || logoutLink.classList.contains('profile-menu-item--logout') || /\\/account\\/logout(?:[?#]|$)/.test(logoutLink.href))) {\r\n      applyWebCustomerIdentity('', '');\r\n      try { window.sessionStorage.removeItem(AUTH_CONTEXT_KEY); } catch (_) {}\r\n      if (window.FlorameNativeAuth && window.FlorameNativeAuth.isAvailable && typeof window.FlorameNativeAuth.signOut === 'function') {\r\n        event.preventDefault();\r\n        window.FlorameNativeAuth.signOut().then(function () { window.location.assign(logoutLink.href); });\r\n      }\r\n      return;\r\n    }\r\n    var authTrigger = event.target && event.target.closest ? event.target.closest(AUTH_TRIGGER_SELECTOR) : null;\r\n    if (!authTrigger && event.target && event.target.closest) {\r\n      var loginLink = event.target.closest('a[href]');\r\n      if (isCustomerLoginLink(loginLink)) authTrigger = loginLink;\r\n    }\r\n    if (authTrigger) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      requestAuth(authOptionsFromTrigger(authTrigger));\r\n      return;\r\n    }\r\n    var trigger = event.target && event.target.closest ? event.target.closest(TRIGGER_SELECTOR) : null;\r\n    if (!trigger) return;\r\n    event.preventDefault();\r\n    cancelPointerActivation(trigger);\r\n    activateTrigger(trigger, event.detail === 0);\r\n  }, true);\r\n\r\n  window.addEventListener('florame:account-utility', function (event) {\r\n    var utility = event && event.detail ? event.detail.utility : '';\r\n    openUtility(firstInstance(), utility);\r\n  });\r\n  window.addEventListener('florame:request-auth', function (event) {\r\n    requestAuth(event && event.detail ? event.detail : {});\r\n  });\r\n\r\n  window.addEventListener('pageshow', function (event) {\r\n    instances.forEach(function (instance) {\r\n      refreshCapabilities(instance);\r\n      refreshLastGeneration(instance);\r\n      if (event && event.persisted) ensureAuthFresh(instance, { force: true });\r\n      else syncClientAuthFromServer(instance);\r\n    });\r\n  });\r\n  window.addEventListener('focus', function () {\r\n    var instance = firstInstance();\r\n    if (instance) {\r\n      ensureAuthFresh(instance);\r\n      refreshLastGeneration(instance);\r\n    }\r\n  });\r\n  window.addEventListener('storage', function (event) {\r\n    if (!event || event.key === LAST_GENERATION_KEY || event.key === LAST_GENERATION_ACTIVE_KIND_KEY || (event.key && event.key.indexOf(LAST_GENERATION_ARCHIVE_KEY_PREFIX) === 0)) instances.forEach(refreshLastGeneration);\r\n  });\r\n  window.addEventListener('florame:background-loading-change', function () { instances.forEach(refreshLastGeneration); });\r\n  window.addEventListener('florame:background-loading-clear', function () { instances.forEach(refreshLastGeneration); });\r\n  window.addEventListener('florame:last-generation-persisted', function () { instances.forEach(function (instance) { refreshLastGeneration(instance); syncLastGeneration(instance, { force: true }); }); });\r\n  document.addEventListener('visibilitychange', function () {\r\n    if (document.visibilityState !== 'visible') return;\r\n    var instance = firstInstance();\r\n    if (instance) {\r\n      ensureAuthFresh(instance);\r\n      refreshLastGeneration(instance);\r\n    }\r\n  });\r\n  window.addEventListener('florame:web-push-state', function (event) {\r\n    instances.forEach(function (instance) {\r\n      instance.pushRefreshId = (instance.pushRefreshId || 0) + 1;\r\n      applyPushState(instance, event && event.detail ? event.detail : {});\r\n    });\r\n  });\r\n  window.addEventListener('florame:web-push-ready', function () { instances.forEach(refreshPush); });\r\n  window.addEventListener('florame:native-push-token', function () {\r\n    instances.forEach(function (instance) {\r\n      instance.nativePushActive = true;\r\n      applyPushState(instance, { supported: true, subscribed: true, permission: 'granted', platform: 'native' }, { action: true, label: copyFor(instance.root).nativeActive });\r\n    });\r\n  });\r\n  window.addEventListener('florame:hapticschange', function () { instances.forEach(refreshHaptics); });\r\n  window.addEventListener('florame:pwa-install-state', function (event) {\r\n    instances.forEach(function (instance) { syncInstall(instance, event && event.detail ? event.detail : {}); });\r\n  });\r\n  window.addEventListener('florame:native-ready', function () { instances.forEach(refreshCapabilities); });\r\n  window.addEventListener('florame:partner-ready', function () { instances.forEach(function (instance) { decorateLinks(instance.root); }); });\r\n  window.addEventListener('florame:native-language-change', function (event) {\r\n    var next = event && event.detail && event.detail.language === 'en' ? 'en' : 'it';\r\n    instances.forEach(function (instance) {\r\n      instance.root.setAttribute('data-language', next);\r\n      if (instance.language) instance.language.value = next;\r\n      refreshCapabilities(instance);\r\n      refreshLastGeneration(instance);\r\n    });\r\n  });\r\n  window.FlorameAccountCenter = Object.assign({}, window.FlorameAccountCenter || {}, {\r\n    version: '1.10.2',\r\n    init: init,\r\n    open: function (trigger) { var instance = firstInstance(); if (instance) instance.open(trigger || null, true); return instance; },\r\n    requestAuth: requestAuth,\r\n    openUtility: function (kind) { return openUtility(firstInstance(), kind); },\r\n    install: function () { return openUtility(firstInstance(), 'install'); },\r\n    hasLastGeneration: function () {\r\n      var instance = firstInstance();\r\n      return !!(instance && refreshLastGeneration(instance));\r\n    },\r\n    openLastGeneration: function () {\r\n      var instance = firstInstance();\r\n      if (instance) openLastGeneration(instance);\r\n      return instance;\r\n    },\r\n    canInstall: function () {\r\n      var instance = firstInstance();\r\n      if (!instance) return false;\r\n      syncInstall(instance);\r\n      return !!(instance.install && !instance.install.hidden);\r\n    },\r\n    close: function () { instances.forEach(function (instance) { instance.close(); }); },\r\n    refreshCapabilities: function () { return Promise.all(instances.map(refreshCapabilities)); },\r\n    refreshAuth: function () { var instance = firstInstance(); return instance ? ensureAuthFresh(instance, { force: true }) : Promise.resolve(true); },\r\n    decorateLinks: function () { instances.forEach(function (instance) { decorateLinks(instance.root); }); },\r\n    refreshLastGeneration: function () { return instances.map(refreshLastGeneration); }\r\n  });\r\n\r\n  if (window.__floramePendingAuthRequest) {\r\n    var pendingAuthRequest = window.__floramePendingAuthRequest;\r\n    window.__floramePendingAuthRequest = null;\r\n    window.requestAnimationFrame(function () { requestAuth(pendingAuthRequest); });\r\n  }\r\n\r\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', function () {\r\n    init(document);\r\n    restoreAuthContext(firstInstance());\r\n  }, { once: true });\r\n  else {\r\n    init(document);\r\n    restoreAuthContext(firstInstance());\r\n  }\r\n})();\r\n"],
  "mappings": "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",
  "names": []
}
