@gengage/assistant-fe 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- import { b as fe, c as Ae, a as Pe, A as Be, r as Me, o as L, s as x, f as B, C as ae, d as oe, u as re, v as Y, e as $, _ as be, B as ze, D as De, j as O, t as Re, i as Ue, E as He, F as Fe, g as Oe, m as qe, G as je, H as Ve, I as Ge, y as $e, x as Ke, n as We, J as Ye, K as Qe, L as ge, h as Xe, M as Je, N as Ze, l as et, O as tt, P as at, Q as nt, R as it, S as ot, T as rt } from "./schemas-CPkzbgia.js";
2
- import { s as Z, i as K, c as se, d as D, a as Q, f as F, e as G, r as xe, g as ve, b as we } from "./quantity-stepper-B8kX8GbN.js";
1
+ import { b as be, c as Pe, a as Be, A as Me, r as ze, o as N, s as b, f as B, C as ae, d as oe, u as re, v as Y, e as G, _ as xe, B as De, D as Re, j as O, t as Ue, i as He, E as Fe, F as Oe, g as qe, G as je, H as Ve, I as ge, m as $e, J as Ge, y as Ke, x as We, n as Ye, K as Qe, L as de, h as Xe, M as Je, N as Ze, l as et, O as tt, P as at, Q as nt, R as it, S as ot, T as rt } from "./schemas-B9GN-J3e.js";
2
+ import { s as Z, i as K, c as se, d as D, a as Q, f as F, e as $, r as ve, g as we, b as ye } from "./quantity-stepper-B8kX8GbN.js";
3
3
  function st() {
4
4
  const o = Date.now(), e = new Uint8Array(16);
5
5
  crypto.getRandomValues(e), e[0] = o / 2 ** 40 & 255, e[1] = o / 2 ** 32 & 255, e[2] = o / 2 ** 24 & 255, e[3] = o / 2 ** 16 & 255, e[4] = o / 2 ** 8 & 255, e[5] = o & 255, e[6] = e[6] & 15 | 112, e[8] = e[8] & 63 | 128;
@@ -205,16 +205,16 @@ function wt(o) {
205
205
  return e !== "inputText" && e !== "user_message" && (n.action_type = e, t !== void 0 && (n.action_payload = typeof t == "string" ? { text: t } : t)), JSON.stringify(n);
206
206
  }
207
207
  function yt(o, e, t) {
208
- const a = fe("process_action", t), n = new AbortController();
208
+ const a = be("process_action", t), n = new AbortController();
209
209
  return (async () => {
210
210
  try {
211
211
  const r = t.backendType === "acap" ? wt(o) : vt(o), s = t.attachment !== void 0;
212
212
  let l;
213
213
  if (s) {
214
- const m = new FormData();
215
- m.append("request", r), t.attachment !== void 0 && m.append("attachment", t.attachment), l = {
214
+ const h = new FormData();
215
+ h.append("request", r), t.attachment !== void 0 && h.append("attachment", t.attachment), l = {
216
216
  method: "POST",
217
- body: m,
217
+ body: h,
218
218
  signal: n.signal
219
219
  };
220
220
  } else
@@ -226,22 +226,22 @@ function yt(o, e, t) {
226
226
  };
227
227
  const g = await fetch(a, l);
228
228
  if (!g.ok) {
229
- let m = g.statusText;
229
+ let h = g.statusText;
230
230
  try {
231
231
  const d = await g.json(), v = d.detail ?? d.message ?? d.error;
232
- typeof v == "string" && (m = v);
232
+ typeof v == "string" && (h = v);
233
233
  } catch {
234
234
  }
235
- e.onError(new Error(`HTTP ${g.status}: ${m}`));
235
+ e.onError(new Error(`HTTP ${g.status}: ${h}`));
236
236
  return;
237
237
  }
238
238
  let c = !1;
239
- const h = () => {
239
+ const p = () => {
240
240
  c || (c = !0, e.onDone());
241
241
  };
242
- await Ae(g, {
243
- onEvent: (m) => {
244
- const d = Pe(m);
242
+ await Pe(g, {
243
+ onEvent: (h) => {
244
+ const d = Be(h);
245
245
  if (d)
246
246
  switch (d.type) {
247
247
  case "text_chunk":
@@ -264,13 +264,13 @@ function yt(o, e, t) {
264
264
  e.onError(new Error(d.message));
265
265
  break;
266
266
  case "done":
267
- h();
267
+ p();
268
268
  break;
269
269
  }
270
270
  },
271
271
  onError: e.onError,
272
272
  signal: n.signal
273
- }), h();
273
+ }), p();
274
274
  } catch (r) {
275
275
  if (r instanceof DOMException && r.name === "AbortError") return;
276
276
  e.onError(r instanceof Error ? r : new Error(String(r)));
@@ -278,7 +278,7 @@ function yt(o, e, t) {
278
278
  })(), n;
279
279
  }
280
280
  async function _t(o, e) {
281
- const t = fe("proactive_action", e);
281
+ const t = be("proactive_action", e);
282
282
  try {
283
283
  const a = await fetch(t, {
284
284
  method: "POST",
@@ -412,9 +412,9 @@ function Et(o) {
412
412
  return Ct(o) === "en" ? kt : ce;
413
413
  }
414
414
  function St() {
415
- return ye() !== null;
415
+ return _e() !== null;
416
416
  }
417
- function ye() {
417
+ function _e() {
418
418
  const o = globalThis;
419
419
  return o.SpeechRecognition ?? o.webkitSpeechRecognition ?? null;
420
420
  }
@@ -430,7 +430,7 @@ class Tt {
430
430
  */
431
431
  start() {
432
432
  if (this._state === "listening") return;
433
- const e = ye();
433
+ const e = _e();
434
434
  if (!e) {
435
435
  this.setState("error"), this.callbacks.onError?.("not-supported", "Web Speech API is not supported in this browser.");
436
436
  return;
@@ -581,7 +581,7 @@ class At {
581
581
  this._el.style.display = "none";
582
582
  }
583
583
  }
584
- const de = {
584
+ const pe = {
585
585
  search: '<svg viewBox="0 0 16 16" class="gengage-chat-icon"><circle cx="6.5" cy="6.5" r="5" fill="none" stroke="currentColor" stroke-width="1.5"/><line x1="10" y1="10" x2="15" y2="15" stroke="currentColor" stroke-width="1.5"/></svg>',
586
586
  review: '<svg viewBox="0 0 16 16" class="gengage-chat-icon"><polygon points="8,1 10,6 15,6 11,9 12.5,14 8,11 3.5,14 5,9 1,6 6,6" fill="none" stroke="currentColor" stroke-width="1.5"/></svg>',
587
587
  info: '<svg viewBox="0 0 16 16" class="gengage-chat-icon"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.5"/><line x1="8" y1="7" x2="8" y2="12" stroke="currentColor" stroke-width="1.5"/><circle cx="8" cy="4.5" r="0.8" fill="currentColor"/></svg>',
@@ -620,15 +620,15 @@ class Bt {
620
620
  }
621
621
  const c = document.createElement("button");
622
622
  c.className = "gengage-chat-close", c.type = "button", c.setAttribute("aria-label", this.i18n.closeButton), c.innerHTML = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>', c.addEventListener("click", t.onClose), g.appendChild(c), a.appendChild(g);
623
- const h = document.createElement("div");
624
- h.className = "gengage-chat-body", this._panelEl = document.createElement("div"), this._panelEl.className = "gengage-chat-panel", this._panelTopBar = new Nt({
623
+ const p = document.createElement("div");
624
+ p.className = "gengage-chat-body", this._panelEl = document.createElement("div"), this._panelEl.className = "gengage-chat-panel", this._panelTopBar = new Nt({
625
625
  onBack: () => t.onPanelBack?.(),
626
626
  onForward: () => t.onPanelForward?.()
627
- }), this._panelEl.appendChild(this._panelTopBar.getElement()), h.appendChild(this._panelEl), this._dividerEl = document.createElement("div"), this._dividerEl.className = "gengage-chat-panel-divider gengage-chat-panel-divider--hidden", this._dividerEl.setAttribute("role", "separator"), this._dividerEl.setAttribute("aria-label", "Toggle panel");
628
- const m = document.createElement("button");
629
- m.className = "gengage-chat-panel-divider-toggle", m.type = "button", m.setAttribute("aria-label", "Toggle panel"), m.textContent = "»", m.addEventListener("click", () => {
627
+ }), this._panelEl.appendChild(this._panelTopBar.getElement()), p.appendChild(this._panelEl), this._dividerEl = document.createElement("div"), this._dividerEl.className = "gengage-chat-panel-divider gengage-chat-panel-divider--hidden", this._dividerEl.setAttribute("role", "separator"), this._dividerEl.setAttribute("aria-label", "Toggle panel");
628
+ const h = document.createElement("button");
629
+ h.className = "gengage-chat-panel-divider-toggle", h.type = "button", h.setAttribute("aria-label", "Toggle panel"), h.textContent = "»", h.addEventListener("click", () => {
630
630
  this.togglePanel(), this._onPanelToggle?.();
631
- }), this._dividerEl.appendChild(m), h.appendChild(this._dividerEl);
631
+ }), this._dividerEl.appendChild(h), p.appendChild(this._dividerEl);
632
632
  const d = document.createElement("div");
633
633
  d.className = "gengage-chat-conversation", d.appendChild(a), this._kvkkSlot = document.createElement("div"), this._kvkkSlot.className = "gengage-chat-kvkk-slot", d.appendChild(this._kvkkSlot), this.messagesEl = document.createElement("div"), this.messagesEl.className = "gengage-chat-messages", this.messagesEl.setAttribute("role", "log"), this.messagesEl.setAttribute("aria-live", "polite"), this.messagesEl.setAttribute("aria-label", "Chat messages");
634
634
  let v = !1;
@@ -637,62 +637,62 @@ class Bt {
637
637
  () => {
638
638
  v || (v = !0, requestAnimationFrame(() => {
639
639
  v = !1;
640
- const { scrollTop: u, scrollHeight: f, clientHeight: C } = this.messagesEl;
641
- this._userScrolledUp = f - u - C > 10;
640
+ const { scrollTop: u, scrollHeight: w, clientHeight: k } = this.messagesEl;
641
+ this._userScrolledUp = w - u - k > 10;
642
642
  }));
643
643
  },
644
644
  { passive: !0 }
645
645
  ), d.appendChild(this.messagesEl), this._thumbnailsColumn = new At({
646
646
  onThumbnailClick: (u) => t.onThumbnailClick?.(u)
647
647
  }), this._panelEl.appendChild(this._thumbnailsColumn.getElement()), this._pillsEl = document.createElement("div"), this._pillsEl.className = "gengage-chat-pills", this._pillsEl.setAttribute("role", "toolbar"), this._pillsEl.setAttribute("aria-label", "Suggestions"), this._pillsEl.style.display = "none";
648
- const w = document.createElement("div");
649
- w.className = "gengage-chat-pills-scroll", this._pillsEl.appendChild(w);
650
- const b = document.createElement("button");
651
- b.className = "gengage-chat-pills-arrow", b.type = "button", b.setAttribute("aria-label", "More suggestions"), b.textContent = "›", b.addEventListener("click", () => {
652
- w.scrollBy({ left: 150, behavior: "smooth" });
653
- }), this._pillsEl.appendChild(b);
654
- let N = !1;
655
- w.addEventListener(
648
+ const _ = document.createElement("div");
649
+ _.className = "gengage-chat-pills-scroll", this._pillsEl.appendChild(_);
650
+ const x = document.createElement("button");
651
+ x.className = "gengage-chat-pills-arrow", x.type = "button", x.setAttribute("aria-label", "More suggestions"), x.textContent = "›", x.addEventListener("click", () => {
652
+ _.scrollBy({ left: 150, behavior: "smooth" });
653
+ }), this._pillsEl.appendChild(x);
654
+ let L = !1;
655
+ _.addEventListener(
656
656
  "scroll",
657
657
  () => {
658
- N || (N = !0, requestAnimationFrame(() => {
659
- N = !1;
660
- const u = w.scrollLeft + w.clientWidth >= w.scrollWidth - 4;
661
- b.style.display = u ? "none" : "";
658
+ L || (L = !0, requestAnimationFrame(() => {
659
+ L = !1;
660
+ const u = _.scrollLeft + _.clientWidth >= _.scrollWidth - 4;
661
+ x.style.display = u ? "none" : "";
662
662
  }));
663
663
  },
664
664
  { passive: !0 }
665
665
  ), d.appendChild(this._pillsEl), this._inputChipsEl = document.createElement("div"), this._inputChipsEl.className = "gengage-chat-input-chips", this._inputChipsEl.style.display = "none", d.appendChild(this._inputChipsEl);
666
- const I = document.createElement("div");
667
- I.className = "gengage-chat-input-area", this.inputEl = document.createElement("textarea"), this.inputEl.className = "gengage-chat-input", this.inputEl.rows = 1, this.inputEl.placeholder = this.i18n.inputPlaceholder, this.inputEl.addEventListener("input", () => {
666
+ const T = document.createElement("div");
667
+ T.className = "gengage-chat-input-area", this.inputEl = document.createElement("textarea"), this.inputEl.className = "gengage-chat-input", this.inputEl.rows = 1, this.inputEl.placeholder = this.i18n.inputPlaceholder, this.inputEl.addEventListener("input", () => {
668
668
  requestAnimationFrame(() => {
669
669
  this.inputEl.style.height = "auto", this.inputEl.style.height = `${Math.min(this.inputEl.scrollHeight, 120)}px`;
670
670
  });
671
671
  }), this.inputEl.addEventListener("keydown", (u) => {
672
672
  u.key === "Enter" && (window.innerWidth < 768 || !u.shiftKey) && (u.preventDefault(), this._submit());
673
673
  }), this.inputEl.addEventListener("paste", (u) => {
674
- const f = u.clipboardData?.files[0];
675
- f && f.type.startsWith("image/") && (u.preventDefault(), this._onAttachment ? this._onAttachment(f) : this.stageAttachment(f));
674
+ const w = u.clipboardData?.files[0];
675
+ w && w.type.startsWith("image/") && (u.preventDefault(), this._onAttachment ? this._onAttachment(w) : this.stageAttachment(w));
676
676
  }), this._fileInput = document.createElement("input"), this._fileInput.type = "file", this._fileInput.accept = "image/jpeg,image/png,image/webp", this._fileInput.style.display = "none", this._fileInput.addEventListener("change", () => {
677
677
  const u = this._fileInput.files?.[0];
678
678
  u && (this._onAttachment ? this._onAttachment(u) : this.stageAttachment(u)), this._fileInput.value = "";
679
679
  });
680
- const p = document.createElement("button");
681
- p.className = "gengage-chat-attach-btn", p.type = "button", p.setAttribute("aria-label", this.i18n.attachImageButton), p.innerHTML = '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg>', p.addEventListener("click", () => this._fileInput.click()), this._previewStrip = document.createElement("div"), this._previewStrip.className = "gengage-chat-attachment-preview gengage-chat-attachment-preview--hidden";
682
- const y = document.createElement("img");
683
- y.className = "gengage-chat-attachment-preview-thumb", y.alt = "", this._previewName = document.createElement("span"), this._previewName.className = "gengage-chat-attachment-name";
684
- const _ = document.createElement("button");
685
- _.className = "gengage-chat-attachment-remove", _.type = "button", _.setAttribute("aria-label", this.i18n.removeAttachmentButton), _.textContent = "×", _.addEventListener("click", () => this.clearAttachment()), this._previewStrip.appendChild(y), this._previewStrip.appendChild(this._previewName), this._previewStrip.appendChild(_), this.sendBtn = document.createElement("button"), this.sendBtn.className = "gengage-chat-send", this.sendBtn.type = "button", this.sendBtn.setAttribute("aria-label", this.i18n.sendButton), this.sendBtn.innerHTML = '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"/></svg>', this.sendBtn.addEventListener("click", () => this._submit()), I.addEventListener("dragover", (u) => {
686
- u.preventDefault(), I.classList.add("gengage-chat-input-area--dragover");
687
- }), I.addEventListener("dragleave", () => {
688
- I.classList.remove("gengage-chat-input-area--dragover");
689
- }), I.addEventListener("drop", (u) => {
690
- u.preventDefault(), I.classList.remove("gengage-chat-input-area--dragover");
691
- const f = u.dataTransfer?.files[0];
692
- f && (this._onAttachment ? this._onAttachment(f) : this.stageAttachment(f));
680
+ const m = document.createElement("button");
681
+ m.className = "gengage-chat-attach-btn", m.type = "button", m.setAttribute("aria-label", this.i18n.attachImageButton), m.innerHTML = '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg>', m.addEventListener("click", () => this._fileInput.click()), this._previewStrip = document.createElement("div"), this._previewStrip.className = "gengage-chat-attachment-preview gengage-chat-attachment-preview--hidden";
682
+ const f = document.createElement("img");
683
+ f.className = "gengage-chat-attachment-preview-thumb", f.alt = "", this._previewName = document.createElement("span"), this._previewName.className = "gengage-chat-attachment-name";
684
+ const y = document.createElement("button");
685
+ y.className = "gengage-chat-attachment-remove", y.type = "button", y.setAttribute("aria-label", this.i18n.removeAttachmentButton), y.textContent = "×", y.addEventListener("click", () => this.clearAttachment()), this._previewStrip.appendChild(f), this._previewStrip.appendChild(this._previewName), this._previewStrip.appendChild(y), this.sendBtn = document.createElement("button"), this.sendBtn.className = "gengage-chat-send", this.sendBtn.type = "button", this.sendBtn.setAttribute("aria-label", this.i18n.sendButton), this.sendBtn.innerHTML = '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"/></svg>', this.sendBtn.addEventListener("click", () => this._submit()), T.addEventListener("dragover", (u) => {
686
+ u.preventDefault(), T.classList.add("gengage-chat-input-area--dragover");
687
+ }), T.addEventListener("dragleave", () => {
688
+ T.classList.remove("gengage-chat-input-area--dragover");
689
+ }), T.addEventListener("drop", (u) => {
690
+ u.preventDefault(), T.classList.remove("gengage-chat-input-area--dragover");
691
+ const w = u.dataTransfer?.files[0];
692
+ w && (this._onAttachment ? this._onAttachment(w) : this.stageAttachment(w));
693
693
  });
694
- const k = document.createElement("div");
695
- k.className = "gengage-chat-input-pill", k.appendChild(p), k.appendChild(this.inputEl), this._voiceEnabled && St() && (this._micBtn = document.createElement("button"), this._micBtn.className = "gengage-chat-mic-btn", this._micBtn.type = "button", this._micBtn.setAttribute("aria-label", this.i18n.voiceButton), this._micBtn.innerHTML = '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" y1="19" x2="12" y2="23"/><line x1="8" y1="23" x2="16" y2="23"/></svg>', this._micBtn.addEventListener("click", () => this._toggleVoice()), k.appendChild(this._micBtn), this._voiceInput = new Tt(
694
+ const C = document.createElement("div");
695
+ C.className = "gengage-chat-input-pill", C.appendChild(m), C.appendChild(this.inputEl), this._voiceEnabled && St() && (this._micBtn = document.createElement("button"), this._micBtn.className = "gengage-chat-mic-btn", this._micBtn.type = "button", this._micBtn.setAttribute("aria-label", this.i18n.voiceButton), this._micBtn.innerHTML = '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" y1="19" x2="12" y2="23"/><line x1="8" y1="23" x2="16" y2="23"/></svg>', this._micBtn.addEventListener("click", () => this._toggleVoice()), C.appendChild(this._micBtn), this._voiceInput = new Tt(
696
696
  {
697
697
  onInterim: (u) => {
698
698
  this.inputEl.value = u, this.inputEl.style.height = "auto", this.inputEl.style.height = `${Math.min(this.inputEl.scrollHeight, 120)}px`;
@@ -706,12 +706,12 @@ class Bt {
706
706
  onStateChange: (u) => {
707
707
  u === "listening" ? this._micBtn?.classList.add("gengage-chat-mic-btn--active") : this._micBtn?.classList.remove("gengage-chat-mic-btn--active");
708
708
  },
709
- onError: (u, f) => {
709
+ onError: (u, w) => {
710
710
  this._micBtn?.classList.remove("gengage-chat-mic-btn--active");
711
711
  }
712
712
  },
713
713
  { lang: this._voiceLang }
714
- )), k.appendChild(this.sendBtn), I.appendChild(this._previewStrip), I.appendChild(this._fileInput), I.appendChild(k), d.appendChild(I), h.appendChild(d), this.root.appendChild(h);
714
+ )), C.appendChild(this.sendBtn), T.appendChild(this._previewStrip), T.appendChild(this._fileInput), T.appendChild(C), d.appendChild(T), p.appendChild(d), this.root.appendChild(p);
715
715
  const A = document.createElement("div");
716
716
  A.className = "gengage-chat-footer", A.textContent = this.i18n.poweredBy, this.root.appendChild(A), this.root.addEventListener("keydown", (u) => {
717
717
  u.key === "Escape" && t.onClose();
@@ -802,7 +802,7 @@ class Bt {
802
802
  for (const n of e) {
803
803
  const i = document.createElement("button");
804
804
  if (i.className = n.image ? "gengage-chat-pill gengage-chat-pill--rich" : "gengage-chat-pill", i.type = "button", n.icon) {
805
- const s = de[n.icon];
805
+ const s = pe[n.icon];
806
806
  if (s) {
807
807
  const l = document.createElement("span");
808
808
  l.className = "gengage-chat-pill-icon", l.innerHTML = s, i.appendChild(l);
@@ -1063,7 +1063,7 @@ class Bt {
1063
1063
  for (const t of e) {
1064
1064
  const a = document.createElement("button");
1065
1065
  if (a.className = "gengage-chat-input-chip", a.type = "button", t.icon) {
1066
- const i = de[t.icon];
1066
+ const i = pe[t.icon];
1067
1067
  if (i) {
1068
1068
  const r = document.createElement("span");
1069
1069
  r.className = "gengage-chat-input-chip-icon", r.innerHTML = i, a.appendChild(r);
@@ -1211,7 +1211,7 @@ function Ht(o, e = "audio/ogg") {
1211
1211
  class Ft {
1212
1212
  constructor(e) {
1213
1213
  this._timer = null, this._destroyed = !1, this._abortController = null, this._sessionStart = Date.now(), this._lastActivity = Date.now(), this._searchesCount = 0, this._actionsCount = 0, this._triggerFireCounts = {}, this._options = e;
1214
- const t = Be(e.middlewareUrl);
1214
+ const t = Me(e.middlewareUrl);
1215
1215
  this._endpoint = `${t}/v2/heartbeat`;
1216
1216
  }
1217
1217
  start() {
@@ -1314,106 +1314,106 @@ function jt(o) {
1314
1314
  if (g.className = "gengage-chat-comparison-heading", g.textContent = s?.comparisonHeading ?? "KARŞILAŞTIRMA SONUÇLARI", l.appendChild(g), e) {
1315
1315
  const c = document.createElement("div");
1316
1316
  c.className = "gengage-chat-comparison-recommended";
1317
+ const p = document.createElement("div");
1318
+ p.className = "gengage-chat-comparison-recommended-label", p.textContent = s?.recommendedChoiceLabel ?? "Önerilen Seçim", c.appendChild(p);
1317
1319
  const h = document.createElement("div");
1318
- h.className = "gengage-chat-comparison-recommended-label", h.textContent = s?.recommendedChoiceLabel ?? "Önerilen Seçim", c.appendChild(h);
1319
- const m = document.createElement("div");
1320
- if (m.className = "gengage-chat-comparison-recommended-body", e.imageUrl && K(e.imageUrl)) {
1321
- const b = document.createElement("img");
1322
- b.src = e.imageUrl, b.alt = e.name, b.loading = "lazy", b.addEventListener(
1320
+ if (h.className = "gengage-chat-comparison-recommended-body", e.imageUrl && K(e.imageUrl)) {
1321
+ const x = document.createElement("img");
1322
+ x.src = e.imageUrl, x.alt = e.name, x.loading = "lazy", x.addEventListener(
1323
1323
  "error",
1324
1324
  () => {
1325
- b.style.display = "none";
1325
+ x.style.display = "none";
1326
1326
  },
1327
1327
  { once: !0 }
1328
- ), m.appendChild(b);
1328
+ ), h.appendChild(x);
1329
1329
  }
1330
1330
  const d = document.createElement("div");
1331
1331
  d.className = "gengage-chat-comparison-recommended-info";
1332
1332
  const v = document.createElement("div");
1333
1333
  v.className = "gengage-chat-comparison-recommended-title", v.textContent = e.name, d.appendChild(v);
1334
- const w = document.createElement("div");
1335
- if (w.className = "gengage-chat-comparison-recommended-price", w.textContent = e.price, d.appendChild(w), m.appendChild(d), m.addEventListener("click", () => {
1334
+ const _ = document.createElement("div");
1335
+ if (_.className = "gengage-chat-comparison-recommended-price", _.textContent = e.price, d.appendChild(_), h.appendChild(d), h.addEventListener("click", () => {
1336
1336
  r(e.sku);
1337
- }), m.style.cursor = "pointer", c.appendChild(m), n.length > 0) {
1338
- const b = document.createElement("div");
1339
- b.className = "gengage-chat-comparison-highlights";
1340
- const N = document.createElement("div");
1341
- N.className = "gengage-chat-comparison-highlights-label", N.textContent = s?.highlightsLabel ?? "Öne Çıkan Özellikler", b.appendChild(N);
1342
- const I = document.createElement("ul");
1343
- for (const p of n) {
1344
- const y = document.createElement("li");
1345
- y.textContent = p, I.appendChild(y);
1337
+ }), h.style.cursor = "pointer", c.appendChild(h), n.length > 0) {
1338
+ const x = document.createElement("div");
1339
+ x.className = "gengage-chat-comparison-highlights";
1340
+ const L = document.createElement("div");
1341
+ L.className = "gengage-chat-comparison-highlights-label", L.textContent = s?.highlightsLabel ?? "Öne Çıkan Özellikler", x.appendChild(L);
1342
+ const T = document.createElement("ul");
1343
+ for (const m of n) {
1344
+ const f = document.createElement("li");
1345
+ f.textContent = m, T.appendChild(f);
1346
1346
  }
1347
- b.appendChild(I), c.appendChild(b);
1347
+ x.appendChild(T), c.appendChild(x);
1348
1348
  }
1349
1349
  if (o.recommendedText) {
1350
- const b = document.createElement("div");
1351
- b.className = "gengage-chat-comparison-recommended-text", b.textContent = o.recommendedText, c.appendChild(b);
1350
+ const x = document.createElement("div");
1351
+ x.className = "gengage-chat-comparison-recommended-text", x.textContent = o.recommendedText, c.appendChild(x);
1352
1352
  }
1353
1353
  l.appendChild(c);
1354
1354
  }
1355
1355
  if (o.keyDifferencesHtml) {
1356
1356
  const c = document.createElement("div");
1357
1357
  c.className = "gengage-chat-comparison-key-differences";
1358
- const h = document.createElement("h4");
1359
- h.textContent = s?.keyDifferencesLabel ?? "Temel Farklar", c.appendChild(h);
1360
- const m = document.createElement("div");
1361
- m.className = "gengage-chat-comparison-key-differences-content", m.innerHTML = Z(Vt(o.keyDifferencesHtml)), c.appendChild(m), l.appendChild(c);
1358
+ const p = document.createElement("h4");
1359
+ p.textContent = s?.keyDifferencesLabel ?? "Temel Farklar", c.appendChild(p);
1360
+ const h = document.createElement("div");
1361
+ h.className = "gengage-chat-comparison-key-differences-content", h.innerHTML = Z(Vt(o.keyDifferencesHtml)), c.appendChild(h), l.appendChild(c);
1362
1362
  }
1363
1363
  if (i && i.length > 0) {
1364
1364
  const c = document.createElement("details");
1365
1365
  c.className = "gengage-chat-comparison-special";
1366
- const h = document.createElement("summary");
1367
- h.textContent = s?.specialCasesLabel ?? "Özel Durumlar İçin", c.appendChild(h);
1368
- const m = document.createElement("ul");
1366
+ const p = document.createElement("summary");
1367
+ p.textContent = s?.specialCasesLabel ?? "Özel Durumlar İçin", c.appendChild(p);
1368
+ const h = document.createElement("ul");
1369
1369
  for (const d of i) {
1370
1370
  const v = document.createElement("li");
1371
- v.textContent = d, m.appendChild(v);
1371
+ v.textContent = d, h.appendChild(v);
1372
1372
  }
1373
- c.appendChild(m), l.appendChild(c);
1373
+ c.appendChild(h), l.appendChild(c);
1374
1374
  }
1375
1375
  if (t.length > 0 && a.length > 0) {
1376
1376
  const c = document.createElement("table");
1377
1377
  c.className = "gengage-chat-comparison-table";
1378
- const h = document.createElement("thead"), m = document.createElement("tr"), d = document.createElement("th");
1379
- m.appendChild(d);
1380
- for (const w of t) {
1381
- const b = document.createElement("th");
1382
- if (w.sku === e?.sku && (b.className = "gengage-chat-comparison-selected"), w.imageUrl && K(w.imageUrl)) {
1383
- const p = document.createElement("img");
1384
- p.src = w.imageUrl, p.alt = w.name, p.loading = "lazy", p.addEventListener(
1378
+ const p = document.createElement("thead"), h = document.createElement("tr"), d = document.createElement("th");
1379
+ h.appendChild(d);
1380
+ for (const _ of t) {
1381
+ const x = document.createElement("th");
1382
+ if (_.sku === e?.sku && (x.className = "gengage-chat-comparison-selected"), _.imageUrl && K(_.imageUrl)) {
1383
+ const m = document.createElement("img");
1384
+ m.src = _.imageUrl, m.alt = _.name, m.loading = "lazy", m.addEventListener(
1385
1385
  "error",
1386
1386
  () => {
1387
- p.style.display = "none";
1387
+ m.style.display = "none";
1388
1388
  },
1389
1389
  { once: !0 }
1390
- ), b.appendChild(p);
1390
+ ), x.appendChild(m);
1391
1391
  }
1392
- const N = document.createElement("div");
1393
- N.textContent = w.name, b.appendChild(N);
1394
- const I = document.createElement("div");
1395
- I.className = "gengage-chat-comparison-table-price", I.textContent = w.price, b.appendChild(I), m.appendChild(b);
1392
+ const L = document.createElement("div");
1393
+ L.textContent = _.name, x.appendChild(L);
1394
+ const T = document.createElement("div");
1395
+ T.className = "gengage-chat-comparison-table-price", T.textContent = _.price, x.appendChild(T), h.appendChild(x);
1396
1396
  }
1397
- h.appendChild(m), c.appendChild(h);
1397
+ p.appendChild(h), c.appendChild(p);
1398
1398
  const v = document.createElement("tbody");
1399
- for (const w of a) {
1400
- const b = document.createElement("tr"), N = document.createElement("td");
1401
- N.className = "gengage-chat-comparison-label", N.textContent = qt(w.label), b.appendChild(N);
1402
- for (let I = 0; I < w.values.length; I++) {
1403
- const p = document.createElement("td");
1404
- t[I]?.sku === e?.sku && (p.className = "gengage-chat-comparison-selected"), p.textContent = w.values[I] ?? "", b.appendChild(p);
1399
+ for (const _ of a) {
1400
+ const x = document.createElement("tr"), L = document.createElement("td");
1401
+ L.className = "gengage-chat-comparison-label", L.textContent = qt(_.label), x.appendChild(L);
1402
+ for (let T = 0; T < _.values.length; T++) {
1403
+ const m = document.createElement("td");
1404
+ t[T]?.sku === e?.sku && (m.className = "gengage-chat-comparison-selected"), m.textContent = _.values[T] ?? "", x.appendChild(m);
1405
1405
  }
1406
- v.appendChild(b);
1406
+ v.appendChild(x);
1407
1407
  }
1408
1408
  c.appendChild(v), l.appendChild(c);
1409
1409
  }
1410
1410
  if (o.productActions) {
1411
1411
  const c = document.createElement("div");
1412
1412
  c.className = "gengage-chat-comparison-product-actions";
1413
- for (const h of t)
1414
- if (o.productActions[h.sku]) {
1413
+ for (const p of t)
1414
+ if (o.productActions[p.sku]) {
1415
1415
  const d = document.createElement("button");
1416
- d.className = "gengage-chat-comparison-view-btn", d.type = "button", d.textContent = h.name, d.addEventListener("click", () => r(h.sku)), c.appendChild(d);
1416
+ d.className = "gengage-chat-comparison-view-btn", d.type = "button", d.textContent = p.name, d.addEventListener("click", () => r(p.sku)), c.appendChild(d);
1417
1417
  }
1418
1418
  c.childElementCount > 0 && l.appendChild(c);
1419
1419
  }
@@ -1424,19 +1424,19 @@ function Vt(o) {
1424
1424
  `).filter((t) => t.trim());
1425
1425
  return e.length <= 1 ? o : "<ul>" + e.map((t) => `<li>${t.trim()}</li>`).join("") + "</ul>";
1426
1426
  }
1427
- function Gt(o, e) {
1427
+ function $t(o, e) {
1428
1428
  const t = document.createElement("div");
1429
1429
  t.className = "gengage-chat-review-highlights";
1430
1430
  const a = o.props?.reviews;
1431
1431
  if (!Array.isArray(a) || a.length === 0) {
1432
- const m = document.createElement("div");
1433
- return m.className = "gengage-chat-review-empty", m.textContent = e?.emptyReviewsMessage ?? "Yorum özeti bulunamadı.", t.appendChild(m), t;
1432
+ const h = document.createElement("div");
1433
+ return h.className = "gengage-chat-review-empty", h.textContent = e?.emptyReviewsMessage ?? "Yorum özeti bulunamadı.", t.appendChild(h), t;
1434
1434
  }
1435
1435
  const n = a.filter(
1436
- (m) => m !== null && typeof m == "object"
1436
+ (h) => h !== null && typeof h == "object"
1437
1437
  ), i = { all: n.length, positive: 0, negative: 0, neutral: 0 };
1438
- for (const m of n)
1439
- m.review_class === "positive" ? i.positive++ : m.review_class === "negative" ? i.negative++ : i.neutral++;
1438
+ for (const h of n)
1439
+ h.review_class === "positive" ? i.positive++ : h.review_class === "negative" ? i.negative++ : i.neutral++;
1440
1440
  const r = document.createElement("div");
1441
1441
  r.className = "gengage-chat-review-tabs";
1442
1442
  const s = [{ label: `Tümü (${i.all})`, filter: "all" }];
@@ -1446,69 +1446,69 @@ function Gt(o, e) {
1446
1446
  g.className = "gengage-chat-review-items";
1447
1447
  function c() {
1448
1448
  for (; g.firstChild; ) g.removeChild(g.firstChild);
1449
- const m = l === "all" ? n : n.filter((d) => d.review_class === l);
1450
- for (const d of m) {
1449
+ const h = l === "all" ? n : n.filter((d) => d.review_class === l);
1450
+ for (const d of h) {
1451
1451
  const v = document.createElement("article");
1452
1452
  v.className = "gengage-chat-review-item";
1453
- const w = d.review_class;
1454
- if ((w === "positive" || w === "negative" || w === "neutral") && (v.dataset.tone = w), typeof d.review_tag == "string" && d.review_tag.length > 0) {
1455
- const b = document.createElement("div");
1456
- b.className = "gengage-chat-review-tag", b.textContent = d.review_tag, v.appendChild(b);
1453
+ const _ = d.review_class;
1454
+ if ((_ === "positive" || _ === "negative" || _ === "neutral") && (v.dataset.tone = _), typeof d.review_tag == "string" && d.review_tag.length > 0) {
1455
+ const x = document.createElement("div");
1456
+ x.className = "gengage-chat-review-tag", x.textContent = d.review_tag, v.appendChild(x);
1457
1457
  }
1458
1458
  if (typeof d.review_text == "string" && d.review_text.length > 0) {
1459
- const b = document.createElement("div");
1460
- b.className = "gengage-chat-review-text", b.textContent = d.review_text, v.appendChild(b);
1459
+ const x = document.createElement("div");
1460
+ x.className = "gengage-chat-review-text", x.textContent = d.review_text, v.appendChild(x);
1461
1461
  }
1462
1462
  if (d.review_rating !== void 0 && String(d.review_rating).length > 0) {
1463
- const b = document.createElement("div");
1464
- b.className = "gengage-chat-review-rating", b.textContent = String(d.review_rating), v.appendChild(b);
1463
+ const x = document.createElement("div");
1464
+ x.className = "gengage-chat-review-rating", x.textContent = String(d.review_rating), v.appendChild(x);
1465
1465
  }
1466
1466
  g.appendChild(v);
1467
1467
  }
1468
1468
  }
1469
- for (const m of s) {
1469
+ for (const h of s) {
1470
1470
  const d = document.createElement("button");
1471
- d.className = "gengage-chat-review-tab", d.type = "button", d.textContent = m.label, m.filter === l && d.classList.add("gengage-chat-review-tab--active"), d.addEventListener("click", () => {
1472
- l = m.filter;
1471
+ d.className = "gengage-chat-review-tab", d.type = "button", d.textContent = h.label, h.filter === l && d.classList.add("gengage-chat-review-tab--active"), d.addEventListener("click", () => {
1472
+ l = h.filter;
1473
1473
  for (const v of r.querySelectorAll(".gengage-chat-review-tab"))
1474
1474
  v.classList.toggle("gengage-chat-review-tab--active", v === d);
1475
1475
  c();
1476
1476
  }), r.appendChild(d);
1477
1477
  }
1478
1478
  t.appendChild(r);
1479
- const h = /* @__PURE__ */ new Map();
1480
- for (const m of n)
1481
- if (typeof m.review_tag == "string" && m.review_tag.length > 0) {
1482
- const d = h.get(m.review_tag);
1483
- d ? d.count++ : h.set(m.review_tag, { count: 1, sentiment: m.review_class ?? "neutral" });
1479
+ const p = /* @__PURE__ */ new Map();
1480
+ for (const h of n)
1481
+ if (typeof h.review_tag == "string" && h.review_tag.length > 0) {
1482
+ const d = p.get(h.review_tag);
1483
+ d ? d.count++ : p.set(h.review_tag, { count: 1, sentiment: h.review_class ?? "neutral" });
1484
1484
  }
1485
- if (h.size > 0) {
1486
- const m = document.createElement("div");
1487
- m.className = "gengage-chat-review-pills";
1488
- for (const [d, v] of h) {
1489
- const w = document.createElement("span");
1490
- w.className = "gengage-chat-review-pill", w.dataset.tone = v.sentiment;
1491
- const b = document.createElement("span");
1492
- b.className = "gengage-chat-review-pill-icon", b.textContent = v.sentiment === "positive" ? "✓" : v.sentiment === "negative" ? "✕" : "●", w.appendChild(b);
1493
- const N = document.createElement("span");
1494
- if (N.textContent = d, w.appendChild(N), v.count > 1) {
1495
- const I = document.createElement("span");
1496
- I.className = "gengage-chat-review-pill-count", I.textContent = String(v.count), w.appendChild(I);
1485
+ if (p.size > 0) {
1486
+ const h = document.createElement("div");
1487
+ h.className = "gengage-chat-review-pills";
1488
+ for (const [d, v] of p) {
1489
+ const _ = document.createElement("span");
1490
+ _.className = "gengage-chat-review-pill", _.dataset.tone = v.sentiment;
1491
+ const x = document.createElement("span");
1492
+ x.className = "gengage-chat-review-pill-icon", x.textContent = v.sentiment === "positive" ? "✓" : v.sentiment === "negative" ? "✕" : "●", _.appendChild(x);
1493
+ const L = document.createElement("span");
1494
+ if (L.textContent = d, _.appendChild(L), v.count > 1) {
1495
+ const T = document.createElement("span");
1496
+ T.className = "gengage-chat-review-pill-count", T.textContent = String(v.count), _.appendChild(T);
1497
1497
  }
1498
- m.appendChild(w);
1498
+ h.appendChild(_);
1499
1499
  }
1500
- t.appendChild(m);
1500
+ t.appendChild(h);
1501
1501
  }
1502
1502
  return c(), t.appendChild(g), t;
1503
1503
  }
1504
- const $t = {
1504
+ const Gt = {
1505
1505
  winner: "roleWinner",
1506
1506
  best_value: "roleBestValue",
1507
1507
  best_alternative: "roleBestAlternative"
1508
1508
  };
1509
- function _e(o, e) {
1509
+ function ke(o, e) {
1510
1510
  if (!o || !e) return null;
1511
- const t = $t[o];
1511
+ const t = Gt[o];
1512
1512
  return t ? e[t] ?? o : o;
1513
1513
  }
1514
1514
  function Kt(o, e) {
@@ -1530,52 +1530,52 @@ function Wt(o, e) {
1530
1530
  const t = document.createElement("div");
1531
1531
  t.className = "gengage-chat-ai-toppick-card gengage-chat-ai-toppick-card--winner";
1532
1532
  const a = document.createElement("span");
1533
- a.className = "gengage-chat-ai-toppick-badge", a.textContent = _e(o.role, e.i18n) ?? e.i18n?.roleWinner ?? "TOP MATCH", t.appendChild(a);
1533
+ a.className = "gengage-chat-ai-toppick-badge", a.textContent = ke(o.role, e.i18n) ?? e.i18n?.roleWinner ?? "TOP MATCH", t.appendChild(a);
1534
1534
  const n = o.product, i = n.discountPercent;
1535
1535
  if (typeof i == "number" && i > 0) {
1536
- const h = document.createElement("span");
1537
- h.className = "gengage-chat-ai-toppick-discount-badge", h.textContent = `%${se(i)}`, t.appendChild(h);
1536
+ const p = document.createElement("span");
1537
+ p.className = "gengage-chat-ai-toppick-discount-badge", p.textContent = `%${se(i)}`, t.appendChild(p);
1538
1538
  }
1539
1539
  const r = n.imageUrl;
1540
1540
  if (r && K(r)) {
1541
- const h = document.createElement("img");
1542
- h.className = "gengage-chat-ai-toppick-img", D(h, "src", r), h.alt = n.name ?? "", Q(h), t.appendChild(h);
1541
+ const p = document.createElement("img");
1542
+ p.className = "gengage-chat-ai-toppick-img", D(p, "src", r), p.alt = n.name ?? "", Q(p), t.appendChild(p);
1543
1543
  }
1544
1544
  const s = document.createElement("div");
1545
1545
  s.className = "gengage-chat-ai-toppick-body";
1546
1546
  const l = n.name;
1547
1547
  if (l) {
1548
- const h = document.createElement("div");
1549
- h.className = "gengage-chat-ai-toppick-name", h.textContent = l, s.appendChild(h);
1548
+ const p = document.createElement("div");
1549
+ p.className = "gengage-chat-ai-toppick-name", p.textContent = l, s.appendChild(p);
1550
1550
  }
1551
1551
  if (o.reason) {
1552
- const h = document.createElement("div");
1553
- h.className = "gengage-chat-ai-toppick-reason", h.textContent = o.reason, s.appendChild(h);
1552
+ const p = document.createElement("div");
1553
+ p.className = "gengage-chat-ai-toppick-reason", p.textContent = o.reason, s.appendChild(p);
1554
1554
  }
1555
- if (o.labels && o.labels.length > 0 && s.appendChild(ke(o.labels)), typeof o.expertQualityScore == "number") {
1556
- const h = document.createElement("div");
1557
- h.className = "gengage-chat-ai-toppick-score", h.textContent = `${o.expertQualityScore}/10`, s.appendChild(h);
1555
+ if (o.labels && o.labels.length > 0 && s.appendChild(Ce(o.labels)), typeof o.expertQualityScore == "number") {
1556
+ const p = document.createElement("div");
1557
+ p.className = "gengage-chat-ai-toppick-score", p.textContent = `${o.expertQualityScore}/10`, s.appendChild(p);
1558
1558
  }
1559
1559
  if (o.reviewHighlight) {
1560
- const h = document.createElement("blockquote");
1561
- h.className = "gengage-chat-ai-toppick-review", h.textContent = o.reviewHighlight, s.appendChild(h);
1560
+ const p = document.createElement("blockquote");
1561
+ p.className = "gengage-chat-ai-toppick-review", p.textContent = o.reviewHighlight, s.appendChild(p);
1562
1562
  }
1563
1563
  const g = n.price, c = n.originalPrice;
1564
1564
  if (g) {
1565
- const h = document.createElement("div");
1566
- if (h.className = "gengage-chat-ai-toppick-price", c && c !== g) {
1565
+ const p = document.createElement("div");
1566
+ if (p.className = "gengage-chat-ai-toppick-price", c && c !== g) {
1567
1567
  const d = document.createElement("span");
1568
- d.className = "gengage-chat-ai-toppick-original-price", d.textContent = F(c, e.pricing), h.appendChild(d), h.appendChild(document.createTextNode(" "));
1568
+ d.className = "gengage-chat-ai-toppick-original-price", d.textContent = F(c, e.pricing), p.appendChild(d), p.appendChild(document.createTextNode(" "));
1569
1569
  }
1570
- const m = document.createElement("span");
1571
- m.textContent = F(g, e.pricing), h.appendChild(m), s.appendChild(h);
1570
+ const h = document.createElement("span");
1571
+ h.textContent = F(g, e.pricing), p.appendChild(h), s.appendChild(p);
1572
1572
  }
1573
1573
  if (t.appendChild(s), o.action) {
1574
- const h = n.sku ?? null, m = document.createElement("div");
1575
- m.className = "gengage-chat-ai-toppick-spinner", m.style.display = h && e.topPicksLoadingSku === h ? "" : "none", t.appendChild(m);
1574
+ const p = n.sku ?? null, h = document.createElement("div");
1575
+ h.className = "gengage-chat-ai-toppick-spinner", h.style.display = p && e.topPicksLoadingSku === p ? "" : "none", t.appendChild(h);
1576
1576
  const d = document.createElement("button");
1577
1577
  d.className = "gengage-chat-ai-toppick-cta", d.type = "button", d.textContent = e.i18n?.viewDetails ?? "View Details", d.addEventListener("click", () => {
1578
- h && (m.style.display = ""), e.onAction(o.action);
1578
+ p && (h.style.display = ""), e.onAction(o.action);
1579
1579
  }), t.appendChild(d);
1580
1580
  }
1581
1581
  return t;
@@ -1595,7 +1595,7 @@ function Yt(o, e) {
1595
1595
  }
1596
1596
  const r = document.createElement("div");
1597
1597
  r.className = "gengage-chat-ai-toppick-body";
1598
- const s = _e(o.role, e.i18n);
1598
+ const s = ke(o.role, e.i18n);
1599
1599
  if (s) {
1600
1600
  const c = document.createElement("div");
1601
1601
  c.className = "gengage-chat-ai-toppick-role", c.textContent = s, r.appendChild(c);
@@ -1609,23 +1609,23 @@ function Yt(o, e) {
1609
1609
  const c = document.createElement("div");
1610
1610
  c.className = "gengage-chat-ai-toppick-reason", c.textContent = o.reason, r.appendChild(c);
1611
1611
  }
1612
- o.labels && o.labels.length > 0 && r.appendChild(ke(o.labels));
1612
+ o.labels && o.labels.length > 0 && r.appendChild(Ce(o.labels));
1613
1613
  const g = a.price;
1614
1614
  if (g) {
1615
1615
  const c = document.createElement("div");
1616
1616
  c.className = "gengage-chat-ai-toppick-price", c.textContent = F(g, e.pricing), r.appendChild(c);
1617
1617
  }
1618
1618
  if (t.appendChild(r), o.action) {
1619
- const c = a.sku ?? null, h = document.createElement("div");
1620
- h.className = "gengage-chat-ai-toppick-spinner", h.style.display = c && e.topPicksLoadingSku === c ? "" : "none", t.appendChild(h);
1621
- const m = document.createElement("button");
1622
- m.className = "gengage-chat-ai-toppick-cta", m.type = "button", m.textContent = e.i18n?.viewDetails ?? "View Details", m.addEventListener("click", () => {
1623
- c && (h.style.display = ""), e.onAction(o.action);
1624
- }), t.appendChild(m);
1619
+ const c = a.sku ?? null, p = document.createElement("div");
1620
+ p.className = "gengage-chat-ai-toppick-spinner", p.style.display = c && e.topPicksLoadingSku === c ? "" : "none", t.appendChild(p);
1621
+ const h = document.createElement("button");
1622
+ h.className = "gengage-chat-ai-toppick-cta", h.type = "button", h.textContent = e.i18n?.viewDetails ?? "View Details", h.addEventListener("click", () => {
1623
+ c && (p.style.display = ""), e.onAction(o.action);
1624
+ }), t.appendChild(h);
1625
1625
  }
1626
1626
  return t;
1627
1627
  }
1628
- function ke(o) {
1628
+ function Ce(o) {
1629
1629
  const e = document.createElement("div");
1630
1630
  e.className = "gengage-chat-ai-toppick-labels";
1631
1631
  for (const t of o) {
@@ -1643,14 +1643,14 @@ function Qt(o, e) {
1643
1643
  g.className = "gengage-chat-grounding-review-body";
1644
1644
  const c = document.createElement("div");
1645
1645
  if (c.className = "gengage-chat-grounding-review-title", c.textContent = n ?? "Müşteri Yorumları", g.appendChild(c), i) {
1646
- const m = document.createElement("div");
1647
- m.className = "gengage-chat-grounding-review-subtitle";
1646
+ const h = document.createElement("div");
1647
+ h.className = "gengage-chat-grounding-review-subtitle";
1648
1648
  const d = e.i18n?.groundingReviewSubtitle ?? "{count} yorum mevcut";
1649
- m.textContent = d.replace("{count}", i), g.appendChild(m);
1649
+ h.textContent = d.replace("{count}", i), g.appendChild(h);
1650
1650
  }
1651
1651
  t.appendChild(g);
1652
- const h = document.createElement("span");
1653
- return h.className = "gengage-chat-grounding-review-cta", h.textContent = `${s} →`, t.appendChild(h), r && (t.style.cursor = "pointer", t.addEventListener("click", () => e.onAction(r))), t;
1652
+ const p = document.createElement("span");
1653
+ return p.className = "gengage-chat-grounding-review-cta", p.textContent = `${s} →`, t.appendChild(p), r && (t.style.cursor = "pointer", t.addEventListener("click", () => e.onAction(r))), t;
1654
1654
  }
1655
1655
  function Xt(o, e) {
1656
1656
  const t = document.createElement("div");
@@ -1762,21 +1762,21 @@ function ta(o, e) {
1762
1762
  i.className = "gengage-chat-categories-tabs", i.setAttribute("role", "tablist");
1763
1763
  const r = [], s = [], l = (g) => {
1764
1764
  for (let c = 0; c < r.length; c++) {
1765
- const h = c === g;
1766
- r[c].classList.toggle("gengage-chat-categories-tab--active", h), r[c].setAttribute("aria-selected", String(h)), r[c].tabIndex = h ? 0 : -1, s[c].style.display = h ? "" : "none";
1765
+ const p = c === g;
1766
+ r[c].classList.toggle("gengage-chat-categories-tab--active", p), r[c].setAttribute("aria-selected", String(p)), r[c].tabIndex = p ? 0 : -1, s[c].style.display = p ? "" : "none";
1767
1767
  }
1768
1768
  };
1769
1769
  for (let g = 0; g < t.length; g++) {
1770
- const c = t[g], h = `gengage-cat-tab-${g}`, m = `gengage-cat-panel-${g}`, d = document.createElement("button");
1771
- d.className = "gengage-chat-categories-tab", d.type = "button", d.id = h, d.setAttribute("role", "tab"), d.setAttribute("aria-controls", m), d.setAttribute("aria-selected", String(g === 0)), d.tabIndex = g === 0 ? 0 : -1, g === 0 && d.classList.add("gengage-chat-categories-tab--active"), d.textContent = c.groupName, d.addEventListener("click", () => l(g)), d.addEventListener("keydown", (w) => {
1772
- let b = -1;
1773
- w.key === "ArrowRight" || w.key === "ArrowDown" ? b = (g + 1) % t.length : w.key === "ArrowLeft" || w.key === "ArrowUp" ? b = (g - 1 + t.length) % t.length : w.key === "Home" ? b = 0 : w.key === "End" && (b = t.length - 1), b >= 0 && (w.preventDefault(), l(b), r[b].focus());
1770
+ const c = t[g], p = `gengage-cat-tab-${g}`, h = `gengage-cat-panel-${g}`, d = document.createElement("button");
1771
+ d.className = "gengage-chat-categories-tab", d.type = "button", d.id = p, d.setAttribute("role", "tab"), d.setAttribute("aria-controls", h), d.setAttribute("aria-selected", String(g === 0)), d.tabIndex = g === 0 ? 0 : -1, g === 0 && d.classList.add("gengage-chat-categories-tab--active"), d.textContent = c.groupName, d.addEventListener("click", () => l(g)), d.addEventListener("keydown", (_) => {
1772
+ let x = -1;
1773
+ _.key === "ArrowRight" || _.key === "ArrowDown" ? x = (g + 1) % t.length : _.key === "ArrowLeft" || _.key === "ArrowUp" ? x = (g - 1 + t.length) % t.length : _.key === "Home" ? x = 0 : _.key === "End" && (x = t.length - 1), x >= 0 && (_.preventDefault(), l(x), r[x].focus());
1774
1774
  }), r.push(d), i.appendChild(d);
1775
1775
  const v = document.createElement("div");
1776
- v.className = "gengage-chat-categories-grid", v.id = m, v.setAttribute("role", "tabpanel"), v.setAttribute("aria-labelledby", h), g !== 0 && (v.style.display = "none");
1777
- for (const w of c.products) {
1778
- const b = aa(w, e);
1779
- v.appendChild(b);
1776
+ v.className = "gengage-chat-categories-grid", v.id = h, v.setAttribute("role", "tabpanel"), v.setAttribute("aria-labelledby", p), g !== 0 && (v.style.display = "none");
1777
+ for (const _ of c.products) {
1778
+ const x = aa(_, e);
1779
+ v.appendChild(x);
1780
1780
  }
1781
1781
  s.push(v);
1782
1782
  }
@@ -1786,10 +1786,10 @@ function ta(o, e) {
1786
1786
  const g = document.createElement("div");
1787
1787
  g.className = "gengage-chat-categories-filter-tags";
1788
1788
  for (const c of a) {
1789
- const h = document.createElement("button");
1790
- h.className = "gengage-chat-categories-filter-tag", h.type = "button", h.textContent = c.title, c.action && h.addEventListener("click", () => {
1789
+ const p = document.createElement("button");
1790
+ p.className = "gengage-chat-categories-filter-tag", p.type = "button", p.textContent = c.title, c.action && p.addEventListener("click", () => {
1791
1791
  e.onAction(c.action);
1792
- }), g.appendChild(h);
1792
+ }), g.appendChild(p);
1793
1793
  }
1794
1794
  n.appendChild(g);
1795
1795
  }
@@ -1833,13 +1833,13 @@ function ia(o, e) {
1833
1833
  d.target.closest("a") || e.onProductSelect?.(t);
1834
1834
  });
1835
1835
  const n = t.imageUrl;
1836
- if (n && G(n)) {
1836
+ if (n && $(n)) {
1837
1837
  const d = document.createElement("div");
1838
1838
  d.className = "gengage-chat-product-summary__image";
1839
1839
  const v = document.createElement("img");
1840
1840
  D(v, "src", n);
1841
- const w = t.name;
1842
- w && (v.alt = w), Q(v), d.appendChild(v), a.appendChild(d);
1841
+ const _ = t.name;
1842
+ _ && (v.alt = _), Q(v), d.appendChild(v), a.appendChild(d);
1843
1843
  }
1844
1844
  const i = document.createElement("div");
1845
1845
  i.className = "gengage-chat-product-summary__content";
@@ -1853,40 +1853,40 @@ function ia(o, e) {
1853
1853
  const l = t.rating, g = t.reviewCount;
1854
1854
  if (typeof l == "number" && Number.isFinite(l) && l > 0) {
1855
1855
  const d = document.createElement("div");
1856
- if (d.className = "gengage-chat-product-summary__rating", d.textContent = xe(ve(l)), typeof g == "number" && Number.isFinite(g)) {
1856
+ if (d.className = "gengage-chat-product-summary__rating", d.textContent = ve(we(l)), typeof g == "number" && Number.isFinite(g)) {
1857
1857
  const v = document.createElement("span");
1858
1858
  v.className = "gengage-chat-product-summary__review-count", v.textContent = ` (${g})`, d.appendChild(v);
1859
1859
  }
1860
1860
  i.appendChild(d);
1861
1861
  }
1862
- const c = t.price, h = t.originalPrice;
1862
+ const c = t.price, p = t.originalPrice;
1863
1863
  if (c) {
1864
1864
  const d = document.createElement("div");
1865
- if (d.className = "gengage-chat-product-summary__price", h && h !== c) {
1866
- const w = document.createElement("span");
1867
- w.className = "gengage-chat-product-summary__price-original", w.textContent = F(h, e.pricing), d.appendChild(w), d.appendChild(document.createTextNode(" "));
1865
+ if (d.className = "gengage-chat-product-summary__price", p && p !== c) {
1866
+ const _ = document.createElement("span");
1867
+ _.className = "gengage-chat-product-summary__price-original", _.textContent = F(p, e.pricing), d.appendChild(_), d.appendChild(document.createTextNode(" "));
1868
1868
  }
1869
1869
  const v = document.createElement("span");
1870
1870
  v.className = "gengage-chat-product-summary__price-current", v.textContent = F(c, e.pricing), d.appendChild(v), i.appendChild(d);
1871
1871
  }
1872
1872
  a.appendChild(i);
1873
- const m = t.url;
1874
- if (m && G(m)) {
1873
+ const h = t.url;
1874
+ if (h && $(h)) {
1875
1875
  const d = document.createElement("a");
1876
- d.className = "gengage-chat-product-summary__cta", D(d, "href", m), D(d, "target", "_blank"), D(d, "rel", "noopener noreferrer"), d.textContent = e.i18n?.productCtaLabel ?? "İncele", a.appendChild(d);
1876
+ d.className = "gengage-chat-product-summary__cta", D(d, "href", h), D(d, "target", "_blank"), D(d, "rel", "noopener noreferrer"), d.textContent = e.i18n?.productCtaLabel ?? "İncele", a.appendChild(d);
1877
1877
  }
1878
1878
  return a;
1879
1879
  }
1880
- function Ce() {
1880
+ function Ee() {
1881
1881
  return window.innerWidth < 768;
1882
1882
  }
1883
- const Ee = {
1883
+ const Se = {
1884
1884
  ActionButtons: ({ element: o, context: e }) => sa(o, e),
1885
1885
  ActionButton: ({ element: o, context: e }) => ca(o, e),
1886
1886
  ProductCard: ({ element: o, context: e }) => la(o, e),
1887
1887
  ProductDetailsPanel: ({ element: o, context: e }) => ga(o, e),
1888
1888
  ProductGrid: ({ element: o, spec: e, renderElement: t, context: a }) => ha(o, e, t, a),
1889
- ReviewHighlights: ({ element: o, context: e }) => Gt(o, { emptyReviewsMessage: e.i18n?.emptyReviewsMessage }),
1889
+ ReviewHighlights: ({ element: o, context: e }) => $t(o, { emptyReviewsMessage: e.i18n?.emptyReviewsMessage }),
1890
1890
  ComparisonTable: ({ element: o, context: e }) => ua(o, e),
1891
1891
  AITopPicks: ({ element: o, context: e }) => Kt(o, e),
1892
1892
  GroundingReviewCard: ({ element: o, context: e }) => Qt(o, e),
@@ -1897,7 +1897,7 @@ const Ee = {
1897
1897
  HandoffNotice: ({ element: o, context: e }) => na(o, e),
1898
1898
  ProductSummaryCard: ({ element: o, context: e }) => ia(o, e),
1899
1899
  Divider: ({ element: o }) => ma(o)
1900
- }, Se = ({
1900
+ }, Te = ({
1901
1901
  element: o,
1902
1902
  renderElement: e
1903
1903
  }) => {
@@ -1911,10 +1911,10 @@ const Ee = {
1911
1911
  return t;
1912
1912
  };
1913
1913
  function oa() {
1914
- return { ...Ee };
1914
+ return { ...Se };
1915
1915
  }
1916
- function ra(o, e, t = Ee, a = Se) {
1917
- return Me({
1916
+ function ra(o, e, t = Se, a = Te) {
1917
+ return ze({
1918
1918
  spec: o,
1919
1919
  context: e,
1920
1920
  registry: t,
@@ -1946,137 +1946,138 @@ function la(o, e) {
1946
1946
  t.className = "gengage-chat-product-card";
1947
1947
  const a = o.props?.product ?? o.props;
1948
1948
  if (!a) return t;
1949
- e.onProductSelect && (t.style.cursor = "pointer", t.addEventListener("click", (p) => {
1950
- p.target.closest(".gengage-chat-product-card-atc") || p.target.closest(".gengage-chat-product-card-cta") || e.onProductSelect?.(a);
1949
+ const n = a.sku;
1950
+ n && (t.dataset.sku = n), e.onProductSelect && (t.style.cursor = "pointer", t.addEventListener("click", (f) => {
1951
+ f.target.closest(".gengage-chat-product-card-atc") || f.target.closest(".gengage-chat-product-card-cta") || e.onProductSelect?.(a);
1951
1952
  }));
1952
- const n = a.imageUrl;
1953
- if (n && G(n)) {
1954
- const p = document.createElement("div");
1955
- p.className = "gengage-chat-product-card-img-wrapper";
1953
+ const i = a.imageUrl;
1954
+ if (i && $(i)) {
1955
+ const f = document.createElement("div");
1956
+ f.className = "gengage-chat-product-card-img-wrapper";
1956
1957
  const y = document.createElement("img");
1957
- y.className = "gengage-chat-product-card-img", y.loading = "lazy", D(y, "src", n);
1958
- const _ = a.name;
1959
- _ && (y.alt = _), Q(y), p.appendChild(y);
1960
- const k = a.discountPercent;
1961
- if (typeof k == "number" && k > 0) {
1962
- const f = document.createElement("span");
1963
- f.className = "gengage-chat-product-card-discount-badge", f.textContent = `%${se(k)}`, p.appendChild(f);
1958
+ y.className = "gengage-chat-product-card-img", y.loading = "lazy", D(y, "src", i);
1959
+ const C = a.name;
1960
+ C && (y.alt = C), Q(y), f.appendChild(y);
1961
+ const A = a.discountPercent;
1962
+ if (typeof A == "number" && A > 0) {
1963
+ const k = document.createElement("span");
1964
+ k.className = "gengage-chat-product-card-discount-badge", k.textContent = `%${se(A)}`, f.appendChild(k);
1964
1965
  }
1965
- const A = a.sku;
1966
- if (A) {
1967
- const f = document.createElement("button");
1968
- f.className = "gengage-chat-find-similar-pill", f.type = "button", f.textContent = e.i18n?.findSimilarLabel ?? "Benzerlerini Bul", f.addEventListener("click", (C) => {
1969
- C.stopPropagation(), e.onAction({
1966
+ const u = a.sku;
1967
+ if (u) {
1968
+ const k = document.createElement("button");
1969
+ k.className = "gengage-chat-find-similar-pill", k.type = "button", k.textContent = e.i18n?.findSimilarLabel ?? "Benzerlerini Bul", k.addEventListener("click", (S) => {
1970
+ S.stopPropagation(), e.onAction({
1970
1971
  title: e.i18n?.findSimilarLabel ?? "Benzerlerini Bul",
1971
1972
  type: "findSimilar",
1972
- payload: { sku: A, ...n ? { image_url: n } : {} }
1973
+ payload: { sku: u, ...i ? { image_url: i } : {} }
1973
1974
  });
1974
- }), p.appendChild(f);
1975
+ }), f.appendChild(k);
1975
1976
  }
1976
- const u = a.sku;
1977
- if (u && e.onFavoriteToggle) {
1978
- const f = document.createElement("button");
1979
- f.className = "gengage-chat-favorite-btn", f.type = "button", f.setAttribute("aria-label", "Favorilere ekle");
1980
- const C = e.favoritedSkus?.has(u) ?? !1;
1981
- C && f.classList.add("gengage-chat-favorite-btn--active");
1982
- const S = C ? "currentColor" : "none";
1983
- f.innerHTML = `<svg width="16" height="16" viewBox="0 0 24 24" fill="${S}" stroke="currentColor" stroke-width="2"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>`, f.addEventListener("click", (P) => {
1984
- P.stopPropagation(), f.classList.toggle("gengage-chat-favorite-btn--active");
1985
- const T = f.querySelector("svg");
1986
- T && T.setAttribute(
1977
+ const w = a.sku;
1978
+ if (w && e.onFavoriteToggle) {
1979
+ const k = document.createElement("button");
1980
+ k.className = "gengage-chat-favorite-btn", k.type = "button", k.setAttribute("aria-label", "Favorilere ekle");
1981
+ const S = e.favoritedSkus?.has(w) ?? !1;
1982
+ S && k.classList.add("gengage-chat-favorite-btn--active");
1983
+ const P = S ? "currentColor" : "none";
1984
+ k.innerHTML = `<svg width="16" height="16" viewBox="0 0 24 24" fill="${P}" stroke="currentColor" stroke-width="2"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>`, k.addEventListener("click", (I) => {
1985
+ I.stopPropagation(), k.classList.toggle("gengage-chat-favorite-btn--active");
1986
+ const E = k.querySelector("svg");
1987
+ E && E.setAttribute(
1987
1988
  "fill",
1988
- f.classList.contains("gengage-chat-favorite-btn--active") ? "currentColor" : "none"
1989
- ), e.onFavoriteToggle(u, a);
1990
- }), p.appendChild(f);
1989
+ k.classList.contains("gengage-chat-favorite-btn--active") ? "currentColor" : "none"
1990
+ ), e.onFavoriteToggle(w, a);
1991
+ }), f.appendChild(k);
1991
1992
  }
1992
- t.appendChild(p);
1993
- }
1994
- const i = document.createElement("div");
1995
- i.className = "gengage-chat-product-card-body";
1996
- const r = a.brand;
1997
- if (r) {
1998
- const p = document.createElement("div");
1999
- p.className = "gengage-chat-product-card-brand", p.textContent = r, i.appendChild(p);
1993
+ t.appendChild(f);
2000
1994
  }
2001
- const s = a.name;
1995
+ const r = document.createElement("div");
1996
+ r.className = "gengage-chat-product-card-body";
1997
+ const s = a.brand;
2002
1998
  if (s) {
2003
- const p = document.createElement("div");
2004
- p.className = "gengage-chat-product-card-name", p.textContent = s, i.appendChild(p);
1999
+ const f = document.createElement("div");
2000
+ f.className = "gengage-chat-product-card-brand", f.textContent = s, r.appendChild(f);
2005
2001
  }
2006
- const l = a.rating, g = a.reviewCount;
2007
- if (typeof l == "number" && Number.isFinite(l)) {
2008
- const p = document.createElement("div");
2009
- if (p.className = "gengage-chat-product-card-rating", p.textContent = xe(l), typeof g == "number" && Number.isFinite(g)) {
2002
+ const l = a.name;
2003
+ if (l) {
2004
+ const f = document.createElement("div");
2005
+ f.className = "gengage-chat-product-card-name", f.textContent = l, r.appendChild(f);
2006
+ }
2007
+ const g = a.rating, c = a.reviewCount;
2008
+ if (typeof g == "number" && Number.isFinite(g)) {
2009
+ const f = document.createElement("div");
2010
+ if (f.className = "gengage-chat-product-card-rating", f.textContent = ve(g), typeof c == "number" && Number.isFinite(c)) {
2010
2011
  const y = document.createElement("span");
2011
- y.className = "gengage-chat-product-card-review-count", y.textContent = ` (${g})`, p.appendChild(y);
2012
+ y.className = "gengage-chat-product-card-review-count", y.textContent = ` (${c})`, f.appendChild(y);
2012
2013
  }
2013
- i.appendChild(p);
2014
+ r.appendChild(f);
2014
2015
  }
2015
- const c = a.price, h = a.originalPrice;
2016
+ const p = a.price, h = a.originalPrice;
2016
2017
  if (a.price_async === !0) {
2017
- const p = document.createElement("div");
2018
- p.className = "gengage-chat-product-card-price";
2018
+ const f = document.createElement("div");
2019
+ f.className = "gengage-chat-product-card-price";
2019
2020
  const y = document.createElement("span");
2020
- y.className = "gengage-chat-price-skeleton", p.appendChild(y), i.appendChild(p), setTimeout(() => {
2021
- y.parentElement && (c ? y.replaceWith(document.createTextNode(F(c, e.pricing))) : y.remove());
2021
+ y.className = "gengage-chat-price-skeleton", f.appendChild(y), r.appendChild(f), setTimeout(() => {
2022
+ y.parentElement && (p ? y.replaceWith(document.createTextNode(F(p, e.pricing))) : y.remove());
2022
2023
  }, 300);
2023
- } else if (c) {
2024
- const p = document.createElement("div");
2025
- if (p.className = "gengage-chat-product-card-price", h && h !== c) {
2026
- const _ = document.createElement("span");
2027
- _.className = "gengage-chat-product-card-original-price", _.textContent = F(h, e.pricing), p.appendChild(_), p.appendChild(document.createTextNode(" "));
2024
+ } else if (p) {
2025
+ const f = document.createElement("div");
2026
+ if (f.className = "gengage-chat-product-card-price", h && h !== p) {
2027
+ const C = document.createElement("span");
2028
+ C.className = "gengage-chat-product-card-original-price", C.textContent = F(h, e.pricing), f.appendChild(C), f.appendChild(document.createTextNode(" "));
2028
2029
  }
2029
2030
  const y = document.createElement("span");
2030
- y.textContent = F(c, e.pricing), p.appendChild(y), i.appendChild(p);
2031
+ y.textContent = F(p, e.pricing), f.appendChild(y), r.appendChild(f);
2031
2032
  }
2032
- const d = a.inStock;
2033
- if (typeof d == "boolean") {
2034
- const p = document.createElement("div");
2035
- p.className = `gengage-chat-product-card-stock ${d ? "is-in-stock" : "is-out-of-stock"}`, p.textContent = d ? e.i18n?.inStockLabel ?? "Stokta" : e.i18n?.outOfStockLabel ?? "Tükendi", i.appendChild(p);
2033
+ const v = a.inStock;
2034
+ if (typeof v == "boolean") {
2035
+ const f = document.createElement("div");
2036
+ f.className = `gengage-chat-product-card-stock ${v ? "is-in-stock" : "is-out-of-stock"}`, f.textContent = v ? e.i18n?.inStockLabel ?? "Stokta" : e.i18n?.outOfStockLabel ?? "Tükendi", r.appendChild(f);
2036
2037
  }
2037
- const v = a.promotions;
2038
- if (v && v.length > 0) {
2039
- const p = document.createElement("div");
2040
- p.className = "gengage-chat-product-card-promos";
2041
- for (const y of v) {
2042
- const _ = document.createElement("span");
2043
- _.className = "gengage-chat-product-card-promo-badge", _.textContent = y, p.appendChild(_);
2038
+ const _ = a.promotions;
2039
+ if (_ && _.length > 0) {
2040
+ const f = document.createElement("div");
2041
+ f.className = "gengage-chat-product-card-promos";
2042
+ for (const y of _) {
2043
+ const C = document.createElement("span");
2044
+ C.className = "gengage-chat-product-card-promo-badge", C.textContent = y, f.appendChild(C);
2044
2045
  }
2045
- i.appendChild(p);
2046
- }
2047
- t.appendChild(i);
2048
- const w = a.url, b = a.sku, N = o.props?.action;
2049
- if (N) {
2050
- const p = document.createElement("button");
2051
- p.className = "gengage-chat-product-card-cta", p.type = "button", p.textContent = N.title || e.i18n?.productCtaLabel || "Incele", p.addEventListener("click", () => e.onAction(N)), t.appendChild(p);
2052
- } else if (w && G(w)) {
2053
- const p = document.createElement("a");
2054
- p.className = "gengage-chat-product-card-cta", D(p, "href", w), D(p, "target", "_blank"), D(p, "rel", "noopener noreferrer"), p.textContent = e.i18n?.productCtaLabel ?? "İncele", p.addEventListener("click", (y) => {
2055
- e.onProductClick && b && (y.preventDefault(), e.onProductClick({ sku: b, url: w }));
2056
- }), t.appendChild(p);
2057
- }
2058
- const I = a.cartCode;
2059
- if (I && b) {
2060
- const p = we({
2046
+ r.appendChild(f);
2047
+ }
2048
+ t.appendChild(r);
2049
+ const x = a.url, L = a.sku, T = o.props?.action;
2050
+ if (T) {
2051
+ const f = document.createElement("button");
2052
+ f.className = "gengage-chat-product-card-cta", f.type = "button", f.textContent = T.title || e.i18n?.productCtaLabel || "Incele", f.addEventListener("click", () => e.onAction(T)), t.appendChild(f);
2053
+ } else if (x && $(x)) {
2054
+ const f = document.createElement("a");
2055
+ f.className = "gengage-chat-product-card-cta", D(f, "href", x), D(f, "target", "_blank"), D(f, "rel", "noopener noreferrer"), f.textContent = e.i18n?.productCtaLabel ?? "İncele", f.addEventListener("click", (y) => {
2056
+ e.onProductClick && L && (y.preventDefault(), e.onProductClick({ sku: L, url: x }));
2057
+ }), t.appendChild(f);
2058
+ }
2059
+ const m = a.cartCode;
2060
+ if (m && L) {
2061
+ const f = ye({
2061
2062
  compact: !0,
2062
2063
  label: e.i18n?.addToCartButton ?? "Sepete Ekle",
2063
2064
  onSubmit: (y) => {
2064
2065
  e.onAction({
2065
2066
  title: e.i18n?.addToCartButton ?? "Sepete Ekle",
2066
2067
  type: "addToCart",
2067
- payload: { sku: b, cartCode: I, quantity: y }
2068
+ payload: { sku: L, cartCode: m, quantity: y }
2068
2069
  });
2069
2070
  }
2070
2071
  });
2071
- p.classList.add("gengage-chat-product-card-atc"), t.appendChild(p);
2072
+ f.classList.add("gengage-chat-product-card-atc"), t.appendChild(f);
2072
2073
  }
2073
- if (e.comparisonSelectMode && b && e.onToggleComparisonSku) {
2074
- const p = document.createElement("div");
2075
- p.className = "gengage-chat-comparison-select-wrapper";
2074
+ if (e.comparisonSelectMode && L && e.onToggleComparisonSku) {
2075
+ const f = document.createElement("div");
2076
+ f.className = "gengage-chat-comparison-select-wrapper";
2076
2077
  const y = document.createElement("input");
2077
- return y.type = "checkbox", y.className = "gengage-chat-comparison-checkbox", y.checked = e.comparisonSelectedSkus?.includes(b) ?? !1, y.addEventListener("change", () => {
2078
- e.onToggleComparisonSku?.(b);
2079
- }), p.appendChild(y), p.appendChild(t), p;
2078
+ return y.type = "checkbox", y.className = "gengage-chat-comparison-checkbox", y.checked = e.comparisonSelectedSkus?.includes(L) ?? !1, y.addEventListener("change", () => {
2079
+ e.onToggleComparisonSku?.(L);
2080
+ }), f.appendChild(y), f.appendChild(t), f;
2080
2081
  }
2081
2082
  return t;
2082
2083
  }
@@ -2089,32 +2090,32 @@ function ga(o, e) {
2089
2090
  if (n && n.length > 1) {
2090
2091
  const u = document.createElement("div");
2091
2092
  u.className = "gengage-chat-product-details-media gengage-chat-product-details-gallery gengage-chat-product-details-img-wrap";
2092
- const f = document.createElement("img");
2093
- f.className = "gengage-chat-product-details-img";
2094
- const C = n.find((z) => G(z));
2095
- C && D(f, "src", C);
2093
+ const w = document.createElement("img");
2094
+ w.className = "gengage-chat-product-details-img";
2095
+ const k = n.find((z) => $(z));
2096
+ k && D(w, "src", k);
2096
2097
  const S = a.name;
2097
- S && (f.alt = S), Q(f), u.appendChild(f);
2098
+ S && (w.alt = S), Q(w), u.appendChild(w);
2098
2099
  const P = document.createElement("div");
2099
2100
  P.className = "gengage-chat-product-gallery-thumbs";
2100
- let T = null, E = 0;
2101
+ let I = null, E = 0;
2101
2102
  for (let z = 0; z < n.length; z++) {
2102
2103
  const H = n[z];
2103
- if (!H || !G(H)) continue;
2104
+ if (!H || !$(H)) continue;
2104
2105
  const R = document.createElement("img");
2105
- R.className = "gengage-chat-product-gallery-thumb", z === 0 && (R.classList.add("gengage-chat-product-gallery-thumb--active"), T = R), D(R, "src", H), R.alt = `${S ?? "Product"} ${z + 1}`, R.width = 48, R.height = 48, Q(R), R.addEventListener("click", () => {
2106
- D(f, "src", H), T && T.classList.remove("gengage-chat-product-gallery-thumb--active"), R.classList.add("gengage-chat-product-gallery-thumb--active"), T = R, E = z;
2106
+ R.className = "gengage-chat-product-gallery-thumb", z === 0 && (R.classList.add("gengage-chat-product-gallery-thumb--active"), I = R), D(R, "src", H), R.alt = `${S ?? "Product"} ${z + 1}`, R.width = 48, R.height = 48, Q(R), R.addEventListener("click", () => {
2107
+ D(w, "src", H), I && I.classList.remove("gengage-chat-product-gallery-thumb--active"), R.classList.add("gengage-chat-product-gallery-thumb--active"), I = R, E = z;
2107
2108
  }), P.appendChild(R);
2108
2109
  }
2109
2110
  let M = 0;
2110
2111
  const U = 50;
2111
- if (f.addEventListener(
2112
+ if (w.addEventListener(
2112
2113
  "touchstart",
2113
2114
  (z) => {
2114
2115
  M = z.changedTouches[0].clientX;
2115
2116
  },
2116
2117
  { passive: !0 }
2117
- ), f.addEventListener("touchend", (z) => {
2118
+ ), w.addEventListener("touchend", (z) => {
2118
2119
  const H = z.changedTouches[0].clientX, R = M - H;
2119
2120
  if (Math.abs(R) < U) return;
2120
2121
  const ne = P.querySelectorAll(".gengage-chat-product-gallery-thumb"), ie = R > 0 ? Math.min(E + 1, ne.length - 1) : Math.max(E - 1, 0);
@@ -2125,18 +2126,18 @@ function ga(o, e) {
2125
2126
  e.onAction({
2126
2127
  title: e.i18n?.findSimilarLabel ?? "Benzerlerini Bul",
2127
2128
  type: "findSimilar",
2128
- payload: { sku: r, ...C ? { image_url: C } : {} }
2129
+ payload: { sku: r, ...k ? { image_url: k } : {} }
2129
2130
  });
2130
2131
  }), u.appendChild(z);
2131
2132
  }
2132
2133
  t.appendChild(u);
2133
- } else if (i && G(i)) {
2134
+ } else if (i && $(i)) {
2134
2135
  const u = document.createElement("div");
2135
2136
  u.className = "gengage-chat-product-details-media gengage-chat-product-details-img-wrap";
2136
- const f = document.createElement("img");
2137
- f.className = "gengage-chat-product-details-img", f.loading = "lazy", D(f, "src", i), Q(f);
2138
- const C = a.name;
2139
- if (C && (f.alt = C), u.appendChild(f), r) {
2137
+ const w = document.createElement("img");
2138
+ w.className = "gengage-chat-product-details-img", w.loading = "lazy", D(w, "src", i), Q(w);
2139
+ const k = a.name;
2140
+ if (k && (w.alt = k), u.appendChild(w), r) {
2140
2141
  const S = document.createElement("button");
2141
2142
  S.className = "gengage-chat-find-similar-pill", S.type = "button", S.textContent = e.i18n?.findSimilarLabel ?? "Benzerlerini Bul", S.addEventListener("click", () => {
2142
2143
  e.onAction({
@@ -2158,127 +2159,127 @@ function ga(o, e) {
2158
2159
  const g = a.rating, c = a.reviewCount;
2159
2160
  if (typeof g == "number" && Number.isFinite(g)) {
2160
2161
  const u = document.createElement("div");
2161
- if (u.className = "gengage-chat-product-details-rating", u.textContent = `★ ${ve(g).toFixed(1)}`, typeof c == "number" && Number.isFinite(c)) {
2162
- const f = document.createElement("span");
2163
- f.className = "gengage-chat-product-details-review-count", f.textContent = ` (${c})`, u.appendChild(f);
2162
+ if (u.className = "gengage-chat-product-details-rating", u.textContent = `★ ${we(g).toFixed(1)}`, typeof c == "number" && Number.isFinite(c)) {
2163
+ const w = document.createElement("span");
2164
+ w.className = "gengage-chat-product-details-review-count", w.textContent = ` (${c})`, u.appendChild(w);
2164
2165
  }
2165
2166
  s.appendChild(u);
2166
2167
  }
2167
- const h = a.price, m = a.originalPrice;
2168
+ const p = a.price, h = a.originalPrice;
2168
2169
  if (a.price_async === !0) {
2169
2170
  const u = document.createElement("div");
2170
2171
  u.className = "gengage-chat-product-details-price";
2171
- const f = document.createElement("span");
2172
- f.className = "gengage-chat-price-skeleton", u.appendChild(f), s.appendChild(u), setTimeout(() => {
2173
- if (f.parentElement)
2174
- if (h) {
2175
- const C = document.createElement("span");
2176
- C.className = "gengage-chat-product-details-current-price", C.textContent = F(h, e.pricing), f.replaceWith(C);
2172
+ const w = document.createElement("span");
2173
+ w.className = "gengage-chat-price-skeleton", u.appendChild(w), s.appendChild(u), setTimeout(() => {
2174
+ if (w.parentElement)
2175
+ if (p) {
2176
+ const k = document.createElement("span");
2177
+ k.className = "gengage-chat-product-details-current-price", k.textContent = F(p, e.pricing), w.replaceWith(k);
2177
2178
  } else
2178
- f.remove();
2179
+ w.remove();
2179
2180
  }, 300);
2180
- } else if (h) {
2181
+ } else if (p) {
2181
2182
  const u = document.createElement("div");
2182
- if (u.className = "gengage-chat-product-details-price", m && m !== h) {
2183
- const C = document.createElement("span");
2184
- C.className = "gengage-chat-product-details-original-price", C.textContent = F(m, e.pricing), u.appendChild(C), u.appendChild(document.createTextNode(" "));
2183
+ if (u.className = "gengage-chat-product-details-price", h && h !== p) {
2184
+ const k = document.createElement("span");
2185
+ k.className = "gengage-chat-product-details-original-price", k.textContent = F(h, e.pricing), u.appendChild(k), u.appendChild(document.createTextNode(" "));
2185
2186
  }
2186
- const f = document.createElement("span");
2187
- f.className = "gengage-chat-product-details-current-price", f.textContent = F(h, e.pricing), u.appendChild(f), s.appendChild(u);
2187
+ const w = document.createElement("span");
2188
+ w.className = "gengage-chat-product-details-current-price", w.textContent = F(p, e.pricing), u.appendChild(w), s.appendChild(u);
2188
2189
  }
2189
2190
  const v = a.inStock;
2190
2191
  if (typeof v == "boolean") {
2191
2192
  const u = document.createElement("div");
2192
2193
  u.className = `gengage-chat-product-details-stock ${v ? "is-in-stock" : "is-out-of-stock"}`, u.textContent = v ? "Stokta var" : "Stokta yok", s.appendChild(u);
2193
2194
  }
2194
- const w = a.promotions;
2195
- if (w && w.length > 0) {
2195
+ const _ = a.promotions;
2196
+ if (_ && _.length > 0) {
2196
2197
  const u = document.createElement("div");
2197
2198
  u.className = "gengage-chat-product-details-promos";
2198
- for (const f of w) {
2199
- const C = document.createElement("span");
2200
- C.className = "gengage-chat-product-details-promo-badge", C.textContent = f, u.appendChild(C);
2199
+ for (const w of _) {
2200
+ const k = document.createElement("span");
2201
+ k.className = "gengage-chat-product-details-promo-badge", k.textContent = w, u.appendChild(k);
2201
2202
  }
2202
2203
  s.appendChild(u);
2203
2204
  }
2204
- const b = a.variants;
2205
- if (b && b.length > 0) {
2205
+ const x = a.variants;
2206
+ if (x && x.length > 0) {
2206
2207
  const u = document.createElement("div");
2207
2208
  u.className = "gengage-chat-product-variants";
2208
- const f = document.createElement("div");
2209
- f.className = "gengage-chat-product-variants-label", f.textContent = e.i18n?.variantsLabel ?? "Varyantlar", u.appendChild(f);
2210
- const C = document.createElement("div");
2211
- C.className = "gengage-chat-product-variants-list";
2212
- for (const S of b) {
2213
- const P = S.name ?? S.variant_name, T = S.sku;
2214
- if (!P && !T) continue;
2209
+ const w = document.createElement("div");
2210
+ w.className = "gengage-chat-product-variants-label", w.textContent = e.i18n?.variantsLabel ?? "Varyantlar", u.appendChild(w);
2211
+ const k = document.createElement("div");
2212
+ k.className = "gengage-chat-product-variants-list";
2213
+ for (const S of x) {
2214
+ const P = S.name ?? S.variant_name, I = S.sku;
2215
+ if (!P && !I) continue;
2215
2216
  const E = document.createElement("button");
2216
2217
  E.className = "gengage-chat-product-variant-btn", E.type = "button";
2217
- const M = P ?? T ?? "", U = S.price;
2218
- U && String(U) !== String(h) ? E.textContent = `${M} - ${F(String(U), e.pricing)}` : E.textContent = M, T && E.addEventListener("click", () => {
2218
+ const M = P ?? I ?? "", U = S.price;
2219
+ U && String(U) !== String(p) ? E.textContent = `${M} - ${F(String(U), e.pricing)}` : E.textContent = M, I && E.addEventListener("click", () => {
2219
2220
  e.onAction({
2220
2221
  title: M,
2221
2222
  type: "launchVariant",
2222
- payload: { sku: T }
2223
+ payload: { sku: I }
2223
2224
  });
2224
- }), C.appendChild(E);
2225
+ }), k.appendChild(E);
2225
2226
  }
2226
- u.appendChild(C), s.appendChild(u);
2227
+ u.appendChild(k), s.appendChild(u);
2227
2228
  }
2228
- const N = a.sku, I = a.cartCode, p = document.createElement("div");
2229
- p.className = "gengage-chat-product-details-actions";
2230
- const y = o.props?.action;
2231
- if (y) {
2229
+ const L = a.sku, T = a.cartCode, m = document.createElement("div");
2230
+ m.className = "gengage-chat-product-details-actions";
2231
+ const f = o.props?.action;
2232
+ if (f) {
2232
2233
  const u = document.createElement("button");
2233
- u.className = "gengage-chat-product-details-cta", u.type = "button", u.textContent = y.title || e.i18n?.productCtaLabel || "Incele", u.addEventListener("click", () => e.onAction(y)), p.appendChild(u);
2234
+ u.className = "gengage-chat-product-details-cta", u.type = "button", u.textContent = f.title || e.i18n?.productCtaLabel || "Incele", u.addEventListener("click", () => e.onAction(f)), m.appendChild(u);
2234
2235
  } else {
2235
2236
  const u = a.url;
2236
- if (u && G(u)) {
2237
- const f = document.createElement("a");
2238
- f.className = "gengage-chat-product-details-cta", D(f, "href", u), D(f, "target", "_blank"), D(f, "rel", "noopener noreferrer"), f.textContent = e.i18n?.productCtaLabel ?? "Incele", f.addEventListener("click", (C) => {
2239
- e.onProductClick && N && (C.preventDefault(), e.onProductClick({ sku: N, url: u }));
2240
- }), p.appendChild(f);
2237
+ if (u && $(u)) {
2238
+ const w = document.createElement("a");
2239
+ w.className = "gengage-chat-product-details-cta", D(w, "href", u), D(w, "target", "_blank"), D(w, "rel", "noopener noreferrer"), w.textContent = e.i18n?.productCtaLabel ?? "Incele", w.addEventListener("click", (k) => {
2240
+ e.onProductClick && L && (k.preventDefault(), e.onProductClick({ sku: L, url: u }));
2241
+ }), m.appendChild(w);
2241
2242
  }
2242
2243
  }
2243
- if (I && N) {
2244
- const u = we({
2244
+ if (T && L) {
2245
+ const u = ye({
2245
2246
  compact: !1,
2246
2247
  label: e.i18n?.addToCartButton ?? "Sepete Ekle",
2247
- onSubmit: (f) => {
2248
+ onSubmit: (w) => {
2248
2249
  e.onAction({
2249
2250
  title: e.i18n?.addToCartButton ?? "Sepete Ekle",
2250
2251
  type: "addToCart",
2251
- payload: { sku: N, cartCode: I, quantity: f }
2252
+ payload: { sku: L, cartCode: T, quantity: w }
2252
2253
  });
2253
2254
  }
2254
2255
  });
2255
- u.classList.add("gengage-chat-product-details-atc-stepper"), p.appendChild(u);
2256
+ u.classList.add("gengage-chat-product-details-atc-stepper"), m.appendChild(u);
2256
2257
  }
2257
- const _ = a.url;
2258
- if (_ && G(_)) {
2258
+ const y = a.url;
2259
+ if (y && $(y)) {
2259
2260
  let u = function(E, M) {
2260
2261
  const U = document.createElementNS(P, "circle");
2261
- U.setAttribute("cx", E), U.setAttribute("cy", M), U.setAttribute("r", "3"), T.appendChild(U);
2262
- }, f = function(E, M, U, z) {
2262
+ U.setAttribute("cx", E), U.setAttribute("cy", M), U.setAttribute("r", "3"), I.appendChild(U);
2263
+ }, w = function(E, M, U, z) {
2263
2264
  const H = document.createElementNS(P, "line");
2264
- H.setAttribute("x1", E), H.setAttribute("y1", M), H.setAttribute("x2", U), H.setAttribute("y2", z), T.appendChild(H);
2265
+ H.setAttribute("x1", E), H.setAttribute("y1", M), H.setAttribute("x2", U), H.setAttribute("y2", z), I.appendChild(H);
2265
2266
  };
2266
- const C = document.createElement("button");
2267
- C.className = "gengage-chat-product-details-share", C.type = "button";
2267
+ const k = document.createElement("button");
2268
+ k.className = "gengage-chat-product-details-share", k.type = "button";
2268
2269
  const S = e.i18n?.shareButton ?? "Paylaş";
2269
- C.title = S, C.setAttribute("aria-label", S);
2270
- const P = "http://www.w3.org/2000/svg", T = document.createElementNS(P, "svg");
2271
- T.setAttribute("width", "18"), T.setAttribute("height", "18"), T.setAttribute("viewBox", "0 0 24 24"), T.setAttribute("fill", "none"), T.setAttribute("stroke", "currentColor"), T.setAttribute("stroke-width", "2"), T.setAttribute("stroke-linecap", "round"), T.setAttribute("stroke-linejoin", "round"), u("18", "5"), u("6", "12"), u("18", "19"), f("8.59", "13.51", "15.42", "17.49"), f("15.41", "6.51", "8.59", "10.49"), C.appendChild(T), C.addEventListener("click", async () => {
2270
+ k.title = S, k.setAttribute("aria-label", S);
2271
+ const P = "http://www.w3.org/2000/svg", I = document.createElementNS(P, "svg");
2272
+ I.setAttribute("width", "18"), I.setAttribute("height", "18"), I.setAttribute("viewBox", "0 0 24 24"), I.setAttribute("fill", "none"), I.setAttribute("stroke", "currentColor"), I.setAttribute("stroke-width", "2"), I.setAttribute("stroke-linecap", "round"), I.setAttribute("stroke-linejoin", "round"), u("18", "5"), u("6", "12"), u("18", "19"), w("8.59", "13.51", "15.42", "17.49"), w("15.41", "6.51", "8.59", "10.49"), k.appendChild(I), k.addEventListener("click", async () => {
2272
2273
  const E = a.name;
2273
2274
  try {
2274
- navigator.share ? await navigator.share({ title: E ?? "", url: _ }) : navigator.clipboard && (await navigator.clipboard.writeText(_), C.classList.add("gengage-chat-product-details-share--copied"), setTimeout(() => C.classList.remove("gengage-chat-product-details-share--copied"), 1500));
2275
+ navigator.share ? await navigator.share({ title: E ?? "", url: y }) : navigator.clipboard && (await navigator.clipboard.writeText(y), k.classList.add("gengage-chat-product-details-share--copied"), setTimeout(() => k.classList.remove("gengage-chat-product-details-share--copied"), 1500));
2275
2276
  } catch {
2276
2277
  }
2277
- }), p.appendChild(C);
2278
+ }), m.appendChild(k);
2278
2279
  }
2279
- p.childElementCount > 0 && s.appendChild(p), t.appendChild(s);
2280
- const k = a.description, A = a.specifications;
2281
- return (k || A) && t.appendChild(da(k, A, e)), t;
2280
+ m.childElementCount > 0 && s.appendChild(m), t.appendChild(s);
2281
+ const C = a.description, A = a.specifications;
2282
+ return (C || A) && t.appendChild(da(C, A, e)), t;
2282
2283
  }
2283
2284
  function da(o, e, t) {
2284
2285
  const a = document.createElement("div");
@@ -2299,12 +2300,12 @@ function da(o, e, t) {
2299
2300
  l.className = "gengage-chat-product-detail-tab-panel", o && (l.style.display = "none");
2300
2301
  const g = document.createElement("table");
2301
2302
  g.className = "gengage-chat-product-specs-table";
2302
- const c = Array.isArray(e) ? e : Object.entries(e).map(([h, m]) => ({ key: h, value: m }));
2303
- for (const h of c) {
2304
- const m = document.createElement("tr"), d = document.createElement("td");
2305
- d.className = "gengage-chat-product-specs-key", d.textContent = h.key;
2303
+ const c = Array.isArray(e) ? e : Object.entries(e).map(([p, h]) => ({ key: p, value: h }));
2304
+ for (const p of c) {
2305
+ const h = document.createElement("tr"), d = document.createElement("td");
2306
+ d.className = "gengage-chat-product-specs-key", d.textContent = p.key;
2306
2307
  const v = document.createElement("td");
2307
- v.className = "gengage-chat-product-specs-value", v.textContent = h.value, m.appendChild(d), m.appendChild(v), g.appendChild(m);
2308
+ v.className = "gengage-chat-product-specs-value", v.textContent = p.value, h.appendChild(d), h.appendChild(v), g.appendChild(h);
2308
2309
  }
2309
2310
  l.appendChild(g), i.push(l);
2310
2311
  }
@@ -2319,7 +2320,7 @@ function da(o, e, t) {
2319
2320
  for (const s of i) a.appendChild(s);
2320
2321
  return a;
2321
2322
  }
2322
- function Te(o, e, t) {
2323
+ function Ie(o, e, t) {
2323
2324
  if (!t || t.type === "related") return o;
2324
2325
  const a = o.map((n) => {
2325
2326
  const r = e.elements[n]?.props?.product, s = r ? Number(r.price) : NaN;
@@ -2328,7 +2329,7 @@ function Te(o, e, t) {
2328
2329
  return a.sort((n, i) => n.price === 1 / 0 && i.price === 1 / 0 ? 0 : n.price === 1 / 0 ? 1 : i.price === 1 / 0 ? -1 : t.direction === "desc" ? i.price - n.price : n.price - i.price), a.map((n) => n.id);
2329
2330
  }
2330
2331
  function pa(o, e, t, a) {
2331
- const n = Te(e, t, a), i = /* @__PURE__ */ new Map();
2332
+ const n = Ie(e, t, a), i = /* @__PURE__ */ new Map();
2332
2333
  for (const r of Array.from(o.children)) {
2333
2334
  const s = r.dataset.elementId;
2334
2335
  s && i.set(s, r);
@@ -2345,20 +2346,20 @@ function ha(o, e, t, a) {
2345
2346
  if (i.length > 1 && a?.onSortChange) {
2346
2347
  const g = document.createElement("div");
2347
2348
  g.className = "gengage-chat-product-sort-toolbar";
2348
- const c = a.productSort ?? { type: "related" }, h = [
2349
+ const c = a.productSort ?? { type: "related" }, p = [
2349
2350
  { label: a.i18n?.sortRelated ?? "Önerilen", sortState: { type: "related" } },
2350
2351
  { label: a.i18n?.sortPriceAsc ?? "Fiyat ↑", sortState: { type: "price", direction: "asc" } },
2351
2352
  { label: a.i18n?.sortPriceDesc ?? "Fiyat ↓", sortState: { type: "price", direction: "desc" } }
2352
2353
  ];
2353
- for (const m of h) {
2354
+ for (const h of p) {
2354
2355
  const d = document.createElement("button");
2355
- d.className = "gengage-chat-product-sort-btn", d.type = "button", c.type === m.sortState.type && c.direction === m.sortState.direction && d.classList.add("gengage-chat-product-sort-btn--active"), d.textContent = m.label, d.addEventListener("click", () => {
2356
- a.onSortChange?.(m.sortState), pa(r, i, e, m.sortState), g.querySelectorAll(".gengage-chat-product-sort-btn").forEach((w) => w.classList.remove("gengage-chat-product-sort-btn--active")), d.classList.add("gengage-chat-product-sort-btn--active");
2356
+ d.className = "gengage-chat-product-sort-btn", d.type = "button", c.type === h.sortState.type && c.direction === h.sortState.direction && d.classList.add("gengage-chat-product-sort-btn--active"), d.textContent = h.label, d.addEventListener("click", () => {
2357
+ a.onSortChange?.(h.sortState), pa(r, i, e, h.sortState), g.querySelectorAll(".gengage-chat-product-sort-btn").forEach((_) => _.classList.remove("gengage-chat-product-sort-btn--active")), d.classList.add("gengage-chat-product-sort-btn--active");
2357
2358
  }), g.appendChild(d);
2358
2359
  }
2359
2360
  if (a.onToggleComparisonSku) {
2360
- const m = document.createElement("div");
2361
- m.className = "gengage-chat-product-sort-separator", g.appendChild(m);
2361
+ const h = document.createElement("div");
2362
+ h.className = "gengage-chat-product-sort-separator", g.appendChild(h);
2362
2363
  const d = document.createElement("button");
2363
2364
  d.className = "gengage-chat-comparison-toggle-btn", d.type = "button", a.comparisonSelectMode && d.classList.add("gengage-chat-comparison-toggle-btn--active"), d.textContent = a.i18n?.compareSelected ?? "Karşılaştır", d.addEventListener("click", () => {
2364
2365
  a.onToggleComparisonSku?.("");
@@ -2368,13 +2369,13 @@ function ha(o, e, t, a) {
2368
2369
  }
2369
2370
  const r = document.createElement("div");
2370
2371
  r.className = "gengage-chat-product-grid";
2371
- const s = Te(i, e, a?.productSort);
2372
+ const s = Ie(i, e, a?.productSort);
2372
2373
  for (const g of s) {
2373
2374
  if (!e.elements[g]) continue;
2374
2375
  const c = t(g);
2375
2376
  c && (c.dataset.elementId = g, r.appendChild(c));
2376
2377
  }
2377
- if (Ce() && r.classList.add("gengage-chat-product-grid--mobile"), n.appendChild(r), o.props?.endOfList !== !0 && i.length > 0) {
2378
+ if (Ee() && r.classList.add("gengage-chat-product-grid--mobile"), n.appendChild(r), o.props?.endOfList !== !0 && i.length > 0) {
2378
2379
  const g = document.createElement("button");
2379
2380
  g.className = "gengage-chat-product-grid-view-more", g.type = "button", g.textContent = a?.i18n?.viewMoreLabel ?? "Daha Fazla Göster", g.addEventListener("click", () => {
2380
2381
  a?.onAction({ title: "More", type: "moreProductList", payload: {} });
@@ -2387,10 +2388,10 @@ function ha(o, e, t, a) {
2387
2388
  return n;
2388
2389
  }
2389
2390
  function ua(o, e) {
2390
- const t = o.props ?? {}, a = t.keyDifferencesHtml, n = t.recommended, i = t.products ?? [], r = t.attributes ?? [], s = t.highlights ?? [], l = t.specialCases, g = t.recommendedText, c = t.winnerHits, h = t.productActions;
2391
+ const t = o.props ?? {}, a = t.keyDifferencesHtml, n = t.recommended, i = t.products ?? [], r = t.attributes ?? [], s = t.highlights ?? [], l = t.specialCases, g = t.recommendedText, c = t.winnerHits, p = t.productActions;
2391
2392
  if (!n)
2392
2393
  return document.createElement("div");
2393
- const m = {
2394
+ const h = {
2394
2395
  recommended: n,
2395
2396
  products: i,
2396
2397
  attributes: r,
@@ -2400,7 +2401,7 @@ function ua(o, e) {
2400
2401
  e.onProductClick?.({ sku: v, url: "" });
2401
2402
  }
2402
2403
  };
2403
- g !== void 0 && (m.recommendedText = g), c !== void 0 && (m.winnerHits = c), h !== void 0 && (m.productActions = h), a !== void 0 && (m.keyDifferencesHtml = a), e.i18n && (m.i18n = {
2404
+ g !== void 0 && (h.recommendedText = g), c !== void 0 && (h.winnerHits = c), p !== void 0 && (h.productActions = p), a !== void 0 && (h.keyDifferencesHtml = a), e.i18n && (h.i18n = {
2404
2405
  comparisonHeading: e.i18n.panelTitleComparisonResults,
2405
2406
  recommendedChoiceLabel: e.i18n.recommendedChoiceLabel,
2406
2407
  highlightsLabel: e.i18n.highlightsLabel,
@@ -2408,8 +2409,8 @@ function ua(o, e) {
2408
2409
  specialCasesLabel: e.i18n.specialCasesLabel,
2409
2410
  addToCartButton: e.i18n.addToCartButton
2410
2411
  });
2411
- const d = jt(m);
2412
- return Ce() && d.classList.add("gengage-chat-comparison--mobile"), d;
2412
+ const d = jt(h);
2413
+ return Ee() && d.classList.add("gengage-chat-comparison--mobile"), d;
2413
2414
  }
2414
2415
  function ma(o) {
2415
2416
  const e = document.createElement("hr");
@@ -2473,18 +2474,18 @@ function wa(o) {
2473
2474
  }, isRunning: !1 };
2474
2475
  e.innerHTML = "";
2475
2476
  let l = 0, g = null, c = !0;
2476
- function h() {
2477
+ function p() {
2477
2478
  if (!c || l >= s.length) {
2478
2479
  c = !1, i?.();
2479
2480
  return;
2480
2481
  }
2481
- const m = s[l], d = document.createElement("span");
2482
+ const h = s[l], d = document.createElement("span");
2482
2483
  d.className = "gengage-chat-typewriter-block";
2483
- for (const v of m)
2484
+ for (const v of h)
2484
2485
  d.appendChild(v.cloneNode(!0));
2485
- e.appendChild(d), l++, n?.(), l < s.length ? g = setTimeout(h, a) : (c = !1, i?.());
2486
+ e.appendChild(d), l++, n?.(), l < s.length ? g = setTimeout(p, a) : (c = !1, i?.());
2486
2487
  }
2487
- return h(), {
2488
+ return p(), {
2488
2489
  complete() {
2489
2490
  c && (g !== null && clearTimeout(g), c = !1, e.innerHTML = t, i?.());
2490
2491
  },
@@ -2507,20 +2508,20 @@ function ya(o) {
2507
2508
  const s = document.createTreeWalker(e, NodeFilter.SHOW_TEXT);
2508
2509
  let l = s.nextNode(), g = !1;
2509
2510
  for (; l && !g; ) {
2510
- const c = l.textContent ?? "", h = c.toLowerCase().indexOf(i);
2511
- if (h === -1) {
2511
+ const c = l.textContent ?? "", p = c.toLowerCase().indexOf(i);
2512
+ if (p === -1) {
2512
2513
  l = s.nextNode();
2513
2514
  continue;
2514
2515
  }
2515
- const m = c.slice(0, h), d = c.slice(h, h + r.short_name.length), v = c.slice(h + r.short_name.length), w = l.parentNode;
2516
- if (!w) {
2516
+ const h = c.slice(0, p), d = c.slice(p, p + r.short_name.length), v = c.slice(p + r.short_name.length), _ = l.parentNode;
2517
+ if (!_) {
2517
2518
  l = s.nextNode();
2518
2519
  continue;
2519
2520
  }
2520
- const b = document.createElement("a");
2521
- b.className = "gengage-product-mention", b.textContent = d, b.href = "#", b.addEventListener("click", (N) => {
2522
- N.preventDefault(), a(r.sku);
2523
- }), m && w.insertBefore(document.createTextNode(m), l), w.insertBefore(b, l), v && w.insertBefore(document.createTextNode(v), l), w.removeChild(l), g = !0;
2521
+ const x = document.createElement("a");
2522
+ x.className = "gengage-product-mention", x.textContent = d, x.href = "#", x.addEventListener("click", (L) => {
2523
+ L.preventDefault(), a(r.sku);
2524
+ }), h && _.insertBefore(document.createTextNode(h), l), _.insertBefore(x, l), v && _.insertBefore(document.createTextNode(v), l), _.removeChild(l), g = !0;
2524
2525
  }
2525
2526
  }
2526
2527
  }
@@ -2534,7 +2535,7 @@ const _a = /* @__PURE__ */ new Set(["search", "info", "review", "similar"]), ka
2534
2535
  function Ca(o) {
2535
2536
  return !!(o.icon && _a.has(o.icon) || o.action?.type && ka.has(o.action.type));
2536
2537
  }
2537
- const Ie = "gengage_choice_prompter_dismissed";
2538
+ const Le = "gengage_choice_prompter_dismissed";
2538
2539
  function Ea(o) {
2539
2540
  const e = document.createElement("div");
2540
2541
  e.className = "gengage-chat-choice-prompter";
@@ -2544,23 +2545,23 @@ function Ea(o) {
2544
2545
  a.className = "gengage-chat-choice-prompter-suggestion", a.textContent = o.suggestion, e.appendChild(a);
2545
2546
  const n = document.createElement("button");
2546
2547
  n.type = "button", n.className = "gengage-chat-choice-prompter-cta", n.textContent = o.ctaLabel, n.addEventListener("click", () => {
2547
- pe(), e.remove(), o.onCtaClick();
2548
+ he(), e.remove(), o.onCtaClick();
2548
2549
  }), e.appendChild(n);
2549
2550
  const i = document.createElement("button");
2550
2551
  return i.type = "button", i.className = "gengage-chat-choice-prompter-dismiss", i.textContent = "×", i.setAttribute("aria-label", "Dismiss"), i.addEventListener("click", () => {
2551
- pe(), e.remove(), o.onDismiss?.();
2552
+ he(), e.remove(), o.onDismiss?.();
2552
2553
  }), e.appendChild(i), e;
2553
2554
  }
2554
2555
  function Sa() {
2555
2556
  try {
2556
- return sessionStorage.getItem(Ie) === "1";
2557
+ return sessionStorage.getItem(Le) === "1";
2557
2558
  } catch {
2558
2559
  return !1;
2559
2560
  }
2560
2561
  }
2561
- function pe() {
2562
+ function he() {
2562
2563
  try {
2563
- sessionStorage.setItem(Ie, "1");
2564
+ sessionStorage.setItem(Le, "1");
2564
2565
  } catch {
2565
2566
  }
2566
2567
  }
@@ -2899,7 +2900,7 @@ class Pa {
2899
2900
  this.snapshots.clear(), this.snapshotTypes.clear(), this.activePanelMessageId = null, this.currentType = null, this.threads = [];
2900
2901
  }
2901
2902
  }
2902
- class he {
2903
+ class ue {
2903
2904
  constructor(e) {
2904
2905
  this.favoritedSkus = /* @__PURE__ */ new Set(), this._db = e;
2905
2906
  }
@@ -3014,21 +3015,21 @@ class he {
3014
3015
  this._db?.close(), this._db = null;
3015
3016
  }
3016
3017
  }
3017
- const Le = "gengage_kvkk_shown", Ba = ["kvkk", "kişisel veri", "kisisel veri"], Ma = /\b6698\b/;
3018
+ const Ne = "gengage_kvkk_shown", Ba = ["kvkk", "kişisel veri", "kisisel veri"], Ma = /\b6698\b/;
3018
3019
  function le(o) {
3019
3020
  const e = o.toLowerCase();
3020
3021
  return Ba.some((t) => e.includes(t)) || Ma.test(e);
3021
3022
  }
3022
- function ue(o) {
3023
+ function me(o) {
3023
3024
  try {
3024
- return localStorage.getItem(`${Le}_${o}`) === "1";
3025
+ return localStorage.getItem(`${Ne}_${o}`) === "1";
3025
3026
  } catch {
3026
3027
  return !1;
3027
3028
  }
3028
3029
  }
3029
3030
  function za(o) {
3030
3031
  try {
3031
- localStorage.setItem(`${Le}_${o}`, "1");
3032
+ localStorage.setItem(`${Ne}_${o}`, "1");
3032
3033
  } catch {
3033
3034
  }
3034
3035
  }
@@ -3057,167 +3058,167 @@ const Ua = {
3057
3058
  function Ha(o) {
3058
3059
  return o ? Ua[o.toLowerCase().slice(0, 2)] ?? "TURKISH" : "TURKISH";
3059
3060
  }
3060
- const Fa = ':host{all:initial;font-family:var(--gengage-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:var(--gengage-font-size, 14px)}.gengage-chat-root{position:fixed;z-index:var(--gengage-z-index, 2147483647);--_gengage-chat-offset: var(--gengage-chat-offset, 20px);--_gengage-chat-launcher-bottom: var(--gengage-chat-launcher-bottom, 20px);--_gengage-chat-launcher-right: var(--gengage-chat-launcher-right, 20px);--_gengage-chat-launcher-size: var(--gengage-chat-launcher-size, 56px);--_gengage-chat-drawer-width: var(--gengage-chat-width, 400px);--_gengage-chat-radius: var(--gengage-chat-shell-radius, 12px);--_gengage-chat-header-height: var(--gengage-chat-header-height, 60px);--_gengage-chat-conversation-width: var(--gengage-chat-conversation-width, 396px);--_gengage-chat-panel-min-width: var(--gengage-chat-panel-min-width, 320px);--_gengage-chat-panel-max-width: var(--gengage-chat-panel-max-width, 860px);--_gengage-chat-input-height: var(--gengage-chat-input-height, 48px);--_gengage-chat-shadow: var(--gengage-chat-shadow, 0 12px 40px rgba(15, 23, 42, .18));--_gengage-border-color: var(--gengage-border-color, #e5e7eb);--_gengage-discount-color: var(--gengage-discount-color, #ef4444);--_gengage-success-color: var(--gengage-success-color, #16a34a);--_gengage-text-secondary: var(--gengage-text-secondary, #64748b);--_gengage-qty-btn-size: var(--gengage-qty-btn-size, 28px);--_gengage-qty-btn-size-compact: var(--gengage-qty-btn-size-compact, 24px)}.gengage-chat-launcher-container{position:fixed;bottom:var(--_gengage-chat-launcher-bottom);right:var(--_gengage-chat-launcher-right);display:flex;flex-direction:column;align-items:flex-end;gap:10px;z-index:var(--gengage-z-index, 2147483647)}.gengage-chat-launcher-content-area,.gengage-chat-launcher-content-area-bottom{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.gengage-chat-launcher-content-area:empty,.gengage-chat-launcher-content-area-bottom:empty{display:none}.gengage-chat-root--open .gengage-chat-launcher-content-area,.gengage-chat-root--open .gengage-chat-launcher-content-area-bottom{display:none}.gengage-chat-launcher{width:var(--_gengage-chat-launcher-size);height:var(--_gengage-chat-launcher-size);border-radius:50%;border:none;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 22px #0f172a47;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s ease;position:relative;flex-shrink:0}.gengage-chat-launcher:hover{transform:scale(1.05);box-shadow:0 14px 28px #0f172a47}.gengage-chat-launcher svg{width:24px;height:24px}.gengage-chat-launcher--hidden-mobile{display:none!important}.gengage-chat-launcher-tooltip{position:absolute;right:calc(100% + 12px);top:50%;transform:translateY(-50%);padding:6px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:13px;font-weight:500;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease;box-shadow:0 2px 8px #00000026}.gengage-chat-launcher-tooltip:after{content:"";position:absolute;left:100%;top:50%;transform:translateY(-50%);border:5px solid transparent;border-left-color:#1e293b}.gengage-chat-launcher:hover .gengage-chat-launcher-tooltip{opacity:1}.gengage-chat-root--open .gengage-chat-launcher-tooltip{display:none}.gengage-chat-proactive{position:fixed;bottom:calc(var(--_gengage-chat-launcher-bottom) + var(--_gengage-chat-launcher-size) + 14px);right:var(--_gengage-chat-launcher-right);width:280px;padding:16px 18px;border-radius:16px;background:#fff;box-shadow:0 8px 30px #0000001f,0 2px 8px #0000000f;opacity:0;transform:translateY(8px) scale(.96);transition:opacity .25s ease,transform .25s ease;z-index:2147483645}.gengage-chat-proactive--visible{opacity:1;transform:translateY(0) scale(1)}.gengage-chat-proactive-message{margin:0 0 12px;font-size:14px;line-height:1.5;color:#1f2937}.gengage-chat-proactive-actions{display:flex;gap:8px}.gengage-chat-proactive-accept{flex:1;padding:8px 16px;border:none;border-radius:10px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;transition:filter .15s ease}.gengage-chat-proactive-accept:hover{filter:brightness(1.08)}.gengage-chat-proactive-dismiss{position:absolute;top:8px;right:8px;width:24px;height:24px;border:none;border-radius:50%;background:transparent;color:#64748b;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}.gengage-chat-proactive-dismiss:hover{color:#475569;background:#f1f5f9}.gengage-chat-drawer{position:fixed;top:0;bottom:0;right:0;width:var(--_gengage-chat-drawer-width);max-height:-webkit-fill-available;max-height:100dvh;border-radius:0;background:var(--gengage-background-color, #fff);box-shadow:var(--_gengage-chat-shadow);display:flex;flex-direction:column;overflow:hidden;z-index:var(--gengage-z-index, 2147483647);transform-origin:right center;clip-path:inset(0);transition:clip-path .42s cubic-bezier(.25,.46,.45,.94),opacity .32s ease}.gengage-chat-root--mobile .gengage-chat-launcher-container{right:16px;bottom:calc(16px + env(safe-area-inset-bottom))}.gengage-chat-root--mobile .gengage-chat-drawer{left:0;right:0;bottom:0;width:100%;max-width:none;max-height:-webkit-fill-available;max-height:100dvh;border-radius:16px 16px 0 0;padding-bottom:env(safe-area-inset-bottom,0px);clip-path:inset(0);transition:clip-path .42s cubic-bezier(.25,.46,.45,.94),opacity .32s ease}.gengage-chat-root--mobile.gengage-chat-root--mobile-half .gengage-chat-drawer{top:auto;height:min(72dvh,620px);max-height:min(72dvh,620px)}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-drawer{top:0;height:100dvh;max-height:100dvh;border-radius:0}.gengage-chat-root--mobile .gengage-chat-input-area{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));transform:translateY(calc(-1 * var(--gengage-keyboard-offset, 0px)))}.gengage-chat-header{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;min-height:var(--_gengage-chat-header-height);padding:4px 12px;background:var(--gengage-chat-header-bg, #1d2939);color:var(--gengage-chat-header-foreground, #fff);box-shadow:0 4px 20px #00000014,0 0 2px #0000001f;border:none;position:relative;z-index:2}.gengage-chat-header-left{display:flex;align-items:center;gap:10px;min-width:0}.gengage-chat-header-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0;border:2px solid rgba(255,255,255,.15)}.gengage-chat-header-info{display:flex;flex-direction:column;gap:2px;min-width:0}.gengage-chat-header-title-row{display:flex;align-items:center;gap:6px}.gengage-chat-header-title{font-weight:700;font-size:15px;line-height:1.25;letter-spacing:.01em;color:inherit}.gengage-chat-header-badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:4px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;line-height:1.5}.gengage-chat-header-powered{display:flex;align-items:center;gap:4px;font-size:11px;color:#ffffffbf;text-decoration:none;transition:color .15s}.gengage-chat-header-powered:hover{color:#fffc}.gengage-chat-header-powered svg{width:12px;height:12px;opacity:.6}.gengage-chat-header-right{display:flex;align-items:center;gap:4px;flex-shrink:0}.gengage-chat-header-btn{width:32px;height:32px;border-radius:8px;background:transparent;border:1px solid rgba(255,255,255,.12);color:#ffffffb3;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;line-height:1;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.gengage-chat-header-btn:hover{background:#ffffff1a;color:#fff;border-color:#ffffff40}.gengage-chat-close{width:32px;height:32px;border-radius:8px;background:transparent;border:1px solid rgba(255,255,255,.12);color:#ffffffb3;font-size:18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.gengage-chat-close:hover{background:#ffffff1a;color:#fff;border-color:#ffffff40}.gengage-chat-body{display:flex;flex:1;overflow:hidden;min-height:0}.gengage-chat-panel{display:none;width:0;overflow:hidden;transition:width .22s cubic-bezier(.2,.72,.2,1)}.gengage-chat-panel--visible{display:flex;flex-direction:column;position:relative;width:440px;min-width:440px;border-right:1px solid var(--_gengage-border-color);overflow-y:auto;padding:16px;background:#f8fafc}.gengage-chat-panel-divider{display:flex;align-items:center;width:4px;cursor:pointer;background:#e5e7eb;position:relative;flex-shrink:0;transition:background .15s;z-index:2}.gengage-chat-panel-divider:hover{background:#cbd5e1}.gengage-chat-panel-divider--hidden{display:none}.gengage-chat-panel-divider-toggle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:24px;height:48px;border:1px solid var(--_gengage-border-color);border-radius:6px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--_gengage-text-secondary);box-shadow:0 1px 3px #00000014;transition:background .15s,color .15s;padding:0;line-height:1}.gengage-chat-panel-divider-toggle:hover{background:#f1f5f9;color:#334155}.gengage-chat-panel--collapsed{flex:0 0 0px!important;width:0!important;min-width:0!important;max-width:0!important;padding:0!important;border-right:none!important;overflow:hidden}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider{width:0;background:transparent}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider .gengage-chat-panel-divider-toggle{left:0;transform:translateY(-50%)}.gengage-chat-conversation{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden;background:var(--gengage-background-color, #fff);position:relative;z-index:1}.gengage-chat-drawer--with-panel{width:auto;background:transparent;box-shadow:none}.gengage-chat-drawer--with-panel .gengage-chat-header{border-radius:0;flex-shrink:0}.gengage-chat-drawer--with-panel .gengage-chat-body{flex:1 1 0;min-height:0;gap:0;padding:0;align-items:stretch}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{flex:0 0 auto;width:clamp(var(--_gengage-chat-panel-min-width),50vw,var(--_gengage-chat-panel-max-width));min-width:var(--_gengage-chat-panel-min-width);max-width:var(--_gengage-chat-panel-max-width);border-right:none;background:#fff;padding:0 16px 16px;overflow-y:auto;margin:0;border-radius:0;box-shadow:0 8px 32px #0f172a1f,0 2px 8px #0f172a0f;max-height:100dvh}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider{width:0;background:transparent}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle{width:20px;height:48px;border-radius:10px;background:var(--gengage-primary-color, #3b82f6);color:#fff;border:2px solid #fff;box-shadow:0 2px 8px #0f172a2e;font-size:12px;z-index:10}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle:hover{background:var(--gengage-primary-hover, #2563eb);color:#fff}.gengage-chat-drawer--with-panel .gengage-chat-conversation{flex:0 0 var(--_gengage-chat-conversation-width);width:var(--_gengage-chat-conversation-width);border-left:none;background:var(--gengage-background-color, #fff);box-shadow:-4px 0 24px #0f172a1f,-1px 0 4px #0f172a0f}.gengage-chat-drawer--with-panel .gengage-chat-messages{padding-right:6px;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.12) transparent}.gengage-chat-drawer--with-panel .gengage-chat-messages::-webkit-scrollbar{width:0}.gengage-chat-drawer--with-panel:has(.gengage-chat-panel--collapsed){width:var(--_gengage-chat-conversation-width);background:var(--gengage-background-color, #fff);box-shadow:var(--_gengage-chat-shadow)}.gengage-chat-drawer--with-panel .gengage-chat-footer{display:none}.gengage-chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px;min-height:0;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}.gengage-chat-messages::-webkit-scrollbar{width:6px}.gengage-chat-messages::-webkit-scrollbar-track{background:transparent}.gengage-chat-messages::-webkit-scrollbar-thumb{background:#0000001f;border-radius:3px}.gengage-chat-messages::-webkit-scrollbar-thumb:hover{background:#0003}.gengage-chat-bubble{max-width:85%;padding:12px 16px;border-radius:12px;line-height:1.5;font-size:14px;font-weight:500;word-wrap:break-word;overflow-wrap:break-word;animation:gengage-chat-msg-in .3s cubic-bezier(.2,.7,.2,1)}@keyframes gengage-chat-msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-bubble--user{align-self:flex-end;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);border-bottom-right-radius:4px}.gengage-chat-bubble--assistant{align-self:flex-start;background:#f3f4f6;color:#1f2937;border-bottom-left-radius:4px;min-width:120px}.gengage-chat-bubble--active{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:-2px}.gengage-chat-bubble--assistant:empty{display:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a{color:var(--gengage-primary-color, #2563eb);text-decoration:underline}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a:hover{text-decoration:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p{margin:0 0 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p:last-child{margin-bottom:0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text ul,.gengage-chat-bubble--assistant .gengage-chat-bubble-text ol{margin:6px 0;padding-left:20px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text li{margin-bottom:6px;line-height:1.5}.gengage-chat-bubble--assistant .gengage-chat-bubble-text code{background:#0000000f;padding:1px 4px;border-radius:3px;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text pre{background:#0000000a;padding:8px;border-radius:6px;overflow-x:auto;margin:4px 0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text table{border-collapse:collapse;margin:4px 0;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text th,.gengage-chat-bubble--assistant .gengage-chat-bubble-text td{border:1px solid var(--_gengage-border-color);padding:4px 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text img{max-width:100%;height:auto;border-radius:4px;margin:4px 0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text h1,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h2,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h3,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h4,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h5,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h6{margin:8px 0 4px;line-height:1.3;color:#0f172a}.gengage-chat-bubble--assistant .gengage-chat-bubble-text blockquote{border-left:3px solid var(--_gengage-border-color);padding-left:12px;margin:4px 0;color:var(--_gengage-text-secondary)}.gengage-chat-bubble--first{border-left:3px solid var(--gengage-accent-primary, #3b82f6);padding-left:12px}.gengage-chat-bubble--first .gengage-chat-bubble-text{font-size:15px}.gengage-chat-typing{display:flex;align-items:center;gap:5px;padding:8px 4px;align-self:flex-start;max-width:85%}.gengage-chat-typing:has(.gengage-chat-typing-text),.gengage-chat-typing:has(.gengage-chat-thinking-steps){background:#f3f4f6;padding:10px 14px;border-radius:12px 12px 12px 4px;gap:8px}.gengage-chat-typing-dots{display:flex;align-items:center;gap:5px}.gengage-chat-typing-dots span{width:6px;height:6px;border-radius:50%;background:#94a3b8;display:inline-block;animation:gengage-chat-typing-fade 1.4s ease-in-out infinite}.gengage-chat-typing-dots span:nth-child(2){animation-delay:.2s}.gengage-chat-typing-dots span:nth-child(3){animation-delay:.4s}@keyframes gengage-chat-typing-fade{0%,to{opacity:.25}50%{opacity:1}}.gengage-chat-typing-sparkle{animation:gengage-sparkle-pulse 1.2s infinite}@keyframes gengage-sparkle-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-typing-text{font-size:13px;color:var(--_gengage-text-secondary);font-style:italic;flex:1;min-width:0;word-wrap:break-word;overflow-wrap:break-word}.gengage-chat-thinking-steps{display:flex;flex-direction:column;gap:4px;padding:4px 0}.gengage-chat-thinking-step{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--gengage-chat-text-secondary, #666)}.gengage-chat-thinking-step-marker{font-size:12px;width:16px;text-align:center;flex-shrink:0}.gengage-chat-thinking-step-marker--done{color:var(--gengage-chat-success, #4caf50)}.gengage-chat-thinking-step-marker--active{color:var(--gengage-chat-primary, #1976d2);animation:gengage-thinking-pulse 1.5s ease-in-out infinite}@keyframes gengage-thinking-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-thinking-step-text{line-height:1.4}.gengage-chat-error{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 14px;border-radius:10px;background:#fef2f2;color:#991b1b;font-size:13px;text-align:center;border:1px solid #fecaca}.gengage-chat-error-retry{flex-shrink:0;padding:4px 12px;border:1px solid #fca5a5;border-radius:6px;background:#fff;color:#991b1b;font-size:12px;font-weight:500;cursor:pointer;transition:background .15s}.gengage-chat-error-retry:hover{background:#fee2e2}.gengage-chat-input-area{display:flex;flex-wrap:wrap;align-items:center;gap:0;padding:8px 12px;border-top:1px solid var(--_gengage-border-color);background:var(--gengage-background-color, #fff)}.gengage-chat-input-pill{display:flex;align-items:center;gap:4px;flex:1;min-width:0;height:44px;background:#f3f4f6;border:1px solid var(--_gengage-border-color);border-radius:30px;padding:2px 8px;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.gengage-chat-input-pill:focus-within{border-color:var(--gengage-primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f626}.gengage-chat-input{flex:1;min-width:0;min-height:40px;max-height:120px;padding:0 6px 0 14px;border:none;border-radius:0;font-size:14px;font-family:inherit;line-height:1.4;align-content:center;outline:none;background:transparent;color:#1f2937;resize:none;overflow-y:hidden}@media(max-width:767px){.gengage-chat-input{max-height:40px;white-space:nowrap;overflow:hidden}.gengage-chat-send{width:44px;height:44px;min-width:44px}}.gengage-chat-input::placeholder{font-size:14px;color:#6b7280}.gengage-chat-send{width:36px;height:36px;min-width:36px;padding:0;border:none;border-radius:50%;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-weight:700;font-size:0;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease,transform .15s ease;box-shadow:0 2px 4px #0000001f}.gengage-chat-send:hover{filter:brightness(.92);transform:translateY(-1px);box-shadow:0 4px 8px #0000002e}.gengage-chat-send:active{transform:translateY(0);box-shadow:0 1px 2px #0000001f}.gengage-chat-send svg{width:18px;height:18px}.gengage-chat-send:disabled{background:#d1d5db;box-shadow:none;cursor:not-allowed}.gengage-chat-footer{padding:4px 10px;text-align:center;font-size:10px;color:#6b7280;border-top:1px solid #f1f5f9;background:var(--gengage-background-color, #fff)}.gengage-chat-uispec{width:100%}.gengage-chat-uispec:empty{display:none}.gengage-chat-uispec>*{animation:gengage-chat-widget-enter .16s cubic-bezier(.2,.7,.2,1) both}@keyframes gengage-chat-widget-enter{0%{opacity:0;transform:translateY(5px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.gengage-chat-action-buttons{display:flex;gap:8px;padding:6px 0 4px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.gengage-chat-action-buttons::-webkit-scrollbar{display:none}.gengage-chat-action-btn{flex:0 0 auto;padding:8px 16px;border:none;border-radius:999px;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:13px;font-weight:600;line-height:1.25;font-family:inherit;cursor:pointer;white-space:nowrap;transition:filter .15s ease,transform .1s ease}.gengage-chat-action-btn:hover{filter:brightness(.92)}.gengage-chat-action-btn:active{transform:scale(.97)}.gengage-chat-product-card{position:relative;border:1px solid #eee;border-radius:16px;overflow:hidden;background:#fff;width:160px;min-width:160px;max-width:160px;box-shadow:0 2px 8px #0000000f;transition:transform .1s ease,box-shadow .2s ease}.gengage-chat-product-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.gengage-chat-product-card-img{width:100%;height:120px;object-fit:contain;display:block;background:#fff;padding:8px;box-sizing:border-box}.gengage-chat-product-card-body{display:flex;flex-direction:column;gap:4px;padding:8px 10px 10px;text-align:center}.gengage-chat-product-card-name{font-size:13px;font-weight:600;color:#1f2937;line-height:1.35;margin-bottom:0;min-height:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.gengage-chat-product-card-brand{font-size:10px;color:#666}.gengage-chat-product-card-rating{font-size:11px;color:#f59e0b;line-height:1}.gengage-chat-product-card-review-count{color:#64748b;font-size:10px}.gengage-chat-product-card-price{display:flex;align-items:baseline;justify-content:center;gap:4px;font-size:16px;font-weight:800;color:#0f172a}.gengage-chat-product-card-original-price{text-decoration:line-through;color:#64748b;font-weight:400;font-size:12px}.gengage-chat-price-skeleton{display:inline-block;width:80px;height:16px;background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:gengage-skeleton-price-pulse 1.5s ease-in-out infinite;border-radius:4px;vertical-align:middle}@keyframes gengage-skeleton-price-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-product-card-cta{display:block;padding:8px 10px;text-align:center;background:transparent;color:var(--gengage-primary-color, #3b82f6);text-decoration:none;font-size:12px;font-weight:700;letter-spacing:.01em;border-top:1px solid #f1f5f9;transition:color .15s ease,background .15s ease}.gengage-chat-product-card-cta:hover{color:var(--gengage-primary-color, #0b24d6);background:#f8fafc}.gengage-chat-product-card-cta:active{background:#f1f5f9}.gengage-chat-product-summary{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:12px;background:#fff;cursor:pointer;transition:background .15s,box-shadow .15s;margin:4px 0}.gengage-chat-product-summary:hover{background:#f9fafb;box-shadow:0 1px 4px #0000000f}.gengage-chat-product-summary__image{flex-shrink:0;width:64px;height:64px;border-radius:8px;overflow:hidden;border:1px solid #f3f4f6;background:#f9fafb}.gengage-chat-product-summary__image img{width:100%;height:100%;object-fit:cover;display:block}.gengage-chat-product-summary__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.gengage-chat-product-summary__name{font-size:13px;font-weight:500;line-height:1.3;color:#111827;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.gengage-chat-product-summary__rating{font-size:11px;color:#f59e0b;line-height:1}.gengage-chat-product-summary__review-count{color:#6b7280;font-size:11px}.gengage-chat-product-summary__price{font-size:13px;font-weight:600;color:#111827;line-height:1;margin-top:2px}.gengage-chat-product-summary__price-original{text-decoration:line-through;color:#6b7280;font-weight:400;font-size:11px}.gengage-chat-product-summary__price-current{color:var(--gengage-primary-color, #111827)}.gengage-chat-product-summary__cta{flex-shrink:0;font-size:12px;font-weight:500;color:var(--gengage-primary-color, #2563eb);text-decoration:none;padding:4px 10px;border-radius:8px;transition:background .15s;white-space:nowrap}.gengage-chat-product-summary__cta:hover{background:#0000000a}.gengage-chat-product-summary__cta:focus-visible{outline:2px solid var(--gengage-primary-color, #2563eb);outline-offset:2px}.gengage-chat-product-grid{display:flex;gap:12px;overflow-x:auto;padding:8px 0;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity;min-height:180px}.gengage-chat-product-grid>*{scroll-snap-align:start;flex:0 0 auto}.gengage-chat-product-grid::-webkit-scrollbar{display:none}.gengage-chat-review-highlights{padding:2px 0 6px}.gengage-chat-review-item{border:1px solid var(--_gengage-border-color);border-radius:12px;padding:10px 12px;background:#fff}.gengage-chat-review-item[data-tone=positive]{border-color:#bbf7d0;background:#f0fdf4}.gengage-chat-review-item[data-tone=negative]{border-color:#fecaca;background:#fef2f2}.gengage-chat-review-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--_gengage-text-secondary);margin-bottom:4px}.gengage-chat-review-text{font-size:13px;line-height:1.45;color:#1f2937}.gengage-chat-review-rating{margin-top:6px;font-size:12px;font-weight:700;color:#0f172a}.gengage-chat-review-empty{font-size:12px;color:var(--_gengage-text-secondary)}.gengage-chat-review-tabs{display:flex;gap:6px;margin-bottom:10px}.gengage-chat-review-tab{padding:6px 14px;border:1px solid var(--_gengage-border-color);border-radius:999px;background:#fff;color:var(--_gengage-text-secondary);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s}.gengage-chat-review-tab:hover{background:#f8fafc}.gengage-chat-review-tab--active{background:#f1f5f9;border-color:#94a3b8;color:#0f172a}.gengage-chat-review-pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.gengage-chat-review-pill{display:flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--_gengage-border-color);border-radius:8px;background:#fff;font-size:12px;color:#334155;box-shadow:0 1px 2px #0000000a}.gengage-chat-review-pill[data-tone=positive]{border-color:#bbf7d0}.gengage-chat-review-pill[data-tone=negative]{border-color:#fecaca}.gengage-chat-review-pill-icon{font-size:11px;font-weight:700}.gengage-chat-review-pill[data-tone=positive] .gengage-chat-review-pill-icon{color:#16a34a}.gengage-chat-review-pill[data-tone=negative] .gengage-chat-review-pill-icon{color:#dc2626}.gengage-chat-review-pill-count{font-size:10px;font-weight:700;background:#f1f5f9;color:var(--_gengage-text-secondary);border-radius:4px;padding:1px 5px}.gengage-chat-review-items{display:grid;gap:10px}.gengage-chat-divider{border:none;border-top:1px solid var(--_gengage-border-color);margin:8px 0}.gengage-chat-divider-wrapper{display:flex;align-items:center;gap:8px;margin:8px 0}.gengage-chat-divider-wrapper hr{flex:1;border:none;border-top:1px solid var(--_gengage-border-color);margin:0}.gengage-chat-divider-label{font-size:11px;color:#6b7280;white-space:nowrap}.gengage-chat--overlay .gengage-chat-drawer{position:fixed;inset:0;width:100%;max-width:480px;max-height:100%;margin:0 auto;border-radius:0;animation:gengage-chat-overlay-in .24s cubic-bezier(.2,.72,.2,1)}.gengage-chat--overlay:before{content:"";position:fixed;inset:0;background:#00000073;z-index:-1}@keyframes gengage-chat-overlay-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-panel-skeleton{display:flex;flex-direction:column;gap:14px;padding:6px 0}.gengage-chat-panel-skeleton-block{height:110px;border-radius:10px;background:linear-gradient(90deg,#e5e7eb 25%,#f3f4f6,#e5e7eb 75%);background-size:200% 100%;animation:gengage-panel-shimmer 1.4s infinite}@keyframes gengage-panel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-panel-skeleton-block--image{height:200px;border-radius:8px;margin-bottom:12px}.gengage-chat-panel-skeleton-block--text{height:16px;border-radius:4px;margin-bottom:8px}.gengage-chat-panel-skeleton-block--text:nth-child(3){width:80%}.gengage-chat-panel-skeleton-block--text:nth-child(4){width:60%}.gengage-chat-panel-skeleton-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.gengage-chat-panel-skeleton-block--card{height:120px;border-radius:8px}.gengage-chat-panel-skeleton-block--row{height:32px;border-radius:4px;margin-bottom:4px}.gengage-chat-panel .gengage-chat-product-card{width:100%;max-width:100%;min-width:0;display:flex;flex-direction:column;border-radius:12px;border:1px solid var(--_gengage-border-color);box-shadow:0 1px 4px #0000000f;overflow:hidden;padding:0}.gengage-chat-panel .gengage-chat-product-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;border-color:#d1d5db}.gengage-chat-panel .gengage-chat-product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));overflow-x:visible;gap:12px;min-height:auto;padding:4px 0}.gengage-chat-panel .gengage-chat-product-card-img{width:100%;height:160px;border-radius:0;object-fit:contain;background:#fafafa;padding:12px;box-sizing:border-box}.gengage-chat-panel .gengage-chat-product-card-body{padding:10px 12px 12px;text-align:left;gap:4px}.gengage-chat-panel .gengage-chat-product-card-name{min-height:0;margin-bottom:2px;font-size:13px;-webkit-line-clamp:2}.gengage-chat-panel .gengage-chat-product-card-price{justify-content:flex-start;font-size:15px}.gengage-chat-panel .gengage-chat-product-card-cta{display:block;padding:10px 12px;text-align:center;border-top:1px solid #f1f5f9;border-radius:0;background:transparent;color:var(--gengage-primary-color, #3b82f6);font-weight:700;font-size:13px}.gengage-chat-product-details-panel{display:flex;flex-direction:column;gap:12px;width:100%;background:#fff;border:1px solid var(--_gengage-border-color);border-radius:16px;padding:14px;box-sizing:border-box}.gengage-chat-product-details-media{border:1px solid #f1f5f9;border-radius:12px;background:#fafafa;padding:12px;display:flex;flex-direction:column;align-items:center}.gengage-chat-product-details-img{width:100%;height:auto;max-height:300px;object-fit:contain;border-radius:8px}.gengage-chat-product-details-content{display:flex;flex-direction:column;gap:8px;min-width:0}.gengage-chat-product-details-title{margin:0;font-size:17px;font-weight:700;line-height:1.3;color:#0f172a}.gengage-chat-product-details-rating{display:inline-flex;align-items:center;gap:4px;width:fit-content;padding:3px 8px;border-radius:999px;background:#fff7ed;color:#9a3412;font-size:13px;font-weight:700}.gengage-chat-product-details-review-count{color:#7c2d12;font-weight:600}.gengage-chat-product-details-price{display:flex;align-items:baseline;gap:6px}.gengage-chat-product-details-original-price{font-size:14px;color:#64748b;text-decoration:line-through}.gengage-chat-product-details-current-price{font-size:22px;font-weight:800;line-height:1.1;color:#0f172a}.gengage-chat-product-details-stock{width:fit-content;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700}.gengage-chat-product-details-stock.is-in-stock{background:#dcfce7;color:#166534}.gengage-chat-product-details-stock.is-out-of-stock{background:#fee2e2;color:#991b1b}.gengage-chat-product-details-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}.gengage-chat-product-details-cta{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 20px;border-radius:999px;border:none;text-decoration:none;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:14px;font-weight:700;cursor:pointer;transition:filter .14s ease,transform .12s ease}.gengage-chat-product-details-cta:hover{filter:brightness(1.05);transform:translateY(-1px)}.gengage-chat-product-details-cta:active{transform:translateY(1px)}.gengage-chat-product-details-atc{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;border:none;border-radius:10px;background:var(--_gengage-success-color);color:#fff;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;transition:filter .12s ease,transform .12s ease}.gengage-chat-product-details-atc:hover{filter:brightness(1.08);transform:translateY(-1px)}.gengage-chat-product-details-atc:active{transform:translateY(1px)}.gengage-chat-product-detail-tabs{margin-top:4px;border-top:1px solid var(--_gengage-border-color);padding-top:12px}.gengage-chat-product-detail-tab-bar{display:flex;gap:0;border-bottom:2px solid var(--_gengage-border-color);margin-bottom:12px}.gengage-chat-product-detail-tab{flex:1;padding:8px 12px;border:none;background:transparent;color:var(--_gengage-text-secondary);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.gengage-chat-product-detail-tab:hover{color:#334155}.gengage-chat-product-detail-tab--active{color:var(--gengage-primary-color, #3b82f6);border-bottom-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-detail-tab-panel{font-size:13px;line-height:1.6;color:#374151}.gengage-chat-product-specs-table{width:100%;border-collapse:collapse;font-size:13px}.gengage-chat-product-specs-table tr:nth-child(2n){background:#f8fafc}.gengage-chat-product-specs-key{padding:6px 10px;font-weight:600;color:#475569;white-space:nowrap;border-bottom:1px solid #f1f5f9;width:40%}.gengage-chat-product-specs-value{padding:6px 10px;color:#1f2937;border-bottom:1px solid #f1f5f9}.gengage-chat-product-card-atc{position:absolute;bottom:42px;right:6px;opacity:0;transition:opacity .15s ease;z-index:1}.gengage-chat-product-card:hover .gengage-chat-product-card-atc{opacity:1}.gengage-chat-drawer.gengage-chat-drawer--hidden{clip-path:inset(0 0 0 100%);opacity:0;pointer-events:none;box-shadow:none}.gengage-chat-root--mobile .gengage-chat-drawer.gengage-chat-drawer--hidden{clip-path:inset(100% 0 0 0);opacity:0;pointer-events:none;box-shadow:none}@media(max-width:900px){.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:clamp(280px,calc(100vw - var(--_gengage-chat-conversation-width)),560px);max-width:560px}}.gengage-chat-attachment-preview{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#f3f4f6;border:1px solid var(--_gengage-border-color);border-radius:8px;width:100%;box-sizing:border-box}.gengage-chat-attachment-preview--hidden{display:none}.gengage-chat-attachment-preview-thumb{width:40px;height:40px;border-radius:4px;object-fit:cover;flex-shrink:0}.gengage-chat-attachment-name{flex:1;font-size:12px;color:#4b5563;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gengage-chat-attachment-remove{background:none;border:none;cursor:pointer;font-size:18px;color:#6b7280;padding:0 4px;line-height:1;flex-shrink:0}.gengage-chat-attachment-remove:hover{color:#ef4444}.gengage-chat-attach-btn{background:none;border:none;cursor:pointer;padding:6px;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#6b7280;transition:color .15s,background .15s}.gengage-chat-attach-btn:hover{color:#4b5563;background:#0000000d}.gengage-chat-attach-btn svg{width:20px;height:20px}.gengage-chat-mic-btn{background:none;border:none;cursor:pointer;padding:6px;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#6b7280;transition:color .15s,background .15s}.gengage-chat-mic-btn:hover{color:#4b5563;background:#0000000d}.gengage-chat-mic-btn svg{width:20px;height:20px}.gengage-chat-mic-btn--active{color:#ef4444;animation:gengage-mic-pulse 1.2s ease-in-out infinite}.gengage-chat-mic-btn--active:hover{color:#dc2626}@keyframes gengage-mic-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.8}}.gengage-chat-input-area--dragover{outline:2px dashed var(--gengage-primary-color, #3b82f6);outline-offset:-2px;background:#eff6ff}.gengage-chat-attachment-thumb{width:120px;max-width:100%;height:auto;border-radius:8px;margin-bottom:6px;display:block}@media(max-width:768px){.gengage-chat-panel-divider{display:none}.gengage-chat-drawer--with-panel{left:0;right:0;width:100%;border-radius:0}.gengage-chat-drawer--with-panel .gengage-chat-body{flex-direction:column}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:100%;min-width:0;max-width:none;max-height:30dvh;border-right:none;border-bottom:1px solid var(--_gengage-border-color);padding:0 12px 12px;margin:0;border-radius:0;box-shadow:none}.gengage-chat-drawer--with-panel .gengage-chat-conversation{width:100%;flex:1;border-left:none}.gengage-chat-panel .gengage-chat-product-card{grid-template-columns:84px 1fr}.gengage-chat-panel .gengage-chat-product-card-cta{grid-column:1 / -1;width:100%}.gengage-chat-product-details-panel{padding:12px;gap:12px}.gengage-chat-product-details-media{min-height:140px}.gengage-chat-product-details-title{font-size:15px}.gengage-chat-product-details-current-price{font-size:20px}.gengage-chat-product-grid{scroll-snap-type:x mandatory}.gengage-chat-product-card{width:280px;min-width:280px;scroll-snap-align:center}.gengage-chat-product-card-img{height:180px}}@media(max-width:480px){.gengage-chat-drawer{position:fixed;inset:0;width:100%;max-height:100%;border-radius:0}.gengage-chat-bubble{max-width:100%}}.gengage-chat-kvkk-banner{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;background:#fffbeb;border-bottom:1px solid #fde68a;font-size:12px;line-height:1.5;color:#92400e}.gengage-chat-kvkk-content{flex:1;min-width:0}.gengage-chat-kvkk-content a{color:#b45309;text-decoration:underline}.gengage-chat-kvkk-dismiss{flex-shrink:0;width:20px;height:20px;border:none;background:transparent;color:#92400e;font-size:16px;cursor:pointer;padding:0;line-height:1}.gengage-chat-comparison{padding:16px}.gengage-chat-comparison-heading{font-size:14px;font-weight:700;letter-spacing:.05em;color:#0f172a;margin:0 0 16px}.gengage-chat-comparison-recommended{border:1px solid var(--_gengage-border-color);border-radius:12px;padding:16px;background:#fff;box-shadow:0 1px 3px #0000000f;margin-bottom:12px}.gengage-chat-comparison-recommended-label{font-size:12px;font-weight:700;color:#16a34a;text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px}.gengage-chat-comparison-recommended-body{display:flex;gap:12px;align-items:flex-start}.gengage-chat-comparison-recommended-body img{width:80px;height:80px;object-fit:contain;border-radius:8px;background:#f8fafc}.gengage-chat-comparison-recommended-info{flex:1;min-width:0}.gengage-chat-comparison-recommended-title{font-size:14px;font-weight:600;color:#0f172a;margin-bottom:4px}.gengage-chat-comparison-recommended-price{font-size:16px;font-weight:700;color:#0f172a}.gengage-chat-comparison-highlights{margin-top:12px;padding-top:12px;border-top:1px solid #f1f5f9}.gengage-chat-comparison-highlights-label{font-size:12px;font-weight:600;color:var(--_gengage-text-secondary);margin-bottom:6px}.gengage-chat-comparison-highlights ul{margin:0;padding-left:18px;font-size:13px;color:#334155;line-height:1.6}.gengage-chat-comparison-special{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;padding:12px 16px;margin-bottom:12px;font-size:13px;color:#92400e}.gengage-chat-comparison-special summary{cursor:pointer;font-weight:600}.gengage-chat-comparison-special ul{margin:8px 0 0;padding-left:18px;line-height:1.6}.gengage-chat-comparison-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:12px}.gengage-chat-comparison-table th,.gengage-chat-comparison-table td{padding:10px 12px;text-align:center;border-bottom:1px solid #f1f5f9;vertical-align:top}.gengage-chat-comparison-table th{font-weight:600;font-size:12px;color:#334155}.gengage-chat-comparison-table th img{width:60px;height:60px;object-fit:contain;border-radius:6px;background:#f8fafc;margin-bottom:6px}.gengage-chat-comparison-table-price{font-weight:700;color:#0f172a}.gengage-chat-comparison-label{text-align:left;font-weight:600;color:var(--_gengage-text-secondary);white-space:nowrap}.gengage-chat-comparison-selected{background:#f0fdf4}.gengage-chat-comparison-recommended-text{padding:8px 12px;font-size:12px;color:var(--gengage-text-secondary, #475569);font-style:italic;border-top:1px solid var(--gengage-border-color, #e2e8f0);margin-top:8px}.gengage-chat-comparison-product-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.gengage-chat-comparison-view-btn{flex:1;min-width:0;padding:8px 12px;border:1px solid var(--gengage-primary-color, #3b82f6);border-radius:6px;background:transparent;color:var(--gengage-primary-color, #3b82f6);font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s ease,color .15s ease;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.gengage-chat-comparison-view-btn:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-pills{position:relative;padding:8px 12px;border-top:1px solid #f1f5f9;background:var(--gengage-background-color, #fff)}.gengage-chat-pills-scroll{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-right:28px}.gengage-chat-pills-scroll::-webkit-scrollbar{display:none}.gengage-chat-pill{flex:0 0 auto;padding:8px 16px;border:none;border-radius:999px;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:13px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:filter .15s,transform .1s}.gengage-chat-pill:hover{filter:brightness(.92)}.gengage-chat-pill:active{transform:scale(.97)}.gengage-chat-pill--rich{display:flex;align-items:center;gap:8px;padding:6px 14px 6px 6px;border-radius:20px}.gengage-chat-pill-img{width:32px;height:32px;border-radius:50%;object-fit:cover;flex-shrink:0;background:#ffffff26}.gengage-chat-pill-text{font-size:13px;font-weight:600;line-height:1.2}.gengage-chat-pill-desc{display:none}.gengage-chat-pill--rich .gengage-chat-pill-desc{display:block;font-size:10px;font-weight:400;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.gengage-chat-pills-arrow{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:28px;height:28px;border-radius:50%;border:1px solid var(--_gengage-border-color);background:#fff;color:var(--_gengage-text-secondary);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:-4px 0 8px #ffffffe6;z-index:1}.gengage-chat-pills-arrow:hover{background:#f8fafc;color:#334155}@media(prefers-reduced-motion:reduce){.gengage-chat-uispec>*,.gengage-chat-action-btn,.gengage-chat-product-card,.gengage-chat-product-card-cta,.gengage-chat-send,.gengage-chat-launcher,.gengage-chat-pill,.gengage-chat-drawer,.gengage-chat-proactive,.gengage-chat-typing-dots span,.gengage-chat-typing-sparkle,.gengage-chat-thinking-step-marker--active,.gengage-chat-bubble,.gengage-chat-panel-skeleton-block,.gengage-chat-ai-toppick-card,.gengage-chat-mic-btn--active,.gengage-chat-ai-toppick-spinner:after,.gengage-chat-panel-shimmer,.gengage-chat-overlay,.gengage-chat-product-details-skeleton-price{animation:none!important;transition:none!important;transform:none!important}}.gengage-chat-bubble--user{position:relative}.gengage-chat-rollback-btn{position:absolute;left:-28px;top:50%;transform:translateY(-50%);width:24px;height:24px;border:none;border-radius:50%;background:var(--gengage-surface-color, #f1f5f9);color:var(--gengage-text-secondary, #64748b);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease;padding:0}.gengage-chat-bubble--user:hover .gengage-chat-rollback-btn{opacity:1}.gengage-chat-rollback-btn:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-bubble--hidden{display:none}.gengage-chat-ai-top-picks{display:flex;flex-direction:column;gap:12px;padding:8px 0}.gengage-chat-ai-top-picks-title{font-size:15px;font-weight:600;color:var(--gengage-text-primary, #1e293b);margin:0 0 4px}.gengage-chat-ai-top-picks-cards{display:flex;flex-direction:column;gap:10px}.gengage-chat-ai-toppick-discount-badge{position:absolute;top:8px;left:8px;background:var(--gengage-discount-bg, #ef4444);color:#fff;font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px;z-index:1}.gengage-chat-ai-toppick-card--winner{position:relative;display:flex;flex-direction:column;border:2px solid var(--gengage-primary-color, #3b82f6);border-radius:12px;background:#fff;overflow:hidden;transition:box-shadow .2s ease}.gengage-chat-ai-toppick-card--winner:hover{box-shadow:0 4px 16px #3b82f626}.gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img{width:100%;height:140px;object-fit:contain;background:#f8fafc}.gengage-chat-ai-toppick-card--compact{position:relative;display:flex;flex-direction:row;align-items:center;gap:12px;border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;background:#fff;padding:10px;transition:box-shadow .2s ease,transform .15s ease}.gengage-chat-ai-toppick-card--compact:hover{box-shadow:0 2px 8px #00000014;transform:translateY(-1px)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{width:64px;height:64px;object-fit:contain;border-radius:8px;background:#f8fafc;flex-shrink:0}.gengage-chat-ai-toppick-badge{position:absolute;top:8px;left:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 8px;border-radius:4px;z-index:1;letter-spacing:.5px}.gengage-chat-ai-toppick-body{display:flex;flex-direction:column;gap:4px;padding:10px;flex:1;min-width:0}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{padding:0}.gengage-chat-ai-toppick-name{font-size:13px;font-weight:600;color:var(--gengage-text-primary, #1e293b);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.gengage-chat-ai-toppick-role{font-size:11px;font-weight:600;color:var(--gengage-primary-color, #3b82f6);text-transform:uppercase;letter-spacing:.3px}.gengage-chat-ai-toppick-labels{display:flex;flex-wrap:wrap;gap:4px}.gengage-chat-ai-toppick-label{font-size:11px;padding:1px 6px;border-radius:4px;font-weight:500}.gengage-chat-ai-toppick-label[data-sentiment=positive]{background:#dcfce7;color:#166534}.gengage-chat-ai-toppick-label[data-sentiment=negative]{background:#fee2e2;color:#991b1b}.gengage-chat-ai-toppick-label[data-sentiment=neutral]{background:#f1f5f9;color:#475569}.gengage-chat-ai-toppick-score{font-size:12px;font-weight:700;color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-ai-toppick-reason{font-size:12px;color:var(--gengage-chat-text-secondary, #666);line-height:1.4;margin-top:4px}.gengage-chat-ai-toppick-review{font-size:12px;font-style:italic;color:var(--gengage-text-secondary, #64748b);margin:2px 0;padding-left:8px;border-left:2px solid var(--gengage-border-color, #e2e8f0)}.gengage-chat-ai-toppick-price{font-size:14px;font-weight:700;color:var(--gengage-text-primary, #1e293b)}.gengage-chat-ai-toppick-original-price{text-decoration:line-through;color:var(--gengage-text-secondary, #64748b);font-weight:400;font-size:12px}.gengage-chat-ai-toppick-cta{display:block;width:calc(100% - 20px);margin:6px 10px 10px;padding:8px 0;border:none;border-radius:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:13px;font-weight:600;cursor:pointer;text-align:center;transition:background .15s ease}.gengage-chat-ai-toppick-cta:hover{filter:brightness(.92)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{width:auto;margin:0;padding:6px 14px;flex-shrink:0;align-self:center}.gengage-chat-ai-toppick-spinner{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:center;justify-content:center;border-radius:12px;z-index:3}.gengage-chat-ai-toppick-spinner:after{content:"";width:24px;height:24px;border:3px solid var(--gengage-border, #e2e8f0);border-top-color:var(--gengage-accent-primary, #3b82f6);border-radius:50%;animation:gengage-spin .7s linear infinite}@keyframes gengage-spin{to{transform:rotate(360deg)}}@media(max-width:768px){.gengage-chat-ai-top-picks-cards{flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:10px;padding-bottom:4px}.gengage-chat-ai-toppick-card--winner,.gengage-chat-ai-toppick-card--compact{min-width:280px;max-width:280px;flex-shrink:0;scroll-snap-align:start}.gengage-chat-ai-toppick-card--compact{flex-direction:column;align-items:stretch}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{width:100%;height:100px;border-radius:8px 8px 0 0}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{width:calc(100% - 20px);margin:6px 10px 10px;align-self:stretch}.gengage-chat-rollback-btn{left:-24px}}.gengage-chat-grounding-review{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;transition:background .15s ease,border-color .15s ease}.gengage-chat-grounding-review:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-grounding-review-icon{font-size:20px;flex-shrink:0}.gengage-chat-grounding-review-body{flex:1;min-width:0}.gengage-chat-grounding-review-title{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-grounding-review-subtitle{font-size:12px;color:var(--gengage-text-muted, #64748b);margin-top:2px}.gengage-chat-grounding-review-cta{font-size:13px;font-weight:500;color:var(--gengage-primary-color, #3b82f6);white-space:nowrap;flex-shrink:0}.gengage-chat-grouping-cards{display:flex;flex-direction:column;gap:6px}.gengage-chat-grouping-card{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:8px;transition:background .15s ease,border-color .15s ease}.gengage-chat-grouping-card:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-grouping-card-arrow{display:none;font-size:14px;color:var(--gengage-primary-color, #3b82f6);flex-shrink:0}.gengage-chat-grouping-card-img{width:20px;height:20px;border-radius:4px;object-fit:cover;flex-shrink:0}.gengage-chat-grouping-card-body{flex:1;min-width:0;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.gengage-chat-grouping-card-name{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-grouping-card-desc{font-size:12px;color:var(--gengage-text-muted, #64748b)}.gengage-chat-grouping-card-labels{display:block;font-size:11px;color:var(--gengage-chat-text-secondary, #888);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gengage-chat-root--mobile .gengage-chat-grouping-card-img{display:none}.gengage-chat-root--mobile .gengage-chat-grouping-card-arrow{display:inline}.gengage-chat-suggested-search-cards{display:flex;flex-direction:column;gap:8px}.gengage-chat-suggested-search-card{display:flex;align-items:flex-start;gap:12px;padding:10px 14px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;transition:background .15s ease,border-color .15s ease}.gengage-chat-suggested-search-card:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-suggested-search-card-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex-shrink:0}.gengage-chat-suggested-search-card-body{flex:1;min-width:0}.gengage-chat-suggested-search-card-name{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-suggested-search-card-desc{font-size:12px;color:var(--gengage-text-secondary, #475569);margin-top:2px}.gengage-chat-suggested-search-card-diff{font-size:11px;color:var(--gengage-text-muted, #64748b);margin-top:2px;font-style:italic}.gengage-chat-product-details-gallery{position:relative}.gengage-chat-product-details-gallery .gengage-chat-product-details-img{touch-action:pan-y}.gengage-chat-product-gallery-thumbs{display:flex;gap:8px;padding:10px 0 4px;overflow-x:auto;scrollbar-width:thin;justify-content:center;width:100%}.gengage-chat-product-gallery-thumb{width:56px;height:56px;object-fit:cover;border-radius:8px;border:2px solid transparent;cursor:pointer;flex-shrink:0;transition:border-color .15s ease;background:#fff}.gengage-chat-product-gallery-thumb:hover{border-color:var(--gengage-border-color, #cbd5e1)}.gengage-chat-product-gallery-thumb--active{border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-variants{margin-top:12px}.gengage-chat-product-variants-label{font-size:12px;font-weight:600;color:var(--gengage-text-muted, #64748b);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.gengage-chat-product-variants-list{display:flex;flex-wrap:wrap;gap:6px}.gengage-chat-product-variant-btn{padding:6px 12px;border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:6px;background:var(--gengage-surface-color, #f8fafc);color:var(--gengage-text-color, #1e293b);font-size:12px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.gengage-chat-product-variant-btn:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-grid-wrapper{display:flex;flex-direction:column;gap:8px}.gengage-chat-product-sort-toolbar{display:flex;gap:4px;padding:4px;background:var(--gengage-surface-color, #f8fafc);border-radius:8px;border:1px solid var(--gengage-border-color, #e2e8f0)}.gengage-chat-product-sort-btn{flex:1;padding:6px 10px;border:none;border-radius:6px;background:transparent;color:var(--gengage-text-muted, #64748b);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease}.gengage-chat-product-sort-btn:hover{background:var(--gengage-hover-color, #f1f5f9);color:var(--gengage-text-color, #1e293b)}.gengage-chat-product-sort-btn--active,.gengage-chat-product-sort-btn--active:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-product-sort-separator{width:1px;background:var(--gengage-border-color, #e2e8f0);margin:2px}.gengage-chat-comparison-toggle-btn{flex:none;padding:6px 10px;border:none;border-radius:6px;background:transparent;color:var(--gengage-text-muted, #64748b);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease;white-space:nowrap}.gengage-chat-comparison-toggle-btn:hover{background:var(--gengage-hover-color, #f1f5f9);color:var(--gengage-text-color, #1e293b)}.gengage-chat-comparison-toggle-btn--active,.gengage-chat-comparison-toggle-btn--active:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-comparison-select-wrapper{position:relative}.gengage-chat-comparison-checkbox{position:absolute;top:8px;left:8px;z-index:2;width:18px;height:18px;cursor:pointer;accent-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-comparison-floating-btn{display:block;width:100%;margin-top:8px;padding:10px 16px;border:none;border-radius:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s ease;text-align:center}.gengage-chat-comparison-floating-btn:hover{background:var(--gengage-primary-hover, #2563eb)}.gengage-chat-panel-topbar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--_gengage-border-color);background:#f8fafc;min-height:44px;flex-shrink:0;position:sticky;top:0;z-index:3}.gengage-chat-panel-topbar-back,.gengage-chat-panel-topbar-forward{width:28px;height:28px;min-width:28px;padding:0;border:1px solid #d1d5db;border-radius:6px;background:transparent;color:#374151;font-size:14px;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,border-color .15s ease,opacity .15s ease}.gengage-chat-panel-topbar-back:hover:not(:disabled),.gengage-chat-panel-topbar-forward:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.gengage-chat-panel-topbar-back:disabled,.gengage-chat-panel-topbar-forward:disabled{opacity:.3;cursor:default}.gengage-chat-panel-topbar-title{flex:1;font-size:14px;font-weight:600;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}@keyframes gengage-typewriter-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-typewriter-block{display:block;animation:gengage-typewriter-fade-in .15s ease both}@media(prefers-reduced-motion:reduce){.gengage-chat-typewriter-block{animation:none}}.gengage-product-mention{color:var(--gengage-primary-color, #3b82f6);text-decoration:none;cursor:pointer;font-weight:500;border-bottom:1px dashed var(--gengage-primary-color, #3b82f6);transition:border-color .15s}.gengage-product-mention:hover{border-bottom-style:solid}@keyframes gengage-skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}.gengage-chat-panel-skeleton-block{animation:gengage-skeleton-pulse 1.5s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.gengage-chat-panel-skeleton-block{animation:none}}.gengage-chat-input-chips{display:flex;gap:6px;padding:4px 12px 2px;flex-wrap:wrap}.gengage-chat-input-chip{display:inline-flex;align-items:center;padding:4px 10px;border-radius:12px;border:1px solid var(--_gengage-border-color);background:#f9fafb;color:#374151;font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .12s,border-color .12s;white-space:nowrap}.gengage-chat-input-chip:hover{background:#f3f4f6;border-color:#d1d5db}.gengage-chat-icon{width:14px;height:14px;flex-shrink:0}.gengage-chat-input-chip-icon,.gengage-chat-pill-icon{display:inline-flex;align-items:center;margin-right:4px}.gengage-chat-product-card-img-wrapper,.gengage-chat-product-details-img-wrap{position:relative;overflow:hidden}.gengage-chat-product-card-discount-badge{position:absolute;top:6px;left:6px;padding:2px 6px;border-radius:4px;background:var(--_gengage-discount-color);color:#fff;font-size:11px;font-weight:700;line-height:1.3;z-index:1}.gengage-chat-product-card-stock{font-size:11px;font-weight:600;margin-top:2px}.gengage-chat-product-card-stock.is-in-stock{color:var(--_gengage-success-color)}.gengage-chat-product-card-stock.is-out-of-stock{color:#dc2626}.gengage-chat-find-similar-pill{position:absolute;top:8px;right:8px;opacity:0;pointer-events:none;transition:opacity .2s ease;padding:4px 10px;font-size:11px;font-weight:500;font-family:inherit;border:none;border-radius:12px;background:var(--gengage-chat-pill-bg, rgba(0, 0, 0, .7));color:var(--gengage-chat-pill-text, #fff);cursor:pointer;white-space:nowrap;z-index:2}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-find-similar-pill,.gengage-chat-product-details-img-wrap:hover .gengage-chat-find-similar-pill{opacity:1;pointer-events:auto}.gengage-chat-favorite-btn{position:absolute;top:8px;right:8px;background:#ffffffe6;border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--gengage-text-secondary, #64748b);z-index:3;transition:color .2s;padding:0}.gengage-chat-favorite-btn:hover,.gengage-chat-favorite-btn--active{color:var(--gengage-accent-primary, #ef4444)}.gengage-chat-product-card-promos,.gengage-chat-product-details-promos{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.gengage-chat-product-card-promo-badge,.gengage-chat-product-details-promo-badge{display:inline-block;padding:2px 6px;font-size:10px;font-weight:500;border-radius:4px;background:var(--gengage-chat-promo-bg, #e8f5e9);color:var(--gengage-chat-promo-text, #2e7d32);white-space:nowrap}.gengage-chat-thumbnails-column{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:4px;z-index:2;pointer-events:auto}.gengage-chat-thumbnail-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:2px solid #e5e7eb;border-radius:6px;background:#fff;cursor:pointer;overflow:hidden;transition:border-color .15s ease}.gengage-chat-thumbnail-btn:hover{border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-thumbnail-img{width:100%;height:100%;object-fit:cover}.gengage-chat-choice-prompter{position:absolute;bottom:12px;right:12px;width:200px;padding:12px 14px;background:#fff;border:1px solid var(--_gengage-border-color);border-radius:10px;box-shadow:0 4px 12px #0000001a;z-index:10;animation:gengage-choice-prompter-in .2s ease}@keyframes gengage-choice-prompter-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-choice-prompter-heading{font-size:13px;font-weight:600;color:#1f2937;margin-bottom:4px}.gengage-chat-choice-prompter-suggestion{font-size:12px;color:#6b7280;margin-bottom:10px;line-height:1.4}.gengage-chat-choice-prompter-cta{display:block;width:100%;padding:6px 12px;border:none;border-radius:6px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;text-align:center;transition:opacity .15s ease}.gengage-chat-choice-prompter-cta:hover{opacity:.9}.gengage-chat-choice-prompter-dismiss{position:absolute;top:4px;right:6px;padding:2px 6px;border:none;background:none;color:#6b7280;font-size:16px;cursor:pointer;line-height:1}.gengage-chat-choice-prompter-dismiss:hover{color:#6b7280}@media(prefers-reduced-motion:reduce){.gengage-chat-choice-prompter{animation:none}}.gengage-chat-pros-cons{padding:12px 14px;background:#f8fafc;border-radius:8px;margin:8px 0}.gengage-chat-pros-cons-heading{margin:0 0 10px;font-size:14px;font-weight:600;color:#0f172a}.gengage-chat-pros-cons-list{list-style:none;margin:0 0 8px;padding:0}.gengage-chat-pros-cons-list:last-child{margin-bottom:0}.gengage-chat-pros-cons-item{display:flex;align-items:flex-start;gap:8px;padding:4px 0;font-size:13px;line-height:1.5;color:#334155}.gengage-chat-pros-cons-icon{flex-shrink:0;width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border-radius:50%}.gengage-chat-pros-cons-icon--pro{color:#16a34a;background:#dcfce7}.gengage-chat-pros-cons-icon--con{color:#dc2626;background:#fee2e2}.gengage-chat-categories{display:flex;flex-direction:column;gap:8px}.gengage-chat-categories-tabs{display:flex;gap:4px;overflow-x:auto;padding:4px 0;-webkit-overflow-scrolling:touch}.gengage-chat-categories-tab{padding:6px 14px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:20px;background:var(--gengage-bg, #fff);color:var(--gengage-text, #374151);cursor:pointer;white-space:nowrap;font-size:13px;transition:background .15s,color .15s}.gengage-chat-categories-tab:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-categories-tab--active{background:var(--gengage-primary, #2563eb);color:#fff;border-color:var(--gengage-primary, #2563eb)}.gengage-chat-categories-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.gengage-chat-categories-filter-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.gengage-chat-categories-filter-tag{padding:4px 10px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:14px;background:var(--gengage-bg, #fff);color:var(--gengage-text-secondary, #6b7280);font-size:12px;cursor:pointer;transition:background .15s}.gengage-chat-categories-filter-tag:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-product-grid-view-more{display:block;width:100%;padding:10px;margin-top:8px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:8px;background:var(--gengage-bg, #fff);color:var(--gengage-primary, #2563eb);font-size:14px;font-weight:500;cursor:pointer;text-align:center;transition:background .15s;grid-column:1 / -1}.gengage-chat-product-grid-view-more:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-product-grid--mobile{display:flex;overflow-x:auto;gap:8px;padding:8px 0;-webkit-overflow-scrolling:touch}.gengage-chat-product-grid--mobile .gengage-chat-product-card{min-width:160px;max-width:180px;flex-shrink:0}.gengage-chat-comparison--mobile .gengage-chat-comparison-table,.gengage-chat-comparison--mobile .gengage-chat-comparison-table thead,.gengage-chat-comparison--mobile .gengage-chat-comparison-table tbody{display:block}.gengage-chat-comparison--mobile .gengage-chat-comparison-table tr{display:flex;flex-wrap:wrap}.gengage-chat-comparison-key-differences{margin-top:12px;padding:12px;background:var(--gengage-bg-secondary, #f9fafb);border-radius:8px}.gengage-chat-comparison-key-differences h4{margin:0 0 8px;font-size:14px;font-weight:600;color:var(--gengage-text, #374151)}.gengage-chat-comparison-key-differences-content{font-size:13px;color:var(--gengage-text-secondary, #6b7280);line-height:1.5}.gengage-chat-comparison-key-differences-content ul{margin:0;padding-left:18px}.gengage-chat-comparison-key-differences-content li{margin-bottom:4px}.gengage-chat-product-details-similars-heading{margin:16px 0 8px;font-size:15px;font-weight:600;color:var(--gengage-text, #374151)}.gengage-chat-product-details-similars{margin-top:8px}.gengage-chat-handoff-notice{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px;margin:8px 0;background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;text-align:center}.gengage-chat-handoff-notice-icon{font-size:24px}.gengage-chat-handoff-notice-heading{margin:0;font-size:14px;font-weight:600;color:#92400e}.gengage-chat-handoff-notice-summary{margin:0;font-size:13px;line-height:1.5;color:#78350f}.gengage-qty-stepper{display:inline-flex;align-items:center;gap:0;border:1px solid #d1d5db;border-radius:8px;overflow:hidden;background:#fff}.gengage-qty-btn{width:var(--_gengage-qty-btn-size);height:var(--_gengage-qty-btn-size);border:none;background:transparent;color:#374151;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .12s}.gengage-qty-btn:hover:not(:disabled){background:#f3f4f6}.gengage-qty-btn:disabled{opacity:.35;cursor:default}.gengage-qty-value{min-width:24px;text-align:center;font-size:13px;font-weight:600;color:#1f2937;-webkit-user-select:none;user-select:none}.gengage-qty-submit{border:none;border-left:1px solid #d1d5db;background:var(--_gengage-success-color);color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;padding:6px 12px;transition:filter .12s ease,transform .12s ease}.gengage-qty-submit:hover{filter:brightness(1.08)}.gengage-qty-submit:active{transform:translateY(1px)}.gengage-qty-stepper--compact{border-radius:14px;box-shadow:0 2px 6px #0000001f}.gengage-qty-stepper--compact .gengage-qty-btn{width:var(--_gengage-qty-btn-size-compact);height:var(--_gengage-qty-btn-size-compact);font-size:12px}.gengage-qty-stepper--compact .gengage-qty-value{min-width:18px;font-size:12px}.gengage-qty-stepper--compact .gengage-qty-submit{padding:4px 8px;font-size:13px;border-radius:0 14px 14px 0}.gengage-chat-product-details-atc-stepper{border-radius:10px}.gengage-chat-product-details-atc-stepper .gengage-qty-btn{width:32px;height:32px}.gengage-chat-product-details-atc-stepper .gengage-qty-value{min-width:28px;font-size:14px}.gengage-chat-product-details-atc-stepper .gengage-qty-submit{padding:8px 18px;font-size:14px;border-radius:0 10px 10px 0}.gengage-chat-product-details-share{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid #d1d5db;border-radius:10px;background:transparent;color:#6b7280;cursor:pointer;transition:color .12s,border-color .12s,background-color .12s;position:relative;flex-shrink:0}.gengage-chat-product-details-share:hover{color:var(--gengage-primary-color, #3b82f6);border-color:var(--gengage-primary-color, #3b82f6);background:#f0f7ff}.gengage-chat-product-details-share:before{content:attr(aria-label);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);padding:4px 8px;border-radius:4px;background:#1e293b;color:#fff;font-size:11px;font-weight:500;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:2}.gengage-chat-product-details-share:hover:before{opacity:1}.gengage-chat-product-details-share--copied:after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--_gengage-success-color);color:#fff;border-radius:10px;font-size:16px;font-weight:700}.gengage-chat-launcher:focus-visible,.gengage-chat-close:focus-visible,.gengage-chat-header-btn:focus-visible,.gengage-chat-header-powered:focus-visible,.gengage-chat-proactive-accept:focus-visible,.gengage-chat-proactive-dismiss:focus-visible,.gengage-chat-send:focus-visible,.gengage-chat-action-btn:focus-visible,.gengage-chat-pill:focus-visible,.gengage-chat-input-chip:focus-visible,.gengage-chat-pills-arrow:focus-visible,.gengage-chat-error-retry:focus-visible,.gengage-chat-product-card-cta:focus-visible,.gengage-chat-product-details-cta:focus-visible,.gengage-chat-product-details-atc:focus-visible,.gengage-chat-product-detail-tab:focus-visible,.gengage-chat-panel-divider-toggle:focus-visible,.gengage-chat-panel-topbar-back:focus-visible,.gengage-chat-panel-topbar-forward:focus-visible,.gengage-chat-rollback-btn:focus-visible,.gengage-chat-ai-toppick-cta:focus-visible,.gengage-chat-comparison-view-btn:focus-visible,.gengage-chat-comparison-toggle-btn:focus-visible,.gengage-chat-comparison-floating-btn:focus-visible,.gengage-chat-comparison-checkbox:focus-visible,.gengage-chat-product-sort-btn:focus-visible,.gengage-chat-product-variant-btn:focus-visible,.gengage-chat-product-gallery-thumb:focus-visible,.gengage-chat-thumbnail-btn:focus-visible,.gengage-chat-find-similar-pill:focus-visible,.gengage-chat-favorite-btn:focus-visible,.gengage-chat-attach-btn:focus-visible,.gengage-chat-mic-btn:focus-visible,.gengage-chat-attachment-remove:focus-visible,.gengage-chat-kvkk-dismiss:focus-visible,.gengage-chat-choice-prompter-cta:focus-visible,.gengage-chat-choice-prompter-dismiss:focus-visible,.gengage-chat-categories-tab:focus-visible,.gengage-chat-categories-filter-tag:focus-visible,.gengage-chat-product-grid-view-more:focus-visible,.gengage-chat-product-details-share:focus-visible,.gengage-qty-btn:focus-visible,.gengage-qty-submit:focus-visible{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:2px}', Oa = L({
3061
- role: be(["user", "assistant"]),
3062
- content: x(),
3061
+ const Fa = ':host{all:initial;font-family:var(--gengage-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:var(--gengage-font-size, 14px)}.gengage-chat-root{position:fixed;z-index:var(--gengage-z-index, 2147483647);--_gengage-chat-offset: var(--gengage-chat-offset, 20px);--_gengage-chat-launcher-bottom: var(--gengage-chat-launcher-bottom, 20px);--_gengage-chat-launcher-right: var(--gengage-chat-launcher-right, 20px);--_gengage-chat-launcher-size: var(--gengage-chat-launcher-size, 56px);--_gengage-chat-drawer-width: var(--gengage-chat-width, 400px);--_gengage-chat-radius: var(--gengage-chat-shell-radius, 12px);--_gengage-chat-header-height: var(--gengage-chat-header-height, 60px);--_gengage-chat-conversation-width: var(--gengage-chat-conversation-width, 396px);--_gengage-chat-panel-min-width: var(--gengage-chat-panel-min-width, 320px);--_gengage-chat-panel-max-width: var(--gengage-chat-panel-max-width, 860px);--_gengage-chat-input-height: var(--gengage-chat-input-height, 48px);--_gengage-chat-shadow: var(--gengage-chat-shadow, 0 12px 40px rgba(15, 23, 42, .18));--_gengage-border-color: var(--gengage-border-color, #e5e7eb);--_gengage-discount-color: var(--gengage-discount-color, #ef4444);--_gengage-success-color: var(--gengage-success-color, #16a34a);--_gengage-text-secondary: var(--gengage-text-secondary, #64748b);--_gengage-qty-btn-size: var(--gengage-qty-btn-size, 28px);--_gengage-qty-btn-size-compact: var(--gengage-qty-btn-size-compact, 24px)}.gengage-chat-launcher-container{position:fixed;bottom:var(--_gengage-chat-launcher-bottom);right:var(--_gengage-chat-launcher-right);display:flex;flex-direction:column;align-items:flex-end;gap:10px;z-index:var(--gengage-z-index, 2147483647)}.gengage-chat-launcher-content-area,.gengage-chat-launcher-content-area-bottom{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.gengage-chat-launcher-content-area:empty,.gengage-chat-launcher-content-area-bottom:empty{display:none}.gengage-chat-root--open .gengage-chat-launcher-content-area,.gengage-chat-root--open .gengage-chat-launcher-content-area-bottom{display:none}.gengage-chat-launcher{width:var(--_gengage-chat-launcher-size);height:var(--_gengage-chat-launcher-size);border-radius:50%;border:none;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 22px #0f172a47;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s ease;position:relative;flex-shrink:0}.gengage-chat-launcher:hover{transform:scale(1.05);box-shadow:0 14px 28px #0f172a47}.gengage-chat-launcher svg{width:24px;height:24px}.gengage-chat-launcher--hidden-mobile{display:none!important}.gengage-chat-launcher-tooltip{position:absolute;right:calc(100% + 12px);top:50%;transform:translateY(-50%);padding:6px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:13px;font-weight:500;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease;box-shadow:0 2px 8px #00000026}.gengage-chat-launcher-tooltip:after{content:"";position:absolute;left:100%;top:50%;transform:translateY(-50%);border:5px solid transparent;border-left-color:#1e293b}.gengage-chat-launcher:hover .gengage-chat-launcher-tooltip{opacity:1}.gengage-chat-root--open .gengage-chat-launcher-tooltip{display:none}.gengage-chat-proactive{position:fixed;bottom:calc(var(--_gengage-chat-launcher-bottom) + var(--_gengage-chat-launcher-size) + 14px);right:var(--_gengage-chat-launcher-right);width:280px;padding:16px 18px;border-radius:16px;background:#fff;box-shadow:0 8px 30px #0000001f,0 2px 8px #0000000f;opacity:0;transform:translateY(8px) scale(.96);transition:opacity .25s ease,transform .25s ease;z-index:2147483645}.gengage-chat-proactive--visible{opacity:1;transform:translateY(0) scale(1)}.gengage-chat-proactive-message{margin:0 0 12px;font-size:14px;line-height:1.5;color:#1f2937}.gengage-chat-proactive-actions{display:flex;gap:8px}.gengage-chat-proactive-accept{flex:1;padding:8px 16px;border:none;border-radius:10px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;transition:filter .15s ease}.gengage-chat-proactive-accept:hover{filter:brightness(1.08)}.gengage-chat-proactive-dismiss{position:absolute;top:8px;right:8px;width:24px;height:24px;border:none;border-radius:50%;background:transparent;color:#64748b;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}.gengage-chat-proactive-dismiss:hover{color:#475569;background:#f1f5f9}.gengage-chat-drawer{position:fixed;top:0;bottom:0;right:0;width:var(--_gengage-chat-drawer-width);max-height:-webkit-fill-available;max-height:100dvh;border-radius:0;background:var(--gengage-background-color, #fff);box-shadow:var(--_gengage-chat-shadow);display:flex;flex-direction:column;overflow:hidden;z-index:var(--gengage-z-index, 2147483647);transform-origin:right center;clip-path:inset(0);transition:clip-path .42s cubic-bezier(.25,.46,.45,.94),opacity .32s ease}.gengage-chat-root--mobile .gengage-chat-launcher-container{right:16px;bottom:calc(16px + env(safe-area-inset-bottom))}.gengage-chat-root--mobile .gengage-chat-drawer{left:0;right:0;bottom:0;width:100%;max-width:none;max-height:-webkit-fill-available;max-height:100dvh;border-radius:16px 16px 0 0;border-top:1px solid rgba(0,0,0,.06);box-shadow:0 -4px 16px #0000001a,0 12px 40px #0f172a2e;padding-bottom:env(safe-area-inset-bottom,0px);clip-path:inset(0);transition:clip-path .42s cubic-bezier(.25,.46,.45,.94),opacity .32s ease}.gengage-chat-root--mobile.gengage-chat-root--open:before{content:"";position:fixed;inset:0;background:#0000001f;z-index:-1;pointer-events:none}.gengage-chat-root--mobile.gengage-chat-root--mobile-half .gengage-chat-drawer{top:auto;height:min(72dvh,620px);max-height:min(72dvh,620px)}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-drawer{top:0;height:100dvh;max-height:100dvh;border-radius:0;border-top:none}.gengage-chat-root--mobile .gengage-chat-input-area{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--_gengage-border-color, #e5e7eb);transform:translateY(calc(-1 * var(--gengage-keyboard-offset, 0px)))}.gengage-chat-header{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;min-height:var(--_gengage-chat-header-height);padding:4px 12px;background:var(--gengage-chat-header-bg, #1d2939);color:var(--gengage-chat-header-foreground, #fff);box-shadow:0 4px 20px #00000014,0 0 2px #0000001f;border:none;position:relative;z-index:2}.gengage-chat-header-left{display:flex;align-items:center;gap:10px;min-width:0}.gengage-chat-header-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0;border:2px solid rgba(255,255,255,.15)}.gengage-chat-header-info{display:flex;flex-direction:column;gap:2px;min-width:0}.gengage-chat-header-title-row{display:flex;align-items:center;gap:6px}.gengage-chat-header-title{font-weight:700;font-size:15px;line-height:1.25;letter-spacing:.01em;color:inherit}.gengage-chat-header-badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:4px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;line-height:1.5}.gengage-chat-header-powered{display:flex;align-items:center;gap:4px;font-size:11px;color:#ffffffbf;text-decoration:none;transition:color .15s}.gengage-chat-header-powered:hover{color:#fffc}.gengage-chat-header-powered svg{width:12px;height:12px;opacity:.6}.gengage-chat-header-right{display:flex;align-items:center;gap:4px;flex-shrink:0}.gengage-chat-header-btn{width:32px;height:32px;border-radius:8px;background:transparent;border:1px solid rgba(255,255,255,.12);color:#ffffffb3;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;line-height:1;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.gengage-chat-header-btn:hover{background:#ffffff1a;color:#fff;border-color:#ffffff40}.gengage-chat-close{width:32px;height:32px;border-radius:8px;background:transparent;border:1px solid rgba(255,255,255,.12);color:#ffffffb3;font-size:18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.gengage-chat-close:hover{background:#ffffff1a;color:#fff;border-color:#ffffff40}.gengage-chat-body{display:flex;flex:1;overflow:hidden;min-height:0}.gengage-chat-panel{display:none;width:0;overflow:hidden;transition:width .22s cubic-bezier(.2,.72,.2,1)}.gengage-chat-panel--visible{display:flex;flex-direction:column;position:relative;width:440px;min-width:440px;border-right:1px solid var(--_gengage-border-color);overflow-y:auto;padding:16px;background:#f8fafc}.gengage-chat-panel-divider{display:flex;align-items:center;width:4px;cursor:pointer;background:#e5e7eb;position:relative;flex-shrink:0;transition:background .15s;z-index:2}.gengage-chat-panel-divider:hover{background:#cbd5e1}.gengage-chat-panel-divider--hidden{display:none}.gengage-chat-panel-divider-toggle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:24px;height:48px;border:1px solid var(--_gengage-border-color);border-radius:6px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--_gengage-text-secondary);box-shadow:0 1px 3px #00000014;transition:background .15s,color .15s;padding:0;line-height:1}.gengage-chat-panel-divider-toggle:hover{background:#f1f5f9;color:#334155}.gengage-chat-panel--collapsed{flex:0 0 0px!important;width:0!important;min-width:0!important;max-width:0!important;padding:0!important;border-right:none!important;overflow:hidden}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider{width:0;background:transparent}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider .gengage-chat-panel-divider-toggle{left:0;transform:translateY(-50%)}.gengage-chat-conversation{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden;background:var(--gengage-background-color, #fff);position:relative;z-index:1}.gengage-chat-drawer--with-panel{width:auto;background:transparent;box-shadow:none}.gengage-chat-drawer--with-panel .gengage-chat-header{border-radius:0;flex-shrink:0}.gengage-chat-drawer--with-panel .gengage-chat-body{flex:1 1 0;min-height:0;gap:0;padding:0;align-items:stretch}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{flex:0 0 auto;width:clamp(var(--_gengage-chat-panel-min-width),50vw,var(--_gengage-chat-panel-max-width));min-width:var(--_gengage-chat-panel-min-width);max-width:var(--_gengage-chat-panel-max-width);border-right:none;background:#fff;padding:0 16px 16px;overflow-y:auto;margin:0;border-radius:0;box-shadow:0 8px 32px #0f172a1f,0 2px 8px #0f172a0f;max-height:100dvh}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider{width:0;background:transparent}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle{width:20px;height:48px;border-radius:10px;background:var(--gengage-primary-color, #3b82f6);color:#fff;border:2px solid #fff;box-shadow:0 2px 8px #0f172a2e;font-size:12px;z-index:10}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle:hover{background:var(--gengage-primary-hover, #2563eb);color:#fff}.gengage-chat-drawer--with-panel .gengage-chat-conversation{flex:0 0 var(--_gengage-chat-conversation-width);width:var(--_gengage-chat-conversation-width);border-left:none;background:var(--gengage-background-color, #fff);box-shadow:-4px 0 24px #0f172a1f,-1px 0 4px #0f172a0f}.gengage-chat-drawer--with-panel .gengage-chat-messages{padding-right:6px;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.12) transparent}.gengage-chat-drawer--with-panel .gengage-chat-messages::-webkit-scrollbar{width:0}.gengage-chat-drawer--with-panel:has(.gengage-chat-panel--collapsed){width:var(--_gengage-chat-conversation-width);background:var(--gengage-background-color, #fff);box-shadow:var(--_gengage-chat-shadow)}.gengage-chat-drawer--with-panel .gengage-chat-footer{display:none}.gengage-chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px;min-height:0;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}.gengage-chat-messages::-webkit-scrollbar{width:6px}.gengage-chat-messages::-webkit-scrollbar-track{background:transparent}.gengage-chat-messages::-webkit-scrollbar-thumb{background:#0000001f;border-radius:3px}.gengage-chat-messages::-webkit-scrollbar-thumb:hover{background:#0003}.gengage-chat-bubble{max-width:85%;padding:12px 16px;border-radius:12px;line-height:1.5;font-size:14px;font-weight:500;word-wrap:break-word;overflow-wrap:break-word;animation:gengage-chat-msg-in .3s cubic-bezier(.2,.7,.2,1)}@keyframes gengage-chat-msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-bubble--user{align-self:flex-end;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);border-bottom-right-radius:4px}.gengage-chat-bubble--assistant{align-self:flex-start;background:#f3f4f6;color:#1f2937;border-bottom-left-radius:4px;min-width:120px}.gengage-chat-bubble--active{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:-2px}.gengage-chat-bubble--assistant:empty{display:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a{color:var(--gengage-primary-color, #2563eb);text-decoration:underline}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a:hover{text-decoration:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p{margin:0 0 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p:last-child{margin-bottom:0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text ul,.gengage-chat-bubble--assistant .gengage-chat-bubble-text ol{margin:6px 0;padding-left:20px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text li{margin-bottom:6px;line-height:1.5}.gengage-chat-bubble--assistant .gengage-chat-bubble-text code{background:#0000000f;padding:1px 4px;border-radius:3px;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text pre{background:#0000000a;padding:8px;border-radius:6px;overflow-x:auto;margin:4px 0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text table{border-collapse:collapse;margin:4px 0;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text th,.gengage-chat-bubble--assistant .gengage-chat-bubble-text td{border:1px solid var(--_gengage-border-color);padding:4px 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text img{max-width:100%;height:auto;border-radius:4px;margin:4px 0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text h1,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h2,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h3,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h4,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h5,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h6{margin:8px 0 4px;line-height:1.3;color:#0f172a}.gengage-chat-bubble--assistant .gengage-chat-bubble-text blockquote{border-left:3px solid var(--_gengage-border-color);padding-left:12px;margin:4px 0;color:var(--_gengage-text-secondary)}.gengage-chat-bubble--first{border-left:3px solid var(--gengage-accent-primary, #3b82f6);padding-left:12px}.gengage-chat-bubble--first .gengage-chat-bubble-text{font-size:15px}.gengage-chat-typing{display:flex;align-items:center;gap:5px;padding:8px 4px;align-self:flex-start;max-width:85%}.gengage-chat-typing:has(.gengage-chat-typing-text),.gengage-chat-typing:has(.gengage-chat-thinking-steps){background:#f3f4f6;padding:10px 14px;border-radius:12px 12px 12px 4px;gap:8px}.gengage-chat-typing-dots{display:flex;align-items:center;gap:5px}.gengage-chat-typing-dots span{width:6px;height:6px;border-radius:50%;background:#94a3b8;display:inline-block;animation:gengage-chat-typing-fade 1.4s ease-in-out infinite}.gengage-chat-typing-dots span:nth-child(2){animation-delay:.2s}.gengage-chat-typing-dots span:nth-child(3){animation-delay:.4s}@keyframes gengage-chat-typing-fade{0%,to{opacity:.25}50%{opacity:1}}.gengage-chat-typing-sparkle{animation:gengage-sparkle-pulse 1.2s infinite}@keyframes gengage-sparkle-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-typing-text{font-size:13px;color:var(--_gengage-text-secondary);font-style:italic;flex:1;min-width:0;word-wrap:break-word;overflow-wrap:break-word}.gengage-chat-thinking-steps{display:flex;flex-direction:column;gap:4px;padding:4px 0}.gengage-chat-thinking-step{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--gengage-chat-text-secondary, #666)}.gengage-chat-thinking-step-marker{font-size:12px;width:16px;text-align:center;flex-shrink:0}.gengage-chat-thinking-step-marker--done{color:var(--gengage-chat-success, #4caf50)}.gengage-chat-thinking-step-marker--active{color:var(--gengage-chat-primary, #1976d2);animation:gengage-thinking-pulse 1.5s ease-in-out infinite}@keyframes gengage-thinking-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-thinking-step-text{line-height:1.4}.gengage-chat-error{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 14px;border-radius:10px;background:#fef2f2;color:#991b1b;font-size:13px;text-align:center;border:1px solid #fecaca}.gengage-chat-error-retry{flex-shrink:0;padding:4px 12px;border:1px solid #fca5a5;border-radius:6px;background:#fff;color:#991b1b;font-size:12px;font-weight:500;cursor:pointer;transition:background .15s}.gengage-chat-error-retry:hover{background:#fee2e2}.gengage-chat-input-area{display:flex;flex-wrap:wrap;align-items:center;gap:0;padding:8px 12px;border-top:1px solid var(--_gengage-border-color);background:var(--gengage-background-color, #fff)}.gengage-chat-input-pill{display:flex;align-items:center;gap:4px;flex:1;min-width:0;height:44px;background:#f3f4f6;border:1px solid var(--_gengage-border-color);border-radius:30px;padding:2px 8px;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.gengage-chat-input-pill:focus-within{border-color:var(--gengage-primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f626}.gengage-chat-input{flex:1;min-width:0;min-height:40px;max-height:120px;padding:0 6px 0 14px;border:none;border-radius:0;font-size:14px;font-family:inherit;line-height:1.4;align-content:center;outline:none;background:transparent;color:#1f2937;resize:none;overflow-y:hidden}@media(max-width:767px){.gengage-chat-input{max-height:40px;white-space:nowrap;overflow:hidden}.gengage-chat-send{width:44px;height:44px;min-width:44px}}.gengage-chat-input::placeholder{font-size:14px;color:#6b7280}.gengage-chat-send{width:36px;height:36px;min-width:36px;padding:0;border:none;border-radius:50%;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-weight:700;font-size:0;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease,transform .15s ease;box-shadow:0 2px 4px #0000001f}.gengage-chat-send:hover{filter:brightness(.92);transform:translateY(-1px);box-shadow:0 4px 8px #0000002e}.gengage-chat-send:active{transform:translateY(0);box-shadow:0 1px 2px #0000001f}.gengage-chat-send svg{width:18px;height:18px}.gengage-chat-send:disabled{background:#d1d5db;box-shadow:none;cursor:not-allowed}.gengage-chat-footer{padding:4px 10px;text-align:center;font-size:10px;color:#6b7280;border-top:1px solid #f1f5f9;background:var(--gengage-background-color, #fff)}.gengage-chat-uispec{width:100%}.gengage-chat-uispec:empty{display:none}.gengage-chat-uispec>*{animation:gengage-chat-widget-enter .16s cubic-bezier(.2,.7,.2,1) both}@keyframes gengage-chat-widget-enter{0%{opacity:0;transform:translateY(5px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.gengage-chat-action-buttons{display:flex;gap:8px;padding:6px 0 4px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.gengage-chat-action-buttons::-webkit-scrollbar{display:none}.gengage-chat-action-btn{flex:0 0 auto;padding:8px 16px;border:none;border-radius:999px;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:13px;font-weight:600;line-height:1.25;font-family:inherit;cursor:pointer;white-space:nowrap;transition:filter .15s ease,transform .1s ease}.gengage-chat-action-btn:hover{filter:brightness(.92)}.gengage-chat-action-btn:active{transform:scale(.97)}.gengage-chat-product-card{position:relative;border:1px solid #eee;border-radius:16px;overflow:hidden;background:#fff;width:160px;min-width:160px;max-width:160px;box-shadow:0 2px 8px #0000000f;transition:transform .1s ease,box-shadow .2s ease}.gengage-chat-product-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.gengage-chat-product-card-img{width:100%;height:120px;object-fit:contain;display:block;background:#fff;padding:8px;box-sizing:border-box}.gengage-chat-product-card-body{display:flex;flex-direction:column;gap:4px;padding:8px 10px 10px;text-align:center}.gengage-chat-product-card-name{font-size:13px;font-weight:600;color:#1f2937;line-height:1.35;margin-bottom:0;min-height:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.gengage-chat-product-card-brand{font-size:10px;color:#666}.gengage-chat-product-card-rating{font-size:11px;color:#f59e0b;line-height:1}.gengage-chat-product-card-review-count{color:#64748b;font-size:10px}.gengage-chat-product-card-price{display:flex;align-items:baseline;justify-content:center;gap:4px;font-size:16px;font-weight:800;color:#0f172a}.gengage-chat-product-card-original-price{text-decoration:line-through;color:#64748b;font-weight:400;font-size:12px}.gengage-chat-price-skeleton{display:inline-block;width:80px;height:16px;background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:gengage-skeleton-price-pulse 1.5s ease-in-out infinite;border-radius:4px;vertical-align:middle}@keyframes gengage-skeleton-price-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-product-card-cta{display:block;padding:8px 10px;text-align:center;background:transparent;color:var(--gengage-primary-color, #3b82f6);text-decoration:none;font-size:12px;font-weight:700;letter-spacing:.01em;border-top:1px solid #f1f5f9;transition:color .15s ease,background .15s ease}.gengage-chat-product-card-cta:hover{color:var(--gengage-primary-color, #0b24d6);background:#f8fafc}.gengage-chat-product-card-cta:active{background:#f1f5f9}.gengage-chat-product-summary{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:12px;background:#fff;cursor:pointer;transition:background .15s,box-shadow .15s;margin:4px 0}.gengage-chat-product-summary:hover{background:#f9fafb;box-shadow:0 1px 4px #0000000f}.gengage-chat-product-summary__image{flex-shrink:0;width:64px;height:64px;border-radius:8px;overflow:hidden;border:1px solid #f3f4f6;background:#f9fafb}.gengage-chat-product-summary__image img{width:100%;height:100%;object-fit:cover;display:block}.gengage-chat-product-summary__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.gengage-chat-product-summary__name{font-size:13px;font-weight:500;line-height:1.3;color:#111827;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.gengage-chat-product-summary__rating{font-size:11px;color:#f59e0b;line-height:1}.gengage-chat-product-summary__review-count{color:#6b7280;font-size:11px}.gengage-chat-product-summary__price{font-size:13px;font-weight:600;color:#111827;line-height:1;margin-top:2px}.gengage-chat-product-summary__price-original{text-decoration:line-through;color:#6b7280;font-weight:400;font-size:11px}.gengage-chat-product-summary__price-current{color:var(--gengage-primary-color, #111827)}.gengage-chat-product-summary__cta{flex-shrink:0;font-size:12px;font-weight:500;color:var(--gengage-primary-color, #2563eb);text-decoration:none;padding:4px 10px;border-radius:8px;transition:background .15s;white-space:nowrap}.gengage-chat-product-summary__cta:hover{background:#0000000a}.gengage-chat-product-summary__cta:focus-visible{outline:2px solid var(--gengage-primary-color, #2563eb);outline-offset:2px}.gengage-chat-product-grid{display:flex;gap:12px;overflow-x:auto;padding:8px 0;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity;min-height:180px}.gengage-chat-product-grid>*{scroll-snap-align:start;flex:0 0 auto}.gengage-chat-product-grid::-webkit-scrollbar{display:none}.gengage-chat-review-highlights{padding:2px 0 6px}.gengage-chat-review-item{border:1px solid var(--_gengage-border-color);border-radius:12px;padding:10px 12px;background:#fff}.gengage-chat-review-item[data-tone=positive]{border-color:#bbf7d0;background:#f0fdf4}.gengage-chat-review-item[data-tone=negative]{border-color:#fecaca;background:#fef2f2}.gengage-chat-review-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--_gengage-text-secondary);margin-bottom:4px}.gengage-chat-review-text{font-size:13px;line-height:1.45;color:#1f2937}.gengage-chat-review-rating{margin-top:6px;font-size:12px;font-weight:700;color:#0f172a}.gengage-chat-review-empty{font-size:12px;color:var(--_gengage-text-secondary)}.gengage-chat-review-tabs{display:flex;gap:6px;margin-bottom:10px}.gengage-chat-review-tab{padding:6px 14px;border:1px solid var(--_gengage-border-color);border-radius:999px;background:#fff;color:var(--_gengage-text-secondary);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s}.gengage-chat-review-tab:hover{background:#f8fafc}.gengage-chat-review-tab--active{background:#f1f5f9;border-color:#94a3b8;color:#0f172a}.gengage-chat-review-pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.gengage-chat-review-pill{display:flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--_gengage-border-color);border-radius:8px;background:#fff;font-size:12px;color:#334155;box-shadow:0 1px 2px #0000000a}.gengage-chat-review-pill[data-tone=positive]{border-color:#bbf7d0}.gengage-chat-review-pill[data-tone=negative]{border-color:#fecaca}.gengage-chat-review-pill-icon{font-size:11px;font-weight:700}.gengage-chat-review-pill[data-tone=positive] .gengage-chat-review-pill-icon{color:#16a34a}.gengage-chat-review-pill[data-tone=negative] .gengage-chat-review-pill-icon{color:#dc2626}.gengage-chat-review-pill-count{font-size:10px;font-weight:700;background:#f1f5f9;color:var(--_gengage-text-secondary);border-radius:4px;padding:1px 5px}.gengage-chat-review-items{display:grid;gap:10px}.gengage-chat-divider{border:none;border-top:1px solid var(--_gengage-border-color);margin:8px 0}.gengage-chat-divider-wrapper{display:flex;align-items:center;gap:8px;margin:8px 0}.gengage-chat-divider-wrapper hr{flex:1;border:none;border-top:1px solid var(--_gengage-border-color);margin:0}.gengage-chat-divider-label{font-size:11px;color:#6b7280;white-space:nowrap}.gengage-chat--overlay .gengage-chat-drawer{position:fixed;inset:0;width:100%;max-width:480px;max-height:100%;margin:0 auto;border-radius:0;animation:gengage-chat-overlay-in .24s cubic-bezier(.2,.72,.2,1)}.gengage-chat--overlay:before{content:"";position:fixed;inset:0;background:#00000073;z-index:-1}@keyframes gengage-chat-overlay-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-panel-skeleton{display:flex;flex-direction:column;gap:14px;padding:6px 0}.gengage-chat-panel-skeleton-block{height:110px;border-radius:10px;background:linear-gradient(90deg,#e5e7eb 25%,#f3f4f6,#e5e7eb 75%);background-size:200% 100%;animation:gengage-panel-shimmer 1.4s infinite}@keyframes gengage-panel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-panel-skeleton-block--image{height:200px;border-radius:8px;margin-bottom:12px}.gengage-chat-panel-skeleton-block--text{height:16px;border-radius:4px;margin-bottom:8px}.gengage-chat-panel-skeleton-block--text:nth-child(3){width:80%}.gengage-chat-panel-skeleton-block--text:nth-child(4){width:60%}.gengage-chat-panel-skeleton-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.gengage-chat-panel-skeleton-block--card{height:120px;border-radius:8px}.gengage-chat-panel-skeleton-block--row{height:32px;border-radius:4px;margin-bottom:4px}.gengage-chat-panel .gengage-chat-product-card{width:100%;max-width:100%;min-width:0;display:flex;flex-direction:column;border-radius:12px;border:1px solid var(--_gengage-border-color);box-shadow:0 1px 4px #0000000f;overflow:hidden;padding:0}.gengage-chat-panel .gengage-chat-product-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;border-color:#d1d5db}.gengage-chat-panel .gengage-chat-product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));overflow-x:visible;gap:12px;min-height:auto;padding:4px 0}.gengage-chat-panel .gengage-chat-product-card-img{width:100%;height:160px;border-radius:0;object-fit:contain;background:#fafafa;padding:12px;box-sizing:border-box}.gengage-chat-panel .gengage-chat-product-card-body{padding:10px 12px 12px;text-align:left;gap:4px}.gengage-chat-panel .gengage-chat-product-card-name{min-height:0;margin-bottom:2px;font-size:13px;-webkit-line-clamp:2}.gengage-chat-panel .gengage-chat-product-card-price{justify-content:flex-start;font-size:15px}.gengage-chat-panel .gengage-chat-product-card-cta{display:block;padding:10px 12px;text-align:center;border-top:1px solid #f1f5f9;border-radius:0;background:transparent;color:var(--gengage-primary-color, #3b82f6);font-weight:700;font-size:13px}.gengage-chat-product-details-panel{display:flex;flex-direction:column;gap:12px;width:100%;background:#fff;border:1px solid var(--_gengage-border-color);border-radius:16px;padding:14px;box-sizing:border-box}.gengage-chat-product-details-media{border:1px solid #f1f5f9;border-radius:12px;background:#fafafa;padding:12px;display:flex;flex-direction:column;align-items:center}.gengage-chat-product-details-img{width:100%;height:auto;max-height:300px;object-fit:contain;border-radius:8px}.gengage-chat-product-details-content{display:flex;flex-direction:column;gap:8px;min-width:0}.gengage-chat-product-details-title{margin:0;font-size:17px;font-weight:700;line-height:1.3;color:#0f172a}.gengage-chat-product-details-rating{display:inline-flex;align-items:center;gap:4px;width:fit-content;padding:3px 8px;border-radius:999px;background:#fff7ed;color:#9a3412;font-size:13px;font-weight:700}.gengage-chat-product-details-review-count{color:#7c2d12;font-weight:600}.gengage-chat-product-details-price{display:flex;align-items:baseline;gap:6px}.gengage-chat-product-details-original-price{font-size:14px;color:#64748b;text-decoration:line-through}.gengage-chat-product-details-current-price{font-size:22px;font-weight:800;line-height:1.1;color:#0f172a}.gengage-chat-product-details-stock{width:fit-content;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700}.gengage-chat-product-details-stock.is-in-stock{background:#dcfce7;color:#166534}.gengage-chat-product-details-stock.is-out-of-stock{background:#fee2e2;color:#991b1b}.gengage-chat-product-details-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}.gengage-chat-product-details-cta{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 20px;border-radius:999px;border:none;text-decoration:none;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:14px;font-weight:700;cursor:pointer;transition:filter .14s ease,transform .12s ease}.gengage-chat-product-details-cta:hover{filter:brightness(1.05);transform:translateY(-1px)}.gengage-chat-product-details-cta:active{transform:translateY(1px)}.gengage-chat-product-details-atc{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;border:none;border-radius:10px;background:var(--_gengage-success-color);color:#fff;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;transition:filter .12s ease,transform .12s ease}.gengage-chat-product-details-atc:hover{filter:brightness(1.08);transform:translateY(-1px)}.gengage-chat-product-details-atc:active{transform:translateY(1px)}.gengage-chat-product-detail-tabs{margin-top:4px;border-top:1px solid var(--_gengage-border-color);padding-top:12px}.gengage-chat-product-detail-tab-bar{display:flex;gap:0;border-bottom:2px solid var(--_gengage-border-color);margin-bottom:12px}.gengage-chat-product-detail-tab{flex:1;padding:8px 12px;border:none;background:transparent;color:var(--_gengage-text-secondary);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.gengage-chat-product-detail-tab:hover{color:#334155}.gengage-chat-product-detail-tab--active{color:var(--gengage-primary-color, #3b82f6);border-bottom-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-detail-tab-panel{font-size:13px;line-height:1.6;color:#374151}.gengage-chat-product-specs-table{width:100%;border-collapse:collapse;font-size:13px}.gengage-chat-product-specs-table tr:nth-child(2n){background:#f8fafc}.gengage-chat-product-specs-key{padding:6px 10px;font-weight:600;color:#475569;white-space:nowrap;border-bottom:1px solid #f1f5f9;width:40%}.gengage-chat-product-specs-value{padding:6px 10px;color:#1f2937;border-bottom:1px solid #f1f5f9}.gengage-chat-product-card-atc{position:absolute;bottom:42px;right:6px;opacity:0;transition:opacity .15s ease;z-index:1}.gengage-chat-product-card:hover .gengage-chat-product-card-atc{opacity:1}.gengage-chat-drawer.gengage-chat-drawer--hidden{clip-path:inset(0 0 0 100%);opacity:0;pointer-events:none;box-shadow:none}.gengage-chat-root--mobile .gengage-chat-drawer.gengage-chat-drawer--hidden{clip-path:inset(100% 0 0 0);opacity:0;pointer-events:none;box-shadow:none}@media(max-width:900px){.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:clamp(280px,calc(100vw - var(--_gengage-chat-conversation-width)),560px);max-width:560px}}.gengage-chat-attachment-preview{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#f3f4f6;border:1px solid var(--_gengage-border-color);border-radius:8px;width:100%;box-sizing:border-box}.gengage-chat-attachment-preview--hidden{display:none}.gengage-chat-attachment-preview-thumb{width:40px;height:40px;border-radius:4px;object-fit:cover;flex-shrink:0}.gengage-chat-attachment-name{flex:1;font-size:12px;color:#4b5563;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gengage-chat-attachment-remove{background:none;border:none;cursor:pointer;font-size:18px;color:#6b7280;padding:0 4px;line-height:1;flex-shrink:0}.gengage-chat-attachment-remove:hover{color:#ef4444}.gengage-chat-attach-btn{background:none;border:none;cursor:pointer;padding:6px;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#6b7280;transition:color .15s,background .15s}.gengage-chat-attach-btn:hover{color:#4b5563;background:#0000000d}.gengage-chat-attach-btn svg{width:20px;height:20px}.gengage-chat-mic-btn{background:none;border:none;cursor:pointer;padding:6px;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#6b7280;transition:color .15s,background .15s}.gengage-chat-mic-btn:hover{color:#4b5563;background:#0000000d}.gengage-chat-mic-btn svg{width:20px;height:20px}.gengage-chat-mic-btn--active{color:#ef4444;animation:gengage-mic-pulse 1.2s ease-in-out infinite}.gengage-chat-mic-btn--active:hover{color:#dc2626}@keyframes gengage-mic-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.8}}.gengage-chat-input-area--dragover{outline:2px dashed var(--gengage-primary-color, #3b82f6);outline-offset:-2px;background:#eff6ff}.gengage-chat-attachment-thumb{width:120px;max-width:100%;height:auto;border-radius:8px;margin-bottom:6px;display:block}@media(max-width:768px){.gengage-chat-panel-divider{display:none}.gengage-chat-drawer--with-panel{left:0;right:0;width:100%;border-radius:0}.gengage-chat-drawer--with-panel .gengage-chat-body{flex-direction:column}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:100%;min-width:0;max-width:none;max-height:30dvh;border-right:none;border-bottom:1px solid var(--_gengage-border-color);padding:0 12px 12px;margin:0;border-radius:0;box-shadow:none}.gengage-chat-drawer--with-panel .gengage-chat-conversation{width:100%;flex:1;border-left:none}.gengage-chat-panel .gengage-chat-product-card{grid-template-columns:84px 1fr}.gengage-chat-panel .gengage-chat-product-card-cta{grid-column:1 / -1;width:100%}.gengage-chat-product-details-panel{padding:12px;gap:12px}.gengage-chat-product-details-media{min-height:140px}.gengage-chat-product-details-title{font-size:15px}.gengage-chat-product-details-current-price{font-size:20px}.gengage-chat-product-grid{scroll-snap-type:x mandatory}.gengage-chat-product-card{width:280px;min-width:280px;scroll-snap-align:center}.gengage-chat-product-card-img{height:180px}}@media(max-width:480px){.gengage-chat-drawer{position:fixed;inset:0;width:100%;max-height:100%;border-radius:0}.gengage-chat-bubble{max-width:100%}}.gengage-chat-kvkk-banner{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;background:#fffbeb;border-bottom:1px solid #fde68a;font-size:12px;line-height:1.5;color:#92400e}.gengage-chat-kvkk-content{flex:1;min-width:0}.gengage-chat-kvkk-content a{color:#b45309;text-decoration:underline}.gengage-chat-kvkk-dismiss{flex-shrink:0;width:20px;height:20px;border:none;background:transparent;color:#92400e;font-size:16px;cursor:pointer;padding:0;line-height:1}.gengage-chat-comparison{padding:16px}.gengage-chat-comparison-heading{font-size:14px;font-weight:700;letter-spacing:.05em;color:#0f172a;margin:0 0 16px}.gengage-chat-comparison-recommended{border:1px solid var(--_gengage-border-color);border-radius:12px;padding:16px;background:#fff;box-shadow:0 1px 3px #0000000f;margin-bottom:12px}.gengage-chat-comparison-recommended-label{font-size:12px;font-weight:700;color:#16a34a;text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px}.gengage-chat-comparison-recommended-body{display:flex;gap:12px;align-items:flex-start}.gengage-chat-comparison-recommended-body img{width:80px;height:80px;object-fit:contain;border-radius:8px;background:#f8fafc}.gengage-chat-comparison-recommended-info{flex:1;min-width:0}.gengage-chat-comparison-recommended-title{font-size:14px;font-weight:600;color:#0f172a;margin-bottom:4px}.gengage-chat-comparison-recommended-price{font-size:16px;font-weight:700;color:#0f172a}.gengage-chat-comparison-highlights{margin-top:12px;padding-top:12px;border-top:1px solid #f1f5f9}.gengage-chat-comparison-highlights-label{font-size:12px;font-weight:600;color:var(--_gengage-text-secondary);margin-bottom:6px}.gengage-chat-comparison-highlights ul{margin:0;padding-left:18px;font-size:13px;color:#334155;line-height:1.6}.gengage-chat-comparison-special{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;padding:12px 16px;margin-bottom:12px;font-size:13px;color:#92400e}.gengage-chat-comparison-special summary{cursor:pointer;font-weight:600}.gengage-chat-comparison-special ul{margin:8px 0 0;padding-left:18px;line-height:1.6}.gengage-chat-comparison-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:12px}.gengage-chat-comparison-table th,.gengage-chat-comparison-table td{padding:10px 12px;text-align:center;border-bottom:1px solid #f1f5f9;vertical-align:top}.gengage-chat-comparison-table th{font-weight:600;font-size:12px;color:#334155}.gengage-chat-comparison-table th img{width:60px;height:60px;object-fit:contain;border-radius:6px;background:#f8fafc;margin-bottom:6px}.gengage-chat-comparison-table-price{font-weight:700;color:#0f172a}.gengage-chat-comparison-label{text-align:left;font-weight:600;color:var(--_gengage-text-secondary);white-space:nowrap}.gengage-chat-comparison-selected{background:#f0fdf4}.gengage-chat-comparison-recommended-text{padding:8px 12px;font-size:12px;color:var(--gengage-text-secondary, #475569);font-style:italic;border-top:1px solid var(--gengage-border-color, #e2e8f0);margin-top:8px}.gengage-chat-comparison-product-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.gengage-chat-comparison-view-btn{flex:1;min-width:0;padding:8px 12px;border:1px solid var(--gengage-primary-color, #3b82f6);border-radius:6px;background:transparent;color:var(--gengage-primary-color, #3b82f6);font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s ease,color .15s ease;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.gengage-chat-comparison-view-btn:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-pills{position:relative;padding:8px 12px;border-top:1px solid #f1f5f9;background:var(--gengage-background-color, #fff)}.gengage-chat-pills-scroll{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-right:28px}.gengage-chat-pills-scroll::-webkit-scrollbar{display:none}.gengage-chat-pill{flex:0 0 auto;padding:8px 16px;border:none;border-radius:999px;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:13px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:filter .15s,transform .1s}.gengage-chat-pill:hover{filter:brightness(.92)}.gengage-chat-pill:active{transform:scale(.97)}.gengage-chat-pill--rich{display:flex;align-items:center;gap:8px;padding:6px 14px 6px 6px;border-radius:20px}.gengage-chat-pill-img{width:32px;height:32px;border-radius:50%;object-fit:cover;flex-shrink:0;background:#ffffff26}.gengage-chat-pill-text{font-size:13px;font-weight:600;line-height:1.2}.gengage-chat-pill-desc{display:none}.gengage-chat-pill--rich .gengage-chat-pill-desc{display:block;font-size:10px;font-weight:400;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.gengage-chat-pills-arrow{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:28px;height:28px;border-radius:50%;border:1px solid var(--_gengage-border-color);background:#fff;color:var(--_gengage-text-secondary);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:-4px 0 8px #ffffffe6;z-index:1}.gengage-chat-pills-arrow:hover{background:#f8fafc;color:#334155}@media(prefers-reduced-motion:reduce){.gengage-chat-uispec>*,.gengage-chat-action-btn,.gengage-chat-product-card,.gengage-chat-product-card-cta,.gengage-chat-send,.gengage-chat-launcher,.gengage-chat-pill,.gengage-chat-drawer,.gengage-chat-proactive,.gengage-chat-typing-dots span,.gengage-chat-typing-sparkle,.gengage-chat-thinking-step-marker--active,.gengage-chat-bubble,.gengage-chat-panel-skeleton-block,.gengage-chat-ai-toppick-card,.gengage-chat-mic-btn--active,.gengage-chat-ai-toppick-spinner:after,.gengage-chat-panel-shimmer,.gengage-chat-overlay,.gengage-chat-product-details-skeleton-price{animation:none!important;transition:none!important;transform:none!important}}.gengage-chat-bubble--user{position:relative}.gengage-chat-rollback-btn{position:absolute;left:-28px;top:50%;transform:translateY(-50%);width:24px;height:24px;border:none;border-radius:50%;background:var(--gengage-surface-color, #f1f5f9);color:var(--gengage-text-secondary, #64748b);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease;padding:0}.gengage-chat-bubble--user:hover .gengage-chat-rollback-btn{opacity:1}.gengage-chat-rollback-btn:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-bubble--hidden{display:none}.gengage-chat-ai-top-picks{display:flex;flex-direction:column;gap:12px;padding:8px 0}.gengage-chat-ai-top-picks-title{font-size:15px;font-weight:600;color:var(--gengage-text-primary, #1e293b);margin:0 0 4px}.gengage-chat-ai-top-picks-cards{display:flex;flex-direction:column;gap:10px}.gengage-chat-ai-toppick-discount-badge{position:absolute;top:8px;left:8px;background:var(--gengage-discount-bg, #ef4444);color:#fff;font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px;z-index:1}.gengage-chat-ai-toppick-card--winner{position:relative;display:flex;flex-direction:column;border:2px solid var(--gengage-primary-color, #3b82f6);border-radius:12px;background:#fff;overflow:hidden;transition:box-shadow .2s ease}.gengage-chat-ai-toppick-card--winner:hover{box-shadow:0 4px 16px #3b82f626}.gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img{width:100%;height:140px;object-fit:contain;background:#f8fafc}.gengage-chat-ai-toppick-card--compact{position:relative;display:flex;flex-direction:row;align-items:center;gap:12px;border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;background:#fff;padding:10px;transition:box-shadow .2s ease,transform .15s ease}.gengage-chat-ai-toppick-card--compact:hover{box-shadow:0 2px 8px #00000014;transform:translateY(-1px)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{width:64px;height:64px;object-fit:contain;border-radius:8px;background:#f8fafc;flex-shrink:0}.gengage-chat-ai-toppick-badge{position:absolute;top:8px;left:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 8px;border-radius:4px;z-index:1;letter-spacing:.5px}.gengage-chat-ai-toppick-body{display:flex;flex-direction:column;gap:4px;padding:10px;flex:1;min-width:0}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{padding:0}.gengage-chat-ai-toppick-name{font-size:13px;font-weight:600;color:var(--gengage-text-primary, #1e293b);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.gengage-chat-ai-toppick-role{font-size:11px;font-weight:600;color:var(--gengage-primary-color, #3b82f6);text-transform:uppercase;letter-spacing:.3px}.gengage-chat-ai-toppick-labels{display:flex;flex-wrap:wrap;gap:4px}.gengage-chat-ai-toppick-label{font-size:11px;padding:1px 6px;border-radius:4px;font-weight:500}.gengage-chat-ai-toppick-label[data-sentiment=positive]{background:#dcfce7;color:#166534}.gengage-chat-ai-toppick-label[data-sentiment=negative]{background:#fee2e2;color:#991b1b}.gengage-chat-ai-toppick-label[data-sentiment=neutral]{background:#f1f5f9;color:#475569}.gengage-chat-ai-toppick-score{font-size:12px;font-weight:700;color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-ai-toppick-reason{font-size:12px;color:var(--gengage-chat-text-secondary, #666);line-height:1.4;margin-top:4px}.gengage-chat-ai-toppick-review{font-size:12px;font-style:italic;color:var(--gengage-text-secondary, #64748b);margin:2px 0;padding-left:8px;border-left:2px solid var(--gengage-border-color, #e2e8f0)}.gengage-chat-ai-toppick-price{font-size:14px;font-weight:700;color:var(--gengage-text-primary, #1e293b)}.gengage-chat-ai-toppick-original-price{text-decoration:line-through;color:var(--gengage-text-secondary, #64748b);font-weight:400;font-size:12px}.gengage-chat-ai-toppick-cta{display:block;width:calc(100% - 20px);margin:6px 10px 10px;padding:8px 0;border:none;border-radius:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:13px;font-weight:600;cursor:pointer;text-align:center;transition:background .15s ease}.gengage-chat-ai-toppick-cta:hover{filter:brightness(.92)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{width:auto;margin:0;padding:6px 14px;flex-shrink:0;align-self:center}.gengage-chat-ai-toppick-spinner{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:center;justify-content:center;border-radius:12px;z-index:3}.gengage-chat-ai-toppick-spinner:after{content:"";width:24px;height:24px;border:3px solid var(--gengage-border, #e2e8f0);border-top-color:var(--gengage-accent-primary, #3b82f6);border-radius:50%;animation:gengage-spin .7s linear infinite}@keyframes gengage-spin{to{transform:rotate(360deg)}}@media(max-width:768px){.gengage-chat-ai-top-picks-cards{flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:10px;padding-bottom:4px}.gengage-chat-ai-toppick-card--winner,.gengage-chat-ai-toppick-card--compact{min-width:280px;max-width:280px;flex-shrink:0;scroll-snap-align:start}.gengage-chat-ai-toppick-card--compact{flex-direction:column;align-items:stretch}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{width:100%;height:100px;border-radius:8px 8px 0 0}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{width:calc(100% - 20px);margin:6px 10px 10px;align-self:stretch}.gengage-chat-rollback-btn{left:-24px}}.gengage-chat-grounding-review{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;transition:background .15s ease,border-color .15s ease}.gengage-chat-grounding-review:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-grounding-review-icon{font-size:20px;flex-shrink:0}.gengage-chat-grounding-review-body{flex:1;min-width:0}.gengage-chat-grounding-review-title{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-grounding-review-subtitle{font-size:12px;color:var(--gengage-text-muted, #64748b);margin-top:2px}.gengage-chat-grounding-review-cta{font-size:13px;font-weight:500;color:var(--gengage-primary-color, #3b82f6);white-space:nowrap;flex-shrink:0}.gengage-chat-grouping-cards{display:flex;flex-direction:column;gap:6px}.gengage-chat-grouping-card{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:8px;transition:background .15s ease,border-color .15s ease}.gengage-chat-grouping-card:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-grouping-card-arrow{display:none;font-size:14px;color:var(--gengage-primary-color, #3b82f6);flex-shrink:0}.gengage-chat-grouping-card-img{width:20px;height:20px;border-radius:4px;object-fit:cover;flex-shrink:0}.gengage-chat-grouping-card-body{flex:1;min-width:0;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.gengage-chat-grouping-card-name{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-grouping-card-desc{font-size:12px;color:var(--gengage-text-muted, #64748b)}.gengage-chat-grouping-card-labels{display:block;font-size:11px;color:var(--gengage-chat-text-secondary, #888);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gengage-chat-root--mobile .gengage-chat-grouping-card-img{display:none}.gengage-chat-root--mobile .gengage-chat-grouping-card-arrow{display:inline}.gengage-chat-suggested-search-cards{display:flex;flex-direction:column;gap:8px}.gengage-chat-suggested-search-card{display:flex;align-items:flex-start;gap:12px;padding:10px 14px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;transition:background .15s ease,border-color .15s ease}.gengage-chat-suggested-search-card:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-suggested-search-card-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex-shrink:0}.gengage-chat-suggested-search-card-body{flex:1;min-width:0}.gengage-chat-suggested-search-card-name{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-suggested-search-card-desc{font-size:12px;color:var(--gengage-text-secondary, #475569);margin-top:2px}.gengage-chat-suggested-search-card-diff{font-size:11px;color:var(--gengage-text-muted, #64748b);margin-top:2px;font-style:italic}.gengage-chat-product-details-gallery{position:relative}.gengage-chat-product-details-gallery .gengage-chat-product-details-img{touch-action:pan-y}.gengage-chat-product-gallery-thumbs{display:flex;gap:8px;padding:10px 0 4px;overflow-x:auto;scrollbar-width:thin;justify-content:center;width:100%}.gengage-chat-product-gallery-thumb{width:56px;height:56px;object-fit:cover;border-radius:8px;border:2px solid transparent;cursor:pointer;flex-shrink:0;transition:border-color .15s ease;background:#fff}.gengage-chat-product-gallery-thumb:hover{border-color:var(--gengage-border-color, #cbd5e1)}.gengage-chat-product-gallery-thumb--active{border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-variants{margin-top:12px}.gengage-chat-product-variants-label{font-size:12px;font-weight:600;color:var(--gengage-text-muted, #64748b);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.gengage-chat-product-variants-list{display:flex;flex-wrap:wrap;gap:6px}.gengage-chat-product-variant-btn{padding:6px 12px;border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:6px;background:var(--gengage-surface-color, #f8fafc);color:var(--gengage-text-color, #1e293b);font-size:12px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.gengage-chat-product-variant-btn:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-grid-wrapper{display:flex;flex-direction:column;gap:8px}.gengage-chat-product-sort-toolbar{display:flex;gap:4px;padding:4px;background:var(--gengage-surface-color, #f8fafc);border-radius:8px;border:1px solid var(--gengage-border-color, #e2e8f0)}.gengage-chat-product-sort-btn{flex:1;padding:6px 10px;border:none;border-radius:6px;background:transparent;color:var(--gengage-text-muted, #64748b);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease}.gengage-chat-product-sort-btn:hover{background:var(--gengage-hover-color, #f1f5f9);color:var(--gengage-text-color, #1e293b)}.gengage-chat-product-sort-btn--active,.gengage-chat-product-sort-btn--active:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-product-sort-separator{width:1px;background:var(--gengage-border-color, #e2e8f0);margin:2px}.gengage-chat-comparison-toggle-btn{flex:none;padding:6px 10px;border:none;border-radius:6px;background:transparent;color:var(--gengage-text-muted, #64748b);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease;white-space:nowrap}.gengage-chat-comparison-toggle-btn:hover{background:var(--gengage-hover-color, #f1f5f9);color:var(--gengage-text-color, #1e293b)}.gengage-chat-comparison-toggle-btn--active,.gengage-chat-comparison-toggle-btn--active:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-comparison-select-wrapper{position:relative}.gengage-chat-comparison-checkbox{position:absolute;top:8px;left:8px;z-index:2;width:18px;height:18px;cursor:pointer;accent-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-comparison-floating-btn{display:block;width:100%;margin-top:8px;padding:10px 16px;border:none;border-radius:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s ease;text-align:center}.gengage-chat-comparison-floating-btn:hover{background:var(--gengage-primary-hover, #2563eb)}.gengage-chat-panel-topbar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--_gengage-border-color);background:#f8fafc;min-height:44px;flex-shrink:0;position:sticky;top:0;z-index:3}.gengage-chat-panel-topbar-back,.gengage-chat-panel-topbar-forward{width:28px;height:28px;min-width:28px;padding:0;border:1px solid #d1d5db;border-radius:6px;background:transparent;color:#374151;font-size:14px;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,border-color .15s ease,opacity .15s ease}.gengage-chat-panel-topbar-back:hover:not(:disabled),.gengage-chat-panel-topbar-forward:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.gengage-chat-panel-topbar-back:disabled,.gengage-chat-panel-topbar-forward:disabled{opacity:.3;cursor:default}.gengage-chat-panel-topbar-title{flex:1;font-size:14px;font-weight:600;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}@keyframes gengage-typewriter-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-typewriter-block{display:block;animation:gengage-typewriter-fade-in .15s ease both}@media(prefers-reduced-motion:reduce){.gengage-chat-typewriter-block{animation:none}}.gengage-product-mention{color:var(--gengage-primary-color, #3b82f6);text-decoration:none;cursor:pointer;font-weight:500;border-bottom:1px dashed var(--gengage-primary-color, #3b82f6);transition:border-color .15s}.gengage-product-mention:hover{border-bottom-style:solid}@keyframes gengage-skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}.gengage-chat-panel-skeleton-block{animation:gengage-skeleton-pulse 1.5s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.gengage-chat-panel-skeleton-block{animation:none}}.gengage-chat-input-chips{display:flex;gap:6px;padding:4px 12px 2px;flex-wrap:wrap}.gengage-chat-input-chip{display:inline-flex;align-items:center;padding:4px 10px;border-radius:12px;border:1px solid var(--_gengage-border-color);background:#f9fafb;color:#374151;font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .12s,border-color .12s;white-space:nowrap}.gengage-chat-input-chip:hover{background:#f3f4f6;border-color:#d1d5db}.gengage-chat-icon{width:14px;height:14px;flex-shrink:0}.gengage-chat-input-chip-icon,.gengage-chat-pill-icon{display:inline-flex;align-items:center;margin-right:4px}.gengage-chat-product-card-img-wrapper,.gengage-chat-product-details-img-wrap{position:relative;overflow:hidden}.gengage-chat-product-card-discount-badge{position:absolute;top:6px;left:6px;padding:2px 6px;border-radius:4px;background:var(--_gengage-discount-color);color:#fff;font-size:11px;font-weight:700;line-height:1.3;z-index:1}.gengage-chat-product-card-stock{font-size:11px;font-weight:600;margin-top:2px}.gengage-chat-product-card-stock.is-in-stock{color:var(--_gengage-success-color)}.gengage-chat-product-card-stock.is-out-of-stock{color:#dc2626}.gengage-chat-find-similar-pill{position:absolute;top:8px;right:8px;opacity:0;pointer-events:none;transition:opacity .2s ease;padding:4px 10px;font-size:11px;font-weight:500;font-family:inherit;border:none;border-radius:12px;background:var(--gengage-chat-pill-bg, rgba(0, 0, 0, .7));color:var(--gengage-chat-pill-text, #fff);cursor:pointer;white-space:nowrap;z-index:2}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-find-similar-pill,.gengage-chat-product-details-img-wrap:hover .gengage-chat-find-similar-pill{opacity:1;pointer-events:auto}.gengage-chat-favorite-btn{position:absolute;top:8px;right:8px;background:#ffffffe6;border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--gengage-text-secondary, #64748b);z-index:3;transition:color .2s;padding:0}.gengage-chat-favorite-btn:hover,.gengage-chat-favorite-btn--active{color:var(--gengage-accent-primary, #ef4444)}.gengage-chat-product-card-promos,.gengage-chat-product-details-promos{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.gengage-chat-product-card-promo-badge,.gengage-chat-product-details-promo-badge{display:inline-block;padding:2px 6px;font-size:10px;font-weight:500;border-radius:4px;background:var(--gengage-chat-promo-bg, #e8f5e9);color:var(--gengage-chat-promo-text, #2e7d32);white-space:nowrap}.gengage-chat-thumbnails-column{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:4px;z-index:2;pointer-events:auto}.gengage-chat-thumbnail-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:2px solid #e5e7eb;border-radius:6px;background:#fff;cursor:pointer;overflow:hidden;transition:border-color .15s ease}.gengage-chat-thumbnail-btn:hover{border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-thumbnail-img{width:100%;height:100%;object-fit:cover}.gengage-chat-choice-prompter{position:absolute;bottom:12px;right:12px;width:200px;padding:12px 14px;background:#fff;border:1px solid var(--_gengage-border-color);border-radius:10px;box-shadow:0 4px 12px #0000001a;z-index:10;animation:gengage-choice-prompter-in .2s ease}@keyframes gengage-choice-prompter-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-choice-prompter-heading{font-size:13px;font-weight:600;color:#1f2937;margin-bottom:4px}.gengage-chat-choice-prompter-suggestion{font-size:12px;color:#6b7280;margin-bottom:10px;line-height:1.4}.gengage-chat-choice-prompter-cta{display:block;width:100%;padding:6px 12px;border:none;border-radius:6px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;text-align:center;transition:opacity .15s ease}.gengage-chat-choice-prompter-cta:hover{opacity:.9}.gengage-chat-choice-prompter-dismiss{position:absolute;top:4px;right:6px;padding:2px 6px;border:none;background:none;color:#6b7280;font-size:16px;cursor:pointer;line-height:1}.gengage-chat-choice-prompter-dismiss:hover{color:#6b7280}@media(prefers-reduced-motion:reduce){.gengage-chat-choice-prompter{animation:none}}.gengage-chat-pros-cons{padding:12px 14px;background:#f8fafc;border-radius:8px;margin:8px 0}.gengage-chat-pros-cons-heading{margin:0 0 10px;font-size:14px;font-weight:600;color:#0f172a}.gengage-chat-pros-cons-list{list-style:none;margin:0 0 8px;padding:0}.gengage-chat-pros-cons-list:last-child{margin-bottom:0}.gengage-chat-pros-cons-item{display:flex;align-items:flex-start;gap:8px;padding:4px 0;font-size:13px;line-height:1.5;color:#334155}.gengage-chat-pros-cons-icon{flex-shrink:0;width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border-radius:50%}.gengage-chat-pros-cons-icon--pro{color:#16a34a;background:#dcfce7}.gengage-chat-pros-cons-icon--con{color:#dc2626;background:#fee2e2}.gengage-chat-categories{display:flex;flex-direction:column;gap:8px}.gengage-chat-categories-tabs{display:flex;gap:4px;overflow-x:auto;padding:4px 0;-webkit-overflow-scrolling:touch}.gengage-chat-categories-tab{padding:6px 14px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:20px;background:var(--gengage-bg, #fff);color:var(--gengage-text, #374151);cursor:pointer;white-space:nowrap;font-size:13px;transition:background .15s,color .15s}.gengage-chat-categories-tab:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-categories-tab--active{background:var(--gengage-primary, #2563eb);color:#fff;border-color:var(--gengage-primary, #2563eb)}.gengage-chat-categories-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.gengage-chat-categories-filter-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.gengage-chat-categories-filter-tag{padding:4px 10px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:14px;background:var(--gengage-bg, #fff);color:var(--gengage-text-secondary, #6b7280);font-size:12px;cursor:pointer;transition:background .15s}.gengage-chat-categories-filter-tag:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-product-grid-view-more{display:block;width:100%;padding:10px;margin-top:8px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:8px;background:var(--gengage-bg, #fff);color:var(--gengage-primary, #2563eb);font-size:14px;font-weight:500;cursor:pointer;text-align:center;transition:background .15s;grid-column:1 / -1}.gengage-chat-product-grid-view-more:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-product-grid--mobile{display:flex;overflow-x:auto;gap:8px;padding:8px 0;-webkit-overflow-scrolling:touch}.gengage-chat-product-grid--mobile .gengage-chat-product-card{min-width:160px;max-width:180px;flex-shrink:0}.gengage-chat-comparison--mobile .gengage-chat-comparison-table,.gengage-chat-comparison--mobile .gengage-chat-comparison-table thead,.gengage-chat-comparison--mobile .gengage-chat-comparison-table tbody{display:block}.gengage-chat-comparison--mobile .gengage-chat-comparison-table tr{display:flex;flex-wrap:wrap}.gengage-chat-comparison-key-differences{margin-top:12px;padding:12px;background:var(--gengage-bg-secondary, #f9fafb);border-radius:8px}.gengage-chat-comparison-key-differences h4{margin:0 0 8px;font-size:14px;font-weight:600;color:var(--gengage-text, #374151)}.gengage-chat-comparison-key-differences-content{font-size:13px;color:var(--gengage-text-secondary, #6b7280);line-height:1.5}.gengage-chat-comparison-key-differences-content ul{margin:0;padding-left:18px}.gengage-chat-comparison-key-differences-content li{margin-bottom:4px}.gengage-chat-product-details-similars-heading{margin:16px 0 8px;font-size:15px;font-weight:600;color:var(--gengage-text, #374151)}.gengage-chat-product-details-similars{margin-top:8px}.gengage-chat-handoff-notice{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px;margin:8px 0;background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;text-align:center}.gengage-chat-handoff-notice-icon{font-size:24px}.gengage-chat-handoff-notice-heading{margin:0;font-size:14px;font-weight:600;color:#92400e}.gengage-chat-handoff-notice-summary{margin:0;font-size:13px;line-height:1.5;color:#78350f}.gengage-qty-stepper{display:inline-flex;align-items:center;gap:0;border:1px solid #d1d5db;border-radius:8px;overflow:hidden;background:#fff}.gengage-qty-btn{width:var(--_gengage-qty-btn-size);height:var(--_gengage-qty-btn-size);border:none;background:transparent;color:#374151;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .12s}.gengage-qty-btn:hover:not(:disabled){background:#f3f4f6}.gengage-qty-btn:disabled{opacity:.35;cursor:default}.gengage-qty-value{min-width:24px;text-align:center;font-size:13px;font-weight:600;color:#1f2937;-webkit-user-select:none;user-select:none}.gengage-qty-submit{border:none;border-left:1px solid #d1d5db;background:var(--_gengage-success-color);color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;padding:6px 12px;transition:filter .12s ease,transform .12s ease}.gengage-qty-submit:hover{filter:brightness(1.08)}.gengage-qty-submit:active{transform:translateY(1px)}.gengage-qty-stepper--compact{border-radius:14px;box-shadow:0 2px 6px #0000001f}.gengage-qty-stepper--compact .gengage-qty-btn{width:var(--_gengage-qty-btn-size-compact);height:var(--_gengage-qty-btn-size-compact);font-size:12px}.gengage-qty-stepper--compact .gengage-qty-value{min-width:18px;font-size:12px}.gengage-qty-stepper--compact .gengage-qty-submit{padding:4px 8px;font-size:13px;border-radius:0 14px 14px 0}.gengage-chat-product-details-atc-stepper{border-radius:10px}.gengage-chat-product-details-atc-stepper .gengage-qty-btn{width:32px;height:32px}.gengage-chat-product-details-atc-stepper .gengage-qty-value{min-width:28px;font-size:14px}.gengage-chat-product-details-atc-stepper .gengage-qty-submit{padding:8px 18px;font-size:14px;border-radius:0 10px 10px 0}.gengage-chat-product-details-share{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid #d1d5db;border-radius:10px;background:transparent;color:#6b7280;cursor:pointer;transition:color .12s,border-color .12s,background-color .12s;position:relative;flex-shrink:0}.gengage-chat-product-details-share:hover{color:var(--gengage-primary-color, #3b82f6);border-color:var(--gengage-primary-color, #3b82f6);background:#f0f7ff}.gengage-chat-product-details-share:before{content:attr(aria-label);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);padding:4px 8px;border-radius:4px;background:#1e293b;color:#fff;font-size:11px;font-weight:500;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:2}.gengage-chat-product-details-share:hover:before{opacity:1}.gengage-chat-product-details-share--copied:after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--_gengage-success-color);color:#fff;border-radius:10px;font-size:16px;font-weight:700}.gengage-chat-launcher:focus-visible,.gengage-chat-close:focus-visible,.gengage-chat-header-btn:focus-visible,.gengage-chat-header-powered:focus-visible,.gengage-chat-proactive-accept:focus-visible,.gengage-chat-proactive-dismiss:focus-visible,.gengage-chat-send:focus-visible,.gengage-chat-action-btn:focus-visible,.gengage-chat-pill:focus-visible,.gengage-chat-input-chip:focus-visible,.gengage-chat-pills-arrow:focus-visible,.gengage-chat-error-retry:focus-visible,.gengage-chat-product-card-cta:focus-visible,.gengage-chat-product-details-cta:focus-visible,.gengage-chat-product-details-atc:focus-visible,.gengage-chat-product-detail-tab:focus-visible,.gengage-chat-panel-divider-toggle:focus-visible,.gengage-chat-panel-topbar-back:focus-visible,.gengage-chat-panel-topbar-forward:focus-visible,.gengage-chat-rollback-btn:focus-visible,.gengage-chat-ai-toppick-cta:focus-visible,.gengage-chat-comparison-view-btn:focus-visible,.gengage-chat-comparison-toggle-btn:focus-visible,.gengage-chat-comparison-floating-btn:focus-visible,.gengage-chat-comparison-checkbox:focus-visible,.gengage-chat-product-sort-btn:focus-visible,.gengage-chat-product-variant-btn:focus-visible,.gengage-chat-product-gallery-thumb:focus-visible,.gengage-chat-thumbnail-btn:focus-visible,.gengage-chat-find-similar-pill:focus-visible,.gengage-chat-favorite-btn:focus-visible,.gengage-chat-attach-btn:focus-visible,.gengage-chat-mic-btn:focus-visible,.gengage-chat-attachment-remove:focus-visible,.gengage-chat-kvkk-dismiss:focus-visible,.gengage-chat-choice-prompter-cta:focus-visible,.gengage-chat-choice-prompter-dismiss:focus-visible,.gengage-chat-categories-tab:focus-visible,.gengage-chat-categories-filter-tag:focus-visible,.gengage-chat-product-grid-view-more:focus-visible,.gengage-chat-product-details-share:focus-visible,.gengage-qty-btn:focus-visible,.gengage-qty-submit:focus-visible{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:2px}', Oa = N({
3062
+ role: xe(["user", "assistant"]),
3063
+ content: b(),
3063
3064
  timestamp: Y().optional()
3064
- }), qa = L({
3065
- sku: x(),
3066
- name: x(),
3067
- imageUrl: x().url().optional(),
3068
- price: x().optional(),
3069
- originalPrice: x().optional(),
3070
- url: x().url(),
3065
+ }), qa = N({
3066
+ sku: b(),
3067
+ name: b(),
3068
+ imageUrl: b().url().optional(),
3069
+ price: b().optional(),
3070
+ originalPrice: b().optional(),
3071
+ url: b().url(),
3071
3072
  /** Override CTA label (default: "View product") */
3072
- ctaLabel: x().optional()
3073
- }), ja = L({
3073
+ ctaLabel: b().optional()
3074
+ }), ja = N({
3074
3075
  buttons: B(
3075
- L({
3076
- label: x(),
3076
+ N({
3077
+ label: b(),
3077
3078
  /** Opaque action payload forwarded to the backend when clicked. */
3078
- action: L({
3079
- title: x(),
3080
- type: x(),
3081
- payload: $().optional()
3079
+ action: N({
3080
+ title: b(),
3081
+ type: b(),
3082
+ payload: G().optional()
3082
3083
  })
3083
3084
  })
3084
3085
  )
3085
- }), Va = L({}), Ga = L({
3086
- label: x().optional()
3087
- }), me = L({
3088
- sku: x(),
3089
- name: x(),
3090
- price: x(),
3091
- imageUrl: x().optional(),
3086
+ }), Va = N({}), $a = N({
3087
+ label: b().optional()
3088
+ }), fe = N({
3089
+ sku: b(),
3090
+ name: b(),
3091
+ price: b(),
3092
+ imageUrl: b().optional(),
3092
3093
  rating: Y().optional(),
3093
3094
  reviewCount: Y().optional()
3094
- }), $a = L({
3095
- recommended: me,
3096
- products: B(me),
3095
+ }), Ga = N({
3096
+ recommended: fe,
3097
+ products: B(fe),
3097
3098
  attributes: B(
3098
- L({
3099
- label: x(),
3100
- values: B(x())
3099
+ N({
3100
+ label: b(),
3101
+ values: B(b())
3101
3102
  })
3102
3103
  ),
3103
- highlights: B(x()),
3104
- specialCases: B(x()).optional(),
3105
- recommendedText: x().optional(),
3104
+ highlights: B(b()),
3105
+ specialCases: B(b()).optional(),
3106
+ recommendedText: b().optional(),
3106
3107
  winnerHits: ae(
3107
- x(),
3108
- L({
3109
- positive: B(x()).optional(),
3110
- negative: B(x()).optional()
3108
+ b(),
3109
+ N({
3110
+ positive: B(b()).optional(),
3111
+ negative: B(b()).optional()
3111
3112
  })
3112
3113
  ).optional(),
3113
3114
  productActions: ae(
3114
- x(),
3115
- L({
3116
- title: x(),
3117
- type: x(),
3118
- payload: $().optional()
3115
+ b(),
3116
+ N({
3117
+ title: b(),
3118
+ type: b(),
3119
+ payload: G().optional()
3119
3120
  })
3120
3121
  ).optional()
3121
- }), Ka = L({
3122
- label: x(),
3123
- sentiment: be(["positive", "negative", "neutral"]).optional()
3124
- }), Wa = L({
3125
- product: ae(x(), $()),
3126
- role: x().optional(),
3127
- reason: x().optional(),
3122
+ }), Ka = N({
3123
+ label: b(),
3124
+ sentiment: xe(["positive", "negative", "neutral"]).optional()
3125
+ }), Wa = N({
3126
+ product: ae(b(), G()),
3127
+ role: b().optional(),
3128
+ reason: b().optional(),
3128
3129
  labels: B(Ka).optional(),
3129
3130
  expertQualityScore: Y().optional(),
3130
- reviewHighlight: x().optional(),
3131
- action: L({
3132
- title: x(),
3133
- type: x(),
3134
- payload: $().optional()
3131
+ reviewHighlight: b().optional(),
3132
+ action: N({
3133
+ title: b(),
3134
+ type: b(),
3135
+ payload: G().optional()
3135
3136
  }).optional()
3136
- }), Ya = L({
3137
+ }), Ya = N({
3137
3138
  suggestions: B(Wa)
3138
- }), Qa = L({
3139
- title: x().optional(),
3140
- text: x().optional(),
3141
- reviewCount: x().optional(),
3142
- action: L({ title: x(), type: x(), payload: $().optional() })
3143
- }), Xa = L({
3139
+ }), Qa = N({
3140
+ title: b().optional(),
3141
+ text: b().optional(),
3142
+ reviewCount: b().optional(),
3143
+ action: N({ title: b(), type: b(), payload: G().optional() })
3144
+ }), Xa = N({
3144
3145
  entries: B(
3145
- L({
3146
- name: x(),
3147
- image: x().optional(),
3148
- description: x().optional(),
3149
- action: L({ title: x(), type: x(), payload: $().optional() })
3146
+ N({
3147
+ name: b(),
3148
+ image: b().optional(),
3149
+ description: b().optional(),
3150
+ action: N({ title: b(), type: b(), payload: G().optional() })
3150
3151
  })
3151
3152
  )
3152
- }), Ja = L({
3153
+ }), Ja = N({
3153
3154
  entries: B(
3154
- L({
3155
- shortName: x(),
3156
- detailedMessage: x().optional(),
3157
- whyDifferent: x().optional(),
3158
- image: x().optional(),
3159
- action: L({ title: x(), type: x(), payload: $().optional() })
3155
+ N({
3156
+ shortName: b(),
3157
+ detailedMessage: b().optional(),
3158
+ whyDifferent: b().optional(),
3159
+ image: b().optional(),
3160
+ action: N({ title: b(), type: b(), payload: G().optional() })
3160
3161
  })
3161
3162
  )
3162
- }), Ne = L({
3163
- title: x(),
3164
- type: x(),
3165
- payload: $().optional()
3166
- }), Za = L({
3167
- name: x().optional(),
3168
- variant_name: x().optional(),
3169
- sku: x().optional(),
3170
- price: re([Y(), x()]).optional()
3171
- }), en = L({
3172
- product: L({
3173
- sku: x().optional(),
3174
- name: x().optional(),
3175
- images: B(x()).optional(),
3176
- imageUrl: x().optional(),
3163
+ }), Ae = N({
3164
+ title: b(),
3165
+ type: b(),
3166
+ payload: G().optional()
3167
+ }), Za = N({
3168
+ name: b().optional(),
3169
+ variant_name: b().optional(),
3170
+ sku: b().optional(),
3171
+ price: re([Y(), b()]).optional()
3172
+ }), en = N({
3173
+ product: N({
3174
+ sku: b().optional(),
3175
+ name: b().optional(),
3176
+ images: B(b()).optional(),
3177
+ imageUrl: b().optional(),
3177
3178
  rating: Y().optional(),
3178
3179
  reviewCount: Y().optional(),
3179
- price: x().optional(),
3180
- originalPrice: x().optional(),
3180
+ price: b().optional(),
3181
+ originalPrice: b().optional(),
3181
3182
  price_async: oe().optional(),
3182
3183
  inStock: oe().optional(),
3183
- promotions: B(x()).optional(),
3184
+ promotions: B(b()).optional(),
3184
3185
  variants: B(Za).optional(),
3185
- url: x().optional(),
3186
- cartCode: x().optional(),
3187
- description: x().optional(),
3188
- specifications: re([ae(x(), x()), B(L({ key: x(), value: x() }))]).optional()
3186
+ url: b().optional(),
3187
+ cartCode: b().optional(),
3188
+ description: b().optional(),
3189
+ specifications: re([ae(b(), b()), B(N({ key: b(), value: b() }))]).optional()
3189
3190
  }).optional(),
3190
- action: Ne.optional()
3191
- }), tn = L({
3191
+ action: Ae.optional()
3192
+ }), tn = N({
3192
3193
  endOfList: oe().optional()
3193
- }), an = L({
3194
- review_class: x().optional(),
3195
- review_text: x().optional(),
3196
- review_rating: re([x(), Y()]).optional(),
3197
- review_tag: x().optional()
3198
- }), nn = L({
3194
+ }), an = N({
3195
+ review_class: b().optional(),
3196
+ review_text: b().optional(),
3197
+ review_rating: re([b(), Y()]).optional(),
3198
+ review_tag: b().optional()
3199
+ }), nn = N({
3199
3200
  reviews: B(an).optional()
3200
- }), on = L({
3201
- productName: x().optional(),
3202
- pros: B(x()).optional(),
3203
- cons: B(x()).optional()
3204
- }), rn = L({
3201
+ }), on = N({
3202
+ productName: b().optional(),
3203
+ pros: B(b()).optional(),
3204
+ cons: B(b()).optional()
3205
+ }), rn = N({
3205
3206
  groups: B(
3206
- L({
3207
- groupName: x(),
3208
- products: B(ae(x(), $())).optional()
3207
+ N({
3208
+ groupName: b(),
3209
+ products: B(ae(b(), G())).optional()
3209
3210
  })
3210
3211
  ).optional(),
3211
3212
  filterTags: B(
3212
- L({
3213
- title: x(),
3214
- action: Ne.optional()
3213
+ N({
3214
+ title: b(),
3215
+ action: Ae.optional()
3215
3216
  })
3216
3217
  ).optional()
3217
- }), sn = L({
3218
- summary: x().optional(),
3219
- products_discussed: B(x()).optional(),
3220
- user_sentiment: x().optional()
3218
+ }), sn = N({
3219
+ summary: b().optional(),
3220
+ products_discussed: B(b()).optional(),
3221
+ user_sentiment: b().optional()
3221
3222
  }), pn = {
3222
3223
  components: {
3223
3224
  MessageBubble: {
@@ -3237,11 +3238,11 @@ const Fa = ':host{all:initial;font-family:var(--gengage-font-family, -apple-syst
3237
3238
  description: "An animated indicator shown while the assistant is typing."
3238
3239
  },
3239
3240
  Divider: {
3240
- schema: Ga,
3241
+ schema: $a,
3241
3242
  description: "A horizontal rule with an optional label."
3242
3243
  },
3243
3244
  ComparisonTable: {
3244
- schema: $a,
3245
+ schema: Ga,
3245
3246
  description: "A product comparison table with recommended pick, attribute rows, and highlights."
3246
3247
  },
3247
3248
  AITopPicks: {
@@ -3292,7 +3293,7 @@ function cn(o) {
3292
3293
  function te(o) {
3293
3294
  return typeof o == "object" && o !== null && typeof o.type == "string";
3294
3295
  }
3295
- class ln extends ze {
3296
+ class ln extends De {
3296
3297
  constructor() {
3297
3298
  super(...arguments), this._shadow = null, this._rootEl = null, this._launcher = null, this._drawer = null, this._bridge = null, this._activityTracker = null, this._heartbeat = null, this._proactiveShown = !1, this._drawerVisible = !1, this._messages = [], this._currentMessageId = 0, this._abortControllers = /* @__PURE__ */ new Set(), this._currentThreadId = null, this._lastThreadId = null, this._chatCreatedAt = "", this._lastBackendContext = null, this._productSort = { type: "related" }, this._comparisonSelectMode = !1, this._comparisonSelectedSkus = [], this._thumbnailEntries = [], this._choicePrompterEl = null, this._openState = "full", this._mobileBreakpoint = 768, this._isMobileViewport = !1, this._pdpLaunched = !1, this._i18n = ce, this._extendedModeManager = null, this._activeTypewriter = null, this._activeTtsHandle = null, this._activeRequestThreadId = null, this._skuToProductItem = {}, this._conversationMode = null, this._initComplete = !1, this._pendingActions = [], this._bridgeContext = null, this._cartQuantity = null, this._threadsWithFirstBot = /* @__PURE__ */ new Set(), this._panel = null, this._session = null, this._eventCallbacks = /* @__PURE__ */ new Map();
3298
3299
  }
@@ -3314,7 +3315,7 @@ class ln extends ze {
3314
3315
  const i = document.createElement("div");
3315
3316
  a.appendChild(i), this._drawer = new Bt(i, {
3316
3317
  i18n: this._i18n,
3317
- onSend: (c, h) => this._sendMessage(c, h),
3318
+ onSend: (c, p) => this._sendMessage(c, p),
3318
3319
  onClose: () => this.close(),
3319
3320
  onAttachment: (c) => this._handleAttachment(c),
3320
3321
  onPanelToggle: () => {
@@ -3329,7 +3330,7 @@ class ln extends ze {
3329
3330
  headerCartUrl: e.headerCartUrl,
3330
3331
  headerFavoritesToggle: e.headerFavoritesToggle,
3331
3332
  onFavoritesClick: () => {
3332
- De(), e.onFavoritesClick?.();
3333
+ Re(), e.onFavoritesClick?.();
3333
3334
  },
3334
3335
  onThumbnailClick: (c) => this._rollbackToThread(c),
3335
3336
  onLinkClick: (c) => {
@@ -3353,19 +3354,19 @@ class ln extends ze {
3353
3354
  s && l && (sessionStorage.removeItem("gengage_restore_session_id"), sessionStorage.removeItem("gengage_restore_sku"));
3354
3355
  try {
3355
3356
  const c = new La();
3356
- await c.open(), this._session = new he(c), await this._restoreFromIndexedDB();
3357
+ await c.open(), this._session = new ue(c), await this._restoreFromIndexedDB();
3357
3358
  } catch {
3358
- this._session = new he(null);
3359
+ this._session = new ue(null);
3359
3360
  }
3360
3361
  this._registerPublicAPI(), e.mobileInitialState !== void 0 && (this._openState = e.mobileInitialState), this._mobileBreakpoint = e.mobileBreakpoint ?? 768, this._syncViewportState();
3361
3362
  const g = () => this._syncViewportState();
3362
3363
  if (window.addEventListener("resize", g, { passive: !0 }), this.addCleanup(() => window.removeEventListener("resize", g)), window.visualViewport) {
3363
3364
  const c = () => {
3364
3365
  if (!this._drawerVisible || !this._isMobileViewport) return;
3365
- const h = this._drawer?.getElement();
3366
- if (!h) return;
3367
- const m = window.innerHeight - (window.visualViewport?.height ?? window.innerHeight);
3368
- h.style.setProperty("--gengage-keyboard-offset", `${Math.max(0, m)}px`);
3366
+ const p = this._drawer?.getElement();
3367
+ if (!p) return;
3368
+ const h = window.innerHeight - (window.visualViewport?.height ?? window.innerHeight);
3369
+ p.style.setProperty("--gengage-keyboard-offset", `${Math.max(0, h)}px`);
3369
3370
  };
3370
3371
  window.visualViewport.addEventListener("resize", c), this.addCleanup(() => window.visualViewport?.removeEventListener("resize", c));
3371
3372
  }
@@ -3376,8 +3377,8 @@ class ln extends ze {
3376
3377
  idleThresholdMs: e.proactiveDelayMs ?? 3e4,
3377
3378
  onActivity: (c) => {
3378
3379
  if (c.type === "idle" && !this._proactiveShown && !this._drawerVisible) {
3379
- const h = e.proactiveMinScrollDepth ?? 0;
3380
- if (h > 0 && (this._activityTracker?.maxScrollDepth ?? 0) < h * 100)
3380
+ const p = e.proactiveMinScrollDepth ?? 0;
3381
+ if (p > 0 && (this._activityTracker?.maxScrollDepth ?? 0) < p * 100)
3381
3382
  return;
3382
3383
  try {
3383
3384
  if (sessionStorage.getItem("gengage_proactive_shown")) return;
@@ -3397,27 +3398,27 @@ class ln extends ze {
3397
3398
  getCurrentSku: () => this.config.pageContext?.sku ?? "",
3398
3399
  onMessage: (c) => {
3399
3400
  if (!this._proactiveShown && !this._drawerVisible && c.message) {
3400
- const h = [];
3401
+ const p = [];
3401
3402
  if (c.suggested_actions && Array.isArray(c.suggested_actions))
3402
- for (const m of c.suggested_actions)
3403
- m.title && te(m.requestDetails) && h.push({
3404
- title: m.title,
3403
+ for (const h of c.suggested_actions)
3404
+ h.title && te(h.requestDetails) && p.push({
3405
+ title: h.title,
3405
3406
  onSelect: () => {
3406
- this.openWithAction(m.requestDetails);
3407
+ this.openWithAction(h.requestDetails);
3407
3408
  }
3408
3409
  });
3409
- this._showProactivePopup(c.message, h.length > 0 ? h : void 0);
3410
+ this._showProactivePopup(c.message, p.length > 0 ? p : void 0);
3410
3411
  }
3411
3412
  }
3412
3413
  }), this._heartbeat.start(), this.addCleanup(() => this._heartbeat?.destroy())), this._initComplete = !0;
3413
3414
  for (const c of this._pendingActions)
3414
3415
  this._sendAction(c.action, c.options);
3415
- this._pendingActions = [], O("gengage:chat:ready", {}), Re("chat"), e.onReady?.();
3416
+ this._pendingActions = [], O("gengage:chat:ready", {}), Ue("chat"), e.onReady?.();
3416
3417
  }
3417
3418
  onUpdate(e) {
3418
3419
  }
3419
3420
  onShow() {
3420
- this._showDrawer(), this.emit("open"), O("gengage:chat:open", { state: this._openState }), Ue("chat"), this.config.onOpen?.(), !this._pdpLaunched && this.config.pageContext?.sku && (this._pdpLaunched = !0, this._sendAction(
3421
+ this._showDrawer(), this.emit("open"), O("gengage:chat:open", { state: this._openState }), He("chat"), this.config.onOpen?.(), !this._pdpLaunched && this.config.pageContext?.sku && (this._pdpLaunched = !0, this._sendAction(
3421
3422
  {
3422
3423
  title: "",
3423
3424
  type: "launchSingleProduct",
@@ -3596,11 +3597,11 @@ class ln extends ze {
3596
3597
  for (const l of i.actions) {
3597
3598
  const g = l, c = g.title;
3598
3599
  if (c && te(g.requestDetails)) {
3599
- const h = g.requestDetails;
3600
+ const p = g.requestDetails;
3600
3601
  s.push({
3601
3602
  title: c,
3602
3603
  onSelect: () => {
3603
- this.openWithAction(h);
3604
+ this.openWithAction(p);
3604
3605
  }
3605
3606
  });
3606
3607
  }
@@ -3662,7 +3663,7 @@ class ln extends ze {
3662
3663
  this._drawer?.stageAttachment(e);
3663
3664
  }
3664
3665
  _sendMessage(e, t) {
3665
- He(), this._messages.some((i) => i.role === "user") || Fe();
3666
+ Fe(), this._messages.some((i) => i.role === "user") || Oe();
3666
3667
  const n = {
3667
3668
  title: e,
3668
3669
  type: "user_message",
@@ -3676,12 +3677,12 @@ class ln extends ze {
3676
3677
  return;
3677
3678
  }
3678
3679
  if (this._choicePrompterEl?.remove(), this._choicePrompterEl = null, this._currentThreadId && this._lastThreadId && this._lastThreadId > this._currentThreadId) {
3679
- const p = this._currentThreadId, y = this._messages.filter((k) => k.threadId !== void 0 && k.threadId > p);
3680
- this._messages = this._messages.filter((k) => !k.threadId || k.threadId <= p);
3681
- for (const k of y)
3682
- this._shadow?.querySelector(`[data-message-id="${CSS.escape(k.id)}"]`)?.remove(), this._panel.snapshots.delete(k.id), this._panel.snapshotTypes.delete(k.id);
3683
- this._shadow?.querySelectorAll("[data-thread-id]")?.forEach((k) => {
3684
- k instanceof HTMLElement && k.dataset.threadId && k.dataset.threadId > p && k.remove();
3680
+ const m = this._currentThreadId, f = this._messages.filter((C) => C.threadId !== void 0 && C.threadId > m);
3681
+ this._messages = this._messages.filter((C) => !C.threadId || C.threadId <= m);
3682
+ for (const C of f)
3683
+ this._shadow?.querySelector(`[data-message-id="${CSS.escape(C.id)}"]`)?.remove(), this._panel.snapshots.delete(C.id), this._panel.snapshotTypes.delete(C.id);
3684
+ this._shadow?.querySelectorAll("[data-thread-id]")?.forEach((C) => {
3685
+ C instanceof HTMLElement && C.dataset.threadId && C.dataset.threadId > m && C.remove();
3685
3686
  });
3686
3687
  }
3687
3688
  this._drawer?.setPills([]), this._drawer?.clearInputAreaChips(), this._bridge?.send("isResponding", !0);
@@ -3689,22 +3690,22 @@ class ln extends ze {
3689
3690
  this._currentThreadId = a, this._lastThreadId = a;
3690
3691
  const n = t?.preservePanel === !0;
3691
3692
  if (n || (this._activeRequestThreadId = a), !t?.silent) {
3692
- const p = this._createMessage("user", typeof e.payload == "string" ? e.payload : e.title);
3693
- p.threadId = a, t?.attachment !== void 0 && (p.attachment = t.attachment), this._drawer?.addMessage(p), this._messages.push(p);
3693
+ const m = this._createMessage("user", typeof e.payload == "string" ? e.payload : e.title);
3694
+ m.threadId = a, t?.attachment !== void 0 && (m.attachment = t.attachment), this._drawer?.addMessage(m), this._messages.push(m);
3694
3695
  }
3695
3696
  t?.preservePanel || (this._drawer?.hasPanelContent() ? this._drawer.showPanelLoading() : this._drawer?.clearPanel()), this._drawer?.showTypingIndicator();
3696
3697
  let i = "";
3697
3698
  const r = this._createMessage("assistant", "");
3698
- r.threadId = a, r.status = "streaming", this._messages.push(r), t?.preservePanel || (this._abortControllers.forEach((p) => p.abort()), this._abortControllers.clear());
3699
+ r.threadId = a, r.status = "streaming", this._messages.push(r), t?.preservePanel || (this._abortControllers.forEach((m) => m.abort()), this._abortControllers.clear());
3699
3700
  const s = {
3700
3701
  middlewareUrl: this.config.middlewareUrl,
3701
3702
  ...this.config.backendType ? { backendType: this.config.backendType } : {},
3702
3703
  ...this.config.accountId ? { accountId: this.config.accountId } : {}
3703
3704
  };
3704
3705
  t?.attachment !== void 0 && (s.attachment = t.attachment);
3705
- const g = this._getVisibleMessages().filter((p) => p.content).slice(-50).map((p) => ({
3706
- role: p.role === "user" ? "user" : "model",
3707
- content: p.content ?? ""
3706
+ const g = this._getVisibleMessages().filter((m) => m.content).slice(-50).map((m) => ({
3707
+ role: m.role === "user" ? "user" : "model",
3708
+ content: m.content ?? ""
3708
3709
  })), c = {
3709
3710
  outputLanguage: Ha(this.config.locale),
3710
3711
  parentUrl: window.location.href,
@@ -3716,22 +3717,22 @@ class ln extends ze {
3716
3717
  appId: this.config.accountId,
3717
3718
  threads: [],
3718
3719
  createdAt: this._chatCreatedAt,
3719
- kvkkApproved: ue(this.config.accountId),
3720
+ kvkkApproved: me(this.config.accountId),
3720
3721
  voiceEnabled: this.config.voiceEnabled ?? !1,
3721
3722
  threadId: a,
3722
3723
  isControlGroup: this.config.session?.abTestVariant === "control",
3723
3724
  isMobile: this._isMobileViewport
3724
3725
  };
3725
3726
  this.config.session?.viewId !== void 0 && (c.viewId = this.config.session.viewId);
3726
- const h = bt(e, {
3727
+ const p = bt(e, {
3727
3728
  pageContext: this.config.pageContext,
3728
3729
  backendContext: this._lastBackendContext,
3729
3730
  isMobile: this._isMobileViewport
3730
- }), m = {
3731
+ }), h = {
3731
3732
  account_id: this.config.accountId,
3732
3733
  session_id: this.config.session?.sessionId ?? "",
3733
3734
  correlation_id: this.config.session?.sessionId ?? "",
3734
- type: h.type,
3735
+ type: p.type,
3735
3736
  locale: this.config.locale ?? "tr",
3736
3737
  meta: c,
3737
3738
  context: {
@@ -3745,63 +3746,63 @@ class ln extends ze {
3745
3746
  session_id: this.config.session?.sessionId ?? ""
3746
3747
  }
3747
3748
  };
3748
- this.config.session?.userId !== void 0 && (m.user_id = this.config.session.userId), this.config.session?.viewId !== void 0 && (m.view_id = this.config.session.viewId), h.payload !== void 0 && (m.payload = h.payload), this.config.pageContext?.sku !== void 0 && (m.sku = this.config.pageContext.sku), this.config.pageContext?.pageType !== void 0 && (m.page_type = this.config.pageContext.pageType);
3749
+ this.config.session?.userId !== void 0 && (h.user_id = this.config.session.userId), this.config.session?.viewId !== void 0 && (h.view_id = this.config.session.viewId), p.payload !== void 0 && (h.payload = p.payload), this.config.pageContext?.sku !== void 0 && (h.sku = this.config.pageContext.sku), this.config.pageContext?.pageType !== void 0 && (h.page_type = this.config.pageContext.pageType);
3749
3750
  const d = crypto.randomUUID(), v = Date.now();
3750
- let w = 0, b = !1, N = !1;
3751
+ let _ = 0, x = !1, L = !1;
3751
3752
  this.track(
3752
- Oe(this.analyticsContext(), {
3753
+ qe(this.analyticsContext(), {
3753
3754
  endpoint: "process_action",
3754
3755
  request_id: d,
3755
3756
  widget: "chat"
3756
3757
  })
3757
3758
  );
3758
- let I = null;
3759
- I = yt(
3760
- m,
3759
+ let T = null;
3760
+ T = yt(
3761
+ h,
3761
3762
  {
3762
- onTextChunk: (p, y, _) => {
3763
- if (!n && a !== this._activeRequestThreadId || (i += p, this._drawer?.removeTypingIndicator(), _?.skuToProductItem && (this._skuToProductItem = { ...this._skuToProductItem, ..._.skuToProductItem }), _?.conversationMode && (this._conversationMode = _.conversationMode), this.track(
3763
+ onTextChunk: (m, f, y) => {
3764
+ if (!n && a !== this._activeRequestThreadId || (i += m, this._drawer?.removeTypingIndicator(), y?.skuToProductItem && (this._skuToProductItem = { ...this._skuToProductItem, ...y.skuToProductItem }), y?.conversationMode && (this._conversationMode = y.conversationMode), this.track(
3764
3765
  rt(this.analyticsContext(), {
3765
3766
  request_id: d,
3766
- chunk_index: w++,
3767
+ chunk_index: _++,
3767
3768
  widget: "chat"
3768
3769
  })
3769
3770
  ), !this._drawer)) return;
3770
- let k = i;
3771
- if (y && le(k)) {
3771
+ let C = i;
3772
+ if (f && le(C)) {
3772
3773
  const u = this.config.accountId;
3773
- if (!ue(u)) {
3774
- const f = Ra(k);
3775
- f && this._drawer?.showKvkkBanner(f, () => {
3774
+ if (!me(u)) {
3775
+ const w = Ra(C);
3776
+ w && this._drawer?.showKvkkBanner(w, () => {
3776
3777
  this._drawer?.hideKvkkBanner();
3777
3778
  }), za(u);
3778
3779
  }
3779
- k = Da(k);
3780
+ C = Da(C);
3780
3781
  }
3781
3782
  const A = this._shadow?.querySelector(
3782
3783
  `[data-message-id="${r.id}"] .gengage-chat-bubble-text`
3783
3784
  );
3784
- if (A ? A.innerHTML = Z(k) : (r.content = k, r.role === "assistant" && r.threadId && !this._threadsWithFirstBot.has(r.threadId) && (this._threadsWithFirstBot.add(r.threadId), this._drawer.markFirstBotMessage(r.id)), this._drawer.addMessage(r)), y) {
3785
- r.content = k, r.status = "done", ge();
3785
+ if (A ? A.innerHTML = Z(C) : (r.content = C, r.role === "assistant" && r.threadId && !this._threadsWithFirstBot.has(r.threadId) && (this._threadsWithFirstBot.add(r.threadId), this._drawer.markFirstBotMessage(r.id)), this._drawer.addMessage(r)), f) {
3786
+ r.content = C, r.status = "done", de();
3786
3787
  const u = this._shadow?.querySelector(
3787
3788
  `[data-message-id="${r.id}"] .gengage-chat-bubble-text`
3788
3789
  );
3789
3790
  if (u) {
3790
3791
  this._activeTypewriter?.cancel();
3791
- const f = _?.productMentions;
3792
+ const w = y?.productMentions;
3792
3793
  this._activeTypewriter = wa({
3793
3794
  container: u,
3794
- html: Z(k),
3795
+ html: Z(C),
3795
3796
  onTick: () => this._drawer?.scrollToBottomIfNeeded(),
3796
3797
  onComplete: () => {
3797
- this._activeTypewriter = null, f && f.length > 0 && u && ya({
3798
+ this._activeTypewriter = null, w && w.length > 0 && u && ya({
3798
3799
  container: u,
3799
- mentions: f,
3800
- onProductClick: (C) => {
3800
+ mentions: w,
3801
+ onProductClick: (k) => {
3801
3802
  this._sendAction({
3802
- title: f.find((S) => S.sku === C)?.short_name ?? C,
3803
+ title: w.find((S) => S.sku === k)?.short_name ?? k,
3803
3804
  type: "launchSingleProduct",
3804
- payload: { sku: C }
3805
+ payload: { sku: k }
3805
3806
  });
3806
3807
  }
3807
3808
  });
@@ -3810,34 +3811,34 @@ class ln extends ze {
3810
3811
  }
3811
3812
  }
3812
3813
  },
3813
- onUISpec: (p, y, _) => {
3814
- if (!n && a !== this._activeRequestThreadId || y !== "chat") return;
3815
- const k = p.elements[p.root], A = k?.type ?? "unknown";
3814
+ onUISpec: (m, f, y) => {
3815
+ if (!n && a !== this._activeRequestThreadId || f !== "chat") return;
3816
+ const C = m.elements[m.root], A = C?.type ?? "unknown";
3816
3817
  this.track(
3817
3818
  nt(this.analyticsContext(), {
3818
3819
  request_id: d,
3819
- chunk_index: w,
3820
+ chunk_index: _,
3820
3821
  component_type: A,
3821
3822
  widget: "chat"
3822
3823
  })
3823
3824
  );
3824
3825
  const u = this._buildRenderContext();
3825
3826
  if (A === "ComparisonTable") {
3826
- const S = k?.props?.products;
3827
+ const S = C?.props?.products;
3827
3828
  it(Array.isArray(S) ? S.length : 0);
3828
3829
  }
3829
3830
  if (A === "ProductGrid") {
3830
- const S = k?.children?.length ?? 0;
3831
+ const S = C?.children?.length ?? 0;
3831
3832
  ot(void 0, S);
3832
3833
  }
3833
- const f = _ === "panel" && this._panel ? this._panel.toPanelSpec(p) : p, C = !r.silent && (_ !== "panel" || A === "ProductCard") && A !== "ActionButtons";
3834
- if (_ === "panel" && this._panel) {
3835
- N = !0, k?.props?.similarsAppend === !0 && this._panel.currentType === "ProductDetailsPanel" && this._drawer?.hasPanelContent() && !this._drawer.isPanelLoading() ? this._appendSimilarsToPanel(f, u) : A === "ProductGrid" && this._drawer?.hasPanelContent() && !this._drawer.isPanelLoading() ? this._drawer.appendPanelContent(this._renderUISpec(f, u)) : (this._drawer?.setPanelContent(this._renderUISpec(f, u)), this._panel.currentType = A), r.threadId && !this._panel.threads.includes(r.threadId) && this._panel.threads.push(r.threadId);
3834
+ const w = y === "panel" && this._panel ? this._panel.toPanelSpec(m) : m, k = !r.silent && (y !== "panel" || A === "ProductCard") && A !== "ActionButtons";
3835
+ if (y === "panel" && this._panel) {
3836
+ L = !0, C?.props?.similarsAppend === !0 && this._panel.currentType === "ProductDetailsPanel" && this._drawer?.hasPanelContent() && !this._drawer.isPanelLoading() ? this._appendSimilarsToPanel(w, u) : A === "ProductGrid" && this._drawer?.hasPanelContent() && !this._drawer.isPanelLoading() ? this._drawer.appendPanelContent(this._renderUISpec(w, u)) : (this._drawer?.setPanelContent(this._renderUISpec(w, u)), this._panel.currentType = A), r.threadId && !this._panel.threads.includes(r.threadId) && this._panel.threads.push(r.threadId);
3836
3837
  const S = this._panel.currentType ?? A;
3837
3838
  this._panel.updateTopBar(S), this._panel.updateExtendedMode(A);
3838
3839
  }
3839
- if (A === "ProductDetailsPanel" && !r.silent && _ === "panel") {
3840
- const S = k?.props?.product;
3840
+ if (A === "ProductDetailsPanel" && !r.silent && y === "panel") {
3841
+ const S = C?.props?.product;
3841
3842
  if (S) {
3842
3843
  const P = {
3843
3844
  root: "root",
@@ -3847,48 +3848,48 @@ class ln extends ze {
3847
3848
  props: { product: S }
3848
3849
  }
3849
3850
  }
3850
- }, T = this._shadow?.querySelector(".gengage-chat-messages");
3851
- if (T) {
3851
+ }, I = this._shadow?.querySelector(".gengage-chat-messages");
3852
+ if (I) {
3852
3853
  const E = this._renderUISpec(P, u);
3853
- r.threadId && (E.dataset.threadId = r.threadId), T.appendChild(E), E.scrollIntoView({ behavior: "auto", block: "end" });
3854
+ r.threadId && (E.dataset.threadId = r.threadId), I.appendChild(E), E.scrollIntoView({ behavior: "auto", block: "end" });
3854
3855
  }
3855
3856
  }
3856
3857
  }
3857
- if (C) {
3858
+ if (k) {
3858
3859
  const S = this._shadow?.querySelector(".gengage-chat-messages");
3859
3860
  if (S) {
3860
- const P = this._renderUISpec(p, u);
3861
+ const P = this._renderUISpec(m, u);
3861
3862
  r.threadId && (P.dataset.threadId = r.threadId), S.appendChild(P), P.scrollIntoView({ behavior: "auto", block: "end" });
3862
3863
  }
3863
3864
  }
3864
3865
  if ((A === "ProductGrid" || A === "ProductCard") && r.threadId) {
3865
- const S = k?.children ?? [], P = A === "ProductGrid" ? S.map((T) => p.elements[T]?.props?.product).filter(Boolean) : [k?.props?.product].filter(Boolean);
3866
- for (const T of P) {
3867
- const E = T.sku, M = T.imageUrl;
3866
+ const S = C?.children ?? [], P = A === "ProductGrid" ? S.map((I) => m.elements[I]?.props?.product).filter(Boolean) : [C?.props?.product].filter(Boolean);
3867
+ for (const I of P) {
3868
+ const E = I.sku, M = I.imageUrl;
3868
3869
  E && M && this._thumbnailEntries.push({ sku: E, imageUrl: M, threadId: r.threadId });
3869
3870
  }
3870
3871
  this._drawer?.setThumbnails(this._thumbnailEntries);
3871
3872
  }
3872
3873
  if (A === "ProductGrid" || A === "ProductDetailsPanel") {
3873
- const P = (A === "ProductGrid" ? (k?.children ?? []).map((T) => p.elements[T]?.props?.product).filter(Boolean) : [
3874
- k?.props?.product ?? k?.props
3875
- ].filter(Boolean)).map((T) => T.imageUrl).filter((T) => typeof T == "string").slice(0, 5);
3874
+ const P = (A === "ProductGrid" ? (C?.children ?? []).map((I) => m.elements[I]?.props?.product).filter(Boolean) : [
3875
+ C?.props?.product ?? C?.props
3876
+ ].filter(Boolean)).map((I) => I.imageUrl).filter((I) => typeof I == "string").slice(0, 5);
3876
3877
  P.length > 0 && this._bridge?.send("previewImages", { images: P });
3877
3878
  }
3878
- if (A === "ProductGrid" && _ === "panel" && !this._comparisonSelectMode && !Sa() && (this._choicePrompterEl?.remove(), this._choicePrompterEl = Ea({
3879
+ if (A === "ProductGrid" && y === "panel" && !this._comparisonSelectMode && !Sa() && (this._choicePrompterEl?.remove(), this._choicePrompterEl = Ea({
3879
3880
  heading: this._i18n.choicePrompterHeading,
3880
3881
  suggestion: this._i18n.choicePrompterSuggestion,
3881
3882
  ctaLabel: this._i18n.choicePrompterCta,
3882
3883
  onCtaClick: () => {
3883
- this._comparisonSelectMode = !0, this._choicePrompterEl = null;
3884
+ this._comparisonSelectMode = !0, this._choicePrompterEl = null, this._refreshComparisonUI();
3884
3885
  },
3885
3886
  onDismiss: () => {
3886
3887
  this._choicePrompterEl = null;
3887
3888
  }
3888
3889
  }), this._shadow?.querySelector(".gengage-chat-panel")?.appendChild(this._choicePrompterEl)), A === "ActionButtons") {
3889
- const S = k?.props?.buttons;
3890
+ const S = C?.props?.buttons;
3890
3891
  if (S && S.length > 0) {
3891
- const P = [], T = [];
3892
+ const P = [], I = [];
3892
3893
  for (const E of S)
3893
3894
  if (Ca(E)) {
3894
3895
  const M = {
@@ -3897,15 +3898,15 @@ class ln extends ze {
3897
3898
  };
3898
3899
  E.icon && (M.icon = E.icon), P.push(M);
3899
3900
  } else
3900
- T.push(E);
3901
+ I.push(E);
3901
3902
  P.length > 0 && this._drawer?.setInputAreaChips(
3902
3903
  P.map((E) => ({
3903
3904
  label: E.label,
3904
3905
  onAction: () => this._sendAction(E.action),
3905
3906
  ...E.icon ? { icon: E.icon } : {}
3906
3907
  }))
3907
- ), T.length > 0 && this._drawer?.setPills(
3908
- T.map((E) => {
3908
+ ), I.length > 0 && this._drawer?.setPills(
3909
+ I.map((E) => {
3909
3910
  const M = {
3910
3911
  label: E.label,
3911
3912
  onAction: () => this._sendAction(E.action)
@@ -3915,89 +3916,89 @@ class ln extends ze {
3915
3916
  );
3916
3917
  }
3917
3918
  }
3918
- r.uiSpec = p;
3919
+ r.uiSpec = m;
3919
3920
  },
3920
- onAction: (p) => {
3921
- if (!(!n && a !== this._activeRequestThreadId) && p.type === "action") {
3922
- const y = {};
3923
- this.config.actionHandling?.unknownActionPolicy !== void 0 && (y.unknownActionPolicy = this.config.actionHandling.unknownActionPolicy), this.config.actionHandling?.allowScriptCall !== void 0 && (y.allowScriptCall = this.config.actionHandling.allowScriptCall), dt(
3924
- p,
3921
+ onAction: (m) => {
3922
+ if (!(!n && a !== this._activeRequestThreadId) && m.type === "action") {
3923
+ const f = {};
3924
+ this.config.actionHandling?.unknownActionPolicy !== void 0 && (f.unknownActionPolicy = this.config.actionHandling.unknownActionPolicy), this.config.actionHandling?.allowScriptCall !== void 0 && (f.allowScriptCall = this.config.actionHandling.allowScriptCall), dt(
3925
+ m,
3925
3926
  {
3926
3927
  openChat: () => this.open(),
3927
- navigate: (_) => {
3928
- this._bridge?.send("navigate", _), _.newTab ? window.open(_.url, "_blank", "noopener,noreferrer") : window.location.href = _.url;
3928
+ navigate: (y) => {
3929
+ this._bridge?.send("navigate", y), y.newTab ? window.open(y.url, "_blank", "noopener,noreferrer") : window.location.href = y.url;
3929
3930
  },
3930
- saveSession: (_) => this.saveSession(_.sessionId, _.sku),
3931
- addToCart: (_) => {
3932
- O("gengage:similar:add-to-cart", _);
3931
+ saveSession: (y) => this.saveSession(y.sessionId, y.sku),
3932
+ addToCart: (y) => {
3933
+ O("gengage:similar:add-to-cart", y);
3933
3934
  },
3934
- scriptCall: (_) => {
3935
- O("gengage:chat:script-call", _), this.config.onScriptCall?.(_);
3935
+ scriptCall: (y) => {
3936
+ O("gengage:chat:script-call", y), this.config.onScriptCall?.(y);
3936
3937
  }
3937
3938
  },
3938
- y
3939
+ f
3939
3940
  );
3940
3941
  }
3941
3942
  },
3942
- onMetadata: (p) => {
3943
- if (!(!n && a !== this._activeRequestThreadId) && p.type === "metadata" && p.meta) {
3944
- if ((p.meta.panel !== void 0 || p.meta.messages !== void 0 || p.meta.message_id !== void 0) && (this._lastBackendContext = p.meta), p.meta.panelLoading) {
3945
- b = !0, N = !1;
3946
- const _ = typeof p.meta.panelPendingType == "string" ? p.meta.panelPendingType : void 0;
3947
- this._panel && (this._panel.currentType = null), this._drawer?.showPanelLoading(_), _ && this._panel?.updateTopBarForLoading(_);
3943
+ onMetadata: (m) => {
3944
+ if (!(!n && a !== this._activeRequestThreadId) && m.type === "metadata" && m.meta) {
3945
+ if ((m.meta.panel !== void 0 || m.meta.messages !== void 0 || m.meta.message_id !== void 0) && (this._lastBackendContext = m.meta), m.meta.panelLoading) {
3946
+ x = !0, L = !1;
3947
+ const y = typeof m.meta.panelPendingType == "string" ? m.meta.panelPendingType : void 0;
3948
+ this._panel && (this._panel.currentType = null), this._drawer?.showPanelLoading(y), y && this._panel?.updateTopBarForLoading(y);
3948
3949
  }
3949
- if (p.meta.voice) {
3950
- const _ = new CustomEvent("gengage:chat:voice", {
3951
- detail: { payload: p.meta.voice },
3950
+ if (m.meta.voice) {
3951
+ const y = new CustomEvent("gengage:chat:voice", {
3952
+ detail: { payload: m.meta.voice },
3952
3953
  bubbles: !1,
3953
3954
  cancelable: !0
3954
- }), k = window.dispatchEvent(_);
3955
- if (tt(), k) {
3956
- const A = p.meta.voice;
3955
+ }), C = window.dispatchEvent(y);
3956
+ if (tt(), C) {
3957
+ const A = m.meta.voice;
3957
3958
  A.audio_base64 && (this._activeTtsHandle?.stop(), this._activeTtsHandle = Ht(
3958
3959
  A.audio_base64,
3959
3960
  A.content_type ?? "audio/ogg"
3960
3961
  ));
3961
3962
  }
3962
3963
  }
3963
- (p.meta.redirectTarget || p.meta.redirect) && O("gengage:chat:redirect", {
3964
- target: p.meta.redirectTarget ?? null,
3965
- payload: p.meta.redirect ?? null
3966
- }), p.meta.analyzeAnimation && (b = !0, N = !1, this._panel && (this._panel.currentType = null), this._drawer?.showPanelLoading(), this._panel?.updateTopBarForLoading("productDetails")), p.meta.loading && typeof p.meta.loadingText == "string" && (this._drawer?.addThinkingStep(p.meta.loadingText), this._bridge?.send("loadingMessage", { text: p.meta.loadingText })), p.meta.visitorDataResponse && this._bridge?.send("engagingMessage", p.meta.visitorDataResponse), p.meta.formType && this._bridge?.send("glovOtokoc", {
3967
- type: p.meta.formType,
3968
- data: p.meta.formPayload
3969
- }), p.meta.launcherContent && this._bridge?.send("launcherContent", p.meta.launcherContent), O("gengage:chat:metadata", { payload: p.meta });
3970
- const y = p.meta;
3971
- typeof y.prompt_tokens == "number" && typeof y.completion_tokens == "number" && this.track(
3964
+ (m.meta.redirectTarget || m.meta.redirect) && O("gengage:chat:redirect", {
3965
+ target: m.meta.redirectTarget ?? null,
3966
+ payload: m.meta.redirect ?? null
3967
+ }), m.meta.analyzeAnimation && (x = !0, L = !1, this._panel && (this._panel.currentType = null), this._drawer?.showPanelLoading(), this._panel?.updateTopBarForLoading("productDetails")), m.meta.loading && typeof m.meta.loadingText == "string" && (this._drawer?.addThinkingStep(m.meta.loadingText), this._bridge?.send("loadingMessage", { text: m.meta.loadingText })), m.meta.visitorDataResponse && this._bridge?.send("engagingMessage", m.meta.visitorDataResponse), m.meta.formType && this._bridge?.send("glovOtokoc", {
3968
+ type: m.meta.formType,
3969
+ data: m.meta.formPayload
3970
+ }), m.meta.launcherContent && this._bridge?.send("launcherContent", m.meta.launcherContent), O("gengage:chat:metadata", { payload: m.meta });
3971
+ const f = m.meta;
3972
+ typeof f.prompt_tokens == "number" && typeof f.completion_tokens == "number" && this.track(
3972
3973
  at(this.analyticsContext(), {
3973
- model: p.model ?? "unknown",
3974
- prompt_tokens: y.prompt_tokens,
3975
- completion_tokens: y.completion_tokens,
3976
- total_tokens: y.total_tokens ?? y.prompt_tokens + y.completion_tokens
3974
+ model: m.model ?? "unknown",
3975
+ prompt_tokens: f.prompt_tokens,
3976
+ completion_tokens: f.completion_tokens,
3977
+ total_tokens: f.total_tokens ?? f.prompt_tokens + f.completion_tokens
3977
3978
  })
3978
3979
  );
3979
3980
  }
3980
3981
  },
3981
- onError: (p) => {
3982
- I && this._abortControllers.delete(I), !(!n && a !== this._activeRequestThreadId) && (this._bridge?.send("isResponding", !1), this._bridge?.send("loadingMessage", { text: null }), this._drawer?.removeTypingIndicator(), b && !N && this._drawer?.isPanelLoading() && this._drawer.clearPanel(), b = !1, N = !1, O("gengage:global:error", {
3982
+ onError: (m) => {
3983
+ T && this._abortControllers.delete(T), !(!n && a !== this._activeRequestThreadId) && (this._bridge?.send("isResponding", !1), this._bridge?.send("loadingMessage", { text: null }), this._drawer?.removeTypingIndicator(), x && !L && this._drawer?.isPanelLoading() && this._drawer.clearPanel(), x = !1, L = !1, O("gengage:global:error", {
3983
3984
  source: "chat",
3984
3985
  code: "STREAM_ERROR",
3985
3986
  message: this._i18n.errorMessage
3986
- }), this.emit("error", p), this._drawer?.showError(p.message), r.status === "streaming" && (r.status = "error"), this.track(
3987
+ }), this.emit("error", m), this._drawer?.showError(m.message), r.status === "streaming" && (r.status = "error"), this.track(
3987
3988
  et(this.analyticsContext(), {
3988
3989
  request_id: d,
3989
3990
  error_code: "STREAM_ERROR",
3990
- error_message: p.message,
3991
+ error_message: m.message,
3991
3992
  widget: "chat"
3992
3993
  })
3993
3994
  ));
3994
3995
  },
3995
3996
  onDone: () => {
3996
- I && this._abortControllers.delete(I), !(!n && a !== this._activeRequestThreadId) && (this._activeRequestThreadId = null, this._bridge?.send("isResponding", !1), this._bridge?.send("loadingMessage", { text: null }), this._drawer?.removeTypingIndicator(), b && !N && this._drawer?.isPanelLoading() && this._drawer.clearPanel(), b = !1, N = !1, r.status === "streaming" && (r.status = "done", ge()), this.emit("message", r), this._panel?.snapshotForMessage(r.id), this._panel?.attachClickHandler(r.id), this.track(
3997
+ T && this._abortControllers.delete(T), !(!n && a !== this._activeRequestThreadId) && (this._activeRequestThreadId = null, this._bridge?.send("isResponding", !1), this._bridge?.send("loadingMessage", { text: null }), this._drawer?.removeTypingIndicator(), x && !L && this._drawer?.isPanelLoading() && this._drawer.clearPanel(), x = !1, L = !1, r.status === "streaming" && (r.status = "done", de()), this.emit("message", r), this._panel?.snapshotForMessage(r.id), this._panel?.attachClickHandler(r.id), this.track(
3997
3998
  Xe(this.analyticsContext(), {
3998
3999
  request_id: d,
3999
4000
  latency_ms: Date.now() - v,
4000
- chunk_count: w,
4001
+ chunk_count: _,
4001
4002
  widget: "chat"
4002
4003
  })
4003
4004
  ), this.track(
@@ -4017,7 +4018,7 @@ class ln extends ze {
4017
4018
  }
4018
4019
  },
4019
4020
  s
4020
- ), this._abortControllers.add(I);
4021
+ ), this._abortControllers.add(T);
4021
4022
  }
4022
4023
  /** Return messages visible at the current thread cursor. */
4023
4024
  _getVisibleMessages() {
@@ -4157,6 +4158,67 @@ class ln extends ze {
4157
4158
  this._drawer?.scrollToLastThread();
4158
4159
  }, 550);
4159
4160
  }
4161
+ /**
4162
+ * Toggle comparison mode or individual SKU selection, then refresh the DOM.
4163
+ * Extracted so both the render-context callback and DOM-created checkboxes
4164
+ * share the same state-mutation + refresh path.
4165
+ */
4166
+ _toggleComparisonSku(e) {
4167
+ e === "" ? (this._comparisonSelectMode = !this._comparisonSelectMode, this._comparisonSelectMode || (this._comparisonSelectedSkus = [], je())) : this._comparisonSelectedSkus.indexOf(e) >= 0 ? this._comparisonSelectedSkus = this._comparisonSelectedSkus.filter((a) => a !== e) : (this._comparisonSelectedSkus = [...this._comparisonSelectedSkus, e], Ve(e)), this._refreshComparisonUI();
4168
+ }
4169
+ /**
4170
+ * Refresh the panel DOM to reflect the current comparison state without
4171
+ * full re-render. Updates: toggle button active class, checkbox overlays
4172
+ * on product cards, and the floating comparison button.
4173
+ */
4174
+ _refreshComparisonUI() {
4175
+ const e = this._shadow?.querySelector(".gengage-chat-panel");
4176
+ if (!e) return;
4177
+ const t = e.querySelector(".gengage-chat-product-grid-wrapper");
4178
+ if (!t) return;
4179
+ const a = t.querySelector(".gengage-chat-product-grid");
4180
+ if (!a) return;
4181
+ const n = t.querySelector(".gengage-chat-comparison-toggle-btn");
4182
+ if (n && n.classList.toggle("gengage-chat-comparison-toggle-btn--active", this._comparisonSelectMode), this._comparisonSelectMode) {
4183
+ const r = a.querySelectorAll(".gengage-chat-product-card[data-sku]");
4184
+ for (const s of r) {
4185
+ if (s.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")) {
4186
+ const p = s.parentElement.querySelector(".gengage-chat-comparison-checkbox");
4187
+ p && (p.checked = this._comparisonSelectedSkus.includes(s.dataset.sku));
4188
+ continue;
4189
+ }
4190
+ const l = s.dataset.sku, g = document.createElement("div");
4191
+ g.className = "gengage-chat-comparison-select-wrapper";
4192
+ const c = document.createElement("input");
4193
+ c.type = "checkbox", c.className = "gengage-chat-comparison-checkbox", c.checked = this._comparisonSelectedSkus.includes(l), c.addEventListener("change", () => {
4194
+ this._toggleComparisonSku(l);
4195
+ }), s.parentNode.insertBefore(g, s), g.appendChild(c), g.appendChild(s);
4196
+ }
4197
+ } else {
4198
+ const r = a.querySelectorAll(".gengage-chat-comparison-select-wrapper");
4199
+ for (const s of r) {
4200
+ const l = s.querySelector(".gengage-chat-product-card");
4201
+ l && s.parentNode && (s.parentNode.insertBefore(l, s), s.remove());
4202
+ }
4203
+ }
4204
+ const i = t.querySelector(".gengage-chat-comparison-floating-btn");
4205
+ if (this._comparisonSelectMode && this._comparisonSelectedSkus.length >= 2) {
4206
+ const r = this._i18n.compareSelected ?? "Karşılaştır", s = `${r} (${this._comparisonSelectedSkus.length})`;
4207
+ if (i)
4208
+ i.textContent = s;
4209
+ else {
4210
+ const l = document.createElement("button");
4211
+ l.className = "gengage-chat-comparison-floating-btn", l.type = "button", l.textContent = s, l.addEventListener("click", () => {
4212
+ ge(this._comparisonSelectedSkus), this._sendAction({
4213
+ title: r,
4214
+ type: "getComparisonTable",
4215
+ payload: { sku_list: [...this._comparisonSelectedSkus] }
4216
+ });
4217
+ }), t.appendChild(l);
4218
+ }
4219
+ } else
4220
+ i?.remove();
4221
+ }
4160
4222
  /**
4161
4223
  * Build a ChatUISpecRenderContext with all callbacks wired up.
4162
4224
  * Used both during streaming and during session restore.
@@ -4164,16 +4226,16 @@ class ln extends ze {
4164
4226
  _buildRenderContext() {
4165
4227
  const e = {
4166
4228
  onAction: (t) => {
4167
- if (We(t.title, t.type), t.type === "findSimilar") {
4229
+ if (Ye(t.title, t.type), t.type === "findSimilar") {
4168
4230
  const n = typeof t.payload == "object" && t.payload !== null && "sku" in t.payload ? String(t.payload.sku) : "";
4169
- Ye(n);
4231
+ Qe(n);
4170
4232
  }
4171
- t.type === "getComparisonTable" && Qe(this._comparisonSelectedSkus);
4233
+ t.type === "getComparisonTable" && ge(this._comparisonSelectedSkus);
4172
4234
  const a = t.type === "addToCart" || t.type === "like";
4173
4235
  this._sendAction(t, a ? { preservePanel: !0 } : void 0);
4174
4236
  },
4175
4237
  onProductClick: (t) => {
4176
- Ke(t.sku), O("gengage:similar:product-click", {
4238
+ We(t.sku), O("gengage:similar:product-click", {
4177
4239
  sku: t.sku,
4178
4240
  url: t.url,
4179
4241
  sessionId: this.config.session?.sessionId ?? null
@@ -4184,7 +4246,7 @@ class ln extends ze {
4184
4246
  }) : this._saveSessionAndOpenURL(t.url);
4185
4247
  },
4186
4248
  onAddToCart: (t) => {
4187
- $e(t.sku, t.quantity);
4249
+ Ke(t.sku, t.quantity);
4188
4250
  const a = {
4189
4251
  ...t,
4190
4252
  sessionId: this.config.session?.sessionId ?? null
@@ -4219,11 +4281,11 @@ class ln extends ze {
4219
4281
  comparisonSelectMode: this._comparisonSelectMode,
4220
4282
  comparisonSelectedSkus: this._comparisonSelectedSkus,
4221
4283
  onToggleComparisonSku: (t) => {
4222
- t === "" ? (this._comparisonSelectMode = !this._comparisonSelectMode, this._comparisonSelectMode || (this._comparisonSelectedSkus = [], Ve())) : this._comparisonSelectedSkus.indexOf(t) >= 0 ? this._comparisonSelectedSkus = this._comparisonSelectedSkus.filter((n) => n !== t) : (this._comparisonSelectedSkus = [...this._comparisonSelectedSkus, t], Ge(t));
4284
+ this._toggleComparisonSku(t);
4223
4285
  },
4224
4286
  favoritedSkus: this._session?.favoritedSkus ?? /* @__PURE__ */ new Set(),
4225
4287
  onFavoriteToggle: (t, a) => {
4226
- je(t), this._toggleFavorite(t, a);
4288
+ Ge(t), this._toggleFavorite(t, a);
4227
4289
  const n = a.name ?? t;
4228
4290
  this._sendAction(
4229
4291
  {
@@ -4309,10 +4371,10 @@ class ln extends ze {
4309
4371
  }
4310
4372
  _resolveUISpecRegistry() {
4311
4373
  const e = oa();
4312
- return qe(e, this.config.renderer?.registry);
4374
+ return $e(e, this.config.renderer?.registry);
4313
4375
  }
4314
4376
  _renderUISpec(e, t) {
4315
- const a = this._resolveUISpecRegistry(), n = this.config.renderer?.unknownRenderer ?? Se, i = (l, g) => ra(l, g, a, n), r = this.config.renderer?.renderUISpec;
4377
+ const a = this._resolveUISpecRegistry(), n = this.config.renderer?.unknownRenderer ?? Te, i = (l, g) => ra(l, g, a, n), r = this.config.renderer?.renderUISpec;
4316
4378
  return r ? r(e, t, {
4317
4379
  registry: a,
4318
4380
  unknownRenderer: n,
@@ -4329,9 +4391,9 @@ export {
4329
4391
  oa as a,
4330
4392
  ra as b,
4331
4393
  hn as c,
4332
- Se as d,
4394
+ Te as d,
4333
4395
  pn as e,
4334
4396
  St as i,
4335
4397
  dt as r
4336
4398
  };
4337
- //# sourceMappingURL=index-DC0Bo9EA.js.map
4399
+ //# sourceMappingURL=index-kp84NL1R.js.map