{
  "version": 3,
  "sources": ["/cdn/shop/t/91/assets/florame-shopify-account-ui.js?florame_login=20261003-login-focus-v1155"],
  "sourcesContent": ["(function () {\n  'use strict';\n\n  if (window.FlorameShopifyAccountUi && window.FlorameShopifyAccountUi.loaded) return;\n\n  var ACCOUNT_SELECTOR = 'shopify-account[data-florame-shopify-account]';\n  var LAZY_ACCOUNT_SELECTOR = '[data-florame-shopify-account-lazy]';\n  var observedRoots = typeof WeakSet === 'function' ? new WeakSet() : null;\n  var emailRequestedAccounts = typeof WeakSet === 'function' ? new WeakSet() : null;\n  var emailRequestedRoots = typeof WeakSet === 'function' ? new WeakSet() : null;\n  var marketingConsentReviewedRoots = typeof WeakSet === 'function' ? new WeakSet() : null;\n  var swipeBoundDialogs = typeof WeakSet === 'function' ? new WeakSet() : null;\n  var shopAttemptBoundRoots = typeof WeakSet === 'function' ? new WeakSet() : null;\n  var pendingOpen = null;\n  var scheduled = false;\n  var viewportScheduled = false;\n  var SHOP_ATTEMPT_KEY = 'florame_shop_login_attempted_at';\n  var emailFormRoots = typeof WeakSet === 'function' ? new WeakSet() : null;\n  var loginTransitions = [];\n\n  function recordLoginState(account, state) {\n    if (!account || account.getAttribute('data-florame-login-state') === state) return;\n    account.setAttribute('data-florame-login-state', state);\n    loginTransitions.push({ state: state, at: Date.now() });\n    if (loginTransitions.length > 16) loginTransitions.shift();\n  }\n  var ACCOUNT_OPEN_TIMEOUT_MS = 6000;\n\n  function isItalian() {\n    var language = String(document.documentElement.lang || navigator.language || 'it').toLowerCase();\n    return language.indexOf('it') === 0;\n  }\n\n  function isWebView() {\n    // The current Android shell is native and does not load Capacitor.\n    if (window.FlorameAndroid || (window.FlorameNativePort && typeof window.FlorameNativePort.postMessage === 'function')) return true;\n    if (window.FlorameNative && window.FlorameNative.isNative) return true;\n    try {\n      if (window.Capacitor && typeof window.Capacitor.isNativePlatform === 'function' && window.Capacitor.isNativePlatform()) return true;\n      if (window.Capacitor && typeof window.Capacitor.getPlatform === 'function' && /^(android|ios)$/.test(window.Capacitor.getPlatform())) return true;\n    } catch (_) {}\n    if (window.ReactNativeWebView && typeof window.ReactNativeWebView.postMessage === 'function') return true;\n    var ua = String(navigator.userAgent || '');\n    var androidWebView = /FlorameAndroid\\//i.test(ua) || /;\\s*wv\\)/i.test(ua) || (/Android/i.test(ua) && /Version\\/4\\.0/i.test(ua));\n    var iosDevice = /iPhone|iPad|iPod/i.test(ua) || (/Macintosh/i.test(ua) && navigator.maxTouchPoints > 1);\n    var iosBrowser = /Safari|CriOS|FxiOS|EdgiOS|OPiOS/i.test(ua);\n    var iosWebView = iosDevice && /AppleWebKit/i.test(ua) && !iosBrowser;\n    return androidWebView || iosWebView || /FBAN|FBAV|Instagram|\\bLine\\//i.test(ua);\n  }\n\n  function isMobileViewport() {\n    return window.matchMedia ? window.matchMedia('(max-width: 989px)').matches : window.innerWidth <= 989;\n  }\n\n  function appendStyle(root, id, css) {\n    if (!root || root.querySelector('style[data-florame-style=\"' + id + '\"]')) return;\n    // Shopify's shadow roots do not receive page selectors. Extend our existing\n    // component stylesheet only on operational pages; authentication stays Shopify-owned.\n    if (root.host && (document.documentElement.getAttribute('data-florame-ui') === 'unified' || document.documentElement.hasAttribute('data-florame-marketplace-home'))) {\n      css += '\\n' + [\n        ':host { font-family: var(--ui-font, FlorameInter, Inter, system-ui); color: var(--ui-ink, #282126); }',\n        'dialog.dialog { background: var(--ui-surface, #fff) !important; color: var(--ui-ink, #282126) !important; border: 1px solid var(--ui-line, #e9e2e6) !important; border-radius: 28px !important; }',\n        '.account, .account__header, .account__content, .login-form__root { font-family: var(--ui-font, FlorameInter, Inter, system-ui) !important; background: var(--ui-surface, #fff) !important; color: var(--ui-ink, #282126) !important; }',\n        '.login-form__email-input-wrapper { position: relative !important; box-sizing: border-box !important; min-height: 60px !important; padding: 0 !important; border: 1px solid #ded8dc !important; border-radius: 22px !important; box-shadow: none !important; }',\n        '.login-form__email-input-wrapper:focus-within { border-color: var(--ui-brand, #ff4d75) !important; box-shadow: 0 0 0 3px #ff4d751a !important; }',\n        '.login-form__email-input { box-sizing: border-box !important; min-width: 0 !important; width: 100% !important; min-height: 58px !important; padding-right: 68px !important; border: 0 !important; border-radius: inherit !important; background: transparent !important; box-shadow: none !important; }',\n        '.login-form__email-input:focus-visible { outline: none !important; }',\n        '.login-form__email-submit, [data-florame-email-switch=\"primary\"] { background-color: var(--ui-brand, #ff4d75) !important; background-image: var(--ui-action-gradient, radial-gradient(circle at 18% -50%,rgba(255,255,255,.48),transparent 42%),linear-gradient(118deg,#ff5a8d 0%,#ff2f6d 42%,#d91452 100%)) !important; color: #fff !important; border: 1px solid rgba(255,255,255,.48) !important; border-radius: 22px !important; min-height: 54px !important; padding: 14px 20px !important; font-size: 16px !important; font-weight: 900 !important; line-height: 1.3 !important; box-shadow: var(--ui-action-shadow, 0 20px 46px rgba(214,20,82,.3),0 7px 18px rgba(63,4,25,.14),inset 0 1px 0 rgba(255,255,255,.58),inset 0 -2px 0 rgba(105,0,38,.2)) !important; }',\n        '.login-form__email-submit { position: absolute !important; inset: 50% 5px auto auto !important; transform: translateY(-50%) !important; box-shadow: 0 4px 12px #d9145226, inset 0 1px 0 #ffffff70 !important; padding: 0 !important; width: 48px !important; min-width: 48px !important; height: 48px !important; min-height: 48px !important; border-radius: 18px !important; display: grid !important; place-items: center !important; flex-shrink: 0 !important; }',\n        '.login-form__email-submit:active:not(:disabled) { transform: translateY(-50%) scale(.96) !important; }',\n        '.login-form__email-submit svg { width: 20px !important; height: 20px !important; color: inherit !important; }',\n        '.login-form__email-submit:disabled, [data-florame-email-switch=\"primary\"]:disabled { background-image: none !important; background-color: #ededee !important; color: #66666e !important; box-shadow: none !important; }',\n        '@media(forced-colors:active) { .login-form__email-submit, [data-florame-email-switch=\"primary\"] { background: ButtonFace !important; color: ButtonText !important; border-color: ButtonText !important; } }',\n        '.account__close, [data-testid=\"login-button\"], [data-florame-shop-action=\"secondary\"], .login-form__social-login-button { border-radius: 14px !important; background: #fff !important; color: var(--ui-ink, #282126) !important; box-shadow: none !important; }',\n        '.florame-account-primary-action, .florame-account-guest-assistant { border: 1px solid var(--ui-line, #e9e2e6) !important; border-radius: 14px !important; background: var(--ui-surface, #fff) !important; box-shadow: none !important; }',\n        '.florame-account-primary-action__icon, .florame-account-guest-assistant__icon { background: var(--ui-brand-soft, #fff0f4) !important; color: var(--ui-brand, #ff4d75) !important; box-shadow: none !important; }',\n        'button:focus-visible, a:focus-visible, input:not(.login-form__email-input):focus-visible { outline: 3px solid var(--ui-brand, #ff4d75) !important; outline-offset: 3px !important; }',\n        '.florame-account-guest-assistant__copy em { white-space: normal !important; overflow: visible !important; }',\n        '.account__heading { font: 750 24px/1.2 var(--ui-font, FlorameInter, Inter, system-ui) !important; letter-spacing: -.035em !important; }',\n        '@media(max-width:989px) { dialog.dialog { border-radius: 28px 28px 0 0 !important; } }',\n        // Geometry belongs to single-surface below, including the visual viewport.\n      ].join('\\n');\n    }\n    var style = document.createElement('style');\n    style.setAttribute('data-florame-style', id);\n    style.textContent = css;\n    root.appendChild(style);\n  }\n\n  function normalizedText(element) {\n    return String(element && element.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase();\n  }\n\n  function isRendered(element) {\n    if (!element || !element.getBoundingClientRect) return false;\n    var rect = element.getBoundingClientRect();\n    return rect.width > 0 && rect.height > 0 && (!element.getClientRects || element.getClientRects().length > 0);\n  }\n\n  function accountDialog(account) {\n    return account && account.shadowRoot ? account.shadowRoot.querySelector('dialog.dialog, dialog') : null;\n  }\n\n  function accountIsOpen(account) {\n    var dialog = accountDialog(account);\n    return !!(dialog && dialog.open);\n  }\n\n  function accountPriority(account) {\n    if (!account || !account.isConnected) return -1;\n    if (accountIsOpen(account)) return 1000;\n    var variant = String(account.getAttribute('data-florame-shopify-account') || 'header');\n    var score = isRendered(account) ? 100 : 0;\n    if (isMobileViewport() && variant === 'bottom-nav') score += 40;\n    else if (!isMobileViewport() && (variant === 'header' || variant === 'home-topbar')) score += 40;\n    else if (variant === 'home-profile') score += 20;\n    return score;\n  }\n\n  function preferredAccount() {\n    return Array.prototype.slice.call(document.querySelectorAll(ACCOUNT_SELECTOR))\n      .sort(function (left, right) { return accountPriority(right) - accountPriority(left); })[0] || null;\n  }\n\n  function lazyAccountPriority(trigger) {\n    if (!trigger || !trigger.isConnected) return -1;\n    var variant = String(trigger.getAttribute('data-florame-shopify-account-lazy') || 'header');\n    var score = isRendered(trigger) ? 100 : 0;\n    if (isMobileViewport() && variant === 'bottom-nav') score += 40;\n    else if (!isMobileViewport() && (variant === 'header' || variant === 'home-topbar')) score += 40;\n    else if (variant === 'home-profile') score += 20;\n    return score;\n  }\n\n  function preferredLazyAccount() {\n    return Array.prototype.slice.call(document.querySelectorAll(LAZY_ACCOUNT_SELECTOR))\n      .sort(function (left, right) { return lazyAccountPriority(right) - lazyAccountPriority(left); })[0] || null;\n  }\n\n  function hydrateLazyAccount(trigger) {\n    if (!trigger || !trigger.isConnected) return Promise.resolve(preferredAccount());\n    if (trigger.__florameAccountHydration) return trigger.__florameAccountHydration;\n\n    trigger.setAttribute('aria-busy', 'true');\n    trigger.__florameAccountHydration = Promise.resolve().then(function () {\n      var template = trigger.nextElementSibling;\n      if (!template || !template.matches || !template.matches('template[data-florame-shopify-account-template]')) return null;\n      var source = template.content && template.content.querySelector\n        ? template.content.querySelector(ACCOUNT_SELECTOR)\n        : null;\n      if (!source) return null;\n      var account = source.cloneNode(true);\n      setSignInReturn(account);\n      if (trigger.hasAttribute('data-florame-account-trigger')) {\n        account.setAttribute('data-florame-auth-portal', '');\n        // The navigation capsule has transforms/backdrop filters. Mount the SDK\n        // host outside it so Safari hit testing and the modal viewport agree.\n        // Keep a real box: display:contents breaks the dialog top layer in WebKit.\n        account.style.cssText = 'position:fixed;inset:0;width:100%;height:100%;pointer-events:none;contain:none;';\n        var avatar = account.querySelector('[slot=\"signed-out-avatar\"]');\n        if (avatar) avatar.hidden = true;\n        account.addEventListener('close', function () { if (trigger.isConnected) trigger.focus({ preventScroll: true }); });\n        document.body.appendChild(account);\n      } else trigger.replaceWith(account);\n      template.remove();\n      schedule();\n      return account;\n    }).catch(function () {\n      return null;\n    }).finally(function () {\n      if (trigger.isConnected) trigger.removeAttribute('aria-busy');\n    });\n    return trigger.__florameAccountHydration;\n  }\n\n  function signedOutTrigger(account) {\n    if (!account) return null;\n    var slotted = account.querySelector('[slot=\"signed-out-avatar\"]');\n    if (slotted && typeof slotted.click === 'function') return slotted;\n    if (!account.shadowRoot) return null;\n    return account.shadowRoot.querySelector('button[part~=\"signed-out-avatar\"], [part~=\"signed-out-avatar\"]');\n  }\n\n  function activateAccount(account) {\n    return new Promise(function (resolve) {\n      if (!account) { resolve(false); return; }\n      if (accountIsOpen(account)) { resolve(true); return; }\n\n      var settled = false;\n      var retryTimer = 0;\n      var timeoutTimer = 0;\n      var trigger = signedOutTrigger(account);\n\n      function finish(opened) {\n        if (settled) return;\n        settled = true;\n        account.removeEventListener('open', onOpen);\n        if (retryTimer) window.clearTimeout(retryTimer);\n        if (timeoutTimer) window.clearTimeout(timeoutTimer);\n        resolve(!!opened);\n      }\n\n      function onOpen() { finish(true); }\n      account.addEventListener('open', onOpen, { once: true });\n      // The custom element can be registered before its shadow button is mounted.\n      // Activate once it is ready; a second click can toggle an opening sheet closed.\n      var activated = false;\n      function tryActivate() {\n        if (settled) return;\n        if (accountIsOpen(account)) { finish(true); return; }\n        var internal = account.shadowRoot\n          ? account.shadowRoot.querySelector('button[part~=\"signed-out-avatar\"], [part~=\"signed-out-avatar\"]')\n          : null;\n        if (internal && !activated) {\n          activated = true;\n          try { (trigger || internal).click(); } catch (_) { finish(false); return; }\n        }\n        retryTimer = window.setTimeout(tryActivate, 80);\n      }\n      timeoutTimer = window.setTimeout(function () { finish(accountIsOpen(account)); }, ACCOUNT_OPEN_TIMEOUT_MS);\n      tryActivate();\n    });\n  }\n\n  function openAccount(options) {\n    if (pendingOpen) return pendingOpen;\n    var opts = options || {};\n    var sourceTrigger = opts.trigger || null;\n\n    function openReadyAccount(account) {\n      account = account || preferredAccount();\n      if (!account) return Promise.resolve(false);\n      setSignInReturn(account, opts.returnTo);\n      return activateAccount(account).then(function (opened) {\n        if (opened) {\n          schedule();\n          try {\n            window.dispatchEvent(new CustomEvent('florame:shopify-account-opened', {\n              detail: { sourceTrigger: sourceTrigger || null }\n            }));\n          } catch (_) {}\n        }\n        return opened;\n      });\n    }\n\n    var lazyTrigger = sourceTrigger && sourceTrigger.closest ? sourceTrigger.closest(LAZY_ACCOUNT_SELECTOR) : null;\n    var accountPromise = preferredAccount()\n      ? Promise.resolve(preferredAccount())\n      : hydrateLazyAccount(lazyTrigger || preferredLazyAccount());\n\n    pendingOpen = accountPromise.then(function (account) {\n      if (!account) return false;\n      if (!window.customElements || typeof window.customElements.whenDefined !== 'function') return openReadyAccount(account);\n      if (window.customElements.get && window.customElements.get('shopify-account')) return openReadyAccount(account);\n      return new Promise(function (resolve) {\n        var settled = false;\n        var timer = window.setTimeout(function () { settled = true; resolve(false); }, ACCOUNT_OPEN_TIMEOUT_MS);\n        window.customElements.whenDefined('shopify-account').then(function () {\n          if (settled) return;\n          settled = true;\n          window.clearTimeout(timer);\n          resolve(openReadyAccount(account));\n        }).catch(function () { window.clearTimeout(timer); resolve(false); });\n      });\n    }).then(function (opened) {\n      pendingOpen = null;\n      return opened;\n    }, function () {\n      pendingOpen = null;\n      return false;\n    });\n    return pendingOpen;\n  }\n\n  function isEmailSwitchText(text) {\n    return text === 'use email instead'\n      || text === 'usa email'\n      || text === \"usa l'email\"\n      || text === 'usa l\\u2019email';\n  }\n\n  function isShopActionText(text) {\n    return text === 'sign in with shop'\n      || text === 'continue with shop'\n      || text === 'log in with shop'\n      || text === 'accedi con shop'\n      || text === 'continua con shop';\n  }\n\n  function shouldAutoOpenEmail() {\n    // Shopify swaps and remounts the login subtree asynchronously. Clicking its\n    // \"use email\" control during that transition causes visible jumps, stale\n    // recognition state and, on some devices, a stuck Shop spinner. Keep the\n    // email action visually primary and let the customer choose it explicitly.\n    return false;\n  }\n\n  function owningAccount(node) {\n    var current = node && node.host ? node.host : node;\n    var guard = 0;\n    while (current && guard < 12) {\n      if (current.matches && current.matches(ACCOUNT_SELECTOR)) return current;\n      var tree = current.getRootNode ? current.getRootNode() : null;\n      if (tree && tree.host) current = tree.host;\n      else current = current.parentElement;\n      guard += 1;\n    }\n    return null;\n  }\n\n  function accountEmailInput(account) {\n    if (!account || !account.shadowRoot) return null;\n    var loginForm = account.shadowRoot.querySelector('shopify-login-form');\n    if (!loginForm || !loginForm.shadowRoot) return null;\n    var emailInput = loginForm.shadowRoot.querySelector('input[type=\"email\"], input[autocomplete=\"email\"]');\n    return isRendered(emailInput) ? emailInput : null;\n  }\n\n  function activeDeepElement() {\n    var active = document.activeElement;\n    var guard = 0;\n    while (active && active.shadowRoot && active.shadowRoot.activeElement && guard < 12) {\n      active = active.shadowRoot.activeElement;\n      guard += 1;\n    }\n    return active;\n  }\n\n  function isTextEntryActive() {\n    var active = activeDeepElement();\n    if (!active) return false;\n    return active.tagName === 'INPUT' || active.tagName === 'TEXTAREA' || active.isContentEditable;\n  }\n\n  function translateEmailSwitch(candidate) {\n    if (!candidate || !isItalian()) return;\n    candidate.setAttribute('aria-label', 'Usa l\\u2019email');\n    candidate.setAttribute('data-florame-email-switch', 'primary');\n    var translated = false;\n    Array.prototype.forEach.call(candidate.childNodes || [], function (node) {\n      if (node.nodeType !== 3 || !isEmailSwitchText(String(node.nodeValue || '').replace(/\\s+/g, ' ').trim().toLowerCase())) return;\n      if (node.nodeValue !== 'Usa l\\u2019email') node.nodeValue = 'Usa l\\u2019email';\n      translated = true;\n    });\n    Array.prototype.forEach.call(candidate.querySelectorAll('*'), function (element) {\n      if (element.children.length > 0 || !isEmailSwitchText(normalizedText(element))) return;\n      if (element.textContent !== 'Usa l\\u2019email') element.textContent = 'Usa l\\u2019email';\n      translated = true;\n    });\n    if (!translated && isEmailSwitchText(normalizedText(candidate))) candidate.textContent = 'Usa l\\u2019email';\n  }\n\n  function markShopActions(root) {\n    if (!root || !root.querySelectorAll) return;\n    var controls = root.querySelectorAll('button, a, [role=\"button\"]');\n    Array.prototype.forEach.call(controls, function (control) {\n      if (!isShopActionText(normalizedText(control)) && control.getAttribute('data-testid') !== 'login-button') return;\n      control.setAttribute('data-florame-shop-action', 'secondary');\n      control.hidden = isWebView();\n      if (control.hidden) control.style.setProperty('display', 'none', 'important');\n    });\n  }\n\n  function rememberShopAttempt() {\n    try { window.sessionStorage.setItem(SHOP_ATTEMPT_KEY, String(Date.now())); } catch (_) {}\n  }\n\n  function pendingShopAttemptAt() {\n    try { return Number(window.sessionStorage.getItem(SHOP_ATTEMPT_KEY) || 0); } catch (_) { return 0; }\n  }\n\n  function clearShopAttempt() {\n    try { window.sessionStorage.removeItem(SHOP_ATTEMPT_KEY); } catch (_) {}\n  }\n\n  function bindShopAttemptRecovery(root) {\n    if (!root || !root.addEventListener) return;\n    if (shopAttemptBoundRoots && shopAttemptBoundRoots.has(root)) return;\n    if (shopAttemptBoundRoots) shopAttemptBoundRoots.add(root);\n    root.addEventListener('click', function (event) {\n      var control = event.target && event.target.closest\n        ? event.target.closest('[data-testid=\"login-button\"], [data-florame-shop-action=\"secondary\"]')\n        : null;\n      if (!control || (!isShopActionText(normalizedText(control)) && control.getAttribute('data-testid') !== 'login-button')) return;\n      if (isWebView()) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        return;\n      }\n      rememberShopAttempt();\n    }, true);\n  }\n\n  function resetShopVisualState(root) {\n    if (!root || !root.querySelectorAll) return;\n    Array.prototype.forEach.call(root.querySelectorAll('[data-testid=\"shop-login-spinner\"]'), function (spinner) {\n      spinner.setAttribute('data-visible', 'false');\n      spinner.setAttribute('aria-hidden', 'true');\n    });\n    Array.prototype.forEach.call(root.querySelectorAll('[data-testid=\"login-button\"]'), function (button) {\n      button.disabled = false;\n      button.removeAttribute('aria-busy');\n    });\n  }\n\n  function recoverCancelledShopAttempt() {\n    var attemptedAt = pendingShopAttemptAt();\n    if (!attemptedAt || Date.now() - attemptedAt < 450 || document.visibilityState === 'hidden') return;\n    clearShopAttempt();\n    Array.prototype.forEach.call(document.querySelectorAll(ACCOUNT_SELECTOR), function (account) {\n      if (!account.shadowRoot) return;\n      var root = account.shadowRoot;\n      Array.prototype.forEach.call(root.querySelectorAll('shop-login'), function (shopLogin) {\n        if (shopLogin.shadowRoot) resetShopVisualState(shopLogin.shadowRoot);\n      });\n      var dialog = root.querySelector('dialog');\n      if (dialog && dialog.open) closeFromSwipe(dialog, root);\n    });\n  }\n\n  function requestEmailFirst(root) {\n    if (!root || !root.querySelectorAll) return;\n    var account = owningAccount(root);\n    var candidates = root.querySelectorAll('button, a, [role=\"button\"]');\n    for (var index = 0; index < candidates.length; index += 1) {\n      var candidate = candidates[index];\n      var text = normalizedText(candidate);\n      if (!isEmailSwitchText(text)) continue;\n\n      translateEmailSwitch(candidate);\n      if (!shouldAutoOpenEmail(account, candidate)) break;\n      if ((account && accountEmailInput(account)) || isTextEntryActive()) break;\n      if (account && emailRequestedAccounts && emailRequestedAccounts.has(account)) break;\n      if (!account && emailRequestedRoots && emailRequestedRoots.has(root)) break;\n      if (account && emailRequestedAccounts) emailRequestedAccounts.add(account);\n      else if (emailRequestedRoots) emailRequestedRoots.add(root);\n      try { candidate.click(); } catch (_) {}\n      break;\n    }\n  }\n\n  function styleShopLogin(shopLogin) {\n    if (!shopLogin || !shopLogin.shadowRoot) return;\n    var root = shopLogin.shadowRoot;\n    markShopActions(root);\n    bindShopAttemptRecovery(root);\n    appendStyle(root, 'shop-secondary', [\n      '[data-testid=\"login-button\"], [data-florame-shop-action=\"secondary\"] {',\n      '  background: #ffffff !important;',\n      '  color: #513a43 !important;',\n      '  border: 1px solid rgba(81, 58, 67, .18) !important;',\n      '  box-shadow: none !important;',\n      '}',\n      '[data-testid=\"login-button\"] span, [data-florame-shop-action=\"secondary\"] span { color: #513a43 !important; }',\n      '[data-testid=\"login-button\"] svg, [data-florame-shop-action=\"secondary\"] svg { color: #513a43 !important; }',\n      '[data-testid=\"login-button\"] svg path, [data-florame-shop-action=\"secondary\"] svg path { fill: #513a43 !important; }',\n      '[data-testid=\"login-button\"]:hover, [data-florame-shop-action=\"secondary\"]:hover { background: #fff6f9 !important; }',\n      '[data-florame-email-switch=\"primary\"] {',\n      '  min-height: 54px !important;',\n      '  background: #ff4d75 !important;',\n      '  color: #ffffff !important;',\n      '  border: 1px solid #ff4d75 !important;',\n      '  border-radius: 999px !important;',\n      '  font-weight: 750 !important;',\n      '  box-shadow: 0 10px 24px rgba(255, 77, 117, .22) !important;',\n      '  order: -1 !important;',\n      '}',\n      '[data-florame-email-switch=\"primary\"] span { color: #ffffff !important; }',\n      '[data-florame-email-switch=\"primary\"]:hover { background: #e62f61 !important; }'\n    ].join('\\n'));\n    requestEmailFirst(root);\n    observeRoot(root);\n  }\n\n  function styleLoginForm(loginForm) {\n    if (!loginForm || !loginForm.shadowRoot) return;\n    var root = loginForm.shadowRoot;\n    var divider = root.querySelector('.login-form__divider');\n    var googleButtons = root.querySelectorAll('[data-provider=\"google\" i], [data-provider=\"google.com\" i]');\n    var webView = isWebView();\n    bindEmailForm(loginForm);\n\n    if (!marketingConsentReviewedRoots || !marketingConsentReviewedRoots.has(root)) {\n      var marketingConsent = root.querySelector(\n        '.login-form__marketing-consent-checkbox, .login-form__marketing-consent input[type=\"checkbox\"], input[name*=\"marketing\"], input[name*=\"accepts_marketing\"]'\n      );\n      if (marketingConsent) {\n        if (marketingConsentReviewedRoots) marketingConsentReviewedRoots.add(root);\n        var marketingWasChecked = !!(marketingConsent.checked || marketingConsent.defaultChecked || marketingConsent.hasAttribute('checked'));\n        marketingConsent.defaultChecked = false;\n        marketingConsent.removeAttribute('checked');\n        if (marketingConsent.checked) {\n          try { marketingConsent.click(); }\n          catch (_) {\n            marketingConsent.checked = false;\n            try { marketingConsent.dispatchEvent(new Event('change', { bubbles: true, composed: true })); } catch (_) {}\n          }\n        }\n        if (marketingWasChecked && !marketingConsent.checked) {\n          try { marketingConsent.dispatchEvent(new Event('input', { bubbles: true, composed: true })); } catch (_) {}\n          try { marketingConsent.dispatchEvent(new Event('change', { bubbles: true, composed: true })); } catch (_) {}\n        }\n        marketingConsent.setAttribute('data-florame-opt-in-default', 'off');\n      }\n    }\n\n    if (divider) {\n      divider.setAttribute('aria-label', isItalian() ? 'oppure' : 'or');\n      var dividerText = divider.querySelector('.login-form__divider-text');\n      var expectedDividerText = isItalian() ? 'oppure' : 'or';\n      if (dividerText && dividerText.textContent !== expectedDividerText) dividerText.textContent = expectedDividerText;\n    }\n    Array.prototype.forEach.call(googleButtons, function (google) {\n      google.hidden = webView;\n      var account = owningAccount(loginForm);\n      ['href', 'data-url'].forEach(function (attribute) {\n        var value = google.getAttribute(attribute);\n        if (!value || !account) return;\n        try {\n          var url = new URL(value, window.location.origin);\n          if (url.origin !== window.location.origin) return;\n          url.searchParams.set('return_to', safeSignInReturn(account.getAttribute('data-florame-sign-in-return')));\n          if (value !== url.href) google.setAttribute(attribute, url.href);\n        } catch (_) {}\n      });\n    });\n    // The native bridge may become available after Shopify's first render.\n    // A permanent attribute selector also wins against the SDK's display:flex.\n    loginForm.toggleAttribute('data-florame-webview', webView);\n\n    appendStyle(root, 'email-first', [\n      '.login-form__root { display: flex !important; flex-direction: column !important; gap: 12px !important; }',\n      '.login-form__email-form { order: -4; margin: 0 !important; }',\n      '.login-form__email-input-wrapper {',\n      '  min-height: 56px !important;',\n      '  border: 2px solid #ff4d75 !important;',\n      '  border-radius: 15px !important;',\n      '  box-shadow: 0 8px 24px rgba(255, 77, 117, .12) !important;',\n      '}',\n      '.login-form__email-input { font-size: 16px !important; }',\n      '.login-form__email-submit { background: #ff4d75 !important; color: #ffffff !important; }',\n      '.login-form__marketing-consent { order: -3; display: none !important; }',\n      '.login-form__divider { order: -2; margin: 2px 0 !important; }',\n      '.login-form__divider-text { color: #7a6870 !important; font-size: 12px !important; text-transform: lowercase !important; }',\n      '.login-form__social-login-button[data-provider=\"google\"] { background: #ffffff !important; color: #513a43 !important; border: 1px solid rgba(81, 58, 67, .16) !important; box-shadow: none !important; }',\n      '.login-form__social-login-button.shop-login svg path { fill: currentColor !important; }',\n      ':host([data-florame-webview]) [data-provider=\"google\"], [data-provider=\"google\"][hidden] { display: none !important; }',\n      ':host([data-florame-webview]) [data-provider=\"google.com\" i], :host([data-florame-webview]) [data-provider=\"google\" i] { display: none !important; }',\n      ':host([data-florame-webview]) .login-form__social-login-button.shop-login, :host([data-florame-webview]) [data-provider=\"shop\" i] { display: none !important; }',\n      ':host([data-florame-webview]) .login-form__divider { display: none !important; }'\n    ].join('\\n'));\n\n    var shopLogin = root.querySelector('shop-login');\n    if (shopLogin) styleShopLogin(shopLogin);\n    requestEmailFirst(root);\n    observeRoot(root);\n  }\n\n  function updateViewportMetrics() {\n    viewportScheduled = false;\n    var accounts = document.querySelectorAll(ACCOUNT_SELECTOR);\n    // Do not force a layout of the storefront for a dialog that does not exist.\n    if (!accounts.length) return;\n    var visual = window.visualViewport;\n    var viewportHeight = visual && visual.height ? visual.height : window.innerHeight;\n    var viewportTop = visual && typeof visual.offsetTop === 'number' ? visual.offsetTop : 0;\n    var layoutHeight = Math.max(window.innerHeight || 0, document.documentElement.clientHeight || 0);\n    var viewportBottom = Math.max(0, layoutHeight - viewportHeight - viewportTop);\n\n    Array.prototype.forEach.call(accounts, function (account) {\n      account.style.setProperty('--florame-account-viewport-height', Math.round(viewportHeight) + 'px');\n      account.style.setProperty('--florame-account-viewport-top', Math.round(viewportTop) + 'px');\n      account.style.setProperty('--florame-account-viewport-bottom', Math.round(viewportBottom) + 'px');\n      account.style.setProperty('--florame-account-keyboard-inset', Math.round(viewportBottom) + 'px');\n      keepFocusedFieldVisible(account);\n    });\n  }\n\n  function scheduleViewportMetrics() {\n    if (viewportScheduled) return;\n    viewportScheduled = true;\n    window.requestAnimationFrame(updateViewportMetrics);\n  }\n\n  function keepFocusedFieldVisible(account) {\n    var input = activeDeepElement();\n    if (!input || owningAccount(input) !== account || !account.shadowRoot || !isTextEntryActive()) return;\n    var content = account.shadowRoot.querySelector('.account__content');\n    if (!content || !content.getBoundingClientRect) return;\n    var visual = window.visualViewport;\n    var visibleTop = visual && visual.offsetTop || 0;\n    var visibleBottom = visibleTop + (visual && visual.height || window.innerHeight);\n    var inputRect = input.getBoundingClientRect();\n    var contentRect = content.getBoundingClientRect();\n    var topLimit = Math.max(contentRect.top, visibleTop) + 12;\n    var bottomLimit = Math.min(contentRect.bottom, visibleBottom) - 12;\n    var delta = 0;\n    if (inputRect.top < topLimit) delta = inputRect.top - topLimit;\n    else if (inputRect.bottom > bottomLimit) delta = inputRect.bottom - bottomLimit;\n    // Keyboard resize/pan already animates the viewport. A second smooth scroll fights it.\n    if (Math.abs(delta) >= 2) content.scrollTop += delta;\n  }\n\n  function closeFromSwipe(dialog, root) {\n    var closeButton = root.querySelector('.account__close, #close-button, button[aria-label*=\"Chiudi\"], button[aria-label*=\"Close\"]');\n    captureExitPosition(dialog);\n    if (closeButton) { closeButton.click(); return; }\n    dialog.classList.remove('is-florame-dragging', 'is-florame-snap-back');\n    dialog.style.removeProperty('--florame-account-drag-y');\n    if (typeof dialog.close === 'function') dialog.close();\n  }\n\n  function captureExitPosition(dialog) {\n    var transform = window.getComputedStyle(dialog).transform;\n    var y = transform && transform !== 'none' ? new DOMMatrixReadOnly(transform).m42 : 0;\n    dialog.style.setProperty('--florame-account-exit-y', Math.max(0, y) + 'px');\n  }\n\n  function ensureLoginBenefits(root, hasLogin) {\n    // Keep the benefits in the scrolling body, below authentication. The email\n    // field stays in place when the keyboard opens or Shopify changes views.\n    var region = root.querySelector('.account__content');\n    if (!region) return;\n    var benefits = region.querySelector('[data-florame-login-benefits]');\n    if (!hasLogin) { if (benefits) benefits.hidden = true; return; }\n    if (!benefits) {\n      var template = document.getElementById('FlorameLoginBenefitsTemplate');\n      if (!template || !template.content) return;\n      benefits = template.content.querySelector('[data-florame-login-benefits]').cloneNode(true);\n      region.appendChild(benefits);\n    }\n    benefits.hidden = false;\n    benefits.setAttribute('aria-label', isItalian() ? 'I vantaggi del tuo account' : 'Your account benefits');\n    var labels = isItalian() ? ['I tuoi ordini', 'Preferiti', 'Le tue creazioni', 'Indirizzi salvati'] : ['Your orders', 'Favorites', 'Your creations', 'Saved addresses'];\n    var descriptions = isItalian() ? ['Segui ogni bouquet, passo dopo passo.', 'Ritrova i bouquet che ami.', 'Tutti i bouquet creati da te, insieme.', 'I dati di fatturazione gi\u00E0 pronti.'] : ['Follow every bouquet, step by step.', 'Find the bouquets you love.', 'All the bouquets you made, together.', 'Your billing details, ready to use.'];\n    Array.prototype.forEach.call(benefits.querySelectorAll('li'), function (pill, index) {\n      var label = pill.querySelector('strong');\n      var description = pill.querySelector('small');\n      if (label.textContent !== labels[index]) label.textContent = labels[index];\n      if (description.textContent !== descriptions[index]) description.textContent = descriptions[index];\n    });\n  }\n\n  function guestCopy() {\n    if (isItalian()) {\n      return {\n        benefit: 'Accedi per seguire gli ordini, salvare gli indirizzi e ricevere assistenza pi\u00F9 velocemente.',\n        club: 'Florame Club',\n        clubSub: 'Punti, premi e occasioni da ricordare',\n        latest: 'Ultima generazione',\n        latestSub: 'Riapri il bouquet pi\u00F9 recente',\n        assistant: 'Chiedi a Florame',\n        assistantSub: 'AI per scegliere, persone per aiutarti',\n        language: 'Lingua',\n        install: 'Installa Florame',\n        help: 'Aiuto e supporto',\n        label: 'Strumenti Florame disponibili senza accesso'\n      };\n    }\n    return {\n      benefit: 'Sign in to track orders, save addresses and get help faster.',\n      club: 'Florame Club',\n      clubSub: 'Points, rewards and occasions to remember',\n      latest: 'Latest generation',\n      latestSub: 'Reopen your most recent bouquet',\n      assistant: 'Ask Florame',\n      assistantSub: 'AI to choose, people to help',\n      language: 'Language',\n      install: 'Install Florame',\n      help: 'Help and support',\n      label: 'Florame tools available without signing in'\n    };\n  }\n\n  function dispatchGuestUtility(utility) {\n    try {\n      window.dispatchEvent(new CustomEvent('florame:account-utility', {\n        detail: { utility: utility, source: 'shopify-login' }\n      }));\n    } catch (_) {}\n  }\n\n  function hasLastGeneration() {\n    var api = window.FlorameAccountCenter;\n    return !!(api && typeof api.hasLastGeneration === 'function' && api.hasLastGeneration());\n  }\n\n  function clubAvailable() {\n    return !!(window.__florameCustomerLoyaltyAvailability && window.__florameCustomerLoyaltyAvailability.enabled === true);\n  }\n\n  function ensurePageLockStyle() {\n    appendStyle(document.head || document.documentElement, 'page-lock', [\n      'html.florame-shopify-account-open, body.florame-shopify-account-open { overflow: hidden !important; overscroll-behavior: none !important; }'\n    ].join('\\n'));\n  }\n\n  function syncPageLock() {\n    var open = Array.prototype.some.call(document.querySelectorAll(ACCOUNT_SELECTOR), accountIsOpen);\n    document.documentElement.classList.toggle('florame-shopify-account-open', open);\n    if (document.body) document.body.classList.toggle('florame-shopify-account-open', open);\n  }\n\n  function accountUtilityIcon(kind) {\n    if (kind === 'club') return '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 3 5 6v5c0 4.5 2.8 8 7 10 4.2-2 7-5.5 7-10V6Z\"/><path d=\"M9 12.5 11.2 15 16 9.5\"/></svg>';\n    return '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m4 20 9.8-9.8\"/><path d=\"M12.5 4.5l.7-2 .7 2 2 .7-2 .7-.7 2-.7-2-2-.7 2-.7Z\"/><path d=\"M18.2 12.8l.6-1.7.6 1.7 1.7.6-1.7.6-.6 1.7-.6-1.7-1.7-.6 1.7-.6Z\"/></svg>';\n  }\n\n  function ensureAccountTools(root, dialog, hasLogin) {\n    if (!root || !dialog) return;\n    var content = root.querySelector('.account__content');\n    if (!content) return;\n    var copy = guestCopy();\n    var tools = content.querySelector('[data-florame-guest-tools]');\n    if (hasLogin || root.querySelector('[part~=\"signed-out-avatar\"]')) {\n      if (tools) tools.hidden = true;\n      return;\n    }\n    if (tools) tools.hidden = false;\n\n    if (!tools) {\n      tools = document.createElement('section');\n      tools.className = 'florame-account-guest-tools';\n      tools.setAttribute('data-florame-guest-tools', '1');\n      tools.setAttribute('aria-label', copy.label);\n\n      var primaryActions = document.createElement('div');\n      primaryActions.className = 'florame-account-primary-actions';\n      ['club', 'latest'].forEach(function (utility) {\n        var primary = document.createElement('button');\n        primary.type = 'button';\n        primary.className = 'florame-account-primary-action florame-account-primary-action--' + utility;\n        primary.setAttribute('data-florame-guest-utility', utility === 'latest' ? 'last_generation' : utility);\n        var icon = document.createElement('span');\n        icon.className = 'florame-account-primary-action__icon';\n        icon.setAttribute('aria-hidden', 'true');\n        icon.innerHTML = accountUtilityIcon(utility);\n        var primaryCopy = document.createElement('span');\n        primaryCopy.className = 'florame-account-primary-action__copy';\n        primaryCopy.innerHTML = '<strong></strong><small></small>';\n        var chevron = document.createElement('span');\n        chevron.className = 'florame-account-primary-action__chevron';\n        chevron.setAttribute('aria-hidden', 'true');\n        chevron.textContent = '\u203A';\n        primary.appendChild(icon);\n        primary.appendChild(primaryCopy);\n        primary.appendChild(chevron);\n        primary.addEventListener('click', function (event) {\n          event.preventDefault();\n          event.stopPropagation();\n          closeFromSwipe(dialog, root);\n          window.setTimeout(function () { dispatchGuestUtility(utility === 'latest' ? 'last_generation' : utility); }, 180);\n        });\n        primaryActions.appendChild(primary);\n      });\n      tools.appendChild(primaryActions);\n\n      var assistant = document.createElement('button');\n      assistant.type = 'button';\n      assistant.className = 'florame-account-guest-assistant';\n      assistant.setAttribute('data-florame-guest-utility', 'assistant');\n      assistant.setAttribute('aria-label', copy.assistant + '. ' + copy.assistantSub);\n\n      var assistantIcon = document.createElement('span');\n      assistantIcon.className = 'florame-account-guest-assistant__icon';\n      assistantIcon.setAttribute('aria-hidden', 'true');\n      assistantIcon.innerHTML = '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m4 20 9.8-9.8\"/><path d=\"M12.5 4.5l.7-2 .7 2 2 .7-2 .7-.7 2-.7-2-2-.7 2-.7Z\"/><path d=\"M18.2 12.8l.6-1.7.6 1.7 1.7.6-1.7.6-.6 1.7-.6-1.7-1.7-.6 1.7-.6Z\"/></svg>';\n\n      var assistantCopy = document.createElement('span');\n      assistantCopy.className = 'florame-account-guest-assistant__copy';\n      var assistantTitle = document.createElement('strong');\n      var assistantLabel = document.createElement('span');\n      assistantLabel.className = 'florame-account-guest-assistant__label';\n      assistantLabel.textContent = copy.assistant;\n      assistantTitle.appendChild(assistantLabel);\n      var assistantBadge = document.createElement('span');\n      assistantBadge.className = 'florame-account-guest-assistant__badge';\n      assistantBadge.textContent = 'AI';\n      assistantTitle.appendChild(assistantBadge);\n      var assistantSub = document.createElement('em');\n      assistantSub.textContent = copy.assistantSub;\n      assistantCopy.appendChild(assistantTitle);\n      assistantCopy.appendChild(assistantSub);\n\n      var assistantChevron = document.createElement('span');\n      assistantChevron.className = 'florame-account-guest-assistant__chevron';\n      assistantChevron.setAttribute('aria-hidden', 'true');\n      assistantChevron.textContent = '\u203A';\n\n      assistant.appendChild(assistantIcon);\n      assistant.appendChild(assistantCopy);\n      assistant.appendChild(assistantChevron);\n      assistant.addEventListener('click', function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n        assistant.setAttribute('aria-busy', 'true');\n        closeFromSwipe(dialog, root);\n        window.setTimeout(function () {\n          var inbox = window.FlorameShopifyInbox;\n          var opener = inbox && typeof inbox.open === 'function' ? inbox.open : window.openShopifyInboxFromMenu;\n          var result = typeof opener === 'function' ? opener() : false;\n          Promise.resolve(result).finally(function () { assistant.removeAttribute('aria-busy'); });\n        }, 260);\n      });\n      tools.appendChild(assistant);\n\n      var benefit = document.createElement('p');\n      benefit.className = 'florame-account-guest-benefit';\n      benefit.textContent = copy.benefit;\n      tools.appendChild(benefit);\n\n      var actions = document.createElement('div');\n      actions.className = 'florame-account-guest-actions';\n      ['language', 'install', 'help'].forEach(function (utility) {\n        var button = document.createElement('button');\n        button.type = 'button';\n        button.className = 'florame-account-guest-action';\n        button.setAttribute('data-florame-guest-utility', utility);\n        button.textContent = copy[utility];\n        button.addEventListener('click', function (event) {\n          event.preventDefault();\n          event.stopPropagation();\n          if (utility === 'install') {\n            var api = window.FlorameAccountCenter;\n            if (api && typeof api.install === 'function') api.install();\n            else dispatchGuestUtility(utility);\n            closeFromSwipe(dialog, root);\n            return;\n          }\n          closeFromSwipe(dialog, root);\n          window.setTimeout(function () { dispatchGuestUtility(utility); }, 260);\n        });\n        actions.appendChild(button);\n      });\n      tools.appendChild(actions);\n      content.appendChild(tools);\n    }\n\n    tools.setAttribute('aria-label', copy.label);\n    tools.setAttribute('data-florame-account-state', hasLogin ? 'guest' : 'customer');\n    Array.prototype.forEach.call(tools.querySelectorAll('.florame-account-primary-action'), function (button) {\n      var utility = button.getAttribute('data-florame-guest-utility');\n      var latest = utility === 'last_generation';\n      button.hidden = utility === 'club' ? !clubAvailable() : (latest && !hasLastGeneration());\n      var title = button.querySelector('strong');\n      var subtitle = button.querySelector('small');\n      if (title && title.textContent !== (latest ? copy.latest : copy.club)) title.textContent = latest ? copy.latest : copy.club;\n      if (subtitle && subtitle.textContent !== (latest ? copy.latestSub : copy.clubSub)) subtitle.textContent = latest ? copy.latestSub : copy.clubSub;\n      button.setAttribute('aria-label', (latest ? copy.latest : copy.club) + '. ' + (latest ? copy.latestSub : copy.clubSub));\n    });\n    var benefitCopy = tools.querySelector('.florame-account-guest-benefit');\n    if (benefitCopy && benefitCopy.textContent !== copy.benefit) benefitCopy.textContent = copy.benefit;\n    var assistantButton = tools.querySelector('.florame-account-guest-assistant');\n    if (assistantButton) {\n      assistantButton.setAttribute('aria-label', copy.assistant + '. ' + copy.assistantSub);\n      var assistantTitleCopy = assistantButton.querySelector('.florame-account-guest-assistant__label');\n      var assistantSubCopy = assistantButton.querySelector('.florame-account-guest-assistant__copy em');\n      if (assistantTitleCopy && assistantTitleCopy.textContent !== copy.assistant) assistantTitleCopy.textContent = copy.assistant;\n      if (assistantSubCopy && assistantSubCopy.textContent !== copy.assistantSub) assistantSubCopy.textContent = copy.assistantSub;\n    }\n    Array.prototype.forEach.call(tools.querySelectorAll('[data-florame-guest-utility]'), function (button) {\n      var utility = button.getAttribute('data-florame-guest-utility');\n      var hasStructuredCopy = utility === 'club' || utility === 'last_generation';\n      if (utility !== 'assistant' && !hasStructuredCopy && button.textContent !== (copy[utility] || utility)) button.textContent = copy[utility] || utility;\n      if (utility !== 'install') return;\n      var api = window.FlorameAccountCenter;\n      button.hidden = !!(api && typeof api.canInstall === 'function' && !api.canInstall());\n    });\n  }\n\n  function bindSwipeToClose(account, root, dialog) {\n    if (!dialog || !root) return;\n    if (swipeBoundDialogs && swipeBoundDialogs.has(dialog)) return;\n    if (swipeBoundDialogs) swipeBoundDialogs.add(dialog);\n\n    // Focusing an email field can resize/reposition the sheet between down and\n    // up. A tap that started inside must not become a Shopify backdrop click.\n    var pointerStartedInside = false;\n    dialog.addEventListener('pointerdown', function (event) {\n      pointerStartedInside = event.composedPath().some(function (node) {\n        return node && node.classList && node.classList.contains('account');\n      });\n    }, true);\n    dialog.addEventListener('click', function (event) {\n      var startedInside = pointerStartedInside;\n      pointerStartedInside = false;\n      if (startedInside && event.target === dialog) event.stopImmediatePropagation();\n    }, true);\n\n    var surface = root.querySelector('.account__header') || dialog;\n    var tracking = false;\n    var startY = 0;\n    var position = 0;\n    var velocity = 0;\n    var frame = 0;\n    var samples = [];\n    var pointerId = null;\n\n    function paint() {\n      dialog.style.setProperty('--florame-account-drag-y', position.toFixed(2) + 'px');\n    }\n\n    function stopSpring() {\n      if (frame) window.cancelAnimationFrame(frame);\n      frame = 0;\n    }\n\n    function settle() {\n      stopSpring();\n      var reduced = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n      if (reduced) position = velocity = 0;\n      var previous = performance.now();\n      function step(now) {\n        var dt = Math.min(.032, Math.max(.001, (now - previous) / 1000));\n        previous = now;\n        velocity += (-420 * position - 41 * velocity) * dt;\n        position = Math.max(0, position + velocity * dt);\n        paint();\n        if (!dialog.open || (position < .2 && Math.abs(velocity) < 4)) {\n          position = velocity = frame = 0;\n          dialog.classList.remove('is-florame-dragging');\n          dialog.style.removeProperty('--florame-account-drag-y');\n          return;\n        }\n        frame = window.requestAnimationFrame(step);\n      }\n      frame = window.requestAnimationFrame(step);\n    }\n\n    function shouldIgnore(target) {\n      return !!(target && target.closest && target.closest('button, a, input, textarea, select, [contenteditable=\"true\"]'));\n    }\n\n    function start(y, target) {\n      if (!dialog.open || !isMobileViewport() || shouldIgnore(target)) return false;\n      // Capture the presented position, including an interrupted opening or spring.\n      captureExitPosition(dialog);\n      position = parseFloat(dialog.style.getPropertyValue('--florame-account-exit-y')) || 0;\n      stopSpring();\n      tracking = true;\n      startY = y - position;\n      samples = [{ y: y, time: performance.now() }];\n      dialog.classList.remove('is-florame-snap-back');\n      dialog.setAttribute('data-florame-entered', '');\n      dialog.classList.add('is-florame-dragging');\n      paint();\n      return true;\n    }\n\n    function move(y, event) {\n      if (!tracking) return;\n      position = Math.max(0, y - startY);\n      var now = performance.now();\n      samples.push({ y: y, time: now });\n      samples = samples.filter(function (sample) { return now - sample.time <= 100; });\n      paint();\n      if (position > 0 && event && event.cancelable) event.preventDefault();\n    }\n\n    function finish(cancelled) {\n      if (!tracking) return;\n      tracking = false;\n      var first = samples[0], last = samples[samples.length - 1];\n      velocity = !cancelled && first && last && performance.now() - last.time < 100\n        ? (last.y - first.y) * 1000 / Math.max(16, last.time - first.time) : 0;\n      var threshold = Math.min(112, Math.max(72, window.innerHeight * 0.12));\n\n      if (!cancelled && (position >= threshold || (position >= 36 && position + velocity * .16 >= threshold))) {\n        closeFromSwipe(dialog, root);\n        return;\n      }\n      settle();\n    }\n\n    if (window.PointerEvent) {\n      surface.addEventListener('pointerdown', function (event) {\n        if (!event.isPrimary || !start(event.clientY, event.target)) return;\n        pointerId = event.pointerId;\n        if (surface.setPointerCapture) {\n          try { surface.setPointerCapture(event.pointerId); } catch (_) {}\n        }\n      });\n      surface.addEventListener('pointermove', function (event) { if (event.pointerId === pointerId) move(event.clientY, event); }, { passive: false });\n      surface.addEventListener('pointerup', function (event) { if (event.pointerId === pointerId) finish(false); });\n      surface.addEventListener('pointercancel', function (event) { if (event.pointerId === pointerId) finish(true); });\n      surface.addEventListener('lostpointercapture', function () { finish(true); });\n    } else {\n      surface.addEventListener('touchstart', function (event) {\n        if (event.touches && event.touches[0]) start(event.touches[0].clientY, event.target);\n      }, { passive: true });\n      surface.addEventListener('touchmove', function (event) {\n        if (event.touches && event.touches[0]) move(event.touches[0].clientY, event);\n      }, { passive: false });\n      surface.addEventListener('touchend', function () { finish(false); });\n      surface.addEventListener('touchcancel', function () { finish(true); });\n    }\n\n    root.addEventListener('click', function (event) {\n      if (!event.target.closest || !event.target.closest('.account__close')) return;\n      captureExitPosition(dialog);\n      stopSpring();\n      tracking = false;\n      dialog.classList.remove('is-florame-dragging');\n    }, true);\n    dialog.addEventListener('close', function () {\n      stopSpring();\n      tracking = false;\n      position = velocity = 0;\n      dialog.classList.remove('is-florame-dragging');\n      dialog.style.removeProperty('--florame-account-drag-y');\n      dialog.style.removeProperty('--florame-account-exit-y');\n      dialog.removeAttribute('data-florame-entered');\n    });\n\n    account.setAttribute('data-florame-swipe-ready', '1');\n  }\n\n  function safeSignInReturn(value) {\n    var fallback = window.location.pathname + window.location.search + window.location.hash;\n    function localPath(candidate) {\n      var text = String(candidate || '');\n      if (/\\\\|[\\u0000-\\u001f]/.test(text)) return '';\n      try {\n        var url = new URL(text, window.location.origin);\n        if (url.origin !== window.location.origin || url.username || url.password || url.pathname.indexOf('//') === 0) return '';\n        if (/^(?:\\/[a-z]{2}(?:-[a-z]{2})?)?\\/(account|authentication|customer_authentication|customer_identity)(?:\\/|$)/i.test(url.pathname)) return '';\n        return url.pathname + url.search + url.hash;\n      } catch (_) { return ''; }\n    }\n    return (value ? localPath(value) : '') || localPath(fallback) || '/';\n  }\n\n  function bindEmailForm(loginForm) {\n    var root = loginForm.shadowRoot;\n    if (!root || (emailFormRoots && emailFormRoots.has(root))) return;\n    if (emailFormRoots) emailFormRoots.add(root);\n    // The SDK's custom absolute sign-in URL renders the normal email form\n    // without attaching Shop's recognition slot. Keep Shopify-owned inputs.\n    loginForm.popupLogin = false;\n    // A late bridge can arrive after Shopify attached its discovery element.\n    // Disconnect that slot and suppress its queued callbacks; keep the input.\n    Array.prototype.forEach.call(loginForm.querySelectorAll('shop-login'), function (shop) {\n      ['loaded', 'lookup_start', 'lookup_end', 'shop_user_matched'].forEach(function (name) {\n        shop.addEventListener(name, function (event) { event.stopImmediatePropagation(); }, true);\n      });\n      shop.remove();\n    });\n    root.addEventListener('submit', function (event) {\n      var form = event.target;\n      if (!form || !form.matches('.login-form__email-form')) return;\n      var email = form.querySelector('input[type=\"email\"], input[autocomplete=\"email\"]');\n      if (!email || !email.value.trim() || !email.checkValidity()) return;\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      var account = owningAccount(loginForm);\n      if (account && account.getAttribute('data-florame-login-state') === 'submitting') return;\n      var url = new URL('/customer_authentication/login', window.location.origin);\n      url.searchParams.set('return_to', safeSignInReturn(account && account.getAttribute('data-florame-sign-in-return')));\n      url.searchParams.set('login_hint', email.value.trim());\n      url.searchParams.set('login_hint_mode', 'submit');\n      var language = loginForm.language || document.documentElement.lang;\n      if (language) url.searchParams.set('locale', language.replace('_', '-'));\n      if (/^[a-z]{2}$/i.test(loginForm.country || '')) url.searchParams.set('region_country', loginForm.country.toUpperCase());\n      var consent = root.querySelector('.login-form__marketing-consent-checkbox');\n      if (consent) url.searchParams.set('marketing_consent', consent.checked ? 'true' : 'false');\n      recordLoginState(account, 'submitting');\n      try { window.location.assign(url.href); }\n      catch (_) { recordLoginState(account, 'error'); }\n    }, true);\n    root.addEventListener('input', function (event) {\n      var email = event.target;\n      if (!email || !email.matches('input[type=\"email\"]')) return;\n      // Avoid the SDK lookup on input, including in the late-bridge case.\n      event.stopImmediatePropagation();\n      var submit = root.querySelector('.login-form__email-submit');\n      if (submit) submit.disabled = !email.value.trim() || !email.checkValidity();\n      recordLoginState(owningAccount(loginForm), 'email');\n    }, true);\n    var currentEmail = root.querySelector('input[type=\"email\"]');\n    var currentSubmit = root.querySelector('.login-form__email-submit');\n    if (currentEmail && currentSubmit) currentSubmit.disabled = !currentEmail.value.trim() || !currentEmail.checkValidity();\n    recordLoginState(owningAccount(loginForm), 'email');\n  }\n\n  function setSignInReturn(account, value) {\n    if (!value && !account.getAttribute('data-florame-sign-in-return')) {\n      try { value = new URL(account.getAttribute('sign-in-url'), window.location.origin).searchParams.get('return_to'); } catch (_) {}\n    }\n    var destination = safeSignInReturn(value || account.getAttribute('data-florame-sign-in-return'));\n    // Query-free absolute URLs opt out of the SDK's embedded Shop discovery.\n    // Email submit adds supported hints and the full return exactly once.\n    // Shop discovery replaces the input when it loads, losing typed focus.\n    account.setAttribute('data-florame-sign-in-return', destination);\n    var url = new URL('/customer_authentication/login', window.location.origin).href;\n    if (account.getAttribute('sign-in-url') !== url) account.setAttribute('sign-in-url', url);\n  }\n\n  function personalizeAccount(account) {\n    if (!account) return;\n    if (!account.hasAttribute('sign-in-url') || (isWebView() && !account.hasAttribute('data-florame-sign-in-return'))) setSignInReturn(account);\n    account.toggleAttribute('data-florame-native-login', isWebView());\n    if (account.hasAttribute('data-florame-auth-portal') && account.shadowRoot) {\n      appendStyle(account.shadowRoot, 'portal-avatar', '[part~=\"signed-out-avatar\"], [part~=\"signed-in-avatar\"] { display: none !important; } dialog { pointer-events: auto !important; }');\n    }\n    if (account.getAttribute('data-florame-account-bound') !== '1') {\n      account.setAttribute('data-florame-account-bound', '1');\n      // Late shadow-root attachment does not emit a child-list mutation on its host.\n      if (window.customElements && typeof window.customElements.whenDefined === 'function') {\n        ['shopify-login-form', 'shop-login'].forEach(function (name) {\n          window.customElements.whenDefined(name).then(schedule).catch(function () {});\n        });\n      }\n      account.addEventListener('open', function () {\n        recordLoginState(account, 'opening');\n        if (emailRequestedAccounts) emailRequestedAccounts.delete(account);\n        syncPageLock();\n        scheduleViewportMetrics();\n        schedule();\n      });\n      account.addEventListener('close', function () {\n        recordLoginState(account, 'closed');\n        window.requestAnimationFrame(syncPageLock);\n      });\n    }\n    if (!account.shadowRoot) return;\n    var root = account.shadowRoot;\n    var dialog = root.querySelector('dialog');\n    var loginLoader = root.querySelector('shopify-login-form-loader');\n    var loginForm = root.querySelector('shopify-login-form');\n    var shopLogin = root.querySelector('shop-login');\n    var menuRegion = root.querySelector('.account__menu-region');\n    var hasLogin = !!(loginLoader || loginForm || shopLogin);\n    account.toggleAttribute('data-florame-login-active', hasLogin);\n    ensureLoginBenefits(root, hasLogin);\n\n    if (dialog && !dialog.open && emailRequestedAccounts) emailRequestedAccounts.delete(account);\n    if (menuRegion) menuRegion.hidden = hasLogin;\n    var heading = root.querySelector('.account__heading');\n    if (hasLogin && heading && /^(Accedi o crea un account|Sign in or create an account|Accedi a Florame|Sign in to Florame)$/.test(heading.textContent.trim())) {\n      var title = isItalian() ? 'Accedi a Florame' : 'Sign in to Florame';\n      if (heading.textContent !== title) heading.textContent = title;\n    }\n    appendStyle(root, 'single-surface', [\n      // One sizing model for the shell, header and scrolling content. dvh alone excludes the keyboard.\n      'dialog.dialog { position: fixed !important; box-sizing: border-box !important; inset: var(--florame-account-viewport-top, 0px) 0 var(--florame-account-viewport-bottom, 0px) !important; margin: auto !important; width: min(440px, calc(100% - 32px)) !important; max-width: calc(100% - 32px) !important; height: fit-content !important; min-height: 0 !important; max-height: max(0px, calc(var(--florame-account-viewport-height, 100dvh) - 24px)) !important; padding: 0 !important; overflow: hidden !important; }',\n      '.account { display: flex !important; flex-direction: column !important; box-sizing: border-box !important; height: auto !important; min-height: 0 !important; max-height: max(0px, calc(var(--florame-account-viewport-height, 100dvh) - 26px)) !important; overflow: hidden !important; }',\n      'dialog.dialog::backdrop { background: rgba(40, 25, 33, .24); pointer-events: auto !important; }',\n      'dialog.dialog[open] { animation-duration: 340ms; animation-timing-function: cubic-bezier(.22,1,.36,1); }',\n      'dialog.dialog.closing { animation-duration: 220ms; animation-timing-function: cubic-bezier(.4,0,1,1); }',\n      'dialog.dialog[data-florame-entered][open]:not(.closing) { animation: none !important; }',\n      '.enter-right, .enter-left { --transition-amount: 16px !important; animation-timing-function: cubic-bezier(.22,1,.36,1) !important; }',\n      '.account__close { touch-action: manipulation; transition: transform 120ms ease-out !important; }',\n      '.account__close:active { transform: scale(.94); }',\n      '[data-florame-login-benefits] { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 20px 0 0; padding: 0; list-style: none; }',\n      '[data-florame-login-benefits][hidden] { display: none !important; }',\n      '[data-florame-login-benefits] li { display: grid; grid-template-columns: 40px minmax(0, 1fr); align-content: start; align-items: center; gap: 8px; box-sizing: border-box; min-width: 0; padding: 12px; border: 1px solid #eee3e8; border-radius: 22px; background: linear-gradient(140deg, #fff, var(--benefit-surface)); color: #402a35; font-family: var(--ui-font, FlorameInter, Inter, system-ui); box-shadow: inset 0 1px 0 #fff, 0 3px 8px rgb(54 36 47 / .035); }',\n      '.florame-login-benefit--orders { --menu-icon-ink: #207c65; --menu-icon-tint: #dbf3e9; --menu-icon-shade: #91c6b5; --benefit-surface: #f0faf5; }',\n      '.florame-login-benefit--heart { --menu-icon-ink: #b43362; --menu-icon-tint: #fbe1eb; --menu-icon-shade: #dda1b7; --benefit-surface: #fff2f7; }',\n      '.florame-login-benefit--bouquet { --menu-icon-ink: #88702a; --menu-icon-tint: #f8efcf; --menu-icon-shade: #d0c28c; --benefit-surface: #fffbef; }',\n      '.florame-login-benefit--profile { --menu-icon-ink: #6651b1; --menu-icon-tint: #eae3fb; --menu-icon-shade: #b7a4df; --benefit-surface: #f6f3ff; }',\n      '.florame-login-benefit__bubble { display: grid; place-items: center; box-sizing: border-box; width: 40px; height: 40px; border: 1px solid rgb(255 255 255 / .85); border-radius: 50%; color: var(--menu-icon-ink); background: radial-gradient(ellipse at 28% 18%, #fff 0%, var(--menu-icon-tint) 66%, var(--menu-icon-shade) 140%); box-shadow: inset 1px 2px 3px #fff, inset -1px -2px 3px var(--menu-icon-shade), 0 2px 3px rgb(54 36 47 / .1); }',\n      '.florame-login-benefit__bubble svg { display: block; width: 22px; height: 22px; }',\n      '[data-florame-login-benefits] strong { min-width: 0; color: #402a35; font-size: 13px; font-weight: 750; line-height: 1.25; overflow-wrap: break-word; }',\n      '[data-florame-login-benefits] small { grid-column: 1 / -1; color: #71616a; font-size: 12px; font-weight: 500; line-height: 1.4; overflow-wrap: break-word; }',\n      '@media (max-width: 359px) { [data-florame-login-benefits] { gap: 8px; } [data-florame-login-benefits] li { padding: 10px; grid-template-columns: 1fr; } }',\n      '@media (forced-colors: active) { [data-florame-login-benefits] li, .florame-login-benefit__bubble { border-color: CanvasText; background: Canvas; color: CanvasText; box-shadow: none; } [data-florame-login-benefits] strong, [data-florame-login-benefits] small { color: CanvasText; } }',\n      '.account__header-region { flex: 0 0 auto !important; height: auto !important; min-height: 0 !important; }',\n      '.account__header { position: relative !important; box-sizing: border-box !important; display: flex !important; align-items: center !important; gap: 12px !important; height: auto !important; min-height: 76px !important; padding: 20px 20px 12px !important; }',\n      '.account__header-content { flex: 1 1 auto !important; min-width: 0 !important; }',\n      '.account__heading { margin: 0 !important; overflow-wrap: break-word; }',\n      '.account__close { flex: 0 0 44px !important; width: 44px !important; min-width: 44px !important; height: 44px !important; min-height: 44px !important; padding: 0 !important; }',\n      '.account__content { margin: 0 !important; flex: 0 1 auto !important; box-sizing: border-box !important; height: auto !important; min-height: 0 !important; padding: 8px 20px max(24px, env(safe-area-inset-bottom)) !important; overflow: hidden auto !important; overscroll-behavior: contain; scroll-padding: 12px 0 16px; touch-action: pan-y; -webkit-overflow-scrolling: touch; }',\n      '.account__login-slot { margin-bottom: 0 !important; }',\n      '.account__menu-region[hidden] { display: none !important; }',\n      '.florame-account-guest-tools[hidden] { display: none !important; }',\n      '.florame-account-guest-tools { margin: 14px 2px 0; padding-top: 12px; border-top: 1px solid #f2ecea; }',\n      '.florame-account-primary-actions { display: grid; gap: 8px; margin-bottom: 9px; }',\n      '.florame-account-primary-action { display: grid; grid-template-columns: 38px minmax(0, 1fr) 18px; align-items: center; gap: 10px; width: 100%; min-height: 58px; padding: 9px 11px; border: 1px solid rgba(77, 132, 203, .2); border-radius: 15px; background: linear-gradient(118deg, rgba(238,247,255,.96), rgba(255,255,255,.98)); color: #26232a; text-align: left; cursor: pointer; touch-action: manipulation; box-shadow: 0 8px 20px rgba(40,83,130,.08); }',\n      '.florame-account-primary-action--club { border-color: rgba(53,145,103,.2); background: linear-gradient(118deg, rgba(235,250,243,.98), rgba(255,255,255,.98)); }',\n      '.florame-account-primary-action__icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 12px; background: #e9f4ff; color: #397dc5; }',\n      '.florame-account-primary-action--club .florame-account-primary-action__icon { background: #e7f7ef; color: #218c62; }',\n      '.florame-account-primary-action__icon svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }',\n      '.florame-account-primary-action__copy { display: grid; min-width: 0; gap: 2px; }',\n      '.florame-account-primary-action__copy strong { font-size: 14px; font-weight: 820; line-height: 1.18; }',\n      '.florame-account-primary-action__copy small { color: #6d656b; font-size: 11.5px; font-weight: 570; line-height: 1.3; }',\n      '.florame-account-primary-action__chevron { color: #8b858a; font-size: 22px; line-height: 1; }',\n      '.florame-account-primary-action[hidden] { display: none !important; }',\n      '.florame-account-guest-tools[data-florame-account-state=\"customer\"] .florame-account-guest-benefit { display: none; }',\n      '.florame-account-guest-assistant { display: grid; grid-template-columns: 34px minmax(0, 1fr) 20px; align-items: center; gap: 11px; width: 100%; min-height: 58px; padding: 9px 10px; border: 0; border-radius: 11px; background: linear-gradient(90deg, #fff0f4, rgba(255,255,255,0) 82%); box-shadow: none; color: #2b2226; text-align: left; cursor: pointer; touch-action: manipulation; transition: background-color .16s ease, transform .16s ease; }',\n      '.florame-account-guest-assistant__icon { display: grid; place-items: center; width: 34px; height: 34px; border: 0; border-radius: 11px; background: linear-gradient(135deg, #ed356a, #ff7067); box-shadow: none; color: #fff; }',\n      '.florame-account-guest-assistant__icon svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }',\n      '.florame-account-guest-assistant__copy { display: grid; min-width: 0; gap: 2px; }',\n      '.florame-account-guest-assistant__copy strong { display: flex; align-items: center; gap: 7px; color: #2f2026; font-size: 14px; font-weight: 820; line-height: 1.2; }',\n      '.florame-account-guest-assistant__badge { display: inline-flex; align-items: center; min-height: 18px; padding: 2px 6px; border: 1px solid rgba(237,53,106,.2); border-radius: 999px; background: #fff; color: #b92755; font-size: 9px; font-weight: 900; letter-spacing: .06em; line-height: 1; }',\n      '.florame-account-guest-assistant__copy em { overflow: hidden; color: #705e65; font-size: 12px; font-style: normal; font-weight: 580; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }',\n      '.florame-account-guest-assistant__chevron { display: grid; place-items: center; width: 20px; height: 30px; background: transparent; color: #9d9298; font-size: 22px; font-weight: 500; line-height: 1; }',\n      '.florame-account-guest-assistant:hover { background: linear-gradient(90deg, #ffe8ef, #fff 82%); transform: translateY(-1px); }',\n      '.florame-account-guest-assistant:focus-visible { outline: 3px solid rgba(255, 77, 117, .34); outline-offset: 3px; }',\n      '.florame-account-guest-assistant[aria-busy=\"true\"] { opacity: .72; pointer-events: none; }',\n      '.florame-account-guest-benefit { margin: 0; padding: 5px 12px 9px 56px; border-radius: 0; background: transparent; color: #786a70; font-size: 11.5px; font-weight: 560; line-height: 1.4; text-align: left; }',\n      '.florame-account-guest-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(92px, 1fr)); gap: 1px; margin-top: 7px; overflow: hidden; border: 1px solid rgba(81, 58, 67, .12); border-radius: 13px; background: rgba(81, 58, 67, .12); }',\n      '.florame-account-guest-action { min-width: 0; min-height: 44px; padding: 8px 7px; border: 0; border-radius: 0; background: #ffffff; color: #513a43; font: inherit; font-size: 13px; font-weight: 720; line-height: 1.2; cursor: pointer; touch-action: manipulation; }',\n      '.florame-account-guest-action:hover { background: #fff7f9; }',\n      '.florame-account-guest-action:focus-visible { position: relative; z-index: 1; outline: 2px solid #ff4d75; outline-offset: -2px; }',\n      '.florame-account-guest-action[hidden] { display: none !important; }',\n      '@media (max-width: 989px) {',\n      '  dialog.dialog {',\n      '    inset-block-start: auto !important;',\n      '    inset-block-end: var(--florame-account-viewport-bottom, 0px) !important;',\n      '    top: auto !important;',\n      '    bottom: var(--florame-account-viewport-bottom, 0px) !important;',\n      '    width: 100% !important; max-width: 100% !important; height: auto !important;',\n      '    min-height: 0 !important;',\n      '    max-height: calc(var(--florame-account-viewport-height, 100dvh) - 12px) !important;',\n      '    margin: 0 !important;',\n      '    border-radius: 24px 24px 0 0 !important;',\n      '    --dialog-drawer-opening-animation: account-drawer-slide-in;',\n      '    --dialog-drawer-closing-animation: account-drawer-slide-out;',\n      '  }',\n      '  .account { max-height: max(0px, calc(var(--florame-account-viewport-height, 100dvh) - 14px)) !important; }',\n      '  :host([data-florame-native-login][data-florame-login-active]) dialog.dialog { min-height: min(360px, calc(var(--florame-account-viewport-height, 100dvh) - 12px)) !important; }',\n      '  :host([data-florame-native-login][data-florame-login-active]) .account { min-height: min(358px, calc(var(--florame-account-viewport-height, 100dvh) - 14px)) !important; }',\n      '  .account__header { padding-top: 24px !important; touch-action: none; }',\n      '  .account__close { width: 44px !important; min-width: 44px !important; height: 44px !important; min-height: 44px !important; }',\n      '  .account__header::before {',\n      '    content: \"\";',\n      '    position: absolute;',\n      '    top: 7px;',\n      '    left: 50%;',\n      '    width: 42px;',\n      '    height: 5px;',\n      '    border-radius: 999px;',\n      '    background: rgba(21, 32, 25, .24);',\n      '    transform: translateX(-50%);',\n      '  }',\n      '  dialog.dialog.is-florame-dragging { animation: none !important; transition: none !important; opacity: 1 !important; transform: translate3d(0, var(--florame-account-drag-y, 0px), 0) !important; will-change: transform; }',\n      '  dialog.dialog.is-florame-snap-back { transition: transform 180ms ease-out !important; transform: translate3d(0, 0, 0) !important; }',\n      '}',\n      '@keyframes account-drawer-slide-in { from { transform: translateY(56px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }',\n      '@keyframes account-drawer-slide-out { from { transform: translateY(var(--florame-account-exit-y, 0px)); opacity: 1; } to { transform: translateY(calc(var(--florame-account-exit-y, 0px) + 56px)); opacity: 0; } }',\n      '@media (prefers-reduced-motion: reduce) { dialog.dialog[open], dialog.dialog.closing, .enter-right, .enter-left { animation: none !important; } dialog.dialog.is-florame-snap-back, .account__close { transition: none !important; } }'\n    ].join('\\n'));\n\n    if (dialog) bindSwipeToClose(account, root, dialog);\n    if (loginForm) styleLoginForm(loginForm);\n    if (dialog) ensureAccountTools(root, dialog, hasLogin);\n    requestEmailFirst(root);\n    observeRoot(root);\n    syncPageLock();\n  }\n\n  function inspectTree(root) {\n    if (!root || !root.querySelectorAll) return;\n    Array.prototype.forEach.call(root.querySelectorAll(ACCOUNT_SELECTOR), personalizeAccount);\n    if (root.host && root.host.matches && root.host.matches(ACCOUNT_SELECTOR)) personalizeAccount(root.host);\n\n    Array.prototype.forEach.call(root.querySelectorAll('*'), function (element) {\n      if (element.shadowRoot) {\n        if (element.tagName === 'SHOPIFY-LOGIN-FORM') styleLoginForm(element);\n        else if (element.tagName === 'SHOP-LOGIN') styleShopLogin(element);\n        requestEmailFirst(element.shadowRoot);\n        observeRoot(element.shadowRoot);\n        inspectTree(element.shadowRoot);\n      }\n    });\n  }\n\n  function run() {\n    scheduled = false;\n    ensurePageLockStyle();\n    // Shopify's nested shadow roots belong to the account, not to product grids.\n    Array.prototype.forEach.call(document.querySelectorAll(ACCOUNT_SELECTOR), function (account) {\n      personalizeAccount(account);\n      if (account.shadowRoot) inspectTree(account.shadowRoot);\n    });\n    scheduleViewportMetrics();\n    syncPageLock();\n  }\n\n  function schedule() {\n    if (scheduled) return;\n    scheduled = true;\n    window.requestAnimationFrame(run);\n  }\n\n  function observeRoot(root) {\n    if (!root || !window.MutationObserver) return;\n    if (observedRoots && observedRoots.has(root)) return;\n    if (observedRoots) observedRoots.add(root);\n    var observer = new MutationObserver(function (records) {\n      if (root.host) { schedule(); return; }\n      var accountChanged = records.some(function (record) {\n        if (record.target.closest && record.target.closest(ACCOUNT_SELECTOR)) return true;\n        return Array.prototype.some.call(record.addedNodes, containsAccount)\n          || Array.prototype.some.call(record.removedNodes, containsAccount);\n      });\n      if (accountChanged) schedule();\n    });\n    observer.observe(root, { childList: true, subtree: true });\n  }\n\n  function containsAccount(node) {\n    return node && node.nodeType === 1 && (node.matches(ACCOUNT_SELECTOR) || node.querySelector(ACCOUNT_SELECTOR));\n  }\n\n  document.addEventListener('click', function (event) {\n    var trigger = event.target && event.target.closest ? event.target.closest(LAZY_ACCOUNT_SELECTOR) : null;\n    if (!trigger) return;\n    if (trigger.hasAttribute('data-florame-account-trigger')) return;\n    event.preventDefault();\n    event.stopPropagation();\n    var returnTo = window.location.pathname + window.location.search + window.location.hash;\n    openAccount({ trigger: trigger }).then(function (opened) {\n      if (opened) return;\n      window.location.assign('/customer_authentication/login?return_to=' + encodeURIComponent(safeSignInReturn(returnTo)));\n    }).catch(function () {\n      window.location.assign('/customer_authentication/login?return_to=' + encodeURIComponent(safeSignInReturn(returnTo)));\n    });\n  }, true);\n\n  document.addEventListener('open', function (event) {\n    var account = event.target && event.target.closest ? event.target.closest(ACCOUNT_SELECTOR) : null;\n    if (account && emailRequestedAccounts) emailRequestedAccounts.delete(account);\n    if (account) personalizeAccount(account);\n    schedule();\n  }, true);\n  document.addEventListener('focusin', function (event) {\n    var path = event.composedPath ? event.composedPath() : [];\n    var insideAccount = path.some ? path.some(function (node) {\n      return node && node.matches && node.matches(ACCOUNT_SELECTOR);\n    }) : false;\n    if (!insideAccount) return;\n    scheduleViewportMetrics();\n    window.setTimeout(scheduleViewportMetrics, 80);\n    window.setTimeout(scheduleViewportMetrics, 280);\n    window.setTimeout(function () {\n      Array.prototype.forEach.call(document.querySelectorAll(ACCOUNT_SELECTOR), keepFocusedFieldVisible);\n    }, 360);\n  }, true);\n  window.addEventListener('resize', scheduleViewportMetrics, { passive: true });\n  window.addEventListener('orientationchange', scheduleViewportMetrics, { passive: true });\n  if (window.visualViewport) {\n    window.visualViewport.addEventListener('resize', scheduleViewportMetrics, { passive: true });\n    window.visualViewport.addEventListener('scroll', scheduleViewportMetrics, { passive: true });\n  }\n  window.addEventListener('florame:native-ready', schedule);\n  window.addEventListener('florame:native-auth', function (event) {\n    var state = event.detail && event.detail.status;\n    if (state !== 'signed_in' && state !== 'signed_out') return;\n    Array.prototype.forEach.call(document.querySelectorAll(ACCOUNT_SELECTOR), function (account) {\n      recordLoginState(account, state === 'signed_in' ? 'authenticated' : 'closed');\n    });\n  });\n  window.addEventListener('florame:native-auth-error', function () {\n    Array.prototype.forEach.call(document.querySelectorAll(ACCOUNT_SELECTOR), function (account) { recordLoginState(account, 'error'); });\n  });\n  window.addEventListener('florame:pwa-install-state', schedule);\n  window.addEventListener('florame:last-generation-persisted', schedule);\n  window.addEventListener('florame:last-generation-restored', schedule);\n  window.addEventListener('florame:loyalty-availability', schedule);\n  window.addEventListener('florame:background-loading-change', schedule);\n  window.addEventListener('pageshow', function (event) {\n    if (event.persisted && isWebView()) {\n      Array.prototype.forEach.call(document.querySelectorAll(ACCOUNT_SELECTOR), function (account) {\n        if (account.getAttribute('data-florame-login-state') === 'submitting') recordLoginState(account, 'email');\n      });\n    }\n    window.setTimeout(recoverCancelledShopAttempt, 120);\n  });\n  window.addEventListener('focus', function () { window.setTimeout(recoverCancelledShopAttempt, 120); });\n  document.addEventListener('visibilitychange', function () {\n    if (document.visibilityState === 'visible') window.setTimeout(recoverCancelledShopAttempt, 120);\n  });\n  observeRoot(document.documentElement);\n  if (document.querySelector(ACCOUNT_SELECTOR) && window.customElements && typeof window.customElements.whenDefined === 'function') {\n    window.customElements.whenDefined('shopify-account').then(run).catch(function () {});\n  }\n\n  window.FlorameShopifyAccountUi = {\n    loaded: true,\n    version: '1.13.0',\n    diagnostics: function () { return loginTransitions.slice(); },\n    refresh: run,\n    isWebView: isWebView,\n    open: openAccount,\n    isOpen: function () { return Array.prototype.some.call(document.querySelectorAll(ACCOUNT_SELECTOR), accountIsOpen); }\n  };\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', run, { once: true });\n  else run();\n  window.setTimeout(run, 300);\n})();\n"],
  "mappings": "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",
  "names": ["_"]
}
