{
  "version": 3,
  "sources": ["/cdn/shop/t/94/assets/florame-partner-context.js?florame_partner=20260520-dynamic-slots-v1"],
  "sourcesContent": ["(function () {\r\n  const CONFIG = window.__florameThemeConfig || {};\r\n  const STORAGE_KEY = 'florame_partner_context_v2';\r\n  const CACHE_PREFIX = 'florame_partner_cache_v6:';\r\n  const CARD_STATE_PREFIX = 'florame_partner_home_card_v1:';\r\n  const CACHE_TTL_MS = 15 * 60 * 1000;\r\n  const RESERVED_SEGMENTS = new Set([\r\n    'account', 'apps', 'a', 'blog', 'blogs', 'cart', 'challenge', 'checkout',\r\n    'collections', 'community', 'pages', 'policies', 'products', 'search',\r\n    'tools', 'admin', 'hub', 'en', 'it'\r\n  ]);\r\n  const DOW_IT = ['Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab', 'Dom'];\r\n  const DOW_EN = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\r\n  const DOW = DOW_IT;\r\n  const PARTNER_CARD_TRANSLATION_KEY = 'florame_partner_card_translations_v1';\r\n  let partnerCardTranslations = null;\r\n  const ROOT_HOST = String(CONFIG.rootHost || 'florame.ai').replace(/^www\\./, '');\r\n  const PARTNER_HOME_TEMPLATE = String(CONFIG.partnerHomeTemplateSuffix || 'partner-storefront').trim();\r\n  const CURRENT_AWI_SCRIPT = 'awi-v300017.js?v=20260529-flower-assets-v2';\n  const THEME_SYSTEM_DEFAULTS = {\r\n    headlineColor: '#111827',\r\n    brandGradientFrom: '#ff85a2',\r\n    brandGradientTo: '#ff4d75',\r\n    noteColor: '#5b6475',\r\n    accentColor: '#ff4d75',\r\n    websiteButtonColor: '',\r\n    surfaceColor: '#ffffff',\r\n    surfaceBorderColor: '#292929',\r\n    cardTextColor: '#374151',\r\n    hoursSurfaceColor: '',\r\n    hoursSurfaceBorderColor: '',\r\n    hoursTextColor: '',\r\n    badgeBackgroundColor: '#ffffff',\r\n    badgeTextColor: '#111827'\r\n  };\r\n\r\n  function buildThemeAssetUrl(fileName) {\r\n    const clean = String(fileName || '').trim();\r\n    if (!clean) return '';\r\n    try {\r\n      const script = document.currentScript?.src\r\n        || Array.from(document.scripts || []).map((node) => node.src || '').find((src) => src.includes('/assets/florame-partner-context.js'))\r\n        || '';\r\n      if (script) {\r\n        return script.replace(/\\/assets\\/[^/?#]+(?:\\?[^#]*)?(?:#.*)?$/, '/assets/' + clean);\r\n      }\r\n    } catch (_) {}\r\n    return '//' + ROOT_HOST + '/cdn/shop/t/87/assets/' + clean;\r\n  }\r\n\r\n  function syncAwiScriptUrl() {\r\n    const awiUrl = buildThemeAssetUrl(CURRENT_AWI_SCRIPT);\r\n    if (!awiUrl) return;\r\n    try { window.AWI_CAP_MODAL_SCRIPT_URL = awiUrl; } catch (_) {}\r\n    try { window.HOMEPAGE_INIT_AWI_SCRIPT_URL = awiUrl; } catch (_) {}\r\n    try {\r\n      if (typeof __HOME_CTA !== 'undefined' && __HOME_CTA) {\r\n        __HOME_CTA.awiScriptUrl = awiUrl;\r\n      }\r\n    } catch (_) {}\r\n  }\r\n\r\n  syncAwiScriptUrl();\r\n  try { document.addEventListener('DOMContentLoaded', syncAwiScriptUrl, { once: true }); } catch (_) {}\r\n\r\n  function slugify(value) {\r\n    return String(value || '')\r\n      .trim()\r\n      .toLowerCase()\r\n      .normalize('NFKD')\r\n      .replace(/[\\u0300-\\u036f]/g, '')\r\n      .replace(/[^a-z0-9]+/g, '-')\r\n      .replace(/^-+|-+$/g, '')\r\n      .slice(0, 80);\r\n  }\r\n\r\n  function escapeHtml(value) {\r\n    return String(value || '')\r\n      .replace(/&/g, '&amp;')\r\n      .replace(/</g, '&lt;')\r\n      .replace(/>/g, '&gt;')\r\n      .replace(/\"/g, '&quot;')\r\n      .replace(/'/g, '&#39;');\r\n  }\r\n\r\n  function getNativeLanguage(options) {\r\n    try {\r\n      const explicit = options && (options.lang || options.locale || options.language);\r\n      const explicitLang = String(explicit || '').slice(0, 2).toLowerCase();\r\n      if (explicitLang === 'en' || explicitLang === 'it') return explicitLang;\r\n      const fromApi = window.FlorameI18n && typeof window.FlorameI18n.getLanguage === 'function'\r\n        ? window.FlorameI18n.getLanguage()\r\n        : '';\r\n      const stored = localStorage.getItem('florame_native_lang') || localStorage.getItem('bouquetLanguage') || '';\r\n      const htmlLang = document.documentElement.getAttribute('lang') || '';\r\n      return String(fromApi || stored || htmlLang || 'it').slice(0, 2).toLowerCase() === 'en' ? 'en' : 'it';\r\n    } catch (_) {\r\n      return 'it';\r\n    }\r\n  }\r\n\r\n  function partnerText(it, en) {\r\n    return getNativeLanguage() === 'en' ? en : it;\r\n  }\r\n\r\n  function partnerTranslationKey(value) {\r\n    return String(value == null ? '' : value).replace(/\\s+/g, ' ').trim().toLowerCase();\r\n  }\r\n\r\n  function readPartnerCardTranslations() {\r\n    if (partnerCardTranslations) return partnerCardTranslations;\r\n    try {\r\n      const parsed = JSON.parse(localStorage.getItem(PARTNER_CARD_TRANSLATION_KEY) || '{}');\r\n      partnerCardTranslations = parsed && typeof parsed === 'object' ? parsed : {};\r\n    } catch (_) {\r\n      partnerCardTranslations = {};\r\n    }\r\n    return partnerCardTranslations;\r\n  }\r\n\r\n  function savePartnerCardTranslations() {\r\n    try {\r\n      const cache = readPartnerCardTranslations();\r\n      const keys = Object.keys(cache);\r\n      if (keys.length > 400) {\r\n        const trimmed = {};\r\n        keys.slice(-400).forEach((key) => { trimmed[key] = cache[key]; });\r\n        partnerCardTranslations = trimmed;\r\n      }\r\n      localStorage.setItem(PARTNER_CARD_TRANSLATION_KEY, JSON.stringify(partnerCardTranslations || {}));\r\n    } catch (_) {}\r\n  }\r\n\r\n  function canTranslatePartnerText(value) {\r\n    const text = String(value == null ? '' : value).replace(/\\s+/g, ' ').trim();\r\n    if (!text || text.length < 3 || text.length > 700) return false;\r\n    if (/^https?:\\/\\//i.test(text)) return false;\r\n    if (/^[\\d\\s\u20AC$.,:;/%+\\-()]+$/.test(text)) return false;\r\n    return /[A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/.test(text);\r\n  }\r\n\r\n  function localizePartnerCustomText(value) {\r\n    const text = String(value == null ? '' : value).replace(/\\s+/g, ' ').trim();\r\n    if (!text || getNativeLanguage() !== 'en') return text;\r\n    const cache = readPartnerCardTranslations();\r\n    return cache[partnerTranslationKey(text)] || text;\r\n  }\r\n\r\n  function collectPartnerCustomTexts(partner) {\r\n    if (!partner || typeof partner !== 'object') return [];\r\n    const config = partner.storefrontConfig || {};\r\n    const texts = [\r\n      config.welcomeMessage,\r\n      partner.description,\r\n      config.homeCardTitle\r\n    ];\r\n    if (Array.isArray(config.badges)) texts.push(...config.badges);\r\n    return texts\r\n      .map((value) => String(value == null ? '' : value).replace(/\\s+/g, ' ').trim())\r\n      .filter(canTranslatePartnerText);\r\n  }\r\n\r\n  async function translatePartnerCardTexts(texts) {\r\n    const cache = readPartnerCardTranslations();\r\n    const pending = [];\r\n    (Array.isArray(texts) ? texts : []).forEach((text) => {\r\n      const clean = String(text == null ? '' : text).replace(/\\s+/g, ' ').trim();\r\n      if (!canTranslatePartnerText(clean)) return;\r\n      const key = partnerTranslationKey(clean);\r\n      if (cache[key]) return;\r\n      if (!pending.some((item) => partnerTranslationKey(item) === key)) pending.push(clean);\r\n    });\r\n    if (!pending.length) return false;\r\n\r\n    try {\r\n      const response = await fetch('https://us-central1-flower-ai-2d7aa.cloudfunctions.net/translateTextBatch', {\r\n        method: 'POST',\r\n        headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\r\n        body: JSON.stringify({\r\n          sourceLanguage: 'it',\r\n          targetLanguage: 'en',\r\n          context: 'partner-storefront-card',\r\n          texts: pending.slice(0, 40)\r\n        })\r\n      });\r\n      if (!response.ok) throw new Error(`translate ${response.status}`);\r\n      const data = await response.json();\r\n      const map = data && data.map ? data.map : {};\r\n      const list = data && Array.isArray(data.translations) ? data.translations : [];\r\n      let changed = false;\r\n      pending.slice(0, 40).forEach((text, index) => {\r\n        const translated = String(map[text] || list[index] || '').replace(/\\s+/g, ' ').trim();\r\n        if (!translated || partnerTranslationKey(translated) === partnerTranslationKey(text)) return;\r\n        cache[partnerTranslationKey(text)] = translated;\r\n        changed = true;\r\n      });\r\n      if (changed) savePartnerCardTranslations();\r\n      return changed;\r\n    } catch (err) {\r\n      try { console.warn('[partner] Card pre-translation skipped:', err && err.message ? err.message : err); } catch (_) {}\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function prewarmPartnerCardTranslations(partner) {\r\n    const texts = collectPartnerCustomTexts(partner);\r\n    if (!texts.length) return;\r\n    setTimeout(async () => {\r\n      const changed = await translatePartnerCardTexts(texts);\r\n      if (changed && getNativeLanguage() === 'en' && window.__floramePartner === partner) {\r\n        renderPartnerHome(partner, { skipPrewarm: true });\r\n      }\r\n    }, 0);\r\n  }\r\n\r\n  function readStoredContext() {\r\n    try {\r\n      return JSON.parse(sessionStorage.getItem(STORAGE_KEY) || '{}') || {};\r\n    } catch (_) {\r\n      return {};\r\n    }\r\n  }\r\n\r\n  function saveStoredContext(ctx) {\r\n    try {\r\n      sessionStorage.setItem(STORAGE_KEY, JSON.stringify(ctx));\r\n    } catch (_) {}\r\n  }\r\n\r\n  function clearStoredContext() {\r\n    try {\r\n      sessionStorage.removeItem(STORAGE_KEY);\r\n    } catch (_) {}\r\n  }\r\n\r\n  function readCachedPartnerPayload(slug) {\r\n    const key = slugify(slug || '');\r\n    if (!key) return null;\r\n    try {\r\n      const cached = JSON.parse(sessionStorage.getItem(CACHE_PREFIX + key) || '{}');\r\n      if (cached.ts && (Date.now() - cached.ts) < CACHE_TTL_MS && cached.partner) return cached;\r\n    } catch (_) {}\r\n    return null;\r\n  }\r\n\r\n  function saveCachedPartnerPayload(slug, partner, storefrontDefaults, deliveryRescheduleSettings, deliverySpecialDateSettings, deliveryTimeSlotSettings) {\r\n    const key = slugify(slug || '');\r\n    if (!key || !partner) return;\r\n    try {\r\n      sessionStorage.setItem(CACHE_PREFIX + key, JSON.stringify({\r\n        ts: Date.now(),\r\n        partner,\r\n        storefrontDefaults: storefrontDefaults || null,\r\n        deliveryRescheduleSettings: deliveryRescheduleSettings || null,\r\n        deliverySpecialDateSettings: deliverySpecialDateSettings || null,\r\n        deliveryTimeSlotSettings: deliveryTimeSlotSettings || null\r\n      }));\r\n    } catch (_) {}\r\n  }\r\n\r\n  function clearCachedPartnerPayload(slug) {\r\n    const key = slugify(slug || '');\r\n    if (!key) return;\r\n    try {\r\n      sessionStorage.removeItem(CACHE_PREFIX + key);\r\n    } catch (_) {}\r\n  }\r\n\r\n  function applyPartnerPackagingAvailability(partner) {\r\n    const availability = partner?.decorationAvailability || partner?.decorationsAvailability || null;\r\n    if (!availability) return;\r\n    try { window.__FloramePackagingAvailability = availability; } catch (_) {}\r\n    try {\r\n      if (typeof window.updateFloramePackagingAvailability === 'function') {\r\n        window.updateFloramePackagingAvailability(availability);\r\n      }\r\n    } catch (_) {}\r\n  }\r\n\r\n  function readCardExpanded(slug) {\r\n    const key = slugify(slug || '');\r\n    if (!key) return false;\r\n    try {\r\n      return sessionStorage.getItem(CARD_STATE_PREFIX + key) === '1';\r\n    } catch (_) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function saveCardExpanded(slug, expanded) {\r\n    const key = slugify(slug || '');\r\n    if (!key) return;\r\n    try {\r\n      sessionStorage.setItem(CARD_STATE_PREFIX + key, expanded ? '1' : '0');\r\n    } catch (_) {}\r\n  }\r\n\r\n  function getCurrentPathname() {\r\n    return String(window.location.pathname || '/');\r\n  }\r\n\r\n  function stripStorefrontLocale(pathname) {\r\n    return String(pathname || '/').replace(/^\\/(?:en|it)(?=\\/|$)/i, '') || '/';\r\n  }\r\n\r\n  function storefrontPathname(value, fallback) {\r\n    const raw = String(value || fallback || '/');\r\n    try {\r\n      if (/^https?:\\/\\//i.test(raw)) {\r\n        return stripStorefrontLocale(new URL(raw).pathname);\r\n      }\r\n    } catch (_) {}\r\n    return stripStorefrontLocale(raw).split('?')[0] || '/';\r\n  }\r\n\r\n  function getStorefrontLocalePrefix(pathname, options) {\r\n    const match = String(pathname || '').match(/^\\/(en|it)(?=\\/|$)/i);\r\n    if (match) return '/' + match[1].toLowerCase();\r\n    return getNativeLanguage(options) === 'en' ? '/en' : '';\r\n  }\r\n\r\n  function localizeStorefrontPath(pathname, options) {\r\n    const raw = String(pathname || '/');\r\n    try {\r\n      if (/^https?:\\/\\//i.test(raw)) {\r\n        const url = new URL(raw);\r\n        return url.pathname + url.search;\r\n      }\r\n    } catch (_) {}\r\n    const bare = stripStorefrontLocale(raw);\r\n    const sourcePathname = options && options.sourcePathname ? options.sourcePathname : getCurrentPathname();\r\n    const prefix = getStorefrontLocalePrefix(sourcePathname, options);\r\n    if (!prefix) return bare;\r\n    if (bare === '/') return prefix;\r\n    return prefix + (bare.startsWith('/') ? bare : '/' + bare);\r\n  }\r\n\r\n  function isProductPath(pathname) {\r\n    return /^\\/products\\//i.test(stripStorefrontLocale(pathname));\r\n  }\r\n\r\n  function localizeProductPath(pathname, options) {\r\n    const bare = stripStorefrontLocale(pathname);\r\n    if (!/^\\/products\\//i.test(bare)) return String(pathname || '/');\r\n    return localizeStorefrontPath(bare, options);\r\n  }\r\n\r\n  function getSingleSegment(pathname) {\r\n    const segments = stripStorefrontLocale(pathname).split('/').filter(Boolean);\r\n    if (segments.length !== 1) return '';\r\n    const slug = slugify(segments[0]);\r\n    if (!slug || RESERVED_SEGMENTS.has(slug)) return '';\r\n    if (segments[0].includes('.')) return '';\r\n    return slug;\r\n  }\r\n\r\n  function getPartnerPageSlug(pathname) {\r\n    const segments = stripStorefrontLocale(pathname).split('/').filter(Boolean);\r\n    if (segments.length !== 2 || segments[0] !== 'pages') return '';\r\n    const slug = slugify(segments[1]);\r\n    const currentHandle = slugify(CONFIG.currentPageHandle || '');\r\n    const currentTemplate = String(CONFIG.currentPageTemplateSuffix || '').trim();\r\n    if (!slug || !currentHandle || currentHandle !== slug) return '';\r\n    if (currentTemplate !== PARTNER_HOME_TEMPLATE) return '';\r\n    return slug;\r\n  }\r\n\r\n  function buildPartnerPageHomePath(slug) {\r\n    const clean = slugify(slug);\r\n    return clean ? '/pages/' + encodeURIComponent(clean) : (CONFIG.homePath || '/pages/home');\r\n  }\r\n\r\n  function buildRelativeUrl(pathname, params) {\r\n    const url = new URL(pathname, window.location.origin);\r\n    Object.entries(params || {}).forEach(([key, value]) => {\r\n      if (value == null || value === '') return;\r\n      url.searchParams.set(key, value);\r\n    });\r\n    return url.pathname + url.search;\r\n  }\r\n\r\n  function isFlorameGenericRoute(pathname) {\r\n    const path = stripStorefrontLocale(pathname);\r\n    const homePath = storefrontPathname(CONFIG.homePath, '/pages/home');\r\n    const appPath = storefrontPathname(CONFIG.appPath, '/pages/florame-app');\r\n    return path === '/'\r\n      || path === homePath\r\n      || path === appPath;\r\n  }\r\n\r\n  function shouldUseStoredContext(pathname) {\r\n    const path = stripStorefrontLocale(pathname);\r\n    const accountPath = storefrontPathname(CONFIG.accountPath, '/account');\r\n    const loginPath = storefrontPathname(CONFIG.loginPath, '/account/login');\r\n    const homePath = storefrontPathname(CONFIG.homePath, '/pages/home');\r\n    const appPath = storefrontPathname(CONFIG.appPath, '/pages/florame-app');\r\n    return path === '/'\r\n      || path === homePath\r\n      || path === appPath\r\n      || isProductPath(path)\r\n      || path.startsWith('/cart')\r\n      || path === accountPath\r\n      || path.startsWith(accountPath + '/')\r\n      || path === loginPath;\r\n  }\r\n\r\n  function getContext() {\r\n    const pathname = getCurrentPathname();\r\n    const params = new URLSearchParams(window.location.search || '');\r\n    const prettySlug = getSingleSegment(pathname);\r\n    const pageSlug = getPartnerPageSlug(pathname);\r\n    const querySlug = slugify(params.get('partner') || params.get('partnerSlug') || '');\r\n    const stored = readStoredContext();\r\n    const storedRouteMode = ['pretty', 'page', 'query'].includes(stored.routeMode) ? stored.routeMode : 'query';\r\n    const explicitSlug = querySlug || prettySlug || pageSlug;\r\n    if (!explicitSlug && isFlorameGenericRoute(pathname)) {\r\n      clearStoredContext();\r\n      return {\r\n        slug: '',\r\n        active: false,\r\n        routeMode: '',\r\n        pretty: false,\r\n        sourcePath: window.location.pathname + window.location.search,\r\n      };\r\n    }\r\n    const slug = explicitSlug || (shouldUseStoredContext(pathname) ? slugify(stored.slug || '') : '');\r\n    const routeMode = pageSlug ? 'page' : (prettySlug ? 'pretty' : (querySlug ? 'query' : storedRouteMode));\r\n    const context = {\r\n      slug,\r\n      active: !!slug,\r\n      routeMode,\r\n      pretty: routeMode === 'pretty',\r\n      sourcePath: window.location.pathname + window.location.search,\r\n    };\r\n    if (context.active) saveStoredContext(context);\r\n    return context;\r\n  }\r\n\r\n  function homeUrl(explicitSlug) {\r\n    const ctx = getContext();\r\n    const slug = slugify(explicitSlug || ctx.slug || '');\r\n    if (!slug) return localizeStorefrontPath(CONFIG.homePath || '/pages/home');\r\n    if (ctx.routeMode === 'pretty') return localizeStorefrontPath('/' + slug);\r\n    if (ctx.routeMode === 'page') return localizeStorefrontPath(buildPartnerPageHomePath(slug));\r\n    return buildRelativeUrl(localizeStorefrontPath(CONFIG.homePath || '/pages/home'), { partner: slug });\r\n  }\r\n\r\n  function appUrl(mode, extraParams) {\r\n    const ctx = getContext();\r\n    const slug = slugify(ctx.slug || '');\r\n    const appPath = localizeStorefrontPath(CONFIG.appPath || '/pages/florame-app');\r\n    if (!slug) return buildRelativeUrl(appPath, Object.assign({}, extraParams || {}, mode ? { mode } : {}));\r\n    if (ctx.pretty) return buildRelativeUrl(localizeStorefrontPath('/' + slug), Object.assign({}, extraParams || {}, mode ? { mode } : {}));\r\n    return buildRelativeUrl(appPath, Object.assign({}, extraParams || {}, mode ? { mode } : {}, { partner: slug }));\r\n  }\r\n\r\n  function productUrl(handle, options) {\r\n    const slug = slugify(getContext().slug || '');\r\n    const path = localizeProductPath('/products/' + encodeURIComponent(String(handle || '').trim()), options);\r\n    const href = slug ? buildRelativeUrl(path, { partner: slug }) : path;\r\n    if (options && options.absolute) return new URL(href, window.location.origin).toString();\r\n    return href;\r\n  }\r\n\r\n  function accountUrl() {\r\n    const slug = slugify(getContext().slug || '');\r\n    const accountPath = localizeStorefrontPath(CONFIG.accountPath || '/account');\r\n    return slug ? buildRelativeUrl(accountPath, { partner: slug }) : accountPath;\r\n  }\r\n\r\n  function loginUrl() {\r\n    return buildRelativeUrl(localizeStorefrontPath(CONFIG.loginPath || '/account/login'), { return_url: homeUrl() });\r\n  }\r\n\r\n  function rewriteHomeAndAppUrl(url) {\r\n    const rawPathname = url.pathname;\r\n    const pathname = stripStorefrontLocale(rawPathname);\r\n    const slug = slugify(getContext().slug || '');\r\n    const params = new URLSearchParams(url.search);\r\n    const homePath = storefrontPathname(CONFIG.homePath, '/pages/home');\r\n    const appPath = storefrontPathname(CONFIG.appPath, '/pages/florame-app');\r\n    const accountPath = storefrontPathname(CONFIG.accountPath, '/account');\r\n    const loginPath = storefrontPathname(CONFIG.loginPath, '/account/login');\r\n    if (pathname === '/' || pathname === homePath) {\r\n      return slug ? homeUrl(slug) : localizeStorefrontPath(homePath, { sourcePathname: rawPathname });\r\n    }\r\n    if (pathname === appPath) {\r\n      if (slug) params.set('partner', slug);\r\n      const query = params.toString();\r\n      return localizeStorefrontPath(appPath, { sourcePathname: rawPathname }) + (query ? '?' + query : '');\r\n    }\r\n    if (pathname === accountPath) {\r\n      return slug ? accountUrl() : localizeStorefrontPath(accountPath, { sourcePathname: rawPathname });\r\n    }\r\n    if (pathname === loginPath) {\r\n      return loginUrl();\r\n    }\r\n    if (isProductPath(pathname)) {\r\n      const productPath = localizeProductPath(pathname, { sourcePathname: rawPathname });\r\n      return slug ? buildRelativeUrl(productPath, { partner: slug }) : productPath + url.search;\r\n    }\r\n    if (pathname.startsWith('/cart')) {\r\n      const cartPath = localizeStorefrontPath(pathname, { sourcePathname: rawPathname });\r\n      return slug ? buildRelativeUrl(cartPath, { partner: slug }) : cartPath + url.search;\r\n    }\r\n    return '';\r\n  }\r\n\r\n  function rewriteAnchor(anchor) {\r\n    if (!anchor || !anchor.getAttribute) return;\r\n    const href = anchor.getAttribute('href');\r\n    if (!href || href.startsWith('#') || href.startsWith('javascript:') || href.startsWith('mailto:') || href.startsWith('tel:')) return;\r\n    let url;\r\n    try {\r\n      url = new URL(href, window.location.origin);\r\n    } catch (_) {\r\n      return;\r\n    }\r\n    const normalizedHost = String(url.hostname || '').replace(/^www\\./, '');\r\n    const sameStore = url.origin === window.location.origin || normalizedHost === ROOT_HOST;\r\n    if (!sameStore) return;\r\n    const nextHref = rewriteHomeAndAppUrl(url);\r\n    if (nextHref && nextHref !== href) anchor.setAttribute('href', nextHref);\r\n  }\r\n\r\n  function rewriteKnownLinks(root) {\r\n    (root || document).querySelectorAll('a[href]').forEach(rewriteAnchor);\r\n  }\r\n\r\n  function runRewritePasses() {\r\n    [0, 80, 250, 700, 1600, 3200].forEach((delay) => {\r\n      setTimeout(() => {\r\n        rewriteKnownLinks(document);\r\n      }, delay);\r\n    });\r\n  }\r\n\r\n  function observeLinks() {\r\n    const observer = new MutationObserver((mutations) => {\r\n      mutations.forEach((mutation) => {\r\n        if (mutation.type === 'attributes') {\r\n          const target = mutation.target;\r\n          if (target && target.matches && target.matches('a[href]')) rewriteAnchor(target);\r\n          return;\r\n        }\r\n        mutation.addedNodes.forEach((node) => {\r\n          if (node.nodeType !== 1) return;\r\n          if (node.matches && node.matches('a[href]')) rewriteAnchor(node);\r\n          if (node.querySelectorAll) rewriteKnownLinks(node);\r\n        });\r\n      });\r\n    });\r\n    observer.observe(document.documentElement, {\r\n      childList: true,\r\n      subtree: true,\r\n      attributes: true,\r\n      attributeFilter: ['href']\r\n    });\r\n  }\r\n\r\n  function maybeRewriteCurrentUrl() {\r\n    const ctx = getContext();\r\n    if (!ctx.active || ctx.pretty) return;\r\n    const rawPath = getCurrentPathname();\r\n    const path = stripStorefrontLocale(rawPath);\r\n    const homePath = storefrontPathname(CONFIG.homePath, '/pages/home');\r\n    const appPath = storefrontPathname(CONFIG.appPath, '/pages/florame-app');\r\n    const eligible = path === homePath\r\n      || path === '/'\r\n      || path === appPath\r\n      || isProductPath(path)\r\n      || path.startsWith('/account')\r\n      || path.startsWith('/cart');\r\n    if (!eligible) return;\r\n    const params = new URLSearchParams(window.location.search || '');\r\n    if (params.get('partner') || params.get('partnerSlug')) return;\r\n    params.set('partner', ctx.slug);\r\n    window.history.replaceState({}, '', rawPath + '?' + params.toString());\r\n  }\r\n\r\n  function getInitials(value, fallback) {\r\n    const words = String(value || '')\r\n      .trim()\r\n      .split(/\\s+/)\r\n      .filter(Boolean)\r\n      .slice(0, 2);\r\n    if (!words.length) return fallback || '';\r\n    return words.map((word) => word.charAt(0).toUpperCase()).join('');\r\n  }\r\n\r\n  function buildLogoMarkup(className, src, alt, fallback) {\r\n    if (src) {\r\n      return `<img class=\"${className}\" src=\"${escapeHtml(src)}\" alt=\"${escapeHtml(alt)}\">`;\r\n    }\r\n    const extraClass = className.indexOf('florame-partner-florame-logo') >= 0\r\n      ? ' florame-partner-logo-fallback-florame'\r\n      : '';\r\n    return `<div class=\"${className} florame-partner-logo-fallback${extraClass}\" aria-hidden=\"true\"><span>${escapeHtml(fallback)}</span></div>`;\r\n  }\r\n\r\n  const THEME_VAR_NAMES = [\r\n    '--florame-partner-headline',\r\n    '--florame-partner-note-color',\r\n    '--florame-partner-brand-from',\r\n    '--florame-partner-brand-to',\r\n    '--florame-partner-brand-fg',\r\n    '--florame-partner-accent',\r\n    '--florame-partner-accent-soft',\r\n    '--florame-partner-accent-border',\r\n    '--florame-partner-divider',\r\n    '--florame-partner-badge-border',\r\n    '--florame-partner-badge-bg',\r\n    '--florame-partner-badge-color',\r\n    '--florame-partner-surface',\r\n    '--florame-partner-surface-soft',\r\n    '--florame-partner-surface-border',\r\n    '--florame-partner-panel-bg',\r\n    '--florame-partner-cta-bg',\r\n    '--florame-partner-cta-fg',\r\n    '--florame-partner-cta-secondary-bg',\r\n    '--florame-partner-action-arrow',\r\n    '--florame-partner-hours-bg',\r\n    '--florame-partner-hours-soft',\r\n    '--florame-partner-hours-border',\r\n    '--florame-partner-hours-copy',\r\n    '--florame-partner-hours-copy-muted',\r\n    '--florame-partner-dark-surface',\r\n    '--florame-partner-dark-border',\r\n    '--florame-partner-copy',\r\n    '--florame-partner-copy-strong',\r\n    '--florame-partner-logo-border'\r\n  ];\r\n\r\n  function clearThemeVars(el) {\r\n    if (!el || !el.style) return;\r\n    THEME_VAR_NAMES.forEach((name) => el.style.removeProperty(name));\r\n  }\r\n\r\n  function resolveThemeDefaults(defaultsOverride) {\r\n    const src = (defaultsOverride && typeof defaultsOverride === 'object') ? defaultsOverride : {};\r\n    const surfaceColor = normalizeHexColor(src.surfaceColor || '') || THEME_SYSTEM_DEFAULTS.surfaceColor;\r\n    return {\r\n      headlineColor: normalizeHexColor(src.headlineColor || '') || THEME_SYSTEM_DEFAULTS.headlineColor,\r\n      brandGradientFrom: normalizeHexColor(src.brandGradientFrom || '') || THEME_SYSTEM_DEFAULTS.brandGradientFrom,\r\n      brandGradientTo: normalizeHexColor(src.brandGradientTo || '') || THEME_SYSTEM_DEFAULTS.brandGradientTo,\r\n      noteColor: normalizeHexColor(src.noteColor || '') || THEME_SYSTEM_DEFAULTS.noteColor,\r\n      accentColor: normalizeHexColor(src.accentColor || '') || THEME_SYSTEM_DEFAULTS.accentColor,\r\n      websiteButtonColor: normalizeHexColor(src.websiteButtonColor || '') || '',\r\n      surfaceColor,\r\n      surfaceBorderColor: normalizeHexColor(src.surfaceBorderColor || '') || THEME_SYSTEM_DEFAULTS.surfaceBorderColor,\r\n      cardTextColor: normalizeHexColor(src.cardTextColor || '') || THEME_SYSTEM_DEFAULTS.cardTextColor,\r\n      hoursSurfaceColor: normalizeHexColor(src.hoursSurfaceColor || '') || '',\r\n      hoursSurfaceBorderColor: normalizeHexColor(src.hoursSurfaceBorderColor || '') || '',\r\n      hoursTextColor: normalizeHexColor(src.hoursTextColor || '') || '',\r\n      badgeBackgroundColor: normalizeHexColor(src.badgeBackgroundColor || '') || THEME_SYSTEM_DEFAULTS.badgeBackgroundColor,\r\n      badgeTextColor: normalizeHexColor(src.badgeTextColor || '') || THEME_SYSTEM_DEFAULTS.badgeTextColor\r\n    };\r\n  }\r\n\r\n  function normalizeTimeSlot(slot) {\r\n    const start = String(slot?.start || '').trim();\r\n    const end = String(slot?.end || '').trim();\r\n    if (!/^\\d{2}:\\d{2}$/.test(start) || !/^\\d{2}:\\d{2}$/.test(end)) return null;\r\n    return { start, end };\r\n  }\r\n\r\n  function isAllDaySlot(slot) {\r\n    return !!slot && slot.start === '00:00' && (slot.end === '23:59' || slot.end === '24:00');\r\n  }\r\n\r\n  function formatDailyHours(slots) {\r\n    const normalized = (Array.isArray(slots) ? slots : [])\r\n      .map(normalizeTimeSlot)\r\n      .filter(Boolean);\r\n    if (!normalized.length) return { value: partnerText('Chiuso', 'Closed'), hasHours: false };\r\n    if (normalized.length === 1 && isAllDaySlot(normalized[0])) {\r\n      return { value: '24/7', hasHours: true, isAlwaysOpen: true };\r\n    }\r\n    return {\r\n      value: normalized.map((slot) => `${slot.start} - ${slot.end}`).join(' \u00B7 '),\r\n      hasHours: true,\r\n      isAlwaysOpen: false\r\n    };\r\n  }\r\n\r\n  function formatDayRange(startIndex, endIndex) {\r\n    const dow = getNativeLanguage() === 'en' ? DOW_EN : DOW_IT;\r\n    if (startIndex === 0 && endIndex === 6) return partnerText('Tutti i giorni', 'Every day');\r\n    if (startIndex === endIndex) return dow[startIndex];\r\n    return `${dow[startIndex]} - ${dow[endIndex]}`;\r\n  }\r\n\r\n  function formatHours(openingHours) {\r\n    if (!openingHours || typeof openingHours !== 'object') {\r\n      return [{ label: partnerText('Orari', 'Hours'), value: partnerText('In aggiornamento', 'Updating') }];\r\n    }\r\n    const keys = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];\r\n    const daily = keys.map((key, index) => {\r\n      const formatted = formatDailyHours(openingHours[key]);\r\n      return {\r\n        index,\r\n        value: formatted.value,\r\n        hasHours: formatted.hasHours,\r\n        isAlwaysOpen: formatted.isAlwaysOpen === true\r\n      };\r\n    });\r\n\r\n    if (!daily.some((day) => day.hasHours)) {\r\n      return [{ label: partnerText('Orari', 'Hours'), value: partnerText('In aggiornamento', 'Updating') }];\r\n    }\r\n\r\n    if (daily.every((day) => day.isAlwaysOpen)) {\r\n      return [{ label: partnerText('Tutti i giorni', 'Every day'), value: '24/7' }];\r\n    }\r\n\r\n    const groups = [];\r\n    daily.forEach((day) => {\r\n      const last = groups[groups.length - 1];\r\n      if (!last || last.value !== day.value) {\r\n        groups.push({ startIndex: day.index, endIndex: day.index, value: day.value });\r\n      } else {\r\n        last.endIndex = day.index;\r\n      }\r\n    });\r\n\r\n    return groups.map((group) => ({\r\n      label: formatDayRange(group.startIndex, group.endIndex),\r\n      value: group.value\r\n    }));\r\n  }\r\n\r\n  function buildAddressLine(address) {\r\n    if (!address) return '';\r\n    return [address.line1, address.line2, [address.postalCode, address.city].filter(Boolean).join(' '), address.province].filter(Boolean).join(', ');\r\n  }\r\n\r\n  function phoneHref(value) {\r\n    return String(value || '').replace(/[^\\d+]/g, '');\r\n  }\r\n\r\n  function normalizeHexColor(value) {\r\n    const clean = String(value || '').trim();\r\n    return /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(clean) ? clean.toLowerCase() : '';\r\n  }\r\n\r\n  function hexToRgb(value) {\r\n    const clean = normalizeHexColor(value);\r\n    if (!clean) return null;\r\n    const full = clean.length === 4\r\n      ? `#${clean[1]}${clean[1]}${clean[2]}${clean[2]}${clean[3]}${clean[3]}`\r\n      : clean;\r\n    return {\r\n      r: parseInt(full.slice(1, 3), 16),\r\n      g: parseInt(full.slice(3, 5), 16),\r\n      b: parseInt(full.slice(5, 7), 16)\r\n    };\r\n  }\r\n\r\n  function rgbaFromHex(value, alpha) {\r\n    const rgb = hexToRgb(value);\r\n    if (!rgb) return '';\r\n    return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;\r\n  }\r\n\r\n  function readableTextColor(value) {\r\n    const rgb = hexToRgb(value);\r\n    if (!rgb) return '#ffffff';\r\n    const luminance = (0.299 * rgb.r) + (0.587 * rgb.g) + (0.114 * rgb.b);\r\n    return luminance > 168 ? '#111827' : '#ffffff';\r\n  }\r\n\r\n  function injectStyles() {\r\n    if (document.getElementById('florame-partner-home-styles')) return;\r\n    const style = document.createElement('style');\r\n    style.id = 'florame-partner-home-styles';\r\n    style.textContent = `\r\n      .app-header.partner-storefront-active {\r\n        background:\r\n          radial-gradient(circle at top right, var(--florame-partner-accent-soft, rgba(255, 77, 117, 0.18)), transparent 28%),\r\n          linear-gradient(180deg, rgba(255,255,255,0.96), var(--florame-partner-surface, rgba(255,246,248,0.92)));\r\n        border-color: var(--florame-partner-surface-border, rgba(255, 77, 117, 0.12));\r\n        box-shadow: 0 26px 60px rgba(15, 23, 42, 0.08);\r\n      }\r\n      .app-header.partner-storefront-active .app-header-surface::after {\r\n        background: radial-gradient(circle, var(--florame-partner-accent-soft, rgba(255, 77, 117, 0.14)), transparent 72%);\r\n      }\r\n      .app-header.partner-storefront-active .app-header-surface::before {\r\n        background: linear-gradient(120deg, rgba(255,255,255,0.58), transparent 55%);\r\n      }\r\n      [data-theme=\"dark\"] .app-header.partner-storefront-active {\r\n        background:\r\n          radial-gradient(circle at top right, var(--florame-partner-accent-soft, rgba(255, 77, 117, 0.18)), transparent 26%),\r\n          linear-gradient(135deg, rgba(35, 38, 48, 0.95), rgba(20, 23, 31, 0.96));\r\n        border-color: var(--florame-partner-dark-border, rgba(255,255,255,0.09));\r\n      }\r\n      .florame-partner-hero-unified {\r\n        position: relative;\r\n        display: grid;\r\n        gap: 12px;\r\n      }\r\n      .app-header.partner-storefront-loading {\r\n        transition: background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;\r\n      }\r\n      .florame-partner-loading-logos {\r\n        opacity: 0.92;\r\n      }\r\n      .florame-partner-loading-logo {\r\n        position: relative;\r\n        width: 52px;\r\n        height: 52px;\r\n        border-radius: 16px;\r\n        overflow: hidden;\r\n        border: 1px solid var(--florame-partner-logo-border, rgba(15, 23, 42, 0.08));\r\n        background: linear-gradient(135deg, rgba(255,255,255,0.96), rgba(253,228,235,0.9));\r\n        box-shadow: 0 10px 20px rgba(15, 23, 42, 0.08);\r\n      }\r\n      .florame-partner-loading-logo:first-child {\r\n        background: linear-gradient(135deg, var(--florame-partner-brand-from, #ff85a2), var(--florame-partner-brand-to, #ff4d75));\r\n      }\r\n      .florame-partner-loading-logo::after,\r\n      .florame-partner-loading-line::after {\r\n        content: \"\";\r\n        position: absolute;\r\n        inset: 0;\r\n        transform: translateX(-100%);\r\n        background: linear-gradient(90deg, transparent, rgba(255,255,255,0.62), transparent);\r\n        animation: floramePartnerLoadingSweep 1.15s ease-in-out infinite;\r\n      }\r\n      .florame-partner-loading-card {\r\n        width: min(100%, 680px);\r\n        margin-inline: auto;\r\n        padding: 14px 16px;\r\n        border-radius: 22px;\r\n        border: 1px solid var(--florame-partner-surface-border, rgba(255, 77, 117, 0.14));\r\n        background:\r\n          radial-gradient(circle at top right, var(--florame-partner-accent-soft, rgba(255, 77, 117, 0.14)), transparent 40%),\r\n          var(--florame-partner-panel-bg, rgba(255,255,255,0.72));\r\n        box-shadow: 0 16px 34px rgba(15, 23, 42, 0.07);\r\n      }\r\n      .florame-partner-loading-status {\r\n        display: inline-flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        gap: 8px;\r\n        min-height: 32px;\r\n        padding: 0 12px;\r\n        border-radius: 999px;\r\n        border: 1px solid var(--florame-partner-accent-border, rgba(255, 77, 117, 0.24));\r\n        background: var(--florame-partner-accent-soft, rgba(255, 77, 117, 0.14));\r\n        color: var(--florame-partner-accent, #ff4d75);\r\n        font-size: 11px;\r\n        font-weight: 800;\r\n        letter-spacing: 0.08em;\r\n        text-transform: uppercase;\r\n      }\r\n      .florame-partner-loading-dot {\r\n        width: 8px;\r\n        height: 8px;\r\n        border-radius: 999px;\r\n        background: currentColor;\r\n        animation: floramePartnerLoadingPulse 0.85s ease-in-out infinite;\r\n      }\r\n      .florame-partner-loading-copy {\r\n        margin: 4px auto 2px;\r\n        max-width: 42ch;\r\n        text-align: center;\r\n        color: var(--florame-partner-note-color, rgba(15, 23, 42, 0.62));\r\n        font-size: 13px;\r\n        line-height: 1.45;\r\n      }\r\n      .florame-partner-loading-lines {\r\n        display: grid;\r\n        justify-items: center;\r\n        gap: 8px;\r\n        width: min(100%, 380px);\r\n        margin: 4px auto 0;\r\n      }\r\n      .florame-partner-loading-line {\r\n        position: relative;\r\n        overflow: hidden;\r\n        height: 10px;\r\n        width: 100%;\r\n        border-radius: 999px;\r\n        background: var(--florame-partner-surface-soft, rgba(255,255,255,0.62));\r\n        border: 1px solid var(--florame-partner-surface-border, rgba(15, 23, 42, 0.08));\r\n      }\r\n      .florame-partner-loading-line:last-child {\r\n        width: 68%;\r\n      }\r\n      .app-greeting--partner .text-gradient {\r\n        background: linear-gradient(\r\n          135deg,\r\n          var(--florame-partner-brand-from, #ff85a2),\r\n          var(--florame-partner-brand-to, #ff4d75)\r\n        );\r\n        -webkit-background-clip: text;\r\n        -webkit-text-fill-color: transparent;\r\n      }\r\n      .florame-partner-logos-row {\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        gap: 12px;\r\n        width: 100%;\r\n      }\r\n      .florame-partner-hero-meta {\r\n        display: grid;\r\n        justify-items: center;\r\n        gap: 8px;\r\n        width: 100%;\r\n      }\r\n      .florame-partner-hero-note {\r\n        margin: 0;\r\n        max-width: 44ch;\r\n        font-size: 14px;\r\n        line-height: 1.5;\r\n        text-align: center;\r\n        color: var(--florame-partner-note-color, rgba(15, 23, 42, 0.62));\r\n      }\r\n      .florame-partner-badges {\r\n        display: flex;\r\n        flex-wrap: wrap;\r\n        justify-content: center;\r\n        gap: 8px;\r\n        width: 100%;\r\n      }\r\n      .florame-partner-badge {\r\n        display: inline-flex;\r\n        align-items: center;\r\n        min-height: 30px;\r\n        padding: 0 12px;\r\n        border-radius: 999px;\r\n        background: var(--florame-partner-badge-bg, rgba(255,255,255,0.88));\r\n        border: 1px solid var(--florame-partner-badge-border, rgba(15, 23, 42, 0.08));\r\n        color: var(--florame-partner-badge-color, #111827);\r\n        font-size: 11px;\r\n        font-weight: 800;\r\n        letter-spacing: 0.04em;\r\n        text-transform: uppercase;\r\n      }\r\n      .florame-partner-hero-action {\r\n        appearance: none;\r\n        display: inline-flex;\r\n        align-items: center;\r\n        gap: 10px;\r\n        min-height: 34px;\r\n        padding: 0 12px;\r\n        border: 1px solid var(--florame-partner-accent-border, rgba(255, 77, 117, 0.24));\r\n        border-radius: 999px;\r\n        background: var(--florame-partner-accent-soft, rgba(255, 77, 117, 0.14));\r\n        color: var(--florame-partner-accent, #ff4d75);\r\n        cursor: pointer;\r\n        font-size: 12px;\r\n        font-weight: 800;\r\n        letter-spacing: 0.08em;\r\n        text-transform: uppercase;\r\n      }\r\n      .florame-partner-hero-action:hover {\r\n        opacity: 0.92;\r\n      }\r\n      .florame-partner-hero-action:focus-visible,\r\n      .florame-partner-cta:focus-visible {\r\n        outline: none;\r\n        box-shadow: 0 0 0 3px var(--florame-partner-accent-soft, rgba(255, 77, 117, 0.14));\r\n      }\r\n      .florame-partner-action-arrow {\r\n        width: 18px;\r\n        height: 18px;\r\n        color: var(--florame-partner-accent, #ff4d75);\r\n        transition: transform 0.2s ease, color 0.2s ease;\r\n      }\r\n      .florame-partner-hero-unified[data-expanded=\"true\"] .florame-partner-action-arrow {\r\n        transform: rotate(180deg);\r\n        color: var(--florame-partner-accent, #ff4d75);\r\n      }\r\n      [data-theme=\"dark\"] .florame-partner-hero-note {\r\n        color: rgba(255,255,255,0.72);\r\n      }\r\n      [data-theme=\"dark\"] .florame-partner-hero-action {\r\n        color: rgba(255,255,255,0.9);\r\n      }\r\n      .florame-partner-logo,\r\n      .florame-partner-florame-logo {\r\n        width: 52px;\r\n        height: 52px;\r\n        border-radius: 16px;\r\n        background: #fff;\r\n        border: 1px solid var(--florame-partner-logo-border, rgba(15, 23, 42, 0.08));\r\n        object-fit: contain;\r\n        box-shadow: 0 10px 20px rgba(15, 23, 42, 0.08);\r\n        flex: 0 0 auto;\r\n      }\r\n      .florame-partner-logo-fallback {\r\n        display: inline-flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        font-size: 18px;\r\n        font-weight: 800;\r\n        color: #111827;\r\n        background: linear-gradient(135deg, rgba(255,255,255,0.95), rgba(253,228,235,0.95));\r\n      }\r\n      .florame-partner-logo-fallback-florame {\r\n        color: var(--florame-partner-brand-fg, #ffffff);\r\n        background: linear-gradient(\r\n          135deg,\r\n          var(--florame-partner-brand-from, #ff85a2),\r\n          var(--florame-partner-brand-to, #ff4d75)\r\n        );\r\n      }\r\n      .florame-partner-brand-x {\r\n        font-size: 18px;\r\n        font-weight: 800;\r\n        color: var(--florame-partner-accent, #ff4d75);\r\n      }\r\n      .florame-partner-details {\r\n        position: relative;\r\n        z-index: 1;\r\n        width: min(100%, 820px);\r\n        margin-inline: auto;\r\n        margin-top: 8px;\r\n        padding-top: 16px;\r\n        border-top: 1px solid var(--florame-partner-divider, rgba(15, 23, 42, 0.08));\r\n      }\r\n      .florame-partner-detail-grid {\r\n        display: grid;\r\n        grid-template-columns: minmax(0, 1.18fr) minmax(240px, 0.82fr);\r\n        gap: 14px;\r\n      }\r\n      .florame-partner-detail-block {\r\n        position: relative;\r\n        z-index: 1;\r\n        min-width: 0;\r\n        padding: 16px;\r\n        border-radius: 20px;\r\n        background: var(--florame-partner-panel-bg, rgba(255,255,255,0.78));\r\n        border: 1px solid var(--florame-partner-surface-border, rgba(15, 23, 42, 0.08));\r\n      }\r\n      .florame-partner-detail-label {\r\n        font-size: 10px;\r\n        letter-spacing: 0.12em;\r\n        text-transform: uppercase;\r\n        font-weight: 800;\r\n        color: var(--florame-partner-note-color, rgba(15, 23, 42, 0.42));\r\n        margin-bottom: 8px;\r\n      }\r\n      .florame-partner-detail-title {\r\n        margin: 0;\r\n        font-size: 17px;\r\n        line-height: 1.1;\r\n        letter-spacing: -0.02em;\r\n        color: var(--florame-partner-copy-strong, var(--florame-partner-headline, #111827));\r\n      }\r\n      .florame-partner-address {\r\n        margin-top: 14px;\r\n        padding: 13px 14px;\r\n        border-radius: 16px;\r\n        background: var(--florame-partner-surface-soft, rgba(255,255,255,0.62));\r\n        border: 1px solid var(--florame-partner-surface-border, rgba(15, 23, 42, 0.08));\r\n        font-weight: 650;\r\n        color: var(--florame-partner-copy-strong, var(--florame-partner-headline, #111827));\r\n        font-size: 13px;\r\n        line-height: 1.45;\r\n      }\r\n      .florame-partner-hours {\r\n        display: grid;\r\n        gap: 8px;\r\n      }\r\n      .florame-partner-hours-row {\r\n        display: flex;\r\n        justify-content: space-between;\r\n        gap: 12px;\r\n        padding: 10px 0;\r\n        border-bottom: 1px solid var(--florame-partner-divider, rgba(15, 23, 42, 0.08));\r\n        font-size: 12px;\r\n        color: var(--florame-partner-copy, rgba(15, 23, 42, 0.74));\r\n      }\r\n      .florame-partner-hours-row:last-child {\r\n        border-bottom: none;\r\n        padding-bottom: 0;\r\n      }\r\n      .florame-partner-hours-row strong {\r\n        color: var(--florame-partner-copy-strong, var(--florame-partner-headline, #111827));\r\n        white-space: nowrap;\r\n      }\r\n      .florame-partner-hours-block {\r\n        background: var(--florame-partner-hours-bg, var(--florame-partner-panel-bg, rgba(255,255,255,0.78)));\r\n        border-color: var(--florame-partner-hours-border, var(--florame-partner-surface-border, rgba(15, 23, 42, 0.08)));\r\n      }\r\n      .florame-partner-hours-block .florame-partner-detail-title,\r\n      .florame-partner-hours-block .florame-partner-hours-row strong {\r\n        color: var(--florame-partner-hours-copy, var(--florame-partner-copy-strong, #111827));\r\n      }\r\n      .florame-partner-hours-block .florame-partner-hours-row {\r\n        border-bottom-color: var(--florame-partner-hours-border, var(--florame-partner-divider, rgba(15, 23, 42, 0.08)));\r\n        color: var(--florame-partner-hours-copy-muted, var(--florame-partner-copy, rgba(15, 23, 42, 0.74)));\r\n      }\r\n      .florame-partner-phones {\r\n        display: grid;\r\n        gap: 8px;\r\n        margin-top: 12px;\r\n      }\r\n      .florame-partner-contact-link {\r\n        display: inline-flex;\r\n        align-items: center;\r\n        justify-content: space-between;\r\n        min-height: 42px;\r\n        padding: 0 14px;\r\n        border-radius: 16px;\r\n        font-size: 13px;\r\n        font-weight: 700;\r\n        text-decoration: none;\r\n        color: var(--florame-partner-copy-strong, var(--florame-partner-headline, #111827));\r\n        background: var(--florame-partner-surface-soft, rgba(255,255,255,0.62));\r\n        border: 1px solid var(--florame-partner-surface-border, rgba(15, 23, 42, 0.08));\r\n      }\r\n      .florame-partner-contact-link span:last-child {\r\n        color: var(--florame-partner-copy, rgba(15, 23, 42, 0.74));\r\n      }\r\n      .florame-partner-actions {\r\n        display: flex;\r\n        flex-wrap: wrap;\r\n        gap: 8px;\r\n        margin-top: 12px;\r\n      }\r\n      .florame-partner-cta {\r\n        display: inline-flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        min-height: 40px;\r\n        padding: 0 14px;\r\n        border-radius: 999px;\r\n        text-decoration: none;\r\n        font-size: 12px;\r\n        font-weight: 800;\r\n        border: 1px solid transparent;\r\n      }\r\n      .florame-partner-cta-primary {\r\n        background: var(--florame-partner-cta-bg, linear-gradient(135deg, #111827, #1f2937));\r\n        color: var(--florame-partner-cta-fg, #fff);\r\n        box-shadow: 0 16px 28px -22px var(--florame-partner-accent, #ff4d75);\r\n      }\r\n      .florame-partner-cta-secondary {\r\n        background: var(--florame-partner-surface-soft, rgba(255,255,255,0.9));\r\n        border-color: var(--florame-partner-surface-border, rgba(15, 23, 42, 0.08));\r\n        color: var(--florame-partner-copy-strong, var(--florame-partner-headline, #111827));\r\n      }\r\n      [data-theme=\"dark\"] .florame-partner-detail-label {\r\n        color: rgba(255,255,255,0.46);\r\n      }\r\n      [data-theme=\"dark\"] .florame-partner-loading-card {\r\n        background:\r\n          radial-gradient(circle at top right, var(--florame-partner-accent-soft, rgba(255, 77, 117, 0.18)), transparent 42%),\r\n          var(--florame-partner-dark-surface, rgba(255,255,255,0.06));\r\n        border-color: var(--florame-partner-dark-border, rgba(255,255,255,0.09));\r\n      }\r\n      [data-theme=\"dark\"] .florame-partner-loading-copy {\r\n        color: rgba(255,255,255,0.68);\r\n      }\r\n      [data-theme=\"dark\"] .florame-partner-loading-line {\r\n        background: var(--florame-partner-dark-surface, rgba(255,255,255,0.06));\r\n        border-color: var(--florame-partner-dark-border, rgba(255,255,255,0.09));\r\n      }\r\n      [data-theme=\"dark\"] .florame-partner-detail-title,\r\n      [data-theme=\"dark\"] .florame-partner-address,\r\n      [data-theme=\"dark\"] .florame-partner-hours-row strong,\r\n      [data-theme=\"dark\"] .florame-partner-contact-link {\r\n        color: #fff;\r\n      }\r\n      [data-theme=\"dark\"] .florame-partner-address,\r\n      [data-theme=\"dark\"] .florame-partner-contact-link,\r\n      [data-theme=\"dark\"] .florame-partner-cta-secondary {\r\n        background: var(--florame-partner-dark-surface, rgba(255,255,255,0.06));\r\n        border-color: var(--florame-partner-dark-border, rgba(255,255,255,0.09));\r\n      }\r\n      [data-theme=\"dark\"] .florame-partner-hours-row {\r\n        border-bottom-color: var(--florame-partner-dark-border, rgba(255,255,255,0.08));\r\n        color: rgba(255,255,255,0.7);\r\n      }\r\n      @media (max-width: 900px) {\r\n        .florame-partner-detail-grid { grid-template-columns: 1fr; }\r\n      }\r\n      @media (max-width: 640px) {\r\n        .florame-partner-logo,\r\n        .florame-partner-florame-logo,\r\n        .florame-partner-loading-logo { width: 48px; height: 48px; border-radius: 15px; }\r\n        .florame-partner-logos-row { gap: 10px; }\r\n        .florame-partner-hero-note { font-size: 13px; }\r\n        .florame-partner-hero-action { font-size: 10px; letter-spacing: 0.07em; }\r\n        .florame-partner-hours-row,\r\n        .florame-partner-contact-link { padding-inline: 14px; }\r\n      }\r\n      @keyframes floramePartnerLoadingPulse {\r\n        0%, 100% { opacity: 0.44; transform: scale(0.86); }\r\n        50% { opacity: 1; transform: scale(1); }\r\n      }\r\n      @keyframes floramePartnerLoadingSweep {\r\n        100% { transform: translateX(100%); }\r\n      }\r\n    `;\r\n    document.head.appendChild(style);\r\n  }\r\n\r\n  function renderPartnerLoading(ctx) {\r\n    const context = ctx || getContext();\r\n    const path = getCurrentPathname();\r\n    const barePath = stripStorefrontLocale(path);\r\n    const isHome = barePath === storefrontPathname(CONFIG.homePath, '/pages/home')\r\n      || !!getPartnerPageSlug(path)\r\n      || (getSingleSegment(path) && !new URLSearchParams(window.location.search).get('mode'));\r\n    if (!isHome || !context.active) return false;\r\n\r\n    const heroSlot = document.getElementById('floramePartnerHeroSlot');\r\n    const heroTopSlot = document.getElementById('floramePartnerHeroTopSlot');\r\n    const greeting = document.querySelector('.app-greeting');\r\n    const titleLockup = document.querySelector('.hero-title-lockup');\r\n    const appHeader = document.querySelector('.app-header');\r\n    if (!greeting || !heroSlot || !heroTopSlot || !titleLockup) return false;\r\n\r\n    injectStyles();\r\n\r\n    titleLockup.classList.add('hero-title-lockup--partner', 'hero-title-lockup--loading');\r\n    greeting.classList.add('app-greeting--partner', 'app-greeting--loading');\r\n    greeting.innerHTML = `${partnerText('Prepariamo', 'Preparing')} <span class=\"text-gradient\">florame.ai</span> ${partnerText('per il tuo negozio', 'for your store')}`;\r\n    greeting.style.removeProperty('color');\r\n\r\n    if (appHeader) {\r\n      appHeader.classList.add('partner-storefront-active', 'partner-storefront-loading');\r\n    }\r\n\r\n    heroTopSlot.hidden = false;\r\n    heroTopSlot.innerHTML = `\r\n      <div class=\"florame-partner-logos-row florame-partner-loading-logos\" aria-hidden=\"true\">\r\n        <span class=\"florame-partner-loading-logo\"></span>\r\n        <span class=\"florame-partner-brand-x\">\u00D7</span>\r\n        <span class=\"florame-partner-loading-logo\"></span>\r\n      </div>\r\n    `;\r\n\r\n    heroSlot.hidden = false;\r\n    heroSlot.innerHTML = `\r\n      <div class=\"florame-partner-hero-unified florame-partner-loading-card\" role=\"status\" aria-live=\"polite\">\r\n        <div class=\"florame-partner-hero-meta\">\r\n          <div class=\"florame-partner-loading-status\">\r\n            <span class=\"florame-partner-loading-dot\" aria-hidden=\"true\"></span>\r\n            <span>${partnerText('Caricamento negozio', 'Loading store')}</span>\r\n          </div>\r\n          <p class=\"florame-partner-loading-copy\">${partnerText('Stiamo recuperando la card personalizzata, contatti e orari del partner.', 'We are loading the partner card, contacts and opening hours.')}</p>\r\n          <div class=\"florame-partner-loading-lines\" aria-hidden=\"true\">\r\n            <span class=\"florame-partner-loading-line\"></span>\r\n            <span class=\"florame-partner-loading-line\"></span>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    `;\r\n    return true;\r\n  }\r\n\r\n  function renderPartnerHome(partner, options) {\r\n    const path = getCurrentPathname();\r\n    const barePath = stripStorefrontLocale(path);\r\n    const isHome = barePath === storefrontPathname(CONFIG.homePath, '/pages/home')\r\n      || !!getPartnerPageSlug(path)\r\n      || (getSingleSegment(path) && !new URLSearchParams(window.location.search).get('mode'));\r\n    const heroSlot = document.getElementById('floramePartnerHeroSlot');\r\n    const heroTopSlot = document.getElementById('floramePartnerHeroTopSlot');\r\n    const greeting = document.querySelector('.app-greeting');\r\n    const titleLockup = document.querySelector('.hero-title-lockup');\r\n    const appHeader = document.querySelector('.app-header');\r\n    if (!isHome || !partner) {\r\n      const staleDetails = document.getElementById('floramePartnerHomeDetails');\r\n      if (staleDetails) staleDetails.remove();\r\n      if (heroTopSlot) {\r\n        heroTopSlot.innerHTML = '';\r\n        heroTopSlot.hidden = true;\r\n        clearThemeVars(heroTopSlot);\r\n      }\r\n      if (heroSlot) {\r\n        heroSlot.innerHTML = '';\r\n        heroSlot.hidden = true;\r\n        clearThemeVars(heroSlot);\r\n      }\r\n      if (greeting) {\r\n        greeting.classList.remove('app-greeting--partner', 'app-greeting--loading');\r\n        greeting.innerHTML = `${partnerText('Benvenuto su', 'Welcome to')} <span class=\"text-gradient\">florame.ai</span>`;\r\n        greeting.style.removeProperty('color');\r\n      }\r\n      if (titleLockup) {\r\n        titleLockup.classList.remove('hero-title-lockup--partner', 'hero-title-lockup--loading');\r\n        clearThemeVars(titleLockup);\r\n      }\r\n      if (appHeader) {\r\n        appHeader.classList.remove('partner-storefront-active', 'partner-storefront-loading');\r\n        clearThemeVars(appHeader);\r\n      }\r\n      return;\r\n    }\r\n\r\n    if (!greeting || !heroSlot || !heroTopSlot || !titleLockup) return;\r\n\r\n    injectStyles();\r\n\r\n    titleLockup.classList.add('hero-title-lockup--partner');\r\n    titleLockup.classList.remove('hero-title-lockup--loading');\r\n    greeting.classList.add('app-greeting--partner');\r\n    greeting.classList.remove('app-greeting--loading');\r\n    greeting.innerHTML = `${partnerText('Benvenuto su', 'Welcome to')} <span class=\"text-gradient\">florame.ai</span> x ${escapeHtml(partner.name || partner.partnerId || '')}`;\r\n\r\n    const partnerSlug = slugify(partner.portal?.partnerSlug || partner.partnerId || partner.name || '');\r\n    const showHomeCard = partner.storefrontConfig?.showHomeCard !== false;\r\n    const expanded = showHomeCard && readCardExpanded(partnerSlug);\r\n    const addressLine = buildAddressLine(partner.address || {});\r\n    const hours = formatHours(partner.openingHours || {});\r\n    const phones = Array.isArray(partner.storefrontConfig?.phones) ? partner.storefrontConfig.phones.filter(Boolean) : [];\r\n    const googleProfileUrl = partner.storefrontConfig?.googleProfileUrl || '';\r\n    const googleMapsUrl = partner.storefrontConfig?.googleMapsUrl || partner.address?.googleMapsUrl || '';\r\n    const florameLogo = CONFIG.florameLogoUrl || '';\r\n    const partnerLogo = partner.logoUrl || '';\r\n    const partnerWelcome = localizePartnerCustomText(partner.storefrontConfig?.welcomeMessage || partner.description || '');\r\n    const homeCardTitle = localizePartnerCustomText(partner.storefrontConfig?.homeCardTitle || partnerText('Passa in negozio o chiamalo direttamente', 'Visit the store or call directly'));\r\n    const badges = Array.isArray(partner.storefrontConfig?.badges)\r\n      ? partner.storefrontConfig.badges.filter(Boolean).slice(0, 4).map(localizePartnerCustomText)\r\n      : [];\r\n    const config = partner.storefrontConfig || {};\r\n    const resolvedDefaults = resolveThemeDefaults(window.__florameStorefrontDefaults || partner.storefrontDefaults || {});\r\n    const headlineColor = normalizeHexColor(config.headlineColor || '') || resolvedDefaults.headlineColor;\r\n    const brandGradientFrom = normalizeHexColor(config.brandGradientFrom || '') || resolvedDefaults.brandGradientFrom;\r\n    const brandGradientTo = normalizeHexColor(config.brandGradientTo || '') || resolvedDefaults.brandGradientTo;\r\n    const noteColor = normalizeHexColor(config.noteColor || '') || resolvedDefaults.noteColor;\r\n    const accentColor = normalizeHexColor(config.accentColor || '') || resolvedDefaults.accentColor;\r\n    const surfaceColor = normalizeHexColor(config.surfaceColor || '') || resolvedDefaults.surfaceColor;\r\n    const surfaceBorderColor = normalizeHexColor(config.surfaceBorderColor || '')\r\n      || resolvedDefaults.surfaceBorderColor\r\n      || rgbaFromHex(surfaceColor, 0.34)\r\n      || THEME_SYSTEM_DEFAULTS.surfaceBorderColor;\r\n    const cardTextColor = normalizeHexColor(config.cardTextColor || '') || resolvedDefaults.cardTextColor;\r\n    const badgeBackgroundColor = normalizeHexColor(config.badgeBackgroundColor || '') || resolvedDefaults.badgeBackgroundColor;\r\n    const badgeTextColor = normalizeHexColor(config.badgeTextColor || '') || resolvedDefaults.badgeTextColor;\r\n    const websiteButtonColor = normalizeHexColor(config.websiteButtonColor || '') || resolvedDefaults.websiteButtonColor || accentColor;\r\n    const hoursSurfaceColor = normalizeHexColor(config.hoursSurfaceColor || '') || resolvedDefaults.hoursSurfaceColor || surfaceColor;\r\n    const hoursSurfaceBorderColor = normalizeHexColor(config.hoursSurfaceBorderColor || '') || resolvedDefaults.hoursSurfaceBorderColor || surfaceBorderColor;\r\n    const hoursTextColor = normalizeHexColor(config.hoursTextColor || '') || resolvedDefaults.hoursTextColor || cardTextColor;\r\n    const surfaceSoft = rgbaFromHex(surfaceColor, 0.2) || rgbaFromHex(resolvedDefaults.surfaceColor, 0.2);\r\n    const hoursSurfaceSoft = rgbaFromHex(hoursSurfaceColor, 0.2) || surfaceSoft;\r\n    const accentSoft = rgbaFromHex(accentColor, 0.14) || rgbaFromHex(resolvedDefaults.accentColor, 0.14);\r\n    const accentBorder = rgbaFromHex(accentColor, 0.24) || rgbaFromHex(resolvedDefaults.accentColor, 0.24);\r\n    const ctaTextColor = readableTextColor(websiteButtonColor || accentColor || resolvedDefaults.accentColor);\r\n    const brandTextColor = readableTextColor(brandGradientTo || resolvedDefaults.brandGradientTo);\r\n    const themeTargets = [heroTopSlot, heroSlot, titleLockup, appHeader].filter(Boolean);\r\n\r\n    themeTargets.forEach((el) => {\r\n      if (!el || !el.style) return;\r\n      el.style.setProperty('--florame-partner-headline', headlineColor);\r\n      el.style.setProperty('--florame-partner-note-color', noteColor);\r\n      el.style.setProperty('--florame-partner-brand-from', brandGradientFrom);\r\n      el.style.setProperty('--florame-partner-brand-to', brandGradientTo);\r\n      el.style.setProperty('--florame-partner-brand-fg', brandTextColor);\r\n      el.style.setProperty('--florame-partner-accent', accentColor);\r\n      el.style.setProperty('--florame-partner-accent-soft', accentSoft);\r\n      el.style.setProperty('--florame-partner-accent-border', accentBorder);\r\n      el.style.setProperty('--florame-partner-divider', surfaceBorderColor);\r\n      el.style.setProperty('--florame-partner-badge-border', surfaceBorderColor);\r\n      el.style.setProperty('--florame-partner-panel-bg', surfaceColor);\r\n      el.style.setProperty('--florame-partner-surface', surfaceColor);\r\n      el.style.setProperty('--florame-partner-surface-soft', surfaceSoft);\r\n      el.style.setProperty('--florame-partner-cta-secondary-bg', surfaceSoft);\r\n      el.style.setProperty('--florame-partner-badge-bg', badgeBackgroundColor);\r\n      el.style.setProperty('--florame-partner-surface-border', surfaceBorderColor);\r\n      el.style.setProperty('--florame-partner-cta-bg', websiteButtonColor);\r\n      el.style.setProperty('--florame-partner-cta-fg', ctaTextColor);\r\n      el.style.setProperty('--florame-partner-hours-bg', hoursSurfaceColor);\r\n      el.style.setProperty('--florame-partner-hours-soft', hoursSurfaceSoft);\r\n      el.style.setProperty('--florame-partner-hours-border', hoursSurfaceBorderColor);\r\n      el.style.setProperty('--florame-partner-hours-copy', hoursTextColor);\r\n      el.style.setProperty('--florame-partner-hours-copy-muted', rgbaFromHex(hoursTextColor, 0.72) || hoursTextColor);\r\n      el.style.setProperty('--florame-partner-badge-color', badgeTextColor);\r\n      el.style.setProperty('--florame-partner-dark-surface', rgbaFromHex(surfaceColor, 0.18) || rgbaFromHex(resolvedDefaults.surfaceColor, 0.18) || '');\r\n      el.style.setProperty('--florame-partner-dark-border', rgbaFromHex(surfaceBorderColor, 0.26) || rgbaFromHex(resolvedDefaults.surfaceBorderColor, 0.26) || '');\r\n      el.style.setProperty('--florame-partner-copy', cardTextColor);\r\n      el.style.setProperty('--florame-partner-copy-strong', cardTextColor);\r\n      el.style.setProperty('--florame-partner-logo-border', surfaceBorderColor);\r\n    });\r\n    if (appHeader) {\r\n      appHeader.classList.add('partner-storefront-active');\r\n      appHeader.classList.remove('partner-storefront-loading');\r\n    }\r\n    if (greeting) {\r\n      greeting.style.color = headlineColor;\r\n    }\r\n\r\n    heroTopSlot.hidden = false;\r\n    heroTopSlot.innerHTML = `\r\n      <div class=\"florame-partner-logos-row\" aria-hidden=\"true\">\r\n        ${buildLogoMarkup('florame-partner-florame-logo', florameLogo, 'Florame', 'F')}\r\n        <span class=\"florame-partner-brand-x\">\u00D7</span>\r\n        ${buildLogoMarkup('florame-partner-logo', partnerLogo, partner.name || 'Partner', getInitials(partner.name || partner.partnerId || '', 'P'))}\r\n      </div>\r\n    `;\r\n\r\n    heroSlot.hidden = false;\r\n    heroSlot.innerHTML = `\r\n      <div class=\"florame-partner-hero-unified\" data-expanded=\"${expanded ? 'true' : 'false'}\">\r\n        <div class=\"florame-partner-hero-meta\">\r\n          ${partnerWelcome ? `<p class=\"florame-partner-hero-note\">${escapeHtml(partnerWelcome)}</p>` : ''}\r\n          ${badges.length ? `<div class=\"florame-partner-badges\">${badges.map((badge) => `<span class=\"florame-partner-badge\">${escapeHtml(badge)}</span>`).join('')}</div>` : ''}\r\n          ${showHomeCard ? `\r\n            <button type=\"button\" class=\"florame-partner-hero-action\" aria-expanded=\"${expanded ? 'true' : 'false'}\" aria-controls=\"floramePartnerHomeDetails\">\r\n              <span class=\"florame-partner-action-label\">${partnerText('Orari e contatti', 'Hours and contacts')}</span>\r\n              <svg class=\"florame-partner-action-arrow\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.85\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\r\n                <path d=\"M5 7.5L10 12.5L15 7.5\"></path>\r\n              </svg>\r\n            </button>\r\n          ` : ''}\r\n        </div>\r\n        ${showHomeCard ? `\r\n          <div id=\"floramePartnerHomeDetails\" class=\"florame-partner-details\"${expanded ? '' : ' hidden'}>\r\n            <div class=\"florame-partner-detail-grid\">\r\n              <div class=\"florame-partner-detail-block florame-partner-hours-block\">\r\n                <div class=\"florame-partner-detail-label\">${partnerText('Contatti e ritiro', 'Contacts and pickup')}</div>\r\n                <h3 class=\"florame-partner-detail-title\">${escapeHtml(homeCardTitle)}</h3>\r\n                ${addressLine ? `<div class=\"florame-partner-address\">${escapeHtml(addressLine)}</div>` : ''}\r\n                ${phones.length ? `<div class=\"florame-partner-phones\">${phones.map((phone) => `<a class=\"florame-partner-contact-link\" href=\"tel:${escapeHtml(phoneHref(phone))}\"><span>${escapeHtml(phone)}</span><span>${partnerText('Chiama', 'Call')}</span></a>`).join('')}</div>` : ''}\r\n                <div class=\"florame-partner-actions\">\r\n                  ${googleProfileUrl ? `<a class=\"florame-partner-cta florame-partner-cta-primary\" href=\"${escapeHtml(googleProfileUrl)}\" target=\"_blank\" rel=\"noreferrer\">${partnerText('Sito web', 'Website')}</a>` : ''}\r\n                  ${googleMapsUrl ? `<a class=\"florame-partner-cta florame-partner-cta-secondary\" href=\"${escapeHtml(googleMapsUrl)}\" target=\"_blank\" rel=\"noreferrer\">${partnerText('Indicazioni', 'Directions')}</a>` : ''}\r\n                </div>\r\n              </div>\r\n              <div class=\"florame-partner-detail-block\">\r\n                <div class=\"florame-partner-detail-label\">${partnerText('Orari', 'Hours')}</div>\r\n                <h3 class=\"florame-partner-detail-title\">${partnerText('Quando trovi aperto', 'Opening hours')}</h3>\r\n                <div class=\"florame-partner-hours\">\r\n                  ${hours.map((row) => `<div class=\"florame-partner-hours-row\"><strong>${escapeHtml(row.label)}</strong><span>${escapeHtml(row.value)}</span></div>`).join('')}\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        ` : ''}\r\n      </div>\r\n    `;\r\n    const heroMerge = heroSlot.querySelector('.florame-partner-hero-unified');\r\n    const details = heroSlot.querySelector('#floramePartnerHomeDetails');\r\n    const toggle = heroSlot.querySelector('.florame-partner-hero-action');\r\n    if (toggle && heroMerge && details) {\r\n      toggle.onclick = function () {\r\n        const next = heroMerge.dataset.expanded !== 'true';\r\n        heroMerge.dataset.expanded = next ? 'true' : 'false';\r\n        details.hidden = !next;\r\n        toggle.setAttribute('aria-expanded', next ? 'true' : 'false');\r\n        saveCardExpanded(partnerSlug, next);\r\n      };\r\n    }\r\n    if (!options || options.skipPrewarm !== true) {\r\n      prewarmPartnerCardTranslations(partner);\r\n    }\r\n  }\r\n\r\n  function applyRobotsMeta(partner) {\r\n    if (!partner || partner.storefrontConfig?.noIndex !== true) return;\r\n    let meta = document.querySelector('meta[name=\"robots\"]');\r\n    if (!meta) {\r\n      meta = document.createElement('meta');\r\n      meta.setAttribute('name', 'robots');\r\n      document.head.appendChild(meta);\r\n    }\r\n    meta.setAttribute('content', 'noindex, nofollow');\r\n  }\r\n\r\n  async function resolvePartner(options) {\r\n    const ctx = getContext();\r\n    if (!ctx.active) {\r\n      window.__floramePartner = null;\r\n      window.__florameStorefrontDefaults = null;\r\n      window.__florameDeliveryRescheduleSettings = null;\r\n      window.__florameDeliverySpecialDateSettings = null;\r\n      window.__florameDeliveryTimeSlotSettings = null;\r\n      try { window.__FloramePackagingAvailability = null; } catch (_) {}\r\n      try { if (typeof window.updateFloramePackagingAvailability === 'function') window.updateFloramePackagingAvailability(null); } catch (_) {}\r\n      return null;\r\n    }\r\n    const cachedPayload = options?.cachedPayload || readCachedPartnerPayload(ctx.slug);\r\n\r\n    const apiBase = CONFIG.apiBase || 'https://us-central1-flower-ai-2d7aa.cloudfunctions.net';\r\n    const url = new URL(apiBase.replace(/\\/+$/, '') + '/portalResolveContext');\r\n    url.searchParams.set('partnerSlug', ctx.slug);\r\n    url.searchParams.set('host', window.location.host || '');\r\n    const res = await fetch(url.toString(), { credentials: 'omit', cache: 'no-store' }).catch(() => null);\r\n    if (!res || !res.ok) {\r\n      if (cachedPayload?.partner) {\r\n        window.__floramePartner = cachedPayload.partner;\r\n        window.__florameStorefrontDefaults = cachedPayload.storefrontDefaults || null;\r\n        window.__florameDeliveryRescheduleSettings = cachedPayload.deliveryRescheduleSettings || cachedPayload.partner?.deliveryReschedule || null;\r\n        window.__florameDeliverySpecialDateSettings = cachedPayload.deliverySpecialDateSettings || cachedPayload.partner?.deliverySpecialDates || null;\r\n        window.__florameDeliveryTimeSlotSettings = cachedPayload.deliveryTimeSlotSettings || cachedPayload.partner?.deliveryTimeSlots || null;\r\n        applyPartnerPackagingAvailability(cachedPayload.partner);\r\n        return cachedPayload.partner;\r\n      }\r\n      return null;\r\n    }\r\n    const data = await res.json().catch(() => null);\r\n    const partner = data?.partner || null;\r\n    window.__florameStorefrontDefaults = (data?.storefrontDefaults && typeof data.storefrontDefaults === 'object')\r\n      ? data.storefrontDefaults\r\n      : null;\r\n    window.__florameDeliveryRescheduleSettings = (data?.deliveryRescheduleSettings && typeof data.deliveryRescheduleSettings === 'object')\r\n      ? data.deliveryRescheduleSettings\r\n      : (partner?.deliveryReschedule || null);\r\n    window.__florameDeliverySpecialDateSettings = (data?.deliverySpecialDateSettings && typeof data.deliverySpecialDateSettings === 'object')\r\n      ? data.deliverySpecialDateSettings\r\n      : (partner?.deliverySpecialDates || null);\r\n    window.__florameDeliveryTimeSlotSettings = (data?.deliveryTimeSlotSettings && typeof data.deliveryTimeSlotSettings === 'object')\r\n      ? data.deliveryTimeSlotSettings\r\n      : (partner?.deliveryTimeSlots || null);\r\n    if (partner) {\r\n      window.__floramePartner = partner;\r\n      applyPartnerPackagingAvailability(partner);\r\n      saveCachedPartnerPayload(\r\n        ctx.slug,\r\n        partner,\r\n        window.__florameStorefrontDefaults || null,\r\n        window.__florameDeliveryRescheduleSettings || null,\r\n        window.__florameDeliverySpecialDateSettings || null,\r\n        window.__florameDeliveryTimeSlotSettings || null\r\n      );\r\n      return partner;\r\n    }\r\n    window.__floramePartner = null;\r\n    clearCachedPartnerPayload(ctx.slug);\r\n    try { window.__FloramePackagingAvailability = null; } catch (_) {}\r\n    try { if (typeof window.updateFloramePackagingAvailability === 'function') window.updateFloramePackagingAvailability(null); } catch (_) {}\r\n    return null;\r\n  }\r\n\r\n  function getOrderAttributes() {\r\n    const ctx = getContext();\r\n    if (!ctx.active) return {};\r\n    return {\r\n      Partner_Source: ctx.slug,\r\n      Partner_Source_Type: 'partner_storefront',\r\n      Partner_Source_Path: ctx.sourcePath,\r\n      Partner_Route_Mode: ctx.routeMode,\r\n    };\r\n  }\r\n\r\n  function normalizeDeliveryType(value) {\r\n    const raw = String(value || '').trim().toLowerCase();\r\n    if (raw === 'pickup' || raw.includes('ritiro')) return 'pickup';\r\n    return 'delivery';\r\n  }\r\n\r\n  function hasPickupPayload(attrs) {\r\n    if (!attrs || typeof attrs !== 'object') return false;\r\n    return normalizeDeliveryType(attrs.Delivery_Type || attrs['Modalita Consegna'] || attrs.Modalita_Consegna) === 'pickup'\r\n      || !!attrs.Pickup_Address\r\n      || !!attrs.Pickup_Partner\r\n      || !!attrs.Pickup_CAP;\r\n  }\r\n\r\n  function clearStalePickupDeliveryAttributes(target) {\r\n    [\r\n      'Data Consegna',\r\n      'Data Consegna (ISO)',\r\n      'Fascia Oraria',\r\n      'Orario Specifico',\r\n      'Destinatario',\r\n      'Indirizzo Consegna',\r\n      'Indirizzo_Via',\r\n      'Indirizzo_CAP',\r\n      'Indirizzo_Citta',\r\n      'Indirizzo_Provincia',\r\n      'Telefono',\r\n      'Email destinatario',\r\n      'Recipient_Email',\r\n      'Recipient_Email_Source',\r\n      'Customer_Email',\r\n      'Citofono',\r\n      'Note Corriere',\r\n      'Messaggio Biglietto',\r\n      'Tipo Ordine',\r\n      'Pickup_Address',\r\n      'Pickup_Partner',\r\n      'Pickup_CAP',\r\n      'NOTE_ORDINE_RICCA'\r\n    ].forEach((key) => { target[key] = ''; });\r\n    target.Delivery_Type = 'delivery';\r\n    target['Modalita Consegna'] = 'Consegna a domicilio';\r\n  }\r\n\r\n  let cartAttributionSignature = '';\r\n  let cartAttributionInFlight = null;\r\n\r\n  async function syncCartAttribution(options) {\r\n    const ctx = getContext();\r\n    if (!ctx.active) return null;\r\n    const attrs = getOrderAttributes();\r\n    if (!attrs.Partner_Source) return null;\r\n    const reason = String(options?.reason || 'partner-context');\r\n    const signature = [\r\n      attrs.Partner_Source,\r\n      attrs.Partner_Source_Type,\r\n      attrs.Partner_Source_Path,\r\n      attrs.Partner_Route_Mode\r\n    ].join('|');\r\n    if (cartAttributionInFlight) return cartAttributionInFlight;\r\n    if (cartAttributionSignature === signature && options?.force !== true) return null;\r\n\r\n    cartAttributionInFlight = (async () => {\r\n      try {\r\n        const cart = await fetch('/cart.js', {\r\n          cache: 'no-store',\r\n          credentials: 'same-origin',\r\n          headers: { 'Accept': 'application/json' }\r\n        }).then((res) => (res && res.ok ? res.json() : null)).catch(() => null);\r\n        if (!cart || Number(cart.item_count || 0) <= 0) {\r\n          return cart;\r\n        }\r\n        const current = (cart.attributes && typeof cart.attributes === 'object') ? cart.attributes : {};\r\n        const previousPartnerSlug = slugify(current.Partner_Source || current.Partner_Slug || current.Partner_Source_Slug || '');\r\n        const nextPartnerSlug = slugify(attrs.Partner_Source || '');\r\n        const stalePickupFromOtherPartner = !!previousPartnerSlug\r\n          && !!nextPartnerSlug\r\n          && previousPartnerSlug !== nextPartnerSlug\r\n          && hasPickupPayload(current);\r\n        const merged = Object.assign({}, current, attrs);\r\n        if (stalePickupFromOtherPartner) clearStalePickupDeliveryAttributes(merged);\r\n        const changed = stalePickupFromOtherPartner\r\n          || Object.keys(attrs).some((key) => String(current[key] || '') !== String(attrs[key] || ''));\r\n        if (!changed) {\r\n          cartAttributionSignature = signature;\r\n          return cart;\r\n        }\r\n        const updated = await fetch('/cart/update.js', {\r\n          method: 'POST',\r\n          credentials: 'same-origin',\r\n          headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\r\n          body: JSON.stringify({ attributes: merged })\r\n        }).then((res) => (res && res.ok ? res.json() : null));\r\n        cartAttributionSignature = signature;\r\n        try {\r\n          document.dispatchEvent(new CustomEvent('florame:cart-attribution-synced', {\r\n            detail: { reason, attributes: attrs, stalePickupReset: stalePickupFromOtherPartner }\r\n          }));\r\n        } catch (_) {}\r\n        return updated || cart;\r\n      } finally {\r\n        cartAttributionInFlight = null;\r\n      }\r\n    })();\r\n    return cartAttributionInFlight;\r\n  }\r\n\r\n  let cartAttributionListenersBound = false;\r\n  let cartAttributionTimer = null;\r\n\r\n  function scheduleCartAttributionSync(reason) {\r\n    if (cartAttributionTimer) clearTimeout(cartAttributionTimer);\r\n    cartAttributionTimer = setTimeout(() => {\r\n      cartAttributionTimer = null;\r\n      syncCartAttribution({ reason, force: true }).catch(() => {});\r\n    }, 180);\r\n  }\r\n\r\n  function bindCartAttributionResync() {\r\n    if (cartAttributionListenersBound) return;\r\n    cartAttributionListenersBound = true;\r\n    ['florame:cart-updated', 'cart:updated', 'essential-upsell:cart-updated', 'essential-upsell-cart-updated'].forEach((eventName) => {\r\n      document.addEventListener(eventName, () => scheduleCartAttributionSync(eventName));\r\n    });\r\n  }\r\n\r\n  function getAttributionMeta() {\r\n    const ctx = getContext();\r\n    return {\r\n      partnerSlug: ctx.active ? slugify(ctx.slug) : '',\r\n      sourceType: ctx.active ? 'partner_storefront' : 'florame_direct',\r\n      sourcePath: window.location.pathname + window.location.search,\r\n      routeMode: ctx.active ? ctx.routeMode : '',\r\n      host: window.location.host || '',\r\n    };\r\n  }\r\n\r\n  async function ensureReady() {\r\n    maybeRewriteCurrentUrl();\r\n    rewriteKnownLinks(document);\r\n    observeLinks();\r\n    runRewritePasses();\r\n    bindCartAttributionResync();\r\n    const ctx = getContext();\r\n    const cachedPayload = ctx.active ? readCachedPartnerPayload(ctx.slug) : null;\r\n    if (cachedPayload?.partner) {\r\n      window.__floramePartner = cachedPayload.partner;\r\n      window.__florameStorefrontDefaults = cachedPayload.storefrontDefaults || null;\r\n      window.__florameDeliveryRescheduleSettings = cachedPayload.deliveryRescheduleSettings || cachedPayload.partner?.deliveryReschedule || null;\r\n      window.__florameDeliverySpecialDateSettings = cachedPayload.deliverySpecialDateSettings || cachedPayload.partner?.deliverySpecialDates || null;\r\n      window.__florameDeliveryTimeSlotSettings = cachedPayload.deliveryTimeSlotSettings || cachedPayload.partner?.deliveryTimeSlots || null;\r\n      applyPartnerPackagingAvailability(cachedPayload.partner);\r\n      renderPartnerHome(cachedPayload.partner);\r\n      applyRobotsMeta(cachedPayload.partner);\r\n    } else if (ctx.active) {\r\n      renderPartnerLoading(ctx);\r\n    }\r\n\r\n    const partner = await resolvePartner({ cachedPayload });\r\n    if (partner) {\r\n      renderPartnerHome(partner);\r\n      applyRobotsMeta(partner);\r\n      runRewritePasses();\r\n      syncCartAttribution({ reason: 'partner-ready' }).catch(() => {});\r\n      document.dispatchEvent(new CustomEvent('florame:partner-ready', { detail: partner }));\r\n    } else {\r\n      renderPartnerHome(null);\r\n    }\r\n    return partner;\r\n  }\r\n\r\n  try {\r\n    window.addEventListener('florame:native-language-change', () => {\r\n      if (window.__floramePartner) {\r\n        renderPartnerHome(window.__floramePartner);\r\n      } else {\r\n        renderPartnerLoading(getContext());\r\n      }\r\n    });\r\n  } catch (_) {}\r\n\r\n  window.FloramePartner = {\r\n    getContext,\r\n    homeUrl,\r\n    appUrl,\r\n    productUrl,\r\n    accountUrl,\r\n    loginUrl,\r\n    rewriteKnownLinks,\r\n    resolvePartner,\r\n    renderPartnerHome,\r\n    renderPartnerLoading,\r\n    getOrderAttributes,\r\n    getAttributionMeta,\r\n    syncCartAttribution,\r\n  };\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', ensureReady, { once: true });\r\n  } else {\r\n    ensureReady();\r\n  }\r\n})();\r\n"],
  "mappings": "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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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",
  "names": []
}
