{
  "version": 3,
  "sources": ["/cdn/shop/t/38/assets/global.js?scrollfix=20261006-pdpfix1"],
  "sourcesContent": ["/* ============================================================\n   Totulonline \u2014 global.js\n   Framework yok, saf JS. Sepet (AJAX), arama, slider, varyant.\n   ============================================================ */\n(function () {\n  'use strict';\n\n  // Tema edit\u00F6r\u00FCnde yaln\u0131zca URL y\u00F6nlendirme / sayfa yenileme gibi riskli i\u015Flemleri kes;\n  // varyant, bundle, sepet hesaplar\u0131 edit\u00F6r \u00F6nizlemesinde de \u00E7al\u0131\u015Fs\u0131n (shopify theme dev / customize).\n  const isDesignMode = !!(window.Shopify && window.Shopify.designMode);\n\n  const theme = window.theme || {};\n  const isDevLocal = !!(\n    theme.devLocalPreview\n    || location.hostname === '127.0.0.1'\n    || location.hostname === 'localhost'\n    || (window.Shopify && window.Shopify.theme && window.Shopify.theme.role === 'development')\n  );\n  const $ = (sel, ctx = document) => ctx.querySelector(sel);\n  const $$ = (sel, ctx = document) => Array.from(ctx.querySelectorAll(sel));\n  const on = (el, ev, fn, opt) => el && el.addEventListener(ev, fn, opt);\n  // Safari gizli mod / dolu kota / sandbox iframe: storage eri\u015Fimi f\u0131rlatabilir\n  const safeSetItem = (key, value) => { try { localStorage.setItem(key, value); } catch (e) { /* sessiz ge\u00E7 */ } };\n  const safeGetItem = (key) => { try { return localStorage.getItem(key); } catch (e) { return null; } };\n  const safeRemoveItem = (key) => { try { localStorage.removeItem(key); } catch (e) { /* sessiz ge\u00E7 */ } };\n  const safeSessionGet = (key) => { try { return sessionStorage.getItem(key); } catch (e) { return null; } };\n  const safeSessionSet = (key, value) => { try { sessionStorage.setItem(key, value); } catch (e) { /* sessiz ge\u00E7 */ } };\n  const safeSessionRemove = (key) => { try { sessionStorage.removeItem(key); } catch (e) { /* sessiz ge\u00E7 */ } };\n\n  /* ---------- Para format\u0131 \u2014 Liquid | money ile ayn\u0131 (pazar para birimi) ---------- */\n  const _locale = theme.locale || 'ro-RO';\n  function formatWithDelimiters(number, precision, thousands, decimal) {\n    if (number == null || Number.isNaN(number)) return '0';\n    const fixed = (Number(number) / 100).toFixed(precision);\n    const parts = fixed.split('.');\n    const whole = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1' + thousands);\n    return parts[1] != null && precision > 0 ? whole + decimal + parts[1] : whole;\n  }\n  function presentmentMoney(cents, currencyCode) {\n    const map = { PLN: 'pl-PL', HUF: 'hu-HU', CZK: 'cs-CZ', GBP: 'en-GB', EUR: 'de-DE', RON: 'ro-RO' };\n    const code = String(currencyCode || '').toUpperCase();\n    const loc = map[code] || 'en-GB';\n    try {\n      return new Intl.NumberFormat(loc, { style: 'currency', currency: code }).format(cents / 100);\n    } catch (e) {\n      return (cents / 100).toFixed(2) + ' ' + code;\n    }\n  }\n  function formatMoney(cents, formatOverride) {\n    if (typeof cents === 'string') cents = parseInt(cents, 10) || 0;\n    cents = Math.round(Number(cents) || 0);\n    const activeCurrency =\n      (typeof theme !== 'undefined' && theme.currency) ||\n      (window.Shopify && window.Shopify.currency && window.Shopify.currency.active) ||\n      '';\n    const shopFmt = (typeof theme !== 'undefined' && theme.moneyFormat) || '';\n    if (\n      !formatOverride &&\n      activeCurrency &&\n      activeCurrency !== 'RON' &&\n      /lei|\\bRON\\b/i.test(shopFmt)\n    ) {\n      return presentmentMoney(cents, activeCurrency);\n    }\n    if (typeof window.Shopify !== 'undefined' && typeof window.Shopify.formatMoney === 'function') {\n      const fmt = formatOverride || theme.moneyFormat;\n      if (fmt) return window.Shopify.formatMoney(cents, fmt);\n    }\n    const formatString = formatOverride || theme.moneyFormat || theme.moneyWithCurrencyFormat || '{{amount}}';\n    const placeholderRegex = /\\{\\{\\s*(\\w+)\\s*\\}\\}/;\n    const match = formatString.match(placeholderRegex);\n    let value = formatWithDelimiters(cents, 2, '.', ',');\n    if (match) {\n      switch (match[1]) {\n        case 'amount_no_decimals':\n          value = formatWithDelimiters(cents, 0, '.', ',');\n          break;\n        case 'amount_with_comma_separator':\n          value = formatWithDelimiters(cents, 2, '.', ',');\n          break;\n        case 'amount_no_decimals_with_comma_separator':\n          value = formatWithDelimiters(cents, 0, '.', ',');\n          break;\n        case 'amount_with_apostrophe_separator':\n          value = formatWithDelimiters(cents, 2, \"'\", '.');\n          break;\n        case 'amount':\n        default:\n          value = formatWithDelimiters(cents, 2, '.', ',');\n      }\n      return formatString.replace(placeholderRegex, value);\n    }\n    return value;\n  }\n  window.formatMoney = formatMoney;\n\n  /* ---------- Toast ---------- */\n  function toast(message, type = 'success') {\n    const container = $('#ToastContainer');\n    if (!container) return alert(message);\n    const el = document.createElement('div');\n    el.className = 'toast toast--' + type;\n    el.setAttribute('role', 'status');\n    const iconSvg = type === 'error'\n      ? '<svg class=\"icon\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M15 9 9 15M9 9l6 6\"/></svg>'\n      : '<svg class=\"icon\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-1 14.4-4-4 1.4-1.4 2.6 2.6 5.6-5.6L18 9.4z\"/></svg>';\n    el.innerHTML = iconSvg + '<span>' + (message || '') + '</span>';\n    container.appendChild(el);\n    setTimeout(() => {\n      el.style.opacity = '0';\n      el.style.transition = 'opacity .3s';\n      setTimeout(() => el.remove(), 300);\n    }, 3000);\n  }\n  window.toast = toast;\n\n  /* ---------- Cart API ---------- */\n  const Cart = {\n    async getState() {\n      const url = new URL(theme.routes.cart + '.js', location.origin);\n      const res = await fetch(url, { headers: { 'Accept': 'application/json' } });\n      return res.json();\n    },\n    async add(items, sections) {\n      const body = { items: Array.isArray(items) ? items : [items] };\n      if (sections) { body.sections = sections; body.sections_url = location.pathname; }\n      const res = await fetch(theme.routes.cartAdd, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n        body: JSON.stringify(body)\n      });\n      const data = await res.json();\n      if (!res.ok) throw data;\n      return data;\n    },\n    async change(payload, sections) {\n      const body = Object.assign({}, payload);\n      if (sections) { body.sections = sections; body.sections_url = location.pathname; }\n      const res = await fetch(theme.routes.cartChange, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n        body: JSON.stringify(body)\n      });\n      const data = await res.json();\n      if (!res.ok) throw data;\n      return data;\n    },\n    async update(payload, sections) {\n      const body = Object.assign({}, payload);\n      if (sections) { body.sections = sections; body.sections_url = location.pathname; }\n      const res = await fetch(theme.routes.cartUpdate, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n        body: JSON.stringify(body)\n      });\n      const data = await res.json();\n      if (!res.ok) throw data;\n      return data;\n    }\n  };\n  window.Cart = Cart;\n\n  /* ---------- B\u00F6l\u00FCm render yard\u0131mc\u0131lar\u0131 ---------- */\n  function unlockCartDrawerScroll(body) {\n    if (!body) return;\n    body.style.overflowY = 'auto';\n    body.style.webkitOverflowScrolling = 'touch';\n    body.style.touchAction = 'pan-y';\n    body.style.pointerEvents = '';\n    void body.offsetHeight;\n  }\n\n  function getDrawer() {\n    return document.getElementById('CartDrawer');\n  }\n\n  let drawerOpen = false;\n  let drawerCloseGuardUntil = 0;\n  let drawerReadyTimer = 0;\n\n  const bodyScrollLock = { active: false, scrollY: 0 };\n  function clearBodyScrollStyles() {\n    document.documentElement.classList.remove('scroll-locked');\n    document.body.classList.remove('scroll-locked');\n    document.documentElement.style.overflow = '';\n    document.body.style.overflow = '';\n    document.body.style.position = '';\n    document.body.style.top = '';\n    document.body.style.left = '';\n    document.body.style.right = '';\n    document.body.style.width = '';\n    document.body.style.touchAction = '';\n  }\n  function lockBodyScroll() {\n    if (!bodyScrollLock.active) {\n      bodyScrollLock.scrollY = window.scrollY || document.documentElement.scrollTop || 0;\n    }\n    bodyScrollLock.active = true;\n    document.body.classList.add('scroll-locked');\n  }\n  function unlockBodyScroll() {\n    clearBodyScrollStyles();\n    if (bodyScrollLock.active) {\n      const y = bodyScrollLock.scrollY;\n      bodyScrollLock.active = false;\n      window.scrollTo(0, y);\n    }\n  }\n  function reviveDrawerScroll() {\n    const el = getDrawer();\n    if (!el) return;\n    const body = $('.cart-drawer__body', el);\n    if (body) {\n      unlockCartDrawerScroll(body);\n      body.style.pointerEvents = 'auto';\n    }\n    if (drawerOpen || el.classList.contains('is-open')) {\n      el.classList.add('is-open');\n      el.classList.add('is-close-ready');\n    }\n  }\n  function ensureDrawerScrollHealthy() {\n    const el = getDrawer();\n    if (!el || !(drawerOpen || el.classList.contains('is-open'))) return;\n    drawerOpen = true;\n    lockBodyScroll();\n    reviveDrawerScroll();\n    requestAnimationFrame(reviveDrawerScroll);\n    setTimeout(reviveDrawerScroll, 120);\n  }\n  function syncCartScrollState() {\n    const el = getDrawer();\n    const isOpen = !!(el && (drawerOpen || el.classList.contains('is-open')));\n    if (isOpen) {\n      drawerOpen = true;\n      lockBodyScroll();\n      reviveDrawerScroll();\n      requestAnimationFrame(reviveDrawerScroll);\n      setTimeout(reviveDrawerScroll, 80);\n    } else {\n      drawerOpen = false;\n      unlockBodyScroll();\n    }\n  }\n\n  function onCartPage() {\n    return document.body.classList.contains('template-cart');\n  }\n\n  function cartSectionIds() {\n    const ids = [];\n    $$('[data-cart-section]').forEach(function (el) {\n      const wrap = el.closest('[id^=\"shopify-section-\"]');\n      const id = wrap ? wrap.id.replace(/^shopify-section-/, '') : el.getAttribute('data-cart-section');\n      if (id && ids.indexOf(id) === -1) ids.push(id);\n    });\n    if (!ids.length) {\n      if (getDrawer()) ids.push('cart-drawer');\n      ids.push('main-cart');\n    }\n    return ids;\n  }\n\n  function normalizeSectionsPayload(data) {\n    if (!data || typeof data !== 'object') return null;\n    if (data.sections && typeof data.sections === 'object') return data.sections;\n    const sections = {};\n    Object.keys(data).forEach(function (k) {\n      if (typeof data[k] === 'string' && data[k].indexOf('data-cart-section') !== -1) sections[k] = data[k];\n    });\n    return Object.keys(sections).length ? sections : null;\n  }\n\n  function renderFromSections(data, opts) {\n    const sectionsMap = normalizeSectionsPayload(data);\n    if (!sectionsMap) return false;\n    const preserveScroll = !opts || opts.preserveScroll !== false;\n    const savedScroll = preserveScroll && opts && typeof opts.scrollTop === 'number'\n      ? opts.scrollTop\n      : null;\n    let painted = false;\n\n    Object.keys(sectionsMap).forEach((id) => {\n      const html = sectionsMap[id];\n      if (!html) return;\n      const parsed = new DOMParser().parseFromString(html, 'text/html');\n      const freshRoot = parsed.querySelector('[data-cart-section]')\n        || parsed.querySelector('[id^=\"shopify-section-\"]')\n        || parsed.body.firstElementChild;\n      if (!freshRoot) return;\n      const type = freshRoot.getAttribute('data-cart-section')\n        || (parsed.querySelector('[data-cart-section]') && parsed.querySelector('[data-cart-section]').getAttribute('data-cart-section'))\n        || id;\n      const source = parsed.querySelector('[data-cart-section=\"' + type + '\"]') || freshRoot;\n      const targets = $$('[data-cart-section=\"' + type + '\"]');\n      if (!targets.length) return;\n\n      targets.forEach((target) => {\n        const keepDrawerOpen = type === 'cart-drawer' && (drawerOpen || target.classList.contains('is-open'));\n        const body = $('.cart-drawer__body', target);\n        const scrollTop = savedScroll != null ? savedScroll : (body ? body.scrollTop : 0);\n\n        const savedRecs = new Map();\n        if (!opts || opts.preserveRecs !== false) {\n          $$('[data-recommendations]', target).forEach((el) => {\n            const url = el.getAttribute('data-url') || '';\n            if (el.dataset.recsInit && el.querySelector('.product-card a[href*=\"/products/\"]')) {\n              savedRecs.set(url, el.cloneNode(true));\n            }\n          });\n        }\n\n        const livePanel = type === 'cart-drawer' ? $('.cart-drawer__panel', target) : null;\n        const freshPanel = type === 'cart-drawer' ? $('.cart-drawer__panel', source) : null;\n        if (livePanel && freshPanel) {\n          livePanel.innerHTML = freshPanel.innerHTML;\n        } else {\n          target.innerHTML = source.innerHTML;\n        }\n        painted = true;\n\n        if (type === 'cart-drawer' && keepDrawerOpen) {\n          target.classList.add('is-open');\n          target.classList.add('is-close-ready');\n          target.setAttribute('aria-hidden', 'false');\n          drawerOpen = true;\n        }\n\n        $$('[data-recommendations]', target).forEach((el) => {\n          const url = el.getAttribute('data-url') || '';\n          const saved = savedRecs.get(url);\n          if (saved) el.replaceWith(saved);\n        });\n\n        initRails(target);\n        observeRecommendations(target);\n\n        const newBody = $('.cart-drawer__body', target);\n        if (newBody) {\n          newBody.scrollTop = scrollTop;\n          unlockCartDrawerScroll(newBody);\n        }\n      });\n    });\n    syncCartScrollState();\n    return painted;\n  }\n\n  async function paintCart(data, opts) {\n    const painted = renderFromSections(data, opts);\n    if (painted) {\n      syncCartScrollState();\n      return true;\n    }\n    const refreshed = await refreshCartSections();\n    if (renderFromSections(refreshed, opts)) {\n      syncCartScrollState();\n      return true;\n    }\n    if (onCartPage()) {\n      window.location.reload();\n      return true;\n    }\n    return false;\n  }\n\n  async function reloadCartView() {\n    if (theme.cartType === 'drawer' && !onCartPage() && getDrawer()) {\n      safeSessionSet('totul_reopen_drawer', '1');\n      try {\n        const refreshed = await refreshCartSections();\n        if (await paintCart(refreshed || {}, { preserveRecs: true })) {\n          openDrawer();\n          const state = await Cart.getState();\n          updateCartCounts(state.item_count);\n          document.dispatchEvent(new CustomEvent('cart:updated', { detail: state }));\n          return;\n        }\n      } catch (e) { /* tam sayfa yenilemeye d\u00FC\u015F */ }\n    }\n    window.location.reload();\n  }\n\n  function updateCartCounts(count) {\n    $$('[data-cart-count]').forEach((el) => {\n      el.textContent = count;\n      el.hidden = count === 0;\n    });\n  }\n\n  /* ---------- Cart Drawer ---------- */\n  function openDrawer() {\n    const el = getDrawer();\n    if (!el) return;\n    drawerOpen = true;\n    drawerCloseGuardUntil = Date.now() + 800;\n    el.classList.add('is-open');\n    el.classList.remove('is-close-ready');\n    lockBodyScroll();\n    el.setAttribute('aria-hidden', 'false');\n    clearTimeout(drawerReadyTimer);\n    drawerReadyTimer = setTimeout(function () {\n      const live = getDrawer();\n      if (live && drawerOpen) live.classList.add('is-close-ready');\n    }, 500);\n    unlockCartDrawerScroll($('.cart-drawer__body', el));\n    const panel = $('.cart-drawer__panel', el);\n    if (panel) {\n      if (!panel.hasAttribute('tabindex')) panel.setAttribute('tabindex', '-1');\n      try { panel.focus({ preventScroll: true }); } catch (e) { /* sessiz ge\u00E7 */ }\n    }\n    Cart.getState().then((cart) => {\n      document.dispatchEvent(new CustomEvent('cart:opened', { detail: cart }));\n    }).catch(() => {});\n  }\n  /* ---------- Paket indirimi \u2014 min \u00FCr\u00FCn say\u0131s\u0131 alt\u0131na d\u00FC\u015F\u00FCnce kodu kald\u0131r ---------- */\n  function readStoredBundleMin(code) {\n    try {\n      const raw = localStorage.getItem('bt_discount_' + code);\n      if (!raw) return 0;\n      const parsed = JSON.parse(raw);\n      return parseInt(parsed.minItems, 10) || 0;\n    } catch (e) { return 0; }\n  }\n  function storeBundleMin(code, minItems) {\n    if (!code) return;\n    safeSetItem('bt_discount_' + code, JSON.stringify({ minItems: minItems }));\n  }\n  function clearStoredBundleMin(code) {\n    if (!code) return;\n    try { localStorage.removeItem('bt_discount_' + code); } catch (e) { /* sessiz ge\u00E7 */ }\n  }\n  function getActiveBundleDiscountCode(cart) {\n    const apps = cart.cart_level_discount_applications || [];\n    const fromApps = apps\n      .map((a) => (a.title || a.code || '').trim())\n      .find((c) => c && String(c).startsWith('BT-'));\n    if (fromApps) return fromApps;\n    const attrs = cart.attributes || {};\n    const fromAttrs = String(attrs._bundle_discount_code || '').trim();\n    return fromAttrs.startsWith('BT-') ? fromAttrs : '';\n  }\n  const bundleMinCache = {};\n  async function fetchBundleMinFromApi(code) {\n    if (bundleMinCache[code]) return bundleMinCache[code];\n    const apiBase = (theme.adminApi || '').replace(/\\/$/, '');\n    if (!apiBase) return 0;\n    try {\n      const res = await fetch(apiBase + '/bundle-discount?code=' + encodeURIComponent(code), {\n        headers: { Accept: 'application/json' },\n      });\n      if (!res.ok) return 0;\n      const data = await res.json();\n      const min = parseInt(data.min_items, 10) || 0;\n      if (min) bundleMinCache[code] = min;\n      return min;\n    } catch (e) { return 0; }\n  }\n  async function resolveBundleMinItems(bundleCode, cart) {\n    const attrs = cart.attributes || {};\n    let minItems = parseInt(attrs._bundle_min_items, 10) || readStoredBundleMin(bundleCode) || 0;\n    cart.items.forEach((item) => {\n      const m = parseInt((item.properties || {})._bundle_min_items, 10);\n      if (m > minItems) minItems = m;\n    });\n    const hasStoredMin = !!(attrs._bundle_min_items || readStoredBundleMin(bundleCode) || cart.items.some((item) => (item.properties || {})._bundle_min_items));\n    if (!hasStoredMin) {\n      const fromApi = await fetchBundleMinFromApi(bundleCode);\n      if (fromApi >= 2) minItems = fromApi;\n    }\n    return minItems || 2;\n  }\n  async function reconcileBundleDiscount(cartData, options) {\n    const skipRender = options && options.skipRender;\n    let cart = cartData;\n    if (!cart || !Array.isArray(cart.items)) {\n      try { cart = await Cart.getState(); } catch (e) { return null; }\n    }\n    const bundleCode = getActiveBundleDiscountCode(cart);\n    if (!bundleCode) return null;\n\n    const minItems = await resolveBundleMinItems(bundleCode, cart);\n    let lineCount = 0;\n    cart.items.forEach((item) => {\n      const p = item.properties || {};\n      const propCode = String(p._bundle_discount_code || '').trim();\n      if (propCode === bundleCode || (p._bundle && (!propCode || propCode === bundleCode))) {\n        lineCount += 1;\n      }\n    });\n\n    if (lineCount === 0) {\n      cart.items.forEach((item) => {\n        const allocs = item.line_level_discount_allocations || [];\n        const hit = allocs.some((a) => {\n          const t = (a.discount_application && a.discount_application.title) || a.title || '';\n          return String(t).includes(bundleCode);\n        });\n        if (hit) lineCount += 1;\n      });\n    }\n\n    if (lineCount >= minItems) return null;\n\n    const sections = cartSectionIds();\n    try {\n      const updated = await Cart.update({\n        discount: '',\n        attributes: { _bundle_discount_code: '', _bundle_min_items: '' }\n      }, sections);\n      clearStoredBundleMin(bundleCode);\n      if (!skipRender) {\n        updateCartCounts(updated.item_count);\n        await paintCart(updated);\n      }\n      return updated;\n    } catch (e) {\n      return null;\n    }\n  }\n\n  function closeDrawer() {\n    if (Date.now() < drawerCloseGuardUntil) return;\n    const el = getDrawer();\n    drawerOpen = false;\n    clearTimeout(drawerReadyTimer);\n    if (el) {\n      el.classList.remove('is-open');\n      el.classList.remove('is-close-ready');\n      el.setAttribute('aria-hidden', 'true');\n    }\n    unlockBodyScroll();\n  }\n  window.openCartDrawer = openDrawer;\n  window.closeCartDrawer = closeDrawer;\n\n  if (!isDesignMode) {\n    reconcileBundleDiscount().then((data) => {\n      if (data) document.dispatchEvent(new CustomEvent('cart:updated', { detail: data }));\n    }).catch(() => {});\n  }\n\n  on(document, 'click', (e) => {\n    if (Date.now() < drawerCloseGuardUntil) return;\n    if (e.target.closest('[data-quick-add], [data-cart-upsell-add], form[action*=\"/cart/add\"], [type=\"submit\"]')) return;\n    const el = getDrawer();\n    if (!el || !el.classList.contains('is-open')) return;\n    if (e.target.closest('[data-cart-close]') || e.target.classList.contains('cart-drawer__overlay')) {\n      closeDrawer();\n    }\n  });\n  on(document, 'keydown', (e) => {\n    const el = getDrawer();\n    if (e.key === 'Escape' && el && el.classList.contains('is-open')) closeDrawer();\n  });\n\n  if (safeSessionGet('totul_reopen_drawer') === '1') {\n    safeSessionRemove('totul_reopen_drawer');\n    requestAnimationFrame(function () {\n      setTimeout(openDrawer, 50);\n    });\n  }\n\n  /* ---------- Sepete ekle (form + h\u0131zl\u0131 ekle) ---------- */\n  let cartQueue = Promise.resolve();\n  async function withCartLock(fn) {\n    const run = cartQueue.then(() => fn());\n    cartQueue = run.then(() => {}, () => {});\n    return run;\n  }\n\n  async function finishCartAdd(data, items) {\n    let state = data && data.item_count != null ? data : await Cart.getState();\n    state = await reconcileUpsellPromoVariants(state);\n    updateCartCounts(state.item_count);\n    if (theme.cartType === 'drawer' && !onCartPage()) {\n      const paintData = data && data.sections ? data : await refreshCartSections(cartSectionIds());\n      await paintCart(paintData, { preserveRecs: false });\n      openDrawer();\n      toast(theme.strings.addedToCart || 'Ad\u0103ugat \u00EEn co\u0219', 'success');\n      document.dispatchEvent(new CustomEvent('cart:updated', { detail: state }));\n      document.dispatchEvent(new CustomEvent('cart:added', { detail: { items: Array.isArray(items) ? items : [items], item: items } }));\n      const added = Array.isArray(items) ? items[0] : items;\n      trackSegmentIntent('cart', added && added.id);\n      return state;\n    }\n    const addedReload = Array.isArray(items) ? items[0] : items;\n    trackSegmentIntent('cart', addedReload && addedReload.id);\n    reloadCartView();\n    return state;\n  }\n\n  async function handleAddToCart(form, button) {\n    return withCartLock(async () => {\n      const formData = new FormData(form);\n      button && button.classList.add('is-loading');\n      button && (button.disabled = true);\n      try {\n        const items = { id: Number(formData.get('id')), quantity: Number(formData.get('quantity') || 1) };\n        const data = await Cart.add(items, cartSectionIds());\n        return await finishCartAdd(data, items);\n      } catch (err) {\n        toast((err && err.description) || theme.strings.cartAddError || 'Produsul nu a putut fi ad\u0103ugat', 'error');\n        return null;\n      } finally {\n        button && button.classList.remove('is-loading');\n        button && (button.disabled = false);\n      }\n    });\n  }\n\n  function trackSegmentIntent(type, productId) {\n    const email = theme.customerEmail;\n    if (!email) return;\n    const base = String(theme.adminApi || '').replace(/\\/$/, '');\n    if (!base) return;\n    fetch(base + '/segment-event', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ type: type, email: email, product_id: productId || '' }),\n      keepalive: true,\n    }).catch(function () { /* sessiz */ });\n  }\n\n  on(document, 'submit', (e) => {\n    if (e.target.closest('[data-bis-form]')) return;\n    const form = e.target.closest('form[action*=\"/cart/add\"]');\n    if (!form) return;\n    e.preventDefault();\n    handleAddToCart(form, form.querySelector('[type=\"submit\"]'));\n  });\n\n  function cartLineVariantId(line) {\n    return Number(line && (line.variant_id || line.id)) || 0;\n  }\n\n  function cartLineNumberForVariant(cart, variantId) {\n    const want = Number(variantId) || 0;\n    if (!want || !cart || !Array.isArray(cart.items)) return null;\n    for (let i = 0; i < cart.items.length; i++) {\n      if (cartLineVariantId(cart.items[i]) === want) return i + 1;\n    }\n    return null;\n  }\n\n  async function changeCartLineQty(cart, variantId, quantity) {\n    const line = cartLineNumberForVariant(cart, variantId);\n    if (!line) return null;\n    return Cart.change({ line: line, quantity: quantity });\n  }\n\n  function cartUpsellThresholdMajor(cfg) {\n    if (!cfg) return 0;\n    const cc = String(theme.country || '').toUpperCase();\n    const map = cfg.threshold_by_country && typeof cfg.threshold_by_country === 'object'\n      ? cfg.threshold_by_country\n      : {};\n    if (cc && map[cc] != null && map[cc] !== '') return Number(map[cc]) || 0;\n    const fallback = { CZ: 750, HU: 11700, PL: 130, GB: 35 };\n    if (cc && cc !== 'RO' && fallback[cc] != null) return fallback[cc];\n    return Number(cfg.threshold_ron || 0);\n  }\n\n  function cartUpsellThresholdCents(cfg) {\n    return Math.round(cartUpsellThresholdMajor(cfg) * 100);\n  }\n\n  function upsellQualifyingCents(cart) {\n    let cents = 0;\n    (cart.items || []).forEach(function (line) {\n      const qty = Number(line.quantity || 1);\n      const lineCents = Number(line.original_line_price || line.final_line_price || line.line_price || 0);\n      cents += lineCents;\n    });\n    return cents;\n  }\n\n  async function reconcileUpsellPromoVariants(cart) {\n    if (isDesignMode) return cart;\n    const cfg = theme.cartUpsell;\n    if (!cfg || cfg.enabled === false || !Array.isArray(cfg.items) || !cart) return cart;\n    const thresholdCents = cartUpsellThresholdCents(cfg);\n    if (!thresholdCents) return cart;\n    const unlocked = upsellQualifyingCents(cart) >= thresholdCents;\n    let changed = false;\n\n    for (let i = 0; i < cfg.items.length; i++) {\n      const it = cfg.items[i];\n      if (!it || it.enabled === false) continue;\n      const promoId = Number(it.promo_variant_id || 0);\n      const regularId = Number(it.regular_variant_id || 0);\n      if (!promoId || !regularId) continue;\n\n      const promoLine = (cart.items || []).find(function (line) { return cartLineVariantId(line) === promoId; });\n      const regularLine = (cart.items || []).find(function (line) { return cartLineVariantId(line) === regularId; });\n\n      try {\n        if (unlocked && regularLine && !promoLine) {\n          await Cart.add({\n            id: promoId,\n            quantity: Number(regularLine.quantity || 1),\n            properties: { _cart_upsell: '1' },\n          });\n          cart = await Cart.getState();\n          await changeCartLineQty(cart, regularId, 0);\n          changed = true;\n          cart = await Cart.getState();\n        } else if (!unlocked && promoLine) {\n          const qty = Number(promoLine.quantity || 1);\n          if (regularLine) {\n            cart = await Cart.getState();\n            const line = cartLineNumberForVariant(cart, regularId);\n            if (line) {\n              await Cart.change({ line: line, quantity: Number(regularLine.quantity || 0) + qty });\n            }\n          } else {\n            await Cart.add({ id: regularId, quantity: qty });\n          }\n          cart = await Cart.getState();\n          await changeCartLineQty(cart, promoId, 0);\n          changed = true;\n          cart = await Cart.getState();\n        }\n      } catch (err) {\n        /* varyant yoksa veya sepet kilitliyse sessiz ge\u00E7 */\n      }\n    }\n    return cart;\n  }\n\n  async function applyUpsellPromoAndRender(cart) {\n    const next = await reconcileUpsellPromoVariants(cart);\n    if (!next) return cart;\n    const swapped = JSON.stringify((next.items || []).map(cartLineVariantId)) !== JSON.stringify((cart.items || []).map(cartLineVariantId));\n    if (swapped) {\n      updateCartCounts(next.item_count);\n      await paintCart();\n      return next;\n    }\n    return next;\n  }\n\n  async function refreshCartSections(sectionIds) {\n    const ids = sectionIds && sectionIds.length ? sectionIds : cartSectionIds();\n    const params = new URLSearchParams();\n    ids.forEach((id) => params.append('sections', id));\n    params.set('sections_url', location.pathname || '/');\n    params.set('_ts', String(Date.now()));\n    const res = await fetch((theme.routes.cart || '/cart') + '?' + params.toString(), {\n      headers: { 'Accept': 'application/json' },\n      cache: 'no-store',\n    });\n    if (!res.ok) return null;\n    const data = await res.json();\n    if (data && data.sections) return data;\n    return { sections: data };\n  }\n\n  async function handleUpsellAdd(btn) {\n    return withCartLock(async () => {\n      const variantId = btn.getAttribute('data-variant-id');\n      const thresholdRon = parseFloat(btn.getAttribute('data-upsell-threshold') || '0') || cartUpsellThresholdMajor(theme.cartUpsell || {});\n      if (!variantId) {\n        const url = btn.getAttribute('data-url');\n        if (url) location.href = url;\n        return;\n      }\n      const sections = cartSectionIds();\n      btn.classList.add('is-loading');\n      btn.disabled = true;\n      try {\n        const before = await Cart.getState();\n        if (thresholdRon > 0 && before.total_price < Math.round(thresholdRon * 100)) {\n          toast(theme.strings.upsellBelowThreshold || 'Adaug\u0103 mai multe produse pentru a debloca oferta.', 'error');\n          return;\n        }\n        const data = await Cart.add({\n          id: Number(variantId),\n          quantity: 1,\n          properties: { _cart_upsell: '1' },\n        }, sections);\n        await finishCartAdd(data, { id: Number(variantId), quantity: 1 });\n        return;\n      } catch (err) {\n        toast((err && err.description) || theme.strings.cartAddError || 'Produsul nu a putut fi ad\u0103ugat', 'error');\n      } finally {\n        btn.classList.remove('is-loading');\n        btn.disabled = false;\n      }\n    });\n  }\n\n  // Sepet upsell (Getir) \u2014 otomatik indirimli ekleme\n  on(document, 'click', (e) => {\n    const upsellBtn = e.target.closest('[data-cart-upsell-add]');\n    if (upsellBtn) {\n      e.preventDefault();\n      handleUpsellAdd(upsellBtn);\n      return;\n    }\n    const btn = e.target.closest('[data-quick-add]');\n    if (!btn) return;\n    e.preventDefault();\n    const variantId = btn.getAttribute('data-quick-add');\n    if (!variantId) { location.href = btn.getAttribute('data-url'); return; }\n    const tmp = document.createElement('form');\n    tmp.action = theme.routes.cartAdd;\n    tmp.innerHTML = '<input name=\"id\" value=\"' + variantId + '\"><input name=\"quantity\" value=\"1\">';\n    handleAddToCart(tmp, btn);\n  });\n\n  /* ---------- Koleksiyon kart\u0131 \u2014 varyant se\u00E7 + sepete ekle (sayfaya gitme) ---------- */\n  const cardQuickAddEl = () => $('#CardQuickAdd');\n  let cardQuickAddProduct = null;\n  let cardQuickAddSelected = [];\n\n  function closeCardQuickAdd() {\n    const el = cardQuickAddEl();\n    if (!el) return;\n    el.classList.remove('is-open');\n    el.setAttribute('hidden', '');\n    el.setAttribute('aria-hidden', 'true');\n    cardQuickAddProduct = null;\n    cardQuickAddSelected = [];\n    unlockBodyScroll();\n  }\n\n  function cardQuickAddVariant() {\n    if (!cardQuickAddProduct) return null;\n    const p = cardQuickAddProduct;\n    return (p.variants || []).find(function (v) {\n      return (p.options || []).every(function (_opt, i) {\n        return v['option' + (i + 1)] === cardQuickAddSelected[i];\n      });\n    }) || null;\n  }\n\n  function syncCardQuickAddUi() {\n    const modal = cardQuickAddEl();\n    if (!modal) return;\n    const submit = $('[data-card-quick-submit]', modal);\n    const priceEl = $('.card-quick-add__price', modal);\n    const variant = cardQuickAddVariant();\n    $$('.card-quick-add__variant', modal).forEach(function (btn) {\n      const optIdx = parseInt(btn.getAttribute('data-option-index'), 10);\n      btn.classList.toggle('is-active', cardQuickAddSelected[optIdx] === btn.getAttribute('data-value'));\n    });\n    if (priceEl && variant) priceEl.textContent = formatMoney(variant.price);\n    if (submit) {\n      submit.disabled = !variant || !variant.available;\n      submit.querySelector('span').textContent = variant && variant.available\n        ? (theme.strings.addToCart || 'Adaug\u0103 \u00EEn co\u0219')\n        : (theme.strings.soldOut || 'Stoc epuizat');\n    }\n  }\n\n  let cartUpsellPromoIdSet = null;\n  function getCartUpsellPromoVariantIds() {\n    if (cartUpsellPromoIdSet) return cartUpsellPromoIdSet;\n    cartUpsellPromoIdSet = new Set();\n    const items = (theme.cartUpsell && theme.cartUpsell.items) || [];\n    items.forEach(function (it) {\n      if (it && it.promo_variant_id) cartUpsellPromoIdSet.add(Number(it.promo_variant_id));\n    });\n    return cartUpsellPromoIdSet;\n  }\n  function isCartUpsellVariant(v) {\n    if (!v) return false;\n    const vid = Number(v.id || v.variant_id || 0);\n    if (vid && getCartUpsellPromoVariantIds().has(vid)) return true;\n    const sku = String(v.sku || '').toUpperCase();\n    if (sku.indexOf('CART-UPSELL') >= 0) return true;\n    const title = String(v.title || '');\n    if (title === 'Ofert\u0103 co\u0219' || /ofert[a\u0103]\\s*co[s\u0219]/i.test(title)) return true;\n    return false;\n  }\n  function catalogPriceCents(product) {\n    const vars = catalogVariants(product);\n    if (vars.length) {\n      const cents = vars\n        .map(function (v) { return Math.round(parseFloat(v.price) * 100); })\n        .filter(function (n) { return Number.isFinite(n) && n > 0; });\n      if (cents.length) return Math.min.apply(null, cents);\n    }\n    const n = parseFloat(product && (product.price != null ? product.price : product.price_min));\n    return Number.isFinite(n) ? Math.round(n * 100) : 0;\n  }\n  function productHandleFromUrl(url) {\n    const m = String(url || '').match(/\\/products\\/([^/?#]+)/);\n    return m ? decodeURIComponent(m[1]) : '';\n  }\n  function marketPathPrefix() {\n    const m = location.pathname.match(/^\\/(cs|hu|pl)(?=\\/|$)/i);\n    return m ? '/' + m[1].toLowerCase() : '';\n  }\n  const STORE_LOCALE_PREFIXES = ['cs', 'hu', 'pl'];\n  const STRIP_LOCALE_PREFIXES = ['cs', 'hu', 'pl', 'en'];\n  /** T\u00FCm dil \u00F6neklerini kald\u0131r\u0131r (/hu/en/products \u2192 /products), sonra istenen tek \u00F6neki ekler. */\n  function normalizeStorePath(path, wantedPre) {\n    if (!path || typeof path !== 'string') return path || '/';\n    let p = path.split('?')[0].split('#')[0] || '/';\n    let again = true;\n    while (again) {\n      again = false;\n      const m = p.match(/^\\/(cs|hu|pl|en)(?=\\/|$)/i);\n      if (m) {\n        p = p.slice(m[0].length) || '/';\n        again = true;\n      }\n    }\n    for (let i = 0; i < 4; i++) {\n      STRIP_LOCALE_PREFIXES.forEach(function (code) {\n        const mid = '/' + code + '/';\n        if (p.indexOf(mid) !== -1) {\n          p = p.split(mid).join('/');\n          if (p.charAt(0) !== '/') p = '/' + p;\n        }\n      });\n    }\n    const pre = wantedPre || '';\n    if (pre) return pre + (p === '/' ? '' : p);\n    return p === '' ? '/' : p;\n  }\n  /** Ma\u011Faza i\u00E7i g\u00F6reli yolu aktif dil \u00F6nekiyle d\u00F6nd\u00FCr\u00FCr (/cs, /hu\u2026) \u2014 /hu/en/\u2026 birle\u015Fmesi olmaz. */\n  function localePath(p) {\n    const pre = marketPathPrefix();\n    if (!p || typeof p !== 'string' || p.charAt(0) !== '/') return p;\n    if (!pre) return normalizeStorePath(p, '');\n    const normalized = normalizeStorePath(p, pre);\n    if (normalized === pre || normalized.indexOf(pre + '/') === 0) return normalized;\n    return normalized;\n  }\n  function wantedLocalePrefix() {\n    const fromPath = marketPathPrefix();\n    if (fromPath) return fromPath;\n    const lang = String(theme.languageIso || 'ro').toLowerCase();\n    if (lang === 'en' || lang === 'ro') return '';\n    return { cs: '/cs', hu: '/hu', pl: '/pl' }[lang] || '';\n  }\n  function productListingUrl(p) {\n    const h = (p && (p.handle || productHandleFromUrl(p.url))) || '';\n    if (h) return localePath('/products/' + encodeURIComponent(h));\n    return localePath(p && p.url ? p.url : '/');\n  }\n  function isCustomerAccountHost(host) {\n    return /^cont\\./i.test(String(host || ''));\n  }\n  function isStorefrontHost(host) {\n    host = String(host || '').toLowerCase();\n    if (isCustomerAccountHost(host)) return false;\n    return host === location.hostname\n      || host === 'totulonline.com'\n      || host === 'www.totulonline.com';\n  }\n  function isAccountStylePath(pathname) {\n    const p = normalizeStorePath(String(pathname || ''), '');\n    return /^\\/(account|profile|orders)(\\/|$)/i.test(p);\n  }\n  function fixStoreAnchors(root) {\n    if (isDesignMode) return;\n    const wanted = wantedLocalePrefix();\n    const scope = root || document;\n    scope.querySelectorAll('a[href]').forEach(function (a) {\n      const raw = a.getAttribute('href') || '';\n      if (!raw || raw.charAt(0) === '#' || /^(mailto|tel|javascript|shopify|extension):/i.test(raw)) return;\n      let u;\n      try { u = new URL(raw, location.href); } catch (e) { return; }\n      if (isCustomerAccountHost(u.hostname)) return;\n      if (!isStorefrontHost(u.hostname)) return;\n      if (isAccountStylePath(u.pathname)) return;\n      const fixed = normalizeStorePath(u.pathname, wanted);\n      if (fixed === u.pathname && u.hostname === location.hostname) return;\n      if (u.hostname !== location.hostname) {\n        a.setAttribute('href', u.origin + fixed + u.search + u.hash);\n      } else {\n        a.setAttribute('href', fixed + u.search + u.hash);\n      }\n    });\n  }\n  (function fixBadLocaleInAddressBar() {\n    if (isDesignMode) return;\n    const fixed = normalizeStorePath(location.pathname, wantedLocalePrefix());\n    if (fixed && fixed !== location.pathname) {\n      location.replace(fixed + location.search + location.hash);\n    }\n  })();\n  (function initLocaleLinkGuard() {\n    if (isDesignMode) return;\n    const skip = /^\\/(checkout|checkouts|account|profile|orders|apps|cdn|policies|discount|customer_authentication|localization|services|tools|admin|a\\/|cart\\/(add|change|update|clear))/;\n    const stripTracking = (search) => {\n      const sp = new URLSearchParams(search);\n      ['_pos', '_sid', '_ss', '_psq', '_psid', '_fid', '_v'].forEach((k) => sp.delete(k));\n      const out = sp.toString();\n      return out ? '?' + out : '';\n    };\n    fixStoreAnchors(document);\n    if (typeof MutationObserver !== 'undefined' && document.body) {\n      let moTimer;\n      new MutationObserver(function () {\n        clearTimeout(moTimer);\n        moTimer = setTimeout(function () { fixStoreAnchors(document); }, 80);\n      }).observe(document.body, { childList: true, subtree: true });\n    }\n    document.addEventListener('click', (e) => {\n      if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\n      const a = e.target.closest && e.target.closest('a[href]');\n      if (!a || (a.target && a.target !== '_self') || a.hasAttribute('download')) return;\n      const raw = a.getAttribute('href') || '';\n      if (!raw || raw.charAt(0) === '#' || /^(mailto|tel|javascript):/i.test(raw)) return;\n      let u;\n      try { u = new URL(raw, location.href); } catch (err) { return; }\n      if (isCustomerAccountHost(u.hostname)) return;\n      if (!isStorefrontHost(u.hostname)) return;\n      if (isAccountStylePath(u.pathname) || skip.test(u.pathname)) return;\n      const wanted = wantedLocalePrefix();\n      const fixed = normalizeStorePath(u.pathname, wanted);\n      if (fixed === u.pathname) return;\n      e.preventDefault();\n      window.location.href = fixed + stripTracking(u.search) + u.hash;\n    }, true);\n  })();\n  async function enrichSearchProductsWithVariants(products) {\n    const prefix = marketPathPrefix();\n    return Promise.all((products || []).map(async function (p) {\n      if (p.variants && p.variants.length) return p;\n      const handle = p.handle || productHandleFromUrl(p.url);\n      if (!handle) return p;\n      try {\n        const res = await fetch(localePath('/products/' + encodeURIComponent(handle) + '.json'), { credentials: 'same-origin' });\n        if (!res.ok) return p;\n        const data = await res.json();\n        const variants = (data.product && data.product.variants) || [];\n        if (!variants.length) return p;\n        return Object.assign({}, p, { handle: handle, variants: variants });\n      } catch (e) {\n        return p;\n      }\n    }));\n  }\n  function isCartUpsellProduct(p) {\n    if (!p) return false;\n    const title = String(p.title || '');\n    if (/ofert[a\u0103]\\s*co[s\u0219]|cart.?upsell/i.test(title)) return true;\n    const vars = p.variants || [];\n    if (vars.length && vars.every(isCartUpsellVariant)) return true;\n    return false;\n  }\n  function catalogVariants(product) {\n    return (product && product.variants || []).filter(function (v) { return !isCartUpsellVariant(v); });\n  }\n  function cardQuickAddOptionValues(product, optIdx) {\n    const values = [];\n    catalogVariants(product).forEach(function (v) {\n      const val = v['option' + (optIdx + 1)];\n      if (val && values.indexOf(val) === -1) values.push(val);\n    });\n    return values;\n  }\n\n  function initCardQuickAddSelection(product) {\n    cardQuickAddSelected = [];\n    (product.options || []).forEach(function (_opt, optIdx) {\n      const values = cardQuickAddOptionValues(product, optIdx);\n      let picked = values[0] || '';\n      values.some(function (val) {\n        const trial = cardQuickAddSelected.slice();\n        trial[optIdx] = val;\n        const match = (product.variants || []).find(function (v) {\n          return (product.options || []).every(function (_o, i) {\n            return !trial[i] || v['option' + (i + 1)] === trial[i];\n          });\n        });\n        if (match && match.available) {\n          picked = val;\n          return true;\n        }\n        return false;\n      });\n      cardQuickAddSelected[optIdx] = picked;\n    });\n  }\n\n  function renderCardQuickAddOptions(product) {\n    const modal = cardQuickAddEl();\n    const wrap = modal && $('[data-card-quick-options]', modal);\n    if (!wrap) return;\n    initCardQuickAddSelection(product);\n    let html = '';\n    (product.options || []).forEach(function (optName, optIdx) {\n      const values = cardQuickAddOptionValues(product, optIdx);\n      html += '<div class=\"card-quick-add__field\"><label>' + String(optName).replace(/</g, '&lt;') + '</label>';\n      if (product.options.length === 1 && values.length <= 8) {\n        html += '<div class=\"card-quick-add__variants\">';\n        values.forEach(function (val) {\n          const hasAvail = (product.variants || []).some(function (v) {\n            return v['option' + (optIdx + 1)] === val && v.available;\n          });\n          html += '<button type=\"button\" class=\"card-quick-add__variant\" data-option-index=\"' + optIdx + '\" data-value=\"' + String(val).replace(/\"/g, '&quot;') + '\"' + (hasAvail ? '' : ' disabled') + '>' + String(val).replace(/</g, '&lt;') + '</button>';\n        });\n        html += '</div>';\n      } else {\n        html += '<select class=\"card-quick-add__select\" data-option-index=\"' + optIdx + '\">';\n        values.forEach(function (val) {\n          html += '<option value=\"' + String(val).replace(/\"/g, '&quot;') + '\">' + String(val).replace(/</g, '&lt;') + '</option>';\n        });\n        html += '</select>';\n      }\n      html += '</div>';\n    });\n    html += '<div class=\"card-quick-add__price\"></div>';\n    wrap.innerHTML = html;\n    syncCardQuickAddUi();\n  }\n\n  async function openCardQuickAdd(handle, triggerBtn) {\n    const modal = cardQuickAddEl();\n    if (!modal || !handle) return;\n    triggerBtn && triggerBtn.classList.add('is-loading');\n    try {\n      const res = await fetch(localePath('/products/' + encodeURIComponent(handle) + '.js'), { headers: { Accept: 'application/json' } });\n      if (!res.ok) throw new Error('Product not found');\n      cardQuickAddProduct = await res.json();\n      const title = $('.card-quick-add__title', modal);\n      if (title) title.textContent = cardQuickAddProduct.title || '';\n      renderCardQuickAddOptions(cardQuickAddProduct);\n      modal.removeAttribute('hidden');\n      modal.setAttribute('aria-hidden', 'false');\n      modal.classList.add('is-open');\n      lockBodyScroll();\n      const panel = $('.card-quick-add__panel', modal);\n      if (panel) {\n        if (!panel.hasAttribute('tabindex')) panel.setAttribute('tabindex', '-1');\n        try { panel.focus({ preventScroll: true }); } catch (err) { /* sessiz ge\u00E7 */ }\n      }\n    } catch (err) {\n      toast(theme.strings.cartAddError || 'Produsul nu a putut fi ad\u0103ugat', 'error');\n    } finally {\n      triggerBtn && triggerBtn.classList.remove('is-loading');\n    }\n  }\n\n  on(document, 'click', function (e) {\n    const openBtn = e.target.closest('[data-card-quick-add]');\n    if (openBtn) {\n      e.preventDefault();\n      openCardQuickAdd(openBtn.getAttribute('data-card-quick-add'), openBtn);\n      return;\n    }\n    if (e.target.closest('[data-card-quick-close]')) {\n      e.preventDefault();\n      closeCardQuickAdd();\n      return;\n    }\n    const variantBtn = e.target.closest('.card-quick-add__variant');\n    if (variantBtn && cardQuickAddEl() && cardQuickAddEl().classList.contains('is-open')) {\n      e.preventDefault();\n      if (variantBtn.disabled) return;\n      const optIdx = parseInt(variantBtn.getAttribute('data-option-index'), 10);\n      cardQuickAddSelected[optIdx] = variantBtn.getAttribute('data-value');\n      syncCardQuickAddUi();\n      return;\n    }\n    const submitBtn = e.target.closest('[data-card-quick-submit]');\n    if (submitBtn && cardQuickAddEl() && cardQuickAddEl().classList.contains('is-open')) {\n      e.preventDefault();\n      const variant = cardQuickAddVariant();\n      if (!variant || !variant.available) return;\n      submitBtn.classList.add('is-loading');\n      submitBtn.disabled = true;\n      withCartLock(async function () {\n        try {\n          const items = { id: variant.id, quantity: 1 };\n          const data = await Cart.add(items, cartSectionIds());\n          closeCardQuickAdd();\n          return await finishCartAdd(data, items);\n        } catch (err) {\n          toast((err && err.description) || theme.strings.cartAddError || 'Produsul nu a putut fi ad\u0103ugat', 'error');\n          return null;\n        } finally {\n          submitBtn.classList.remove('is-loading');\n          syncCardQuickAddUi();\n        }\n      });\n    }\n  });\n\n  on(document, 'change', function (e) {\n    const sel = e.target.closest('.card-quick-add__select');\n    if (!sel || !cardQuickAddEl() || !cardQuickAddEl().classList.contains('is-open')) return;\n    const optIdx = parseInt(sel.getAttribute('data-option-index'), 10);\n    cardQuickAddSelected[optIdx] = sel.value;\n    syncCardQuickAddUi();\n  });\n\n  on(document, 'keydown', function (e) {\n    if (e.key === 'Escape' && cardQuickAddEl() && cardQuickAddEl().classList.contains('is-open')) closeCardQuickAdd();\n  });\n\n  /* ---------- Sepet i\u00E7i miktar / kald\u0131rma (drawer + sayfa) ---------- */\n  let cartChangeSeq = 0; // h\u0131zl\u0131 +/- t\u0131klamalar\u0131nda eski yan\u0131t yeniyi ezmesin\n  async function changeLine(line, quantity, trigger) {\n    const seq = ++cartChangeSeq;\n    const sections = cartSectionIds();\n    const row = trigger && trigger.closest('.cart-item');\n    const drawerEl = getDrawer();\n    const drawerBody = drawerEl && $('.cart-drawer__body', drawerEl);\n    const scrollTop = drawerBody ? drawerBody.scrollTop : 0;\n    row && row.classList.add('is-updating');\n    try {\n      let data = await Cart.change({ line: line, quantity: quantity }, sections);\n      if (seq !== cartChangeSeq) return;\n      const reconciled = await reconcileBundleDiscount(data, { skipRender: true });\n      if (reconciled) data = reconciled;\n      if (seq !== cartChangeSeq) return;\n      data = await reconcileUpsellPromoVariants(data);\n      if (seq !== cartChangeSeq) return;\n      updateCartCounts(data.item_count);\n      await paintCart(data, { scrollTop, preserveRecs: false, preserveScroll: true });\n      ensureDrawerScrollHealthy();\n      document.dispatchEvent(new CustomEvent('cart:updated', { detail: data }));\n    } catch (err) {\n      if (seq === cartChangeSeq) toast(theme.strings.cartUpdateError || 'Co\u0219ul nu a putut fi actualizat', 'error');\n    } finally {\n      row && row.classList.remove('is-updating');\n      ensureDrawerScrollHealthy();\n    }\n  }\n\n  on(document, 'click', (e) => {\n    const stepBtn = e.target.closest('[data-qty-step]');\n    if (stepBtn) {\n      e.preventDefault();\n      e.stopPropagation();\n      const wrap = stepBtn.closest('.quantity');\n      const input = wrap && wrap.querySelector('.quantity__input');\n      if (!input) return;\n      const step = parseInt(stepBtn.getAttribute('data-qty-step'), 10);\n      let val = Math.max(parseInt(input.min || '1', 10), (parseInt(input.value, 10) || 1) + step);\n      input.value = val;\n      const line = input.getAttribute('data-line');\n      if (line) changeLine(parseInt(line, 10), val, stepBtn);\n      else input.dispatchEvent(new Event('change', { bubbles: true }));\n      return;\n    }\n    const removeBtn = e.target.closest('[data-cart-remove]');\n    if (removeBtn) {\n      e.preventDefault();\n      e.stopPropagation();\n      changeLine(parseInt(removeBtn.getAttribute('data-cart-remove'), 10), 0, removeBtn);\n      return;\n    }\n  });\n\n  on(document, 'change', (e) => {\n    const input = e.target.closest('.quantity__input[data-line]');\n    if (!input) return;\n    const val = Math.max(0, parseInt(input.value, 10) || 0);\n    changeLine(parseInt(input.getAttribute('data-line'), 10), val, input);\n  });\n\n  /* ---------- Sepeti bo\u015Falt (i\u00E7 i\u00E7e form yasak \u2014 JS ile /cart/clear.js) ---------- */\n  on(document, 'click', async (e) => {\n    const btn = e.target.closest('[data-cart-clear]');\n    if (!btn) return;\n    const msg = btn.getAttribute('data-confirm');\n    if (msg && !confirm(msg)) return;\n    btn.disabled = true;\n    try {\n      const res = await fetch(theme.routes.cart + '/clear.js', { method: 'POST', headers: { 'Accept': 'application/json' } });\n      if (!res.ok) throw new Error('clear failed');\n      location.reload();\n    } catch (err) {\n      btn.disabled = false;\n      toast(theme.strings.cartUpdateError || 'Co\u0219ul nu a putut fi actualizat', 'error');\n    }\n  });\n\n  /* ---------- \u0130ndirim kodu \u2014 /discount/KOD \u00E7erezi checkout'ta uygulan\u0131r ---------- */\n  const USER_DISC_KEY = 'totul_user_discount_code';\n\n  function redirectDiscountCode(code, redirectTo) {\n    const dest = redirectTo || location.pathname + location.search || theme.routes.cart || '/cart';\n    window.location.href = localePath('/discount/' + encodeURIComponent(code)) + '?redirect=' + encodeURIComponent(localePath(dest));\n  }\n\n  function applyDiscountCode() {\n    const input = $('[data-discount-input]');\n    const code = input && input.value.trim();\n    if (!code) { input && input.focus(); return; }\n    if (isDesignMode) { toast('Previzualizare tem\u0103 \u2014 codul de reducere func\u021Bioneaz\u0103 pe site-ul live.'); return; }\n    try { sessionStorage.setItem(USER_DISC_KEY, code.toUpperCase()); } catch (e) { /* ignore */ }\n    redirectDiscountCode(code, theme.routes.cart || '/cart');\n  }\n  on(document, 'click', (e) => { if (e.target.closest('[data-discount-apply]')) applyDiscountCode(); });\n  on(document, 'keydown', (e) => {\n    if (e.key === 'Enter' && e.target.matches('[data-discount-input]')) { e.preventDefault(); applyDiscountCode(); }\n  });\n\n  /* CARD10 otomatik uygulanmaz \u2014 kap\u0131da \u00F6deme se\u00E7ilebilsin; kart indirimi checkout\u2019ta m\u00FC\u015Fteri kodu veya ayr\u0131 ak\u0131\u015Fla. */\n\n  /* ---------- A\u00E7\u0131k sepet butonlar\u0131 ---------- */\n  on(document, 'click', (e) => {\n    const trigger = e.target.closest('[data-cart-toggle]');\n    if (!trigger) return;\n    if (theme.cartType === 'drawer' && getDrawer()) { e.preventDefault(); openDrawer(); }\n  });\n\n  /* ---------- Varyant se\u00E7ici (\u00FCr\u00FCn formu) ---------- */\n  class VariantSelector {\n    constructor(root) {\n      this.root = root;\n      try {\n        this.productData = JSON.parse($('[data-product-json]', root)?.textContent || 'null');\n      } catch (e) { this.productData = null; }\n      if (!this.productData) return;\n      this.form = $('form[action*=\"/cart/add\"]', root);\n      this.idInput = this.form && $('input[name=\"id\"]', this.form);\n      // Tek varyantl\u0131 \u00FCr\u00FCn (Default Title vb.): variant_picker render olmuyor,\n      // hi\u00E7bir option input yok \u2192 selectedOptions() bo\u015F \u2192 findVariant() bo\u015F \u2192 \"Mevcut de\u011Fil\" hatas\u0131.\n      // \u00D6nle: tek varyanta ID'yi sabitle ve de\u011Fi\u015Fiklik dinleyicisini ba\u011Flama.\n      if (this.productData.variants.length === 1) {\n        const v = this.productData.variants[0];\n        if (this.idInput) this.idInput.value = v.id;\n        this.updatePrice(v);\n        this.updateButton(v);\n        this.updateSelectedTiles();\n        return;\n      }\n      on(root, 'change', (e) => { if (e.target.matches('input[name^=\"option\"]')) this.onChange(); });\n      this.applyVariantFromUrl();\n      this.onChange(true);\n    }\n    applyVariantFromUrl() {\n      const vid = new URL(location.href).searchParams.get('variant');\n      if (!vid || !this.productData) return;\n      const v = this.productData.variants.find((x) => String(x.id) === String(vid));\n      if (!v) return;\n      v.options.forEach((optVal, i) => {\n        $$(`input[name=\"option${i + 1}\"]`, this.root).forEach((inp) => {\n          if (inp.value === optVal) inp.checked = true;\n        });\n      });\n      if (this.idInput) this.idInput.value = v.id;\n    }\n    selectedOptions() {\n      return $$('input[name^=\"option\"]:checked', this.root).map((i) => i.value);\n    }\n    findVariant() {\n      const opts = this.selectedOptions();\n      return this.productData.variants.find((v) =>\n        v.options.every((o, i) => o === opts[i])\n      );\n    }\n    onChange(initial) {\n      let variant = this.findVariant();\n      // Edit\u00F6r \u00F6nizlemesi / ilk y\u00FCkleme: se\u00E7ili radyo e\u015Fle\u015Fmezse formdaki mevcut varyant ID'sini koru\n      if (!variant && initial && this.idInput && this.idInput.value) {\n        variant = this.productData.variants.find((v) => String(v.id) === String(this.idInput.value));\n      }\n      this.updateDisabled();\n      if (!variant) { this.setUnavailable(); return; }\n      if (this.idInput) this.idInput.value = variant.id;\n      if (!initial && !isDesignMode) {\n        const url = new URL(location.href);\n        url.searchParams.set('variant', variant.id);\n        history.replaceState({}, '', url);\n      }\n      this.updatePrice(variant);\n      this.updateButton(variant);\n      if (!initial) this.updateMedia(variant);\n      this.updateSelectedTiles();\n      if (!initial) {\n        let productMeta = null;\n        try {\n          productMeta = JSON.parse(document.querySelector('[data-analytics-product]')?.textContent || 'null');\n        } catch (e) { /* sessiz */ }\n        document.dispatchEvent(new CustomEvent('variant:changed', {\n          detail: { product: productMeta, variant: variant }\n        }));\n      }\n    }\n    updateSelectedTiles() {\n      // Paket kutular\u0131n\u0131n turuncu \u00E7er\u00E7evesi sunucuda bas\u0131l\u0131yordu ve t\u0131klamayla ta\u015F\u0131nm\u0131yordu:\n      // fiyat 2'li sete ge\u00E7se de \u00E7er\u00E7eve tekli \u00FCr\u00FCnde kal\u0131yordu.\n      let packSize = 0;\n      $$('.pack-tile', this.root).forEach((tile) => {\n        const input = $('input[type=\"radio\"]', tile);\n        const checked = !!(input && input.checked);\n        tile.classList.toggle('is-selected', checked);\n        if (checked) packSize = parseInt(input.getAttribute('data-pack-size'), 10) || 0;\n      });\n      // Sepet sat\u0131r\u0131nda \"Con\u021Binut: 4 buc\u0103\u021Bi\" g\u00F6r\u00FCns\u00FCn \u2014 tek \u00FCr\u00FCnde bo\u015F b\u0131rak\u0131l\u0131r (Shopify bo\u015F \u00F6zelli\u011Fi atar)\n      const contentInput = $('[data-pack-content]', this.root);\n      if (contentInput) {\n        contentInput.value = packSize > 1 ? packSize + ' ' + (theme.strings.pieceUnit || 'buc.') : '';\n      }\n    }\n    updateDisabled() {\n      // Stokta olmayan kombinasyonlar\u0131 i\u015Faretle: se\u00E7ili di\u011Fer opsiyonlarla birlikte\n      // bu de\u011Fer se\u00E7ilseydi hangi varyant \u00E7\u0131kard\u0131 \u2014 yoksa/stok d\u0131\u015F\u0131ysa gri g\u00F6ster\n      const selected = this.selectedOptions();\n      $$('input[name^=\"option\"]', this.root).forEach((input) => {\n        const swatch = input.closest('.variant-swatch');\n        if (!swatch) return;\n        const m = input.name.match(/^option(\\d+)$/);\n        if (!m) { swatch.classList.remove('is-unavailable'); return; }\n        const pos = parseInt(m[1], 10) - 1;\n        const test = selected.slice();\n        test[pos] = input.value;\n        const match = this.productData.variants.find((v) => v.options.every((o, i) => o === test[i]));\n        swatch.classList.toggle('is-unavailable', !match || !match.available);\n      });\n    }\n    updatePrice(variant) {\n      const price = Number(variant.price) || 0;\n      let compare = Number(variant.compare_at_price) || 0;\n      const checkedPack = $('.pack-tile input[type=\"radio\"]:checked', this.root);\n      if (checkedPack) {\n        const refCompare = parseInt(checkedPack.getAttribute('data-reference-compare'), 10) || 0;\n        const adminCompare = parseInt(checkedPack.getAttribute('data-compare-at'), 10) || 0;\n        if (adminCompare > price) compare = adminCompare;\n        else if (compare <= price && refCompare > price) compare = refCompare;\n      }\n      $$('[data-price-current]', this.root).forEach((el) => { el.innerHTML = formatMoney(price); });\n      if (theme.loyaltyRate) {\n        const pts = Math.round(price * theme.loyaltyRate / 100);\n        $$('[data-price-earn]', this.root).forEach((el) => { el.textContent = pts; });\n      }\n      $$('[data-price-compare]', this.root).forEach((el) => {\n        if (compare > price) {\n          el.innerHTML = '<s>' + formatMoney(compare) + '</s>';\n          el.hidden = false;\n        } else {\n          el.hidden = true;\n        }\n      });\n      $$('[data-price-discount]', this.root).forEach((el) => {\n        if (compare > price) {\n          const disc = Math.round((compare - price) * 100 / compare);\n          el.textContent = '-' + disc + '%';\n          el.hidden = false;\n        } else {\n          el.hidden = true;\n        }\n      });\n      $$('[data-gallery-discount]', this.root).forEach((el) => {\n        if (compare > price) {\n          const disc = Math.round((compare - price) * 100 / compare);\n          el.textContent = '-' + disc + '%';\n          el.hidden = false;\n        } else {\n          el.hidden = true;\n        }\n      });\n    }\n    updateButton(variant) {\n      const btn = $('[data-add-button]', this.root);\n      if (!btn) return;\n      const label = btn.querySelector('[data-add-label]') || btn;\n      const canBuy = variant.available || isDevLocal;\n      if (canBuy) { btn.disabled = false; label.textContent = theme.strings.addToCart; }\n      else { btn.disabled = true; label.textContent = theme.strings.soldOut; }\n      this.updateBackInStock(variant);\n    }\n    updateBackInStock(variant) {\n      const wrap = $('[data-back-in-stock]', this.root);\n      if (!wrap) return;\n      const idInput = $('[data-bis-variant]', wrap);\n      const canBuy = variant && (variant.available || isDevLocal);\n      wrap.hidden = !variant || canBuy;\n      if (idInput && variant) idInput.value = variant.id;\n    }\n    setUnavailable() {\n      const btn = $('[data-add-button]', this.root);\n      if (btn) {\n        btn.disabled = true;\n        const l = btn.querySelector('[data-add-label]') || btn;\n        l.textContent = (theme.strings && theme.strings.unavailable) || theme.strings?.soldOut || 'Unavailable';\n      }\n      const wrap = $('[data-back-in-stock]', this.root);\n      if (wrap) wrap.hidden = true;\n    }\n    updateMedia(variant) {\n      if (!variant || !variant.featured_media) return;\n      const wrap = $('[data-gallery]', this.root);\n      const gallery = $('.product__gallery', this.root);\n      if (!gallery || gallery.getAttribute('data-locale-gallery') === '1') return;\n      const target = gallery.querySelector('[data-media-id=\"' + variant.featured_media.id + '\"]');\n      if (!target) return;\n      scrollToSlide(gallery, target);\n      const slides = Array.from(gallery.children);\n      const idx = slides.indexOf(target);\n      const thumbs = wrap ? $$('.product__thumb', wrap) : [];\n      thumbs.forEach((t, i) => t.classList.toggle('is-active', i === idx));\n      const counter = wrap ? $('[data-gallery-counter]', wrap) : null;\n      if (counter && slides.length) counter.textContent = (idx + 1) + '/' + slides.length;\n    }\n  }\n  $$('[data-variant-selector]').forEach((el) => new VariantSelector(el));\n\n  function initBackInStockForms(scope) {\n    $$('[data-bis-form]', scope || document).forEach((form) => {\n      if (form.dataset.bisInit) return;\n      form.dataset.bisInit = '1';\n      const submitBtn = $('[data-bis-submit]', form);\n      const emailInp = $('[data-bis-email]', form);\n      if (emailInp) {\n        on(emailInp, 'keydown', (e) => {\n          if (e.key === 'Enter') {\n            e.preventDefault();\n            submitBtn && submitBtn.click();\n          }\n        });\n      }\n      const runBis = async () => {\n        const root = form.closest('[data-variant-selector]') || document;\n        const msgEl = $('[data-bis-msg]', root) || $('[data-bis-msg]', form.parentElement);\n        const emailInpLive = $('[data-bis-email]', form);\n        const variantInp = $('[data-bis-variant]', form);\n        const email = emailInpLive && emailInpLive.value.trim();\n        const variantId = variantInp && variantInp.value;\n        if (!email || !variantId) return;\n        const apiBase = (theme.adminApi || 'https://totulonline-admin.totulonline-shop.workers.dev/api/public').replace(/\\/$/, '');\n        submitBtn && submitBtn.classList.add('is-loading');\n        submitBtn && (submitBtn.disabled = true);\n        if (msgEl) { msgEl.hidden = true; msgEl.textContent = ''; }\n        try {\n          const res = await fetch(apiBase + '/back-in-stock', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n            body: JSON.stringify({ email, variant_id: Number(variantId), locale: theme.locale || 'ro' }),\n          });\n          const data = await res.json().catch(() => ({}));\n          if (!res.ok) throw new Error(data.error || theme.strings.backInStockError || 'Error');\n          if (msgEl) {\n            msgEl.textContent = data.message || theme.strings.backInStockSuccess || 'OK';\n            msgEl.hidden = false;\n            msgEl.classList.add('is-success');\n          }\n          if (emailInpLive) emailInpLive.value = '';\n          if (variantInp) variantInp.value = variantId;\n        } catch (err) {\n          if (msgEl) {\n            msgEl.textContent = (err && err.message) || theme.strings.backInStockError || 'Error';\n            msgEl.hidden = false;\n            msgEl.classList.remove('is-success');\n          }\n        } finally {\n          submitBtn && submitBtn.classList.remove('is-loading');\n          submitBtn && (submitBtn.disabled = false);\n        }\n      };\n      if (submitBtn) on(submitBtn, 'click', runBis);\n    });\n  }\n  initBackInStockForms();\n\n  /* ---------- Slayta yumu\u015Fak kayd\u0131r (scrollIntoView block:nearest baz\u0131 taray\u0131c\u0131larda no-op) ---------- */\n  function scrollToSlide(track, slide) {\n    if (!track || !slide) return;\n    const first = track.firstElementChild;\n    const target = slide.offsetLeft - (first ? first.offsetLeft : 0);\n    // Direkt atama her taray\u0131c\u0131da \u00E7al\u0131\u015F\u0131r; yumu\u015Fak animasyon CSS scroll-behavior:smooth ile gelir.\n    track.scrollLeft = target;\n  }\n  /* ---------- Slider / galeri nokta g\u00F6stergeleri ---------- */\n  function setupScrollDots(track, dotsContainer) {\n    if (!track || !dotsContainer) return;\n    const slides = $$(':scope > *', track);\n    if (slides.length < 2) { dotsContainer.hidden = true; return; }\n    dotsContainer.innerHTML = slides.map((_, i) =>\n      '<button class=\"' + (dotsContainer.dataset.dotClass || 'slideshow__dot') + '\" data-go=\"' + i + '\" aria-label=\"' + (i + 1) + '\"' + (i === 0 ? ' aria-current=\"true\"' : '') + '></button>'\n    ).join('');\n    const dots = $$('button', dotsContainer);\n    on(dotsContainer, 'click', (e) => {\n      const b = e.target.closest('[data-go]');\n      if (b) scrollToSlide(track, slides[+b.dataset.go]);\n    });\n    let raf;\n    on(track, 'scroll', () => {\n      cancelAnimationFrame(raf);\n      raf = requestAnimationFrame(() => {\n        let idx = 0, best = Infinity;\n        slides.forEach((s, i) => { const d = Math.abs(s.offsetLeft - track.scrollLeft); if (d < best) { best = d; idx = i; } });\n        dots.forEach((d, i) => d.setAttribute('aria-current', i === idx ? 'true' : 'false'));\n      });\n    }, { passive: true });\n  }\n  /* ---------- Masa\u00FCst\u00FC prev/next ok butonlar\u0131 (slider + rail) ---------- */\n  // \u00D6l\u00E7\u00FCm (okuma) ve buton ekleme (yazma) her ray i\u00E7in ayr\u0131 ayr\u0131 s\u0131rayla yap\u0131l\u0131nca zorunlu reflow olu\u015Fur;\n  // \u00E7a\u011Fr\u0131lar bir kareye toplan\u0131r, \u00F6nce hepsi \u00F6l\u00E7\u00FCl\u00FCr, sonra yaz\u0131l\u0131r.\n  const railQueue = [];\n  function setupRailArrows(track, host, opts) {\n    if (!track || !host || window.innerWidth < 990) return;\n    railQueue.push([track, host, opts]);\n    if (railQueue.length > 1) return;\n    requestAnimationFrame(() => {\n      const batch = railQueue.splice(0);\n      const ready = batch.filter(([t, h]) => t.scrollWidth - t.clientWidth >= 8 && !h.querySelector(':scope > .rail-arrow, :scope > .ugc-rail__arrow'));\n      ready.forEach(([t, h, o]) => setupRailArrowsNow(t, h, o));\n    });\n  }\n  function setupRailArrowsNow(track, host, opts) {\n    const cs = getComputedStyle(host);\n    if (cs.position === 'static') host.style.position = 'relative';\n    const make = (dir) => {\n      const b = document.createElement('button');\n      b.type = 'button';\n      b.className = 'rail-arrow rail-arrow--' + dir;\n      b.setAttribute('aria-label', dir === 'prev'\n        ? (window.theme?.strings?.prev || '\u00CEnapoi')\n        : (window.theme?.strings?.next || '\u00CEnainte'));\n      b.innerHTML = dir === 'prev' ? '\u2039' : '\u203A';\n      return b;\n    };\n    const prev = make('prev'), next = make('next');\n    host.appendChild(prev); host.appendChild(next);\n    const step = () => Math.max(200, Math.round(track.clientWidth * 0.85));\n    const go = (dir) => {\n      if (opts && opts.perSlide) {\n        const slides = $$(':scope > *', track);\n        let idx = 0, best = Infinity;\n        slides.forEach((s, i) => { const d = Math.abs(s.offsetLeft - track.scrollLeft); if (d < best) { best = d; idx = i; } });\n        const ni = Math.min(slides.length - 1, Math.max(0, idx + (dir === 'next' ? 1 : -1)));\n        scrollToSlide(track, slides[ni]);\n      } else {\n        const max = track.scrollWidth - track.clientWidth;\n        track.scrollLeft = Math.max(0, Math.min(max, track.scrollLeft + (dir === 'next' ? step() : -step())));\n      }\n    };\n    on(prev, 'click', (e) => { e.preventDefault(); go('prev'); });\n    on(next, 'click', (e) => { e.preventDefault(); go('next'); });\n    const update = () => {\n      prev.disabled = track.scrollLeft <= 4;\n      next.disabled = track.scrollLeft + track.clientWidth >= track.scrollWidth - 4;\n    };\n    requestAnimationFrame(update);\n    on(track, 'scroll', update, { passive: true });\n    on(window, 'resize', update, { passive: true });\n  }\n  // Slider \u2014 oklar frame'e demirlesin (split d\u00FCzende yan karta ta\u015Fmas\u0131n)\n  $$('[data-slideshow]').forEach((s) => {\n    const t = $('[data-slideshow-track]', s);\n    setupRailArrows(t, $('.slideshow__frame', s) || s, { perSlide: true });\n  });\n  // \u00DCr\u00FCn raylar\u0131 \u2014 her .product-rail i\u00E7in parent section bul (relative pozisyon).\n  // Async y\u00FCklenen raylar (\u00F6neriler, drawer re-render) i\u00E7in tekrar \u00E7a\u011Fr\u0131labilir.\n  function initRails(scope) {\n    $$('.product-rail', scope || document).forEach((rail) => {\n      const host = rail.closest('.flash-deals, .featured-collection, .cart-drawer__recs, [data-recommendations], .article-products') || rail.parentElement;\n      setupRailArrows(rail, host);\n      if (!rail.closest('.cart-drawer__recs')) setupMouseDrag(rail);\n    });\n    $$('.ugc-rail__track', scope || document).forEach((rail) => {\n      setupMouseDrag(rail);\n    });\n  }\n  initRails();\n\n  /* ---------- Masa\u00FCst\u00FC mouse drag (click & drag scroll) ---------- */\n  function setupMouseDrag(track) {\n    if (!track || track.dataset.dragInit) return;\n    track.dataset.dragInit = '1';\n    let isDown = false, startX = 0, startY = 0, startScroll = 0, moved = false;\n    const DRAG_THRESHOLD = 8; // piksel \u2014 bunu a\u015Fmadan link t\u0131klamas\u0131 engellenmez\n\n    on(track, 'pointerdown', (e) => {\n      if (e.pointerType === 'touch') return; // touch i\u00E7in do\u011Fal scroll\n      if (e.button !== 0) return;             // sadece sol t\u0131k\n      // Form elemanlar\u0131 \u00FCzerinde drag BA\u015ELATMA (kendi etkile\u015Fimleri bozulmas\u0131n).\n      // Linkler (a) \u00FCzerinde drag SERBEST: slayt/kart y\u00FCzeyinin tamam\u0131 link \u2014\n      // yanl\u0131\u015F navigasyon, a\u015Fa\u011F\u0131daki click handler'da moved bayra\u011F\u0131yla bast\u0131r\u0131l\u0131yor.\n      if (e.target.closest('button, input, select, textarea, label, [contenteditable]')) {\n        isDown = false; return;\n      }\n      isDown = true; moved = false;\n      startX = e.clientX; startY = e.clientY; startScroll = track.scrollLeft;\n    });\n    on(track, 'pointermove', (e) => {\n      if (!isDown) return;\n      const dx = e.clientX - startX;\n      const dy = e.clientY - startY;\n      // Yaln\u0131z yatay hareket e\u015Fi\u011Fi a\u015F\u0131ld\u0131ysa drag say (dikey scroll'a kar\u0131\u015Fmas\u0131n)\n      if (!moved && Math.abs(dx) > DRAG_THRESHOLD && Math.abs(dx) > Math.abs(dy)) {\n        moved = true;\n        track.classList.add('is-dragging');\n      }\n      if (moved) {\n        e.preventDefault();\n        track.scrollLeft = startScroll - dx;\n      }\n    });\n    const stop = () => {\n      if (!isDown) return;\n      isDown = false;\n      const didMove = moved;\n      // is-dragging'i sonraki tick'te kald\u0131r (click event'i moved kontrol\u00FCn\u00FC yapabilsin)\n      setTimeout(() => {\n        track.classList.remove('is-dragging');\n        // Snap'li raylarda b\u0131rak\u0131nca en yak\u0131n slayta yumu\u015Fak\u00E7a otur\n        // (is-dragging snap'i kapat\u0131yordu; kald\u0131r\u0131nca ara pozisyonda kalmas\u0131n)\n        if (didMove && getComputedStyle(track).scrollSnapType !== 'none') {\n          const slides = $$(':scope > *', track);\n          let nearest = null, best = Infinity;\n          slides.forEach((s) => { const d = Math.abs(s.offsetLeft - track.scrollLeft); if (d < best) { best = d; nearest = s; } });\n          if (nearest) scrollToSlide(track, nearest);\n        }\n      }, 0);\n      // moved bayra\u011F\u0131n\u0131 click event'inden SONRA s\u0131f\u0131rla\n      setTimeout(() => { moved = false; }, 50);\n    };\n    on(track, 'pointerup', stop);\n    on(track, 'pointercancel', stop);\n    on(track, 'pointerleave', stop);\n    // Drag s\u0131ras\u0131nda link a\u00E7\u0131lmas\u0131n (capture de\u011Fil, bubble phase)\n    on(track, 'click', (e) => {\n      if (moved) { e.preventDefault(); e.stopPropagation(); }\n    });\n    // G\u00F6rsel/link drag-ghost'unu engelle\n    on(track, 'dragstart', (e) => e.preventDefault());\n  }\n  $$('[data-slideshow-track], .bundle__items, .product__gallery').forEach(setupMouseDrag);\n\n  $$('[data-slideshow]').forEach((s) => {\n    const track = $('[data-slideshow-track]', s);\n    setupScrollDots(track, $('[data-slideshow-dots]', s));\n    // \"1/16\" sayac\u0131 \u2014 Hepsiburada tarz\u0131\n    const counter = $('[data-slide-counter]', s);\n    if (counter && track) {\n      const cslides = $$(':scope > *', track);\n      let craf;\n      on(track, 'scroll', () => {\n        cancelAnimationFrame(craf);\n        craf = requestAnimationFrame(() => {\n          let idx = 0, best = Infinity;\n          cslides.forEach((sl, i) => { const d = Math.abs(sl.offsetLeft - track.scrollLeft); if (d < best) { best = d; idx = i; } });\n          counter.textContent = (idx + 1) + '/' + cslides.length;\n        });\n      }, { passive: true });\n    }\n    const speed = parseInt(s.getAttribute('data-autoplay') || '0', 10);\n    if (speed > 0 && track && !s.dataset.autoplayInit) {\n      s.dataset.autoplayInit = '1';\n      const slides = $$(':scope > *', track);\n      if (slides.length < 2) return;\n      let timer = null;\n      let hoverPause = false;\n      let resumeAt = 0;\n      let activeSlide = 0;\n      let scrollSyncRaf = 0;\n\n      function nearestSlideIndex() {\n        let idx = 0;\n        let best = Infinity;\n        slides.forEach((sl, i) => {\n          const d = Math.abs(sl.offsetLeft - track.scrollLeft);\n          if (d < best) {\n            best = d;\n            idx = i;\n          }\n        });\n        return idx;\n      }\n\n      on(track, 'scroll', () => {\n        cancelAnimationFrame(scrollSyncRaf);\n        scrollSyncRaf = requestAnimationFrame(() => {\n          activeSlide = nearestSlideIndex();\n        });\n      }, { passive: true });\n\n      const advance = () => {\n        if (hoverPause || Date.now() < resumeAt) return;\n        activeSlide = (activeSlide + 1) % slides.length;\n        scrollToSlide(track, slides[activeSlide]);\n      };\n      const stop = () => {\n        if (timer) {\n          clearInterval(timer);\n          timer = null;\n        }\n      };\n      const start = () => {\n        stop();\n        timer = setInterval(advance, speed);\n      };\n\n      start();\n      on(s, 'pointerdown', () => {\n        hoverPause = true;\n        stop();\n      });\n      on(s, 'pointerup', () => {\n        hoverPause = false;\n        resumeAt = Date.now() + Math.max(800, speed);\n        start();\n      });\n      on(s, 'mouseenter', () => {\n        hoverPause = true;\n        stop();\n      });\n      on(s, 'mouseleave', () => {\n        hoverPause = false;\n        start();\n      });\n    }\n  });\n  $$('[data-gallery]').forEach((g) => {\n    const gt = $('.product__gallery', g);\n    setupScrollDots(gt, $('[data-gallery-dots]', g));\n    // Oklar g\u00F6rsel \u00E7er\u00E7evesine demirlesin (thumbs/dots y\u00FCksekli\u011Fi ortalamay\u0131 bozmas\u0131n)\n    setupRailArrows(gt, $('.product__gallery-frame', g) || g, { perSlide: true });\n    if (!gt) return;\n    const gslides = $$(':scope > *', gt);\n    // Thumbnail \u015Feridi \u2014 t\u0131kla ile ana g\u00F6rseli de\u011Fi\u015Ftir + aktif \u00E7er\u00E7eve\n    const thumbsWrap = $('[data-gallery-thumbs]', g);\n    const thumbs = thumbsWrap ? $$('.product__thumb', thumbsWrap) : [];\n    const counter = $('[data-gallery-counter]', g);\n    thumbs.forEach((t, i) => on(t, 'click', (e) => {\n      e.preventDefault();\n      if (gslides[i]) scrollToSlide(gt, gslides[i]);\n      thumbs.forEach((x) => x.classList.remove('is-active'));\n      t.classList.add('is-active');\n    }));\n    let traf;\n    on(gt, 'scroll', () => {\n      cancelAnimationFrame(traf);\n      traf = requestAnimationFrame(() => {\n        let idx = 0, best = Infinity;\n        gslides.forEach((s, i) => { const d = Math.abs(s.offsetLeft - gt.scrollLeft); if (d < best) { best = d; idx = i; } });\n        thumbs.forEach((t, i) => t.classList.toggle('is-active', i === idx));\n        if (counter) counter.textContent = (idx + 1) + '/' + gslides.length;\n        // Ba\u015Fka slayda ge\u00E7ilince oynayan videoyu durdur\n        gslides.forEach((sl, i) => {\n          if (i === idx) return;\n          const v = sl.querySelector('video');\n          if (v && !v.paused) v.pause();\n          const fr = sl.querySelector('iframe');\n          if (fr) fr.src = fr.src;\n        });\n        // Aktif thumb g\u00F6r\u00FCn\u00FCr alanda kals\u0131n (yatay ray)\n        if (thumbs[idx] && thumbsWrap) {\n          const tl = thumbs[idx].offsetLeft, tw = thumbs[idx].offsetWidth;\n          if (tl < thumbsWrap.scrollLeft || tl + tw > thumbsWrap.scrollLeft + thumbsWrap.clientWidth) {\n            thumbsWrap.scrollLeft = tl - thumbsWrap.clientWidth / 2 + tw / 2;\n          }\n        }\n      });\n    }, { passive: true });\n  });\n\n  function resetProductGalleriesToFirst() {\n    $$('[data-gallery]').forEach((g) => {\n      const gt = $('.product__gallery', g);\n      if (!gt) return;\n      const slides = $$(':scope > *', gt);\n      if (!slides.length) return;\n      scrollToSlide(gt, slides[0]);\n      const thumbs = $$('.product__thumb', g);\n      thumbs.forEach((t, i) => t.classList.toggle('is-active', i === 0));\n      const counter = $('[data-gallery-counter]', g);\n      if (counter) counter.textContent = '1/' + slides.length;\n    });\n  }\n  resetProductGalleriesToFirst();\n  requestAnimationFrame(function () {\n    requestAnimationFrame(resetProductGalleriesToFirst);\n  });\n  window.addEventListener('load', resetProductGalleriesToFirst, { once: true });\n\n  /* ---------- \u00DCr\u00FCn sayfas\u0131 mobil: arama simgesi \u00E7ubu\u011Fu a\u00E7ar/kapar ---------- */\n  on(document, 'click', (e) => {\n    const btn = e.target.closest('[data-search-toggle]');\n    if (!btn) return;\n    const header = $('.header');\n    if (!header) return;\n    header.classList.toggle('search-open');\n    if (header.classList.contains('search-open')) {\n      const inp = $('.search-bar input[type=\"search\"]', header) || $('.search-bar input[name=\"q\"]', header);\n      if (inp) setTimeout(() => inp.focus(), 60);\n    }\n  });\n\n  /* ---------- Yan kampanya kart\u0131 rotat\u00F6r\u00FC \u2014 \u00FCr\u00FCnler otomatik d\u00F6ner ---------- */\n  $$('[data-side-rotator]').forEach((el) => {\n    const slides = $$('.side-rotator__slide', el);\n    if (slides.length < 2) return;\n    const speed = parseInt(el.getAttribute('data-rotate-speed'), 10) || 4000;\n    let i = 0, timer = null;\n    const show = (n) => slides.forEach((s, k) => s.classList.toggle('is-active', k === n));\n    const start = () => { if (!timer) timer = setInterval(() => { i = (i + 1) % slides.length; show(i); }, speed); };\n    const stop = () => { clearInterval(timer); timer = null; };\n    start();\n    on(el, 'mouseenter', stop);\n    on(el, 'mouseleave', start);\n    on(el, 'pointerdown', stop);\n    on(el, 'pointerup', start);\n  });\n\n  /* ---------- \u00DCr\u00FCn galerisi lightbox \u2014 HB tarz\u0131: t\u0131kla \u2192 tam ekran, tekrar t\u0131kla \u2192 zoom ---------- */\n  (function () {\n    const galleryImgs = $$('.product__gallery .product__media:not([data-media-type=\"video\"]):not([data-media-type=\"external_video\"]) img');\n    if (!galleryImgs.length) return;\n    let lb = null, track = null, counterEl = null, prevBtn = null, nextBtn = null, current = 0;\n    function build() {\n      lb = document.createElement('div');\n      lb.className = 'gallery-lightbox';\n      lb.setAttribute('role', 'dialog');\n      lb.setAttribute('aria-modal', 'true');\n      lb.innerHTML =\n        '<button type=\"button\" class=\"gallery-lightbox__close\" aria-label=\"\u00CEnchide\">&times;</button>' +\n        '<button type=\"button\" class=\"gallery-lightbox__nav gallery-lightbox__nav--prev\" aria-label=\"Anterior\">\u2039</button>' +\n        '<button type=\"button\" class=\"gallery-lightbox__nav gallery-lightbox__nav--next\" aria-label=\"Urm\u0103tor\">\u203A</button>' +\n        '<span class=\"gallery-lightbox__counter\"></span>' +\n        '<div class=\"gallery-lightbox__track\"></div>';\n      track = $('.gallery-lightbox__track', lb);\n      counterEl = $('.gallery-lightbox__counter', lb);\n      prevBtn = $('.gallery-lightbox__nav--prev', lb);\n      nextBtn = $('.gallery-lightbox__nav--next', lb);\n      galleryImgs.forEach((im) => {\n        const slide = document.createElement('div');\n        slide.className = 'gallery-lightbox__slide';\n        const z = document.createElement('img');\n        z.src = im.getAttribute('data-zoom-src') || im.currentSrc || im.src;\n        z.alt = im.alt || '';\n        z.loading = 'lazy';\n        slide.appendChild(z);\n        track.appendChild(slide);\n      });\n      document.body.appendChild(lb);\n      on($('.gallery-lightbox__close', lb), 'click', close);\n      on(prevBtn, 'click', () => go(current - 1));\n      on(nextBtn, 'click', () => go(current + 1));\n      let raf;\n      on(track, 'scroll', () => {\n        cancelAnimationFrame(raf);\n        raf = requestAnimationFrame(() => {\n          current = Math.round(track.scrollLeft / track.clientWidth);\n          update();\n        });\n      }, { passive: true });\n      // G\u00F6rsele t\u0131kla: zoom a\u00E7/kapa; zoom'dayken kayd\u0131rarak gez. Bo\u015Flu\u011Fa t\u0131kla: kapat.\n      on(track, 'click', (e) => {\n        const z = e.target.closest('img');\n        if (!z) { close(); return; }\n        const slide = z.parentElement;\n        if (slide.classList.contains('is-zoomed')) {\n          slide.classList.remove('is-zoomed');\n          z.style.width = '';\n        } else {\n          const r = slide.getBoundingClientRect();\n          slide.classList.add('is-zoomed');\n          z.style.width = '240%';\n          slide.scrollLeft = (e.clientX - r.left) / r.width * (slide.scrollWidth - slide.clientWidth);\n          slide.scrollTop = (e.clientY - r.top) / r.height * (slide.scrollHeight - slide.clientHeight);\n        }\n      });\n    }\n    function update() {\n      counterEl.textContent = (current + 1) + '/' + galleryImgs.length;\n      prevBtn.disabled = current <= 0;\n      nextBtn.disabled = current >= galleryImgs.length - 1;\n    }\n    function go(i) {\n      current = Math.max(0, Math.min(galleryImgs.length - 1, i));\n      track.scrollTo({ left: current * track.clientWidth, behavior: 'smooth' });\n      update();\n    }\n    function open(i) {\n      if (!lb) build();\n      lb.classList.add('is-open');\n      document.body.style.overflow = 'hidden';\n      current = i;\n      update();\n      requestAnimationFrame(() => { track.scrollLeft = i * track.clientWidth; update(); });\n    }\n    function close() {\n      if (!lb) return;\n      lb.classList.remove('is-open');\n      document.body.style.overflow = '';\n      $$('.gallery-lightbox__slide.is-zoomed', lb).forEach((s) => {\n        s.classList.remove('is-zoomed');\n        const im = $('img', s);\n        if (im) im.style.width = '';\n      });\n    }\n    galleryImgs.forEach((im, i) => on(im, 'click', (e) => { e.preventDefault(); open(i); }));\n    on(document, 'keydown', (e) => {\n      if (!lb || !lb.classList.contains('is-open')) return;\n      if (e.key === 'Escape') close();\n      if (e.key === 'ArrowRight') go(current + 1);\n      if (e.key === 'ArrowLeft') go(current - 1);\n    });\n  })();\n\n  /* ---------- Harici video (YouTube/Vimeo): t\u0131klay\u0131nca oynat\u0131c\u0131y\u0131 y\u00FCkle ---------- */\n  on(document, 'click', (e) => {\n    const facade = e.target.closest('[data-video-facade]');\n    if (!facade) return;\n    const host = facade.getAttribute('data-video-host');\n    const id = facade.getAttribute('data-video-id');\n    if (!id) return;\n    let src = '';\n    if (host === 'youtube') src = 'https://www.youtube.com/embed/' + id + '?autoplay=1&rel=0&playsinline=1';\n    else if (host === 'vimeo') src = 'https://player.vimeo.com/video/' + id + '?autoplay=1';\n    else return;\n    const frame = document.createElement('iframe');\n    frame.src = src;\n    frame.title = document.title;\n    frame.loading = 'lazy';\n    frame.allow = 'autoplay; encrypted-media; picture-in-picture; fullscreen';\n    frame.allowFullscreen = true;\n    frame.className = 'product__video-frame';\n    facade.replaceChildren(frame);\n    facade.classList.add('is-playing');\n  });\n\n  /* ---------- Shopify / metafield video \u2014 Safari: controls yaln\u0131zca oynatma sonras\u0131 ---------- */\n  on(document, 'click', (e) => {\n    const btn = e.target.closest('.product__video-play--native');\n    if (!btn) return;\n    const wrap = btn.closest('[data-native-video]');\n    if (!wrap) return;\n    const video = $('video', wrap);\n    if (!video) return;\n    e.preventDefault();\n    video.controls = true;\n    video.play().catch(() => {});\n    wrap.classList.add('is-playing');\n    btn.hidden = true;\n  });\n  on(document, 'play', (e) => {\n    if (!e.target.matches('[data-native-video] video')) return;\n    const wrap = e.target.closest('[data-native-video]');\n    if (!wrap) return;\n    e.target.controls = true;\n    wrap.classList.add('is-playing');\n    const playBtn = $('.product__video-play--native', wrap);\n    if (playBtn) playBtn.hidden = true;\n  }, true);\n  on(document, 'pause', (e) => {\n    if (!e.target.matches('[data-native-video] video')) return;\n    const wrap = e.target.closest('[data-native-video]');\n    if (!wrap || !e.target.paused) return;\n    if (e.target.currentTime >= (e.target.duration || Infinity) - 0.05) return;\n    wrap.classList.remove('is-playing');\n    const playBtn = $('.product__video-play--native', wrap);\n    if (playBtn) playBtn.hidden = false;\n  }, true);\n  on(document, 'ended', (e) => {\n    if (!e.target.matches('[data-native-video] video')) return;\n    const wrap = e.target.closest('[data-native-video]');\n    if (!wrap) return;\n    wrap.classList.remove('is-playing');\n    e.target.controls = false;\n    const playBtn = $('.product__video-play--native', wrap);\n    if (playBtn) playBtn.hidden = false;\n  }, true);\n\n  /* ---------- Arama motoru \u2014 fuzzy + admin kurallar\u0131 ---------- */\n  const Search = (function () {\n    const STOP = new Set(['de', 'cu', 'la', 'din', 'pe', 'si', 'sa', 'un', 'o', 'in', 'al', 'ai', 'au', 'ce', 'ne', 'se', 'le', 'il', 'or', 'da', 'nu', 'ca', 'ale', 'sau', 'pentru', 'the', 'of', 'and', 'a', 'e']);\n    const fold = (s) => String(s || '').toLocaleLowerCase('ro').replace(/[\u0103\u00E2]/g, 'a').replace(/[\u00EE\u00ED]/g, 'i').replace(/[\u0219\u015F]/g, 's').replace(/[\u021B\u0163]/g, 't');\n    const tokens = (s) => fold(s).split(/[^a-z0-9]+/).filter(Boolean);\n\n    function cfg() {\n      return theme.searchConfig && typeof theme.searchConfig === 'object' ? theme.searchConfig : {};\n    }\n    function synonymGroups() {\n      const parts = [theme.searchSynonyms, cfg().synonyms_text].filter(Boolean).join('\\n');\n      return String(parts).split('\\n').map((line) => line.split('|').map((s) => s.trim()).filter(Boolean)).filter((g) => g.length > 1);\n    }\n    function levenshtein(a, b) {\n      if (!a.length) return b.length;\n      if (!b.length) return a.length;\n      let prev = Array(b.length + 1);\n      let cur = Array(b.length + 1);\n      for (let j = 0; j <= b.length; j++) prev[j] = j;\n      for (let i = 1; i <= a.length; i++) {\n        cur[0] = i;\n        for (let j = 1; j <= b.length; j++) {\n          const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n          cur[j] = Math.min(cur[j - 1] + 1, prev[j] + 1, prev[j - 1] + cost);\n        }\n        const tmp = prev; prev = cur; cur = tmp;\n      }\n      return prev[b.length];\n    }\n    function fuzzyWordScore(word, q, maxDist) {\n      if (!word || !q) return 0;\n      if (word === q) return 100;\n      if (word.startsWith(q) && q.length >= 3) return 96;\n      if (q.length >= 4 && word.includes(q)) return 78;\n      if (!maxDist) return 0;\n      if (Math.abs(word.length - q.length) > maxDist) return 0;\n      const d = levenshtein(q, word);\n      if (d > 0 && d <= maxDist && d < q.length) return Math.max(52, 88 - d * 16);\n      return 0;\n    }\n    function prefixScore(text, q) {\n      const nq = fold(q);\n      if (!nq) return 0;\n      if (fold(text).startsWith(nq)) return 100;\n      let best = 0;\n      tokens(text).forEach((w) => {\n        if (STOP.has(w) && w !== nq) return;\n        if (STOP.has(w) && nq === w) { best = Math.max(best, 8); return; }\n        if (w === nq) best = Math.max(best, 100);\n        else if (w.startsWith(nq) && w.length > nq.length) best = Math.max(best, 90);\n      });\n      return best;\n    }\n    function textScore(text, q) {\n      const base = prefixScore(text, q);\n      const c = cfg();\n      if (c.fuzzy_enabled === false) return base;\n      const nq = fold(q);\n      if (!nq || nq.length < 2) return base;\n      const maxDist = Number(c.fuzzy_max_distance ?? 2);\n      let fuzzyBest = 0;\n      tokens(text).forEach((w) => {\n        if (STOP.has(w) && w !== nq) return;\n        fuzzyBest = Math.max(fuzzyBest, fuzzyWordScore(w, nq, maxDist));\n      });\n      if (fold(text).includes(nq)) fuzzyBest = Math.max(fuzzyBest, 72);\n      return Math.max(base, fuzzyBest);\n    }\n    function expandSynonyms(q) {\n      const fq = fold(q);\n      const qTok = tokens(q);\n      for (const group of synonymGroups()) {\n        for (const term of group) {\n          const ft = fold(term);\n          if (!ft) continue;\n          if (fq === ft) return group[0];\n          const tTok = tokens(term);\n          if (tTok.length === 1 && qTok.includes(tTok[0])) return group[0];\n        }\n      }\n      return q;\n    }\n    function triggerHits(fq, trigger) {\n      const ft = fold(trigger);\n      if (!fq || !ft) return false;\n      if (fq === ft) return true;\n      const qTok = tokens(fq);\n      const tTok = tokens(trigger);\n      if (tTok.length === 1) return qTok.includes(tTok[0]);\n      return fq.startsWith(ft + ' ') || fq.includes(' ' + ft + ' ') || fq.endsWith(' ' + ft);\n    }\n    function landingHandle(rawQ) {\n      const qTok = tokens(rawQ);\n      if (!qTok.length) return '';\n      if (qTok.includes('otet') || qTok.includes('sirke') || qTok.includes('vinegar')) return 'vinegar';\n      if (qTok.includes('detox') || qTok.includes('detoxifiere')) return 'produse-de-detoxifiere';\n      return '';\n    }\n    function matchRule(rawQ) {\n      const fq = fold(rawQ);\n      const rules = cfg().rules || [];\n      for (let i = 0; i < rules.length; i++) {\n        const rule = rules[i];\n        if (rule.enabled === false) continue;\n        const triggers = rule.triggers || [];\n        for (let j = 0; j < triggers.length; j++) {\n          if (triggerHits(fq, triggers[j])) return rule;\n        }\n      }\n      return null;\n    }\n    function resolveQuery(rawQ) {\n      const trimmed = String(rawQ || '').trim();\n      const rule = matchRule(trimmed);\n      const collectionHandle = landingHandle(trimmed) || (rule && rule.collection_handle) || '';\n      let apiQ = trimmed;\n      if (!collectionHandle) {\n        if (rule && rule.query && tokens(rule.query).length === 1) apiQ = rule.query;\n        else if (!rule) apiQ = expandSynonyms(trimmed);\n      }\n      return { rawQ: trimmed, apiQ, rule, collectionHandle };\n    }\n    function collectionScore(c, q) {\n      let best = textScore(c.t, q);\n      if (c.h) {\n        const fh = fold(c.h);\n        const nq = fold(q);\n        if (fh.startsWith(nq)) best = Math.max(best, fh === nq ? 100 : 96);\n        fh.split('-').forEach((part) => {\n          if (!part) return;\n          best = Math.max(best, textScore(part, q));\n        });\n      }\n      return best;\n    }\n    function formatNoResults(q) {\n      const esc = (s) => String(s || '').replace(/[&<>\"']/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]));\n      let tpl = String((theme.strings || {}).noResults || 'Niciun rezultat pentru \"{{ terms }}.\"');\n      tpl = tpl.replace(/&quot;/g, '\"').replace(/&#39;/g, \"'\").replace(/&amp;/g, '&');\n      tpl = tpl.replace(/\\{\\{\\s*terms\\s*\\}\\}/g, q).replace(/%terms%/g, q).replace(/__TERMS__/g, q);\n      return esc(tpl);\n    }\n    function minProductScore() {\n      return Number(cfg().min_product_score ?? 45);\n    }\n    return {\n      fold, textScore, collectionScore, resolveQuery, expandSynonyms, formatNoResults, minProductScore, cfg,\n    };\n  })();\n\n  (function bootstrapSearchConfig() {\n    if (theme.searchConfig && Array.isArray(theme.searchConfig.rules)) return;\n    const base = String(theme.adminApi || '').replace(/\\/$/, '');\n    if (!base) return;\n    fetch(base + '/search', { credentials: 'omit' })\n      .then(function (r) { return r.ok ? r.json() : null; })\n      .then(function (data) {\n        if (data && typeof data === 'object') theme.searchConfig = data;\n      })\n      .catch(function () {});\n  })();\n\n  /* ---------- Predictive search ---------- */\n  const searchForm = $('[data-predictive-search]');\n  const psInput = searchForm && ($('input[type=\"search\"]', searchForm) || $('input[name=\"q\"]', searchForm));\n  const psResults = searchForm && $('[data-search-results]', searchForm);\n  if (searchForm && psInput && psResults) {\n    const input = psInput;\n    const results = psResults;\n    const psProblems = $('[data-search-problems]', searchForm);\n    const dropdown = $('[data-search-dropdown]', searchForm);\n    let controller;\n    const colThreshold = (q) => (q.length <= 2 ? 35 : 70);\n    const rankCollections = (q, extra, rule, collectionHandle) => {\n      const pin = collectionHandle || (rule && rule.collection_handle) || '';\n      const merged = new Map();\n      if (pin) {\n        const pinned = (theme.searchCollections || []).find((c) => c.h === pin) || { t: pin, u: localePath('/collections/' + pin), h: pin };\n        merged.set(pin, {\n          ...pinned,\n          u: localePath(pinned.u || '/collections/' + pin),\n          score: 200,\n          _pinned: true,\n          _label: (rule && rule.label) || 'Sugerat',\n        });\n        return Array.from(merged.values());\n      }\n      (theme.searchCollections || []).forEach((c) => {\n        const score = Search.collectionScore(c, q);\n        if (score >= colThreshold(q)) merged.set(c.h || c.u, { ...c, score });\n      });\n      (extra || []).forEach((c) => {\n        const score = Search.collectionScore(c, q);\n        if (score >= colThreshold(q) && c.h && !merged.has(c.h)) merged.set(c.h, { ...c, score });\n      });\n      return Array.from(merged.values())\n        .sort((a, b) => b.score - a.score || a.t.localeCompare(b.t, 'ro'))\n        .slice(0, 5);\n    };\n    const esc = (s) => String(s || '').replace(/[&<>\"']/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]));\n    const showProblems = () => psProblems && input.value.trim().length === 0 && psProblems.textContent.trim().length > 0;\n    const syncDropdown = () => {\n      if (!dropdown) return;\n      const open = (results && !results.hidden) || (psProblems && !psProblems.hidden);\n      dropdown.hidden = !open;\n    };\n    const debounce = (fn, t) => { let id; return (...a) => { clearTimeout(id); id = setTimeout(() => fn(...a), t); }; };\n    const priceCents = (p) => catalogPriceCents(p);\n    const productImg = (p) => (p.image || (p.featured_image && p.featured_image.url) || '');\n    function storePathFromRoute(route, fallback) {\n      let p = String(route || fallback || '').trim() || fallback;\n      if (/^https?:\\/\\//i.test(p)) {\n        try { p = new URL(p).pathname; } catch (e) { p = fallback; }\n      }\n      p = p.replace(/\\.json$/i, '');\n      return localePath(normalizeStorePath(p, marketPathPrefix()));\n    }\n    const renderSearch = (displayQ, apiQ, cols, prods, rule, collectionHandle) => {\n      const str = theme.strings || {};\n      const searchRoot = storePathFromRoute(theme.routes && theme.routes.search, '/search');\n      const searchUrl = collectionHandle\n        ? localePath('/collections/' + encodeURIComponent(collectionHandle))\n        : searchRoot + '?q=' + encodeURIComponent(apiQ || displayQ) + '&type=product&options[prefix]=last';\n      let html = '';\n      if (cols.length) {\n        html += '<div class=\"predictive__label\">' + esc(str.searchCollections || 'Colec\u021Bii') + '</div>';\n        cols.forEach((c) => {\n          html += '<a href=\"' + esc(c.u) + '\" class=\"predictive__item predictive__item--collection\">' +\n            '<span class=\"predictive__thumb predictive__thumb--col\" aria-hidden=\"true\">' +\n            '<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M3 7h6l2 2h10v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z\"/></svg>' +\n            '</span><span class=\"predictive__title\">' + esc(c.t) +\n            (c._label ? '<span class=\"predictive__badge\">' + esc(c._label) + '</span>' : '') +\n            '</span></a>';\n        });\n      }\n      if (prods.length) {\n        html += '<div class=\"predictive__label\">' + esc(str.searchProducts || 'Produse') + '</div>';\n        prods.forEach((p) => {\n          const img = productImg(p);\n          html += '<a href=\"' + esc(productListingUrl(p)) + '\" class=\"predictive__item\">';\n          if (img) html += '<img src=\"' + esc(img) + '\" alt=\"\" width=\"44\" height=\"44\" loading=\"lazy\">';\n          html += '<span style=\"flex:1;min-width:0\"><span class=\"predictive__title\">' + esc(p.title) + '</span>';\n          if (p.vendor) html += '<span class=\"predictive__vendor\">' + esc(p.vendor) + '</span>';\n          html += '<span class=\"predictive__price\">' + formatMoney(priceCents(p)) + '</span></span></a>';\n        });\n      }\n      if (!html) {\n        html = '<div class=\"predictive__empty\">' + Search.formatNoResults(displayQ) + '</div>';\n      } else {\n        html += '<a href=\"' + esc(searchUrl) + '\" class=\"predictive__all\">' + esc(str.searchViewAll || 'Vezi toate rezultatele') + '</a>';\n      }\n      results.innerHTML = html;\n      results.hidden = false;\n    };\n    const minProdScore = () => Search.minProductScore();\n    const mapCollectionProducts = (list) => (list || [])\n      .filter((p) => !isCartUpsellProduct(p))\n      .map((p) => ({\n        title: p.title,\n        handle: p.handle,\n        url: localePath('/products/' + p.handle),\n        vendor: p.vendor,\n        variants: p.variants,\n        image: (p.images && p.images[0] && p.images[0].src) || '',\n        price: p.variants && p.variants[0] && p.variants[0].price,\n        score: 200,\n      }));\n    const search = debounce(async () => {\n      const rawQ = input.value.trim();\n      const resolved = Search.resolveQuery(rawQ);\n      const q = resolved.apiQ;\n      const rule = resolved.rule;\n      const collectionHandle = resolved.collectionHandle;\n      if (!rawQ.length) {\n        results.hidden = true;\n        results.innerHTML = '';\n        if (psProblems) psProblems.hidden = document.activeElement !== input || !showProblems();\n        syncDropdown();\n        return;\n      }\n      if (psProblems) psProblems.hidden = true;\n      const localCols = rankCollections(q, [], rule, collectionHandle);\n      if (localCols.length) {\n        renderSearch(rawQ, q, localCols, [], rule, collectionHandle);\n        syncDropdown();\n      }\n      if (controller) controller.abort();\n      controller = new AbortController();\n      try {\n        let colProds = [];\n        if (collectionHandle) {\n          const cres = await fetch(localePath('/collections/' + encodeURIComponent(collectionHandle) + '/products.json?limit=8'), { signal: controller.signal });\n          if (cres.ok) {\n            const cdata = await cres.json();\n            colProds = mapCollectionProducts(cdata.products);\n          }\n        }\n        const suggestBase = storePathFromRoute(theme.routes && theme.routes.predictiveSearch, '/search/suggest');\n        const url = suggestBase + '.json?q=' + encodeURIComponent(q) +\n          '&resources[type]=product,collection,query' +\n          '&resources[limit]=10&resources[limit_scope]=each' +\n          '&resources[options][unavailable_products]=last' +\n          '&resources[options][fields]=title,product_type,vendor,variants.title,variants.sku,tag';\n        const res = await fetch(url, { signal: controller.signal, headers: { Accept: 'application/json' } });\n        if (!res.ok) throw new Error('suggest ' + res.status);\n        const data = await res.json();\n        const api = (data && data.resources && data.resources.results) || {};\n        const apiCols = (api.collections || []).map((c) => ({\n          t: c.title,\n          u: c.url,\n          h: c.handle\n        }));\n        const cols = rankCollections(q, apiCols, rule, collectionHandle);\n        const prodLimit = cols.length && q.length <= 2 ? 4 : 6;\n        const threshold = minProdScore();\n        const scored = (api.products || [])\n          .filter((p) => !isCartUpsellProduct(p))\n          .map((p) => ({\n            ...p,\n            score: Math.max(Search.textScore(p.title, rawQ), Search.textScore(p.vendor, rawQ), Search.textScore(p.type, rawQ)),\n          }))\n          .filter((p) => p.score >= threshold)\n          .sort((a, b) => b.score - a.score);\n        const seen = new Set(colProds.map((p) => p.url));\n        let prods = colProds.concat(scored.filter((p) => !seen.has(p.url))).slice(0, prodLimit);\n        prods = await enrichSearchProductsWithVariants(prods);\n        renderSearch(rawQ, q, cols, prods, rule, collectionHandle);\n        syncDropdown();\n      } catch (e) {\n        if (e.name === 'AbortError') return;\n        const cols = rankCollections(q, [], rule, collectionHandle);\n        if (cols.length) {\n          renderSearch(rawQ, q, cols, [], rule, collectionHandle);\n        } else {\n          results.hidden = true;\n        }\n        syncDropdown();\n      }\n    }, 160);\n    on(input, 'input', search);\n    on(input, 'keydown', (e) => {\n      if (e.key === 'Escape') {\n        results.hidden = true;\n        if (psProblems) psProblems.hidden = true;\n        syncDropdown();\n        input.blur();\n      }\n    });\n    on(document, 'click', (e) => {\n      if (!searchForm.contains(e.target)) {\n        results.hidden = true;\n        if (psProblems) psProblems.hidden = true;\n        syncDropdown();\n      }\n    });\n    on(input, 'focus', () => {\n      if (results.innerHTML) results.hidden = false;\n      if (psProblems && showProblems()) psProblems.hidden = false;\n      syncDropdown();\n    });\n  }\n\n  /* ---------- Mobil hamburger men\u00FC (tam geni\u015Flik, soldan) ---------- */\n  const mobileNavDrawer = $('#MobileNavDrawer');\n  function closeMobileNavDrawer() {\n    if (!mobileNavDrawer) return;\n    mobileNavDrawer.classList.remove('is-open');\n    mobileNavDrawer.setAttribute('aria-hidden', 'true');\n    document.body.style.overflow = '';\n    const openBtn = $('[data-mobile-nav-open]');\n    if (openBtn) openBtn.setAttribute('aria-expanded', 'false');\n  }\n  function openMobileNavDrawer() {\n    if (!mobileNavDrawer) return;\n    mobileNavDrawer.classList.add('is-open');\n    mobileNavDrawer.setAttribute('aria-hidden', 'false');\n    document.body.style.overflow = 'hidden';\n    const openBtn = $('[data-mobile-nav-open]');\n    if (openBtn) openBtn.setAttribute('aria-expanded', 'true');\n  }\n  if (mobileNavDrawer) {\n    on(document, 'click', (e) => {\n      if (window.innerWidth >= 990) return;\n      if (e.target.closest('[data-mobile-nav-open]')) {\n        e.preventDefault();\n        if (mobileNavDrawer.classList.contains('is-open')) closeMobileNavDrawer();\n        else openMobileNavDrawer();\n        return;\n      }\n      if (e.target.closest('[data-mobile-nav-close]') || e.target.classList.contains('mobile-nav-drawer__overlay')) {\n        closeMobileNavDrawer();\n        return;\n      }\n      if (e.target.closest('a.mobile-nav-drawer__link')) closeMobileNavDrawer();\n      const catFromNav = e.target.closest('.mobile-nav-drawer__link--btn[data-category-open]');\n      if (catFromNav) {\n        closeMobileNavDrawer();\n      }\n    });\n    on(document, 'keydown', (e) => {\n      if (e.key === 'Escape' && mobileNavDrawer.classList.contains('is-open')) closeMobileNavDrawer();\n    });\n  }\n\n  /* ---------- Filtre drawer ---------- */\n  on(document, 'click', (e) => {\n    const open = e.target.closest('[data-facet-open]');\n    const close = e.target.closest('[data-facet-close]');\n    const fd = $('#FacetDrawer');\n    if (open && fd) {\n      fd.classList.add('is-open'); document.body.style.overflow = 'hidden';\n      if (open.hasAttribute('data-focus-sort')) {\n        const sg = $('#sort-group', fd);\n        if (sg) setTimeout(() => sg.scrollIntoView({ block: 'start' }), 50);\n      }\n    }\n    if ((close || e.target.classList.contains('facet-drawer__overlay')) && fd) { fd.classList.remove('is-open'); document.body.style.overflow = ''; }\n  });\n\n  /* ---------- Katalog men\u00FCs\u00FC: masa\u00FCst\u00FCnde t\u0131k = mega men\u00FC; mobilde kategori sayfas\u0131 ---------- */\n  const allCatItem = $('.header__catalog-wrap') || $('.header__catstrip-item--all');\n  if (allCatItem && $('.megamenu--all', allCatItem)) {\n    on(allCatItem, 'click', (e) => {\n      if (window.innerWidth < 990) return;\n      const btn = e.target.closest('.header__catalog') || e.target.closest('.header__catstrip-all');\n      if (!btn) return;\n      e.preventDefault();\n      const open = allCatItem.classList.toggle('is-open');\n      if (btn.classList.contains('header__catalog')) {\n        btn.setAttribute('aria-expanded', open ? 'true' : 'false');\n      }\n    });\n    on(document, 'click', (e) => {\n      if (!allCatItem.contains(e.target)) {\n        allCatItem.classList.remove('is-open');\n        const btn = $('.header__catalog', allCatItem);\n        if (btn) btn.setAttribute('aria-expanded', 'false');\n      }\n    });\n    on(document, 'keydown', (e) => {\n      if (e.key === 'Escape') {\n        allCatItem.classList.remove('is-open');\n        const btn = $('.header__catalog', allCatItem);\n        if (btn) btn.setAttribute('aria-expanded', 'false');\n      }\n    });\n  }\n\n  /* ---------- Mobil kategori g\u00F6r\u00FCn\u00FCm\u00FC \u2014 HB tarz\u0131 tam sayfa + drill-down ---------- */\n  const catPage = $('#CategoryDrawer');\n  function catShowRoot() {\n    $$('.category-page__view', catPage).forEach((v) => { v.hidden = !v.hasAttribute('data-cat-root'); });\n    catPage.scrollTop = 0;\n  }\n  function closeCatPage() {\n    if (!catPage) return;\n    catPage.classList.remove('is-open');\n    catPage.setAttribute('aria-hidden', 'true');\n    document.body.style.overflow = '';\n  }\n  if (catPage) {\n    on(document, 'click', (e) => {\n      const openBtn = e.target.closest('[data-category-open]');\n      if (openBtn && window.innerWidth < 990) {\n        e.preventDefault();\n        if (catPage.classList.contains('is-open')) { closeCatPage(); return; } // sekmeye tekrar bas = kapat\n        catShowRoot();\n        catPage.classList.add('is-open');\n        catPage.setAttribute('aria-hidden', 'false');\n        document.body.style.overflow = 'hidden';\n        return;\n      }\n      const subBtn = e.target.closest('[data-cat-sub-open]');\n      if (subBtn) {\n        const idx = subBtn.getAttribute('data-cat-sub-open');\n        $$('.category-page__view', catPage).forEach((v) => { v.hidden = v.getAttribute('data-cat-sub') !== idx; });\n        catPage.scrollTop = 0;\n        return;\n      }\n      if (e.target.closest('[data-cat-back]')) { catShowRoot(); return; }\n      // Bir kategori linkine gidilirken g\u00F6r\u00FCn\u00FCm kapans\u0131n\n      if (e.target.closest('a.category-page__row')) closeCatPage();\n    });\n    on(document, 'keydown', (e) => { if (e.key === 'Escape' && catPage.classList.contains('is-open')) closeCatPage(); });\n  }\n\n  /* ---------- Koleksiyon: masa\u00FCst\u00FC s\u0131ralama se\u00E7ici + sidebar filtre auto-submit ---------- */\n  on(document, 'change', (e) => {\n    const sel = e.target.closest('[data-sort-select]');\n    if (sel) {\n      if (isDesignMode) return;\n      const url = new URL(location.href);\n      url.searchParams.set('sort_by', sel.value);\n      url.searchParams.delete('page');\n      location.href = url.toString();\n      return;\n    }\n    // Fiyat alanlar\u0131 auto-submit DI\u015EINDA: her rakamda sayfa yenilenip odak kayboldu\u011Fu i\u00E7in\n    // fiyat yaz\u0131lam\u0131yordu. Fiyat yaln\u0131zca \"Aplic\u0103\" ile veya Enter ile uygulan\u0131r.\n    const form = e.target.closest('[data-facet-autosubmit]');\n    if (form && e.target.matches('input[type=\"checkbox\"], input[type=\"radio\"]') && !e.target.closest('[data-facet-price]')) {\n      submitFacetForm(form);\n    }\n  });\n  // Fiyat alan\u0131nda yazarken form submit / sayfa yenilenmesini engelle\n  on(document, 'keydown', (e) => {\n    if (e.key === 'Enter' && e.target.closest('[data-facet-price] input')) return; // ayr\u0131 handler var\n    if (!e.target.matches('[data-facet-price] input[type=\"number\"]')) return;\n    e.stopPropagation();\n  });\n\n  /* ---------- Filtre formu: bo\u015F fiyat alanlar\u0131n\u0131 URL'e yazma + Enter ile uygula ---------- */\n  function submitFacetForm(form) {\n    if (!form) return;\n    if (isDesignMode) return;\n    $$('input[type=\"number\"]', form).forEach((i) => { if (!i.value.trim()) i.disabled = true; });\n    form.submit();\n  }\n  on(document, 'submit', (e) => {\n    const form = e.target.closest('[data-facet-form]');\n    if (form) $$('input[type=\"number\"]', form).forEach((i) => { if (!i.value.trim()) i.disabled = true; });\n  });\n  on(document, 'keydown', (e) => {\n    if (e.key !== 'Enter') return;\n    const priceInput = e.target.closest('[data-facet-price] input');\n    if (!priceInput) return;\n    e.preventDefault();\n    submitFacetForm(priceInput.closest('form'));\n  });\n\n  /* ---------- Kapat\u0131labilir kartlar (premium upsell vb.) ---------- */\n  const DISMISS_KEY = 'totul_dismissed';\n  function getDismissed() { try { return JSON.parse(localStorage.getItem(DISMISS_KEY) || '[]'); } catch (e) { return []; } }\n  function isDismissed(id) { return getDismissed().indexOf(id) > -1; }\n  function applyDismissed() {\n    $$('[data-dismissible]').forEach((el) => { if (isDismissed(el.getAttribute('data-dismissible'))) el.style.display = 'none'; });\n  }\n  on(document, 'click', (e) => {\n    const btn = e.target.closest('[data-dismiss]');\n    if (!btn) return;\n    const card = btn.closest('[data-dismissible]');\n    if (!card) return;\n    const id = card.getAttribute('data-dismissible');\n    const list = getDismissed();\n    if (list.indexOf(id) === -1) list.push(id);\n    safeSetItem(DISMISS_KEY, JSON.stringify(list));\n    card.style.display = 'none';\n  });\n  applyDismissed();\n\n  /* ---------- Wishlist (localStorage) ---------- */\n  const WISHLIST_KEY = 'totul_wishlist';\n  const WISHLIST_META_KEY = 'totul_wishlist_meta';\n  const getWishlist = () => { try { return JSON.parse(localStorage.getItem(WISHLIST_KEY) || '[]'); } catch (e) { return []; } };\n  const getWishlistMeta = () => { try { return JSON.parse(localStorage.getItem(WISHLIST_META_KEY) || '{}'); } catch (e) { return {}; } };\n  function syncWishlistUI() {\n    const list = getWishlist();\n    $$('[data-wishlist]').forEach((b) => b.classList.toggle('is-active', list.includes(b.getAttribute('data-wishlist'))));\n    const meta = getWishlistMeta();\n    const count = list.filter((id) => meta[id] && meta[id].t && !String(id).startsWith('vendor-') && !String(id).startsWith('save-')).length;\n    $$('[data-wishlist-count]').forEach((el) => {\n      el.textContent = count;\n      el.hidden = count === 0;\n    });\n  }\n  function wishlistRemove(id) {\n    const list = getWishlist().filter((x) => x !== id);\n    safeSetItem(WISHLIST_KEY, JSON.stringify(list));\n    const meta = getWishlistMeta();\n    delete meta[id];\n    safeSetItem(WISHLIST_META_KEY, JSON.stringify(meta));\n  }\n  on(document, 'click', (e) => {\n    const btn = e.target.closest('[data-wishlist]');\n    if (!btn) return;\n    e.preventDefault();\n    const id = btn.getAttribute('data-wishlist');\n    let list = getWishlist();\n    if (list.includes(id)) {\n      wishlistRemove(id);\n    } else {\n      list.push(id);\n      safeSetItem(WISHLIST_KEY, JSON.stringify(list));\n      // \u00DCr\u00FCn bilgisini de sakla \u2014 \"Lista mea\" sayfas\u0131 bunlarla kart basar\n      if (btn.dataset.wlTitle) {\n        const meta = getWishlistMeta();\n        meta[id] = { t: btn.dataset.wlTitle, u: btn.dataset.wlUrl || '', i: btn.dataset.wlImage || '', p: parseInt(btn.dataset.wlPrice || '0', 10) };\n        safeSetItem(WISHLIST_META_KEY, JSON.stringify(meta));\n      }\n      toast(theme.strings.wishlistAdded || 'Ad\u0103ugat \u00EEn list\u0103');\n      trackSegmentIntent('wishlist', id);\n    }\n    syncWishlistUI();\n    renderWishlistPage();\n  });\n  syncWishlistUI();\n\n  /* ---------- \"Lista mea\" sayfas\u0131 \u2014 localStorage'dan kart bas ---------- */\n  function renderWishlistPage() {\n    const grid = $('[data-wishlist-page]');\n    if (!grid) return;\n    const emptyEl = $('[data-wishlist-empty]');\n    const meta = getWishlistMeta();\n    // vendor-/save- girdileri \u00FCr\u00FCn de\u011Fil; yaln\u0131z metas\u0131 olan \u00FCr\u00FCnleri listele\n    const ids = getWishlist().filter((id) => meta[id] && meta[id].t);\n    grid.innerHTML = ids.map((id) => {\n      const m = meta[id];\n      return '<div class=\"product-card wishlist-card\">' +\n        '<a href=\"' + m.u + '\" class=\"product-card__media-link\"><div class=\"product-card__media\">' +\n        (m.i ? '<img src=\"' + m.i + '\" alt=\"\" loading=\"lazy\">' : '') +\n        '</div></a>' +\n        '<div class=\"product-card__info\">' +\n        '<a href=\"' + m.u + '\" class=\"product-card__title\">' + m.t.replace(/</g, '&lt;') + '</a>' +\n        '<div class=\"product-card__price-row\"><span class=\"price\">' + formatMoney(m.p) + '</span></div>' +\n        '<button type=\"button\" class=\"btn wishlist-card__remove\" data-wishlist-page-remove=\"' + id + '\">' + (grid.dataset.removeLabel || 'Elimin\u0103') + '</button>' +\n        '</div></div>';\n    }).join('');\n    grid.hidden = ids.length === 0;\n    if (emptyEl) emptyEl.hidden = ids.length > 0;\n  }\n  on(document, 'click', (e) => {\n    const rm = e.target.closest('[data-wishlist-page-remove]');\n    if (!rm) return;\n    wishlistRemove(rm.getAttribute('data-wishlist-page-remove'));\n    syncWishlistUI();\n    renderWishlistPage();\n  });\n  renderWishlistPage();\n\n  /* ---------- Sepet \u00FCr\u00FCn se\u00E7imi (g\u00F6rsel + se\u00E7ili toplam) ---------- */\n  function recalcSelection() {\n    const boxes = $$('[data-select-line]');\n    if (!boxes.length) return;\n    let total = 0, count = 0;\n    boxes.forEach((b) => {\n      const row = b.closest('.cart-item');\n      if (b.checked) {\n        total += parseInt(b.getAttribute('data-line-total'), 10) || 0;\n        count += 1;\n        row && row.classList.remove('is-deselected');\n      } else {\n        row && row.classList.add('is-deselected');\n      }\n    });\n    $$('[data-selected-total]').forEach((el) => { el.textContent = formatMoney(total); });\n    $$('[data-selected-count]').forEach((el) => { el.textContent = count; });\n    $$('[name=\"checkout\"]').forEach((b) => { b.disabled = count === 0; });\n  }\n  on(document, 'change', (e) => { if (e.target.matches('[data-select-line]')) recalcSelection(); });\n  recalcSelection();\n  document.addEventListener('cart:updated', () => setTimeout(recalcSelection, 50));\n\n  Cart.getState().then(async function (cart) {\n    await applyUpsellPromoAndRender(cart);\n  }).catch(function () { /* sessiz ge\u00E7 */ });\n\n  /* ---------- \u00DCr\u00FCn paketi (bundle) ---------- */\n  function recalcBundle(root) {\n    const disc = parseFloat(root.getAttribute('data-discount')) || 0;\n    const minItems = parseInt(root.getAttribute('data-min-items'), 10) || 2;\n    const items = $$('[data-bundle-item]', root).filter((i) => {\n      if (!i.checked) return false;\n      if (i.disabled && !isDevLocal) return false;\n      return true;\n    });\n    let total = 0;\n    items.forEach((i) => { total += parseInt(i.getAttribute('data-price'), 10) || 0; });\n    // Paket indirimi yaln\u0131zca en az minItems \u00FCr\u00FCn se\u00E7iliyken ge\u00E7erli.\n    // Tek \u00FCr\u00FCn se\u00E7iliyken indirimli fiyat g\u00F6stermek sepetteki tutarla \u00E7eli\u015Fiyordu.\n    const discountActive = disc > 0 && items.length >= minItems;\n    const bundleTotal = discountActive ? Math.round(total * (1 - disc / 100)) : total;\n    const saved = total - bundleTotal;\n    const totalEl = $('[data-bundle-total]', root);\n    const regEl = $('[data-bundle-regular]', root);\n    const saveEl = $('[data-bundle-save]', root);\n    const noteEl = $('[data-bundle-note]', root);\n    const hintEl = $('[data-bundle-hint]', root);\n    if (totalEl) totalEl.textContent = formatMoney(bundleTotal);\n    if (regEl) {\n      regEl.textContent = discountActive ? formatMoney(total) : '';\n      regEl.hidden = !discountActive;\n      const regWrap = regEl.closest('.bundle__regular');\n      if (regWrap) regWrap.hidden = !discountActive;\n    }\n    if (saveEl) {\n      saveEl.textContent = discountActive ? (theme.strings.youSave || 'Economise\u0219ti %amount%').replace('%amount%', formatMoney(saved)) : '';\n      saveEl.hidden = !discountActive;\n    }\n    if (noteEl) noteEl.hidden = !discountActive;\n    if (hintEl) hintEl.hidden = discountActive || disc === 0;\n    const addBtn = $('[data-bundle-add]', root);\n    if (addBtn) addBtn.disabled = items.length === 0;\n  }\n  $$('[data-bundle]').forEach(recalcBundle);\n  on(document, 'change', (e) => {\n    const item = e.target.closest('[data-bundle-item]');\n    if (item) recalcBundle(item.closest('[data-bundle]'));\n  });\n  on(document, 'click', async (e) => {\n    const btn = e.target.closest('[data-bundle-add]');\n    if (!btn || btn.disabled || btn.classList.contains('is-loading')) return;\n    e.preventDefault();\n    await withCartLock(async () => {\n    const root = btn.closest('[data-bundle]');\n    const bundleId = root.getAttribute('data-bundle-id');\n    const bundleName = root.getAttribute('data-bundle-name') || '';\n    const disc = parseFloat(root.getAttribute('data-discount') || '0') || 0;\n    const minItems = parseInt(root.getAttribute('data-min-items'), 10) || 2;\n    const discountCode = (root.getAttribute('data-discount-code') || '').trim();\n    const items = $$('[data-bundle-item]', root).filter((i) => i.checked && !i.disabled).map((i) => ({\n      id: Number(i.getAttribute('data-variant-id')),\n      quantity: 1,\n      properties: {\n        _bundle: bundleId,\n        _bundle_name: bundleName,\n        _bundle_discount: disc > 0 ? (disc + '%') : '',\n        _bundle_min_items: String(minItems),\n        ...(discountCode ? { _bundle_discount_code: discountCode } : {}),\n      }\n    }));\n    if (!items.length) return;\n    const discountActive = disc > 0 && items.length >= minItems;\n    btn.classList.add('is-loading'); btn.disabled = true;\n    try {\n      const sections = cartSectionIds();\n      let data = await Cart.add(items, sections);\n      if (discountActive && discountCode) {\n        try {\n          storeBundleMin(discountCode, minItems);\n          data = await Cart.update({\n            discount: discountCode,\n            attributes: {\n              _bundle_discount_code: discountCode,\n              _bundle_min_items: String(minItems),\n            }\n          }, sections);\n        } catch (discErr) {\n          toast((discErr && discErr.description) || ('Indirim kodu uygulanamad\u0131: ' + discountCode), 'error');\n        }\n      }\n      updateCartCounts((data && data.item_count != null) ? data.item_count : (await Cart.getState()).item_count);\n      await finishCartAdd(data, items);\n      return;\n    } catch (err) {\n      toast((err && err.description) || theme.strings.genericError || 'A ap\u0103rut o eroare', 'error');\n    } finally {\n      btn.classList.remove('is-loading'); btn.disabled = false;\n    }\n    });\n  });\n\n  /* ---------- \u00DCr\u00FCn \u00F6nerileri (async) \u2014 tekrarlayan \u00FCr\u00FCnleri ele (#11) ---------- */\n  const recShownHandles = new Set();\n  if (document.body.dataset.productHandle) recShownHandles.add(document.body.dataset.productHandle);\n  function handleFromCard(card) {\n    const a = card.matches('a[href*=\"/products/\"]') ? card : card.querySelector('a[href*=\"/products/\"]');\n    if (!a) return '';\n    try {\n      return new URL(a.href, location.origin).pathname.split('/products/')[1].split(/[/?#]/)[0];\n    } catch (e) { return ''; }\n  }\n  function dedupeRecommendations(container) {\n    if (!container) return;\n    $$('.product-card, .sidebar-recs__item', container).forEach((card) => {\n      const h = handleFromCard(card);\n      if (!h) return;\n      if (recShownHandles.has(h)) card.remove();\n      else recShownHandles.add(h);\n    });\n    if (container.matches('[data-recommendations], [data-sidebar-recs]') && !container.querySelector('.product-card, .sidebar-recs__item')) {\n      const articleProducts = container.closest('.article-products');\n      if (articleProducts && container.matches('[data-recommendations]')) {\n        articleProducts.remove();\n        return;\n      }\n      const section = container.closest('.shopify-section') || container.closest('.product__side-card');\n      if (section && container.matches('[data-recommendations]')) section.remove();\n      else if (section && container.matches('[data-sidebar-recs]')) section.remove();\n    }\n  }\n  function loadRecommendations(el) {\n    const url = el.getAttribute('data-url');\n    if (!url) return;\n    fetch(url).then((r) => r.text()).then((html) => {\n      const doc = new DOMParser().parseFromString(html, 'text/html');\n      const fresh = doc.querySelector('[data-recommendations]');\n      if (fresh && fresh.querySelector('.product-card')) {\n        el.innerHTML = fresh.innerHTML;\n        dedupeRecommendations(el);\n        syncWishlistUI();\n        initRails(el);\n      } else {\n        el.remove();\n      }\n    }).catch(() => { el.removeAttribute('aria-busy'); });\n  }\n  function loadSidebarRecs(el) {\n    const url = el.getAttribute('data-url');\n    if (!url) return;\n    fetch(url).then((r) => r.text()).then((html) => {\n      const doc = new DOMParser().parseFromString(html, 'text/html');\n      const list = doc.querySelector('.sidebar-recs__list');\n      const host = $('.sidebar-recs__list', el);\n      if (list && host && list.children.length) {\n        host.innerHTML = list.innerHTML;\n        host.removeAttribute('aria-busy');\n        dedupeRecommendations(el);\n      } else {\n        el.remove();\n      }\n    }).catch(() => { el.remove(); });\n  }\n  let recObserver = null;\n  let sidebarRecObserver = null;\n  if ('IntersectionObserver' in window) {\n    recObserver = new IntersectionObserver((entries, obs) => {\n      entries.forEach((e) => { if (e.isIntersecting) { loadRecommendations(e.target); obs.unobserve(e.target); } });\n    }, { rootMargin: '200px' });\n    sidebarRecObserver = new IntersectionObserver((entries, obs) => {\n      entries.forEach((e) => { if (e.isIntersecting) { loadSidebarRecs(e.target); obs.unobserve(e.target); } });\n    }, { rootMargin: '100px' });\n  }\n  function observeRecommendations(scope) {\n    $$('[data-recommendations]', scope || document).forEach((el) => {\n      if (el.dataset.recsInit) return;\n      el.dataset.recsInit = '1';\n      if (recObserver) recObserver.observe(el);\n      else loadRecommendations(el);\n    });\n    $$('[data-sidebar-recs]', scope || document).forEach((el) => {\n      if (el.dataset.sidebarRecsInit) return;\n      el.dataset.sidebarRecsInit = '1';\n      if (sidebarRecObserver) sidebarRecObserver.observe(el);\n      else loadSidebarRecs(el);\n    });\n  }\n  observeRecommendations();\n\n  /* ---------- 4 al 3 \u00F6de rozeti \u2192 paket se\u00E7iciye git ---------- */\n  on(document, 'click', (e) => {\n    const btn = e.target.closest('[data-4al3-jump]');\n    if (!btn) return;\n    e.preventDefault();\n    const pack = document.getElementById('product-packs');\n    if (pack) {\n      pack.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      let target = null;\n      $$('.pack-tile input[type=\"radio\"]', pack).forEach((input) => {\n        const title = (input.closest('.pack-tile')?.querySelector('.pack-tile__title')?.textContent || '').toLowerCase();\n        const ps = parseInt(input.getAttribute('data-pack-size'), 10) || 0;\n        if (/3\\s*\\+\\s*1|3\\+1|4 al 3|set de 3/i.test(title) || ps >= 4) target = input;\n      });\n      if (target) {\n        target.checked = true;\n        target.dispatchEvent(new Event('change', { bubbles: true }));\n        target.closest('.pack-tile')?.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n      }\n      return;\n    }\n    const url = btn.getAttribute('data-collection-url');\n    if (url) location.href = url;\n  });\n\n  /* ---------- Geri say\u0131m sayac\u0131 (g\u00FCn\u00FCn f\u0131rsatlar\u0131) ---------- */\n  $$('[data-countdown]').forEach((el) => {\n    const raw = (el.getAttribute('data-countdown') || '').trim();\n    let target;\n    if (raw) {\n      target = new Date(raw.replace(' ', 'T'));\n      if (isNaN(target)) target = null;\n    }\n    if (!target) { target = new Date(); target.setHours(23, 59, 59, 0); }\n    const h = $('[data-cd-h]', el), m = $('[data-cd-m]', el), s = $('[data-cd-s]', el);\n    const pad = (n) => String(n).padStart(2, '0');\n    let timer = null; // tick() ilk \u00E7a\u011Fr\u0131da s\u00FCresi ge\u00E7mi\u015F hedefte clearInterval'e ula\u015Fabilir \u2014 TDZ hatas\u0131 olmas\u0131n\n    const tick = () => {\n      let diff = Math.floor((target.getTime() - Date.now()) / 1000);\n      if (diff <= 0) { diff = 0; if (timer) { clearInterval(timer); timer = null; } }\n      const hh = Math.floor(diff / 3600), mm = Math.floor((diff % 3600) / 60), ss = diff % 60;\n      if (h) h.textContent = pad(hh); if (m) m.textContent = pad(mm); if (s) s.textContent = pad(ss);\n    };\n    tick();\n    if (target.getTime() > Date.now()) timer = setInterval(tick, 1000);\n  });\n\n  /* ---------- Header gizle/g\u00F6ster (mobil scroll) ---------- */\n  const header = $('.header');\n  if (header) {\n    let lastY = 0;\n    header.style.transition = 'transform .25s';\n    on(window, 'scroll', () => {\n      const y = window.scrollY;\n      if (y > 200 && y > lastY) header.style.transform = 'translateY(-100%)';\n      else header.style.transform = '';\n      lastY = y;\n    }, { passive: true });\n  }\n\n  /* \u00C7erez tercihleri \u2014 Shopify Customer Privacy banner'\u0131n\u0131 yeniden a\u00E7 */\n  $$('[data-cookie-prefs]').forEach((btn) => {\n    on(btn, 'click', () => {\n      if (window.privacyBanner && typeof window.privacyBanner.showPreferences === 'function') {\n        window.privacyBanner.showPreferences();\n      }\n      // Banner API y\u00FCkl\u00FC de\u011Filse (banner kapal\u0131ysa) yap\u0131labilecek bir \u015Fey yok \u2014 sessiz ge\u00E7\n    });\n  });\n\n  /* ---------- Sosyal kan\u0131t rotator ---------- */\n  $$('[data-social-proof-rotator]').forEach((root) => {\n    const items = $$('.social-proof-rotator__item', root);\n    if (items.length < 2) return;\n    let idx = 0;\n    setInterval(() => {\n      items[idx].classList.remove('is-active');\n      idx = (idx + 1) % items.length;\n      items[idx].classList.add('is-active');\n    }, 4000);\n  });\n\n  /* ---------- Pazarlama popup ---------- */\n  const marketingPopup = $('[data-marketing-popup]');\n  if (marketingPopup) {\n    const key = marketingPopup.getAttribute('data-storage-key') || 'totul_marketing_popup';\n    const dismissKey = key + '_dismiss_until';\n    const delay = parseInt(marketingPopup.getAttribute('data-delay'), 10) || 4000;\n    const autoClose = parseInt(marketingPopup.getAttribute('data-auto-close'), 10) || 0;\n    const once = marketingPopup.getAttribute('data-show-once') !== 'false';\n    const dismissDays = parseInt(marketingPopup.getAttribute('data-dismiss-days'), 10) || 0;\n    let autoCloseTimer = null;\n\n    function isPopupBlocked() {\n      if (once && sessionStorage.getItem(key)) return true;\n      if (dismissDays > 0) {\n        const until = parseInt(localStorage.getItem(dismissKey) || '0', 10);\n        if (until && Date.now() < until) return true;\n      }\n      return false;\n    }\n\n    function hidePopup(fromUser) {\n      if (autoCloseTimer) {\n        clearTimeout(autoCloseTimer);\n        autoCloseTimer = null;\n      }\n      marketingPopup.hidden = true;\n      document.body.classList.remove('marketing-popup-open');\n      if (once) {\n        try { sessionStorage.setItem(key, '1'); } catch (e) { /* sessiz ge\u00E7 */ }\n      }\n      if (fromUser && dismissDays > 0) {\n        safeSetItem(dismissKey, String(Date.now() + dismissDays * 86400000));\n      }\n    }\n\n    const show = () => {\n      if (isPopupBlocked()) return;\n      marketingPopup.hidden = false;\n      document.body.classList.add('marketing-popup-open');\n      if (autoClose > 0) {\n        autoCloseTimer = setTimeout(function () { hidePopup(false); }, autoClose);\n      }\n    };\n    setTimeout(show, delay);\n    marketingPopup.querySelectorAll('[data-marketing-close]').forEach((btn) => {\n      on(btn, 'click', function () { hidePopup(true); });\n    });\n    on(document, 'keydown', (e) => {\n      if (e.key === 'Escape' && !marketingPopup.hidden) hidePopup(true);\n    });\n    const copyBtn = $('[data-marketing-copy]', marketingPopup);\n    const codeEl = $('[data-marketing-code]', marketingPopup);\n    if (copyBtn && codeEl) {\n      on(copyBtn, 'click', () => {\n        navigator.clipboard.writeText(codeEl.textContent.trim()).then(() => {\n          toast((window.theme && theme.strings.linkCopied) || 'Cod copiat');\n        });\n      });\n    }\n  }\n\n  /* ---------- Promo bar \u2014 Wildberries tarz\u0131 carousel ---------- */\n  function initPromoCarousel() {\n    $$('[data-promo-carousel]').forEach((root) => {\n      const panels = $$('[data-promo-slide]', root);\n      if (!panels.length) return;\n\n      panels.forEach((panel) => {\n        const heading = $('[data-promo-heading]', panel);\n        const wrap = heading && heading.parentElement;\n        if (heading && wrap && heading.scrollWidth > wrap.clientWidth + 4) {\n          heading.classList.add('is-marquee');\n          const dur = Math.max(6, Math.min(14, heading.textContent.trim().length * 0.35));\n          heading.style.setProperty('--promo-marquee-dur', dur + 's');\n        }\n      });\n\n      if (panels.length <= 1) return;\n\n      let idx = panels.findIndex((p) => p.classList.contains('is-active'));\n      if (idx < 0) idx = 0;\n      let timer;\n      const intervalMs = (parseFloat(root.getAttribute('data-interval')) || 6) * 1000;\n\n      function show(nextIdx) {\n        if (nextIdx === idx || !panels[nextIdx]) return;\n        const current = panels[idx];\n        const next = panels[nextIdx];\n        current.classList.add('is-leaving');\n        current.classList.remove('is-active');\n        next.hidden = false;\n        next.classList.add('is-active');\n        window.setTimeout(function () {\n          current.classList.remove('is-leaving');\n          current.hidden = true;\n        }, 450);\n        idx = nextIdx;\n      }\n\n      function go(delta) {\n        show((idx + delta + panels.length) % panels.length);\n        resetTimer();\n      }\n\n      function resetTimer() {\n        clearInterval(timer);\n        timer = setInterval(() => show((idx + 1) % panels.length), intervalMs);\n      }\n\n      const prevBtn = $('.promo-bar__nav--prev', root);\n      const nextBtn = $('.promo-bar__nav--next', root);\n      if (prevBtn) prevBtn.addEventListener('click', () => go(-1));\n      if (nextBtn) nextBtn.addEventListener('click', () => go(1));\n\n      root.addEventListener('mouseenter', () => clearInterval(timer));\n      root.addEventListener('mouseleave', resetTimer);\n\n      resetTimer();\n    });\n  }\n  initPromoCarousel();\n\n  /* ---------- B\u00FClten \u2014 toast bildirimi ---------- */\n  function initNewsletterForms() {\n    const successMsg = (theme.strings && theme.strings.newsletterSuccess) || 'Mul\u021Bumim! Abonarea ta a fost \u00EEnregistrat\u0103.';\n    const errorMsg = (theme.strings && theme.strings.newsletterError) || 'Abonarea nu a putut fi \u00EEnregistrat\u0103.';\n\n    $$('[data-newsletter-form]').forEach((form) => {\n      const flashOk = $('[data-newsletter-success]', form);\n      const flashErr = $('[data-newsletter-error]', form);\n      if (flashOk && flashOk.textContent.trim()) toast(flashOk.textContent.trim(), 'success');\n      if (flashErr && flashErr.textContent.trim()) toast(flashErr.textContent.trim(), 'error');\n\n      on(form, 'submit', async (e) => {\n        e.preventDefault();\n        if (isDesignMode) {\n          toast(successMsg, 'success');\n          return;\n        }\n        const btn = form.querySelector('[type=\"submit\"]');\n        const input = form.querySelector('input[name=\"contact[email]\"]');\n        if (!input || !input.value.trim()) return;\n        if (btn) btn.disabled = true;\n        try {\n          const body = new FormData(form);\n          if (!body.get('form_type')) body.set('form_type', 'customer');\n          const res = await fetch('/contact', {\n            method: 'POST',\n            body,\n            headers: { Accept: 'text/html' },\n            credentials: 'same-origin',\n          });\n          const html = await res.text();\n          const doc = new DOMParser().parseFromString(html, 'text/html');\n          const errEl = doc.querySelector('[data-newsletter-error], .form-message--error');\n          const errText = errEl && errEl.textContent.replace(/\\s+/g, ' ').trim();\n          if (errText) {\n            toast(errText, 'error');\n          } else {\n            const email = input.value.trim().toLowerCase();\n            toast(successMsg, 'success');\n            form.reset();\n            const apiBase = (theme.adminApi || 'https://totulonline-admin.totulonline-shop.workers.dev/api/public').replace(/\\/$/, '');\n            fetch(apiBase + '/newsletter-welcome', {\n              method: 'POST',\n              headers: { 'Content-Type': 'application/json' },\n              body: JSON.stringify({ email }),\n            }).catch(function () { /* toast yeterli; mail arka planda */ });\n          }\n        } catch (err) {\n          toast(errorMsg, 'error');\n        } finally {\n          if (btn) btn.disabled = false;\n        }\n      });\n    });\n  }\n  initNewsletterForms();\n\n  /* v2: Sepet toplu se\u00E7 */\n  on(document, 'change', (e) => {\n    const all = e.target.closest('[data-select-all]');\n    if (!all) return;\n    $$('[data-select-line]').forEach((cb) => { if (!cb.disabled) { cb.checked = all.checked; } });\n    document.dispatchEvent(new Event('cart:updated'));\n  });\n\n  /* ---------- Arama sayfas\u0131 \u2014 e\u015F anlaml\u0131 + kural geni\u015Fletme ---------- */\n  $$('form[action*=\"/search\"]').forEach((form) => {\n    if (!form.querySelector('input[name=\"type\"]')) {\n      const typeInput = document.createElement('input');\n      typeInput.type = 'hidden';\n      typeInput.name = 'type';\n      typeInput.value = 'product';\n      form.appendChild(typeInput);\n    }\n    on(form, 'submit', (e) => {\n      const input = form.querySelector('input[name=\"q\"]');\n      if (!input || !input.value.trim()) return;\n      const resolved = Search.resolveQuery(input.value.trim());\n      if (resolved.collectionHandle) {\n        e.preventDefault();\n        window.location.href = localePath('/collections/' + encodeURIComponent(resolved.collectionHandle));\n        return;\n      }\n      if (resolved.apiQ && resolved.apiQ !== input.value.trim()) input.value = resolved.apiQ;\n    });\n  });\n\n  /* Dil se\u00E7ici \u2014 locale ile birlikte \u00FClke/pazar (para birimi) */\n  function initLangSwitchCountrySync() {\n    if (isDesignMode) return;\n    $$('form.lang-switch, form.localization__form').forEach((form) => {\n      const countryInput = form.querySelector('[data-lang-switch-country]');\n      const select = form.querySelector('[data-lang-switch-select]');\n      if (!countryInput) return;\n      const applyCountryFromSelect = () => {\n        if (!select) return;\n        const opt = select.options[select.selectedIndex];\n        if (opt && opt.dataset.country) countryInput.value = opt.dataset.country;\n      };\n      const ensureReturnTo = (localeCode) => {\n        let rt = form.querySelector('input[name=\"return_to\"]');\n        if (!rt) {\n          rt = document.createElement('input');\n          rt.type = 'hidden';\n          rt.name = 'return_to';\n          form.appendChild(rt);\n        }\n        let loc = String(localeCode || theme.languageIso || 'ro').toLowerCase();\n        if (loc === 'en') loc = 'ro';\n        const pre = loc === 'ro' ? '' : '/' + loc;\n        rt.value = normalizeStorePath(location.pathname, pre) + location.search;\n      };\n      if (select) {\n        on(select, 'change', () => {\n          applyCountryFromSelect();\n          ensureReturnTo(select.value);\n          form.submit();\n        });\n      }\n      on(form, 'submit', (e) => {\n        const btn = e.submitter;\n        if (btn && btn.dataset.langSwitchCountry) {\n          countryInput.value = btn.dataset.langSwitchCountry;\n        } else {\n          applyCountryFromSelect();\n        }\n        const loc = (btn && btn.value) || (select && select.value) || theme.languageIso;\n        ensureReturnTo(loc);\n      });\n    });\n  }\n  initLangSwitchCountrySync();\n\n  /* \u0130ngilizce vitrin kapal\u0131 \u2014 RO'ya al */\n  (function leaveEnglishLocale() {\n    if (isDesignMode) return;\n    if (String(theme.languageIso || '').toLowerCase() !== 'en') return;\n    if (document.getElementById('LeaveEnglishLocale')) return;\n    const fd = new FormData();\n    fd.append('form_type', 'localization');\n    fd.append('utf8', '\u2713');\n    fd.append('_method', 'put');\n    fd.append('locale_code', 'ro');\n    fd.append('country_code', 'RO');\n    fd.append('return_to', normalizeStorePath(location.pathname, '') + location.search);\n    fetch('/localization', { method: 'POST', body: fd, credentials: 'same-origin', redirect: 'follow' })\n      .then(function () {\n        location.replace(normalizeStorePath(location.pathname, '') + location.search + location.hash);\n      })\n      .catch(function () { /* sessiz */ });\n  })();\n\n  /* /cs/, /pl/ \u2026 dil yolu ile \u00FClke/pazar (para birimi + stok) uyumu */\n  function syncMarketToLanguage() {\n    if (isDesignMode) return;\n    const lang = theme.languageIso;\n    const pref = theme.preferredCountry;\n    const cur = theme.country;\n    if (!lang || lang === 'en' || !pref || !cur || pref === cur) return;\n    const storageKey = 'totul_market_country_sync_v2';\n    const attemptKey = storageKey + '_n';\n    const token = lang + '>' + pref;\n    const attempts = parseInt(safeSessionGet(attemptKey) || '0', 10) || 0;\n    if (attempts >= 4) return;\n    const langRoots = new Set(['cs', 'pl', 'hu']);\n    const firstSeg = (location.pathname.split('/').filter(Boolean)[0] || '').toLowerCase();\n    const prefix = langRoots.has(firstSeg) ? '/' + firstSeg : '';\n    const fd = new FormData();\n    fd.append('form_type', 'localization');\n    fd.append('utf8', '\u2713');\n    fd.append('_method', 'put');\n    fd.append('locale_code', lang);\n    fd.append('country_code', pref);\n    fd.append('return_to', location.pathname + location.search);\n    fetch(prefix + '/localization', { method: 'POST', body: fd, credentials: 'same-origin', redirect: 'follow' })\n      .then(function () {\n        safeSessionSet(attemptKey, String(attempts + 1));\n        safeSessionSet(storageKey, token);\n        location.reload();\n      })\n      .catch(function () { /* sessiz */ });\n  }\n  syncMarketToLanguage();\n\n  /* PDP detay accordion \u2014 a\u00E7\u0131l\u0131nca sol galerinin z\u0131plamas\u0131n\u0131 \u00F6nle */\n  $$('.product__details-card details').forEach((el) => {\n    on(el, 'toggle', () => {\n      const y = window.scrollY;\n      requestAnimationFrame(() => {\n        requestAnimationFrame(() => window.scrollTo(0, y));\n      });\n    });\n  });\n})();\n"],
  "mappings": "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",
  "names": ["n", "header"]
}
