@gengage/assistant-fe 0.3.16 → 0.3.18
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.
- package/dist/chat/catalog.d.ts +24 -0
- package/dist/chat/catalog.d.ts.map +1 -1
- package/dist/chat/components/AITopPicks.d.ts.map +1 -1
- package/dist/chat/components/ProductSummaryCard.d.ts.map +1 -1
- package/dist/chat/components/product-price-layout.d.ts +19 -0
- package/dist/chat/components/product-price-layout.d.ts.map +1 -0
- package/dist/chat/components/renderUISpec.d.ts.map +1 -1
- package/dist/chat/index.d.ts +1 -0
- package/dist/chat/index.d.ts.map +1 -1
- package/dist/chat/types.d.ts +27 -0
- package/dist/chat/types.d.ts.map +1 -1
- package/dist/chat-Ck0cC4R_.cjs +94 -0
- package/dist/chat-Ck0cC4R_.cjs.map +1 -0
- package/dist/{chat-D60Ci1vQ.js → chat-CmKpcbQS.js} +972 -761
- package/dist/chat-CmKpcbQS.js.map +1 -0
- package/dist/chat.cjs +1 -1
- package/dist/chat.iife.js +16 -16
- package/dist/chat.iife.js.map +1 -1
- package/dist/chat.js +1 -1
- package/dist/common/overlay.d.ts +5 -0
- package/dist/common/overlay.d.ts.map +1 -1
- package/dist/common/protocol-adapter.d.ts.map +1 -1
- package/dist/{common-DX6rwrsr.cjs → common-C0CDlovf.cjs} +2 -2
- package/dist/{common-DX6rwrsr.cjs.map → common-C0CDlovf.cjs.map} +1 -1
- package/dist/{common-CjkWpalm.js → common-D7J-qASM.js} +3 -3
- package/dist/{common-CjkWpalm.js.map → common-D7J-qASM.js.map} +1 -1
- package/dist/common.cjs +1 -1
- package/dist/common.js +4 -4
- package/dist/index.cjs +1 -1
- package/dist/index.js +6 -6
- package/dist/{native-webview-qAXppESm.js → native-webview-4YU7k1qK.js} +6 -6
- package/dist/native-webview-4YU7k1qK.js.map +1 -0
- package/dist/native-webview-ifBEffwH.cjs +2 -0
- package/dist/native-webview-ifBEffwH.cjs.map +1 -0
- package/dist/native.cjs +1 -1
- package/dist/native.iife.js +7 -7
- package/dist/native.iife.js.map +1 -1
- package/dist/native.js +1 -1
- package/dist/{qna-T6ACPKRB.cjs → qna-BUsDAFdn.cjs} +2 -2
- package/dist/{qna-T6ACPKRB.cjs.map → qna-BUsDAFdn.cjs.map} +1 -1
- package/dist/{qna-J0v3olA2.js → qna-DrlUFVgh.js} +2 -2
- package/dist/{qna-J0v3olA2.js.map → qna-DrlUFVgh.js.map} +1 -1
- package/dist/qna.cjs +1 -1
- package/dist/qna.iife.js +1 -1
- package/dist/qna.iife.js.map +1 -1
- package/dist/qna.js +1 -1
- package/dist/{schemas-B3zzmCPF.cjs → schemas-BneJIS3a.cjs} +4 -4
- package/dist/schemas-BneJIS3a.cjs.map +1 -0
- package/dist/{schemas-DRZ9l0Z4.js → schemas-DwX3rpp6.js} +15 -13
- package/dist/schemas-DwX3rpp6.js.map +1 -0
- package/dist/{simrel-CGT83sSF.js → simrel-B6PD6vfG.js} +2 -2
- package/dist/{simrel-CGT83sSF.js.map → simrel-B6PD6vfG.js.map} +1 -1
- package/dist/{simrel-B3wJOMlY.cjs → simrel-BIp8IAYj.cjs} +2 -2
- package/dist/{simrel-B3wJOMlY.cjs.map → simrel-BIp8IAYj.cjs.map} +1 -1
- package/dist/simrel.cjs +1 -1
- package/dist/simrel.iife.js +1 -1
- package/dist/simrel.iife.js.map +1 -1
- package/dist/simrel.js +1 -1
- package/package.json +1 -1
- package/dist/chat-CRGCgvrz.cjs +0 -94
- package/dist/chat-CRGCgvrz.cjs.map +0 -1
- package/dist/chat-D60Ci1vQ.js.map +0 -1
- package/dist/native-webview-Bm-pIU6O.cjs +0 -2
- package/dist/native-webview-Bm-pIU6O.cjs.map +0 -1
- package/dist/native-webview-qAXppESm.js.map +0 -1
- package/dist/schemas-B3zzmCPF.cjs.map +0 -1
- package/dist/schemas-DRZ9l0Z4.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as e, a as t, c as n, d as r, l as i, n as a, o, p as s, r as c, s as l, t as u, u as d, x as f, y as p } from "./schemas-
|
|
2
|
-
import { $ as m, B as h, C as g, H as _, K as v, P as y, Q as b, R as x, U as S, V as C, X as w, Y as T, Z as E, _ as
|
|
3
|
-
import { a as
|
|
1
|
+
import { C as e, a as t, c as n, d as r, l as i, n as a, o, p as s, r as c, s as l, t as u, u as d, x as f, y as p } from "./schemas-DwX3rpp6.js";
|
|
2
|
+
import { $ as m, B as h, C as g, H as _, K as v, P as y, Q as b, R as x, U as S, V as C, X as w, Y as T, Z as E, _ as D, a as O, b as ee, c as k, d as te, f as A, g as j, h as M, i as N, l as P, m as ne, n as F, o as I, p as L, q as R, r as z, s as re, t as B, u as ie, y as V, z as H } from "./ga-datalayer-DygUbUWr.js";
|
|
3
|
+
import { a as U, i as ae, n as oe, r as se, t as W } from "./product-utils-BUalkWz3.js";
|
|
4
4
|
//#region src/common/uuidv7.ts
|
|
5
|
-
function
|
|
5
|
+
function ce() {
|
|
6
6
|
let e = Date.now(), t = new Uint8Array(16);
|
|
7
7
|
crypto.getRandomValues(t), t[0] = e / 2 ** 40 & 255, t[1] = e / 2 ** 32 & 255, t[2] = e / 2 ** 24 & 255, t[3] = e / 2 ** 16 & 255, t[4] = e / 2 ** 8 & 255, t[5] = e & 255, t[6] = t[6] & 15 | 112, t[8] = t[8] & 63 | 128;
|
|
8
8
|
let n = Array.from(t, (e) => e.toString(16).padStart(2, "0")).join("");
|
|
@@ -10,9 +10,9 @@ function le() {
|
|
|
10
10
|
}
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/common/communication-bridge.ts
|
|
13
|
-
var
|
|
13
|
+
var le = class {
|
|
14
14
|
constructor(e) {
|
|
15
|
-
this._handlers = /* @__PURE__ */ new Map(), this._destroyed = !1, this._namespace = e.namespace, this._allowedOrigins = e.allowedOrigins ?? [location.origin], this._onMessage = e.onMessage, this._allowedOrigins.includes("*") &&
|
|
15
|
+
this._handlers = /* @__PURE__ */ new Map(), this._destroyed = !1, this._namespace = e.namespace, this._allowedOrigins = e.allowedOrigins ?? [location.origin], this._onMessage = e.onMessage, this._allowedOrigins.includes("*") && de() && console.warn("[gengage] postMessage bridge using wildcard origin. Set allowedOrigins for production security."), this._messageListener = (e) => this._handlePostMessage(e), window.addEventListener("message", this._messageListener);
|
|
16
16
|
}
|
|
17
17
|
send(e, t) {
|
|
18
18
|
if (this._destroyed) return;
|
|
@@ -38,7 +38,7 @@ var ue = class {
|
|
|
38
38
|
_handlePostMessage(e) {
|
|
39
39
|
if (this._destroyed || !this._isOriginAllowed(e.origin)) return;
|
|
40
40
|
let t = e.data;
|
|
41
|
-
if (!
|
|
41
|
+
if (!ue(t) || t.gengage !== this._namespace) return;
|
|
42
42
|
let n = { type: t.type };
|
|
43
43
|
t.payload !== void 0 && (n.payload = t.payload), this._onMessage?.(n);
|
|
44
44
|
let r = this._handlers.get(n.type);
|
|
@@ -48,12 +48,12 @@ var ue = class {
|
|
|
48
48
|
return this._allowedOrigins.includes("*") ? !0 : this._allowedOrigins.includes(e);
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
|
-
function
|
|
51
|
+
function ue(e) {
|
|
52
52
|
if (typeof e != "object" || !e) return !1;
|
|
53
53
|
let t = e;
|
|
54
54
|
return typeof t.gengage == "string" && typeof t.type == "string";
|
|
55
55
|
}
|
|
56
|
-
function
|
|
56
|
+
function de() {
|
|
57
57
|
try {
|
|
58
58
|
return typeof process < "u" && process.env.NODE_ENV !== "production";
|
|
59
59
|
} catch {
|
|
@@ -62,19 +62,19 @@ function fe() {
|
|
|
62
62
|
}
|
|
63
63
|
//#endregion
|
|
64
64
|
//#region src/common/action-router.ts
|
|
65
|
-
var
|
|
66
|
-
function
|
|
67
|
-
let r = e.action, i = n.logger ??
|
|
68
|
-
switch (
|
|
65
|
+
var fe = console;
|
|
66
|
+
function pe(e, t, n = {}) {
|
|
67
|
+
let r = e.action, i = n.logger ?? fe;
|
|
68
|
+
switch (ee("action", `routing action: ${r.kind}`, r), r.kind) {
|
|
69
69
|
case "open_chat":
|
|
70
70
|
t.openChat?.(r.payload);
|
|
71
71
|
return;
|
|
72
72
|
case "navigate": {
|
|
73
73
|
if (typeof r.url != "string") {
|
|
74
|
-
|
|
74
|
+
G(r, t, n, i);
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
|
-
if (!
|
|
77
|
+
if (!H(r.url)) {
|
|
78
78
|
i.warn("[gengage] Blocked navigation to unsafe URL:", r.url);
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
@@ -86,12 +86,12 @@ function me(e, t, n = {}) {
|
|
|
86
86
|
});
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
|
-
|
|
89
|
+
me(r.url, e);
|
|
90
90
|
return;
|
|
91
91
|
}
|
|
92
92
|
case "save_session":
|
|
93
93
|
if (typeof r.sessionId != "string" || typeof r.sku != "string") {
|
|
94
|
-
|
|
94
|
+
G(r, t, n, i);
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
97
|
t.saveSession?.({
|
|
@@ -101,7 +101,7 @@ function me(e, t, n = {}) {
|
|
|
101
101
|
return;
|
|
102
102
|
case "add_to_cart":
|
|
103
103
|
if (typeof r.sku != "string" || typeof r.quantity != "number" || typeof r.cartCode != "string") {
|
|
104
|
-
|
|
104
|
+
G(r, t, n, i);
|
|
105
105
|
return;
|
|
106
106
|
}
|
|
107
107
|
t.addToCart?.({
|
|
@@ -112,24 +112,24 @@ function me(e, t, n = {}) {
|
|
|
112
112
|
return;
|
|
113
113
|
case "script_call": {
|
|
114
114
|
if (n.allowScriptCall === !1) {
|
|
115
|
-
|
|
115
|
+
G(r, t, n, i);
|
|
116
116
|
return;
|
|
117
117
|
}
|
|
118
118
|
if (typeof r.name != "string") {
|
|
119
|
-
|
|
119
|
+
G(r, t, n, i);
|
|
120
120
|
return;
|
|
121
121
|
}
|
|
122
|
-
let e =
|
|
122
|
+
let e = he(r.payload) ? r.payload : void 0;
|
|
123
123
|
t.scriptCall?.({
|
|
124
124
|
name: r.name,
|
|
125
125
|
...e !== void 0 && { payload: e }
|
|
126
126
|
});
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
129
|
-
default:
|
|
129
|
+
default: G(r, t, n, i);
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
-
function
|
|
132
|
+
function G(e, t, n, r) {
|
|
133
133
|
let i = n.unknownActionPolicy ?? "log-and-ignore";
|
|
134
134
|
if (i === "delegate") {
|
|
135
135
|
t.unknown?.(e), t.unknown || r.warn("[gengage] Unknown action received without delegate handler", e);
|
|
@@ -138,9 +138,9 @@ function W(e, t, n, r) {
|
|
|
138
138
|
if (i === "throw") throw Error(`[gengage] Unknown action kind: ${e.kind}`);
|
|
139
139
|
r.warn("[gengage] Unknown action ignored", e);
|
|
140
140
|
}
|
|
141
|
-
function
|
|
141
|
+
function me(e, t) {
|
|
142
142
|
if (!(typeof window > "u")) {
|
|
143
|
-
if (!
|
|
143
|
+
if (!H(e)) {
|
|
144
144
|
console.warn("[gengage] Blocked navigation to unsafe URL:", e);
|
|
145
145
|
return;
|
|
146
146
|
}
|
|
@@ -151,18 +151,18 @@ function he(e, t) {
|
|
|
151
151
|
window.location.href = e;
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
-
function
|
|
154
|
+
function he(e) {
|
|
155
155
|
return typeof e == "object" && !!e && !Array.isArray(e);
|
|
156
156
|
}
|
|
157
157
|
//#endregion
|
|
158
158
|
//#region src/chat/attachment-utils.ts
|
|
159
|
-
var
|
|
159
|
+
var ge = [
|
|
160
160
|
"image/jpeg",
|
|
161
161
|
"image/png",
|
|
162
162
|
"image/webp"
|
|
163
163
|
];
|
|
164
|
-
function
|
|
165
|
-
return
|
|
164
|
+
function _e(e) {
|
|
165
|
+
return ge.includes(e.type) ? e.size > 5242880 ? {
|
|
166
166
|
ok: !1,
|
|
167
167
|
reason: "too_large"
|
|
168
168
|
} : { ok: !0 } : {
|
|
@@ -172,7 +172,7 @@ function ve(e) {
|
|
|
172
172
|
}
|
|
173
173
|
//#endregion
|
|
174
174
|
//#region src/chat/api.ts
|
|
175
|
-
function
|
|
175
|
+
function ve(e, t) {
|
|
176
176
|
let n = e.type, r = e.payload != null && typeof e.payload == "object" && !Array.isArray(e.payload) ? e.payload : {}, i = (e) => {
|
|
177
177
|
let t = { ...r };
|
|
178
178
|
for (let [n, r] of Object.entries(e)) n in t || (t[n] = r);
|
|
@@ -211,19 +211,19 @@ function ye(e, t) {
|
|
|
211
211
|
default: return e;
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
-
var
|
|
215
|
-
function
|
|
216
|
-
let { action: t, type: n, payload: r, ...i } = e, a = n ?? t?.type ?? "inputText", o = r ?? t?.payload, s =
|
|
214
|
+
var ye = { user_message: "inputText" };
|
|
215
|
+
function be(e) {
|
|
216
|
+
let { action: t, type: n, payload: r, ...i } = e, a = n ?? t?.type ?? "inputText", o = r ?? t?.payload, s = ye[a] ?? a, c = {
|
|
217
217
|
...i,
|
|
218
218
|
type: s
|
|
219
219
|
};
|
|
220
220
|
return o !== void 0 && (c.payload = typeof o == "string" ? { text: o } : o), JSON.stringify(c);
|
|
221
221
|
}
|
|
222
|
-
function
|
|
222
|
+
function xe(e, t, n) {
|
|
223
223
|
let i = r("process_action", n), a = new AbortController();
|
|
224
224
|
return (async () => {
|
|
225
225
|
try {
|
|
226
|
-
let r =
|
|
226
|
+
let r = be(e), o = n.attachment !== void 0, c;
|
|
227
227
|
if (o) {
|
|
228
228
|
let e = new FormData();
|
|
229
229
|
e.append("request", r), n.attachment !== void 0 && e.append("attachment", n.attachment), c = {
|
|
@@ -289,19 +289,19 @@ function Se(e, t, n) {
|
|
|
289
289
|
}
|
|
290
290
|
//#endregion
|
|
291
291
|
//#region src/chat/utils/chat-presentation-debug.ts
|
|
292
|
-
var
|
|
293
|
-
function
|
|
292
|
+
var Se = ["chat_debug", "presentation_debug"], Ce = ["gengage_chat_debug", "gengage_presentation_debug"];
|
|
293
|
+
function we() {
|
|
294
294
|
if (typeof window > "u") return !1;
|
|
295
295
|
let e = new URLSearchParams(window.location.search);
|
|
296
|
-
if (
|
|
296
|
+
if (Se.some((t) => e.get(t) === "1")) return !0;
|
|
297
297
|
try {
|
|
298
|
-
return
|
|
298
|
+
return Ce.some((e) => window.localStorage.getItem(e) === "1");
|
|
299
299
|
} catch {
|
|
300
300
|
return !1;
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
|
-
function
|
|
304
|
-
if (!
|
|
303
|
+
function Te(e, t, n) {
|
|
304
|
+
if (!we()) return;
|
|
305
305
|
let r = (window.__gengageChatPresentationDebugSeq ?? 0) + 1;
|
|
306
306
|
window.__gengageChatPresentationDebugSeq = r;
|
|
307
307
|
let i = {
|
|
@@ -317,19 +317,19 @@ function Ee(e, t, n) {
|
|
|
317
317
|
}
|
|
318
318
|
//#endregion
|
|
319
319
|
//#region src/chat/utils/get-chat-scroll-element.ts
|
|
320
|
-
var
|
|
321
|
-
function
|
|
322
|
-
|
|
320
|
+
var Ee = "gengage-chat-scroll", K = null;
|
|
321
|
+
function De(e) {
|
|
322
|
+
K = e;
|
|
323
323
|
}
|
|
324
|
-
function
|
|
325
|
-
return
|
|
324
|
+
function Oe() {
|
|
325
|
+
return K && K.isConnected ? K : (K = null, document.getElementById(Ee) || (Te("chat-scroll", "failed to resolve scroll container (not registered)", { id: Ee }), null));
|
|
326
326
|
}
|
|
327
|
-
function
|
|
328
|
-
|
|
327
|
+
function ke() {
|
|
328
|
+
K = null;
|
|
329
329
|
}
|
|
330
330
|
//#endregion
|
|
331
331
|
//#region src/chat/locales/tr.ts
|
|
332
|
-
var
|
|
332
|
+
var Ae = {
|
|
333
333
|
headerTitle: "Ürün Uzmanı",
|
|
334
334
|
inputPlaceholder: "Ürün ara, soru sor",
|
|
335
335
|
sendButton: "Gönder",
|
|
@@ -450,7 +450,7 @@ var je = {
|
|
|
450
450
|
showFormerMessagesButton: "↑ Önceki mesajları göster",
|
|
451
451
|
aiAnalysisAnalyzingLabel: "Ürünler analiz ediliyor...",
|
|
452
452
|
aiBrowseCategoriesTitle: "Kategorilere Göz At"
|
|
453
|
-
},
|
|
453
|
+
}, je = {
|
|
454
454
|
headerTitle: "Product Expert",
|
|
455
455
|
inputPlaceholder: "Search products, ask questions",
|
|
456
456
|
sendButton: "Send",
|
|
@@ -574,25 +574,25 @@ var je = {
|
|
|
574
574
|
};
|
|
575
575
|
//#endregion
|
|
576
576
|
//#region src/chat/locales/index.ts
|
|
577
|
-
function
|
|
577
|
+
function Me(e) {
|
|
578
578
|
return e ? e.toLowerCase().split("-")[0] ?? "tr" : "tr";
|
|
579
579
|
}
|
|
580
|
-
function
|
|
581
|
-
switch (
|
|
582
|
-
case "en": return
|
|
583
|
-
default: return
|
|
580
|
+
function Ne(e) {
|
|
581
|
+
switch (Me(e)) {
|
|
582
|
+
case "en": return je;
|
|
583
|
+
default: return Ae;
|
|
584
584
|
}
|
|
585
585
|
}
|
|
586
586
|
//#endregion
|
|
587
587
|
//#region src/common/voice-input.ts
|
|
588
|
-
function
|
|
589
|
-
return
|
|
588
|
+
function Pe() {
|
|
589
|
+
return Fe() !== null;
|
|
590
590
|
}
|
|
591
|
-
function
|
|
591
|
+
function Fe() {
|
|
592
592
|
let e = globalThis;
|
|
593
593
|
return e.SpeechRecognition ?? e.webkitSpeechRecognition ?? null;
|
|
594
594
|
}
|
|
595
|
-
var
|
|
595
|
+
var Ie = class {
|
|
596
596
|
constructor(e, t) {
|
|
597
597
|
this.recognition = null, this._state = "idle", this.silenceTimer = null, this.accumulatedTranscript = "", this.intentionalStop = !1, this._lastRestartAt = 0, this.callbacks = e, this.lang = t?.lang ?? "tr-TR", this.silenceTimeoutMs = t?.silenceTimeoutMs ?? 1500, this.autoSubmit = t?.autoSubmit ?? !0;
|
|
598
598
|
}
|
|
@@ -601,7 +601,7 @@ var Le = class {
|
|
|
601
601
|
}
|
|
602
602
|
start() {
|
|
603
603
|
if (this._state === "listening") return;
|
|
604
|
-
let e =
|
|
604
|
+
let e = Fe();
|
|
605
605
|
if (!e) {
|
|
606
606
|
this.setState("error"), this.callbacks.onError?.("not-supported", "Web Speech API is not supported in this browser.");
|
|
607
607
|
return;
|
|
@@ -625,7 +625,7 @@ var Le = class {
|
|
|
625
625
|
}
|
|
626
626
|
n && (this.accumulatedTranscript += n, this.callbacks.onFinal?.(this.accumulatedTranscript)), t && this.callbacks.onInterim?.(this.accumulatedTranscript + t), this.autoSubmit && this.accumulatedTranscript && this.startSilenceTimer();
|
|
627
627
|
}, t.onerror = (e) => {
|
|
628
|
-
let t =
|
|
628
|
+
let t = Le(e.error);
|
|
629
629
|
this.intentionalStop && (e.error === "no-speech" || e.error === "aborted") || (this.setState("error"), this.callbacks.onError?.(t, e.message || e.error));
|
|
630
630
|
}, t.onend = () => {
|
|
631
631
|
if (this.clearSilenceTimer(), this._state === "listening" && !this.intentionalStop) {
|
|
@@ -684,7 +684,7 @@ var Le = class {
|
|
|
684
684
|
this.silenceTimer !== null && (clearTimeout(this.silenceTimer), this.silenceTimer = null);
|
|
685
685
|
}
|
|
686
686
|
};
|
|
687
|
-
function
|
|
687
|
+
function Le(e) {
|
|
688
688
|
switch (e) {
|
|
689
689
|
case "not-allowed": return "not-allowed";
|
|
690
690
|
case "no-speech": return "no-speech";
|
|
@@ -696,7 +696,7 @@ function Re(e) {
|
|
|
696
696
|
}
|
|
697
697
|
//#endregion
|
|
698
698
|
//#region src/chat/components/KvkkBanner.ts
|
|
699
|
-
function
|
|
699
|
+
function Re(e) {
|
|
700
700
|
let t = document.createElement("div");
|
|
701
701
|
t.className = "gengage-chat-kvkk-banner gds-evidence-card gds-evidence-card-warning", t.dataset.gengagePart = "kvkk-banner", t.setAttribute("role", "alert");
|
|
702
702
|
let n = document.createElement("div");
|
|
@@ -706,7 +706,7 @@ function ze(e) {
|
|
|
706
706
|
}
|
|
707
707
|
//#endregion
|
|
708
708
|
//#region src/chat/components/PanelTopBar.ts
|
|
709
|
-
var
|
|
709
|
+
var ze = class {
|
|
710
710
|
constructor(e) {
|
|
711
711
|
this._el = document.createElement("div"), this._el.className = "gengage-chat-panel-topbar gds-toolbar", this._el.dataset.gengagePart = "panel-topbar", this._backBtn = document.createElement("button"), this._backBtn.className = "gengage-chat-panel-topbar-back gds-btn gds-btn-ghost gds-icon-btn", this._backBtn.dataset.gengagePart = "panel-topbar-back", this._backBtn.type = "button", this._backBtn.disabled = !0, this._backBtn.setAttribute("aria-label", e.backAriaLabel ?? "Back"), this._backBtn.title = e.backAriaLabel ?? "Back", this._backBtn.innerHTML = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m15 18-6-6 6-6\"/><path d=\"M21 12H9\"/></svg>", this._backBtn.addEventListener("click", () => e.onBack());
|
|
712
712
|
let t = document.createElement("div");
|
|
@@ -727,7 +727,7 @@ var Be = class {
|
|
|
727
727
|
getTitle() {
|
|
728
728
|
return this._titleEl.textContent ?? "";
|
|
729
729
|
}
|
|
730
|
-
},
|
|
730
|
+
}, Be = class {
|
|
731
731
|
constructor(e) {
|
|
732
732
|
this._onThumbnailClick = e.onThumbnailClick, this._el = document.createElement("div"), this._el.className = "gengage-chat-thumbnails-column", this._el.style.display = "none";
|
|
733
733
|
}
|
|
@@ -755,13 +755,13 @@ var Be = class {
|
|
|
755
755
|
hide() {
|
|
756
756
|
this._el.style.display = "none";
|
|
757
757
|
}
|
|
758
|
-
},
|
|
758
|
+
}, Ve = {
|
|
759
759
|
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>",
|
|
760
760
|
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>",
|
|
761
761
|
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>",
|
|
762
762
|
similar: "<svg viewBox=\"0 0 16 16\" class=\"gengage-chat-icon\"><rect x=\"1\" y=\"3\" width=\"6\" height=\"6\" rx=\"1\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/><rect x=\"9\" y=\"3\" width=\"6\" height=\"6\" rx=\"1\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/></svg>"
|
|
763
|
-
},
|
|
764
|
-
async function
|
|
763
|
+
}, He = Ae, Ue = 1400, We = /data:image\/(png|jpeg|jpg|webp);base64,[A-Za-z0-9+/=]+/gi;
|
|
764
|
+
async function Ge(e) {
|
|
765
765
|
for (let t of e) for (let e of t.types) if (e.startsWith("image/")) try {
|
|
766
766
|
let n = await t.getType(e);
|
|
767
767
|
if (!n || n.size === 0) continue;
|
|
@@ -771,7 +771,7 @@ async function Ke(e) {
|
|
|
771
771
|
continue;
|
|
772
772
|
}
|
|
773
773
|
for (let t of e) if (t.types.includes("text/html")) try {
|
|
774
|
-
let e = (await (await t.getType("text/html")).text()).match(
|
|
774
|
+
let e = (await (await t.getType("text/html")).text()).match(We)?.[0];
|
|
775
775
|
if (!e || e.length > 5e6) continue;
|
|
776
776
|
let n = await (await fetch(e)).blob();
|
|
777
777
|
if (!n || n.size === 0) continue;
|
|
@@ -788,17 +788,17 @@ async function Ke(e) {
|
|
|
788
788
|
}
|
|
789
789
|
return null;
|
|
790
790
|
}
|
|
791
|
-
async function
|
|
791
|
+
async function Ke(e) {
|
|
792
792
|
try {
|
|
793
793
|
let t = e ?? (typeof navigator.clipboard?.read == "function" ? navigator.clipboard.read() : null);
|
|
794
|
-
return t ?
|
|
794
|
+
return t ? Ge(await t) : null;
|
|
795
795
|
} catch {}
|
|
796
796
|
return null;
|
|
797
797
|
}
|
|
798
|
-
var
|
|
798
|
+
var qe = class {
|
|
799
799
|
constructor(e, t) {
|
|
800
800
|
this._sendStopHandler = null, this._panelVisible = !1, this._panelCollapsed = !1, this._dividerPreviewEnabled = !1, this._onPanelToggle = void 0, this._onHostShellSync = void 0, this._pendingAttachment = null, this._onAttachment = void 0, this._onRollback = void 0, this._onLinkClick = void 0, this._userScrolledUp = !1, this._scrollLockedUntil = 0, this._favBadgeEl = null, this._thinkingSteps = [], this._firstBotMessageIds = /* @__PURE__ */ new Set(), this._voiceInput = null, this._micBtn = null, this._voiceEnabled = !1, this._voiceLang = "tr-TR", this._ignoreNextDividerClick = !1, this._panelListScrollAnimToken = 0, this._cleanups = [], this._focusTrapHandler = null, this._previouslyFocusedElement = null, this._conversationEl = null, this._reopenPanelBtn = null, this._presentationFocusThreadId = null, this._formerMessagesBtn = null, this._programmaticScrollUntil = 0, this._userInteractionUntil = 0, this._touchStartY = null, this._presentationPinned = !0, this._presentationUserInteracting = !1, this._resizeRafId = null, this._cartBtn = null, this._attachWrapEl = null, this._attachMenuEl = null, this._attachBtn = null, this._attachMenuCleanup = null, this._attachMenuClickTimerId = null, this._typingLoadingBinding = null, this._panelLoadingBinding = null, this._panelAiZoneLoadingBinding = null, this._options = t, this.i18n = {
|
|
801
|
-
...
|
|
801
|
+
...He,
|
|
802
802
|
...t.i18n
|
|
803
803
|
}, this.onSend = t.onSend, t.onPanelToggle !== void 0 && (this._onPanelToggle = t.onPanelToggle), t.onHostShellSync !== void 0 && (this._onHostShellSync = t.onHostShellSync), t.onAttachment !== void 0 && (this._onAttachment = t.onAttachment), t.onRollback !== void 0 && (this._onRollback = t.onRollback), t.onLinkClick !== void 0 && (this._onLinkClick = t.onLinkClick), t.voiceEnabled && (this._voiceEnabled = !0), t.voiceLang !== void 0 && (this._voiceLang = t.voiceLang), this.root = document.createElement("div"), this.root.className = "gengage-chat-drawer gds-panel", this.root.dataset.gengagePart = "chat-drawer", this.root.setAttribute("role", "dialog"), this.root.setAttribute("aria-label", this.i18n.headerTitle ?? "Chat"), this.root.setAttribute("aria-modal", "true");
|
|
804
804
|
let n = "gengage-chat-dialog-desc", r = document.createElement("span");
|
|
@@ -880,7 +880,7 @@ var Je = class {
|
|
|
880
880
|
});
|
|
881
881
|
}
|
|
882
882
|
let h = document.createElement("div");
|
|
883
|
-
h.className = "gengage-chat-body", h.dataset.gengagePart = "chat-body", this._panelEl = document.createElement("div"), this._panelEl.className = "gengage-chat-panel gds-panel", this._panelEl.dataset.gengagePart = "chat-panel", this._panelTopBar = new
|
|
883
|
+
h.className = "gengage-chat-body", h.dataset.gengagePart = "chat-body", this._panelEl = document.createElement("div"), this._panelEl.className = "gengage-chat-panel gds-panel", this._panelEl.dataset.gengagePart = "chat-panel", this._panelTopBar = new ze({
|
|
884
884
|
onBack: () => t.onPanelBack?.(),
|
|
885
885
|
onForward: () => t.onPanelForward?.(),
|
|
886
886
|
onClose: () => {
|
|
@@ -923,60 +923,60 @@ var Je = class {
|
|
|
923
923
|
let w = () => C.classList.add("gengage-chat-offline-bar--visible"), T = () => C.classList.remove("gengage-chat-offline-bar--visible");
|
|
924
924
|
window.addEventListener("offline", w), window.addEventListener("online", T), this._cleanups.push(() => {
|
|
925
925
|
window.removeEventListener("offline", w), window.removeEventListener("online", T);
|
|
926
|
-
}), this._kvkkSlot = document.createElement("div"), this._kvkkSlot.className = "gengage-chat-kvkk-slot", this._kvkkSlot.dataset.gengagePart = "chat-kvkk-slot", S.appendChild(this._kvkkSlot), this.messagesEl = document.createElement("div"), this.messagesEl.id =
|
|
926
|
+
}), this._kvkkSlot = document.createElement("div"), this._kvkkSlot.className = "gengage-chat-kvkk-slot", this._kvkkSlot.dataset.gengagePart = "chat-kvkk-slot", S.appendChild(this._kvkkSlot), this.messagesEl = document.createElement("div"), this.messagesEl.id = Ee, this.messagesEl.className = "gengage-chat-messages", this.messagesEl.dataset.gengagePart = "chat-messages", this.messagesEl.setAttribute("role", "log"), this.messagesEl.setAttribute("aria-live", "polite"), this.messagesEl.setAttribute("aria-atomic", "false"), this.messagesEl.setAttribute("aria-label", this.i18n.chatMessagesAriaLabel), De(this.messagesEl);
|
|
927
927
|
let E = document.createElement("button");
|
|
928
928
|
E.type = "button", E.className = "gengage-chat-former-messages-btn gds-chip", E.dataset.gengagePart = "chat-former-messages-button", E.textContent = this.i18n.showFormerMessagesButton, E.setAttribute("aria-label", this.i18n.showFormerMessagesButton), E.style.display = "none", E.addEventListener("click", () => {
|
|
929
929
|
this._options.presentation?.onReleasePresentationFocus?.();
|
|
930
930
|
}), this.messagesEl.appendChild(E), this._formerMessagesBtn = E;
|
|
931
|
-
let
|
|
931
|
+
let D = () => {
|
|
932
932
|
this._userInteractionUntil = Date.now() + 2e3;
|
|
933
|
-
},
|
|
934
|
-
|
|
935
|
-
|
|
933
|
+
}, O = !1, ee = () => this._options.presentation, k = () => {
|
|
934
|
+
O || (O = !0, requestAnimationFrame(() => {
|
|
935
|
+
O = !1;
|
|
936
936
|
let { scrollTop: e, scrollHeight: t, clientHeight: n } = this.messagesEl, r = t - e - n;
|
|
937
937
|
this._userScrolledUp = r > 10;
|
|
938
938
|
let i = this._presentationPinned ? r < 96 : r < 32, a = Date.now(), o = a < this._programmaticScrollUntil, s = !i && a < this._userInteractionUntil, c = o ? !1 : s;
|
|
939
|
-
i !== this._presentationPinned && (this._presentationPinned = i,
|
|
939
|
+
i !== this._presentationPinned && (this._presentationPinned = i, ee()?.onPinnedToBottomChange?.(i)), c !== this._presentationUserInteracting && (this._presentationUserInteracting = c, ee()?.onUserInteractingChange?.(c));
|
|
940
940
|
}));
|
|
941
941
|
};
|
|
942
|
-
this.messagesEl.addEventListener("scroll",
|
|
943
|
-
this.messagesEl.removeEventListener("scroll",
|
|
942
|
+
this.messagesEl.addEventListener("scroll", k, { passive: !0 }), this._cleanups.push(() => {
|
|
943
|
+
this.messagesEl.removeEventListener("scroll", k);
|
|
944
944
|
});
|
|
945
|
-
let
|
|
946
|
-
|
|
945
|
+
let te = (e) => {
|
|
946
|
+
D(), e.deltaY < -6 && this._presentationFocusThreadId && this._options.presentation?.onFormerMessagesHint?.();
|
|
947
947
|
};
|
|
948
|
-
this.messagesEl.addEventListener("wheel",
|
|
949
|
-
let
|
|
950
|
-
|
|
951
|
-
},
|
|
952
|
-
|
|
948
|
+
this.messagesEl.addEventListener("wheel", te, { passive: !0 }), this._cleanups.push(() => this.messagesEl.removeEventListener("wheel", te));
|
|
949
|
+
let A = (e) => {
|
|
950
|
+
D(), this._touchStartY = e.touches[0]?.clientY ?? null;
|
|
951
|
+
}, j = (e) => {
|
|
952
|
+
D();
|
|
953
953
|
let t = e.touches[0]?.clientY, n = this._touchStartY;
|
|
954
954
|
typeof t == "number" && typeof n == "number" && t - n > 10 && this._presentationFocusThreadId && this._options.presentation?.onFormerMessagesHint?.();
|
|
955
955
|
};
|
|
956
|
-
this.messagesEl.addEventListener("touchstart",
|
|
957
|
-
this.messagesEl.removeEventListener("touchstart",
|
|
958
|
-
}), S.appendChild(this.messagesEl), this._thumbnailsColumn = new
|
|
959
|
-
let
|
|
960
|
-
|
|
961
|
-
let
|
|
962
|
-
|
|
963
|
-
|
|
956
|
+
this.messagesEl.addEventListener("touchstart", A, { passive: !0 }), this.messagesEl.addEventListener("touchmove", j, { passive: !0 }), this._cleanups.push(() => {
|
|
957
|
+
this.messagesEl.removeEventListener("touchstart", A), this.messagesEl.removeEventListener("touchmove", j);
|
|
958
|
+
}), S.appendChild(this.messagesEl), this._thumbnailsColumn = new Be({ onThumbnailClick: (e) => t.onThumbnailClick?.(e) }), this._panelEl.appendChild(this._thumbnailsColumn.getElement()), this._panelFloatingEl = document.createElement("div"), this._panelFloatingEl.className = "gengage-chat-panel-float", this._panelFloatingEl.dataset.gengagePart = "chat-panel-floating-layer", this._panelEl.appendChild(this._panelFloatingEl), this._resetPanelAiZoneElement(), this._pillsEl = document.createElement("div"), this._pillsEl.className = "gengage-chat-pills", this._pillsEl.dataset.gengagePart = "chat-suggestion-pills", this._pillsEl.setAttribute("role", "toolbar"), this._pillsEl.setAttribute("aria-label", this.i18n.suggestionsAriaLabel), this._pillsEl.style.display = "none";
|
|
959
|
+
let M = document.createElement("div");
|
|
960
|
+
M.className = "gengage-chat-pills-scroll", M.dataset.gengagePart = "chat-suggestion-pills-scroll", this._pillsEl.appendChild(M);
|
|
961
|
+
let N = document.createElement("button");
|
|
962
|
+
N.className = "gengage-chat-pills-arrow gds-btn gds-btn-ghost", N.dataset.gengagePart = "chat-suggestion-pills-more", N.type = "button", N.setAttribute("aria-label", this.i18n.moreSuggestionsAriaLabel), N.textContent = "›", N.addEventListener("click", () => {
|
|
963
|
+
M.scrollBy({
|
|
964
964
|
left: 150,
|
|
965
965
|
behavior: "smooth"
|
|
966
966
|
});
|
|
967
|
-
}), this._pillsEl.appendChild(
|
|
968
|
-
let
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
let e =
|
|
972
|
-
|
|
967
|
+
}), this._pillsEl.appendChild(N);
|
|
968
|
+
let P = !1, ne = () => {
|
|
969
|
+
P || (P = !0, requestAnimationFrame(() => {
|
|
970
|
+
P = !1;
|
|
971
|
+
let e = M.scrollLeft + M.clientWidth >= M.scrollWidth - 4;
|
|
972
|
+
N.style.display = e ? "none" : "";
|
|
973
973
|
}));
|
|
974
974
|
};
|
|
975
|
-
|
|
976
|
-
|
|
975
|
+
M.addEventListener("scroll", ne, { passive: !0 }), this._cleanups.push(() => {
|
|
976
|
+
M.removeEventListener("scroll", ne);
|
|
977
977
|
}), S.appendChild(this._pillsEl), this._inputChipsEl = document.createElement("div"), this._inputChipsEl.className = "gengage-chat-input-chips", this._inputChipsEl.dataset.gengagePart = "chat-input-chips", this._inputChipsEl.style.display = "none", S.appendChild(this._inputChipsEl);
|
|
978
|
-
let
|
|
979
|
-
|
|
978
|
+
let F = document.createElement("div");
|
|
979
|
+
F.className = "gengage-chat-input-area", F.dataset.gengagePart = "chat-input-area", this.inputEl = document.createElement("textarea"), this.inputEl.className = "gengage-chat-input", this.inputEl.dataset.gengagePart = "chat-input", this.inputEl.rows = 1, this.inputEl.placeholder = this.i18n.inputPlaceholder, this.inputEl.addEventListener("input", () => {
|
|
980
980
|
this._resizeRafId !== null && cancelAnimationFrame(this._resizeRafId), this._resizeRafId = requestAnimationFrame(() => {
|
|
981
981
|
this._resizeRafId = null, this.inputEl.style.height = "auto", this.inputEl.style.height = `${Math.min(this.inputEl.scrollHeight, 120)}px`;
|
|
982
982
|
}), this._updateSendEnabled();
|
|
@@ -1002,47 +1002,47 @@ var Je = class {
|
|
|
1002
1002
|
let e = this._fileInput.files?.[0];
|
|
1003
1003
|
e && this._routeAttachmentFile(e), this._fileInput.value = "";
|
|
1004
1004
|
});
|
|
1005
|
-
let
|
|
1006
|
-
|
|
1007
|
-
let
|
|
1008
|
-
this._attachBtn =
|
|
1005
|
+
let I = document.createElement("div");
|
|
1006
|
+
I.className = "gengage-chat-attach-wrap", I.dataset.gengagePart = "chat-attach-wrap", this._attachWrapEl = I;
|
|
1007
|
+
let L = document.createElement("button");
|
|
1008
|
+
this._attachBtn = L, L.className = "gengage-chat-attach-btn gds-btn gds-btn-ghost", L.dataset.gengagePart = "chat-attach-button", L.type = "button", L.setAttribute("aria-label", this.i18n.attachImageButton), L.setAttribute("aria-haspopup", "menu"), L.setAttribute("aria-expanded", "false"), L.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>", L.addEventListener("click", (e) => {
|
|
1009
1009
|
e.stopPropagation(), this._toggleAttachMenu();
|
|
1010
1010
|
});
|
|
1011
|
-
let
|
|
1012
|
-
this._attachMenuEl =
|
|
1013
|
-
let
|
|
1014
|
-
|
|
1011
|
+
let R = document.createElement("div");
|
|
1012
|
+
this._attachMenuEl = R, R.className = "gengage-chat-attach-menu gds-menu", R.dataset.gengagePart = "chat-attach-menu", R.setAttribute("role", "menu"), R.setAttribute("hidden", "");
|
|
1013
|
+
let z = document.createElement("button");
|
|
1014
|
+
z.type = "button", z.className = "gengage-chat-attach-menu-item gds-btn gds-btn-ghost", z.dataset.gengagePart = "chat-attach-menu-select-photo", z.setAttribute("role", "menuitem"), z.innerHTML = `<span class="gengage-chat-attach-menu-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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></span><span class="gengage-chat-attach-menu-label">${this.i18n.attachMenuSelectPhoto}</span>`, z.addEventListener("click", (e) => {
|
|
1015
1015
|
e.stopPropagation(), this._closeAttachMenu(), this._fileInput.click();
|
|
1016
1016
|
});
|
|
1017
|
-
let
|
|
1018
|
-
|
|
1019
|
-
let
|
|
1020
|
-
|
|
1017
|
+
let re = document.createElement("div");
|
|
1018
|
+
re.className = "gengage-chat-attach-menu-sep", re.dataset.gengagePart = "chat-attach-menu-separator", re.setAttribute("aria-hidden", "true");
|
|
1019
|
+
let B = document.createElement("button");
|
|
1020
|
+
B.type = "button", B.className = "gengage-chat-attach-menu-item gds-btn gds-btn-ghost", B.dataset.gengagePart = "chat-attach-menu-paste", B.setAttribute("role", "menuitem"), B.innerHTML = `<span class="gengage-chat-attach-menu-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 2H9a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1Z"/><path d="M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/><path d="M16 4h2a2 2 0 0 1 2 2v4"/><path d="M21 14H11"/><path d="m15 10-4 4 4 4"/></svg></span><span class="gengage-chat-attach-menu-label">${this.i18n.attachMenuPaste}</span>`, B.addEventListener("click", (e) => {
|
|
1021
1021
|
e.stopPropagation();
|
|
1022
1022
|
let t = typeof navigator.clipboard?.read == "function" ? navigator.clipboard.read() : void 0;
|
|
1023
1023
|
this._pasteImageFromClipboardMenu(t);
|
|
1024
|
-
}),
|
|
1025
|
-
let
|
|
1026
|
-
|
|
1027
|
-
let
|
|
1028
|
-
|
|
1024
|
+
}), R.appendChild(z), R.appendChild(re), R.appendChild(B), I.appendChild(L), I.appendChild(R), this._previewStrip = document.createElement("div"), this._previewStrip.className = "gengage-chat-attachment-preview gengage-chat-attachment-preview--hidden gds-card-soft", this._previewStrip.dataset.gengagePart = "chat-attachment-preview";
|
|
1025
|
+
let ie = document.createElement("img");
|
|
1026
|
+
ie.className = "gengage-chat-attachment-preview-thumb", ie.dataset.gengagePart = "chat-attachment-preview-thumb", ie.alt = "", this._previewName = document.createElement("span"), this._previewName.className = "gengage-chat-attachment-name", this._previewName.dataset.gengagePart = "chat-attachment-preview-name";
|
|
1027
|
+
let V = document.createElement("button");
|
|
1028
|
+
V.className = "gengage-chat-attachment-remove gds-btn gds-btn-ghost", V.dataset.gengagePart = "chat-attachment-preview-remove", V.type = "button", V.setAttribute("aria-label", this.i18n.removeAttachmentButton), V.textContent = "×", V.addEventListener("click", () => this.clearAttachment()), this._previewStrip.appendChild(ie), this._previewStrip.appendChild(this._previewName), this._previewStrip.appendChild(V), this.sendBtn = document.createElement("button"), this.sendBtn.className = "gengage-chat-send gds-btn gds-btn-primary", this.sendBtn.dataset.gengagePart = "chat-send", this.sendBtn.type = "button", this.sendBtn.disabled = !0, this.sendBtn.setAttribute("aria-label", this.i18n.sendButton), this.sendBtn.dataset.tooltip = this.i18n.sendButton, this._renderSendButtonIcon("send"), this.sendBtn.addEventListener("click", () => {
|
|
1029
1029
|
if (this._sendStopHandler) {
|
|
1030
1030
|
let e = this._sendStopHandler;
|
|
1031
1031
|
this.hideStopButton(), e();
|
|
1032
1032
|
return;
|
|
1033
1033
|
}
|
|
1034
1034
|
this._submit();
|
|
1035
|
-
}),
|
|
1036
|
-
e.preventDefault(),
|
|
1037
|
-
}),
|
|
1038
|
-
|
|
1039
|
-
}),
|
|
1040
|
-
e.preventDefault(),
|
|
1035
|
+
}), F.addEventListener("dragover", (e) => {
|
|
1036
|
+
e.preventDefault(), F.classList.add("gengage-chat-input-area--dragover");
|
|
1037
|
+
}), F.addEventListener("dragleave", () => {
|
|
1038
|
+
F.classList.remove("gengage-chat-input-area--dragover");
|
|
1039
|
+
}), F.addEventListener("drop", (e) => {
|
|
1040
|
+
e.preventDefault(), F.classList.remove("gengage-chat-input-area--dragover");
|
|
1041
1041
|
let t = e.dataTransfer?.files[0];
|
|
1042
1042
|
t && this._routeAttachmentFile(t);
|
|
1043
1043
|
});
|
|
1044
|
-
let
|
|
1045
|
-
|
|
1044
|
+
let H = document.createElement("div");
|
|
1045
|
+
H.className = "gengage-chat-input-pill gds-input-shell", H.dataset.gengagePart = "chat-input-shell", H.appendChild(I), H.appendChild(this.inputEl), this._voiceEnabled && Pe() && (this._micBtn = document.createElement("button"), this._micBtn.className = "gengage-chat-mic-btn gds-btn gds-btn-ghost", this._micBtn.dataset.gengagePart = "chat-mic-button", 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()), H.appendChild(this._micBtn), this._voiceInput = new Ie({
|
|
1046
1046
|
onInterim: (e) => {
|
|
1047
1047
|
this._resizeRafId !== null && (cancelAnimationFrame(this._resizeRafId), this._resizeRafId = null), this.inputEl.value = e, this.inputEl.style.height = "auto", this.inputEl.style.height = `${Math.min(this.inputEl.scrollHeight, 120)}px`;
|
|
1048
1048
|
},
|
|
@@ -1058,13 +1058,13 @@ var Je = class {
|
|
|
1058
1058
|
onError: (e, t) => {
|
|
1059
1059
|
this._micBtn?.classList.remove("gengage-chat-mic-btn--active");
|
|
1060
1060
|
}
|
|
1061
|
-
}, { lang: this._voiceLang })),
|
|
1062
|
-
let
|
|
1063
|
-
|
|
1064
|
-
let
|
|
1061
|
+
}, { lang: this._voiceLang })), H.appendChild(this.sendBtn), F.appendChild(this._previewStrip), F.appendChild(this._fileInput), F.appendChild(H), S.appendChild(F), h.appendChild(S), this._comparisonDockSlotEl = document.createElement("div"), this._comparisonDockSlotEl.className = "gengage-chat-comparison-dock-slot", this._comparisonDockSlotEl.dataset.gengagePart = "comparison-dock-slot", h.appendChild(this._comparisonDockSlotEl), this.root.appendChild(h), this._setupHorizontalSwipe(S), this._setupHorizontalSwipe(this._panelEl);
|
|
1062
|
+
let U = document.createElement("div");
|
|
1063
|
+
U.className = "gengage-chat-footer", U.dataset.gengagePart = "chat-footer", U.textContent = this.i18n.poweredBy, this.root.appendChild(U);
|
|
1064
|
+
let ae = (e) => {
|
|
1065
1065
|
e.key === "Escape" && t.onClose();
|
|
1066
1066
|
};
|
|
1067
|
-
this.root.addEventListener("keydown",
|
|
1067
|
+
this.root.addEventListener("keydown", ae), this._cleanups.push(() => this.root.removeEventListener("keydown", ae)), e.appendChild(this.root);
|
|
1068
1068
|
}
|
|
1069
1069
|
addMessage(e) {
|
|
1070
1070
|
let t = document.createElement("div");
|
|
@@ -1164,7 +1164,7 @@ var Je = class {
|
|
|
1164
1164
|
for (let n of e) {
|
|
1165
1165
|
let e = document.createElement("button");
|
|
1166
1166
|
if (e.className = n.image ? "gengage-chat-pill gds-chip gds-chip-active gengage-chat-pill--rich" : "gengage-chat-pill gds-chip gds-chip-active", e.type = "button", n.icon) {
|
|
1167
|
-
let t =
|
|
1167
|
+
let t = Ve[n.icon] ?? "<svg viewBox=\"0 0 16 16\" class=\"gengage-chat-icon\"><path d=\"M3 8h10M9 4l4 4-4 4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>", r = document.createElement("span");
|
|
1168
1168
|
r.className = "gengage-chat-pill-icon", r.innerHTML = t, e.appendChild(r);
|
|
1169
1169
|
}
|
|
1170
1170
|
if (n.image && x(n.image)) {
|
|
@@ -1190,7 +1190,7 @@ var Je = class {
|
|
|
1190
1190
|
}
|
|
1191
1191
|
showKvkkBanner(e, t) {
|
|
1192
1192
|
this._kvkkSlot.innerHTML = "";
|
|
1193
|
-
let n =
|
|
1193
|
+
let n = Re({
|
|
1194
1194
|
htmlContent: e,
|
|
1195
1195
|
onDismiss: t,
|
|
1196
1196
|
closeAriaLabel: this.i18n.closeAriaLabel
|
|
@@ -1244,7 +1244,7 @@ var Je = class {
|
|
|
1244
1244
|
this._attachMenuEl && (this._attachMenuEl.hasAttribute("hidden") ? this._openAttachMenu() : this._closeAttachMenu());
|
|
1245
1245
|
}
|
|
1246
1246
|
async _pasteImageFromClipboardMenu(e) {
|
|
1247
|
-
let t = await
|
|
1247
|
+
let t = await Ke(e);
|
|
1248
1248
|
if (t) {
|
|
1249
1249
|
this._routeAttachmentFile(t), this._closeAttachMenu();
|
|
1250
1250
|
return;
|
|
@@ -1569,7 +1569,7 @@ var Je = class {
|
|
|
1569
1569
|
return;
|
|
1570
1570
|
}
|
|
1571
1571
|
e.index += 1, e.labelEl.textContent = e.steps[e.index], e.index >= e.steps.length - 1 && this._clearLoadingBindingInterval(e);
|
|
1572
|
-
},
|
|
1572
|
+
}, Ue));
|
|
1573
1573
|
}
|
|
1574
1574
|
_clearLoadingBindingInterval(e) {
|
|
1575
1575
|
e?.intervalId && (clearInterval(e.intervalId), e.intervalId = null);
|
|
@@ -1699,7 +1699,7 @@ var Je = class {
|
|
|
1699
1699
|
for (let t of e) {
|
|
1700
1700
|
let e = document.createElement("button");
|
|
1701
1701
|
if (e.className = "gengage-chat-input-chip gds-chip", e.type = "button", t.icon) {
|
|
1702
|
-
let n =
|
|
1702
|
+
let n = Ve[t.icon] ?? "<svg viewBox=\"0 0 16 16\" class=\"gengage-chat-icon\"><path d=\"M3 8h10M9 4l4 4-4 4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>", r = document.createElement("span");
|
|
1703
1703
|
r.className = "gengage-chat-input-chip-icon", r.innerHTML = n, e.appendChild(r);
|
|
1704
1704
|
}
|
|
1705
1705
|
let n = document.createElement("span");
|
|
@@ -1766,12 +1766,12 @@ var Je = class {
|
|
|
1766
1766
|
}, 2500);
|
|
1767
1767
|
}
|
|
1768
1768
|
destroy() {
|
|
1769
|
-
|
|
1769
|
+
De(null), this.releaseFocus(), this._resizeRafId !== null && (cancelAnimationFrame(this._resizeRafId), this._resizeRafId = null), this._destroyLoadingBinding(this._typingLoadingBinding), this._typingLoadingBinding = null, this._destroyLoadingBinding(this._panelLoadingBinding), this._panelLoadingBinding = null, this._destroyLoadingBinding(this._panelAiZoneLoadingBinding), this._panelAiZoneLoadingBinding = null, this._closeAttachMenu();
|
|
1770
1770
|
for (let e of this._cleanups) e();
|
|
1771
1771
|
this._cleanups.length = 0, this._voiceInput?.destroy(), this._voiceInput = null;
|
|
1772
1772
|
}
|
|
1773
|
-
},
|
|
1774
|
-
function
|
|
1773
|
+
}, Je = "<svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"7\" width=\"18\" height=\"13\" rx=\"3\" fill=\"currentColor\" opacity=\"0.15\"/>\n <rect x=\"3\" y=\"7\" width=\"18\" height=\"13\" rx=\"3\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <circle cx=\"9\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"15\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <path d=\"M9.5 17C10.3 17.6 11.1 18 12 18C12.9 18 13.7 17.6 14.5 17\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M12 7V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <circle cx=\"12\" cy=\"3\" r=\"1\" fill=\"currentColor\"/>\n <path d=\"M1 12V14\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M23 12V14\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n</svg>";
|
|
1774
|
+
function Ye(e) {
|
|
1775
1775
|
let t = document.createElement("div");
|
|
1776
1776
|
t.className = "gengage-chat-launcher-container", t.dataset.gengagePart = "chat-launcher-container";
|
|
1777
1777
|
let n = document.createElement("div");
|
|
@@ -1781,7 +1781,7 @@ function Xe(e) {
|
|
|
1781
1781
|
r.className = "gengage-chat-launcher gengage-chat-launcher--image-mode";
|
|
1782
1782
|
let t = document.createElement("img");
|
|
1783
1783
|
t.src = e.imageUrl, t.alt = "", t.draggable = !1, r.appendChild(t);
|
|
1784
|
-
} else r.className = "gengage-chat-launcher", r.innerHTML = e.svgMarkup ??
|
|
1784
|
+
} else r.className = "gengage-chat-launcher", r.innerHTML = e.svgMarkup ?? Je;
|
|
1785
1785
|
if (r.dataset.gengagePart = "chat-launcher-button", e.tooltip !== void 0) {
|
|
1786
1786
|
let t = document.createElement("span");
|
|
1787
1787
|
t.className = "gengage-chat-launcher-tooltip", t.dataset.gengagePart = "chat-launcher-tooltip", t.textContent = e.tooltip, r.appendChild(t);
|
|
@@ -1797,7 +1797,7 @@ function Xe(e) {
|
|
|
1797
1797
|
}
|
|
1798
1798
|
//#endregion
|
|
1799
1799
|
//#region src/common/tts-player.ts
|
|
1800
|
-
var
|
|
1800
|
+
var Xe = new Set([
|
|
1801
1801
|
"audio/ogg",
|
|
1802
1802
|
"audio/mpeg",
|
|
1803
1803
|
"audio/mp3",
|
|
@@ -1805,25 +1805,25 @@ var Ze = new Set([
|
|
|
1805
1805
|
"audio/webm",
|
|
1806
1806
|
"audio/aac",
|
|
1807
1807
|
"audio/mp4"
|
|
1808
|
-
]),
|
|
1809
|
-
function
|
|
1810
|
-
e.pause(), e.removeAttribute("src"), e.load(),
|
|
1808
|
+
]), Ze = /* @__PURE__ */ new Set();
|
|
1809
|
+
function Qe(e) {
|
|
1810
|
+
e.pause(), e.removeAttribute("src"), e.load(), Ze.delete(e);
|
|
1811
1811
|
}
|
|
1812
|
-
function
|
|
1812
|
+
function $e(e, t = "audio/ogg") {
|
|
1813
1813
|
let n = t.split(";")[0].trim();
|
|
1814
|
-
if (!
|
|
1814
|
+
if (!Xe.has(n)) return null;
|
|
1815
1815
|
try {
|
|
1816
1816
|
let n = new Audio(`data:${t};base64,${e}`);
|
|
1817
|
-
return
|
|
1818
|
-
|
|
1819
|
-
}), { stop: () =>
|
|
1817
|
+
return Ze.add(n), n.addEventListener("ended", () => Qe(n), { once: !0 }), n.play().catch(() => {
|
|
1818
|
+
Qe(n);
|
|
1819
|
+
}), { stop: () => Qe(n) };
|
|
1820
1820
|
} catch {
|
|
1821
1821
|
return null;
|
|
1822
1822
|
}
|
|
1823
1823
|
}
|
|
1824
1824
|
//#endregion
|
|
1825
1825
|
//#region src/chat/components/ComparisonTable.ts
|
|
1826
|
-
var
|
|
1826
|
+
var et = {
|
|
1827
1827
|
screen_size: "Screen Size",
|
|
1828
1828
|
weight: "Weight",
|
|
1829
1829
|
battery_capacity: "Battery Capacity",
|
|
@@ -1855,25 +1855,25 @@ var tt = {
|
|
|
1855
1855
|
height: "Height",
|
|
1856
1856
|
depth: "Depth"
|
|
1857
1857
|
};
|
|
1858
|
-
function
|
|
1859
|
-
return t?.[e] ??
|
|
1858
|
+
function tt(e, t) {
|
|
1859
|
+
return t?.[e] ?? et[e] ?? e.replace(/_/g, " ").replace(/^\w/, (e) => e.toUpperCase());
|
|
1860
1860
|
}
|
|
1861
|
-
function
|
|
1861
|
+
function nt(e) {
|
|
1862
1862
|
if (typeof e != "string") return !1;
|
|
1863
1863
|
let t = Number(e);
|
|
1864
1864
|
return Number.isFinite(t) && t > 0;
|
|
1865
1865
|
}
|
|
1866
|
-
function
|
|
1866
|
+
function rt(e) {
|
|
1867
1867
|
let t = typeof e == "number" ? e : typeof e == "string" ? Number(e) : NaN;
|
|
1868
1868
|
return Number.isFinite(t) && t > 0;
|
|
1869
1869
|
}
|
|
1870
|
-
function
|
|
1870
|
+
function it(e) {
|
|
1871
1871
|
let t = typeof e == "number" ? e : Number(e), n = document.createElement("div");
|
|
1872
1872
|
n.className = "gengage-chat-comparison-recommended-rating", n.innerHTML = "<span class=\"gengage-chat-comparison-recommended-rating-icon\" aria-hidden=\"true\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 3.6l2.58 5.23 5.77.84-4.17 4.07.98 5.75L12 16.78l-5.16 2.71.99-5.75L3.66 9.67l5.76-.84L12 3.6z\"/></svg></span>";
|
|
1873
1873
|
let r = document.createElement("span");
|
|
1874
1874
|
return r.className = "gengage-chat-comparison-recommended-rating-value", r.textContent = t.toFixed(1), n.appendChild(r), n;
|
|
1875
1875
|
}
|
|
1876
|
-
function
|
|
1876
|
+
function at(e) {
|
|
1877
1877
|
let { recommended: t, products: n, attributes: r, highlights: i, specialCases: a, onProductClick: o, i18n: s } = e, c = document.createElement("div");
|
|
1878
1878
|
if (c.className = "gengage-chat-comparison", c.dataset.gengagePart = "comparison-dialog", c.setAttribute("role", "dialog"), c.setAttribute("aria-label", s?.comparisonHeading ?? "Comparison Results"), t) {
|
|
1879
1879
|
let n = document.createElement("article");
|
|
@@ -1898,9 +1898,9 @@ function ot(e) {
|
|
|
1898
1898
|
let d = document.createElement("div");
|
|
1899
1899
|
d.className = "gengage-chat-comparison-recommended-title", d.textContent = t.name, u.appendChild(d);
|
|
1900
1900
|
let f = document.createElement("div");
|
|
1901
|
-
if (f.className = "gengage-chat-comparison-recommended-meta",
|
|
1901
|
+
if (f.className = "gengage-chat-comparison-recommended-meta", rt(t.rating) && f.appendChild(it(t.rating)), nt(t.price)) {
|
|
1902
1902
|
let n = document.createElement("div");
|
|
1903
|
-
n.className = "gengage-chat-comparison-recommended-price", n.textContent =
|
|
1903
|
+
n.className = "gengage-chat-comparison-recommended-price", n.textContent = U(t.price, e.pricing), f.appendChild(n);
|
|
1904
1904
|
}
|
|
1905
1905
|
if (f.childElementCount > 0 && u.appendChild(f), e.recommendedText) {
|
|
1906
1906
|
let t = document.createElement("p");
|
|
@@ -1939,7 +1939,7 @@ function ot(e) {
|
|
|
1939
1939
|
let i = document.createElement("span");
|
|
1940
1940
|
i.className = "gengage-chat-comparison-key-differences-summary-meta", i.textContent = s?.viewMoreLabel ?? "Show More", n.appendChild(r), n.appendChild(i), t.appendChild(n);
|
|
1941
1941
|
let a = document.createElement("div");
|
|
1942
|
-
a.className = "gengage-chat-comparison-key-differences-content", a.innerHTML = C(
|
|
1942
|
+
a.className = "gengage-chat-comparison-key-differences-content", a.innerHTML = C(ot(e.keyDifferencesHtml)), t.appendChild(a), c.appendChild(t);
|
|
1943
1943
|
}
|
|
1944
1944
|
if (a && a.length > 0) {
|
|
1945
1945
|
let e = document.createElement("details");
|
|
@@ -1947,7 +1947,7 @@ function ot(e) {
|
|
|
1947
1947
|
let t = document.createElement("summary");
|
|
1948
1948
|
t.textContent = s?.specialCasesLabel ?? "For Special Cases", e.appendChild(t);
|
|
1949
1949
|
let n = document.createElement("ul");
|
|
1950
|
-
for (let e of a)
|
|
1950
|
+
for (let e of a) st(n, e);
|
|
1951
1951
|
n.childElementCount > 0 && e.appendChild(n), c.appendChild(e);
|
|
1952
1952
|
}
|
|
1953
1953
|
if (n.length > 0 && r.length > 0) {
|
|
@@ -1978,9 +1978,9 @@ function ot(e) {
|
|
|
1978
1978
|
e.className = "gengage-chat-comparison-table-header-img-placeholder", e.setAttribute("aria-hidden", "true"), i.appendChild(e);
|
|
1979
1979
|
}
|
|
1980
1980
|
let s = document.createElement("div");
|
|
1981
|
-
if (s.className = "gengage-chat-comparison-table-product-name", s.textContent = r.name, i.appendChild(s),
|
|
1981
|
+
if (s.className = "gengage-chat-comparison-table-product-name", s.textContent = r.name, i.appendChild(s), nt(r.price)) {
|
|
1982
1982
|
let t = document.createElement("div");
|
|
1983
|
-
t.className = "gengage-chat-comparison-table-price", t.textContent =
|
|
1983
|
+
t.className = "gengage-chat-comparison-table-price", t.textContent = U(r.price, e.pricing), i.appendChild(t);
|
|
1984
1984
|
}
|
|
1985
1985
|
n.appendChild(i), l.appendChild(n);
|
|
1986
1986
|
}
|
|
@@ -1988,7 +1988,7 @@ function ot(e) {
|
|
|
1988
1988
|
let d = document.createElement("tbody");
|
|
1989
1989
|
for (let e of r) {
|
|
1990
1990
|
let r = document.createElement("tr"), i = document.createElement("td");
|
|
1991
|
-
i.className = "gengage-chat-comparison-label", i.textContent =
|
|
1991
|
+
i.className = "gengage-chat-comparison-label", i.textContent = tt(e.label, s?.criteriaLabels), r.appendChild(i);
|
|
1992
1992
|
for (let i = 0; i < e.values.length; i++) {
|
|
1993
1993
|
let a = document.createElement("td");
|
|
1994
1994
|
n[i]?.sku === t?.sku && (a.className = "gengage-chat-comparison-selected gds-comparison-table-winner-cell"), a.textContent = e.values[i] ?? "", r.appendChild(a);
|
|
@@ -2007,12 +2007,12 @@ function ot(e) {
|
|
|
2007
2007
|
e.shiftKey && document.activeElement === n ? (e.preventDefault(), r.focus()) : !e.shiftKey && document.activeElement === r && (e.preventDefault(), n.focus());
|
|
2008
2008
|
}), c;
|
|
2009
2009
|
}
|
|
2010
|
-
function
|
|
2010
|
+
function ot(e) {
|
|
2011
2011
|
if (/<[uo]l[\s>]/i.test(e) || /<li[\s>]/i.test(e)) return e;
|
|
2012
2012
|
let t = e.split("\n").filter((e) => e.trim());
|
|
2013
2013
|
return t.length <= 1 ? e : "<ul>" + t.map((e) => `<li>${e.trim()}</li>`).join("") + "</ul>";
|
|
2014
2014
|
}
|
|
2015
|
-
function
|
|
2015
|
+
function st(e, t) {
|
|
2016
2016
|
let n = C(t);
|
|
2017
2017
|
if (!n) return;
|
|
2018
2018
|
let r = document.createElement("template");
|
|
@@ -2026,14 +2026,14 @@ function ct(e, t) {
|
|
|
2026
2026
|
return;
|
|
2027
2027
|
}
|
|
2028
2028
|
let a = document.createElement("li");
|
|
2029
|
-
|
|
2029
|
+
ct(t) ? a.innerHTML = n : a.textContent = t, e.appendChild(a);
|
|
2030
2030
|
}
|
|
2031
|
-
function
|
|
2031
|
+
function ct(e) {
|
|
2032
2032
|
return /<\/?[a-z][\s\S]*>/i.test(e);
|
|
2033
2033
|
}
|
|
2034
2034
|
//#endregion
|
|
2035
2035
|
//#region src/chat/utils/ui.ts
|
|
2036
|
-
function
|
|
2036
|
+
function lt(e, t = 18) {
|
|
2037
2037
|
let n = "http://www.w3.org/2000/svg", r = document.createElementNS(n, "svg");
|
|
2038
2038
|
r.setAttribute("width", String(t)), r.setAttribute("height", String(t)), r.setAttribute("viewBox", "0 0 24 24"), r.setAttribute("fill", "none"), r.setAttribute("stroke", "currentColor"), r.setAttribute("stroke-width", "2"), r.setAttribute("stroke-linecap", "round"), r.setAttribute("stroke-linejoin", "round"), r.setAttribute("aria-hidden", "true");
|
|
2039
2039
|
for (let t of e) {
|
|
@@ -2044,30 +2044,30 @@ function ut(e, t = 18) {
|
|
|
2044
2044
|
}
|
|
2045
2045
|
//#endregion
|
|
2046
2046
|
//#region src/chat/components/ReviewHighlights.ts
|
|
2047
|
-
var
|
|
2048
|
-
function
|
|
2049
|
-
if (typeof e != "string") return [
|
|
2047
|
+
var ut = "General", dt = 220, ft = 6;
|
|
2048
|
+
function pt(e) {
|
|
2049
|
+
if (typeof e != "string") return [ut];
|
|
2050
2050
|
let t = e.split(/[,;|/]+/).map((e) => e.trim().replace(/\s+/g, " ")).filter((e) => e.length > 0);
|
|
2051
|
-
return t.length === 0 ? [
|
|
2051
|
+
return t.length === 0 ? [ut] : Array.from(new Set(t.map((e) => e.toLocaleLowerCase()))).map((e) => t.find((t) => t.toLocaleLowerCase() === e) ?? ut);
|
|
2052
2052
|
}
|
|
2053
|
-
function
|
|
2053
|
+
function mt(e) {
|
|
2054
2054
|
return e === "positive" || e === "negative" || e === "neutral" ? e : "neutral";
|
|
2055
2055
|
}
|
|
2056
|
-
function
|
|
2056
|
+
function ht(e) {
|
|
2057
2057
|
if (typeof e != "string") return "";
|
|
2058
2058
|
let t = e.trim().replace(/\s+/g, " ");
|
|
2059
|
-
return t.length <=
|
|
2059
|
+
return t.length <= dt ? t : `${t.slice(0, dt - 3).trimEnd()}...`;
|
|
2060
2060
|
}
|
|
2061
|
-
function
|
|
2061
|
+
function gt(e) {
|
|
2062
2062
|
return e.positive > e.negative ? "positive" : e.negative > e.positive ? "negative" : "neutral";
|
|
2063
2063
|
}
|
|
2064
|
-
function
|
|
2065
|
-
return
|
|
2064
|
+
function _t(e) {
|
|
2065
|
+
return lt(e === "positive" ? ["M7 17 17 7", "M7 7h10v10"] : e === "negative" ? ["M7 7 17 17", "M17 7v10H7"] : ["M5 12h14"], 14);
|
|
2066
2066
|
}
|
|
2067
|
-
function
|
|
2067
|
+
function vt(e, t = "1 customer mentions", n = "customers mention") {
|
|
2068
2068
|
return e === 1 ? t : `${e} ${n}`;
|
|
2069
2069
|
}
|
|
2070
|
-
function
|
|
2070
|
+
function yt(e, t) {
|
|
2071
2071
|
let n = document.createElement("div");
|
|
2072
2072
|
n.className = "gengage-chat-review-highlights";
|
|
2073
2073
|
let r = e.props?.reviews;
|
|
@@ -2077,7 +2077,7 @@ function bt(e, t) {
|
|
|
2077
2077
|
}
|
|
2078
2078
|
let i = r.filter((e) => typeof e == "object" && !!e), a = /* @__PURE__ */ new Map();
|
|
2079
2079
|
for (let e of i) {
|
|
2080
|
-
let t =
|
|
2080
|
+
let t = mt(e.review_class), n = ht(e.review_text), r = pt(e.review_tag);
|
|
2081
2081
|
for (let i of r) {
|
|
2082
2082
|
let r = i.toLocaleLowerCase(), o = a.get(r);
|
|
2083
2083
|
if (o || (o = {
|
|
@@ -2088,7 +2088,7 @@ function bt(e, t) {
|
|
|
2088
2088
|
negative: 0,
|
|
2089
2089
|
neutral: 0,
|
|
2090
2090
|
snippets: []
|
|
2091
|
-
}, a.set(r, o)), o.mentions += 1, t === "positive" ? o.positive += 1 : t === "negative" ? o.negative += 1 : o.neutral += 1, n.length > 0 && o.snippets.length <
|
|
2091
|
+
}, a.set(r, o)), o.mentions += 1, t === "positive" ? o.positive += 1 : t === "negative" ? o.negative += 1 : o.neutral += 1, n.length > 0 && o.snippets.length < ft && !o.snippets.some((e) => e.text === n)) {
|
|
2092
2092
|
let r = {
|
|
2093
2093
|
text: n,
|
|
2094
2094
|
tone: t
|
|
@@ -2116,7 +2116,7 @@ function bt(e, t) {
|
|
|
2116
2116
|
let n = document.createElement("div");
|
|
2117
2117
|
n.className = "gengage-chat-review-detail-meta";
|
|
2118
2118
|
let r = document.createElement("span");
|
|
2119
|
-
if (r.className = "gengage-chat-review-detail-mentions", r.textContent = `${
|
|
2119
|
+
if (r.className = "gengage-chat-review-detail-mentions", r.textContent = `${vt(e.mentions, t?.reviewCustomersMentionSingular, t?.reviewCustomersMentionPlural)} "${e.label}"`, n.appendChild(r), e.positive > 0) {
|
|
2120
2120
|
let t = document.createElement("span");
|
|
2121
2121
|
t.className = "gengage-chat-review-detail-positive", t.textContent = `${e.positive} ${s}`, n.appendChild(t);
|
|
2122
2122
|
}
|
|
@@ -2145,10 +2145,10 @@ function bt(e, t) {
|
|
|
2145
2145
|
}
|
|
2146
2146
|
};
|
|
2147
2147
|
for (let e of o) {
|
|
2148
|
-
let t =
|
|
2148
|
+
let t = gt(e), n = document.createElement("button");
|
|
2149
2149
|
n.type = "button", n.className = "gengage-chat-review-subject gds-chip", n.dataset.subjectKey = e.key, n.dataset.tone = t;
|
|
2150
2150
|
let r = document.createElement("span");
|
|
2151
|
-
r.className = "gengage-chat-review-subject-icon", r.appendChild(
|
|
2151
|
+
r.className = "gengage-chat-review-subject-icon", r.appendChild(_t(t)), n.appendChild(r);
|
|
2152
2152
|
let i = document.createElement("span");
|
|
2153
2153
|
i.className = "gengage-chat-review-subject-label", i.textContent = e.label, n.appendChild(i);
|
|
2154
2154
|
let a = document.createElement("span");
|
|
@@ -2159,24 +2159,80 @@ function bt(e, t) {
|
|
|
2159
2159
|
return n.appendChild(d), m(), p(), n.appendChild(f), n;
|
|
2160
2160
|
}
|
|
2161
2161
|
//#endregion
|
|
2162
|
+
//#region src/chat/components/product-price-layout.ts
|
|
2163
|
+
function bt(e) {
|
|
2164
|
+
if (!e) return;
|
|
2165
|
+
let t = e.discountReason ?? e.discount_reason ?? e.campaignReason ?? e.campaign_reason;
|
|
2166
|
+
if (typeof t != "string") return;
|
|
2167
|
+
let n = t.trim();
|
|
2168
|
+
return n.length > 0 ? n : void 0;
|
|
2169
|
+
}
|
|
2170
|
+
function xt(e, t) {
|
|
2171
|
+
if (e.productPriceUi?.showCampaignReason === !0) return bt(t);
|
|
2172
|
+
}
|
|
2173
|
+
function St(e, t) {
|
|
2174
|
+
let n = t?.originalPriceStyle ?? t?.price_original_style;
|
|
2175
|
+
if (n === "inline" || n === "strikethrough") return n;
|
|
2176
|
+
let r = e.productPriceUi?.originalPriceStyle;
|
|
2177
|
+
return r === "inline" || r === "strikethrough" ? r : "strikethrough";
|
|
2178
|
+
}
|
|
2179
|
+
function Ct(e) {
|
|
2180
|
+
let t = document.createElement("div");
|
|
2181
|
+
return t.className = "gengage-chat-campaign-reason", t.textContent = e, t;
|
|
2182
|
+
}
|
|
2183
|
+
function wt(e, t) {
|
|
2184
|
+
for (let e of [
|
|
2185
|
+
"campaignReasonLogoUrl",
|
|
2186
|
+
"campaign_reason_logo_url",
|
|
2187
|
+
"discountBadgeLogoUrl",
|
|
2188
|
+
"discount_badge_logo_url"
|
|
2189
|
+
]) {
|
|
2190
|
+
let n = t?.[e];
|
|
2191
|
+
if (typeof n == "string" && n.trim()) {
|
|
2192
|
+
let e = n.trim();
|
|
2193
|
+
if (x(e)) return e;
|
|
2194
|
+
}
|
|
2195
|
+
}
|
|
2196
|
+
let n = e.productPriceUi?.campaignBadgeLogoUrl;
|
|
2197
|
+
if (typeof n == "string" && n.trim()) {
|
|
2198
|
+
let e = n.trim();
|
|
2199
|
+
if (x(e)) return e;
|
|
2200
|
+
}
|
|
2201
|
+
}
|
|
2202
|
+
function Tt(e) {
|
|
2203
|
+
let t = document.createElement("div");
|
|
2204
|
+
if (t.className = "gengage-chat-campaign-price-badge", t.dataset.gengagePart = "campaign-price-badge", e.logoUrl) {
|
|
2205
|
+
let n = document.createElement("div");
|
|
2206
|
+
n.className = "gengage-chat-campaign-price-badge__logo";
|
|
2207
|
+
let r = document.createElement("img");
|
|
2208
|
+
r.alt = "", r.loading = "lazy", r.src = e.logoUrl, W(r), n.appendChild(r), t.appendChild(n);
|
|
2209
|
+
}
|
|
2210
|
+
let n = document.createElement("div");
|
|
2211
|
+
n.className = "gengage-chat-campaign-price-badge__body";
|
|
2212
|
+
let r = document.createElement("div");
|
|
2213
|
+
r.className = "gengage-chat-campaign-price-badge__reason", r.textContent = e.reasonText;
|
|
2214
|
+
let i = document.createElement("span");
|
|
2215
|
+
return i.className = "gengage-chat-campaign-price-badge__sale", i.textContent = e.salePriceFormatted, n.appendChild(r), n.appendChild(i), t.appendChild(n), t;
|
|
2216
|
+
}
|
|
2217
|
+
//#endregion
|
|
2162
2218
|
//#region src/chat/components/AITopPicks.ts
|
|
2163
|
-
function
|
|
2219
|
+
function Et(e) {
|
|
2164
2220
|
let t = e.product.sku;
|
|
2165
2221
|
if (typeof t == "string" && t.length > 0) return t;
|
|
2166
2222
|
let n = e.action?.payload;
|
|
2167
2223
|
return n && typeof n == "object" && "sku" in n && typeof n.sku == "string" ? n.sku : null;
|
|
2168
2224
|
}
|
|
2169
|
-
var
|
|
2225
|
+
var Dt = {
|
|
2170
2226
|
winner: "roleWinner",
|
|
2171
2227
|
best_value: "roleBestValue",
|
|
2172
2228
|
best_alternative: "roleBestAlternative"
|
|
2173
2229
|
};
|
|
2174
|
-
function
|
|
2230
|
+
function Ot(e, t) {
|
|
2175
2231
|
if (!e || !t) return null;
|
|
2176
|
-
let n =
|
|
2232
|
+
let n = Dt[e];
|
|
2177
2233
|
return n ? t[n] ?? e : e;
|
|
2178
2234
|
}
|
|
2179
|
-
function
|
|
2235
|
+
function kt(e) {
|
|
2180
2236
|
let t = e.rating, n = typeof t == "number" ? t : typeof t == "string" ? parseFloat(t) : NaN;
|
|
2181
2237
|
if (Number.isNaN(n) || n <= 0) return null;
|
|
2182
2238
|
let r = document.createElement("div");
|
|
@@ -2186,15 +2242,15 @@ function wt(e) {
|
|
|
2186
2242
|
let a = document.createElement("span");
|
|
2187
2243
|
return a.className = "gengage-chat-ai-toppick-rating-value", a.textContent = n.toFixed(1), r.appendChild(i), r.appendChild(a), r;
|
|
2188
2244
|
}
|
|
2189
|
-
function
|
|
2245
|
+
function At(e, t, n, r, i) {
|
|
2190
2246
|
let a = document.createElement("div");
|
|
2191
2247
|
a.className = "gengage-chat-ai-toppick-media", a.dataset.gengagePart = "ai-top-pick-media";
|
|
2192
2248
|
let o = e.product, s = o.imageUrl;
|
|
2193
2249
|
if (s && x(s)) {
|
|
2194
2250
|
let e = document.createElement("img");
|
|
2195
|
-
e.className = "gengage-chat-ai-toppick-img", e.dataset.gengagePart = "ai-top-pick-image", h(e, "src", s), e.loading = "lazy", e.alt = t,
|
|
2251
|
+
e.className = "gengage-chat-ai-toppick-img", e.dataset.gengagePart = "ai-top-pick-image", h(e, "src", s), e.loading = "lazy", e.alt = t, W(e), a.appendChild(e);
|
|
2196
2252
|
}
|
|
2197
|
-
let c =
|
|
2253
|
+
let c = Et(e);
|
|
2198
2254
|
if (c && !i?.skipOverlayActions) {
|
|
2199
2255
|
let e = document.createElement("div");
|
|
2200
2256
|
if (e.className = "gengage-chat-product-card-img-actions", r.onFavoriteToggle) {
|
|
@@ -2221,18 +2277,52 @@ function Tt(e, t, n, r, i) {
|
|
|
2221
2277
|
}
|
|
2222
2278
|
n.appendChild(a);
|
|
2223
2279
|
}
|
|
2224
|
-
function
|
|
2280
|
+
function jt(e, t, n) {
|
|
2225
2281
|
let r = e.price, i = e.originalPrice;
|
|
2226
2282
|
if (!r) return;
|
|
2227
|
-
let a = document.createElement("div");
|
|
2228
|
-
if (
|
|
2283
|
+
let a = xt(n, e), o = St(n, e), s = !!(i && i !== r), c = !!(a && s), l = wt(n, e), u = document.createElement("div");
|
|
2284
|
+
if (u.className = "gengage-chat-ai-toppick-price", u.dataset.gengagePart = "ai-top-pick-price", c) {
|
|
2285
|
+
let e = Tt({
|
|
2286
|
+
reasonText: a,
|
|
2287
|
+
salePriceFormatted: U(r, n.pricing),
|
|
2288
|
+
...l === void 0 ? {} : { logoUrl: l }
|
|
2289
|
+
});
|
|
2290
|
+
if (s && o === "inline") {
|
|
2291
|
+
u.classList.add("gengage-chat-ai-toppick-price--inline"), u.appendChild(e);
|
|
2292
|
+
let t = document.createElement("span");
|
|
2293
|
+
t.className = "gengage-chat-ai-toppick-price-sep", t.setAttribute("aria-hidden", "true");
|
|
2294
|
+
let r = document.createElement("span");
|
|
2295
|
+
r.className = "gengage-chat-ai-toppick-original-price", r.textContent = U(i, n.pricing), u.appendChild(t), u.appendChild(r);
|
|
2296
|
+
} else {
|
|
2297
|
+
let t = document.createElement("span");
|
|
2298
|
+
t.className = "gengage-chat-ai-toppick-original-price", t.textContent = U(i, n.pricing), u.appendChild(t), u.appendChild(document.createTextNode(" ")), u.appendChild(e);
|
|
2299
|
+
}
|
|
2300
|
+
t.appendChild(u);
|
|
2301
|
+
return;
|
|
2302
|
+
}
|
|
2303
|
+
if (s && o === "inline") {
|
|
2304
|
+
u.classList.add("gengage-chat-ai-toppick-price--inline");
|
|
2229
2305
|
let e = document.createElement("span");
|
|
2230
|
-
e.className = "gengage-chat-ai-toppick-
|
|
2306
|
+
e.className = "gengage-chat-ai-toppick-price-current", e.textContent = U(r, n.pricing);
|
|
2307
|
+
let t = document.createElement("span");
|
|
2308
|
+
t.className = "gengage-chat-ai-toppick-price-sep", t.setAttribute("aria-hidden", "true");
|
|
2309
|
+
let a = document.createElement("span");
|
|
2310
|
+
a.className = "gengage-chat-ai-toppick-original-price", a.textContent = U(i, n.pricing), u.appendChild(e), u.appendChild(t), u.appendChild(a);
|
|
2311
|
+
} else if (s) {
|
|
2312
|
+
let e = document.createElement("span");
|
|
2313
|
+
e.className = "gengage-chat-ai-toppick-original-price", e.textContent = U(i, n.pricing), u.appendChild(e), u.appendChild(document.createTextNode(" "));
|
|
2314
|
+
let t = document.createElement("span");
|
|
2315
|
+
t.className = "gengage-chat-ai-toppick-price-current", t.textContent = U(r, n.pricing), u.appendChild(t);
|
|
2316
|
+
} else {
|
|
2317
|
+
let e = document.createElement("span");
|
|
2318
|
+
e.className = "gengage-chat-ai-toppick-price-current", e.textContent = U(r, n.pricing), u.appendChild(e);
|
|
2231
2319
|
}
|
|
2232
|
-
|
|
2233
|
-
|
|
2320
|
+
if (a) {
|
|
2321
|
+
let e = document.createElement("div");
|
|
2322
|
+
e.className = "gengage-chat-ai-toppick-price-stack", e.appendChild(Ct(a)), e.appendChild(u), t.appendChild(e);
|
|
2323
|
+
} else t.appendChild(u);
|
|
2234
2324
|
}
|
|
2235
|
-
function
|
|
2325
|
+
function Mt(e, t) {
|
|
2236
2326
|
let n = typeof e.reason == "string" ? e.reason.trim() : "", r = typeof e.reviewHighlight == "string" ? e.reviewHighlight.trim() : "";
|
|
2237
2327
|
if (!(!n && !r)) {
|
|
2238
2328
|
if (n) {
|
|
@@ -2245,10 +2335,10 @@ function Dt(e, t) {
|
|
|
2245
2335
|
}
|
|
2246
2336
|
}
|
|
2247
2337
|
}
|
|
2248
|
-
function
|
|
2338
|
+
function Nt(e, t, n) {
|
|
2249
2339
|
let r = document.createElement("div");
|
|
2250
2340
|
r.className = n ? "gengage-chat-ai-toppick-card gengage-chat-ai-toppick-card--winner gds-card" : "gengage-chat-ai-toppick-card gengage-chat-ai-toppick-card--compact gds-card", r.dataset.gengagePart = n ? "ai-top-pick-card-winner" : "ai-top-pick-card";
|
|
2251
|
-
let i = e.product, a =
|
|
2341
|
+
let i = e.product, a = Et(e), o = i.url ?? "", s = i.cartCode, c = i.inStock, l = !!(a && s && c !== !1), u = e.action;
|
|
2252
2342
|
a && t.onProductClick ? (r.classList.add("gds-clickable"), r.addEventListener("click", (e) => {
|
|
2253
2343
|
e.target.closest(".gengage-chat-ai-toppick-cta") || e.target.closest(".gengage-chat-favorite-btn") || e.target.closest(".gengage-chat-find-similar-pill") || t.onProductClick?.({
|
|
2254
2344
|
sku: a,
|
|
@@ -2257,13 +2347,13 @@ function Ot(e, t, n) {
|
|
|
2257
2347
|
})) : u && (r.classList.add("gds-clickable"), r.addEventListener("click", (e) => {
|
|
2258
2348
|
e.target.closest(".gengage-chat-ai-toppick-cta") || e.target.closest(".gengage-chat-favorite-btn") || e.target.closest(".gengage-chat-find-similar-pill") || t.onAction(u);
|
|
2259
2349
|
}));
|
|
2260
|
-
let d = i.name || "Product image", f = !n && t.isMobile === !0, p = n ?
|
|
2350
|
+
let d = i.name || "Product image", f = !n && t.isMobile === !0, p = n ? Ot(e.role, t.i18n) ?? t.i18n?.roleWinner ?? "TOP MATCH" : Ot(e.role, t.i18n);
|
|
2261
2351
|
if (p && !f) {
|
|
2262
2352
|
let e = document.createElement("span");
|
|
2263
2353
|
e.className = "gengage-chat-ai-toppick-badge gds-badge", e.dataset.gengagePart = "ai-top-pick-role-badge", e.textContent = p, r.appendChild(e);
|
|
2264
2354
|
}
|
|
2265
2355
|
let m = document.createElement("div");
|
|
2266
|
-
m.className = "gengage-chat-ai-toppick-top-row", m.dataset.gengagePart = "ai-top-pick-top-row",
|
|
2356
|
+
m.className = "gengage-chat-ai-toppick-top-row", m.dataset.gengagePart = "ai-top-pick-top-row", At(e, d, m, t, { skipOverlayActions: f });
|
|
2267
2357
|
let h = document.createElement("div");
|
|
2268
2358
|
if (h.className = "gengage-chat-ai-toppick-body", h.dataset.gengagePart = "ai-top-pick-body", p && f) {
|
|
2269
2359
|
let e = document.createElement("div");
|
|
@@ -2274,10 +2364,10 @@ function Ot(e, t, n) {
|
|
|
2274
2364
|
let e = document.createElement("div");
|
|
2275
2365
|
e.className = "gengage-chat-ai-toppick-name", e.dataset.gengagePart = "ai-top-pick-name", e.textContent = g, h.appendChild(e);
|
|
2276
2366
|
}
|
|
2277
|
-
let _ =
|
|
2278
|
-
_ && h.appendChild(_),
|
|
2367
|
+
let _ = kt(i);
|
|
2368
|
+
_ && h.appendChild(_), jt(i, h, t), e.labels && e.labels.length > 0 && h.appendChild(Ft(e.labels)), m.appendChild(h), r.appendChild(m);
|
|
2279
2369
|
let v = document.createElement("div");
|
|
2280
|
-
if (v.className = "gengage-chat-ai-toppick-detail", v.dataset.gengagePart = "ai-top-pick-detail", n)
|
|
2370
|
+
if (v.className = "gengage-chat-ai-toppick-detail", v.dataset.gengagePart = "ai-top-pick-detail", n) Mt(e, v);
|
|
2281
2371
|
else {
|
|
2282
2372
|
let t = typeof e.reason == "string" ? e.reason.trim() : "";
|
|
2283
2373
|
if (t) {
|
|
@@ -2319,7 +2409,7 @@ function Ot(e, t, n) {
|
|
|
2319
2409
|
}
|
|
2320
2410
|
return r;
|
|
2321
2411
|
}
|
|
2322
|
-
function
|
|
2412
|
+
function Pt(e, t) {
|
|
2323
2413
|
let n = document.createElement("div");
|
|
2324
2414
|
n.className = "gengage-chat-ai-top-picks", n.dataset.gengagePart = "ai-top-picks";
|
|
2325
2415
|
let r = e.props?.suggestions ?? [];
|
|
@@ -2329,18 +2419,18 @@ function kt(e, t) {
|
|
|
2329
2419
|
let a = document.createElement("div");
|
|
2330
2420
|
a.className = "gengage-chat-ai-top-picks-scroll", a.dataset.gengagePart = "ai-top-picks-scroll";
|
|
2331
2421
|
let o = r[0];
|
|
2332
|
-
if (a.appendChild(
|
|
2422
|
+
if (a.appendChild(Nt(o, t, !0)), r.length > 1) {
|
|
2333
2423
|
let e = document.createElement("div");
|
|
2334
2424
|
e.className = "gengage-chat-ai-top-picks-rest", e.dataset.gengagePart = "ai-top-picks-rest";
|
|
2335
2425
|
for (let n = 1; n < r.length; n++) {
|
|
2336
2426
|
let i = r[n], a = i.role === "winner";
|
|
2337
|
-
e.appendChild(
|
|
2427
|
+
e.appendChild(Nt(i, t, a));
|
|
2338
2428
|
}
|
|
2339
2429
|
a.appendChild(e);
|
|
2340
2430
|
}
|
|
2341
2431
|
return n.appendChild(a), n;
|
|
2342
2432
|
}
|
|
2343
|
-
function
|
|
2433
|
+
function Ft(e) {
|
|
2344
2434
|
let t = document.createElement("div");
|
|
2345
2435
|
t.className = "gengage-chat-ai-toppick-labels", t.dataset.gengagePart = "ai-top-pick-labels";
|
|
2346
2436
|
for (let n of e) {
|
|
@@ -2351,11 +2441,11 @@ function At(e) {
|
|
|
2351
2441
|
}
|
|
2352
2442
|
//#endregion
|
|
2353
2443
|
//#region src/chat/components/GroundingReviewCard.ts
|
|
2354
|
-
function
|
|
2444
|
+
function It(e, t) {
|
|
2355
2445
|
let n = document.createElement("div");
|
|
2356
2446
|
n.className = "gengage-chat-grounding-review gds-evidence-card", n.dataset.gengagePart = "grounding-review-card";
|
|
2357
2447
|
let r = e.props ?? {}, i = r.title, a = r.reviewCount, o = r.action, s = t.i18n?.groundingReviewCta ?? "Read Reviews", c = document.createElement("span");
|
|
2358
|
-
c.className = "gengage-chat-grounding-review-icon", c.appendChild(
|
|
2448
|
+
c.className = "gengage-chat-grounding-review-icon", c.appendChild(lt([
|
|
2359
2449
|
"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",
|
|
2360
2450
|
"M8 9h8",
|
|
2361
2451
|
"M8 13h6"
|
|
@@ -2373,13 +2463,13 @@ function jt(e, t) {
|
|
|
2373
2463
|
let f = document.createElement("span");
|
|
2374
2464
|
f.textContent = s, d.appendChild(f);
|
|
2375
2465
|
let p = document.createElement("span");
|
|
2376
|
-
return p.className = "gengage-chat-grounding-review-cta-icon", p.appendChild(
|
|
2466
|
+
return p.className = "gengage-chat-grounding-review-cta-icon", p.appendChild(lt(["M5 12h14", "M15 8l4 4-4 4"], 14)), d.appendChild(p), n.appendChild(d), o && (n.classList.add("gds-clickable"), n.setAttribute("role", "button"), n.setAttribute("tabindex", "0"), n.addEventListener("click", () => t.onAction(o)), n.addEventListener("keydown", (e) => {
|
|
2377
2467
|
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), t.onAction(o));
|
|
2378
2468
|
})), n;
|
|
2379
2469
|
}
|
|
2380
2470
|
//#endregion
|
|
2381
2471
|
//#region src/chat/components/AIGroupingCards.ts
|
|
2382
|
-
function
|
|
2472
|
+
function Lt(e) {
|
|
2383
2473
|
if (e.action.type !== "findSimilar") return e.action;
|
|
2384
2474
|
let t = e.action.payload && typeof e.action.payload == "object" ? e.action.payload : null, n = typeof t?.input == "string" && t.input.trim() || typeof t?.text == "string" && t.text.trim() || e.name.trim();
|
|
2385
2475
|
if (!n) return e.action;
|
|
@@ -2397,7 +2487,7 @@ function Mt(e) {
|
|
|
2397
2487
|
payload: r
|
|
2398
2488
|
};
|
|
2399
2489
|
}
|
|
2400
|
-
function
|
|
2490
|
+
function Rt(e, t) {
|
|
2401
2491
|
let n = document.createElement("div");
|
|
2402
2492
|
n.className = "gengage-chat-grouping-cards", n.dataset.gengagePart = "ai-grouping-cards";
|
|
2403
2493
|
let r = e.props?.entries ?? [];
|
|
@@ -2411,7 +2501,7 @@ function Nt(e, t) {
|
|
|
2411
2501
|
o.className = "gengage-chat-grouping-cards-scroll", o.dataset.gengagePart = "ai-grouping-cards-scroll";
|
|
2412
2502
|
for (let e of r) {
|
|
2413
2503
|
let n = document.createElement("div");
|
|
2414
|
-
if (n.className = "gengage-chat-grouping-card gds-card", n.dataset.gengagePart = "ai-grouping-card", n.classList.add("gds-clickable"), n.addEventListener("click", () => t.onAction(
|
|
2504
|
+
if (n.className = "gengage-chat-grouping-card gds-card", n.dataset.gengagePart = "ai-grouping-card", n.classList.add("gds-clickable"), n.addEventListener("click", () => t.onAction(Lt(e))), e.image && x(e.image)) {
|
|
2415
2505
|
let t = document.createElement("img");
|
|
2416
2506
|
t.className = "gengage-chat-grouping-card-img", t.dataset.gengagePart = "ai-grouping-card-image", t.src = e.image, t.alt = e.name, t.width = 64, t.height = 64, n.appendChild(t);
|
|
2417
2507
|
}
|
|
@@ -2435,7 +2525,7 @@ function Nt(e, t) {
|
|
|
2435
2525
|
}
|
|
2436
2526
|
//#endregion
|
|
2437
2527
|
//#region src/chat/components/AISuggestedSearchCards.ts
|
|
2438
|
-
function
|
|
2528
|
+
function zt(e, t) {
|
|
2439
2529
|
let n = document.createElement("div");
|
|
2440
2530
|
n.className = "gengage-chat-suggested-search-cards", n.dataset.gengagePart = "ai-suggested-search-cards";
|
|
2441
2531
|
let r = e.props?.entries ?? [];
|
|
@@ -2455,7 +2545,7 @@ function Pt(e, t) {
|
|
|
2455
2545
|
}
|
|
2456
2546
|
//#endregion
|
|
2457
2547
|
//#region src/chat/components/FloatingComparisonButton.ts
|
|
2458
|
-
function
|
|
2548
|
+
function Bt(e, t) {
|
|
2459
2549
|
let n = e.length >= 2, r = t.i18n?.compareSelected ?? "Compare", i = t.comparisonSelectionWarning, a = document.createElement("div");
|
|
2460
2550
|
a.className = "gengage-chat-comparison-floating-btn", a.dataset.gengagePart = "comparison-dock";
|
|
2461
2551
|
let o = document.createElement("div");
|
|
@@ -2487,7 +2577,7 @@ function Ft(e, t) {
|
|
|
2487
2577
|
}
|
|
2488
2578
|
//#endregion
|
|
2489
2579
|
//#region src/chat/components/ProsAndCons.ts
|
|
2490
|
-
function
|
|
2580
|
+
function Vt(e) {
|
|
2491
2581
|
let t = document.createElement("div");
|
|
2492
2582
|
t.className = "gengage-chat-pros-cons gds-card-soft", t.dataset.gengagePart = "pros-cons";
|
|
2493
2583
|
let n = e.props?.productName;
|
|
@@ -2526,7 +2616,7 @@ function It(e) {
|
|
|
2526
2616
|
}
|
|
2527
2617
|
//#endregion
|
|
2528
2618
|
//#region src/chat/components/CategoriesContainer.ts
|
|
2529
|
-
function
|
|
2619
|
+
function Ht(e, t) {
|
|
2530
2620
|
let n = e.props?.groups ?? [], r = e.props?.filterTags ?? [], i = document.createElement("div");
|
|
2531
2621
|
if (i.className = "gengage-chat-categories", i.dataset.gengagePart = "categories-container", n.length === 0) return i;
|
|
2532
2622
|
let a = document.createElement("div");
|
|
@@ -2546,7 +2636,7 @@ function Lt(e, t) {
|
|
|
2546
2636
|
let d = document.createElement("div");
|
|
2547
2637
|
d.className = "gengage-chat-categories-grid", d.dataset.gengagePart = "categories-panel", d.id = l, d.setAttribute("role", "tabpanel"), d.setAttribute("aria-labelledby", i), e !== 0 && (d.style.display = "none");
|
|
2548
2638
|
for (let e of r.products) {
|
|
2549
|
-
let n =
|
|
2639
|
+
let n = Ut(e, t);
|
|
2550
2640
|
d.appendChild(n);
|
|
2551
2641
|
}
|
|
2552
2642
|
s.push(d);
|
|
@@ -2566,18 +2656,18 @@ function Lt(e, t) {
|
|
|
2566
2656
|
}
|
|
2567
2657
|
return i;
|
|
2568
2658
|
}
|
|
2569
|
-
function
|
|
2659
|
+
function Ut(e, t) {
|
|
2570
2660
|
let n = document.createElement("div");
|
|
2571
2661
|
if (n.className = "gengage-chat-product-card gds-card gds-product-card gds-card-interactive", n.dataset.gengagePart = "categories-product-card", e.imageUrl && x(e.imageUrl)) {
|
|
2572
2662
|
let t = document.createElement("img");
|
|
2573
|
-
t.className = "gengage-chat-product-card-img", t.src = e.imageUrl, t.alt = e.name, t.loading = "lazy",
|
|
2663
|
+
t.className = "gengage-chat-product-card-img", t.src = e.imageUrl, t.alt = e.name, t.loading = "lazy", W(t), n.appendChild(t);
|
|
2574
2664
|
}
|
|
2575
2665
|
let r = document.createElement("div");
|
|
2576
2666
|
r.className = "gengage-chat-product-card-body";
|
|
2577
2667
|
let i = document.createElement("div");
|
|
2578
2668
|
if (i.className = "gengage-chat-product-card-name", i.textContent = e.name, r.appendChild(i), e.price) {
|
|
2579
2669
|
let n = document.createElement("div");
|
|
2580
|
-
n.className = "gengage-chat-product-card-price", n.textContent =
|
|
2670
|
+
n.className = "gengage-chat-product-card-price", n.textContent = U(e.price, t.pricing), r.appendChild(n);
|
|
2581
2671
|
}
|
|
2582
2672
|
return n.appendChild(r), (t.onProductSelect || t.onAction) && (n.classList.add("gds-clickable"), n.addEventListener("click", () => {
|
|
2583
2673
|
if (e.sku) {
|
|
@@ -2593,7 +2683,7 @@ function Rt(e, t) {
|
|
|
2593
2683
|
}
|
|
2594
2684
|
//#endregion
|
|
2595
2685
|
//#region src/chat/components/HandoffNotice.ts
|
|
2596
|
-
function
|
|
2686
|
+
function Wt(e, t) {
|
|
2597
2687
|
let n = document.createElement("div");
|
|
2598
2688
|
n.className = "gengage-chat-handoff-notice gds-evidence-card gds-evidence-card-warning", n.dataset.gengagePart = "handoff-notice", n.setAttribute("role", "alert");
|
|
2599
2689
|
let r = document.createElement("span");
|
|
@@ -2609,18 +2699,18 @@ function zt(e, t) {
|
|
|
2609
2699
|
}
|
|
2610
2700
|
//#endregion
|
|
2611
2701
|
//#region src/chat/components/ProductSummaryCard.ts
|
|
2612
|
-
function
|
|
2702
|
+
function Gt(e, t) {
|
|
2613
2703
|
let n = e.props?.product ?? e.props, r = document.createElement("div");
|
|
2614
2704
|
if (r.className = "gengage-chat-product-summary gds-card", r.dataset.gengagePart = "product-summary-card", !n) return r;
|
|
2615
2705
|
r.classList.add("gds-clickable"), r.addEventListener("click", (e) => {
|
|
2616
2706
|
e.target.closest("a") || t.onProductSelect?.(n);
|
|
2617
2707
|
});
|
|
2618
2708
|
let i = n.imageUrl;
|
|
2619
|
-
if (i &&
|
|
2709
|
+
if (i && H(i)) {
|
|
2620
2710
|
let e = document.createElement("div");
|
|
2621
2711
|
e.className = "gengage-chat-product-summary__image", e.dataset.gengagePart = "product-summary-image";
|
|
2622
2712
|
let t = document.createElement("img");
|
|
2623
|
-
t.loading = "lazy", h(t, "src", i), t.alt = n.name || "Product image",
|
|
2713
|
+
t.loading = "lazy", h(t, "src", i), t.alt = n.name || "Product image", W(t), e.appendChild(t), r.appendChild(e);
|
|
2624
2714
|
}
|
|
2625
2715
|
let a = document.createElement("div");
|
|
2626
2716
|
a.className = "gengage-chat-product-summary__content", a.dataset.gengagePart = "product-summary-content";
|
|
@@ -2634,7 +2724,7 @@ function Bt(e, t) {
|
|
|
2634
2724
|
let c = n.rating, l = n.reviewCount;
|
|
2635
2725
|
if (typeof c == "number" && Number.isFinite(c) && c > 0) {
|
|
2636
2726
|
let e = document.createElement("div");
|
|
2637
|
-
if (e.className = "gengage-chat-product-summary__rating", e.dataset.gengagePart = "product-summary-rating", e.appendChild(
|
|
2727
|
+
if (e.className = "gengage-chat-product-summary__rating", e.dataset.gengagePart = "product-summary-rating", e.appendChild(ae(c)), typeof l == "number" && Number.isFinite(l)) {
|
|
2638
2728
|
let t = document.createElement("span");
|
|
2639
2729
|
t.className = "gengage-chat-product-summary__review-count", t.textContent = ` (${l})`, e.appendChild(t);
|
|
2640
2730
|
}
|
|
@@ -2642,17 +2732,53 @@ function Bt(e, t) {
|
|
|
2642
2732
|
}
|
|
2643
2733
|
let u = n.price, d = n.originalPrice;
|
|
2644
2734
|
if (u) {
|
|
2645
|
-
let e = document.createElement("div");
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2735
|
+
let e = xt(t, n), r = St(t, n), i = !!(d && d !== u), o = document.createElement("div");
|
|
2736
|
+
o.className = "gengage-chat-product-summary__price", o.dataset.gengagePart = "product-summary-price";
|
|
2737
|
+
let s = !!(e && i), c = wt(t, n);
|
|
2738
|
+
if (s) {
|
|
2739
|
+
let n = Tt({
|
|
2740
|
+
reasonText: e,
|
|
2741
|
+
salePriceFormatted: U(u, t.pricing),
|
|
2742
|
+
...c === void 0 ? {} : { logoUrl: c }
|
|
2743
|
+
});
|
|
2744
|
+
if (i && r === "inline") {
|
|
2745
|
+
o.classList.add("gengage-chat-product-summary__price--inline"), o.appendChild(n);
|
|
2746
|
+
let e = document.createElement("span");
|
|
2747
|
+
e.className = "gengage-chat-product-summary__price-sep", e.setAttribute("aria-hidden", "true");
|
|
2748
|
+
let r = document.createElement("span");
|
|
2749
|
+
r.className = "gengage-chat-product-summary__price-original", r.textContent = U(d, t.pricing), o.appendChild(e), o.appendChild(r);
|
|
2750
|
+
} else {
|
|
2751
|
+
let e = document.createElement("span");
|
|
2752
|
+
e.className = "gengage-chat-product-summary__price-original", e.textContent = U(d, t.pricing), o.appendChild(e), o.appendChild(document.createTextNode(" ")), o.appendChild(n);
|
|
2753
|
+
}
|
|
2754
|
+
a.appendChild(o);
|
|
2755
|
+
} else {
|
|
2756
|
+
if (i && r === "inline") {
|
|
2757
|
+
o.classList.add("gengage-chat-product-summary__price--inline");
|
|
2758
|
+
let e = document.createElement("span");
|
|
2759
|
+
e.className = "gengage-chat-product-summary__price-current", e.textContent = U(u, t.pricing);
|
|
2760
|
+
let n = document.createElement("span");
|
|
2761
|
+
n.className = "gengage-chat-product-summary__price-sep", n.setAttribute("aria-hidden", "true");
|
|
2762
|
+
let r = document.createElement("span");
|
|
2763
|
+
r.className = "gengage-chat-product-summary__price-original", r.textContent = U(d, t.pricing), o.appendChild(e), o.appendChild(n), o.appendChild(r);
|
|
2764
|
+
} else if (i) {
|
|
2765
|
+
let e = document.createElement("span");
|
|
2766
|
+
e.className = "gengage-chat-product-summary__price-original", e.textContent = U(d, t.pricing), o.appendChild(e), o.appendChild(document.createTextNode(" "));
|
|
2767
|
+
let n = document.createElement("span");
|
|
2768
|
+
n.className = "gengage-chat-product-summary__price-current", n.textContent = U(u, t.pricing), o.appendChild(n);
|
|
2769
|
+
} else {
|
|
2770
|
+
let e = document.createElement("span");
|
|
2771
|
+
e.className = "gengage-chat-product-summary__price-current", e.textContent = U(u, t.pricing), o.appendChild(e);
|
|
2772
|
+
}
|
|
2773
|
+
if (e) {
|
|
2774
|
+
let t = document.createElement("div");
|
|
2775
|
+
t.className = "gengage-chat-product-summary__price-stack", t.appendChild(Ct(e)), t.appendChild(o), a.appendChild(t);
|
|
2776
|
+
} else a.appendChild(o);
|
|
2649
2777
|
}
|
|
2650
|
-
let n = document.createElement("span");
|
|
2651
|
-
n.className = "gengage-chat-product-summary__price-current", n.textContent = H(u, t.pricing), e.appendChild(n), a.appendChild(e);
|
|
2652
2778
|
}
|
|
2653
2779
|
r.appendChild(a);
|
|
2654
2780
|
let f = n.url;
|
|
2655
|
-
if (f &&
|
|
2781
|
+
if (f && H(f)) {
|
|
2656
2782
|
let e = document.createElement("a");
|
|
2657
2783
|
e.className = "gengage-chat-product-summary__cta gds-chip gds-chip-active", e.dataset.gengagePart = "product-summary-cta", h(e, "href", f), h(e, "target", "_blank"), h(e, "rel", "noopener noreferrer"), e.textContent = t.i18n?.productCtaLabel ?? "View", r.appendChild(e);
|
|
2658
2784
|
}
|
|
@@ -2660,16 +2786,16 @@ function Bt(e, t) {
|
|
|
2660
2786
|
}
|
|
2661
2787
|
//#endregion
|
|
2662
2788
|
//#region src/chat/components/renderUISpec.ts
|
|
2663
|
-
function
|
|
2789
|
+
function Kt() {
|
|
2664
2790
|
return window.innerWidth < 768;
|
|
2665
2791
|
}
|
|
2666
|
-
var
|
|
2667
|
-
ActionButtons: ({ element: e, context: t }) =>
|
|
2668
|
-
ActionButton: ({ element: e, context: t }) =>
|
|
2669
|
-
ProductCard: ({ element: e, context: t }) =>
|
|
2670
|
-
ProductDetailsPanel: ({ element: e, context: t }) =>
|
|
2671
|
-
ProductGrid: ({ element: e, spec: t, renderElement: n, context: r }) =>
|
|
2672
|
-
ReviewHighlights: ({ element: e, context: t }) =>
|
|
2792
|
+
var qt = {
|
|
2793
|
+
ActionButtons: ({ element: e, context: t }) => Zt(e, t),
|
|
2794
|
+
ActionButton: ({ element: e, context: t }) => Qt(e, t),
|
|
2795
|
+
ProductCard: ({ element: e, context: t }) => tn(e, t),
|
|
2796
|
+
ProductDetailsPanel: ({ element: e, context: t }) => Mn(e, t),
|
|
2797
|
+
ProductGrid: ({ element: e, spec: t, renderElement: n, context: r }) => Wn(e, t, n, r),
|
|
2798
|
+
ReviewHighlights: ({ element: e, context: t }) => yt(e, {
|
|
2673
2799
|
emptyReviewsMessage: t.i18n?.emptyReviewsMessage,
|
|
2674
2800
|
reviewFilterPositive: t.i18n?.reviewFilterPositive,
|
|
2675
2801
|
reviewFilterNegative: t.i18n?.reviewFilterNegative,
|
|
@@ -2677,17 +2803,17 @@ var Ht = {
|
|
|
2677
2803
|
reviewCustomersMentionPlural: t.i18n?.reviewCustomersMentionPlural,
|
|
2678
2804
|
reviewSubjectsHeading: t.i18n?.reviewSubjectsHeading
|
|
2679
2805
|
}),
|
|
2680
|
-
ComparisonTable: ({ element: e, context: t }) =>
|
|
2681
|
-
AITopPicks: ({ element: e, context: t }) =>
|
|
2682
|
-
GroundingReviewCard: ({ element: e, context: t }) =>
|
|
2683
|
-
AIGroupingCards: ({ element: e, context: t }) =>
|
|
2684
|
-
AISuggestedSearchCards: ({ element: e, context: t }) =>
|
|
2685
|
-
ProsAndCons: ({ element: e }) =>
|
|
2686
|
-
CategoriesContainer: ({ element: e, context: t }) =>
|
|
2687
|
-
HandoffNotice: ({ element: e, context: t }) =>
|
|
2688
|
-
ProductSummaryCard: ({ element: e, context: t }) =>
|
|
2689
|
-
Divider: ({ element: e }) =>
|
|
2690
|
-
},
|
|
2806
|
+
ComparisonTable: ({ element: e, context: t }) => Gn(e, t),
|
|
2807
|
+
AITopPicks: ({ element: e, context: t }) => Pt(e, t),
|
|
2808
|
+
GroundingReviewCard: ({ element: e, context: t }) => It(e, t),
|
|
2809
|
+
AIGroupingCards: ({ element: e, context: t }) => Rt(e, t),
|
|
2810
|
+
AISuggestedSearchCards: ({ element: e, context: t }) => zt(e, t),
|
|
2811
|
+
ProsAndCons: ({ element: e }) => Vt(e),
|
|
2812
|
+
CategoriesContainer: ({ element: e, context: t }) => Ht(e, t),
|
|
2813
|
+
HandoffNotice: ({ element: e, context: t }) => Wt(e, t),
|
|
2814
|
+
ProductSummaryCard: ({ element: e, context: t }) => Gt(e, t),
|
|
2815
|
+
Divider: ({ element: e }) => Kn(e)
|
|
2816
|
+
}, Jt = ({ element: e, renderElement: t }) => {
|
|
2691
2817
|
if (!e.children || e.children.length === 0) return null;
|
|
2692
2818
|
let n = document.createElement("div");
|
|
2693
2819
|
for (let r of e.children) {
|
|
@@ -2696,10 +2822,10 @@ var Ht = {
|
|
|
2696
2822
|
}
|
|
2697
2823
|
return n;
|
|
2698
2824
|
};
|
|
2699
|
-
function
|
|
2700
|
-
return { ...
|
|
2825
|
+
function Yt() {
|
|
2826
|
+
return { ...qt };
|
|
2701
2827
|
}
|
|
2702
|
-
function
|
|
2828
|
+
function Xt(t, n, r = qt, i = Jt) {
|
|
2703
2829
|
return e({
|
|
2704
2830
|
spec: t,
|
|
2705
2831
|
context: n,
|
|
@@ -2708,7 +2834,7 @@ function Gt(t, n, r = Ht, i = Ut) {
|
|
|
2708
2834
|
unknownRenderer: i
|
|
2709
2835
|
});
|
|
2710
2836
|
}
|
|
2711
|
-
function
|
|
2837
|
+
function Zt(e, t) {
|
|
2712
2838
|
let n = document.createElement("div");
|
|
2713
2839
|
n.className = "gengage-chat-action-buttons";
|
|
2714
2840
|
let r = e.props?.buttons;
|
|
@@ -2718,7 +2844,7 @@ function Kt(e, t) {
|
|
|
2718
2844
|
}
|
|
2719
2845
|
return n;
|
|
2720
2846
|
}
|
|
2721
|
-
function
|
|
2847
|
+
function Qt(e, t) {
|
|
2722
2848
|
let n = document.createElement("button");
|
|
2723
2849
|
n.className = "gengage-chat-action-btn";
|
|
2724
2850
|
let r = e.props?.label;
|
|
@@ -2726,7 +2852,98 @@ function qt(e, t) {
|
|
|
2726
2852
|
let i = e.props?.action;
|
|
2727
2853
|
return i && n.addEventListener("click", () => t.onAction(i)), n;
|
|
2728
2854
|
}
|
|
2729
|
-
function
|
|
2855
|
+
function $t(e, t, n, r, i) {
|
|
2856
|
+
e.replaceChildren();
|
|
2857
|
+
let a = St(t, n), o = !!(i && r && i !== r), s = xt(t, n), c = !!(s && o), l = wt(t, n);
|
|
2858
|
+
if (!r || parseFloat(r) <= 0) return;
|
|
2859
|
+
if (c) {
|
|
2860
|
+
let n = Tt({
|
|
2861
|
+
reasonText: s,
|
|
2862
|
+
salePriceFormatted: U(r, t.pricing),
|
|
2863
|
+
...l === void 0 ? {} : { logoUrl: l }
|
|
2864
|
+
});
|
|
2865
|
+
if (o && a === "inline") {
|
|
2866
|
+
e.classList.add("gengage-chat-product-card-price-block--inline");
|
|
2867
|
+
let r = document.createElement("div");
|
|
2868
|
+
r.className = "gengage-chat-product-card-price-row", r.appendChild(n);
|
|
2869
|
+
let a = document.createElement("span");
|
|
2870
|
+
a.className = "gengage-chat-product-card-price-sep", a.setAttribute("aria-hidden", "true");
|
|
2871
|
+
let o = document.createElement("span");
|
|
2872
|
+
o.className = "gengage-chat-product-card-original-price", o.textContent = U(i, t.pricing), r.appendChild(a), r.appendChild(o), e.appendChild(r);
|
|
2873
|
+
return;
|
|
2874
|
+
}
|
|
2875
|
+
if (e.classList.remove("gengage-chat-product-card-price-block--inline"), e.appendChild(n), o) {
|
|
2876
|
+
e.appendChild(document.createTextNode(" "));
|
|
2877
|
+
let n = document.createElement("span");
|
|
2878
|
+
n.className = "gengage-chat-product-card-original-price", n.textContent = U(i, t.pricing), e.appendChild(n);
|
|
2879
|
+
}
|
|
2880
|
+
return;
|
|
2881
|
+
}
|
|
2882
|
+
if (o && a === "inline") {
|
|
2883
|
+
e.classList.add("gengage-chat-product-card-price-block--inline");
|
|
2884
|
+
let n = document.createElement("div");
|
|
2885
|
+
n.className = "gengage-chat-product-card-price-row";
|
|
2886
|
+
let a = document.createElement("span");
|
|
2887
|
+
a.className = "gengage-chat-product-card-current-price", a.textContent = U(r, t.pricing);
|
|
2888
|
+
let o = document.createElement("span");
|
|
2889
|
+
o.className = "gengage-chat-product-card-price-sep", o.setAttribute("aria-hidden", "true");
|
|
2890
|
+
let s = document.createElement("span");
|
|
2891
|
+
s.className = "gengage-chat-product-card-original-price", s.textContent = U(i, t.pricing), n.appendChild(a), n.appendChild(o), n.appendChild(s), e.appendChild(n);
|
|
2892
|
+
return;
|
|
2893
|
+
}
|
|
2894
|
+
e.classList.remove("gengage-chat-product-card-price-block--inline");
|
|
2895
|
+
let u = document.createElement("span");
|
|
2896
|
+
if (u.className = "gengage-chat-product-card-current-price", u.textContent = U(r, t.pricing), e.appendChild(u), o) {
|
|
2897
|
+
e.appendChild(document.createTextNode(" "));
|
|
2898
|
+
let n = document.createElement("span");
|
|
2899
|
+
n.className = "gengage-chat-product-card-original-price", n.textContent = U(i, t.pricing), e.appendChild(n);
|
|
2900
|
+
}
|
|
2901
|
+
}
|
|
2902
|
+
function en(e, t, n, r, i, a, o) {
|
|
2903
|
+
e.classList.remove("gengage-chat-product-details-price--inline"), e.replaceChildren(), e.className = "gengage-chat-product-details-price";
|
|
2904
|
+
let s = xt(t, n), c = !!(s && o), l = wt(t, n);
|
|
2905
|
+
if (c) {
|
|
2906
|
+
let n = Tt({
|
|
2907
|
+
reasonText: s,
|
|
2908
|
+
salePriceFormatted: U(r, t.pricing),
|
|
2909
|
+
...l === void 0 ? {} : { logoUrl: l }
|
|
2910
|
+
});
|
|
2911
|
+
if (o && a === "inline") {
|
|
2912
|
+
e.classList.add("gengage-chat-product-details-price--inline"), e.appendChild(n);
|
|
2913
|
+
let r = document.createElement("span");
|
|
2914
|
+
r.className = "gengage-chat-product-details-price-sep", r.setAttribute("aria-hidden", "true");
|
|
2915
|
+
let a = document.createElement("span");
|
|
2916
|
+
a.className = "gengage-chat-product-details-original-price", a.textContent = U(i, t.pricing), e.appendChild(r), e.appendChild(a);
|
|
2917
|
+
} else {
|
|
2918
|
+
if (o) {
|
|
2919
|
+
let n = document.createElement("span");
|
|
2920
|
+
n.className = "gengage-chat-product-details-original-price", n.textContent = U(i, t.pricing), e.appendChild(n), e.appendChild(document.createTextNode(" "));
|
|
2921
|
+
}
|
|
2922
|
+
e.appendChild(n);
|
|
2923
|
+
}
|
|
2924
|
+
} else if (o && a === "inline") {
|
|
2925
|
+
e.classList.add("gengage-chat-product-details-price--inline");
|
|
2926
|
+
let n = document.createElement("span");
|
|
2927
|
+
n.className = "gengage-chat-product-details-current-price", n.textContent = U(r, t.pricing);
|
|
2928
|
+
let a = document.createElement("span");
|
|
2929
|
+
a.className = "gengage-chat-product-details-price-sep", a.setAttribute("aria-hidden", "true");
|
|
2930
|
+
let o = document.createElement("span");
|
|
2931
|
+
o.className = "gengage-chat-product-details-original-price", o.textContent = U(i, t.pricing), e.appendChild(n), e.appendChild(a), e.appendChild(o);
|
|
2932
|
+
} else {
|
|
2933
|
+
if (o) {
|
|
2934
|
+
let n = document.createElement("span");
|
|
2935
|
+
n.className = "gengage-chat-product-details-original-price", n.textContent = U(i, t.pricing), e.appendChild(n), e.appendChild(document.createTextNode(" "));
|
|
2936
|
+
}
|
|
2937
|
+
let n = document.createElement("span");
|
|
2938
|
+
n.className = "gengage-chat-product-details-current-price", n.textContent = U(r, t.pricing), e.appendChild(n);
|
|
2939
|
+
}
|
|
2940
|
+
let u = ln(n, "discountPercent", "price_discount_rate");
|
|
2941
|
+
if (typeof u == "number" && u > 0) {
|
|
2942
|
+
let t = document.createElement("span");
|
|
2943
|
+
t.className = "gengage-chat-product-details-discount-badge", t.textContent = `%${oe(u)}`, e.appendChild(t);
|
|
2944
|
+
}
|
|
2945
|
+
}
|
|
2946
|
+
function tn(e, t) {
|
|
2730
2947
|
let n = document.createElement("div");
|
|
2731
2948
|
n.className = "gengage-chat-product-card gds-card gds-product-card gds-card-interactive";
|
|
2732
2949
|
let r = e.props?.product ?? e.props;
|
|
@@ -2744,17 +2961,17 @@ function Jt(e, t) {
|
|
|
2744
2961
|
}
|
|
2745
2962
|
}));
|
|
2746
2963
|
let o = r.imageUrl;
|
|
2747
|
-
if (o &&
|
|
2964
|
+
if (o && H(o)) {
|
|
2748
2965
|
let e = document.createElement("div");
|
|
2749
2966
|
e.className = "gengage-chat-product-card-img-wrapper";
|
|
2750
2967
|
let i = document.createElement("img");
|
|
2751
2968
|
i.className = "gengage-chat-product-card-img", i.loading = "lazy", h(i, "src", o);
|
|
2752
2969
|
let a = r.name;
|
|
2753
|
-
a && (i.alt = a),
|
|
2970
|
+
a && (i.alt = a), W(i), e.appendChild(i);
|
|
2754
2971
|
let s = r.discountPercent;
|
|
2755
2972
|
if (typeof s == "number" && s > 0) {
|
|
2756
2973
|
let t = document.createElement("span");
|
|
2757
|
-
t.className = "gengage-chat-product-card-discount-badge", t.textContent = `%${
|
|
2974
|
+
t.className = "gengage-chat-product-card-discount-badge", t.textContent = `%${oe(s)}`, e.appendChild(t);
|
|
2758
2975
|
}
|
|
2759
2976
|
let c = document.createElement("div");
|
|
2760
2977
|
c.className = "gengage-chat-product-card-img-actions";
|
|
@@ -2794,101 +3011,86 @@ function Jt(e, t) {
|
|
|
2794
3011
|
let e = document.createElement("div");
|
|
2795
3012
|
e.className = "gengage-chat-product-card-brand", e.textContent = c, s.appendChild(e);
|
|
2796
3013
|
}
|
|
2797
|
-
let l = r.rating, u = r.reviewCount, d = r.price, f = r.originalPrice, p = r.price_async, m = typeof l == "number" && Number.isFinite(l) && l > 0,
|
|
2798
|
-
|
|
2799
|
-
let
|
|
2800
|
-
|
|
3014
|
+
let l = r.rating, u = r.reviewCount, d = r.price, f = r.originalPrice, p = r.price_async, m = xt(t, r), g = St(t, r), _ = !!(m || f && d && f !== d && parseFloat(d) > 0 && g === "inline"), v = typeof l == "number" && Number.isFinite(l) && l > 0, y = document.createElement("div");
|
|
3015
|
+
y.className = "gengage-chat-product-card-meta-row";
|
|
3016
|
+
let b = document.createElement("div");
|
|
3017
|
+
b.className = "gengage-chat-product-card-price gengage-chat-product-card-price-block";
|
|
3018
|
+
let x = _ ? (() => {
|
|
3019
|
+
let e = document.createElement("div");
|
|
3020
|
+
return e.className = "gengage-chat-product-card-price-stack", m && e.appendChild(Ct(m)), e.appendChild(b), e;
|
|
3021
|
+
})() : b;
|
|
3022
|
+
if (p === !0) {
|
|
2801
3023
|
let e = document.createElement("span");
|
|
2802
|
-
e.className = "gengage-chat-price-skeleton",
|
|
2803
|
-
|
|
2804
|
-
let n = r.originalPrice;
|
|
2805
|
-
if (n && n !== d) {
|
|
2806
|
-
let r = document.createElement("span");
|
|
2807
|
-
r.className = "gengage-chat-product-card-current-price", r.textContent = H(d, t.pricing);
|
|
2808
|
-
let i = document.createElement("span");
|
|
2809
|
-
i.className = "gengage-chat-product-card-original-price", i.textContent = H(n, t.pricing);
|
|
2810
|
-
let a = document.createDocumentFragment();
|
|
2811
|
-
a.appendChild(r), a.appendChild(document.createTextNode(" ")), a.appendChild(i), e.replaceWith(a);
|
|
2812
|
-
} else {
|
|
2813
|
-
let n = document.createElement("span");
|
|
2814
|
-
n.className = "gengage-chat-product-card-current-price", n.textContent = H(d, t.pricing), e.replaceWith(n);
|
|
2815
|
-
}
|
|
2816
|
-
} else e.remove();
|
|
3024
|
+
e.className = "gengage-chat-price-skeleton", b.appendChild(e), setTimeout(() => {
|
|
3025
|
+
e.parentElement && (d && parseFloat(d) > 0 ? $t(b, t, r, d, r.originalPrice) : e.remove());
|
|
2817
3026
|
}, 300);
|
|
2818
|
-
} else
|
|
2819
|
-
|
|
2820
|
-
if (e.className = "gengage-chat-product-card-current-price", e.textContent = H(d, t.pricing), _.appendChild(e), f && f !== d) {
|
|
2821
|
-
_.appendChild(document.createTextNode(" "));
|
|
2822
|
-
let e = document.createElement("span");
|
|
2823
|
-
e.className = "gengage-chat-product-card-original-price", e.textContent = H(f, t.pricing), _.appendChild(e);
|
|
2824
|
-
}
|
|
2825
|
-
}
|
|
2826
|
-
if ((_.childElementCount > 0 || p === !0) && g.appendChild(_), m) {
|
|
3027
|
+
} else d && parseFloat(d) > 0 && $t(b, t, r, d, f);
|
|
3028
|
+
if ((b.childElementCount > 0 || p === !0) && y.appendChild(x), v) {
|
|
2827
3029
|
let e = document.createElement("div");
|
|
2828
3030
|
e.className = "gengage-chat-product-card-rating gengage-chat-product-card-rating-compact";
|
|
2829
|
-
let t =
|
|
3031
|
+
let t = se(l), n = [`${t.toFixed(1)}`, "out of 5 stars"];
|
|
2830
3032
|
typeof u == "number" && Number.isFinite(u) && n.push(`(${u} reviews)`), e.setAttribute("aria-label", n.join(" "));
|
|
2831
3033
|
let r = document.createElement("span");
|
|
2832
3034
|
r.className = "gengage-chat-product-card-rating-compact-star", r.setAttribute("aria-hidden", "true"), r.innerHTML = "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 3.6l2.58 5.23 5.77.84-4.17 4.07.98 5.75L12 16.78l-5.16 2.71.99-5.75L3.66 9.67l5.76-.84L12 3.6z\"/></svg>";
|
|
2833
3035
|
let i = document.createElement("span");
|
|
2834
|
-
i.className = "gengage-chat-product-card-rating-compact-value", i.textContent = t.toFixed(1), e.appendChild(r), e.appendChild(i),
|
|
3036
|
+
i.className = "gengage-chat-product-card-rating-compact-value", i.textContent = t.toFixed(1), e.appendChild(r), e.appendChild(i), y.appendChild(e);
|
|
2835
3037
|
}
|
|
2836
|
-
|
|
2837
|
-
let
|
|
2838
|
-
if (
|
|
3038
|
+
y.childElementCount === 0 && (y.classList.add("gengage-chat-product-card-meta-row--empty"), y.setAttribute("aria-hidden", "true")), s.appendChild(y);
|
|
3039
|
+
let S = r.name;
|
|
3040
|
+
if (S) {
|
|
2839
3041
|
let e = document.createElement("div");
|
|
2840
|
-
e.className = "gengage-chat-product-card-name", e.textContent =
|
|
3042
|
+
e.className = "gengage-chat-product-card-name", e.textContent = S, e.title = S, s.appendChild(e);
|
|
2841
3043
|
}
|
|
2842
|
-
let
|
|
2843
|
-
if (typeof
|
|
3044
|
+
let C = r.inStock;
|
|
3045
|
+
if (typeof C == "boolean") {
|
|
2844
3046
|
let e = document.createElement("div");
|
|
2845
|
-
e.className = `gengage-chat-product-card-stock ${
|
|
3047
|
+
e.className = `gengage-chat-product-card-stock ${C ? "is-in-stock" : "is-out-of-stock"}`, e.textContent = C ? t.i18n?.inStockLabel ?? "In Stock" : t.i18n?.outOfStockLabel ?? "Out of Stock", s.appendChild(e);
|
|
2846
3048
|
}
|
|
2847
3049
|
n.appendChild(s);
|
|
2848
|
-
let
|
|
2849
|
-
if (
|
|
3050
|
+
let w = r.url, T = r.sku, E = r.cartCode, D = !!(E && T && C !== !1), O = t.i18n?.productCtaLabel ?? "View";
|
|
3051
|
+
if (D) {
|
|
2850
3052
|
let e = document.createElement("div");
|
|
2851
3053
|
e.className = "gengage-chat-product-card-buy-footer";
|
|
2852
3054
|
let r = document.createElement("button");
|
|
2853
|
-
r.type = "button", r.className = "gengage-chat-product-card-buy-trigger", r.textContent =
|
|
3055
|
+
r.type = "button", r.className = "gengage-chat-product-card-buy-trigger", r.textContent = O, r.addEventListener("click", (e) => {
|
|
2854
3056
|
e.stopPropagation(), t.onAction({
|
|
2855
|
-
title: t.i18n?.addToCartButton ??
|
|
3057
|
+
title: t.i18n?.addToCartButton ?? O,
|
|
2856
3058
|
type: "addToCart",
|
|
2857
3059
|
payload: {
|
|
2858
|
-
sku:
|
|
2859
|
-
cartCode:
|
|
3060
|
+
sku: T,
|
|
3061
|
+
cartCode: E,
|
|
2860
3062
|
quantity: 1
|
|
2861
3063
|
}
|
|
2862
3064
|
});
|
|
2863
3065
|
}), e.appendChild(r), n.appendChild(e);
|
|
2864
3066
|
} else if (a) {
|
|
2865
3067
|
let e = document.createElement("button");
|
|
2866
|
-
e.className = "gengage-chat-product-card-cta", e.type = "button", e.textContent = a.type === "launchSingleProduct" ?
|
|
3068
|
+
e.className = "gengage-chat-product-card-cta", e.type = "button", e.textContent = a.type === "launchSingleProduct" ? O : a.title || O, e.addEventListener("click", (e) => {
|
|
2867
3069
|
if (n.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")) {
|
|
2868
3070
|
e.stopPropagation();
|
|
2869
3071
|
return;
|
|
2870
3072
|
}
|
|
2871
3073
|
t.onAction(a);
|
|
2872
3074
|
}), n.appendChild(e);
|
|
2873
|
-
} else if (
|
|
3075
|
+
} else if (w && H(w)) {
|
|
2874
3076
|
let e = document.createElement("a");
|
|
2875
|
-
e.className = "gengage-chat-product-card-cta", h(e, "href",
|
|
3077
|
+
e.className = "gengage-chat-product-card-cta", h(e, "href", w), h(e, "target", "_blank"), h(e, "rel", "noopener noreferrer"), e.textContent = O, e.addEventListener("click", (e) => {
|
|
2876
3078
|
if (n.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")) {
|
|
2877
3079
|
e.preventDefault(), e.stopPropagation();
|
|
2878
3080
|
return;
|
|
2879
3081
|
}
|
|
2880
|
-
t.onProductClick &&
|
|
2881
|
-
sku:
|
|
2882
|
-
url:
|
|
3082
|
+
t.onProductClick && T && (e.preventDefault(), t.onProductClick({
|
|
3083
|
+
sku: T,
|
|
3084
|
+
url: w
|
|
2883
3085
|
}));
|
|
2884
3086
|
}), n.appendChild(e);
|
|
2885
3087
|
}
|
|
2886
|
-
if (t.comparisonSelectMode &&
|
|
3088
|
+
if (t.comparisonSelectMode && T && t.onToggleComparisonSku) {
|
|
2887
3089
|
let e = document.createElement("div");
|
|
2888
3090
|
e.className = "gengage-chat-comparison-select-wrapper";
|
|
2889
|
-
let i = t.comparisonSelectedSkus?.includes(
|
|
3091
|
+
let i = t.comparisonSelectedSkus?.includes(T) ?? !1;
|
|
2890
3092
|
i && e.classList.add("gengage-chat-comparison-select-wrapper--selected");
|
|
2891
|
-
let a = r.name ??
|
|
3093
|
+
let a = r.name ?? T, o = t.i18n?.comparisonSelectCardHint ?? "Tap anywhere on the card to add or remove it from comparison.";
|
|
2892
3094
|
e.setAttribute("role", "group"), e.setAttribute("aria-label", `${String(a)}. ${o}`);
|
|
2893
3095
|
let s = document.createElement("button");
|
|
2894
3096
|
s.type = "button", s.className = "gengage-chat-comparison-checkbox", s.dataset.selected = i ? "true" : "false", s.setAttribute("aria-pressed", i ? "true" : "false");
|
|
@@ -2896,37 +3098,37 @@ function Jt(e, t) {
|
|
|
2896
3098
|
c.className = "gengage-chat-comparison-checkbox-icon", c.innerHTML = i ? "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6L9 17l-5-5\"/></svg>" : "<span class=\"gengage-chat-comparison-checkbox-dot\"></span>";
|
|
2897
3099
|
let l = document.createElement("span");
|
|
2898
3100
|
l.className = "gengage-chat-comparison-checkbox-label", l.textContent = i ? t.i18n?.comparisonSelectedLabel ?? "Selected" : t.i18n?.comparisonSelectLabel ?? "Select to compare", s.appendChild(c), s.appendChild(l), s.addEventListener("click", (e) => {
|
|
2899
|
-
e.stopPropagation(), t.onToggleComparisonSku?.(
|
|
3101
|
+
e.stopPropagation(), t.onToggleComparisonSku?.(T);
|
|
2900
3102
|
});
|
|
2901
3103
|
let u = document.createElement("div");
|
|
2902
3104
|
return u.className = "gengage-chat-comparison-card-hint", u.setAttribute("aria-hidden", "true"), u.textContent = o, e.addEventListener("click", (e) => {
|
|
2903
|
-
e.target.closest(".gengage-chat-comparison-checkbox") || (e.stopPropagation(), t.onToggleComparisonSku?.(
|
|
3105
|
+
e.target.closest(".gengage-chat-comparison-checkbox") || (e.stopPropagation(), t.onToggleComparisonSku?.(T));
|
|
2904
3106
|
}), e.appendChild(s), e.appendChild(u), e.appendChild(n), e;
|
|
2905
3107
|
}
|
|
2906
3108
|
return n;
|
|
2907
3109
|
}
|
|
2908
|
-
var
|
|
3110
|
+
var nn = new Set([
|
|
2909
3111
|
"color",
|
|
2910
3112
|
"colour",
|
|
2911
3113
|
"renk",
|
|
2912
3114
|
"renk kodu",
|
|
2913
3115
|
"color code"
|
|
2914
|
-
]),
|
|
3116
|
+
]), rn = new Set([
|
|
2915
3117
|
"size",
|
|
2916
3118
|
"beden",
|
|
2917
3119
|
"boyut"
|
|
2918
|
-
]),
|
|
3120
|
+
]), an = new Set([
|
|
2919
3121
|
"finish",
|
|
2920
3122
|
"bitiş",
|
|
2921
3123
|
"bitişi"
|
|
2922
|
-
]),
|
|
3124
|
+
]), on = [
|
|
2923
3125
|
"variants",
|
|
2924
3126
|
"variantOptions",
|
|
2925
3127
|
"variant_options",
|
|
2926
3128
|
"productVariants",
|
|
2927
3129
|
"product_variants",
|
|
2928
3130
|
"options"
|
|
2929
|
-
],
|
|
3131
|
+
], sn = new Set([
|
|
2930
3132
|
"H2",
|
|
2931
3133
|
"H3",
|
|
2932
3134
|
"H4",
|
|
@@ -2939,7 +3141,7 @@ var Yt = new Set([
|
|
|
2939
3141
|
"B",
|
|
2940
3142
|
"EM",
|
|
2941
3143
|
"I"
|
|
2942
|
-
]),
|
|
3144
|
+
]), cn = new Set([
|
|
2943
3145
|
"SCRIPT",
|
|
2944
3146
|
"STYLE",
|
|
2945
3147
|
"NOSCRIPT",
|
|
@@ -2947,7 +3149,7 @@ var Yt = new Set([
|
|
|
2947
3149
|
"OBJECT",
|
|
2948
3150
|
"EMBED"
|
|
2949
3151
|
]);
|
|
2950
|
-
function
|
|
3152
|
+
function q(e, ...t) {
|
|
2951
3153
|
for (let n of t) {
|
|
2952
3154
|
let t = e[n];
|
|
2953
3155
|
if (typeof t == "string") {
|
|
@@ -2956,7 +3158,7 @@ function K(e, ...t) {
|
|
|
2956
3158
|
}
|
|
2957
3159
|
}
|
|
2958
3160
|
}
|
|
2959
|
-
function
|
|
3161
|
+
function ln(e, ...t) {
|
|
2960
3162
|
for (let n of t) {
|
|
2961
3163
|
let t = e[n];
|
|
2962
3164
|
if (typeof t == "number" && Number.isFinite(t)) return t;
|
|
@@ -2966,44 +3168,44 @@ function tn(e, ...t) {
|
|
|
2966
3168
|
}
|
|
2967
3169
|
}
|
|
2968
3170
|
}
|
|
2969
|
-
function
|
|
3171
|
+
function un(e, ...t) {
|
|
2970
3172
|
for (let n of t) {
|
|
2971
3173
|
let t = e[n];
|
|
2972
3174
|
if (typeof t == "boolean") return t;
|
|
2973
3175
|
}
|
|
2974
3176
|
}
|
|
2975
|
-
function
|
|
3177
|
+
function dn(e, ...t) {
|
|
2976
3178
|
for (let n of t) {
|
|
2977
3179
|
let t = e[n];
|
|
2978
3180
|
if (t && typeof t == "object" && !Array.isArray(t)) return t;
|
|
2979
3181
|
}
|
|
2980
3182
|
}
|
|
2981
|
-
function
|
|
3183
|
+
function fn(e) {
|
|
2982
3184
|
return Array.isArray(e) ? e.filter((e) => typeof e == "string" && e.trim().length > 0) : [];
|
|
2983
3185
|
}
|
|
2984
|
-
function
|
|
2985
|
-
let t = [...
|
|
3186
|
+
function pn(e) {
|
|
3187
|
+
let t = [...fn(e.images), q(e, "imageUrl", "image_url", "image")].filter((e) => !!e && H(e));
|
|
2986
3188
|
return Array.from(new Set(t));
|
|
2987
3189
|
}
|
|
2988
|
-
function
|
|
3190
|
+
function mn(e) {
|
|
2989
3191
|
return typeof DOMParser < "u" ? (new DOMParser().parseFromString(e, "text/html").body.textContent ?? "").replace(/\s+/g, " ").trim() : e.replace(/<[^>]*>/g, " ").replace(/\s+/g, " ").trim();
|
|
2990
3192
|
}
|
|
2991
|
-
function
|
|
2992
|
-
let t =
|
|
3193
|
+
function hn(e) {
|
|
3194
|
+
let t = q(e, "description_html", "descriptionHtml");
|
|
2993
3195
|
if (t) {
|
|
2994
|
-
let e =
|
|
3196
|
+
let e = mn(t);
|
|
2995
3197
|
if (e) return {
|
|
2996
3198
|
text: e,
|
|
2997
3199
|
html: t
|
|
2998
3200
|
};
|
|
2999
3201
|
}
|
|
3000
|
-
let n =
|
|
3202
|
+
let n = q(e, "description");
|
|
3001
3203
|
return n ? { text: n } : void 0;
|
|
3002
3204
|
}
|
|
3003
|
-
function
|
|
3205
|
+
function gn(e) {
|
|
3004
3206
|
return Array.isArray(e) ? e.map((e) => {
|
|
3005
3207
|
if (!e || typeof e != "object") return null;
|
|
3006
|
-
let t = e, n =
|
|
3208
|
+
let t = e, n = q(t, "key", "name", "label", "title"), r = t.value, i = typeof r == "string" || typeof r == "number" || typeof r == "boolean" ? String(r).trim() : void 0;
|
|
3007
3209
|
return !n || !i ? null : {
|
|
3008
3210
|
key: n,
|
|
3009
3211
|
value: i
|
|
@@ -3016,154 +3218,154 @@ function ln(e) {
|
|
|
3016
3218
|
};
|
|
3017
3219
|
}).filter((e) => e !== null) : [];
|
|
3018
3220
|
}
|
|
3019
|
-
function
|
|
3020
|
-
let t =
|
|
3021
|
-
return t.length > 0 ? t :
|
|
3221
|
+
function _n(e) {
|
|
3222
|
+
let t = gn(e.features);
|
|
3223
|
+
return t.length > 0 ? t : gn(e.specifications);
|
|
3022
3224
|
}
|
|
3023
|
-
function
|
|
3024
|
-
let t = e.specifications, n =
|
|
3225
|
+
function vn(e) {
|
|
3226
|
+
let t = e.specifications, n = gn(t);
|
|
3025
3227
|
if (n.length > 0) return Array.isArray(t) ? n : Object.fromEntries(n.map((e) => [e.key, e.value]));
|
|
3026
|
-
let r =
|
|
3228
|
+
let r = gn(e.features);
|
|
3027
3229
|
return r.length > 0 ? r : void 0;
|
|
3028
3230
|
}
|
|
3029
|
-
function
|
|
3030
|
-
return
|
|
3231
|
+
function J(e, ...t) {
|
|
3232
|
+
return q(e, ...t);
|
|
3031
3233
|
}
|
|
3032
|
-
function
|
|
3033
|
-
return
|
|
3234
|
+
function yn(e, ...t) {
|
|
3235
|
+
return ln(e, ...t);
|
|
3034
3236
|
}
|
|
3035
|
-
function
|
|
3036
|
-
return
|
|
3237
|
+
function bn(e) {
|
|
3238
|
+
return J(e, "value", "option_value", "attribute_value", "label", "title", "name", "variant_name", "sku");
|
|
3037
3239
|
}
|
|
3038
|
-
function
|
|
3039
|
-
return
|
|
3240
|
+
function xn(e) {
|
|
3241
|
+
return J(e, "type", "attribute", "option_name", "attribute_name") || (J(e, "value") ? J(e, "name", "variant_name") : void 0);
|
|
3040
3242
|
}
|
|
3041
|
-
function
|
|
3042
|
-
let t =
|
|
3043
|
-
return !!(
|
|
3243
|
+
function Sn(e) {
|
|
3244
|
+
let t = xn(e)?.toLowerCase();
|
|
3245
|
+
return !!(q(e, "color", "colour", "color_hex", "hex", "swatch", "swatchColor") || t && nn.has(t));
|
|
3044
3246
|
}
|
|
3045
|
-
function
|
|
3247
|
+
function Cn(e) {
|
|
3046
3248
|
if (!e) return;
|
|
3047
3249
|
let t = e.trim();
|
|
3048
3250
|
if (!(!t || t.includes(";")) && (typeof CSS < "u" && CSS.supports?.("color", t) || /^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t))) return t;
|
|
3049
3251
|
}
|
|
3050
|
-
function
|
|
3051
|
-
let t =
|
|
3252
|
+
function wn(e) {
|
|
3253
|
+
let t = Cn(J(e, "swatchColor", "swatch", "color_hex", "hex", "color", "colour"));
|
|
3052
3254
|
if (t) return t;
|
|
3053
|
-
if (
|
|
3255
|
+
if (Sn(e)) return Cn(bn(e));
|
|
3054
3256
|
}
|
|
3055
|
-
function
|
|
3056
|
-
return
|
|
3257
|
+
function Tn(e) {
|
|
3258
|
+
return J(e, "image", "imageUrl", "image_url", "swatchImage", "swatch_image");
|
|
3057
3259
|
}
|
|
3058
|
-
function
|
|
3059
|
-
return
|
|
3260
|
+
function En(e) {
|
|
3261
|
+
return yn(e, "price_discounted", "priceDiscounted") ?? J(e, "price_discounted", "priceDiscounted") ?? yn(e, "price") ?? J(e, "price");
|
|
3060
3262
|
}
|
|
3061
|
-
function
|
|
3263
|
+
function Dn(e) {
|
|
3062
3264
|
let t = e.trim().toLowerCase();
|
|
3063
|
-
return
|
|
3265
|
+
return nn.has(t) || rn.has(t) || an.has(t);
|
|
3064
3266
|
}
|
|
3065
|
-
function
|
|
3267
|
+
function On(e) {
|
|
3066
3268
|
let t = e.trim().toLowerCase();
|
|
3067
3269
|
return t === "renk kodu" ? "Renk" : t === "color code" ? "Color" : e.trim();
|
|
3068
3270
|
}
|
|
3069
|
-
function
|
|
3070
|
-
for (let t of
|
|
3271
|
+
function kn(e) {
|
|
3272
|
+
for (let t of on) {
|
|
3071
3273
|
let n = e[t];
|
|
3072
3274
|
if (!Array.isArray(n)) continue;
|
|
3073
3275
|
let r = n.filter((e) => !!e && typeof e == "object" && !Array.isArray(e));
|
|
3074
3276
|
if (r.length > 0) return r;
|
|
3075
3277
|
}
|
|
3076
3278
|
}
|
|
3077
|
-
function
|
|
3078
|
-
let t =
|
|
3279
|
+
function An(e) {
|
|
3280
|
+
let t = kn(e);
|
|
3079
3281
|
if (t) return t;
|
|
3080
|
-
let n =
|
|
3081
|
-
if (!
|
|
3282
|
+
let n = q(e, "sku"), r = un(e, "inStock", "in_stock"), i = [], a = /* @__PURE__ */ new Set(), o = (e, t) => {
|
|
3283
|
+
if (!Dn(e) || typeof t != "string" && typeof t != "number" && typeof t != "boolean") return;
|
|
3082
3284
|
let o = String(t).trim();
|
|
3083
3285
|
if (!o) return;
|
|
3084
|
-
let s =
|
|
3286
|
+
let s = On(e), c = `${s.toLowerCase()}:${o.toLowerCase()}`;
|
|
3085
3287
|
a.has(c) || (a.add(c), i.push({
|
|
3086
3288
|
name: s,
|
|
3087
3289
|
value: o,
|
|
3088
3290
|
sku: n,
|
|
3089
3291
|
inStock: r
|
|
3090
3292
|
}));
|
|
3091
|
-
}, s =
|
|
3293
|
+
}, s = dn(e, "facetHits", "facet_hits");
|
|
3092
3294
|
if (s) for (let [e, t] of Object.entries(s)) o(e, t);
|
|
3093
|
-
for (let t of
|
|
3295
|
+
for (let t of _n(e)) o(t.key, t.value);
|
|
3094
3296
|
return i;
|
|
3095
3297
|
}
|
|
3096
|
-
function
|
|
3097
|
-
let n = Array.from(new Set(e.map(
|
|
3298
|
+
function jn(e, t) {
|
|
3299
|
+
let n = Array.from(new Set(e.map(xn).filter((e) => !!e)));
|
|
3098
3300
|
return n.length === 1 ? `${e.length} ${n[0]}` : t.i18n?.variantsLabel ?? "Variants";
|
|
3099
3301
|
}
|
|
3100
|
-
function
|
|
3302
|
+
function Mn(e, t) {
|
|
3101
3303
|
let n = document.createElement("article");
|
|
3102
3304
|
n.className = "gengage-chat-product-details-panel";
|
|
3103
3305
|
let r = e.props?.product ?? e.props;
|
|
3104
3306
|
if (!r) return n;
|
|
3105
|
-
let i =
|
|
3106
|
-
if (
|
|
3307
|
+
let i = q(r, "name"), a = q(r, "brand"), o = q(r, "sku"), s = q(r, "cartCode", "cart_code"), c = q(r, "price"), l = q(r, "originalPrice", "price_original"), u = un(r, "price_async"), d = xt(t, r), f = St(t, r), p = !!(l && c && l !== c), m = un(r, "inStock", "in_stock"), g = ln(r, "reviewCount", "review_count"), _ = ln(r, "rating"), v = pn(r), y = _n(r).slice(0, 4);
|
|
3308
|
+
if (v.length > 1) {
|
|
3107
3309
|
let e = document.createElement("div");
|
|
3108
3310
|
e.className = "gengage-chat-product-details-media gengage-chat-product-details-gallery gengage-chat-product-details-img-wrap";
|
|
3109
3311
|
let r = document.createElement("img");
|
|
3110
|
-
r.className = "gengage-chat-product-details-img", h(r, "src",
|
|
3312
|
+
r.className = "gengage-chat-product-details-img", h(r, "src", v[0]), r.alt = i ?? "Product image", W(r), e.appendChild(r);
|
|
3111
3313
|
let a = document.createElement("div");
|
|
3112
3314
|
a.className = "gengage-chat-product-gallery-thumbs";
|
|
3113
3315
|
let o = null, s = 0, c = t.i18n, l = c?.galleryPrevAriaLabel ?? "Previous image", u = c?.galleryNextAriaLabel ?? "Next image", d = (e) => e === "prev" ? "<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"15 18 9 12 15 6\"/></svg>" : "<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"9 18 15 12 9 6\"/></svg>", f = document.createElement("button");
|
|
3114
3316
|
f.type = "button", f.className = "gengage-chat-product-gallery-nav gengage-chat-product-gallery-nav--prev gds-btn gds-btn-ghost gds-icon-btn", f.setAttribute("aria-label", l), f.innerHTML = d("prev");
|
|
3115
3317
|
let p = document.createElement("button");
|
|
3116
3318
|
p.type = "button", p.className = "gengage-chat-product-gallery-nav gengage-chat-product-gallery-nav--next gds-btn gds-btn-ghost gds-icon-btn", p.setAttribute("aria-label", u), p.innerHTML = d("next");
|
|
3117
|
-
let
|
|
3118
|
-
f.disabled = s <= 0, p.disabled = s >=
|
|
3119
|
-
},
|
|
3120
|
-
if (e < 0 || e >=
|
|
3121
|
-
let t =
|
|
3319
|
+
let m = () => {
|
|
3320
|
+
f.disabled = s <= 0, p.disabled = s >= v.length - 1;
|
|
3321
|
+
}, g = (e) => {
|
|
3322
|
+
if (e < 0 || e >= v.length || e === s) return;
|
|
3323
|
+
let t = v[e];
|
|
3122
3324
|
if (!t) return;
|
|
3123
3325
|
h(r, "src", t);
|
|
3124
3326
|
let n = a.querySelectorAll(".gengage-chat-product-gallery-thumb");
|
|
3125
|
-
o && o.classList.remove("gengage-chat-product-gallery-thumb--active"), e < 6 && n[e] ? (n[e].classList.add("gengage-chat-product-gallery-thumb--active"), o = n[e]) : o = null, s = e,
|
|
3327
|
+
o && o.classList.remove("gengage-chat-product-gallery-thumb--active"), e < 6 && n[e] ? (n[e].classList.add("gengage-chat-product-gallery-thumb--active"), o = n[e]) : o = null, s = e, m();
|
|
3126
3328
|
};
|
|
3127
|
-
for (let e = 0; e <
|
|
3128
|
-
let t =
|
|
3329
|
+
for (let e = 0; e < v.length; e++) {
|
|
3330
|
+
let t = v[e];
|
|
3129
3331
|
if (e >= 6) break;
|
|
3130
3332
|
let n = document.createElement("img");
|
|
3131
|
-
n.className = "gengage-chat-product-gallery-thumb", e === 0 && (n.classList.add("gengage-chat-product-gallery-thumb--active"), o = n), h(n, "src", t), n.alt = `${i ?? "Product"} ${e + 1}`, n.width = 48, n.height = 48,
|
|
3132
|
-
|
|
3333
|
+
n.className = "gengage-chat-product-gallery-thumb", e === 0 && (n.classList.add("gengage-chat-product-gallery-thumb--active"), o = n), h(n, "src", t), n.alt = `${i ?? "Product"} ${e + 1}`, n.width = 48, n.height = 48, W(n), n.addEventListener("click", () => {
|
|
3334
|
+
g(e);
|
|
3133
3335
|
}), a.appendChild(n);
|
|
3134
3336
|
}
|
|
3135
|
-
if (
|
|
3337
|
+
if (v.length > 6) {
|
|
3136
3338
|
let e = document.createElement("span");
|
|
3137
|
-
e.className = "gengage-chat-product-gallery-thumb-more", e.textContent = `+${
|
|
3339
|
+
e.className = "gengage-chat-product-gallery-thumb-more", e.textContent = `+${v.length - 6}`, a.appendChild(e);
|
|
3138
3340
|
}
|
|
3139
3341
|
f.addEventListener("click", (e) => {
|
|
3140
|
-
e.stopPropagation(),
|
|
3342
|
+
e.stopPropagation(), g(s - 1);
|
|
3141
3343
|
}), p.addEventListener("click", (e) => {
|
|
3142
|
-
e.stopPropagation(),
|
|
3143
|
-
}),
|
|
3144
|
-
let
|
|
3344
|
+
e.stopPropagation(), g(s + 1);
|
|
3345
|
+
}), m();
|
|
3346
|
+
let _ = 0;
|
|
3145
3347
|
r.addEventListener("touchstart", (e) => {
|
|
3146
|
-
|
|
3348
|
+
_ = e.changedTouches[0].clientX;
|
|
3147
3349
|
}, { passive: !0 }), r.addEventListener("touchend", (e) => {
|
|
3148
|
-
let t = e.changedTouches[0].clientX, n =
|
|
3149
|
-
Math.abs(n) < 50 ||
|
|
3350
|
+
let t = e.changedTouches[0].clientX, n = _ - t;
|
|
3351
|
+
Math.abs(n) < 50 || g(n > 0 ? Math.min(s + 1, v.length - 1) : Math.max(s - 1, 0));
|
|
3150
3352
|
}), e.appendChild(f), e.appendChild(p), e.appendChild(a), n.appendChild(e);
|
|
3151
|
-
} else if (
|
|
3353
|
+
} else if (v.length === 1) {
|
|
3152
3354
|
let e = document.createElement("div");
|
|
3153
3355
|
e.className = "gengage-chat-product-details-media gengage-chat-product-details-img-wrap";
|
|
3154
3356
|
let t = document.createElement("img");
|
|
3155
|
-
t.className = "gengage-chat-product-details-img", t.loading = "lazy", h(t, "src",
|
|
3357
|
+
t.className = "gengage-chat-product-details-img", t.loading = "lazy", h(t, "src", v[0]), W(t), t.alt = i ?? "Product image", e.appendChild(t), n.appendChild(e);
|
|
3156
3358
|
}
|
|
3157
|
-
let
|
|
3158
|
-
if (
|
|
3359
|
+
let b = document.createElement("div");
|
|
3360
|
+
if (b.className = "gengage-chat-product-details-content", a && (!i || !i.toLowerCase().startsWith(a.toLowerCase()))) {
|
|
3159
3361
|
let e = document.createElement("div");
|
|
3160
|
-
e.className = "gengage-chat-product-details-brand", e.textContent = a,
|
|
3362
|
+
e.className = "gengage-chat-product-details-brand", e.textContent = a, b.appendChild(e);
|
|
3161
3363
|
}
|
|
3162
3364
|
if (i) {
|
|
3163
3365
|
let e = document.createElement("h3");
|
|
3164
|
-
e.className = "gengage-chat-product-details-title", e.textContent = i, e.title = i,
|
|
3366
|
+
e.className = "gengage-chat-product-details-title", e.textContent = i, e.title = i, b.appendChild(e);
|
|
3165
3367
|
}
|
|
3166
|
-
if (typeof
|
|
3368
|
+
if (typeof _ == "number" && Number.isFinite(_) && _ > 0) {
|
|
3167
3369
|
let e = document.createElement(o ? "button" : "div");
|
|
3168
3370
|
e.className = "gengage-chat-product-details-rating", o && (e.type = "button", e.classList.add("gengage-chat-product-details-rating--clickable"), e.setAttribute("aria-label", t.i18n?.groundingReviewCta ?? "Read Reviews"), e.addEventListener("click", () => {
|
|
3169
3371
|
t.onAction({
|
|
@@ -3171,58 +3373,55 @@ function Tn(e, t) {
|
|
|
3171
3373
|
type: "reviewSummary",
|
|
3172
3374
|
payload: { sku: o }
|
|
3173
3375
|
});
|
|
3174
|
-
})), e.appendChild(
|
|
3376
|
+
})), e.appendChild(ae(_));
|
|
3175
3377
|
let n = document.createElement("span");
|
|
3176
|
-
if (n.className = "gengage-chat-product-details-rating-value", n.textContent =
|
|
3378
|
+
if (n.className = "gengage-chat-product-details-rating-value", n.textContent = se(_).toFixed(1), e.appendChild(n), typeof g == "number" && Number.isFinite(g)) {
|
|
3177
3379
|
let t = document.createElement("span");
|
|
3178
|
-
t.className = "gengage-chat-product-details-review-count", t.textContent = ` (${
|
|
3380
|
+
t.className = "gengage-chat-product-details-review-count", t.textContent = ` (${g})`, e.appendChild(t);
|
|
3179
3381
|
}
|
|
3180
|
-
|
|
3382
|
+
b.appendChild(e);
|
|
3181
3383
|
}
|
|
3182
|
-
|
|
3183
|
-
let e =
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
if (n.parentElement) if (c && parseFloat(c) > 0) {
|
|
3188
|
-
let e = document.createElement("span");
|
|
3189
|
-
e.className = "gengage-chat-product-details-current-price", e.textContent = H(c, t.pricing), n.replaceWith(e);
|
|
3190
|
-
} else n.remove();
|
|
3191
|
-
}, 300);
|
|
3192
|
-
} else if (c && parseFloat(c) > 0) {
|
|
3193
|
-
let e = document.createElement("div");
|
|
3194
|
-
if (e.className = "gengage-chat-product-details-price", l && l !== c) {
|
|
3195
|
-
let n = document.createElement("span");
|
|
3196
|
-
n.className = "gengage-chat-product-details-original-price", n.textContent = H(l, t.pricing), e.appendChild(n), e.appendChild(document.createTextNode(" "));
|
|
3384
|
+
{
|
|
3385
|
+
let e = b;
|
|
3386
|
+
if (d) {
|
|
3387
|
+
let t = document.createElement("div");
|
|
3388
|
+
t.className = "gengage-chat-product-details-price-stack", t.appendChild(Ct(d)), b.appendChild(t), e = t;
|
|
3197
3389
|
}
|
|
3198
|
-
let n = document.createElement("
|
|
3199
|
-
n.className = "gengage-chat-product-details-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3390
|
+
let n = document.createElement("div");
|
|
3391
|
+
if (n.className = "gengage-chat-product-details-price", u === !0) {
|
|
3392
|
+
let i = document.createElement("span");
|
|
3393
|
+
i.className = "gengage-chat-price-skeleton", n.appendChild(i), e.appendChild(n), setTimeout(() => {
|
|
3394
|
+
if (i.parentElement) if (c && parseFloat(c) > 0) en(n, t, r, c, l, f, p);
|
|
3395
|
+
else {
|
|
3396
|
+
let e = n.parentElement;
|
|
3397
|
+
n.remove(), e?.classList.contains("gengage-chat-product-details-price-stack") && e.remove();
|
|
3398
|
+
}
|
|
3399
|
+
}, 300);
|
|
3400
|
+
} else if (c && parseFloat(c) > 0) en(n, t, r, c, l, f, p), e.appendChild(n);
|
|
3401
|
+
else if (d) {
|
|
3402
|
+
let t = e;
|
|
3403
|
+
t.classList.contains("gengage-chat-product-details-price-stack") && t.remove();
|
|
3204
3404
|
}
|
|
3205
|
-
_.appendChild(e);
|
|
3206
3405
|
}
|
|
3207
|
-
if (typeof
|
|
3406
|
+
if (typeof m == "boolean") {
|
|
3208
3407
|
let e = document.createElement("div");
|
|
3209
|
-
e.className = `gengage-chat-product-details-stock ${
|
|
3408
|
+
e.className = `gengage-chat-product-details-stock ${m ? "is-in-stock" : "is-out-of-stock"}`, e.textContent = m ? t.i18n?.inStockLabel ?? "In Stock" : t.i18n?.outOfStockLabel ?? "Out of Stock", b.appendChild(e);
|
|
3210
3409
|
}
|
|
3211
|
-
let
|
|
3212
|
-
if (
|
|
3410
|
+
let x = r.promotions;
|
|
3411
|
+
if (x && x.length > 0) {
|
|
3213
3412
|
let e = document.createElement("div");
|
|
3214
3413
|
e.className = "gengage-chat-product-details-promos";
|
|
3215
|
-
for (let t of
|
|
3414
|
+
for (let t of x.slice(0, 3)) {
|
|
3216
3415
|
if (!t || /%(0(\.0+)?)\s/.test(t)) continue;
|
|
3217
3416
|
let n = document.createElement("span");
|
|
3218
3417
|
n.className = "gengage-chat-product-details-promo-badge", n.textContent = t, n.title = t, e.appendChild(n);
|
|
3219
3418
|
}
|
|
3220
|
-
e.childElementCount > 0 &&
|
|
3419
|
+
e.childElementCount > 0 && b.appendChild(e);
|
|
3221
3420
|
}
|
|
3222
|
-
if (
|
|
3421
|
+
if (y.length > 0) {
|
|
3223
3422
|
let e = document.createElement("dl");
|
|
3224
3423
|
e.className = "gengage-chat-product-details-facts";
|
|
3225
|
-
for (let t of
|
|
3424
|
+
for (let t of y) {
|
|
3226
3425
|
let n = document.createElement("div");
|
|
3227
3426
|
n.className = "gengage-chat-product-details-fact";
|
|
3228
3427
|
let r = document.createElement("dt");
|
|
@@ -3230,39 +3429,39 @@ function Tn(e, t) {
|
|
|
3230
3429
|
let i = document.createElement("dd");
|
|
3231
3430
|
i.textContent = t.value, n.appendChild(r), n.appendChild(i), e.appendChild(n);
|
|
3232
3431
|
}
|
|
3233
|
-
|
|
3432
|
+
b.appendChild(e);
|
|
3234
3433
|
}
|
|
3235
|
-
let
|
|
3236
|
-
if (
|
|
3434
|
+
let S = An(r);
|
|
3435
|
+
if (S.length > 0) {
|
|
3237
3436
|
let e = document.createElement("div");
|
|
3238
3437
|
e.className = "gengage-chat-product-variants";
|
|
3239
3438
|
let n = document.createElement("div");
|
|
3240
|
-
n.className = "gengage-chat-product-variants-label", n.textContent =
|
|
3439
|
+
n.className = "gengage-chat-product-variants-label", n.textContent = jn(S, t), e.appendChild(n);
|
|
3241
3440
|
let r = document.createElement("div");
|
|
3242
3441
|
r.className = "gengage-chat-product-variants-list";
|
|
3243
|
-
for (let e of
|
|
3244
|
-
let n =
|
|
3442
|
+
for (let e of S) {
|
|
3443
|
+
let n = bn(e), a = J(e, "sku");
|
|
3245
3444
|
if (!n && !a) continue;
|
|
3246
3445
|
let s = document.createElement("button");
|
|
3247
3446
|
s.className = "gengage-chat-product-variant-btn gds-chip", s.type = "button";
|
|
3248
3447
|
let l = n ?? a ?? "";
|
|
3249
3448
|
s.title = l;
|
|
3250
|
-
let u =
|
|
3449
|
+
let u = un(e, "in_stock", "inStock");
|
|
3251
3450
|
a && o && a === o ? (s.classList.add("gengage-chat-product-variant-btn--active"), s.setAttribute("aria-pressed", "true")) : s.setAttribute("aria-pressed", "false"), u === !1 && (s.classList.add("gengage-chat-product-variant-btn--out"), s.disabled = !0);
|
|
3252
|
-
let d =
|
|
3253
|
-
if (d &&
|
|
3451
|
+
let d = Tn(e), f = wn(e);
|
|
3452
|
+
if (d && H(d)) {
|
|
3254
3453
|
let e = document.createElement("img");
|
|
3255
|
-
e.className = "gengage-chat-product-variant-swatch gengage-chat-product-variant-swatch--image", h(e, "src", d), e.alt = "", e.setAttribute("aria-hidden", "true"),
|
|
3454
|
+
e.className = "gengage-chat-product-variant-swatch gengage-chat-product-variant-swatch--image", h(e, "src", d), e.alt = "", e.setAttribute("aria-hidden", "true"), W(e), s.appendChild(e);
|
|
3256
3455
|
} else if (f) {
|
|
3257
3456
|
let e = document.createElement("span");
|
|
3258
3457
|
e.className = "gengage-chat-product-variant-swatch", e.setAttribute("aria-hidden", "true"), e.style.backgroundColor = f, s.appendChild(e);
|
|
3259
3458
|
}
|
|
3260
3459
|
let p = document.createElement("span");
|
|
3261
3460
|
p.className = "gengage-chat-product-variant-label", p.textContent = l, s.appendChild(p);
|
|
3262
|
-
let m =
|
|
3461
|
+
let m = En(e);
|
|
3263
3462
|
if (m && String(m) !== String(c)) {
|
|
3264
3463
|
let e = document.createElement("span");
|
|
3265
|
-
e.className = "gengage-chat-product-variant-price", e.textContent =
|
|
3464
|
+
e.className = "gengage-chat-product-variant-price", e.textContent = U(String(m), t.pricing), s.appendChild(e);
|
|
3266
3465
|
}
|
|
3267
3466
|
if (a && a !== o) {
|
|
3268
3467
|
let n = i ?? "", r = (typeof e.value == "string" ? e.value.trim() : "") || (typeof e.name == "string" ? e.name.trim() : "") || (typeof e.variant_name == "string" ? e.variant_name.trim() : "") || "", o = n.length > 0 ? r.length > 0 && r !== n ? `${n} (${r})` : n : l;
|
|
@@ -3276,16 +3475,16 @@ function Tn(e, t) {
|
|
|
3276
3475
|
}
|
|
3277
3476
|
r.appendChild(s);
|
|
3278
3477
|
}
|
|
3279
|
-
r.childElementCount > 0 && (e.appendChild(r),
|
|
3478
|
+
r.childElementCount > 0 && (e.appendChild(r), b.appendChild(e));
|
|
3280
3479
|
}
|
|
3281
|
-
let
|
|
3282
|
-
|
|
3283
|
-
let
|
|
3284
|
-
if (
|
|
3480
|
+
let C = document.createElement("div");
|
|
3481
|
+
C.className = "gengage-chat-product-details-actions";
|
|
3482
|
+
let w = e.props?.action;
|
|
3483
|
+
if (w) {
|
|
3285
3484
|
let e = document.createElement("button");
|
|
3286
|
-
e.className = "gengage-chat-product-details-cta gds-btn gds-btn-primary", e.type = "button", e.textContent =
|
|
3485
|
+
e.className = "gengage-chat-product-details-cta gds-btn gds-btn-primary", e.type = "button", e.textContent = w.title || t.i18n?.productCtaLabel || "View", e.addEventListener("click", () => t.onAction(w)), C.appendChild(e);
|
|
3287
3486
|
}
|
|
3288
|
-
if (s && o &&
|
|
3487
|
+
if (s && o && m !== !1) {
|
|
3289
3488
|
let e = document.createElement("button");
|
|
3290
3489
|
e.className = "gengage-chat-product-details-atc gds-btn gds-btn-primary", e.type = "button", e.textContent = t.i18n?.addToCartButton ?? "Add to Cart", e.addEventListener("click", () => {
|
|
3291
3490
|
t.onAction({
|
|
@@ -3297,20 +3496,20 @@ function Tn(e, t) {
|
|
|
3297
3496
|
quantity: 1
|
|
3298
3497
|
}
|
|
3299
3498
|
});
|
|
3300
|
-
}),
|
|
3499
|
+
}), C.appendChild(e);
|
|
3301
3500
|
}
|
|
3302
|
-
let
|
|
3303
|
-
if (!
|
|
3501
|
+
let T = q(r, "url");
|
|
3502
|
+
if (!w && T && H(T)) {
|
|
3304
3503
|
let e = document.createElement("a");
|
|
3305
|
-
e.className = "gengage-chat-product-details-cta gds-btn gds-btn-secondary", h(e, "href",
|
|
3504
|
+
e.className = "gengage-chat-product-details-cta gds-btn gds-btn-secondary", h(e, "href", T), h(e, "target", "_blank"), h(e, "rel", "noopener noreferrer"), e.textContent = t.i18n?.viewOnSiteLabel ?? t.i18n?.productCtaLabel ?? "View on Site", e.addEventListener("click", (e) => {
|
|
3306
3505
|
t.onProductClick && o && (e.preventDefault(), t.onProductClick({
|
|
3307
3506
|
sku: o,
|
|
3308
|
-
url:
|
|
3507
|
+
url: T
|
|
3309
3508
|
}));
|
|
3310
|
-
}),
|
|
3509
|
+
}), C.appendChild(e);
|
|
3311
3510
|
}
|
|
3312
|
-
let
|
|
3313
|
-
if (
|
|
3511
|
+
let E = T;
|
|
3512
|
+
if (E && H(E)) {
|
|
3314
3513
|
let e = document.createElement("button");
|
|
3315
3514
|
e.className = "gengage-chat-product-details-share gds-btn gds-btn-ghost gds-icon-btn", e.type = "button";
|
|
3316
3515
|
let n = t.i18n?.shareButton ?? "Share";
|
|
@@ -3329,53 +3528,53 @@ function Tn(e, t) {
|
|
|
3329
3528
|
try {
|
|
3330
3529
|
navigator.share ? await navigator.share({
|
|
3331
3530
|
title: i ?? "",
|
|
3332
|
-
url:
|
|
3333
|
-
}) : navigator.clipboard && (await navigator.clipboard.writeText(
|
|
3531
|
+
url: E
|
|
3532
|
+
}) : navigator.clipboard && (await navigator.clipboard.writeText(E), e.classList.add("gengage-chat-product-details-share--copied"), setTimeout(() => e.classList.remove("gengage-chat-product-details-share--copied"), 1500));
|
|
3334
3533
|
} catch {}
|
|
3335
|
-
}),
|
|
3534
|
+
}), C.appendChild(e);
|
|
3336
3535
|
}
|
|
3337
|
-
|
|
3338
|
-
let
|
|
3339
|
-
return (
|
|
3536
|
+
C.childElementCount > 0 && b.appendChild(C), n.appendChild(b);
|
|
3537
|
+
let D = hn(r), O = vn(r);
|
|
3538
|
+
return (D || O) && n.appendChild(In(D, O, t)), n;
|
|
3340
3539
|
}
|
|
3341
|
-
function
|
|
3540
|
+
function Nn(e) {
|
|
3342
3541
|
if (e.nodeType === Node.TEXT_NODE) return document.createTextNode(e.textContent ?? "");
|
|
3343
3542
|
if (e.nodeType !== Node.ELEMENT_NODE) return null;
|
|
3344
3543
|
let t = e, n = t.tagName.toUpperCase();
|
|
3345
|
-
if (
|
|
3346
|
-
if (
|
|
3544
|
+
if (cn.has(n)) return null;
|
|
3545
|
+
if (!sn.has(n)) {
|
|
3347
3546
|
let e = document.createDocumentFragment();
|
|
3348
3547
|
for (let n of Array.from(t.childNodes)) {
|
|
3349
|
-
let t =
|
|
3548
|
+
let t = Nn(n);
|
|
3350
3549
|
t && e.appendChild(t);
|
|
3351
3550
|
}
|
|
3352
3551
|
return e;
|
|
3353
3552
|
}
|
|
3354
3553
|
let r = document.createElement(n.toLowerCase());
|
|
3355
3554
|
for (let e of Array.from(t.childNodes)) {
|
|
3356
|
-
let t =
|
|
3555
|
+
let t = Nn(e);
|
|
3357
3556
|
t && r.appendChild(t);
|
|
3358
3557
|
}
|
|
3359
3558
|
return r;
|
|
3360
3559
|
}
|
|
3361
|
-
function
|
|
3560
|
+
function Pn(e, t) {
|
|
3362
3561
|
let n = t.split(/\n{2,}/).map((e) => e.replace(/\s+/g, " ").trim()).filter(Boolean);
|
|
3363
3562
|
if (n.length !== 0) for (let t of n) {
|
|
3364
3563
|
let n = document.createElement("p");
|
|
3365
3564
|
n.textContent = t, e.appendChild(n);
|
|
3366
3565
|
}
|
|
3367
3566
|
}
|
|
3368
|
-
function
|
|
3567
|
+
function Fn(e, t) {
|
|
3369
3568
|
if (e.classList.add("gengage-chat-product-description"), t.html && typeof DOMParser < "u") {
|
|
3370
|
-
let n = new DOMParser().parseFromString(t.html, "text/html"), r = Array.from(n.body.childNodes).map((e) =>
|
|
3569
|
+
let n = new DOMParser().parseFromString(t.html, "text/html"), r = Array.from(n.body.childNodes).map((e) => Nn(e)).filter((e) => !!e && (e.nodeType === Node.ELEMENT_NODE || !!e.textContent?.trim()));
|
|
3371
3570
|
if (r.length > 0) {
|
|
3372
3571
|
for (let t of r) e.appendChild(t);
|
|
3373
3572
|
return;
|
|
3374
3573
|
}
|
|
3375
3574
|
}
|
|
3376
|
-
|
|
3575
|
+
Pn(e, t.text);
|
|
3377
3576
|
}
|
|
3378
|
-
function
|
|
3577
|
+
function In(e, t, n) {
|
|
3379
3578
|
let r = document.createElement("div");
|
|
3380
3579
|
r.className = "gengage-chat-product-detail-tabs";
|
|
3381
3580
|
let i = document.createElement("div");
|
|
@@ -3385,7 +3584,7 @@ function kn(e, t, n) {
|
|
|
3385
3584
|
let t = document.createElement("button");
|
|
3386
3585
|
t.className = "gengage-chat-product-detail-tab gds-tab gengage-chat-product-detail-tab--active is-active", t.type = "button", t.setAttribute("aria-selected", "true"), t.textContent = n.i18n?.productInfoTab ?? "Product Info", i.appendChild(t);
|
|
3387
3586
|
let r = document.createElement("div");
|
|
3388
|
-
r.className = "gengage-chat-product-detail-tab-panel",
|
|
3587
|
+
r.className = "gengage-chat-product-detail-tab-panel", Fn(r, e), a.push(r);
|
|
3389
3588
|
}
|
|
3390
3589
|
if (t) {
|
|
3391
3590
|
let r = document.createElement("button");
|
|
@@ -3419,7 +3618,7 @@ function kn(e, t, n) {
|
|
|
3419
3618
|
for (let e of a) r.appendChild(e);
|
|
3420
3619
|
return r;
|
|
3421
3620
|
}
|
|
3422
|
-
function
|
|
3621
|
+
function Ln(e) {
|
|
3423
3622
|
let t = "width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"";
|
|
3424
3623
|
switch (e) {
|
|
3425
3624
|
case "related": return `<svg ${t} aria-hidden="true"><path d="M13 2 3 14h9l-1 8 10-12h-9l1-8z"/></svg>`;
|
|
@@ -3428,19 +3627,19 @@ function An(e) {
|
|
|
3428
3627
|
default: return "";
|
|
3429
3628
|
}
|
|
3430
3629
|
}
|
|
3431
|
-
function
|
|
3630
|
+
function Rn() {
|
|
3432
3631
|
return "<svg class=\"gengage-chat-product-sort-chevron\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg>";
|
|
3433
3632
|
}
|
|
3434
|
-
function
|
|
3633
|
+
function zn() {
|
|
3435
3634
|
return "<svg class=\"gengage-chat-product-sort-check\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>";
|
|
3436
3635
|
}
|
|
3437
|
-
function
|
|
3636
|
+
function Bn() {
|
|
3438
3637
|
return "<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M8 3 4 7l4 4\"/><path d=\"M16 21l4-4-4-4\"/><path d=\"M4 7h16\"/><path d=\"M20 17H4\"/></svg>";
|
|
3439
3638
|
}
|
|
3440
|
-
function
|
|
3639
|
+
function Vn(e, t) {
|
|
3441
3640
|
return e.type === t.type && e.direction === t.direction;
|
|
3442
3641
|
}
|
|
3443
|
-
function
|
|
3642
|
+
function Hn(e, t, n) {
|
|
3444
3643
|
if (!n || n.type === "related") return e;
|
|
3445
3644
|
let r = e.map((e) => {
|
|
3446
3645
|
let n = t.elements[e]?.props?.product, r = n ? Number(n.price) : NaN;
|
|
@@ -3451,8 +3650,8 @@ function Fn(e, t, n) {
|
|
|
3451
3650
|
});
|
|
3452
3651
|
return r.sort((e, t) => e.price === Infinity && t.price === Infinity ? 0 : e.price === Infinity ? 1 : t.price === Infinity ? -1 : n.direction === "desc" ? t.price - e.price : e.price - t.price), r.map((e) => e.id);
|
|
3453
3652
|
}
|
|
3454
|
-
function
|
|
3455
|
-
let i =
|
|
3653
|
+
function Un(e, t, n, r) {
|
|
3654
|
+
let i = Hn(t, n, r), a = /* @__PURE__ */ new Map();
|
|
3456
3655
|
for (let t of Array.from(e.children)) {
|
|
3457
3656
|
let e = t.dataset.elementId;
|
|
3458
3657
|
e && a.set(e, t);
|
|
@@ -3462,7 +3661,7 @@ function In(e, t, n, r) {
|
|
|
3462
3661
|
n && e.appendChild(n);
|
|
3463
3662
|
}
|
|
3464
3663
|
}
|
|
3465
|
-
function
|
|
3664
|
+
function Wn(e, t, n, r) {
|
|
3466
3665
|
let i = document.createElement("div");
|
|
3467
3666
|
i.className = "gengage-chat-product-grid-wrapper";
|
|
3468
3667
|
let a = e.children ?? [], o = document.createElement("div");
|
|
@@ -3502,12 +3701,12 @@ function Ln(e, t, n, r) {
|
|
|
3502
3701
|
let p = document.createElement("span");
|
|
3503
3702
|
p.className = "gengage-chat-product-sort-trigger-label";
|
|
3504
3703
|
let m = (e) => {
|
|
3505
|
-
let t = c.find((t) =>
|
|
3506
|
-
p.textContent = t.label, f.innerHTML =
|
|
3704
|
+
let t = c.find((t) => Vn(t.sortState, e)) ?? c[0];
|
|
3705
|
+
p.textContent = t.label, f.innerHTML = Ln(t.icon), l.dataset.sortIcon = t.icon, u.setAttribute("aria-label", `${d}: ${t.label}`), u.title = t.label;
|
|
3507
3706
|
};
|
|
3508
3707
|
m(n);
|
|
3509
3708
|
let h = document.createElement("span");
|
|
3510
|
-
h.className = "gengage-chat-product-sort-trigger-chevron", h.innerHTML =
|
|
3709
|
+
h.className = "gengage-chat-product-sort-trigger-chevron", h.innerHTML = Rn(), u.appendChild(f), u.appendChild(p), u.appendChild(h);
|
|
3511
3710
|
let g = document.createElement("div");
|
|
3512
3711
|
g.className = "gengage-chat-product-sort-menu gds-menu", g.hidden = !0, g.setAttribute("role", "listbox"), g.setAttribute("aria-label", d);
|
|
3513
3712
|
let _ = e.ownerDocument, v = null, y = () => {
|
|
@@ -3530,17 +3729,17 @@ function Ln(e, t, n, r) {
|
|
|
3530
3729
|
for (let e of c) {
|
|
3531
3730
|
let i = document.createElement("button");
|
|
3532
3731
|
i.type = "button", i.className = "gengage-chat-product-sort-option gds-menu-option", i.setAttribute("role", "option");
|
|
3533
|
-
let s =
|
|
3732
|
+
let s = Vn(n, e.sortState);
|
|
3534
3733
|
i.setAttribute("aria-selected", s ? "true" : "false"), s && i.classList.add("gengage-chat-product-sort-option--active", "gds-menu-option-active");
|
|
3535
3734
|
let c = e.sortState.type === "related" ? "related" : `price-${e.sortState.direction ?? ""}`;
|
|
3536
3735
|
i.dataset.sortKey = c;
|
|
3537
3736
|
let l = document.createElement("span");
|
|
3538
|
-
l.className = "gengage-chat-product-sort-option-icon", l.innerHTML =
|
|
3737
|
+
l.className = "gengage-chat-product-sort-option-icon", l.innerHTML = Ln(e.icon);
|
|
3539
3738
|
let u = document.createElement("span");
|
|
3540
3739
|
u.className = "gengage-chat-product-sort-option-label", u.textContent = e.label;
|
|
3541
3740
|
let d = document.createElement("span");
|
|
3542
|
-
d.className = "gengage-chat-product-sort-option-check", d.innerHTML =
|
|
3543
|
-
n = e.sortState, r.onSortChange?.(e.sortState),
|
|
3741
|
+
d.className = "gengage-chat-product-sort-option-check", d.innerHTML = zn(), d.setAttribute("aria-hidden", "true"), s || d.classList.add("gengage-chat-product-sort-option-check--hidden"), i.appendChild(l), i.appendChild(u), i.appendChild(d), i.addEventListener("click", () => {
|
|
3742
|
+
n = e.sortState, r.onSortChange?.(e.sortState), Un(o, a, t, e.sortState), g.querySelectorAll(".gengage-chat-product-sort-option").forEach((e) => {
|
|
3544
3743
|
let t = e, n = t.dataset.sortKey === c;
|
|
3545
3744
|
t.classList.toggle("gengage-chat-product-sort-option--active", n), t.classList.toggle("gds-menu-option-active", n), t.setAttribute("aria-selected", n ? "true" : "false"), t.querySelector(".gengage-chat-product-sort-option-check")?.classList.toggle("gengage-chat-product-sort-option-check--hidden", !n);
|
|
3546
3745
|
}), m(e.sortState), y();
|
|
@@ -3550,7 +3749,7 @@ function Ln(e, t, n, r) {
|
|
|
3550
3749
|
let t = document.createElement("button");
|
|
3551
3750
|
t.className = "gengage-chat-comparison-toggle-btn gds-btn gds-btn-ghost", t.type = "button", r.comparisonSelectMode && t.classList.add("gengage-chat-comparison-toggle-btn--active"), r.isStreaming && t.classList.add("gengage-chat-comparison-toggle-btn--hidden");
|
|
3552
3751
|
let n = document.createElement("span");
|
|
3553
|
-
n.className = "gengage-chat-comparison-toggle-icon", n.innerHTML =
|
|
3752
|
+
n.className = "gengage-chat-comparison-toggle-icon", n.innerHTML = Bn();
|
|
3554
3753
|
let i = document.createElement("span");
|
|
3555
3754
|
i.className = "gengage-chat-comparison-toggle-label";
|
|
3556
3755
|
let a = r.i18n?.compareSelected ?? "Compare";
|
|
@@ -3573,13 +3772,13 @@ function Ln(e, t, n, r) {
|
|
|
3573
3772
|
let t = document.createElement("span");
|
|
3574
3773
|
t.className = "gengage-chat-product-grid-head-title", t.textContent = s, e.appendChild(t), i.appendChild(e);
|
|
3575
3774
|
}
|
|
3576
|
-
let c =
|
|
3775
|
+
let c = Hn(a, t, r?.productSort);
|
|
3577
3776
|
for (let e of c) {
|
|
3578
3777
|
if (!t.elements[e]) continue;
|
|
3579
3778
|
let r = n(e);
|
|
3580
3779
|
r && (r.dataset.elementId = e, o.appendChild(r));
|
|
3581
3780
|
}
|
|
3582
|
-
if ((r?.isMobile ??
|
|
3781
|
+
if ((r?.isMobile ?? Kt()) && o.classList.add("gengage-chat-product-grid--mobile"), i.appendChild(o), e.props?.endOfList !== !0 && a.length > 0) {
|
|
3583
3782
|
let e = r?.i18n?.viewMoreLabel ?? "Show More", t = document.createElement("button");
|
|
3584
3783
|
t.className = "gengage-chat-product-grid-view-more", t.type = "button", t.textContent = e, t.addEventListener("click", () => {
|
|
3585
3784
|
r?.onAction({
|
|
@@ -3589,14 +3788,14 @@ function Ln(e, t, n, r) {
|
|
|
3589
3788
|
});
|
|
3590
3789
|
}), i.appendChild(t);
|
|
3591
3790
|
}
|
|
3592
|
-
let l = r?.isMobile ??
|
|
3791
|
+
let l = r?.isMobile ?? Kt();
|
|
3593
3792
|
if (r?.comparisonSelectMode && r.comparisonSelectedSkus && !l) {
|
|
3594
|
-
let e =
|
|
3793
|
+
let e = Bt(r.comparisonSelectedSkus, r);
|
|
3595
3794
|
i.appendChild(e);
|
|
3596
3795
|
}
|
|
3597
3796
|
return i;
|
|
3598
3797
|
}
|
|
3599
|
-
function
|
|
3798
|
+
function Gn(e, t) {
|
|
3600
3799
|
let n = e.props ?? {}, r = n.keyDifferencesHtml, i = n.recommended, a = n.products ?? [], o = n.attributes ?? [], s = n.highlights ?? [], c = n.specialCases, l = n.recommendedText, u = n.winnerHits, d = n.productActions;
|
|
3601
3800
|
if (!i) return document.createElement("div");
|
|
3602
3801
|
let f = {
|
|
@@ -3623,10 +3822,10 @@ function Rn(e, t) {
|
|
|
3623
3822
|
specialCasesLabel: t.i18n.specialCasesLabel,
|
|
3624
3823
|
addToCartButton: t.i18n.addToCartButton
|
|
3625
3824
|
});
|
|
3626
|
-
let p =
|
|
3627
|
-
return (t.isMobile ??
|
|
3825
|
+
let p = at(f);
|
|
3826
|
+
return (t.isMobile ?? Kt()) && p.classList.add("gengage-chat-comparison--mobile"), p;
|
|
3628
3827
|
}
|
|
3629
|
-
function
|
|
3828
|
+
function Kn(e) {
|
|
3630
3829
|
let t = document.createElement("hr");
|
|
3631
3830
|
t.className = "gengage-chat-divider";
|
|
3632
3831
|
let n = e.props?.label;
|
|
@@ -3642,7 +3841,7 @@ function zn(e) {
|
|
|
3642
3841
|
}
|
|
3643
3842
|
//#endregion
|
|
3644
3843
|
//#region src/chat/components/typewriter.ts
|
|
3645
|
-
var
|
|
3844
|
+
var qn = new Set([
|
|
3646
3845
|
"P",
|
|
3647
3846
|
"DIV",
|
|
3648
3847
|
"H1",
|
|
@@ -3665,23 +3864,23 @@ var Bn = new Set([
|
|
|
3665
3864
|
"DT",
|
|
3666
3865
|
"DD"
|
|
3667
3866
|
]);
|
|
3668
|
-
function
|
|
3867
|
+
function Jn(e) {
|
|
3669
3868
|
let t = [], n = [];
|
|
3670
|
-
for (let r of e) r.nodeType === Node.ELEMENT_NODE &&
|
|
3869
|
+
for (let r of e) r.nodeType === Node.ELEMENT_NODE && qn.has(r.tagName) ? (n.length > 0 && (t.push(n), n = []), t.push([r])) : n.push(r);
|
|
3671
3870
|
return n.length > 0 && t.push(n), t;
|
|
3672
3871
|
}
|
|
3673
|
-
function
|
|
3872
|
+
function Yn(e) {
|
|
3674
3873
|
for (let t of e) for (let e of t) if (e.nodeType === Node.ELEMENT_NODE && (e.tagName === "TABLE" || e.querySelector?.("table"))) return !0;
|
|
3675
3874
|
return !1;
|
|
3676
3875
|
}
|
|
3677
|
-
function
|
|
3876
|
+
function Xn() {
|
|
3678
3877
|
return typeof window > "u" || typeof window.matchMedia != "function" ? !1 : window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
3679
3878
|
}
|
|
3680
|
-
function
|
|
3879
|
+
function Zn(e) {
|
|
3681
3880
|
let { container: t, html: n, delayMs: r = 30, onTick: i, onComplete: a } = e, o = document.createElement("template");
|
|
3682
3881
|
o.innerHTML = n;
|
|
3683
|
-
let s =
|
|
3684
|
-
if (
|
|
3882
|
+
let s = Jn(o.content.childNodes);
|
|
3883
|
+
if (Xn() || s.length <= 1 || Yn(s)) return t.innerHTML = n, a?.(), {
|
|
3685
3884
|
complete() {},
|
|
3686
3885
|
cancel() {},
|
|
3687
3886
|
isRunning: !1
|
|
@@ -3712,10 +3911,10 @@ function Wn(e) {
|
|
|
3712
3911
|
}
|
|
3713
3912
|
//#endregion
|
|
3714
3913
|
//#region src/chat/components/productMentionLinker.ts
|
|
3715
|
-
function
|
|
3914
|
+
function Qn(e) {
|
|
3716
3915
|
return e !== void 0 && /[\p{L}\p{N}_]/u.test(e);
|
|
3717
3916
|
}
|
|
3718
|
-
function
|
|
3917
|
+
function $n(e) {
|
|
3719
3918
|
let { container: t, mentions: n, onProductClick: r } = e;
|
|
3720
3919
|
if (n.length === 0) return;
|
|
3721
3920
|
let i = /* @__PURE__ */ new Map();
|
|
@@ -3729,7 +3928,7 @@ function Kn(e) {
|
|
|
3729
3928
|
continue;
|
|
3730
3929
|
}
|
|
3731
3930
|
let c = s > 0 ? t[s - 1] : void 0, l = t[s + n.short_name.length];
|
|
3732
|
-
if (
|
|
3931
|
+
if (Qn(c) || Qn(l)) {
|
|
3733
3932
|
a = i.nextNode();
|
|
3734
3933
|
continue;
|
|
3735
3934
|
}
|
|
@@ -3747,25 +3946,25 @@ function Kn(e) {
|
|
|
3747
3946
|
}
|
|
3748
3947
|
//#endregion
|
|
3749
3948
|
//#region src/chat/components/actionClassifier.ts
|
|
3750
|
-
var
|
|
3949
|
+
var er = new Set([
|
|
3751
3950
|
"search",
|
|
3752
3951
|
"info",
|
|
3753
3952
|
"review",
|
|
3754
3953
|
"similar"
|
|
3755
|
-
]),
|
|
3954
|
+
]), tr = new Set([
|
|
3756
3955
|
"quickAnswer",
|
|
3757
3956
|
"reviewSummary",
|
|
3758
3957
|
"searchDiscovery",
|
|
3759
3958
|
"launchDiscovery",
|
|
3760
3959
|
"exploreTogetherV2"
|
|
3761
3960
|
]);
|
|
3762
|
-
function
|
|
3763
|
-
return !!(e.icon &&
|
|
3961
|
+
function nr(e) {
|
|
3962
|
+
return !!(e.icon && er.has(e.icon) || e.action?.type && tr.has(e.action.type));
|
|
3764
3963
|
}
|
|
3765
3964
|
//#endregion
|
|
3766
3965
|
//#region src/chat/components/ChoicePrompter.ts
|
|
3767
|
-
var
|
|
3768
|
-
function
|
|
3966
|
+
var rr = "gengage_choice_prompter_dismissed", ir = "gengage_choice_prompter_dismissed_global";
|
|
3967
|
+
function ar(e) {
|
|
3769
3968
|
let t = document.createElement("div");
|
|
3770
3969
|
t.className = "gengage-chat-choice-prompter gds-card", t.dataset.gengagePart = "choice-prompter";
|
|
3771
3970
|
let n = document.createElement("div");
|
|
@@ -3776,50 +3975,50 @@ function Qn(e) {
|
|
|
3776
3975
|
i.className = "gengage-chat-choice-prompter-suggestion", i.textContent = e.suggestion, n.appendChild(i), t.appendChild(n);
|
|
3777
3976
|
let a = document.createElement("button");
|
|
3778
3977
|
a.type = "button", a.className = "gengage-chat-choice-prompter-cta gds-btn gds-btn-primary", a.dataset.gengagePart = "choice-prompter-cta", a.textContent = e.ctaLabel, a.addEventListener("click", () => {
|
|
3779
|
-
|
|
3978
|
+
cr(e.threadId), t.remove(), e.onCtaClick();
|
|
3780
3979
|
}), t.appendChild(a);
|
|
3781
3980
|
let o = document.createElement("button");
|
|
3782
3981
|
return o.type = "button", o.className = "gengage-chat-choice-prompter-dismiss", o.dataset.gengagePart = "choice-prompter-dismiss", o.textContent = "×", o.setAttribute("aria-label", e.dismissAriaLabel ?? "Dismiss"), o.addEventListener("click", () => {
|
|
3783
|
-
|
|
3982
|
+
cr(e.threadId), t.remove(), e.onDismiss?.();
|
|
3784
3983
|
}), t.appendChild(o), t;
|
|
3785
3984
|
}
|
|
3786
|
-
function
|
|
3985
|
+
function or() {
|
|
3787
3986
|
try {
|
|
3788
|
-
sessionStorage.removeItem(
|
|
3987
|
+
sessionStorage.removeItem(rr), sessionStorage.removeItem(ir);
|
|
3789
3988
|
} catch {}
|
|
3790
3989
|
}
|
|
3791
|
-
function
|
|
3990
|
+
function sr(e) {
|
|
3792
3991
|
try {
|
|
3793
|
-
let t = sessionStorage.getItem(
|
|
3992
|
+
let t = sessionStorage.getItem(rr);
|
|
3794
3993
|
return t ? JSON.parse(t).includes(e) : !1;
|
|
3795
3994
|
} catch {
|
|
3796
3995
|
return !1;
|
|
3797
3996
|
}
|
|
3798
3997
|
}
|
|
3799
|
-
function
|
|
3998
|
+
function cr(e) {
|
|
3800
3999
|
try {
|
|
3801
|
-
let t = sessionStorage.getItem(
|
|
3802
|
-
n.includes(e) || n.push(e), sessionStorage.setItem(
|
|
4000
|
+
let t = sessionStorage.getItem(rr), n = t ? JSON.parse(t) : [];
|
|
4001
|
+
n.includes(e) || n.push(e), sessionStorage.setItem(rr, JSON.stringify(n));
|
|
3803
4002
|
} catch {}
|
|
3804
4003
|
}
|
|
3805
|
-
function
|
|
3806
|
-
e &&
|
|
4004
|
+
function lr(e) {
|
|
4005
|
+
e && cr(e);
|
|
3807
4006
|
}
|
|
3808
4007
|
//#endregion
|
|
3809
4008
|
//#region src/common/indexed-db.ts
|
|
3810
|
-
var
|
|
3811
|
-
function
|
|
4009
|
+
var ur = "gengage_assistant", dr = 3, Y = "sessions", X = "context", Z = "payload", Q = "favorites";
|
|
4010
|
+
function fr(e) {
|
|
3812
4011
|
return new Promise((t, n) => {
|
|
3813
4012
|
e.onsuccess = () => t(e.result), e.onerror = () => n(e.error);
|
|
3814
4013
|
});
|
|
3815
4014
|
}
|
|
3816
|
-
function
|
|
4015
|
+
function $(e) {
|
|
3817
4016
|
return new Promise((t, n) => {
|
|
3818
4017
|
e.oncomplete = () => t(), e.onerror = () => n(e.error), e.onabort = () => n(e.error ?? new DOMException("Transaction aborted"));
|
|
3819
4018
|
});
|
|
3820
4019
|
}
|
|
3821
|
-
var
|
|
3822
|
-
constructor(e =
|
|
4020
|
+
var pr = class {
|
|
4021
|
+
constructor(e = ur, t = dr) {
|
|
3823
4022
|
this._db = null, this._dbName = e, this._version = t;
|
|
3824
4023
|
}
|
|
3825
4024
|
async open() {
|
|
@@ -3827,19 +4026,19 @@ var or = class {
|
|
|
3827
4026
|
let n = indexedDB.open(this._dbName, this._version);
|
|
3828
4027
|
n.onupgradeneeded = (e) => {
|
|
3829
4028
|
let t = n.result, r = e.oldVersion;
|
|
3830
|
-
r < 1 && (t.createObjectStore(
|
|
4029
|
+
r < 1 && (t.createObjectStore(Y, { keyPath: [
|
|
3831
4030
|
"userId",
|
|
3832
4031
|
"appId",
|
|
3833
4032
|
"sessionId"
|
|
3834
|
-
] }), t.createObjectStore(
|
|
4033
|
+
] }), t.createObjectStore(X, { keyPath: ["sessionId", "threadId"] }), t.createObjectStore(Z, { keyPath: ["threadId", "messageId"] }).createIndex("threadId", "threadId", { unique: !1 }), t.createObjectStore(Q, { keyPath: [
|
|
3835
4034
|
"userId",
|
|
3836
4035
|
"appId",
|
|
3837
4036
|
"sku"
|
|
3838
|
-
] })), r >= 1 && r < 2 && (t.objectStoreNames.contains(
|
|
4037
|
+
] })), r >= 1 && r < 2 && (t.objectStoreNames.contains(Y) && t.deleteObjectStore(Y), t.objectStoreNames.contains(Z) && t.deleteObjectStore(Z), t.createObjectStore(Y, { keyPath: [
|
|
3839
4038
|
"userId",
|
|
3840
4039
|
"appId",
|
|
3841
4040
|
"sessionId"
|
|
3842
|
-
] }), t.createObjectStore(
|
|
4041
|
+
] }), t.createObjectStore(Z, { keyPath: ["threadId", "messageId"] }).createIndex("threadId", "threadId", { unique: !1 }), t.objectStoreNames.contains(X) || t.createObjectStore(X, { keyPath: ["sessionId", "threadId"] })), r < 3 && (t.objectStoreNames.contains(Q) || t.createObjectStore(Q, { keyPath: [
|
|
3843
4042
|
"userId",
|
|
3844
4043
|
"appId",
|
|
3845
4044
|
"sku"
|
|
@@ -3853,25 +4052,25 @@ var or = class {
|
|
|
3853
4052
|
this._db?.close(), this._db = null;
|
|
3854
4053
|
}
|
|
3855
4054
|
async saveSession(e) {
|
|
3856
|
-
let t = this._requireDb().transaction(
|
|
3857
|
-
t.objectStore(
|
|
4055
|
+
let t = this._requireDb().transaction(Y, "readwrite");
|
|
4056
|
+
t.objectStore(Y).put(e), await $(t);
|
|
3858
4057
|
}
|
|
3859
4058
|
async loadSession(e, t, n) {
|
|
3860
|
-
return await
|
|
4059
|
+
return await fr(this._requireDb().transaction(Y, "readonly").objectStore(Y).get([
|
|
3861
4060
|
e,
|
|
3862
4061
|
t,
|
|
3863
4062
|
n
|
|
3864
4063
|
])) ?? null;
|
|
3865
4064
|
}
|
|
3866
4065
|
async saveContext(e) {
|
|
3867
|
-
let t = this._requireDb().transaction(
|
|
3868
|
-
t.objectStore(
|
|
4066
|
+
let t = this._requireDb().transaction(X, "readwrite");
|
|
4067
|
+
t.objectStore(X).put(e), await $(t);
|
|
3869
4068
|
}
|
|
3870
4069
|
async loadContext(e, t) {
|
|
3871
|
-
return await
|
|
4070
|
+
return await fr(this._requireDb().transaction(X, "readonly").objectStore(X).get([e, t])) ?? null;
|
|
3872
4071
|
}
|
|
3873
4072
|
async deleteContextsAfterThread(e, t) {
|
|
3874
|
-
let n = this._requireDb().transaction(
|
|
4073
|
+
let n = this._requireDb().transaction(X, "readwrite"), r = n.objectStore(X).openCursor();
|
|
3875
4074
|
await new Promise((n, i) => {
|
|
3876
4075
|
r.onsuccess = () => {
|
|
3877
4076
|
let i = r.result;
|
|
@@ -3885,10 +4084,10 @@ var or = class {
|
|
|
3885
4084
|
} catch {}
|
|
3886
4085
|
i.continue();
|
|
3887
4086
|
}, r.onerror = () => i(r.error);
|
|
3888
|
-
}), await
|
|
4087
|
+
}), await $(n);
|
|
3889
4088
|
}
|
|
3890
4089
|
async loadLatestContext(e) {
|
|
3891
|
-
let t = this._requireDb().transaction(
|
|
4090
|
+
let t = this._requireDb().transaction(X, "readonly").objectStore(X), n = IDBKeyRange.bound([e, ""], [e, ""]);
|
|
3892
4091
|
return new Promise((e, r) => {
|
|
3893
4092
|
let i = t.openCursor(n, "prev");
|
|
3894
4093
|
i.onsuccess = () => {
|
|
@@ -3898,14 +4097,14 @@ var or = class {
|
|
|
3898
4097
|
});
|
|
3899
4098
|
}
|
|
3900
4099
|
async savePayload(e) {
|
|
3901
|
-
let t = this._requireDb().transaction(
|
|
3902
|
-
t.objectStore(
|
|
4100
|
+
let t = this._requireDb().transaction(Z, "readwrite");
|
|
4101
|
+
t.objectStore(Z).put(e), await $(t);
|
|
3903
4102
|
}
|
|
3904
4103
|
async loadPayload(e, t) {
|
|
3905
|
-
return await
|
|
4104
|
+
return await fr(this._requireDb().transaction(Z, "readonly").objectStore(Z).get([e, t])) ?? null;
|
|
3906
4105
|
}
|
|
3907
4106
|
async loadPayloadsByThread(e) {
|
|
3908
|
-
let t = this._requireDb().transaction(
|
|
4107
|
+
let t = this._requireDb().transaction(Z, "readonly").objectStore(Z).index("threadId"), n = [];
|
|
3909
4108
|
return new Promise((r, i) => {
|
|
3910
4109
|
let a = t.openCursor(IDBKeyRange.only(e));
|
|
3911
4110
|
a.onsuccess = () => {
|
|
@@ -3919,22 +4118,22 @@ var or = class {
|
|
|
3919
4118
|
});
|
|
3920
4119
|
}
|
|
3921
4120
|
async saveFavorite(e) {
|
|
3922
|
-
let t = this._requireDb().transaction(
|
|
3923
|
-
t.objectStore(
|
|
4121
|
+
let t = this._requireDb().transaction(Q, "readwrite");
|
|
4122
|
+
t.objectStore(Q).put(e), await $(t);
|
|
3924
4123
|
}
|
|
3925
4124
|
async removeFavorite(e, t, n) {
|
|
3926
|
-
let r = this._requireDb().transaction(
|
|
3927
|
-
r.objectStore(
|
|
4125
|
+
let r = this._requireDb().transaction(Q, "readwrite");
|
|
4126
|
+
r.objectStore(Q).delete([
|
|
3928
4127
|
e,
|
|
3929
4128
|
t,
|
|
3930
4129
|
n
|
|
3931
|
-
]), await
|
|
4130
|
+
]), await $(r);
|
|
3932
4131
|
}
|
|
3933
4132
|
async loadFavorites(e, t) {
|
|
3934
|
-
return (await
|
|
4133
|
+
return (await fr(this._requireDb().transaction(Q, "readonly").objectStore(Q).getAll())).filter((n) => n.userId === e && n.appId === t);
|
|
3935
4134
|
}
|
|
3936
4135
|
async isFavorite(e, t, n) {
|
|
3937
|
-
return await
|
|
4136
|
+
return await fr(this._requireDb().transaction(Q, "readonly").objectStore(Q).get([
|
|
3938
4137
|
e,
|
|
3939
4138
|
t,
|
|
3940
4139
|
n
|
|
@@ -3944,15 +4143,15 @@ var or = class {
|
|
|
3944
4143
|
if (!this._db) throw Error("GengageIndexedDB: database not open. Call open() first.");
|
|
3945
4144
|
return this._db;
|
|
3946
4145
|
}
|
|
3947
|
-
},
|
|
4146
|
+
}, mr = [
|
|
3948
4147
|
"comparisonTable",
|
|
3949
4148
|
"groupList",
|
|
3950
4149
|
"productDetailsSimilars",
|
|
3951
4150
|
"productList"
|
|
3952
|
-
],
|
|
4151
|
+
], hr = class {
|
|
3953
4152
|
constructor(e) {
|
|
3954
4153
|
this._lockCount = 1, this._hiddenByUser = !1, this._lastPanelContentType = null, this._chatShown = !1, this._isFavoritesMode = !1, this._lastExtended = !1, this._onChange = e.onChange;
|
|
3955
|
-
let t = new Set(
|
|
4154
|
+
let t = new Set(mr);
|
|
3956
4155
|
e.productDetailsInPanel && t.add("productDetails"), this._panelContentTypes = t;
|
|
3957
4156
|
}
|
|
3958
4157
|
get isExtended() {
|
|
@@ -3980,7 +4179,7 @@ var or = class {
|
|
|
3980
4179
|
let e = this.isExtended;
|
|
3981
4180
|
e !== this._lastExtended && (this._lastExtended = e, this._onChange(e));
|
|
3982
4181
|
}
|
|
3983
|
-
},
|
|
4182
|
+
}, gr = class {
|
|
3984
4183
|
constructor(e) {
|
|
3985
4184
|
this.deps = e, this.snapshots = /* @__PURE__ */ new Map(), this._snapshotRebuilders = /* @__PURE__ */ new Map(), this.snapshotTypes = /* @__PURE__ */ new Map(), this.activePanelMessageId = null, this.currentType = null, this.threads = [], this.lastActionType = null;
|
|
3986
4185
|
}
|
|
@@ -4018,7 +4217,7 @@ var or = class {
|
|
|
4018
4217
|
let n = this.deps.i18n();
|
|
4019
4218
|
switch (e) {
|
|
4020
4219
|
case "ProductDetailsPanel": return n.panelTitleProductDetails;
|
|
4021
|
-
case "ProductGrid": return
|
|
4220
|
+
case "ProductGrid": return _r(this.lastActionType) ? n.panelTitleSearchResults : n.panelTitleSimilarProducts;
|
|
4022
4221
|
case "ComparisonTable": return n.panelTitleComparisonResults;
|
|
4023
4222
|
case "AIGroupingCards": return n.panelTitleCategories;
|
|
4024
4223
|
default: return "";
|
|
@@ -4033,7 +4232,7 @@ var or = class {
|
|
|
4033
4232
|
updateTopBarForLoading(e) {
|
|
4034
4233
|
let t = this.deps.i18n(), n = {
|
|
4035
4234
|
productDetails: t.panelTitleProductDetails,
|
|
4036
|
-
productList:
|
|
4235
|
+
productList: _r(this.lastActionType) ? t.panelTitleSearchResults : t.panelTitleSimilarProducts,
|
|
4037
4236
|
comparisonTable: t.panelTitleComparisonResults,
|
|
4038
4237
|
groupList: t.panelTitleCategories
|
|
4039
4238
|
}[e] ?? "";
|
|
@@ -4088,15 +4287,15 @@ var or = class {
|
|
|
4088
4287
|
this.snapshots.clear(), this._snapshotRebuilders.clear(), this.snapshotTypes.clear(), this.activePanelMessageId = null, this.currentType = null, this.threads = [];
|
|
4089
4288
|
}
|
|
4090
4289
|
};
|
|
4091
|
-
function
|
|
4290
|
+
function _r(e) {
|
|
4092
4291
|
return e === "user_message" || e === "inputText";
|
|
4093
4292
|
}
|
|
4094
|
-
function
|
|
4293
|
+
function vr(e) {
|
|
4095
4294
|
return e.similarsAppend && e.currentPanelType === "ProductDetailsPanel" && e.hasPanelContent && !e.isPanelLoading ? "appendSimilars" : e.componentType === "ProductGrid" && !e.isFirstPanelContentInStream && e.hasPanelContent && !e.isPanelLoading ? "append" : "replace";
|
|
4096
4295
|
}
|
|
4097
4296
|
//#endregion
|
|
4098
4297
|
//#region src/chat/session-persistence.ts
|
|
4099
|
-
var
|
|
4298
|
+
var yr = class {
|
|
4100
4299
|
constructor(e) {
|
|
4101
4300
|
this.favoritedSkus = /* @__PURE__ */ new Set(), this._favoritesCache = /* @__PURE__ */ new Map(), this._persistLock = Promise.resolve(), this._db = e;
|
|
4102
4301
|
}
|
|
@@ -4157,7 +4356,7 @@ var fr = class {
|
|
|
4157
4356
|
try {
|
|
4158
4357
|
await t();
|
|
4159
4358
|
} catch {}
|
|
4160
|
-
n?.send("openURLInNewTab", { url: e }),
|
|
4359
|
+
n?.send("openURLInNewTab", { url: e }), H(e) && (window.location.href = e);
|
|
4161
4360
|
}
|
|
4162
4361
|
async loadPayload(e, t) {
|
|
4163
4362
|
if (!this._db) return null;
|
|
@@ -4197,7 +4396,7 @@ var fr = class {
|
|
|
4197
4396
|
close() {
|
|
4198
4397
|
this._db?.close(), this._db = null;
|
|
4199
4398
|
}
|
|
4200
|
-
},
|
|
4399
|
+
}, br = (e) => `${e}:assistant`, xr = class {
|
|
4201
4400
|
constructor() {
|
|
4202
4401
|
this.groups = {}, this.pinnedToBottom = !0, this.userInteracting = !1, this.focusedThreadId = null, this.shown = !1, this.lastAutoAnchoredGroupId = null, this.scrollRequest = null, this._nextScrollId = 1;
|
|
4203
4402
|
}
|
|
@@ -4208,7 +4407,7 @@ var fr = class {
|
|
|
4208
4407
|
this.groups = {}, this.pinnedToBottom = !0, this.userInteracting = !1, this.focusedThreadId = null, this.lastAutoAnchoredGroupId = null, this.scrollRequest = null;
|
|
4209
4408
|
}
|
|
4210
4409
|
registerAssistantActivity(e) {
|
|
4211
|
-
let t =
|
|
4410
|
+
let t = br(e), n = this.groups[t], r = this.shown && this.pinnedToBottom && !this.userInteracting ? "active_unread" : "unseen";
|
|
4212
4411
|
this.groups[t] = {
|
|
4213
4412
|
id: t,
|
|
4214
4413
|
threadId: e,
|
|
@@ -4218,7 +4417,7 @@ var fr = class {
|
|
|
4218
4417
|
}, n?.readState === "seen" && this.lastAutoAnchoredGroupId === t && (this.lastAutoAnchoredGroupId = null);
|
|
4219
4418
|
}
|
|
4220
4419
|
finalizeAssistantGroup(e) {
|
|
4221
|
-
let t =
|
|
4420
|
+
let t = br(e), n = this.groups[t];
|
|
4222
4421
|
n && (n.status = "complete", n.updatedAt = Date.now());
|
|
4223
4422
|
}
|
|
4224
4423
|
setGroupReadStates(e) {
|
|
@@ -4259,10 +4458,10 @@ var fr = class {
|
|
|
4259
4458
|
return this.shown && this.userInteracting && !this.pinnedToBottom;
|
|
4260
4459
|
}
|
|
4261
4460
|
getAssistantReadState(e) {
|
|
4262
|
-
return this.groups[
|
|
4461
|
+
return this.groups[br(e)]?.readState;
|
|
4263
4462
|
}
|
|
4264
4463
|
};
|
|
4265
|
-
function
|
|
4464
|
+
function Sr(e, t) {
|
|
4266
4465
|
for (let n = e.length - 1; n >= 0; n--) {
|
|
4267
4466
|
let r = e[n], i = t.getAssistantReadState(r);
|
|
4268
4467
|
if (i !== void 0 && i !== "seen") return r;
|
|
@@ -4271,7 +4470,7 @@ function hr(e, t) {
|
|
|
4271
4470
|
}
|
|
4272
4471
|
//#endregion
|
|
4273
4472
|
//#region src/common/pill-launcher.ts
|
|
4274
|
-
function
|
|
4473
|
+
function Cr(e) {
|
|
4275
4474
|
let { label: t, avatarUrl: n, primaryColor: r, secondaryColor: i = "#111827", fontFamily: a = "inherit", labelClassName: o = "gengage-pill-launcher-label", styleId: s = "gengage-pill-launcher-style", mobileBreakpoint: c = 768, desktopWidth: l = "188px", desktopHeight: u = "60px", iconSize: d = "46px" } = e, f = `${parseInt(l, 10) - 14}px`, p = `${parseInt(u, 10) - 4}px`, m = `${parseInt(d, 10) - 4}px`, h = `
|
|
4276
4475
|
:host {
|
|
4277
4476
|
--pill-primary: ${r};
|
|
@@ -4399,7 +4598,7 @@ button[data-gengage-part="chat-launcher-button"] img {
|
|
|
4399
4598
|
}
|
|
4400
4599
|
//#endregion
|
|
4401
4600
|
//#region src/chat/stream-error-display.ts
|
|
4402
|
-
var
|
|
4601
|
+
var wr = /^HTTP\s+\d{3}\b/i, Tr = [
|
|
4403
4602
|
/response body is null/i,
|
|
4404
4603
|
/streaming not supported/i,
|
|
4405
4604
|
/ECONNREFUSED/i,
|
|
@@ -4410,7 +4609,7 @@ var _r = /^HTTP\s+\d{3}\b/i, vr = [
|
|
|
4410
4609
|
/502\s+bad gateway/i,
|
|
4411
4610
|
/503\s+service unavailable/i,
|
|
4412
4611
|
/504\s+gateway timeout/i
|
|
4413
|
-
],
|
|
4612
|
+
], Er = [
|
|
4414
4613
|
/Traceback\s*\(/i,
|
|
4415
4614
|
/\bSyntaxError\b/,
|
|
4416
4615
|
/\bReferenceError\b/,
|
|
@@ -4422,68 +4621,68 @@ var _r = /^HTTP\s+\d{3}\b/i, vr = [
|
|
|
4422
4621
|
/<anonymous>/i,
|
|
4423
4622
|
/ChunkLoadError/i,
|
|
4424
4623
|
/UnhandledPromiseRejection/i
|
|
4425
|
-
],
|
|
4426
|
-
function
|
|
4624
|
+
], Dr = 720;
|
|
4625
|
+
function Or(e, t) {
|
|
4427
4626
|
if (g(e)) return !0;
|
|
4428
4627
|
let n = e.message.trim();
|
|
4429
|
-
if (
|
|
4628
|
+
if (wr.test(n) || Tr.some((e) => e.test(n))) return !0;
|
|
4430
4629
|
let r = t.trim();
|
|
4431
|
-
if (r.length >
|
|
4630
|
+
if (r.length > Dr) return !0;
|
|
4432
4631
|
let i = r.split(/\n/).length;
|
|
4433
|
-
return !!(i >= 6 ||
|
|
4632
|
+
return !!(i >= 6 || Er.some((e) => e.test(r)) || i >= 3 && /\bat\s+/.test(r));
|
|
4434
4633
|
}
|
|
4435
4634
|
//#endregion
|
|
4436
4635
|
//#region src/chat/kvkk.ts
|
|
4437
|
-
var
|
|
4636
|
+
var kr = "gengage_kvkk_shown", Ar = [
|
|
4438
4637
|
"kvkk",
|
|
4439
4638
|
"kişisel veri",
|
|
4440
4639
|
"kisisel veri"
|
|
4441
|
-
],
|
|
4442
|
-
function
|
|
4640
|
+
], jr = /\b6698\b/;
|
|
4641
|
+
function Mr(e) {
|
|
4443
4642
|
let t = e.toLowerCase();
|
|
4444
|
-
return
|
|
4643
|
+
return Ar.some((e) => t.includes(e)) || jr.test(t);
|
|
4445
4644
|
}
|
|
4446
|
-
function
|
|
4645
|
+
function Nr(e) {
|
|
4447
4646
|
try {
|
|
4448
|
-
return localStorage.getItem(`${
|
|
4647
|
+
return localStorage.getItem(`${kr}_${e}`) === "1";
|
|
4449
4648
|
} catch {
|
|
4450
4649
|
return !1;
|
|
4451
4650
|
}
|
|
4452
4651
|
}
|
|
4453
|
-
function
|
|
4652
|
+
function Pr(e) {
|
|
4454
4653
|
try {
|
|
4455
|
-
localStorage.setItem(`${
|
|
4654
|
+
localStorage.setItem(`${kr}_${e}`, "1");
|
|
4456
4655
|
} catch {}
|
|
4457
4656
|
}
|
|
4458
|
-
function
|
|
4657
|
+
function Fr(e) {
|
|
4459
4658
|
let t = new DOMParser().parseFromString(e, "text/html").body, n = Array.from(t.children);
|
|
4460
|
-
for (let e of n) if (
|
|
4659
|
+
for (let e of n) if (Mr(e.textContent ?? "")) {
|
|
4461
4660
|
e.remove();
|
|
4462
4661
|
break;
|
|
4463
4662
|
}
|
|
4464
4663
|
return t.innerHTML.trim();
|
|
4465
4664
|
}
|
|
4466
|
-
function
|
|
4665
|
+
function Ir(e) {
|
|
4467
4666
|
let t = new DOMParser().parseFromString(e, "text/html");
|
|
4468
|
-
for (let e of Array.from(t.body.children)) if (
|
|
4667
|
+
for (let e of Array.from(t.body.children)) if (Mr(e.textContent ?? "")) return e.outerHTML;
|
|
4469
4668
|
return null;
|
|
4470
4669
|
}
|
|
4471
|
-
var
|
|
4670
|
+
var Lr = {
|
|
4472
4671
|
tr: "TURKISH",
|
|
4473
4672
|
en: "ENGLISH",
|
|
4474
4673
|
de: "GERMAN",
|
|
4475
4674
|
fr: "FRENCH"
|
|
4476
4675
|
};
|
|
4477
|
-
function
|
|
4478
|
-
return e ?
|
|
4676
|
+
function Rr(e) {
|
|
4677
|
+
return e ? Lr[e.toLowerCase().slice(0, 2)] ?? "TURKISH" : "TURKISH";
|
|
4479
4678
|
}
|
|
4480
4679
|
//#endregion
|
|
4481
4680
|
//#region src/chat/components/chat.css?inline
|
|
4482
|
-
var Mr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel-container,.gengage-simbut-root){--ds-neutral-0:#fff;--ds-neutral-25:#fcfcfd;--ds-neutral-50:#f6f7fb;--ds-neutral-100:#f3f4f6;--ds-neutral-200:#e5e7eb;--ds-neutral-300:#d0d5dd;--ds-neutral-500:#667085;--ds-neutral-600:#475467;--ds-neutral-700:#344054;--ds-neutral-900:#111827;--ds-radius-2:8px;--ds-radius-3:12px;--ds-radius-4:16px;--ds-radius-5:20px;--ds-radius-6:24px;--ds-radius-pill:999px;--ds-shadow-1:0 1px 2px #1018280a, 0 1px 3px #1018280f;--ds-shadow-2:0 4px 12px #10182814;--ds-shadow-3:0 10px 24px #1018281f;--client-primary:var(--gengage-primary-color,#b7102a);--client-primary-hover:var(--gengage-primary-hover,color-mix(in srgb, var(--client-primary) 88%, black 12%));--client-primary-active:var(--gengage-primary-active,color-mix(in srgb, var(--client-primary) 78%, black 22%));--client-primary-subtle:color-mix(in srgb, var(--client-primary) 12%, white);--client-primary-soft:color-mix(in srgb, var(--client-primary) 20%, white);--client-on-primary:var(--gengage-primary-foreground,#fff);--client-focus-ring:color-mix(in srgb, var(--client-primary) 32%, transparent);--ai-accent-start:#0b24d6;--ai-accent-end:#f768f2;--ai-accent-soft:linear-gradient(135deg, #0b24d614, #f768f214);--surface-page:var(--gengage-page-bg,var(--ds-neutral-50));--surface-shell:var(--gengage-shell-bg,#10131a);--surface-card:var(--gengage-background-color,var(--ds-neutral-0));--surface-card-muted:var(--gengage-surface-soft,#f8fafc);--surface-card-soft:var(--surface-card-muted);--surface-elevated:var(--gengage-surface-elevated,var(--ds-neutral-0));--surface-input:var(--gengage-input-bg,var(--ds-neutral-0));--surface-overlay:var(--gengage-overlay-bg,#10131a85);--text-primary:var(--gengage-foreground-color,var(--ds-neutral-900));--text-secondary:var(--gengage-text-secondary,#4b5563);--text-muted:var(--gengage-text-muted,#6b7280);--text-inverse:var(--gengage-text-inverse,#f9fafb);--border-subtle:var(--gengage-border-subtle,#1118270f);--border-default:var(--gengage-border-color,#1118271a);--border-strong:var(--gengage-border-strong,#1118272e);--shadow-1:var(--gengage-shadow-1,var(--ds-shadow-1));--shadow-2:var(--gengage-shadow-2,var(--ds-shadow-2));--shadow-3:var(--gengage-shadow-3,var(--ds-shadow-3));--radius-control:var(--gengage-control-radius,var(--ds-radius-3));--radius-card:var(--gengage-card-radius,var(--ds-radius-4));--radius-panel:var(--gengage-panel-radius,var(--ds-radius-6));--radius-pill:var(--gengage-pill-radius,var(--ds-radius-pill));--success:var(--gengage-success-color,#16a34a);--warning:var(--gengage-warning-color,#d97706);--error:var(--gengage-error-color,#dc2626);--info:var(--gengage-info-color,#2563eb);--rating:var(--gengage-rating-color,#f5b301);--gengage-primary:var(--client-primary);--gengage-primary-soft:var(--client-primary-soft);--gengage-primary-subtle:var(--client-primary-subtle);--gengage-text-color:var(--text-primary);--gengage-text-secondary:var(--text-secondary);--gengage-hover-color:var(--surface-card-soft);--ds-button-primary-bg:var(--client-primary);--ds-button-primary-bg-hover:var(--client-primary-hover);--ds-button-primary-bg-active:var(--client-primary-active);--ds-button-primary-fg:var(--client-on-primary);--ds-button-primary-border:color-mix(in srgb, var(--client-primary) 82%, black 18%);--ds-button-secondary-bg:var(--surface-card);--ds-button-secondary-bg-hover:var(--client-primary-subtle);--ds-button-secondary-fg:var(--client-primary);--ds-button-secondary-border:color-mix(in srgb, var(--client-primary) 26%, white);--ds-button-ghost-bg:var(--surface-card-muted);--ds-button-ghost-bg-hover:var(--ds-button-ghost-bg);--ds-button-ghost-fg:var(--text-primary);--ds-button-ghost-fg-hover:var(--client-primary);--ds-button-ghost-border:var(--border-default);--ds-button-ghost-border-hover:color-mix(in srgb, var(--client-primary) 18%, white);--ds-panel-bg:var(--surface-card);--ds-panel-border:var(--border-default);--ds-panel-shadow:var(--shadow-1);--ds-panel-radius:var(--radius-panel);--ds-header-bg:var(--surface-card);--ds-header-fg:var(--text-primary);--ds-header-muted:var(--text-muted);--ds-header-border:var(--border-default);--ds-card-bg:var(--surface-card);--ds-card-bg-soft:var(--surface-card-muted);--ds-card-border:var(--border-default);--ds-card-shadow:var(--shadow-1);--ds-card-shadow-hover:var(--shadow-2);--ds-card-radius:var(--radius-card);--ds-card-border-hover:color-mix(in srgb, var(--client-primary) 14%, var(--border-default));--ds-card-bg-hover:color-mix(in srgb, var(--client-primary) 2%, var(--surface-card));--ds-product-card-media-bg:var(--surface-card-muted);--ds-product-card-media-border:var(--border-subtle);--ds-input-bg:var(--surface-input);--ds-input-border:var(--border-default);--ds-input-radius:16px;--ds-input-focus-border:color-mix(in srgb, var(--client-primary) 28%, white);--ds-input-focus-ring:0 0 0 4px var(--client-focus-ring);--ds-input-highlight:inset 0 1px 0 #fff9;--ds-chip-bg:var(--surface-card);--ds-chip-border:var(--border-default);--ds-chip-fg:var(--text-secondary);--ds-chip-bg-hover:var(--surface-card-muted);--ds-chip-bg-active:color-mix(in srgb, var(--client-primary) 8%, white);--ds-chip-border-active:color-mix(in srgb, var(--client-primary) 30%, white);--ds-chip-fg-active:var(--client-primary);--ds-tab-bg:var(--surface-card);--ds-tab-bg-hover:var(--surface-card-muted);--ds-tab-bg-active:color-mix(in srgb, var(--client-primary) 8%, white);--ds-tab-border:var(--border-default);--ds-tab-border-active:color-mix(in srgb, var(--client-primary) 26%, white);--ds-tab-fg:var(--text-secondary);--ds-tab-fg-active:var(--client-primary);--ds-badge-brand-bg:color-mix(in srgb, var(--client-primary) 10%, white);--ds-badge-brand-border:color-mix(in srgb, var(--client-primary) 18%, white);--ds-badge-brand-fg:var(--client-primary);--ds-message-user-bg:color-mix(in srgb, var(--client-primary) 10%, white);--ds-message-user-fg:var(--text-primary);--ds-message-user-border:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));--ds-message-user-shadow:none;--ds-message-assistant-bg:var(--surface-card-soft);--ds-message-assistant-fg:var(--text-primary);--ds-message-assistant-border:var(--border-default);--ds-message-assistant-shadow:none;--ds-message-active-outline:color-mix(in srgb, var(--client-primary) 68%, white);--ds-progress-card-border:var(--border-subtle);--ds-progress-mark-bg:color-mix(in srgb, var(--ai-accent-start) 8%, var(--surface-card));--ds-progress-mark-border:color-mix(in srgb, var(--ai-accent-start) 12%, var(--border-default));--ds-progress-scrollbar-thumb:color-mix(in srgb, var(--text-primary) 18%, transparent);--ds-toast-error-bg:color-mix(in srgb, var(--error) 5%, var(--surface-card));--ds-toast-error-border:color-mix(in srgb, var(--error) 18%, var(--border-default));--ds-toast-error-accent:var(--error);--ds-toast-error-fg:color-mix(in srgb, var(--error) 22%, var(--text-primary));--ds-toast-error-shadow:var(--shadow-3);--ds-comparison-table-bg:var(--surface-card);--ds-comparison-table-border:var(--border-default);--ds-comparison-table-header-bg:var(--surface-card-muted);--ds-comparison-table-header-fg:var(--text-muted);--ds-comparison-table-row-border:var(--border-subtle);--ds-comparison-table-winner-bg:color-mix(in srgb, var(--client-primary) 6%, white);--ds-comparison-table-winner-fg:var(--client-primary)}:where(.gds-panel){background:var(--ds-panel-bg);border:1px solid var(--ds-panel-border);border-radius:var(--ds-panel-radius);box-shadow:var(--ds-panel-shadow)}:where(.gengage-qna-panel,.gengage-chat-panel-topbar,.gengage-chat-chat-header,.gengage-chat-panel-ai-zone>.gengage-chat-ai-top-picks,.gengage-chat-grounding-review){border-color:var(--ds-panel-border)}:where(.gds-btn){border-radius:var(--radius-control);min-height:46px;font:inherit;cursor:pointer;border:0;outline:none;justify-content:center;align-items:center;gap:10px;padding:0 18px;font-weight:700;transition:box-shadow .15s,border-color .15s,background-color .15s,color .15s;display:inline-flex}:where(.gds-btn:hover){transform:none}:where(.gds-btn:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-btn:disabled){cursor:not-allowed;opacity:.56;box-shadow:none}:where(.gds-btn-primary){background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);border:1px solid var(--ds-button-primary-border)}:where(.gds-btn-primary:hover){background:var(--ds-button-primary-bg-hover)}:where(.gds-btn-secondary){background:var(--ds-button-secondary-bg);color:var(--ds-button-secondary-fg);border:1px solid var(--ds-button-secondary-border)}:where(.gds-btn-secondary:hover){background:var(--ds-button-secondary-bg-hover)}:where(.gds-btn-ghost){background:var(--ds-button-ghost-bg);color:var(--ds-button-ghost-fg);border:1px solid var(--ds-button-ghost-border)}:where(.gds-btn-ghost:hover){background:var(--ds-button-ghost-bg-hover);border-color:var(--ds-button-ghost-border-hover);color:var(--ds-button-ghost-fg-hover)}:where(.gds-chip){border-radius:var(--radius-pill);border:1px solid var(--ds-chip-border);background:var(--ds-chip-bg);color:var(--ds-chip-fg);align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:700;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}:where(.gds-chip:hover){background:var(--ds-chip-bg-hover);border-color:color-mix(in srgb, var(--client-primary) 16%, var(--ds-chip-border))}:where(.gds-chip:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-chip-active){border-color:var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active)}:where(.gds-badge){border-radius:var(--radius-pill);letter-spacing:.04em;align-items:center;min-height:28px;padding:0 10px;font-size:11px;font-weight:800;display:inline-flex}:where(.gds-badge-brand){background:var(--ds-badge-brand-bg);color:var(--ds-badge-brand-fg);border:1px solid var(--ds-badge-brand-border)}:where(.gds-shell-header){background:var(--ds-header-bg);color:var(--ds-header-fg);border-bottom:1px solid var(--ds-header-border);box-shadow:none;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;display:flex}:where(.gds-shell-header [data-gengage-part=chat-header-powered-by]){color:var(--ds-header-muted)}:where(.gds-icon-btn){border-radius:var(--radius-control);width:42px;min-width:42px;height:42px;min-height:42px;padding:0}:where(.gds-input-shell){border-radius:var(--ds-input-radius);border:1px solid var(--ds-input-border);background:var(--ds-input-bg);min-height:52px;box-shadow:var(--ds-input-highlight);align-items:center;gap:12px;padding:6px 6px 6px 14px;transition:border-color .15s,box-shadow .15s,background-color .15s;display:flex}:where(.gds-input-shell:focus-within){border-color:var(--ds-input-focus-border);box-shadow:var(--ds-input-focus-ring)}:where(.gds-tab){border-radius:var(--radius-pill);border:1px solid var(--ds-tab-border);background:var(--ds-tab-bg);color:var(--ds-tab-fg);align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:700;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}:where(.gds-tab:hover){background:var(--ds-tab-bg-hover)}:where(.gds-tab:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-tab[aria-selected=true],.gds-tab.is-active){color:var(--ds-tab-fg-active);border-color:var(--ds-tab-border-active);background:var(--ds-tab-bg-active)}:where(.gds-toolbar){flex-wrap:wrap;align-items:center;gap:10px;display:flex}:where(.gds-toolbar-compact){gap:8px}:where(.gds-card){background:var(--ds-card-bg);border:1px solid var(--ds-card-border);border-radius:var(--ds-card-radius);box-shadow:var(--ds-card-shadow);transition:border-color .15s,box-shadow .15s,background-color .15s}:where(.gds-card-interactive),:where(.gds-clickable){cursor:pointer}:where(.gds-card-interactive:hover){background:var(--ds-card-bg-hover);border-color:var(--ds-card-border-hover);box-shadow:var(--ds-card-shadow-hover)}:where(.gds-card-soft){background:var(--ds-card-bg-soft)}:where(.gds-product-card){border-radius:16px}:where(.gds-evidence-card){background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-control);box-shadow:var(--shadow-1)}:where(.gds-evidence-card-success){background:color-mix(in srgb, var(--success) 10%, white);border-color:color-mix(in srgb, var(--success) 22%, var(--border-default))}:where(.gds-evidence-card-danger){background:color-mix(in srgb, var(--error) 8%, white);border-color:color-mix(in srgb, var(--error) 20%, var(--border-default))}:where(.gds-evidence-card-warning){background:color-mix(in srgb, var(--warning) 10%, white);border-color:color-mix(in srgb, var(--warning) 22%, var(--border-default))}:where(.gds-message){border-radius:calc(var(--radius-control) + 4px);word-wrap:break-word;overflow-wrap:break-word;border:1px solid #0000;max-width:85%;padding:14px 16px;font-size:14px;font-weight:400;line-height:1.55;animation:.3s cubic-bezier(.2,.7,.2,1) gengage-chat-msg-in}:where(.gds-message-user){background:var(--ds-message-user-bg);color:var(--ds-message-user-fg);border-color:var(--ds-message-user-border);box-shadow:var(--ds-message-user-shadow);border-bottom-right-radius:6px;align-self:flex-end}:where(.gds-message-assistant){background:var(--ds-message-assistant-bg);color:var(--ds-message-assistant-fg);border-color:var(--ds-message-assistant-border);box-shadow:var(--ds-message-assistant-shadow);border-bottom-left-radius:6px;align-self:flex-start;min-width:120px}:where(.gds-message-active){outline:2px solid var(--ds-message-active-outline);outline-offset:-2px}:where(.gds-ai-card){background:var(--surface-card);border:1px solid var(--ds-progress-card-border);border-radius:20px;gap:16px;padding:18px;display:grid}:where(.gds-ai-mark){background:var(--ds-progress-mark-bg);width:42px;height:42px;color:var(--ai-accent-start);border:1px solid var(--ds-progress-mark-border);border-radius:14px;place-items:center;display:grid}:where(.gds-ai-loader-row){align-items:center;gap:12px;display:flex}:where(.gds-progress-loader){border:1px solid color-mix(in srgb, var(--ai-accent-start) 10%, var(--border-default));background:linear-gradient(110deg, var(--surface-card-soft) 8%, color-mix(in srgb, var(--ai-accent-start) 5%, var(--surface-card)) 18%, var(--surface-card-soft) 33%);width:fit-content;max-width:100%;color:var(--text-secondary);background-size:220% 100%;border-radius:14px;align-items:center;gap:10px;padding:8px 14px;animation:1.8s linear infinite gds-progress-shimmer;display:inline-flex}:where(.gds-progress-loader-chat){box-sizing:border-box;align-self:flex-start;width:100%;min-width:0;max-width:85%;display:flex}:where(.gds-progress-loader-chat) .gds-progress-label{overflow-wrap:anywhere;flex:auto;min-width:0}:where(.gds-progress-loader-panel){box-sizing:border-box;justify-content:flex-start;align-items:center;width:100%;min-width:0;max-width:100%;display:flex}:where(.gds-progress-loader-panel) .gds-progress-label{overflow-wrap:anywhere;flex:auto;min-width:0}:where(.gds-progress-label){min-width:0;color:var(--text-secondary);word-break:break-word;font-size:13px;line-height:1.5}:where(.gds-progress-dots){flex-shrink:0;align-items:center;gap:6px;display:inline-flex}:where(.gds-progress-dot){background:color-mix(in srgb, var(--ai-accent-start) 20%, var(--text-muted));border-radius:50%;width:8px;height:8px;animation:1.2s ease-in-out infinite gds-progress-dot-pulse;display:inline-block}:where(.gds-progress-dot:nth-child(2)){animation-delay:.2s}:where(.gds-progress-dot:nth-child(3)){animation-delay:.4s}:where(.gds-ai-status){border-radius:calc(var(--radius-control) + 2px);border:1px solid var(--border-default);background:var(--surface-card-muted);max-width:85%;color:var(--text-secondary);border-bottom-left-radius:6px;align-self:flex-start;align-items:center;gap:8px;padding:10px 14px;display:flex}:where(.gds-ai-status-text){color:var(--text-secondary);font-size:13px;font-style:italic}:where(.gds-ai-dot-loader){align-items:center;gap:5px;display:inline-flex}:where(.gds-ai-dot-loader span){background:color-mix(in srgb, var(--ai-accent-start) 38%, var(--text-muted));border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite gds-progress-dot-pulse;display:inline-block}:where(.gds-ai-dot-loader span:nth-child(2)){animation-delay:.2s}:where(.gds-ai-dot-loader span:nth-child(3)){animation-delay:.4s}:where(.gds-ai-spinner){border:2.5px solid var(--border-default);border-top-color:var(--ai-accent-start);border-radius:50%;flex-shrink:0;width:26px;height:26px;animation:.72s linear infinite gds-spin}@keyframes gds-spin{to{transform:rotate(360deg)}}@keyframes gds-progress-shimmer{0%{background-position:200% 0}to{background-position:-20% 0}}@keyframes gds-progress-dot-pulse{0%,to{opacity:.45;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){:where(.gds-progress-loader){animation:none}:where(.gds-progress-dot){opacity:.85;animation:none;transform:scale(1)}:where(.gds-ai-spinner){animation:none}:where(.gds-ai-dot-loader span){opacity:.85;animation:none}}:where(.gds-menu){border-radius:var(--radius-card);border:1px solid var(--border-default);background:var(--surface-elevated);box-shadow:var(--shadow-3);padding:4px}:where(.gds-menu-option){border-radius:calc(var(--radius-control) - 4px);width:100%;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:500;line-height:1.25;transition:background-color .15s,color .15s;display:flex}:where(.gds-menu-option:hover){background:var(--surface-card-muted)}:where(.gds-menu-option:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-menu-option-active){background:var(--client-primary-subtle);color:var(--client-primary);font-weight:600}:where(.gds-comparison-table){border-collapse:separate;border-spacing:0;border:1px solid var(--ds-comparison-table-border);background:var(--ds-comparison-table-bg);border-radius:20px;width:100%;overflow:hidden}:where(.gds-comparison-table th,.gds-comparison-table td){text-align:left;border-bottom:1px solid var(--ds-comparison-table-row-border);padding:14px 16px;font-size:13px}:where(.gds-comparison-table th){background:var(--ds-comparison-table-header-bg);text-transform:uppercase;letter-spacing:.08em;color:var(--ds-comparison-table-header-fg);font-size:11px}:where(.gds-comparison-table tr:last-child td){border-bottom:0}:where(.gds-comparison-table-winner-cell){background:var(--ds-comparison-table-winner-bg);color:var(--ds-comparison-table-winner-fg);font-weight:800}:host{all:initial;font-family:var(--gengage-font-family,\"Plus Jakarta Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);font-size:var(--gengage-font-size,14px)}.gengage-chat-root button,.gengage-chat-root [role=button],.gengage-chat-root a{cursor:pointer}.gengage-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gengage-chat-root{z-index:var(--gengage-z-index,2147480000);--_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,1rem);--_gengage-chat-header-height:var(--gengage-chat-header-height,72px);--_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,1200px);--_gengage-chat-input-height:var(--gengage-chat-input-height,48px);--_gengage-chat-shadow:var(--gengage-chat-shadow,var(--shadow-3));--_gengage-border-color:var(--border-default);--_gengage-discount-color:var(--gengage-discount-color,var(--client-primary));--_gengage-success-color:var(--success);--_gengage-text-primary:var(--text-primary);--_gengage-text-secondary:var(--text-secondary);--_gengage-surface-secondary:var(--surface-card-soft);--_gengage-surface-muted:var(--surface-card-soft);--_gengage-surface-dark:var(--surface-shell);--_gengage-rating-color:var(--rating);--_gengage-error:var(--error);--_gengage-danger-color:var(--error);--_gengage-ghost-border:var(--gengage-ghost-border,color-mix(in srgb, var(--client-primary) 16%, transparent));position:fixed}.gengage-chat-backdrop{z-index:0;pointer-events:none;cursor:pointer;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background:0 0;border:none;margin:0;padding:0;display:none;position:fixed;inset:0}.gengage-chat-root--open:not(.gengage-chat--inline) .gengage-chat-backdrop{pointer-events:none;background:var(--gengage-chat-float-backdrop,transparent);display:block}.gengage-chat-root--open.gengage-chat-root--maximized-host-chrome:not(.gengage-chat--inline) .gengage-chat-backdrop{pointer-events:auto;background:var(--gengage-chat-float-backdrop,color-mix(in srgb, var(--surface-overlay) 72%, transparent))}.gengage-chat-root.gengage-chat--overlay.gengage-chat-root--open .gengage-chat-backdrop{background:var(--gengage-chat-overlay-backdrop,var(--surface-overlay));pointer-events:auto}.gengage-chat-launcher-container{bottom:var(--_gengage-chat-launcher-bottom);right:var(--_gengage-chat-launcher-right);z-index:var(--gengage-z-index,2147480000);flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed}.gengage-chat-launcher-content-area,.gengage-chat-launcher-content-area-bottom{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.gengage-chat-launcher-content-area:empty,.gengage-chat-launcher-content-area-bottom:empty,.gengage-chat-root--open .gengage-chat-launcher-content-area,.gengage-chat-root--open .gengage-chat-launcher-content-area-bottom{display:none}.gengage-chat-root--open .gengage-chat-launcher-container{pointer-events:none;opacity:0;transition:opacity .2s}.gengage-chat-launcher{width:var(--_gengage-chat-launcher-size);height:var(--_gengage-chat-launcher-size);border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);cursor:pointer;box-shadow:var(--shadow-3);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s;display:flex;position:relative}.gengage-chat-launcher:hover{box-shadow:var(--shadow-3);transform:none}.gengage-chat-launcher svg{width:28px;height:28px}.gengage-chat-launcher--image-mode{box-shadow:none;background:0 0;border:none;border-radius:0;padding:0;overflow:hidden}.gengage-chat-launcher--image-mode:hover{box-shadow:none}.gengage-chat-launcher--image-mode img{object-fit:contain;width:100%;height:100%}.gengage-chat-launcher--hidden-mobile{display:none!important}.gengage-chat-launcher-tooltip{border-radius:var(--radius-control);background:var(--surface-shell);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;box-shadow:var(--shadow-2);padding:6px 12px;font-size:13px;font-weight:500;transition:opacity .2s;position:absolute;top:50%;right:calc(100% + 12px);transform:translateY(-50%)}.gengage-chat-launcher-tooltip:after{content:\"\";border:5px solid #0000;border-left-color:var(--surface-shell);position:absolute;top:50%;left:100%;transform:translateY(-50%)}.gengage-chat-launcher:hover .gengage-chat-launcher-tooltip{opacity:1}.gengage-chat-root--open .gengage-chat-launcher-tooltip{display:none}.gengage-chat-drawer{width:var(--_gengage-chat-drawer-width);background:var(--surface-elevated,var(--surface-card));border-left:1px solid var(--border-default);max-height:100dvh;box-shadow:var(--_gengage-chat-shadow);z-index:var(--gengage-z-index,2147480000);opacity:1;border-radius:0;flex-direction:column;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .2s;display:flex;position:fixed;top:0;bottom:0;right:0;overflow:hidden;transform:translate(0)}.gengage-chat-root--mobile .gengage-chat-launcher-container{right:var(--gengage-chat-launcher-mobile-right,16px);bottom:calc(var(--gengage-chat-launcher-mobile-bottom,16px) + env(safe-area-inset-bottom,0px))}.gengage-chat-root--mobile .gengage-chat-drawer{border:1px solid var(--border-default);width:100%;max-width:none;max-height:100dvh;box-shadow:var(--shadow-3);padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface-elevated,var(--surface-card));border-bottom:none;border-radius:16px 16px 0 0;bottom:0;left:0;right:0}.gengage-chat-drawer-handle{display:none}.gengage-chat-root--mobile .gengage-chat-drawer-handle{pointer-events:none;z-index:1;justify-content:center;align-items:center;height:14px;display:flex;position:absolute;top:6px;left:0;right:0}.gengage-chat-root--mobile .gengage-chat-header{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.gengage-chat-root--mobile .gengage-chat-header button,.gengage-chat-root--mobile .gengage-chat-header a{cursor:pointer;touch-action:auto;-webkit-user-select:auto;user-select:auto}.gengage-chat-root--mobile .gengage-chat-drawer-handle:before{content:\"\";background:var(--border-strong);pointer-events:none;border-radius:999px;width:36px;height:4px}.gengage-chat-root--mobile.gengage-chat-root--mobile-half .gengage-chat-drawer{height:min(72dvh,620px);max-height:min(72dvh,620px);top:auto}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-drawer{border-radius:0;height:100dvh;max-height:100dvh;top:0}.gengage-chat-root--mobile .gengage-chat-input-area{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border-default);transform:translateY(calc(-1 * var(--gengage-keyboard-offset,0px)))}.gengage-chat-header{box-sizing:border-box;height:var(--_gengage-chat-header-height);background:var(--gengage-chat-header-bg,var(--ds-header-bg));color:var(--gengage-chat-header-foreground,var(--ds-header-fg));box-shadow:none;border-bottom:1px solid var(--gengage-chat-header-border-bottom,var(--ds-header-border));z-index:2;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex;position:relative}.gengage-chat-header-left{align-items:center;gap:10px;min-width:0;display:flex}.gengage-chat-header-avatar{background:var(--surface-card-soft);border:1px solid var(--border-default);object-fit:contain;border-radius:999px;flex-shrink:0;width:44px;height:44px}.gengage-chat-header-avatar--logo{object-fit:contain;background:0 0;border:none;border-radius:0;width:auto;max-width:92px;height:45px}.gengage-chat-header-info{flex-direction:column;gap:2px;min-width:0;display:flex}.gengage-chat-header-title-row{align-items:center;gap:6px;min-width:0;display:flex}.gengage-chat-header-title{letter-spacing:.01em;color:inherit;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:16px;font-weight:700;line-height:1.25;display:block;overflow:hidden}.gengage-chat-header-badge{border-radius:var(--radius-pill);background:var(--ds-badge-brand-bg);min-height:26px;color:var(--ds-badge-brand-fg);border:1px solid var(--ds-badge-brand-border);letter-spacing:.04em;text-transform:uppercase;align-items:center;padding:0 10px;font-size:10px;font-weight:800;line-height:1.5;display:inline-flex}.gengage-chat-header-powered{color:var(--ds-header-muted);align-items:center;gap:4px;font-size:11px;line-height:1.2;text-decoration:none;transition:color .15s;display:flex}.gengage-chat-header-powered:hover{color:var(--client-primary)}.gengage-chat-header-powered svg{opacity:.6;flex-shrink:0;width:12px;height:12px}.gengage-chat-header-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.gengage-chat-header-btn{border-radius:var(--radius-control,12px);background:var(--surface-card-soft);border:1px solid var(--border-default);width:42px;height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;line-height:1;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.gengage-chat-header-btn:hover{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-header-btn--fav{position:relative}.gengage-chat-header-btn--reopen-panel,.gengage-chat-root--mobile .gengage-chat-new-chat{display:none}.gengage-chat-header-fav-badge{background:var(--error);min-width:16px;height:16px;color:var(--text-inverse);text-align:center;pointer-events:none;border-radius:999px;padding:0 3px;font-size:9px;font-weight:700;line-height:16px;position:absolute;top:-4px;right:-4px}.gengage-chat-close{border-radius:var(--radius-control,12px);background:var(--surface-card-soft);border:1px solid var(--border-default);width:42px;min-width:42px;height:42px;min-height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;font-size:18px;line-height:1;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.gengage-chat-close:hover{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-body{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.gengage-chat-panel{width:0;transition:width .22s cubic-bezier(.2,.72,.2,1);display:none;overflow:hidden}.gengage-chat-panel--visible{box-sizing:border-box;background:var(--gengage-chat-panel-bg,var(--surface-card));border-right:1px solid var(--border-default);scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--text-muted) 24%, transparent) transparent;flex-direction:column;width:440px;min-width:440px;padding:16px;display:flex;position:relative;overflow-y:auto}.gengage-chat-panel--visible::-webkit-scrollbar{width:6px}.gengage-chat-panel--visible::-webkit-scrollbar-track{background:0 0}.gengage-chat-panel--visible::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--text-muted) 24%, transparent);border-radius:3px}.gengage-chat-panel--visible::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--text-muted) 36%, transparent)}.gengage-chat-panel-ai-zone{box-sizing:border-box;border-bottom:1px solid var(--border-subtle);flex-shrink:0;width:100%;max-height:min(42vh,320px);margin-bottom:4px;padding:8px 0 12px;overflow:auto}.gengage-chat-panel-ai-zone:has(.gengage-chat-grouping-cards){max-height:min(52vh,520px)}.gengage-chat-panel-ai-zone:has(.gengage-chat-ai-top-picks){max-height:none;overflow:visible}.gengage-chat-panel-ai-zone[hidden]{display:none!important}.gengage-chat-panel-ai-zone-inner{align-items:center;gap:10px;display:flex}.gengage-chat-panel-ai-zone-text{color:var(--text-muted);font-size:13px}.gengage-chat-grouping-section-title{display:none}.gengage-chat-panel-ai-zone .gengage-chat-grouping-section-title{width:100%;color:var(--text-primary);letter-spacing:-.01em;flex-shrink:0;align-self:stretch;margin:0 0 10px;font-size:15px;font-weight:700;display:block}.gengage-chat-panel-ai-zone .gengage-chat-grouping-cards{flex-direction:column;align-items:stretch;gap:0;width:100%;min-width:0;max-height:none;display:flex}.gengage-chat-panel-ai-zone .gengage-chat-grouping-cards-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:thin;flex-flow:row;align-items:stretch;gap:10px;width:100%;min-width:0;margin:0 -2px;padding:2px 2px 10px;display:flex;overflow:auto hidden}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card{box-sizing:border-box;background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-card);width:136px;min-width:136px;max-width:150px;box-shadow:var(--shadow-1);flex-direction:column;flex:none;align-items:stretch;gap:8px;padding:12px 10px 14px}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card:hover{border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-arrow{display:none}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-img{object-fit:cover;border-radius:8px;width:100%;min-width:0;max-width:88px;height:72px;min-height:72px;margin:0 auto}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-body{text-align:center;flex-direction:column;align-items:center;gap:4px;width:100%}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-name{font-size:13px;font-weight:700;line-height:1.25}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-desc{color:var(--text-muted);font-size:11px;line-height:1.3}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-labels{white-space:normal;text-overflow:unset;justify-content:center;margin-top:2px;line-height:1.35;overflow:visible}.gengage-chat-panel-divider{cursor:pointer;background:var(--_gengage-border-color);z-index:2;flex-shrink:0;align-items:center;width:4px;transition:background .15s;display:flex;position:relative}.gengage-chat-panel-divider:hover{background:var(--border-strong)}.gengage-chat-panel-divider--hidden{display:none}.gengage-chat-panel-divider-toggle{border:1px solid var(--_gengage-border-color);background:var(--surface-card);cursor:pointer;width:28px;height:48px;color:var(--text-secondary);box-shadow:var(--shadow-1);border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:background .15s,color .15s;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.gengage-chat-panel-divider-toggle:hover{background:var(--surface-card-muted);color:var(--client-primary)}.gengage-chat-panel-divider-preview{pointer-events:none;border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-elevated) 96%, transparent);width:38px;height:192px;box-shadow:var(--shadow-2);z-index:1;border-radius:999px;flex-direction:column;gap:2px;padding:6px 4px;display:none;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.gengage-chat-panel-divider-preview:after{content:\"\";background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--surface-shell) 10%, transparent));pointer-events:none;position:absolute;inset:0}.gengage-chat-panel-divider-preview-thumb{border-radius:999px;flex:1 1 0;min-height:0;position:relative;overflow:hidden}.gengage-chat-panel-divider-preview-img{object-fit:cover;filter:grayscale(.55)saturate(.8)brightness(.92);opacity:.9;width:100%;height:100%;transform:scale(1.14)}.gengage-chat-panel.gengage-chat-panel--collapsed{border-right:none;flex:0 0 0;width:0;min-width:0;max-width:0;padding:0;overflow:hidden}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider{background:0 0;width:0}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider .gengage-chat-panel-divider-toggle{left:50%;transform:translate(-50%,-50%)}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider.gengage-chat-panel-divider--preview-active .gengage-chat-panel-divider-preview{display:flex;left:50%;transform:translate(-50%,-50%)}.gengage-chat-conversation{background:var(--surface-card);z-index:1;flex-direction:column;flex:1;min-width:0;display:flex;position:relative;overflow:hidden}.gengage-chat-drawer--with-panel{width:auto;box-shadow:none;background:0 0;overflow:visible}.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;align-items:stretch;gap:0;min-height:0;padding:0;overflow:visible}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:clamp(var(--_gengage-chat-panel-min-width), 56vw, var(--_gengage-chat-panel-max-width));min-width:var(--_gengage-chat-panel-min-width);max-width:var(--_gengage-chat-panel-max-width);background:var(--gengage-chat-panel-bg,var(--surface-card));box-shadow:none;border-right:none;border-radius:0;flex:none;max-height:100dvh;margin:0;padding:0 16px 16px;overflow-y:auto}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider{background:0 0;width:0}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle{background:var(--surface-card);width:20px;height:48px;color:var(--client-primary);border:1px solid color-mix(in srgb, var(--client-primary) 20%, var(--border-default));box-shadow:var(--shadow-1);z-index:10;border-radius:10px;font-size:12px}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle:hover{background:var(--client-primary-subtle);color:var(--client-primary)}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider--preview-active .gengage-chat-panel-divider-toggle:hover{background:var(--client-primary-subtle)}.gengage-chat-drawer--with-panel .gengage-chat-conversation{flex:0 0 var(--_gengage-chat-conversation-width);width:var(--_gengage-chat-conversation-width);background:var(--surface-card);box-shadow:var(--shadow-2);border-left:none}.gengage-chat-drawer--with-panel .gengage-chat-messages{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--text-muted) 22%, transparent) transparent;padding-right:6px}.gengage-chat-drawer--with-panel .gengage-chat-messages::-webkit-scrollbar{width:0}.gengage-chat-drawer--with-panel .gengage-chat-panel.gengage-chat-panel--collapsed{flex:0 0 0;width:0;min-width:0;max-width:0;padding:0;overflow:hidden}.gengage-chat-drawer--with-panel:has(.gengage-chat-panel--collapsed){width:var(--_gengage-chat-conversation-width);background:var(--surface-elevated,var(--surface-card));box-shadow:var(--_gengage-chat-shadow)}.gengage-chat-drawer--with-panel .gengage-chat-footer{display:none}.gengage-chat-messages{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;flex-direction:column;flex:1;gap:16px;min-height:0;padding:16px;display:flex;overflow-y:auto}.gengage-chat-messages::-webkit-scrollbar{width:6px}.gengage-chat-messages::-webkit-scrollbar-track{background:0 0}.gengage-chat-messages::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--text-muted) 22%, transparent);border-radius:3px}.gengage-chat-messages::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--text-muted) 36%, transparent)}.gengage-chat-bubble--presentation-collapsed{display:none!important}.gengage-chat-former-messages-btn{z-index:2;border-radius:var(--radius-pill);border:1px solid var(--ds-chip-border);background:color-mix(in srgb, var(--surface-card) 96%, transparent);color:var(--text-primary);cursor:pointer;box-shadow:var(--shadow-1);flex-shrink:0;align-self:center;margin-bottom:4px;padding:8px 14px;font-size:13px;font-weight:600;position:sticky;top:0}.gengage-chat-former-messages-btn:hover{background:var(--surface-card-muted)}.gengage-chat-bubble{position:relative}@keyframes gengage-chat-msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-bubble--user{max-width:85%}.gengage-chat-bubble--assistant{max-width:85%;margin-left:2px}.gengage-chat-bubble--active{outline:2px solid var(--ds-message-active-outline);outline-offset:-2px}.gengage-chat-bubble--assistant:empty{display:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a{color:var(--client-primary);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:color-mix(in srgb, var(--text-primary) 8%, transparent);border-radius:6px;padding:1px 4px;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text pre{background:color-mix(in srgb, var(--surface-card) 78%, var(--surface-card-soft));border:1px solid var(--border-subtle);border-radius:12px;margin:4px 0;padding:10px 12px;overflow-x:auto}.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(--border-default);padding:4px 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text img{border-radius:12px;max-width:100%;height:auto;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{color:var(--text-primary);margin:8px 0 4px;line-height:1.3}.gengage-chat-bubble--assistant .gengage-chat-bubble-text blockquote{border-left:3px solid var(--border-default);color:var(--text-secondary);margin:4px 0;padding-left:12px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text{overflow-wrap:break-word}.gengage-chat-bubble--first{border-left:1px solid var(--ds-message-assistant-border)}.gengage-chat-bubble--first .gengage-chat-bubble-text{font-size:inherit}@media (width<=768px){.gengage-chat-bubble--assistant .gengage-chat-bubble-text{line-height:1.5}.gengage-chat-bubble--user{word-break:break-word;max-width:calc(100% - 16px)}}.gengage-chat-typing{align-self:flex-start;max-width:85%}.gengage-chat-typing-dots{flex-shrink:0}.gengage-chat-typing-text{flex:1;min-width:0}.gengage-chat-panel-loading-status{margin-bottom:16px}.gengage-chat-panel-loading-status.gds-progress-loader-panel{box-sizing:border-box;min-width:0;max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel-loading-status.gds-progress-loader-panel{max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel-loading-status .gengage-chat-panel-loading-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.gengage-chat-offline-bar{color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));background:color-mix(in srgb, var(--warning) 10%, white);border-bottom:1px solid color-mix(in srgb, var(--warning) 22%, var(--border-default));align-items:center;gap:6px;padding:6px 12px;font-size:12px;line-height:1.4;display:none}.gengage-chat-offline-bar--visible{display:flex}.gengage-chat-offline-bar:before{content:\"\";background:var(--_gengage-rating-color);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.gengage-chat-thinking-steps{flex-direction:column;gap:4px;padding:4px 0;display:flex}.gengage-chat-thinking-step{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;display:flex}.gengage-chat-thinking-step-marker{text-align:center;flex-shrink:0;width:16px;font-size:12px}.gengage-chat-thinking-step-marker--done{color:var(--_gengage-success-color)}.gengage-chat-thinking-step-marker--active{color:var(--ai-accent-start);animation:1.5s ease-in-out infinite gengage-thinking-pulse}@keyframes gengage-thinking-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-thinking-step-text{line-height:1.4}.gengage-chat-error{border-radius:var(--radius-control);background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 84%, var(--text-primary));text-align:center;border:1px solid color-mix(in srgb, var(--error) 22%, var(--border-default));justify-content:center;align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex}.gengage-chat-error-retry{border:1px solid color-mix(in srgb, var(--error) 24%, var(--border-default));border-radius:var(--radius-control);background:var(--surface-card);color:color-mix(in srgb, var(--error) 84%, var(--text-primary));cursor:pointer;flex-shrink:0;padding:4px 12px;font-size:12px;font-weight:500;transition:background .15s,border-color .15s}.gengage-chat-error-retry:hover{background:color-mix(in srgb, var(--error) 8%, white);border-color:color-mix(in srgb, var(--error) 32%, var(--border-default))}.gengage-chat-input-area{border-top:1px solid var(--border-subtle);background:var(--surface-card);z-index:2;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:0;padding:10px 12px 12px;display:flex;position:relative}.gengage-chat-input-pill{background:var(--surface-card);border:1px solid var(--border-default);min-width:0;min-height:52px;box-shadow:none;border-radius:16px;flex:1;align-items:center;gap:12px;padding:6px 6px 6px 14px;transition:border-color .2s,box-shadow .2s;display:flex;overflow:visible}.gengage-chat-input-pill:focus-within{border-color:color-mix(in srgb, var(--client-primary) 28%, white);box-shadow:0 0 0 4px var(--client-focus-ring)}.gengage-chat-input{min-width:0;min-height:40px;max-height:120px;color:var(--_gengage-text-primary);resize:none;background:0 0;border:none;border-radius:0;outline:none;flex:1;align-content:center;padding:0;font-family:inherit;font-size:14px;line-height:1.4;overflow-y:hidden}.gengage-chat-root--mobile .gengage-chat-input-pill{min-height:52px;padding:6px 6px 6px 14px}.gengage-chat-root--mobile .gengage-chat-input{white-space:nowrap;min-height:44px;max-height:44px;font-size:16px;overflow:hidden}.gengage-chat-input::placeholder{color:var(--text-muted);font-size:14px;line-height:normal}.gengage-chat-send{border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);width:40px;min-width:40px;height:40px;color:var(--ds-button-primary-fg);cursor:pointer;box-shadow:none;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:0;font-weight:700;transition:background-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s,transform .15s;display:flex;position:relative}.gengage-chat-send:hover{background:var(--ds-button-primary-bg-hover);box-shadow:none;transform:none}.gengage-chat-send:active{box-shadow:none;transform:translateY(0)}.gengage-chat-send svg{width:18px;height:18px}.gengage-chat-send--stop{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));color:var(--text-primary)}.gengage-chat-send--stop:hover{background:color-mix(in srgb, var(--surface-card-soft) 86%, var(--client-primary-subtle));border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));color:var(--client-primary)}.gengage-chat-send-stop-icon{background:currentColor;border-radius:4px;width:12px;height:12px;display:inline-block}.gengage-chat-send--stop:after{content:attr(data-tooltip);background:color-mix(in srgb, var(--surface-shell) 98%, black);border:1px solid color-mix(in srgb, var(--surface-shell) 60%, white);box-shadow:var(--shadow-2);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;z-index:12;border-radius:10px;padding:7px 10px;font-size:12px;font-weight:600;line-height:1.2;transition:opacity .16s;position:absolute;top:50%;right:calc(100% + 10px);transform:translateY(-50%)}@media (hover:hover) and (pointer:fine){.gengage-chat-send--stop:hover:after,.gengage-chat-send--stop:focus-visible:after{opacity:1}}.gengage-chat-send:disabled{background:var(--ds-neutral-200);border-color:var(--ds-neutral-200);opacity:.5;box-shadow:none;cursor:not-allowed}.gengage-chat-footer{text-align:center;color:var(--text-muted);border-top:1px solid var(--border-subtle);background:var(--surface-card);padding:4px 10px;font-size:10px}.gengage-chat-uispec{width:100%}.gengage-chat-uispec:empty{display:none}.gengage-chat-uispec>*{animation:.16s cubic-bezier(.2,.7,.2,1) both gengage-chat-widget-enter}@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{flex-wrap:wrap;justify-content:flex-start;gap:8px;padding:6px 0 4px;display:flex}.gengage-chat-action-buttons:after{content:\"\";flex:1 0 auto}.gengage-chat-action-btn{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-pill,999px);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);cursor:pointer;white-space:nowrap;flex:none;padding:8px 16px;font-family:inherit;font-size:13px;font-weight:700;line-height:1.25;transition:filter .15s,transform .1s}.gengage-chat-action-btn:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-action-btn:active{transform:scale(.97)}.gengage-chat-product-card{border:1px solid var(--ds-card-border);border-radius:var(--ds-card-radius);background:var(--ds-card-bg);width:160px;min-width:160px;max-width:160px;box-shadow:var(--ds-card-shadow);flex-direction:column;transition:transform .1s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.gengage-chat-product-card:hover{box-shadow:var(--ds-card-shadow-hover);transform:translateY(-2px)}.gengage-chat-product-card-img{object-fit:contain;background:var(--surface-card);box-sizing:border-box;width:100%;height:120px;padding:8px;display:block}.gengage-chat-product-card-body{text-align:center;flex-direction:column;flex:1;gap:4px;padding:8px 10px 10px;display:flex}.gengage-chat-product-card-name{color:var(--_gengage-text-primary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;min-height:2.7em;margin-bottom:0;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-product-card-brand{color:var(--text-secondary);font-size:10px}.gengage-chat-product-card-rating{color:var(--_gengage-rating-color);font-size:11px;line-height:1}.gengage-star-half{display:inline-block;position:relative}.gengage-star-half>span{width:.5em;position:absolute;top:0;left:0;overflow:hidden}.gengage-chat-product-card-review-count{color:var(--text-secondary);font-size:10px}.gengage-chat-product-card-price,.gengage-chat-product-card-price-block{color:var(--text-primary);flex-wrap:wrap;justify-content:center;align-items:baseline;gap:2px 6px;font-size:16px;font-weight:800;display:flex}.gengage-chat-product-card-current-price{font:inherit;color:inherit;font-weight:800}.gengage-chat-product-card-original-price{color:var(--_gengage-text-secondary);margin-right:0;font-size:11px;font-weight:400;text-decoration:line-through}.gengage-chat-product-card-meta-row{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:8px;width:100%;min-height:34px;display:flex}.gengage-chat-product-card-meta-row--empty{visibility:hidden}.gengage-chat-product-card-rating-compact{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-secondary);border-radius:999px;flex-shrink:0;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:700;line-height:1.2;display:inline-flex}.gengage-chat-product-card-rating-compact-star{color:color-mix(in srgb, var(--warning) 60%, var(--text-primary));justify-content:center;align-items:center;line-height:0;display:inline-flex}.gengage-chat-product-card-rating-compact-value{font-variant-numeric:tabular-nums;color:var(--text-primary)}.gengage-chat-product-card-img-actions{z-index:4;pointer-events:none;flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute;top:8px;right:8px}.gengage-chat-product-card-img-actions>*{pointer-events:auto}.gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{position:static}.gengage-chat-price-skeleton{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);vertical-align:middle;background-size:200% 100%;border-radius:4px;width:80px;height:16px;animation:1.5s ease-in-out infinite gengage-skeleton-price-pulse;display:inline-block}@keyframes gengage-skeleton-price-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-product-card-cta{text-align:center;color:var(--client-primary);letter-spacing:.01em;border-top:1px solid var(--border-default);cursor:pointer;background:0 0;margin-top:auto;padding:8px 10px;font-size:12px;font-weight:700;text-decoration:none;transition:color .15s,background .15s;display:block}.gengage-chat-product-card-cta:hover{color:var(--client-primary-hover);background:var(--surface-card-soft)}.gengage-chat-product-card-cta:active{background:var(--surface-card-soft)}button.gengage-chat-product-card-cta{appearance:none;font:inherit;box-sizing:border-box;border-bottom:none;border-left:none;border-right:none;width:100%;margin:0}.gengage-chat-product-summary{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);cursor:pointer;flex-wrap:wrap;align-items:center;gap:12px;margin:4px 0;padding:10px 12px;transition:background .15s,box-shadow .15s,border-color .15s;display:flex}.gengage-chat-product-summary:hover{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-1)}.gengage-chat-product-summary__image{border-radius:var(--radius-control);border:1px solid var(--border-subtle);background:var(--surface-card-soft);flex-shrink:0;width:64px;height:64px;overflow:hidden}.gengage-chat-product-summary__image img{object-fit:cover;width:100%;height:100%;display:block}.gengage-chat-product-summary__content{flex-direction:column;flex:180px;gap:2px;min-width:0;display:flex}.gengage-chat-product-summary__name{color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;font-size:13px;font-weight:500;line-height:1.3;display:-webkit-box;overflow:hidden}.gengage-chat-product-summary__rating{color:var(--_gengage-rating-color);font-size:11px;line-height:1}.gengage-chat-product-summary__review-count{color:var(--text-secondary);font-size:11px}.gengage-chat-product-summary__price{color:var(--text-primary);margin-top:2px;font-size:13px;font-weight:600;line-height:1}.gengage-chat-product-summary__price-original{color:var(--_gengage-text-secondary);font-size:11px;font-weight:400;text-decoration:line-through}.gengage-chat-product-summary__price-current{color:var(--client-primary)}.gengage-chat-product-summary__cta{color:var(--client-primary);border-radius:var(--radius-pill);background:var(--client-primary-subtle);white-space:nowrap;flex-shrink:0;margin-left:auto;padding:4px 10px;font-size:12px;font-weight:600;text-decoration:none;transition:background .15s,color .15s}.gengage-chat-product-summary__cta:hover{background:var(--client-primary-soft)}.gengage-chat-product-summary__cta:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-product-grid{-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity;gap:12px;min-height:180px;padding:8px 16px 8px 0;display:flex;overflow-x:auto}.gengage-chat-product-grid>*{scroll-snap-align:start;flex:none}.gengage-chat-product-grid::-webkit-scrollbar{display:none}.gengage-chat-review-highlights{padding:4px 0 8px}.gengage-chat-review-empty{color:var(--_gengage-text-secondary);font-size:12px}.gengage-chat-review-subjects-heading{color:var(--text-primary);margin-bottom:10px;font-size:14px;font-weight:700}.gengage-chat-review-subjects{margin-bottom:12px}.gengage-chat-review-subject{color:var(--text-primary);box-shadow:none;gap:6px;padding:7px 11px;font-size:13px;font-weight:600;line-height:1.2}.gengage-chat-review-subject--active{border-color:var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active)}.gengage-chat-review-subject-icon{flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;display:inline-flex}.gengage-chat-review-subject-icon svg{width:14px;height:14px;display:block}.gengage-chat-review-subject[data-tone=positive] .gengage-chat-review-subject-icon{color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-review-subject[data-tone=negative] .gengage-chat-review-subject-icon{color:color-mix(in srgb, var(--error) 84%, var(--text-primary))}.gengage-chat-review-subject[data-tone=neutral] .gengage-chat-review-subject-icon{color:var(--text-secondary)}.gengage-chat-review-subject-label{color:inherit}.gengage-chat-review-subject-count{color:var(--text-secondary);font-size:12px;font-weight:700}.gengage-chat-review-detail{padding:12px}.gengage-chat-review-detail-meta{flex-wrap:wrap;align-items:baseline;gap:10px 16px;margin-bottom:10px;display:flex}.gengage-chat-review-detail-mentions{color:var(--_gengage-text-primary);font-size:13px;font-weight:700}.gengage-chat-review-detail-positive{color:var(--_gengage-success-color);font-size:13px;font-weight:700}.gengage-chat-review-detail-negative{color:var(--error);font-size:13px;font-weight:700}.gengage-chat-review-snippets{gap:10px;display:grid}.gengage-chat-review-snippet{border:1px solid var(--border-subtle);border-left:3px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card-soft);padding:8px 10px}.gengage-chat-review-snippet[data-tone=positive]{border-left-color:color-mix(in srgb, var(--success) 40%, var(--border-default))}.gengage-chat-review-snippet[data-tone=negative]{border-left-color:color-mix(in srgb, var(--error) 40%, var(--border-default))}.gengage-chat-review-snippet-text{color:var(--_gengage-text-primary);font-size:13px;line-height:1.4}.gengage-chat-review-snippet-rating{color:var(--text-secondary);margin-top:4px;font-size:12px;font-weight:700}.gengage-chat-favorites-page{padding:12px}.gengage-chat-favorites-empty{text-align:center;color:var(--_gengage-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;display:flex}.gengage-chat-favorites-empty-icon{opacity:.25;color:var(--error)}.gengage-chat-favorites-empty p{margin:0;font-size:13px;line-height:1.5}.gengage-chat-favorites-list{flex-direction:column;gap:10px;display:flex}.gengage-chat-favorites-card{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);box-shadow:var(--shadow-1);align-items:center;gap:12px;padding:10px 12px;transition:opacity .2s,transform .2s,box-shadow .2s,border-color .2s;display:flex;position:relative}.gengage-chat-favorites-card:hover{border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-1)}.gengage-chat-favorites-card--removing{opacity:0;transform:translate(8px)}.gengage-chat-favorites-card__image{border-radius:var(--radius-control);background:var(--surface-card-muted);flex-shrink:0;width:56px;height:56px;overflow:hidden}.gengage-chat-favorites-card__image img{object-fit:contain;width:100%;height:100%}.gengage-chat-favorites-card__info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.gengage-chat-favorites-card__name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.gengage-chat-favorites-card__price{color:var(--client-primary);font-size:13px;font-weight:700}.gengage-chat-favorites-remove{border-radius:var(--radius-pill);width:28px;height:28px;color:var(--error);cursor:pointer;opacity:.7;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .15s,background .15s;display:inline-flex}.gengage-chat-favorites-remove:hover{opacity:1;background:color-mix(in srgb, var(--error) 10%, white)}.gengage-chat-divider{border:none;border-top:1px solid var(--_gengage-border-color);margin:8px 0}.gengage-chat-divider-wrapper{align-items:center;gap:8px;margin:8px 0;display:flex}.gengage-chat-divider-wrapper hr{border:none;border-top:1px solid var(--_gengage-border-color);flex:1;margin:0}.gengage-chat-divider-label{color:var(--text-muted);white-space:nowrap;font-size:11px}.gengage-chat--overlay .gengage-chat-drawer{border-radius:0;width:100%;max-width:480px;max-height:100%;margin:0 auto;animation:.24s cubic-bezier(.2,.72,.2,1) gengage-chat-overlay-in;position:fixed;inset:0}@keyframes gengage-chat-overlay-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-panel-skeleton{box-sizing:border-box;flex-direction:column;gap:14px;min-width:0;max-width:100%;padding:6px 0;display:flex}.gengage-chat-panel-skeleton-block{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);background-size:200% 100%;border-radius:10px;height:110px;animation:1.4s infinite gengage-panel-shimmer}@keyframes gengage-panel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-panel-skeleton-block--image{border-radius:8px;height:200px;margin-bottom:12px}.gengage-chat-panel-skeleton-block--text{border-radius:4px;height:16px;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{grid-template-columns:1fr 1fr;gap:8px;display:grid}.gengage-chat-panel-skeleton-block--card{border-radius:8px;height:120px}.gengage-chat-panel-skeleton--comparison{gap:0;padding:0}.gengage-chat-panel-skeleton--comparison .gengage-chat-panel-loading-status{margin:0;padding:16px 16px 0}.gengage-chat-comparison--skeleton{pointer-events:none;box-sizing:border-box;width:100%}.gengage-chat-comparison-skeleton-shimmer{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);background-size:200% 100%;animation:1.4s infinite gengage-panel-shimmer}.gengage-chat-comparison-skeleton-rec-label{border-radius:4px;width:132px;height:12px;margin-bottom:12px}.gengage-chat-comparison-skeleton-rec-img{border-radius:8px;flex-shrink:0;width:80px;height:80px}.gengage-chat-comparison-skeleton-rec-title{border-radius:4px;max-width:100%;height:14px;margin-bottom:6px}.gengage-chat-comparison-skeleton-rec-title--short{width:72%;margin-bottom:8px}.gengage-chat-comparison-skeleton-rec-price{border-radius:4px;width:112px;height:18px}.gengage-chat-comparison-skeleton-hl-label{border-radius:4px;width:96px;height:12px;margin-bottom:6px}.gengage-chat-comparison-skeleton-hl-list{margin:0;padding-left:18px;list-style:none}.gengage-chat-comparison-skeleton-hl-list li{margin-bottom:8px}.gengage-chat-comparison-skeleton-hl-list li:last-child{margin-bottom:0}.gengage-chat-comparison-skeleton-hl-line{border-radius:4px;width:100%;height:13px}.gengage-chat-comparison-skeleton-hl-line--medium{width:92%}.gengage-chat-comparison-skeleton-hl-line--short{width:78%}.gengage-chat-comparison-skeleton-kd-heading{border-radius:4px;width:42%;height:14px;margin:0 0 8px}.gengage-chat-comparison-skeleton-kd-line{border-radius:4px;max-width:100%;height:13px;margin-bottom:8px}.gengage-chat-comparison-skeleton-kd-line:last-child{margin-bottom:0}.gengage-chat-comparison-skeleton-kd-line:nth-child(odd){width:100%}.gengage-chat-comparison-skeleton-kd-line:nth-child(2n){width:90%}.gengage-chat-comparison-special--skeleton{cursor:default;align-items:center;min-height:44px;display:flex}.gengage-chat-comparison-skeleton-special-line{border-radius:4px;width:56%;max-width:280px;height:14px}.gengage-chat-comparison-skeleton-table-wrap{border:1px solid var(--border-default);background:var(--surface-card);-webkit-overflow-scrolling:touch;border-radius:8px;margin-top:12px;overflow-x:auto}.gengage-chat-comparison-skeleton-table-head,.gengage-chat-comparison-skeleton-table-row{grid-template-columns:72px repeat(3,minmax(0,1fr));align-items:start;gap:8px;padding:10px 12px;display:grid}.gengage-chat-comparison-skeleton-table-head{border-bottom:1px solid var(--_gengage-surface-muted);background:var(--_gengage-surface-muted)}.gengage-chat-comparison-skeleton-table-corner{min-height:92px}.gengage-chat-comparison-skeleton-table-col{text-align:center;flex-direction:column;align-items:center;gap:6px;min-width:0;display:flex}.gengage-chat-comparison-skeleton-table-th-img{border-radius:6px;flex-shrink:0;width:60px;height:60px}.gengage-chat-comparison-skeleton-table-th-name{border-radius:3px;width:100%;max-width:100%;height:11px}.gengage-chat-comparison-skeleton-table-th-price{border-radius:3px;width:64%;height:13px}.gengage-chat-comparison-skeleton-table-row{border-bottom:1px solid var(--_gengage-surface-muted)}.gengage-chat-comparison-skeleton-table-row:last-child{border-bottom:none}.gengage-chat-comparison-skeleton-table-label{border-radius:3px;align-self:center;width:100%;max-width:56px;height:12px}.gengage-chat-comparison-skeleton-table-cell{border-radius:3px;width:100%;height:14px}.gengage-chat-panel-skeleton-block--row{border-radius:4px;height:32px;margin-bottom:4px}.gengage-chat-panel .gengage-chat-product-card{border-radius:var(--radius-card);border:1px solid var(--border-default);width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-1);background:var(--surface-card);flex-direction:column;padding:0;display:flex;overflow:hidden}.gengage-chat-panel .gengage-chat-product-card:hover{box-shadow:var(--shadow-2);border-color:var(--border-strong);transform:translateY(-2px)}.gengage-chat-panel .gengage-chat-product-card-img-actions{gap:6px;top:10px;right:10px}.gengage-chat-panel .gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-panel .gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{border-radius:8px;width:28px;height:28px}.gengage-chat-panel .gengage-chat-product-card-discount-badge{border-radius:var(--radius-pill);background:var(--client-primary);min-width:36px;height:36px;color:var(--client-on-primary);box-shadow:var(--shadow-1);justify-content:center;align-items:center;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex;top:10px;left:10px}.gengage-chat-panel .gengage-chat-product-card-brand{display:none}.gengage-chat-panel .gengage-chat-product-grid{grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:12px;min-height:auto;padding:4px 0;display:grid;overflow-x:visible}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--mobile{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-height:auto;padding:6px 0 10px;display:grid;overflow-x:visible}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--mobile .gengage-chat-product-card{box-sizing:border-box;width:100%;min-width:0;max-width:none}.gengage-chat-panel .gengage-chat-product-card-img-wrapper{aspect-ratio:1;background:var(--surface-card-muted);border-radius:var(--radius-card) var(--radius-card) 0 0;flex-shrink:0;width:100%;position:relative;overflow:hidden}.gengage-chat-panel .gengage-chat-product-card-img{border-radius:inherit;object-fit:cover;object-position:center;box-sizing:border-box;background:0 0;width:100%;height:100%;min-height:0;padding:0;display:block}.gengage-chat-panel .gengage-chat-product-card-body{text-align:left;gap:8px;padding:12px 14px 10px}.gengage-chat-panel .gengage-chat-product-card-meta-row{align-items:center;min-height:38px;margin-bottom:0}.gengage-chat-panel .gengage-chat-product-card-price,.gengage-chat-panel .gengage-chat-product-card-price-block{color:var(--text-primary);justify-content:flex-start;font-size:15px;font-weight:600}.gengage-chat-panel .gengage-chat-product-card-current-price{color:var(--client-primary);font-size:15px;font-weight:600}.gengage-chat-panel .gengage-chat-product-card-original-price{color:var(--text-muted);font-size:12px;font-weight:400}.gengage-chat-panel .gengage-chat-product-card-rating-compact{font-size:11px;font-weight:700}.gengage-chat-panel .gengage-chat-product-card-rating-compact-star{color:color-mix(in srgb, var(--warning) 58%, var(--text-primary))}.gengage-chat-panel .gengage-chat-product-card-name{min-height:0;color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;margin:0 0 2px;font-size:14px;font-weight:600;line-height:1.35}.gengage-chat-panel .gengage-chat-product-card-buy-footer{flex-shrink:0;min-width:0;margin-top:auto;padding:0 14px 16px;display:flex;position:relative}.gengage-chat-panel .gengage-chat-product-card-buy-trigger{box-sizing:border-box;border:1.5px solid var(--client-primary);background:var(--surface-card);width:100%;min-width:0;min-height:42px;color:var(--client-primary);white-space:nowrap;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;margin:0;padding:9px 14px;font-family:inherit;font-size:13px;font-weight:600;line-height:1.2;transition:background .15s,box-shadow .15s;display:flex}.gengage-chat-panel .gengage-chat-product-card-buy-trigger:hover{background:color-mix(in srgb, var(--client-primary) 6%, white);box-shadow:var(--shadow-1)}.gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta{border:1.5px solid var(--client-primary);background:var(--surface-card);width:calc(100% - 28px);min-width:0;color:var(--client-primary);box-sizing:border-box;border-radius:12px;justify-content:center;align-items:center;min-height:42px;margin:0 14px 16px;padding:9px 14px;font-size:13px;font-weight:600;display:flex}.gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta:hover{background:color-mix(in srgb, var(--client-primary) 6%, white)}.gengage-chat-product-card--selected{border-color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, transparent);box-shadow:0 0 0 1px var(--client-primary)}.gengage-chat-panel--visible{min-height:0}.gengage-chat-panel--visible>*{flex-shrink:0}.gengage-chat-load-more-btn{border:1px solid var(--border-default);color:var(--client-primary);cursor:pointer;background:0 0;border-radius:8px;margin:12px auto;padding:8px 24px;font-size:14px;display:block}.gengage-chat-load-more-btn:hover{background:var(--surface-card-muted)}.gengage-chat-product-details-panel{background:var(--surface-card);border:1px solid var(--border-default);box-sizing:border-box;border-radius:16px;flex-direction:column;gap:12px;width:100%;padding:14px;display:flex}.gengage-chat-product-details-media{border:1px solid var(--border-subtle);background:var(--surface-card-muted);border-radius:12px;flex-direction:column;align-items:center;padding:12px;display:flex}.gengage-chat-product-details-img{object-fit:contain;border-radius:8px;width:100%;height:auto;max-height:300px}.gengage-chat-product-details-content{flex-direction:column;gap:8px;min-width:0;display:flex}.gengage-chat-product-details-title{color:var(--text-primary);margin:0;font-size:17px;font-weight:700;line-height:1.3}.gengage-chat-product-details-rating{background:color-mix(in srgb, var(--warning) 10%, white);width:fit-content;color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));border-radius:999px;align-items:center;gap:4px;padding:3px 8px;font-size:13px;font-weight:700;display:inline-flex}.gengage-chat-product-details-review-count{color:color-mix(in srgb, var(--warning) 84%, var(--text-primary));font-weight:600}.gengage-chat-product-details-price{align-items:baseline;gap:6px;display:flex}.gengage-chat-product-details-original-price{color:var(--text-secondary);font-size:14px;text-decoration:line-through}.gengage-chat-product-details-current-price{color:var(--text-primary);font-size:22px;font-weight:800;line-height:1.1}.gengage-chat-product-details-stock{border-radius:999px;width:fit-content;padding:4px 10px;font-size:12px;font-weight:700}.gengage-chat-product-details-stock.is-in-stock{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-product-details-stock.is-out-of-stock{background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 82%, var(--text-primary))}.gengage-chat-product-details-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.gengage-chat-product-details-cta{border-radius:var(--radius-control,12px);border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);min-height:40px;color:var(--ds-button-primary-fg);cursor:pointer;justify-content:center;align-items:center;padding:0 20px;font-size:14px;font-weight:700;text-decoration:none;transition:filter .14s,transform .12s;display:inline-flex}.gengage-chat-product-details-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-product-details-cta:active{background:var(--ds-button-primary-bg-active)}.gengage-chat-product-details-atc{border-radius:var(--radius-control);background:var(--_gengage-success-color);color:var(--client-on-primary);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:700;transition:filter .12s,transform .12s;display:inline-flex}.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{border-top:1px solid var(--border-default);margin-top:4px;padding-top:12px}.gengage-chat-product-detail-tab-bar{border-bottom:1px solid var(--border-default);gap:6px;margin-bottom:12px;padding-bottom:8px;display:flex}.gengage-chat-product-detail-tab{border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;flex:1;padding:8px 12px;font-family:inherit;font-size:13px;font-weight:600;transition:color .15s,border-color .15s,background .15s}.gengage-chat-product-detail-tab:hover{color:var(--text-primary);background:color-mix(in srgb, var(--surface-card-soft) 82%, transparent)}.gengage-chat-product-detail-tab--active{color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-product-detail-tab-panel{color:var(--text-secondary);font-size:13px;line-height:1.6}.gengage-chat-product-description{color:var(--text-primary);flex-direction:column;gap:10px;display:flex}.gengage-chat-product-description p,.gengage-chat-product-description h2,.gengage-chat-product-description h3,.gengage-chat-product-description h4,.gengage-chat-product-description ul,.gengage-chat-product-description ol{margin:0}.gengage-chat-product-description h2,.gengage-chat-product-description h3,.gengage-chat-product-description h4{color:var(--text-primary);font-size:15px;font-weight:800;line-height:1.35}.gengage-chat-product-description ul,.gengage-chat-product-description ol{padding-left:20px}.gengage-chat-product-description li+li{margin-top:6px}.gengage-chat-product-description strong,.gengage-chat-product-description b{font-weight:800}.gengage-chat-product-specs-table{border-collapse:collapse;width:100%;font-size:13px}.gengage-chat-product-specs-table tr:nth-child(2n){background:var(--surface-card-muted)}.gengage-chat-product-specs-key{color:var(--text-secondary);white-space:nowrap;border-bottom:1px solid var(--border-subtle);width:40%;padding:6px 10px;font-weight:600}.gengage-chat-product-specs-value{color:var(--text-primary);border-bottom:1px solid var(--border-subtle);padding:6px 10px}.gengage-chat-product-card-atc{opacity:0;z-index:1;transition:opacity .15s;position:absolute;bottom:42px;right:6px}.gengage-chat-product-card:hover .gengage-chat-product-card-atc{opacity:1}@media (hover:none),(pointer:coarse){.gengage-chat-product-card-atc{opacity:1;width:100%;margin:0;display:flex;position:relative;bottom:auto;right:auto}}.gengage-chat-drawer.gengage-chat-drawer--hidden{opacity:0;pointer-events:none;box-shadow:none;visibility:hidden;transform:translate(100%)}.gengage-chat-root--mobile .gengage-chat-drawer.gengage-chat-drawer--hidden{opacity:0;pointer-events:none;box-shadow:none;visibility:hidden;transform:translateY(100%)}@media (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{background:var(--surface-card-muted);border:1px solid var(--border-default);box-sizing:border-box;border-radius:8px;align-items:center;gap:8px;width:100%;padding:6px 10px;display:flex}.gengage-chat-attachment-preview--hidden{display:none}.gengage-chat-attachment-preview-thumb{object-fit:cover;border-radius:4px;flex-shrink:0;width:40px;height:40px}.gengage-chat-attachment-name{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.gengage-chat-attachment-remove{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:18px;line-height:1}.gengage-chat-attachment-remove:hover{color:var(--error)}.gengage-chat-attach-btn{background:var(--surface-card-soft);border:1px solid var(--border-default);cursor:pointer;width:40px;height:40px;color:var(--text-primary);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,background .15s,border-color .15s;display:flex}.gengage-chat-attach-btn:hover{color:var(--client-primary);background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-attach-btn svg{width:20px;height:20px}.gengage-chat-attach-wrap{flex-shrink:0;align-items:center;display:flex;position:relative}.gengage-chat-attach-menu{z-index:50;background:var(--surface-elevated);border:1px solid var(--border-default);border-radius:var(--radius-card);min-width:196px;box-shadow:var(--shadow-3);margin:0;padding:4px 0;list-style:none;position:absolute;bottom:calc(100% + 8px);left:0}.gengage-chat-attach-menu[hidden]{display:none!important}.gengage-chat-attach-menu-item{cursor:pointer;width:100%;color:var(--text-primary);text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:10px 14px;font-family:inherit;font-size:14px;font-weight:500;transition:background .12s;display:flex}.gengage-chat-attach-menu-item:hover{background:var(--surface-card-muted)}.gengage-chat-attach-menu-icon{color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-attach-menu-label{flex:1;min-width:0}.gengage-chat-attach-menu-sep{background:var(--border-default);height:1px;margin:4px 10px}.gengage-chat-mic-btn{cursor:pointer;border-radius:var(--radius-control);width:32px;height:32px;color:var(--text-secondary);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,background .15s;display:flex}.gengage-chat-mic-btn:hover{color:var(--text-primary);background:var(--surface-card-muted);border-color:var(--border-default)}.gengage-chat-mic-btn svg{width:20px;height:20px}.gengage-chat-mic-btn--active{color:var(--error);animation:1.2s ease-in-out infinite gengage-mic-pulse}.gengage-chat-mic-btn--active:hover{color:color-mix(in srgb, var(--error) 84%, black)}@keyframes gengage-mic-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.15)}}.gengage-chat-input-area--dragover{outline:2px dashed var(--client-primary);outline-offset:-2px;background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-attachment-thumb{border-radius:8px;width:120px;max-width:100%;height:auto;margin-bottom:6px;display:block}.gengage-chat-root--mobile .gengage-chat-header-btn,.gengage-chat-root--mobile .gengage-chat-close{border-radius:12px;width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-attach-btn,.gengage-chat-root--mobile .gengage-chat-mic-btn,.gengage-chat-root--mobile .gengage-chat-send{width:44px;min-width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-attach-btn svg,.gengage-chat-root--mobile .gengage-chat-mic-btn svg{width:22px;height:22px}.gengage-chat-root--mobile .gengage-chat-panel-divider{cursor:ns-resize;touch-action:pan-y;background:0 0;justify-content:center;align-items:center;width:100%;height:20px;display:flex;position:relative;overflow:visible}.gengage-chat-root--mobile .gengage-chat-panel-divider--hidden{display:none}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel{border-radius:0;width:100%;left:0;right:0}.gengage-chat-root--mobile .gengage-chat-panel{z-index:10;width:100%;min-width:0;max-width:none;max-height:none;box-shadow:none;background:var(--gengage-chat-panel-bg,var(--surface-card));pointer-events:none;border:none;border-radius:0;flex-direction:column;padding:0 12px 16px;transition:transform .32s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;inset:0;overflow-y:auto;transform:translate(100%)}.gengage-chat-root--mobile .gengage-chat-panel--visible{pointer-events:auto;transform:translate(0)}.gengage-chat-root--mobile .gengage-chat-panel-divider,.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-panel-divider{display:none}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-body{flex-direction:row}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-conversation{border-left:none;flex:1;width:100%}.gengage-chat-root--mobile .gengage-chat-product-details-share{width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-footer,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-cta{box-sizing:border-box;width:100%;max-width:100%}.gengage-chat-root--mobile .gengage-chat-product-details-panel{gap:8px;padding:10px}.gengage-chat-root--mobile .gengage-chat-product-details-media{min-height:0;padding:8px}.gengage-chat-root--mobile .gengage-chat-product-details-content{gap:6px}.gengage-chat-root--mobile .gengage-chat-product-details-title{font-size:14px;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-product-details-rating{padding:2px 6px;font-size:12px}.gengage-chat-root--mobile .gengage-chat-product-details-original-price{font-size:12px}.gengage-chat-root--mobile .gengage-chat-product-details-actions{gap:6px;margin-top:2px}.gengage-chat-root--mobile .gengage-chat-product-details-cta{min-height:38px;padding:0 14px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-product-grid:not(.gengage-chat-product-grid--mobile){scroll-snap-type:x mandatory}.gengage-chat-root--mobile .gengage-chat-product-grid.gengage-chat-product-grid--mobile{scroll-snap-type:none}.gengage-chat-root--mobile .gengage-chat-product-card{box-sizing:border-box;scroll-snap-align:center;width:280px;min-width:280px;max-width:100%}.gengage-chat-root--mobile .gengage-chat-product-grid--mobile .gengage-chat-product-card{scroll-snap-align:start;width:100%;min-width:0;max-width:none}.gengage-chat-root--mobile .gengage-chat-product-card-img-wrapper{justify-content:center;align-items:center;min-height:0;display:flex}.gengage-chat-root--mobile .gengage-chat-product-card-img{object-fit:contain;object-position:center;width:auto;max-width:100%;height:auto;min-height:0;max-height:180px;display:block}.gengage-chat-root--mobile .gengage-chat-product-card-discount-badge{padding:2px 6px;font-size:10px;font-weight:700;line-height:1.2}.gengage-chat-root--mobile .gengage-chat-drawer{border-radius:0;width:100%;max-height:100%;position:fixed;inset:0}.gengage-chat-root--mobile .gengage-chat-bubble{max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-img-wrapper{aspect-ratio:1;justify-content:center;align-items:center;min-height:0;display:flex}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-img{object-fit:contain;object-position:center;width:auto;max-width:100%;height:auto;min-height:0;max-height:min(200px,72%)}.gengage-chat-root--mobile .gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-root--mobile .gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{flex-shrink:0;width:28px;min-width:28px;height:28px;min-height:28px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-discount-badge{min-width:28px;height:28px;padding:0 6px;font-size:10px;font-weight:700}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-footer{padding:0 12px 14px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-trigger{box-sizing:border-box;white-space:normal;text-align:center;-webkit-hyphens:auto;hyphens:auto;min-width:0;max-width:100%;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta{box-sizing:border-box;white-space:normal;width:calc(100% - 24px);min-width:0;max-width:calc(100% - 24px);margin-left:12px;margin-right:12px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-rating-compact{gap:3px;padding:2px 6px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-stock{padding:2px 5px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-messages{scrollbar-width:none;padding:12px 16px}.gengage-chat-root--mobile .gengage-chat-messages::-webkit-scrollbar{display:none}.gengage-chat-root--mobile .gengage-chat-drawer{border-top:none}.gengage-chat-root--mobile .gengage-chat-header{border-radius:16px 16px 0 0;min-height:72px;padding-top:22px;padding-bottom:8px}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-header{border-radius:0}.gengage-chat-root--mobile .gengage-chat-conversation{-webkit-overflow-scrolling:touch;min-height:0;overflow-y:auto}.gengage-chat-root--mobile .gengage-chat-product-details-img{object-fit:contain;min-height:0;max-height:200px}.gengage-chat-root--mobile .gengage-chat-product-details-actions{flex-wrap:wrap;gap:8px}.gengage-chat-root--mobile .gengage-chat-product-details-promos{flex-wrap:wrap;gap:4px}.gengage-chat-root--mobile .gengage-chat-input::placeholder{font-size:13px}.gengage-chat-kvkk-banner{background:color-mix(in srgb, var(--warning) 10%, white);border-bottom:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));align-items:flex-start;gap:8px;padding:10px 14px;font-size:12px;line-height:1.5;display:flex}.gengage-chat-kvkk-content{flex:1;min-width:0}.gengage-chat-kvkk-content a{color:color-mix(in srgb, var(--warning) 82%, var(--text-primary));text-decoration:underline}.gengage-chat-kvkk-dismiss{width:20px;height:20px;color:color-mix(in srgb, var(--warning) 84%, var(--text-primary));cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0;font-size:18px;line-height:1}.gengage-chat-comparison{box-sizing:border-box;flex-direction:column;gap:12px;padding:16px;display:flex}.gengage-chat-comparison-heading{letter-spacing:.05em;color:var(--text-primary);margin:0 0 16px;font-size:14px;font-weight:700}.gengage-chat-comparison-recommended{border:1px solid color-mix(in srgb, var(--client-primary) 18%, var(--border-default));border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-1);padding:16px}.gengage-chat-comparison-recommended-label{color:var(--client-primary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px;font-size:12px;font-weight:700}.gengage-chat-comparison-recommended-body{grid-template-columns:minmax(108px,148px) minmax(0,1fr);align-items:flex-start;gap:16px;display:grid}.gengage-chat-comparison-recommended-media{aspect-ratio:1;border:1px solid var(--border-subtle);background:var(--surface-card);border-radius:14px;justify-content:center;align-items:center;display:flex;overflow:hidden}.gengage-chat-comparison-recommended-body img,.gengage-chat-comparison-recommended-placeholder{object-fit:contain;box-sizing:border-box;width:100%;height:100%;padding:8px}.gengage-chat-comparison-recommended-placeholder{background:var(--surface-card-muted)}.gengage-chat-comparison-recommended-info{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.gengage-chat-comparison-recommended-title{color:var(--text-primary);margin:0;font-size:24px;font-weight:800;line-height:1.2}.gengage-chat-comparison-recommended-meta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.gengage-chat-comparison-recommended-rating{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:color-mix(in srgb, var(--warning) 78%, var(--text-primary));border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:13px;font-weight:700;display:inline-flex}.gengage-chat-comparison-recommended-rating-value{color:var(--text-primary)}.gengage-chat-comparison-recommended-price{color:var(--text-primary);font-size:20px;font-weight:700}.gengage-chat-comparison-highlights{border-top:1px solid var(--border-subtle);padding-top:12px}.gengage-chat-comparison-highlights-label{color:var(--text-secondary);margin-bottom:6px;font-size:12px;font-weight:600}.gengage-chat-comparison-highlights ul{color:var(--text-primary);margin:0;padding-left:18px;font-size:14px;line-height:1.55}.gengage-chat-comparison-special{background:color-mix(in srgb, var(--warning) 10%, white);border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));border-radius:var(--radius-card);color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));margin-bottom:12px;padding:12px 16px;font-size:13px}.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{border-collapse:collapse;background:var(--surface-card);width:100%;font-size:13px}.gengage-chat-comparison-table th,.gengage-chat-comparison-table td{text-align:center;border-bottom:1px solid var(--border-subtle);vertical-align:top;padding:10px 12px}.gengage-chat-comparison-table th{color:var(--text-secondary);font-size:12px;font-weight:600}.gengage-chat-comparison-table thead th:not(:first-child){vertical-align:top}.gengage-chat-comparison-table-header-cell{box-sizing:border-box;grid-template-rows:auto 1fr auto;place-items:start center;gap:6px;height:100%;min-height:0;display:grid}.gengage-chat-comparison-table-header-cell--clickable{cursor:pointer;border-radius:var(--radius-control);padding:6px;transition:background .16s,box-shadow .16s,transform .16s}.gengage-chat-comparison-table-header-cell--clickable:hover{background:var(--surface-card-soft);box-shadow:var(--shadow-1);transform:translateY(-1px)}.gengage-chat-comparison-table-header-cell--clickable:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-comparison-table-header-cell img{object-fit:contain;border-radius:calc(var(--radius-control) - 4px);background:var(--surface-card-muted);width:60px;height:60px}.gengage-chat-comparison-table-header-img-placeholder{border-radius:calc(var(--radius-control) - 4px);background:var(--surface-card-muted);width:60px;height:60px}.gengage-chat-comparison-table-product-name{width:100%;min-width:0;color:var(--text-secondary);text-align:center;-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;align-self:start;font-size:12px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-comparison-table-price{color:var(--text-primary);text-align:center;width:100%;font-weight:700}.gengage-chat-comparison-label{text-align:left;color:var(--text-secondary);white-space:nowrap;font-weight:600}.gengage-chat-comparison-selected{background:color-mix(in srgb, var(--client-primary) 6%, white)}.gengage-chat-comparison-recommended-text{color:var(--text-secondary);margin:0;font-size:14px;line-height:1.6}.gengage-chat-comparison-key-differences{border:1px solid var(--border-subtle);border-radius:var(--radius-card);background:var(--surface-card-muted)}.gengage-chat-comparison-key-differences-summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-weight:700;list-style:none;display:flex}.gengage-chat-comparison-key-differences-summary::-webkit-details-marker{display:none}.gengage-chat-comparison-key-differences-summary-label{color:var(--text-primary)}.gengage-chat-comparison-key-differences-summary-meta{color:var(--client-primary);font-size:13px;font-weight:700}.gengage-chat-comparison-key-differences[open] .gengage-chat-comparison-key-differences-summary-meta{opacity:0}.gengage-chat-comparison-key-differences-content{color:var(--text-primary);padding:0 16px 16px;font-size:14px;line-height:1.7}.gengage-chat-comparison-key-differences-content ul,.gengage-chat-comparison-key-differences-content ol{margin:0;padding-left:20px}.gengage-chat-comparison-key-differences-content li+li{margin-top:8px}@media (width<=960px){.gengage-chat-comparison-recommended-body{grid-template-columns:1fr}.gengage-chat-comparison-recommended-title{font-size:20px}}.gengage-chat-pills{border-top:1px solid var(--border-subtle);background:var(--surface-card);padding:8px 12px 6px;position:relative}.gengage-chat-pills-scroll{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;padding-right:28px;display:flex;overflow-x:auto}.gengage-chat-pills-scroll::-webkit-scrollbar{display:none}.gengage-chat-root--mobile .gengage-chat-pills-scroll{flex-wrap:wrap;gap:6px}.gengage-chat-root--mobile .gengage-chat-pill{white-space:normal;max-width:100%}.gengage-chat-pill{border:1px solid var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active);white-space:nowrap;cursor:pointer;border-radius:999px;flex:none;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:700;transition:background .15s,border-color .15s,color .15s}.gengage-chat-pill:hover{background:color-mix(in srgb, var(--client-primary) 12%, white);border-color:color-mix(in srgb, var(--client-primary) 36%, white)}.gengage-chat-pill:active{transform:none}.gengage-chat-pill--rich{border-radius:18px;align-items:center;gap:10px;padding:8px 14px 8px 8px;display:flex}.gengage-chat-pill-img{object-fit:cover;background:var(--surface-card);border-radius:12px;flex-shrink:0;width:32px;height:32px}.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{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:11px;font-weight:500;display:block;overflow:hidden}.gengage-chat-pills-arrow{border:1px solid var(--border-default);background:var(--surface-card);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;box-shadow:var(--shadow-1);z-index:1;border-radius:12px;justify-content:center;align-items:center;font-size:16px;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.gengage-chat-pills-arrow:hover{background:var(--surface-card-soft);color:var(--client-primary)}@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-typing-dots span,.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-skeleton-card,.gengage-skeleton-line,.gengage-skeleton-img,.gengage-skeleton-text,.gengage-skeleton-price,.gengage-chat-cart-toast,.gengage-chat-header-btn--cart-flash{transition:none!important;animation:none!important;transform:none!important}}.gengage-chat-bubble--user{position:relative}.gengage-chat-rollback-btn{border-radius:var(--radius-pill);background:var(--surface-card-muted);width:24px;height:24px;color:var(--text-secondary);cursor:pointer;opacity:0;border:none;justify-content:center;align-items:center;padding:0;transition:opacity .15s;display:flex;position:absolute;top:50%;left:-28px;transform:translateY(-50%)}.gengage-chat-bubble--user:hover .gengage-chat-rollback-btn{opacity:1}.gengage-chat-rollback-btn:hover{background:var(--client-primary);color:var(--client-on-primary)}.gengage-chat-bubble--hidden{display:none}.gengage-chat-ai-top-picks{flex-direction:column;gap:12px;padding:8px 0;scroll-margin-top:60px;display:flex}.gengage-chat-ai-top-picks-title{color:var(--text-primary);margin:0 0 4px;font-size:15px;font-weight:600}.gengage-chat-ai-top-picks-scroll{flex-direction:column;gap:10px;min-width:0;display:flex}.gengage-chat-ai-top-picks-rest,.gengage-chat-ai-toppick-top-row{display:contents}.gengage-chat-ai-toppick-detail{width:100%;min-width:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks{gap:0;padding-top:4px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-title{flex-shrink:0;width:100%;margin:0 0 10px;font-size:18px;font-weight:700;line-height:1.2}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll{scrollbar-width:none;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,auto);align-items:stretch;gap:12px;margin:0;padding:12px 0;display:grid;overflow:visible}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact{flex:initial;scroll-snap-align:none;width:100%;min-width:0;max-width:none}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child{grid-column:1/-1;grid-template-rows:auto auto;grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:12px 18px;display:grid}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail){grid-template-rows:auto auto auto}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact{flex-direction:column;align-items:stretch}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media{max-height:140px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-media{aspect-ratio:4/3;grid-area:1/1/span 2;max-height:260px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail) .gengage-chat-ai-toppick-media{grid-row:1/span 3}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-detail{grid-area:2/2;min-width:0;padding-top:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img{object-fit:contain;flex-shrink:0;width:100%;height:100%;max-height:140px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-img{max-height:260px}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-body,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{flex:1;min-height:0;padding:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-body{grid-area:1/2;padding-top:6px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail) .gengage-chat-ai-toppick-cta{grid-row:3}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);width:calc(100% - 24px);color:var(--ds-button-secondary-fg);align-self:stretch;margin:14px 12px 12px}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);width:auto;min-width:180px;color:var(--ds-button-secondary-fg);grid-area:2/2;place-self:end start;margin:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta:hover,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta:hover{background:var(--ds-button-secondary-bg-hover);filter:none}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner{border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-ai-toppick-rating{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-secondary);border-radius:999px;align-self:flex-start;align-items:center;gap:5px;margin-top:4px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.gengage-chat-ai-toppick-rating-icon{color:color-mix(in srgb, var(--warning) 60%, var(--text-primary));justify-content:center;align-items:center;line-height:0;display:inline-flex}.gengage-chat-ai-toppick-rating-value{color:var(--text-primary)}.gengage-chat-ai-toppick-media .gengage-chat-ai-toppick-discount-badge{background:var(--client-primary);color:var(--client-on-primary);z-index:1;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:800;line-height:1.2;position:absolute;top:4px;left:4px;right:auto}.gengage-chat-ai-toppick-card--winner,.gengage-chat-ai-toppick-card--compact{box-sizing:border-box;border-radius:var(--radius-card);background:var(--surface-card);flex-direction:column;align-items:stretch;padding:12px;transition:box-shadow .2s,background .15s,transform .15s;display:flex;position:relative;overflow:visible}.gengage-chat-ai-toppick-card--winner{border:1.5px solid color-mix(in srgb, var(--client-primary) 24%, var(--border-default))}.gengage-chat-ai-toppick-card--winner:hover{background:var(--surface-card-muted);box-shadow:var(--shadow-2)}.gengage-chat-ai-toppick-card--compact{border:1px solid var(--border-default)}.gengage-chat-ai-toppick-card--compact:hover{background:var(--surface-card-muted);box-shadow:var(--shadow-1);transform:translateY(-1px)}.gengage-chat-ai-toppick-badge{z-index:2;box-sizing:border-box;text-transform:uppercase;letter-spacing:.05em;pointer-events:none;white-space:normal;border-radius:999px;max-width:calc(100% - 24px);padding:2px 10px;font-size:10px;font-weight:700;line-height:1.25;position:absolute;top:-10px;left:12px}.gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-badge{background:var(--client-primary);color:var(--client-on-primary)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-badge{background:var(--surface-card-muted);color:var(--text-secondary)}.gengage-chat-ai-toppick-media{aspect-ratio:1;border:1px solid var(--border-subtle);background:var(--surface-card);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:100%;margin-top:4px;margin-bottom:8px;display:flex;position:relative;overflow:hidden}.gengage-chat-ai-toppick-img{object-fit:contain;box-sizing:border-box;width:auto;max-width:100%;height:auto;max-height:100%;padding:4px}.gengage-chat-ai-toppick-body{flex-direction:column;flex:1;gap:0;min-width:0;padding:0;display:flex}.gengage-chat-ai-toppick-name{color:var(--text-primary);text-overflow:ellipsis;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-bottom:4px;font-size:14px;font-weight:700;line-height:1.375;display:-webkit-box;overflow:hidden}.gengage-chat-ai-toppick-role{color:var(--client-primary);text-transform:uppercase;letter-spacing:.3px;font-size:11px;font-weight:600}.gengage-chat-ai-toppick-labels{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.gengage-chat-ai-toppick-label{border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700}.gengage-chat-ai-toppick-label[data-sentiment=positive]{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-ai-toppick-label[data-sentiment=negative]{background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 82%, var(--text-primary))}.gengage-chat-ai-toppick-label[data-sentiment=neutral]{background:var(--surface-card-muted);color:var(--text-secondary)}.gengage-chat-ai-toppick-reason{color:var(--text-secondary);margin:10px 0 0;font-size:13px;line-height:1.5}.gengage-chat-ai-toppick-review{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-primary);border-radius:14px;margin-top:10px;padding:10px 12px;font-size:12px;line-height:1.45}.gengage-chat-ai-toppick-snippet{color:var(--text-secondary);margin:8px 0 0;font-size:12px;line-height:1.45}.gengage-chat-ai-toppick-price{color:var(--text-primary);margin-top:4px;font-size:14px;font-weight:700}.gengage-chat-ai-toppick-original-price{color:var(--text-secondary);font-size:12px;font-weight:400;text-decoration:line-through}.gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-control,12px);background:var(--ds-button-primary-bg);width:calc(100% - 24px);color:var(--ds-button-primary-fg);cursor:pointer;text-align:center;box-sizing:border-box;opacity:0;pointer-events:none;flex-shrink:0;align-self:stretch;margin:14px 12px 12px;padding:8px 0;font-size:13px;font-weight:700;transition:opacity .18s,transform .18s,background .15s;display:block;transform:translateY(6px)}.gengage-chat-ai-toppick-card--winner:hover .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--compact:hover .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--winner:focus-within .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--compact:focus-within .gengage-chat-ai-toppick-cta{opacity:1;pointer-events:auto;transform:translateY(0)}.gengage-chat-ai-toppick-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-ai-toppick-spinner{background:color-mix(in srgb, var(--surface-card) 78%, transparent);z-index:6;border-radius:12px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.gengage-chat-ai-toppick-spinner:after{content:\"\";border:3px solid var(--border-default);border-top-color:var(--ai-accent-start);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite gengage-spin}@keyframes gengage-spin{to{transform:rotate(360deg)}}.gengage-chat-root--mobile .gengage-chat-ai-top-picks{gap:8px;padding:4px 0}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-title{margin:0 0 2px;font-size:14px}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll{flex-direction:column;gap:8px;min-width:0;padding:6px 0 2px;display:flex;overflow:visible}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll>:first-child{flex-direction:column;align-items:stretch;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll>:first-child.gengage-chat-ai-toppick-card--winner{flex-direction:column}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest{-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;flex-flow:row;gap:8px;min-width:0;margin:0 -2px;padding:2px 2px 8px;display:flex;overflow:auto visible}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest::-webkit-scrollbar{width:0;height:0;display:none}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest .gengage-chat-ai-toppick-card--compact{scroll-snap-align:start;flex:0 0 min(82vw,272px);width:min(82vw,272px);min-width:0;max-width:272px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner{scroll-snap-align:none;flex-shrink:1;width:100%;min-width:0;max-width:none;padding:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact{scroll-snap-align:none;flex-shrink:1;width:100%;min-width:0;max-width:none;padding:6px 8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner{border:1.5px solid color-mix(in srgb, var(--client-primary) 28%, var(--border-default));margin-bottom:8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact{border:1px solid var(--border-default);box-shadow:none;flex-direction:column;align-items:stretch}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-top-row{flex-direction:row;align-items:flex-start;gap:10px;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media{aspect-ratio:1;border-radius:10px;flex:0 0 clamp(96px,30vw,124px);width:clamp(96px,30vw,124px);height:clamp(96px,30vw,124px);max-height:none;margin:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img{object-fit:contain;width:100%;height:100%;max-height:100%;padding:4px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-body{flex:1;min-width:0;padding-top:2px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-detail{width:100%;margin-top:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-reason{color:var(--text-primary);margin:0;font-size:12px;line-height:1.45;display:block!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-review{color:var(--text-secondary);border:1px solid var(--border-subtle);background:var(--surface-card-muted);border-radius:12px;margin-top:8px;padding:8px 10px;font-size:12px;font-style:italic;line-height:1.4;display:block!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-top-row{flex-direction:row;align-items:flex-start;gap:6px;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media{aspect-ratio:1;border-radius:8px;flex:0 0 64px;width:64px;height:64px;max-height:64px;margin:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{object-fit:contain;width:100%;max-height:100%;padding:2px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{flex:1;min-width:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-rating{display:none}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-detail{width:100%;margin-top:4px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-snippet{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;margin:0;font-size:10px;line-height:1.3;display:-webkit-box;overflow:hidden}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-role-line{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin:0 0 2px;font-size:9px;font-weight:600;line-height:1.15}.gengage-chat-root--mobile .gengage-chat-ai-toppick-snippet{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:11px;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{gap:5px;top:3px;right:5px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{gap:5px;top:5px;right:6px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-badge{letter-spacing:.04em;background:var(--client-primary);max-width:calc(100% - 18px);color:var(--client-on-primary);box-shadow:none;border:none;padding:2px 6px;font-size:8px;font-weight:700;line-height:1.15;top:-14px;left:8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-name{margin-bottom:1px;font-size:12px;line-height:1.22}.gengage-chat-root--mobile .gengage-chat-ai-toppick-name{margin-bottom:2px;font-size:13px;line-height:1.28}.gengage-chat-root--mobile .gengage-chat-ai-toppick-rating{gap:3px;margin-top:2px;padding:2px 6px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-price{margin-top:1px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-price{margin-top:2px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-original-price{font-size:11px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-labels,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{display:none!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta{opacity:1;pointer-events:auto;border:1px solid var(--client-primary);background:var(--surface-card);width:calc(100% - 16px);color:var(--client-primary);box-shadow:none;filter:none;align-self:stretch;margin:8px 8px 6px;padding:6px 0;font-size:12px;font-weight:600;transform:none}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta:hover{background:color-mix(in srgb, var(--client-primary) 10%, var(--surface-card));color:var(--client-primary);border-color:var(--client-primary);filter:none}.gengage-chat-root--mobile .gengage-chat-rollback-btn{left:-24px}.gengage-chat-grounding-review{align-items:center;gap:12px;padding:12px 16px;transition:background .15s,border-color .15s,box-shadow .15s;display:flex}.gengage-chat-grounding-review:hover{background:var(--ds-card-bg-hover);border-color:var(--ds-card-border-hover);box-shadow:var(--ds-card-shadow-hover)}.gengage-chat-grounding-review-icon{background:color-mix(in srgb, var(--client-primary) 8%, var(--surface-card));width:32px;height:32px;color:var(--client-primary);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.gengage-chat-grounding-review-icon svg{width:18px;height:18px;display:block}.gengage-chat-grounding-review-body{flex:1;min-width:0}.gengage-chat-grounding-review-title{color:var(--text-primary);font-size:13px;font-weight:600}.gengage-chat-grounding-review-subtitle{color:var(--text-muted);margin-top:2px;font-size:12px}.gengage-chat-grounding-review-cta{color:var(--client-primary);white-space:nowrap;flex-shrink:0;align-items:center;gap:4px;font-size:13px;font-weight:600;display:inline-flex}.gengage-chat-grounding-review-cta-icon{align-items:center;display:inline-flex}.gengage-chat-grounding-review-cta-icon svg{width:14px;height:14px;display:block}.gengage-chat-grouping-cards{flex-direction:column;gap:6px;display:flex}.gengage-chat-grouping-cards-scroll{flex-direction:column;gap:6px;min-width:0;display:flex}.gengage-chat-grouping-card{background:var(--surface-card-soft);border:1px solid var(--border-default);border-radius:var(--radius-control);align-items:center;gap:10px;padding:8px 12px;transition:background .15s,border-color .15s;display:flex}.gengage-chat-grouping-card:hover{background:color-mix(in srgb, var(--client-primary) 6%, white);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default))}.gengage-chat-grouping-card-arrow{color:var(--client-primary);flex-shrink:0;font-size:14px;display:none}.gengage-chat-grouping-card-img{border-radius:calc(var(--radius-control) - 4px);object-fit:cover;flex-shrink:0;width:48px;min-width:48px;height:48px;min-height:48px}.gengage-chat-grouping-card-body{flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:0;display:flex}.gengage-chat-grouping-card-name{color:var(--text-primary);font-size:13px;font-weight:600}.gengage-chat-grouping-card-desc{color:var(--text-muted);font-size:12px}.gengage-chat-grouping-card-labels{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.gengage-chat-grouping-card-label{color:var(--text-secondary);background:var(--surface-card-muted);border:1px solid var(--border-subtle);border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700;line-height:1.2}.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{flex-direction:column;gap:8px;display:flex}.gengage-chat-suggested-search-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-card);box-shadow:var(--shadow-1);align-items:center;gap:14px;padding:14px 16px;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s;display:flex}.gengage-chat-suggested-search-card:hover{background:var(--surface-card);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));box-shadow:var(--shadow-2);transform:translateY(-1px)}.gengage-chat-suggested-search-card-img{object-fit:contain;background:var(--surface-card-muted);border:1px solid var(--border-subtle);border-radius:14px;flex-shrink:0;width:64px;height:64px;padding:4px}.gengage-chat-suggested-search-card-body{flex:1;min-width:0}.gengage-chat-suggested-search-card-name{color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.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-nav{z-index:3;border:1px solid var(--border-default);border-radius:var(--radius-pill);cursor:pointer;background:color-mix(in srgb, var(--surface-card) 92%, transparent);width:36px;min-width:36px;height:36px;min-height:36px;color:var(--text-primary);box-shadow:var(--shadow-1);justify-content:center;align-items:center;padding:0;transition:background .15s,opacity .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.gengage-chat-product-gallery-nav:hover:not(:disabled){background:var(--surface-card);color:var(--client-primary)}.gengage-chat-product-gallery-nav:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-product-gallery-nav:disabled{opacity:.35;cursor:not-allowed}.gengage-chat-product-gallery-nav--prev{left:8px}.gengage-chat-product-gallery-nav--next{right:8px}.gengage-chat-product-gallery-thumbs{scrollbar-width:thin;justify-content:center;gap:8px;width:100%;padding:10px 0 4px;display:flex;overflow-x:auto}.gengage-chat-product-gallery-thumb{object-fit:cover;cursor:pointer;background:var(--surface-card);border:2px solid #0000;border-radius:8px;flex-shrink:0;width:56px;height:56px;transition:border-color .15s}.gengage-chat-product-gallery-thumb:hover{border-color:var(--border-strong)}.gengage-chat-product-gallery-thumb--active{border-color:var(--client-primary)}.gengage-chat-product-gallery-thumb-more{background:var(--surface-card-muted);width:56px;height:56px;color:var(--text-secondary);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.gengage-chat-product-variants-label{color:var(--text-muted);text-transform:none;letter-spacing:.5px;margin-bottom:6px;font-size:12px;font-weight:600}.gengage-chat-product-variants-list{flex-wrap:wrap;gap:6px;display:flex}.gengage-chat-product-variant-btn{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;padding:6px 12px;font-size:12px;transition:background .15s,border-color .15s}.gengage-chat-product-variant-btn:hover{background:var(--surface-card-muted);border-color:color-mix(in srgb, var(--client-primary) 20%, var(--border-default));color:var(--client-primary)}.gengage-chat-product-details-panel{border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-1);gap:16px;padding:16px}.gengage-chat-product-details-media{border-color:var(--border-default);border-radius:var(--radius-card);background:var(--surface-card-soft);justify-content:center;min-height:320px}.gengage-chat-product-details-img{max-height:420px}.gengage-chat-product-details-content{gap:12px}.gengage-chat-product-details-brand{color:var(--client-primary);font-size:12px;font-weight:800;line-height:1.2}.gengage-chat-product-details-title{font-size:22px;line-height:1.2}.gengage-chat-product-details-rating{border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));background:color-mix(in srgb, var(--warning) 10%, var(--surface-card));color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));gap:6px;padding:6px 10px;font-family:inherit}button.gengage-chat-product-details-rating{border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));cursor:pointer}.gengage-chat-product-details-rating--clickable:hover{border-color:color-mix(in srgb, var(--warning) 42%, var(--border-default));background:color-mix(in srgb, var(--warning) 14%, var(--surface-card))}.gengage-chat-product-details-rating .gengage-star-rating{line-height:1}.gengage-chat-product-details-rating-value{color:var(--text-primary)}.gengage-chat-product-details-price{flex-wrap:wrap;gap:10px}.gengage-chat-product-details-original-price{order:2}.gengage-chat-product-details-current-price{order:1;font-size:30px}.gengage-chat-product-details-discount-badge{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--error) 12%, white);min-height:24px;color:color-mix(in srgb, var(--error) 84%, var(--text-primary));order:3;align-items:center;padding:2px 8px;font-size:12px;font-weight:800;display:inline-flex}.gengage-chat-product-details-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;display:grid}.gengage-chat-product-details-fact{border:1px solid var(--border-subtle);border-radius:var(--radius-control);background:var(--surface-card-soft);min-width:0;padding:8px 10px}.gengage-chat-product-details-fact dt,.gengage-chat-product-details-fact dd{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;overflow:hidden}.gengage-chat-product-details-fact dt{color:var(--text-muted);font-size:11px;font-weight:700}.gengage-chat-product-details-fact dd{color:var(--text-primary);margin-top:2px;font-size:13px;font-weight:700}.gengage-chat-product-variants{margin-top:4px}.gengage-chat-product-variants-label{color:var(--text-primary);letter-spacing:normal;margin-bottom:8px;font-size:14px;font-weight:800}.gengage-chat-product-variants-list{gap:8px}.gengage-chat-product-variant-btn{border-radius:var(--radius-control);min-height:44px;color:var(--text-primary);gap:8px;padding:7px 10px;font-size:13px;font-weight:700}.gengage-chat-product-variant-btn--active{border-color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, var(--surface-card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--client-primary) 36%, transparent);color:var(--client-primary)}.gengage-chat-product-variant-btn--out{opacity:.48;cursor:not-allowed}.gengage-chat-product-variant-swatch{border:1px solid var(--border-default);background:var(--surface-card-muted);width:22px;height:22px;box-shadow:inset 0 0 0 2px var(--surface-card);border-radius:50%;flex:0 0 22px}.gengage-chat-product-variant-swatch--image{object-fit:cover;box-shadow:none}.gengage-chat-product-variant-label,.gengage-chat-product-variant-price{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gengage-chat-product-variant-price{color:var(--text-secondary);font-size:12px;font-weight:700}.gengage-chat-product-details-actions{gap:10px;margin-top:6px}.gengage-chat-product-details-atc,.gengage-chat-product-details-cta{border-radius:var(--radius-control);min-height:44px}.gengage-chat-product-details-atc{border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg)}.gengage-chat-product-details-atc:hover{background:var(--ds-button-primary-bg-hover);filter:none}.gengage-chat-product-details-cta.gds-btn-secondary{border-color:var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);color:var(--ds-button-secondary-fg)}.gengage-chat-product-details-cta.gds-btn-secondary:hover{background:var(--ds-button-secondary-bg-hover)}@media (width>=960px){.gengage-chat-product-details-panel{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);align-items:start;display:grid}.gengage-chat-product-details-media{position:sticky;top:0}.gengage-chat-product-detail-tabs{grid-column:1/-1}}.gengage-chat-root--mobile .gengage-chat-product-details-panel{box-shadow:none;gap:10px;padding:10px}.gengage-chat-root--mobile .gengage-chat-product-details-media{min-height:220px}.gengage-chat-root--mobile .gengage-chat-product-details-title{font-size:18px}.gengage-chat-root--mobile .gengage-chat-product-details-current-price{font-size:24px}.gengage-chat-root--mobile .gengage-chat-product-details-facts{grid-template-columns:1fr}.gengage-chat-root--mobile .gengage-chat-product-details-actions{grid-template-columns:1fr 1fr 44px;align-items:stretch;display:grid}.gengage-chat-root--mobile .gengage-chat-product-details-actions>.gengage-chat-product-details-share{width:44px;min-width:44px}.gengage-chat-root--mobile .gengage-chat-product-details-atc,.gengage-chat-root--mobile .gengage-chat-product-details-cta{width:100%;padding-inline:10px}.gengage-chat-product-grid-wrapper{flex-direction:column;gap:6px;display:flex}.gengage-chat-product-grid-head{justify-content:space-between;align-items:center;gap:8px;min-width:0;margin-bottom:2px;display:flex}.gengage-chat-product-grid-head-title{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:18px;font-weight:700;line-height:1.2;overflow:hidden}.gengage-chat-product-grid-head-actions{flex-shrink:0;align-items:center;gap:6px;max-width:52%;display:flex}.gengage-chat-product-sort-toolbar{box-shadow:none;background:0 0;border:none;border-radius:0;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0;padding:0;display:flex}.gengage-chat-product-sort-toolbar--inline{flex-wrap:nowrap;justify-content:flex-end}.gengage-chat-product-sort-dropdown{z-index:5;flex:0 auto;width:auto;min-width:0;max-width:200px;position:relative}.gengage-chat-product-sort-toolbar:not(.gengage-chat-product-sort-toolbar--inline) .gengage-chat-product-sort-dropdown{flex:auto;max-width:min(200px,100%)}.gengage-chat-product-sort-dropdown--open{z-index:25}.gengage-chat-product-sort-trigger{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:100%;min-height:32px;color:var(--text-primary);cursor:pointer;text-align:left;align-items:center;gap:6px;padding:5px 8px;font-size:12px;font-weight:600;line-height:1.2;transition:border-color .15s,box-shadow .15s,background .15s;display:flex}.gengage-chat-product-sort-trigger:hover{border-color:color-mix(in srgb, var(--client-primary) 22%, var(--border-default));background:var(--surface-card-soft)}.gengage-chat-product-sort-trigger:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-product-sort-dropdown--open .gengage-chat-product-sort-trigger{border-color:color-mix(in srgb, var(--client-primary) 32%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-product-sort-trigger-icon{color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-product-sort-dropdown[data-sort-icon=related] .gengage-chat-product-sort-trigger-icon{color:var(--client-primary)}.gengage-chat-product-sort-trigger-icon svg{display:block}.gengage-chat-product-sort-trigger-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.gengage-chat-product-sort-trigger-chevron{color:var(--text-muted);flex-shrink:0;transition:transform .2s;display:flex}.gengage-chat-product-sort-dropdown--open .gengage-chat-product-sort-trigger-chevron{transform:rotate(180deg)}.gengage-chat-product-sort-menu{width:max-content;min-width:100%;max-width:min(260px,100vw - 48px);margin:0;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:auto}.gengage-chat-product-sort-option{border-radius:calc(var(--radius-control) - 4px);width:100%;color:var(--text-primary);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:500;line-height:1.25;transition:background .12s;display:flex}.gengage-chat-product-sort-option:hover{background:var(--surface-card-muted)}.gengage-chat-product-sort-option--active{color:var(--client-primary);background:var(--client-primary-subtle);font-weight:600}.gengage-chat-product-sort-option-icon{color:var(--text-secondary);flex-shrink:0;display:flex}.gengage-chat-product-sort-option--active .gengage-chat-product-sort-option-icon,.gengage-chat-product-sort-option--active[data-sort-key=related] .gengage-chat-product-sort-option-icon{color:var(--client-primary)}.gengage-chat-product-sort-option-icon svg{display:block}.gengage-chat-product-sort-option-label{flex:auto;min-width:0}.gengage-chat-product-sort-option-check{width:22px;color:var(--client-primary);flex-shrink:0;justify-content:flex-end;display:flex}.gengage-chat-product-sort-option-check--hidden{visibility:hidden}.gengage-chat-product-sort-separator{background:var(--border-default);width:1px;margin:2px}.gengage-chat-comparison-toggle-btn{border:1px solid var(--border-default);border-radius:var(--radius-control,12px);background:var(--surface-card);min-height:32px;color:var(--text-primary);cursor:pointer;white-space:nowrap;flex:none;align-items:center;gap:5px;padding:5px 8px;font-size:12px;font-weight:700;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.gengage-chat-comparison-toggle-icon{color:var(--text-secondary);flex-shrink:0;display:flex}.gengage-chat-comparison-toggle-icon svg{display:block}.gengage-chat-comparison-toggle-btn:hover{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, white);color:var(--client-primary)}.gengage-chat-comparison-toggle-btn--active{border-color:color-mix(in srgb, var(--client-primary) 26%, white);color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-comparison-toggle-btn--active .gengage-chat-comparison-toggle-icon{color:var(--client-primary)}.gengage-chat-comparison-toggle-btn--active:hover{background:var(--client-primary-hover);color:var(--client-on-primary);border-color:var(--client-primary-hover)}.gengage-chat-comparison-toggle-btn--active:hover .gengage-chat-comparison-toggle-icon{color:var(--client-on-primary)}.gengage-chat-comparison-select-wrapper{cursor:pointer;border-radius:var(--radius-control);transition:box-shadow .2s,transform .2s;position:relative}.gengage-chat-comparison-select-wrapper:hover{box-shadow:0 0 0 2px var(--client-focus-ring)}.gengage-chat-comparison-select-wrapper--selected,.gengage-chat-comparison-select-wrapper--selected:hover{box-shadow:none}@media (prefers-reduced-motion:reduce){.gengage-chat-comparison-select-wrapper{transition:none}}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card{pointer-events:none;transition:opacity .2s,transform .2s,filter .2s}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-img-actions,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-discount-badge,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-buy-footer,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-cta{opacity:0}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-body{opacity:.82}.gengage-chat-comparison-select-wrapper:hover>.gengage-chat-product-card,.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card{opacity:1;transform:translateY(-1px)}.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--client-primary) 26%, white), var(--shadow-1);filter:saturate(1.02);border-color:#0000;outline:none}.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card .gengage-chat-product-card-body{opacity:1}.gengage-chat-comparison-card-hint{display:none}.gengage-chat-comparison-checkbox{z-index:4;cursor:pointer;pointer-events:auto;border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-card) 94%, white);min-height:40px;color:var(--text-primary);box-shadow:var(--shadow-2);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 14px;display:inline-flex;position:absolute;bottom:16px;left:16px;right:16px}.gengage-chat-comparison-checkbox[data-selected=true]{background:color-mix(in srgb, var(--client-primary) 10%, white);border-color:color-mix(in srgb, var(--client-primary) 22%, var(--border-default));color:var(--client-primary)}.gengage-chat-comparison-checkbox-icon{background:var(--surface-card-soft);color:currentColor;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.gengage-chat-comparison-checkbox[data-selected=true] .gengage-chat-comparison-checkbox-icon{background:var(--client-primary);color:var(--client-on-primary)}.gengage-chat-comparison-checkbox-dot{background:color-mix(in srgb, currentColor 75%, white);border-radius:999px;width:8px;height:8px}.gengage-chat-comparison-checkbox-label{font-size:12px;font-weight:700;line-height:1.2}.gengage-chat-comparison-toggle-btn--hidden{opacity:0;pointer-events:none}@keyframes gengage-comparison-fade-in{0%{opacity:0}to{opacity:1}}.gengage-chat-comparison-toggle-btn--reveal{animation:.5s forwards gengage-comparison-fade-in}@media (prefers-reduced-motion:reduce){.gengage-chat-comparison-toggle-btn--reveal{opacity:1;animation:none}}.gengage-chat-comparison-floating-btn{border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-card) 92%, white);width:min(100%,520px);color:var(--text-primary);z-index:5;box-shadow:var(--shadow-2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:18px;justify-content:space-between;align-items:center;gap:14px;margin:16px auto 0;padding:12px 14px;display:flex;position:sticky;bottom:12px}.gengage-chat-comparison-dock-slot{display:none}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot:not(:empty){z-index:30;padding:0 10px max(6px, env(safe-area-inset-bottom,0px));box-sizing:border-box;pointer-events:none;max-width:100%;display:block;position:absolute;bottom:0;left:0;right:0}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot>*{pointer-events:auto}.gengage-chat-comparison-floating-summary{flex:auto;align-items:center;gap:12px;min-width:0;display:flex}.gengage-chat-comparison-floating-count{background:var(--client-primary-subtle);min-width:32px;height:32px;color:var(--client-primary);border-radius:999px;justify-content:center;align-items:center;padding:0 10px;font-size:13px;font-weight:800;display:inline-flex}.gengage-chat-comparison-floating-copy{min-width:0}.gengage-chat-comparison-floating-title{color:var(--text-primary);font-size:14px;font-weight:700;line-height:1.2}.gengage-chat-comparison-floating-warning{color:var(--error);margin-top:4px;font-size:12px;line-height:1.35}.gengage-chat-comparison-floating-subtitle{color:var(--text-secondary);margin-top:2px;font-size:12px;line-height:1.35}.gengage-chat-comparison-floating-action{flex:none;min-width:132px}.gengage-chat-comparison-floating-close{border-radius:14px;flex:none;width:40px;height:40px;padding:0}.gengage-chat-comparison-floating-action--disabled{opacity:.6}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-btn{box-sizing:border-box;width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-3);border-radius:14px;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:10px;margin:0;padding:10px;position:relative;bottom:auto}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-summary{align-items:center;gap:8px;min-height:26px;padding-right:34px;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-count{flex-shrink:0;justify-content:center;align-items:center;min-width:26px;height:26px;padding:0 7px;font-size:12px;font-weight:800;line-height:1;display:inline-flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-copy{flex-direction:column;justify-content:center;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-title{margin:0;font-size:13px;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-warning{margin-top:2px;font-size:11px}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-action{box-sizing:border-box;justify-content:center;align-items:center;width:100%;min-width:0;max-width:100%;min-height:42px;padding:0 12px;font-size:13px;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-close{box-sizing:border-box;align-self:unset;z-index:10;touch-action:manipulation;border-radius:8px;flex:none;width:26px;min-width:26px;max-width:26px;height:26px;min-height:26px;max-height:26px;padding:0;line-height:0;position:absolute;top:9px;right:9px}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-close svg{width:11px;height:11px;display:block}.gengage-chat-panel-topbar{box-sizing:border-box;height:var(--_gengage-chat-header-height);background:var(--surface-card);z-index:3;border-bottom:none;flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:12px;padding:14px 16px;display:flex;position:sticky;top:0}.gengage-chat-panel-topbar-title-wrap{flex:1 1 0;align-items:center;min-width:0;display:flex}.gengage-chat-panel-topbar-back,.gengage-chat-panel-topbar-forward{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:42px;min-width:42px;height:42px;min-height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:0;transition:background .15s,border-color .15s,opacity .15s;display:flex}.gengage-chat-panel-topbar-back[hidden],.gengage-chat-panel-topbar-forward[hidden]{display:none}.gengage-chat-panel-topbar-back:hover:not(:disabled),.gengage-chat-panel-topbar-forward:hover:not(:disabled){background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default))}.gengage-chat-panel-topbar-back:disabled,.gengage-chat-panel-topbar-forward:disabled{opacity:.3;cursor:default}.gengage-chat-panel-topbar-title{width:100%;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;text-align:left;letter-spacing:-.01em;font-size:17px;font-weight:700;line-height:1.2;display:block;overflow:hidden}.gengage-chat-panel-topbar-actions{flex:none;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.gengage-chat-panel-topbar-actions:empty{display:none}.gengage-chat-panel-topbar-toolbar-host{justify-content:flex-end;align-items:center;width:100%;display:flex}.gengage-chat-panel-topbar-toolbar-host .gengage-chat-product-sort-toolbar{flex-wrap:nowrap;justify-content:flex-end;gap:8px}.gengage-chat-panel-topbar-close{display:none}@keyframes gengage-typewriter-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-typewriter-block{animation:.15s both gengage-typewriter-fade-in;display:block}@media (prefers-reduced-motion:reduce){.gengage-chat-typewriter-block{animation:none}}.gengage-product-mention{color:var(--client-primary);cursor:pointer;border-bottom:1px dashed var(--client-primary);font-weight:500;text-decoration:none;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:1.5s ease-in-out infinite gengage-skeleton-pulse}@media (prefers-reduced-motion:reduce){.gengage-chat-panel-skeleton-block{animation:none}}.gengage-chat-input-chips{scrollbar-width:none;-ms-overflow-style:none;flex-wrap:nowrap;gap:6px;padding:4px 12px 2px;display:flex;overflow-x:auto}.gengage-chat-input-chips::-webkit-scrollbar{display:none}.gengage-chat-input-chip{border-radius:var(--radius-pill);border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;white-space:nowrap;align-items:center;padding:8px 12px;font-family:inherit;font-size:12px;font-weight:700;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.gengage-chat-input-chip:hover{background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));color:var(--client-primary)}.gengage-chat-icon{flex-shrink:0;width:14px;height:14px}.gengage-chat-input-chip-icon,.gengage-chat-pill-icon{align-items:center;margin-right:4px;display:inline-flex}.gengage-chat-product-card-img-wrapper,.gengage-chat-product-details-img-wrap{position:relative;overflow:hidden}.gengage-chat-product-card-discount-badge{border-radius:var(--radius-pill);background:var(--_gengage-discount-color);color:var(--text-inverse);z-index:1;padding:3px 8px;font-size:11px;font-weight:700;line-height:1.3;position:absolute;top:8px;left:8px}.gengage-chat-product-card-stock{border-radius:var(--radius-pill);width:fit-content;margin-top:2px;padding:2px 6px;font-size:11px;font-weight:600}.gengage-chat-product-card-stock.is-in-stock{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-product-card-stock.is-out-of-stock{background:color-mix(in srgb, var(--error) 10%, white);color:var(--error)}.gengage-chat-find-similar-pill{border:1px solid var(--border-subtle);border-radius:var(--radius-control);background:color-mix(in srgb, var(--surface-elevated) 96%, transparent);width:28px;height:28px;color:var(--text-primary);box-shadow:var(--shadow-1);cursor:pointer;z-index:2;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:11px;font-weight:500;transition:opacity .2s,box-shadow .15s;display:inline-flex;position:relative}.gengage-chat-find-similar-pill:hover{box-shadow:var(--shadow-2);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default))}@media (hover:hover) and (pointer:fine){.gengage-chat-find-similar-pill:after{content:attr(data-tooltip);background:color-mix(in srgb, var(--surface-shell) 98%, black);border:1px solid color-mix(in srgb, var(--surface-shell) 60%, white);box-shadow:var(--shadow-2);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;z-index:12;border-radius:10px;padding:6px 10px;font-size:11px;font-weight:600;line-height:1.2;transition:opacity .14s;position:absolute;top:50%;right:calc(100% + 8px);transform:translateY(-50%)}.gengage-chat-find-similar-pill:hover:after,.gengage-chat-find-similar-pill:focus-visible:after{opacity:1}}.gengage-chat-find-similar-pill-icon{justify-content:center;align-items:center;display:flex}.gengage-chat-find-similar-pill-icon svg{display:block}.gengage-chat-find-similar-pill-text{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gengage-chat-product-card-img-wrapper .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{transition:opacity .2s}@media (hover:hover) and (pointer:fine){.gengage-chat-product-card-img-wrapper:not(:hover) .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media:not(:hover) .gengage-chat-product-card-img-actions{opacity:0;pointer-events:none}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media:hover .gengage-chat-product-card-img-actions{opacity:1;pointer-events:auto}}@media (hover:none),(pointer:coarse){.gengage-chat-product-card-img-wrapper .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{opacity:1;pointer-events:auto}}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--surface-shell) 88%, transparent);width:auto;height:auto;color:var(--text-inverse);box-shadow:none;opacity:0;pointer-events:none;padding:4px 10px;position:absolute;top:40px;right:8px}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill-icon{display:none}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill-text{clip:auto;white-space:nowrap;width:auto;height:auto;margin:0;position:static;overflow:visible}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-find-similar-pill,.gengage-chat-ai-toppick-media: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{background:color-mix(in srgb, var(--surface-elevated) 96%, transparent);border:1px solid var(--border-subtle);border-radius:var(--radius-control);cursor:pointer;width:28px;height:28px;color:var(--text-secondary);box-shadow:var(--shadow-1);z-index:3;justify-content:center;align-items:center;padding:0;transition:color .2s,box-shadow .15s;display:flex;position:absolute;top:8px;right:8px}.gengage-chat-favorite-btn:hover{box-shadow:var(--shadow-2);color:var(--error);border-color:color-mix(in srgb, var(--error) 20%, var(--border-default))}.gengage-chat-favorite-btn--active{color:var(--error)}.gengage-chat-product-details-promos{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.gengage-chat-product-details-promo-badge{border-radius:var(--radius-pill);background:var(--gengage-chat-promo-bg,color-mix(in srgb, var(--success) 12%, white));color:var(--gengage-chat-promo-text,color-mix(in srgb, var(--success) 82%, var(--text-primary)));white-space:nowrap;box-sizing:border-box;min-height:20px;padding:2px 6px;font-size:10px;font-weight:500;display:inline-block}.gengage-chat-thumbnails-column{pointer-events:none;display:none!important}.gengage-chat-thumbnail-btn{border:2px solid var(--border-default);border-radius:calc(var(--radius-control) - 4px);background:var(--surface-card);cursor:pointer;justify-content:center;align-items:center;width:40px;height:40px;padding:0;transition:border-color .15s;display:flex;overflow:hidden}.gengage-chat-thumbnail-btn:hover{border-color:var(--client-primary)}.gengage-chat-thumbnail-img{object-fit:cover;width:100%;height:100%}.gengage-chat-panel-float{box-sizing:border-box;pointer-events:none;z-index:10;flex-shrink:0;align-self:stretch;width:100%;height:0;margin-top:auto;position:sticky;bottom:0;overflow:visible}.gengage-chat-choice-prompter{pointer-events:none;background:var(--surface-card);border:1px solid var(--border-default);width:auto;max-width:none;box-shadow:var(--shadow-2);z-index:5;opacity:0;border-radius:16px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;margin-left:0;margin-right:0;padding:12px 14px;transition:opacity .2s,transform .2s;display:grid;position:absolute;bottom:12px;left:16px;right:16px;transform:translateY(12px)}.gengage-chat-panel--scrolled .gengage-chat-choice-prompter{pointer-events:auto;opacity:1;transform:translateY(0)}.gengage-chat-choice-prompter-heading{color:var(--text-primary);margin-bottom:2px;font-size:12px;font-weight:700}.gengage-chat-choice-prompter-suggestion{color:var(--text-secondary);margin-bottom:0;font-size:12px;line-height:1.35}.gengage-chat-choice-prompter-copy{min-width:0}.gengage-chat-choice-prompter-cta{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-control);background:var(--ds-button-primary-bg);width:auto;min-width:180px;min-height:40px;color:var(--ds-button-primary-fg);cursor:pointer;text-align:center;padding:0 18px;font-family:inherit;font-size:13px;font-weight:700;transition:background .15s;display:inline-flex}.gengage-chat-choice-prompter-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-choice-prompter-dismiss{border:1px solid var(--border-default);background:var(--surface-card-soft);min-width:32px;min-height:32px;color:var(--text-muted);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex;position:absolute;top:10px;right:10px}.gengage-chat-choice-prompter-dismiss:hover{color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white);background:var(--client-primary-subtle)}@media (prefers-reduced-motion:reduce){.gengage-chat-choice-prompter{animation:none}}.gengage-chat-pros-cons{background:var(--surface-card-soft);border:1px solid var(--border-subtle);border-radius:var(--radius-control);margin:8px 0;padding:12px 14px}.gengage-chat-pros-cons-heading{color:var(--text-primary);margin:0 0 10px;font-size:14px;font-weight:600}.gengage-chat-pros-cons-list{margin:0 0 8px;padding:0;list-style:none}.gengage-chat-pros-cons-list:last-child{margin-bottom:0}.gengage-chat-pros-cons-item{color:var(--text-secondary);align-items:flex-start;gap:8px;padding:4px 0;font-size:13px;line-height:1.5;display:flex}.gengage-chat-pros-cons-icon{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;font-size:12px;font-weight:700;display:flex}.gengage-chat-pros-cons-icon--pro{color:var(--success);background:color-mix(in srgb, var(--success) 15%, white)}.gengage-chat-pros-cons-icon--con{color:var(--error);background:color-mix(in srgb, var(--error) 12%, white)}.gengage-chat-categories{flex-direction:column;gap:8px;display:flex}.gengage-chat-categories-tabs{-webkit-overflow-scrolling:touch;gap:4px;padding:4px 0;display:flex;overflow-x:auto}.gengage-chat-categories-tab{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;white-space:nowrap;padding:6px 14px;font-size:13px;transition:background .15s,color .15s,border-color .15s}.gengage-chat-categories-tab:hover{background:var(--surface-card-soft);border-color:var(--border-strong)}.gengage-chat-categories-tab--active{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default))}.gengage-chat-categories-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;display:grid}.gengage-chat-categories-filter-tags{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.gengage-chat-categories-filter-tag{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;padding:4px 10px;font-size:12px;transition:background .15s,border-color .15s,color .15s}.gengage-chat-categories-filter-tag:hover{background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));color:var(--client-primary)}.gengage-chat-product-grid-view-more{border:1px solid var(--ds-button-secondary-border);border-radius:var(--radius-control);background:var(--ds-button-secondary-bg);width:100%;color:var(--ds-button-secondary-fg);cursor:pointer;text-align:center;grid-column:1/-1;margin-top:8px;padding:10px;font-size:14px;font-weight:500;transition:background .15s;display:block}.gengage-chat-product-grid-view-more:hover{background:var(--ds-button-secondary-bg-hover)}.gengage-chat-product-grid--mobile{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px 0;display:grid;overflow-x:visible}.gengage-chat-product-grid--mobile .gengage-chat-product-card{width:100%;min-width:0;max-width:none}.gengage-chat-comparison--mobile{position:relative;overflow-x:clip}.gengage-chat-comparison--mobile .gengage-chat-comparison-table-wrapper{-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 88%,#0000);mask-image:linear-gradient(90deg,#000 88%,#0000)}.gengage-chat-comparison--mobile .gengage-chat-comparison-table{table-layout:fixed;min-width:480px}.gengage-chat-comparison--mobile .gengage-chat-comparison-table th:first-child,.gengage-chat-comparison--mobile .gengage-chat-comparison-table .gengage-chat-comparison-label{background:var(--surface-card);z-index:1;box-shadow:2px 0 4px color-mix(in srgb, var(--surface-shell) 8%, transparent);position:sticky;left:0}.gengage-chat-comparison--mobile .gengage-chat-comparison-table thead th:first-child{box-sizing:border-box;width:22ch;min-width:0;max-width:22ch;padding:8px 6px}.gengage-chat-comparison--mobile .gengage-chat-comparison-table td.gengage-chat-comparison-label{text-align:left;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;vertical-align:middle;width:22ch;min-width:0;max-width:22ch;overflow:hidden}.gengage-chat-product-details-similars-heading{color:var(--text-primary);margin:16px 0 8px;font-size:18px;font-weight:700;line-height:1.2}.gengage-chat-product-details-similars{margin-top:8px}.gengage-chat-handoff-notice{background:color-mix(in srgb, var(--warning) 10%, white);border:1px solid color-mix(in srgb, var(--warning) 28%, var(--border-default));border-radius:var(--radius-control);text-align:center;flex-direction:column;align-items:center;gap:6px;margin:8px 0;padding:16px;display:flex}.gengage-chat-handoff-notice-icon{font-size:24px}.gengage-chat-handoff-notice-heading{color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));margin:0;font-size:14px;font-weight:600}.gengage-chat-handoff-notice-summary{color:color-mix(in srgb, var(--warning) 84%, var(--text-primary));margin:0;font-size:13px;line-height:1.5}.gengage-chat-product-details-share{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:36px;height:36px;color:var(--text-muted);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;transition:color .12s,border-color .12s,background-color .12s;display:inline-flex;position:relative}.gengage-chat-product-details-share:hover{color:var(--client-primary);border-color:var(--client-primary);background:var(--client-primary-subtle)}.gengage-chat-product-details-share:before{content:attr(aria-label);border-radius:calc(var(--radius-control) - 4px);background:var(--surface-shell);color:var(--text-inverse);white-space:nowrap;pointer-events:none;opacity:0;z-index:2;padding:4px 8px;font-size:11px;font-weight:500;transition:opacity .15s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.gengage-chat-product-details-share:hover:before{opacity:1}.gengage-chat-product-details-share--copied:after{content:\"✓\";background:var(--_gengage-success-color);color:var(--client-on-primary);border-radius:var(--radius-control);justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex;position:absolute;inset:0}.gengage-chat-product-details-share svg{width:20px;height:20px}.gengage-chat-review-link,.gengage-chat-grounding-link{color:var(--client-primary);text-decoration:underline}@media (width<=768px){.gengage-chat-product-details-promo-badge{-webkit-line-clamp:2;line-clamp:2;white-space:normal;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}.gengage-chat-launcher:focus-visible,.gengage-chat-close:focus-visible,.gengage-chat-header-btn:focus-visible,.gengage-chat-header-powered: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-toggle-btn:focus-visible,.gengage-chat-comparison-floating-btn:focus-visible,.gengage-chat-comparison-checkbox:focus-visible,.gengage-chat-product-sort-trigger:focus-visible,.gengage-chat-product-sort-option: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-attach-menu-item: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{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-root--mobile .gengage-chat-choice-prompter{grid-template-columns:1fr;width:auto;max-width:none;max-height:40vh;bottom:12px;left:12px;right:12px;overflow-y:auto}.gengage-chat-root--mobile .gengage-chat-choice-prompter-cta{width:100%}.gengage-chat-root--mobile .gengage-chat-product-sort-trigger,.gengage-chat-root--mobile .gengage-chat-product-sort-option,.gengage-chat-root--mobile .gengage-chat-comparison-toggle-btn{min-height:40px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger-label,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger-chevron,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-comparison-toggle-label{display:none}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-dropdown{flex:none;width:auto;max-width:none}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger{justify-content:center;gap:0;width:auto;min-width:44px;padding:0 10px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-comparison-toggle-btn{justify-content:center;gap:0;width:44px;min-width:44px;padding:0}.gengage-chat-root--mobile .gengage-chat-input-chip{min-height:40px;padding:8px 12px}.gengage-chat-root--mobile .gengage-chat-choice-prompter-dismiss{width:32px;height:32px}.gengage-chat-root--mobile .gengage-chat-panel-divider-toggle{min-height:44px}.gengage-chat-root--mobile .gengage-chat-product-card-cta,.gengage-chat-root--mobile .gengage-chat-choice-prompter-cta,.gengage-chat-root--mobile .gengage-chat-product-grid-view-more{justify-content:center;align-items:center;min-height:44px;display:flex}.gengage-chat-root--mobile .gengage-chat-panel-topbar-back,.gengage-chat-root--mobile .gengage-chat-panel-topbar-forward,.gengage-chat-root--mobile .gengage-chat-favorite-btn,.gengage-chat-root--mobile .gengage-chat-product-details-share{width:44px;min-width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-panel-topbar-close{display:none}.gengage-skeleton{gap:12px;padding:12px;display:flex}.gengage-skeleton--message{flex-direction:column;gap:8px;padding:16px}.gengage-skeleton-card{flex-direction:column;flex:1;gap:8px;display:flex}.gengage-skeleton-img{border-radius:var(--radius-control);height:120px}.gengage-skeleton-text{border-radius:4px;height:14px}.gengage-skeleton-price{border-radius:4px;width:60%;height:14px}.gengage-skeleton-line{border-radius:4px;height:12px}@media (prefers-reduced-motion:no-preference){.gengage-skeleton-card,.gengage-skeleton-line,.gengage-skeleton-img,.gengage-skeleton-text,.gengage-skeleton-price{background:linear-gradient(90deg, var(--ds-neutral-100) 25%, var(--ds-neutral-200) 50%, var(--ds-neutral-100) 75%);background-size:200% 100%;animation:1.5s infinite gengage-shimmer}@keyframes gengage-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}}@media (prefers-reduced-motion:reduce){.gengage-skeleton-card,.gengage-skeleton-line,.gengage-skeleton-img,.gengage-skeleton-text,.gengage-skeleton-price{background:var(--ds-neutral-100)}}.gengage-chat-panel--has-scroll:after{content:\"\";background:linear-gradient(transparent, var(--surface-card-soft));pointer-events:none;height:40px;display:block;position:sticky;bottom:0}@media (prefers-reduced-motion:no-preference){.gengage-chat-panel--transitioning{opacity:0;transition:opacity .15s}}.gengage-chat-cart-toast{background:var(--success);color:var(--text-inverse);border-radius:var(--radius-pill);box-shadow:var(--shadow-3);pointer-events:none;opacity:0;z-index:10;white-space:nowrap;padding:8px 18px;font-size:13px;font-weight:600;transition:opacity .2s,transform .2s;position:absolute;bottom:72px;left:50%;transform:translate(-50%)translateY(8px)}.gengage-chat-cart-toast--visible{opacity:1;transform:translate(-50%)translateY(0)}@keyframes gengage-cart-flash{0%{transform:scale(1)}30%{transform:scale(1.25)}60%{transform:scale(.95)}to{transform:scale(1)}}.gengage-chat-header-btn--cart-flash{animation:.5s gengage-cart-flash}", Nr = o({
|
|
4681
|
+
var zr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel-container,.gengage-simbut-root){--ds-neutral-0:#fff;--ds-neutral-25:#fcfcfd;--ds-neutral-50:#f6f7fb;--ds-neutral-100:#f3f4f6;--ds-neutral-200:#e5e7eb;--ds-neutral-300:#d0d5dd;--ds-neutral-500:#667085;--ds-neutral-600:#475467;--ds-neutral-700:#344054;--ds-neutral-900:#111827;--ds-radius-2:8px;--ds-radius-3:12px;--ds-radius-4:16px;--ds-radius-5:20px;--ds-radius-6:24px;--ds-radius-pill:999px;--ds-shadow-1:0 1px 2px #1018280a, 0 1px 3px #1018280f;--ds-shadow-2:0 4px 12px #10182814;--ds-shadow-3:0 10px 24px #1018281f;--client-primary:var(--gengage-primary-color,#b7102a);--client-primary-hover:var(--gengage-primary-hover,color-mix(in srgb, var(--client-primary) 88%, black 12%));--client-primary-active:var(--gengage-primary-active,color-mix(in srgb, var(--client-primary) 78%, black 22%));--client-primary-subtle:color-mix(in srgb, var(--client-primary) 12%, white);--client-primary-soft:color-mix(in srgb, var(--client-primary) 20%, white);--client-on-primary:var(--gengage-primary-foreground,#fff);--client-focus-ring:color-mix(in srgb, var(--client-primary) 32%, transparent);--ai-accent-start:#0b24d6;--ai-accent-end:#f768f2;--ai-accent-soft:linear-gradient(135deg, #0b24d614, #f768f214);--surface-page:var(--gengage-page-bg,var(--ds-neutral-50));--surface-shell:var(--gengage-shell-bg,#10131a);--surface-card:var(--gengage-background-color,var(--ds-neutral-0));--surface-card-muted:var(--gengage-surface-soft,#f8fafc);--surface-card-soft:var(--surface-card-muted);--surface-elevated:var(--gengage-surface-elevated,var(--ds-neutral-0));--surface-input:var(--gengage-input-bg,var(--ds-neutral-0));--surface-overlay:var(--gengage-overlay-bg,#10131a85);--text-primary:var(--gengage-foreground-color,var(--ds-neutral-900));--text-secondary:var(--gengage-text-secondary,#4b5563);--text-muted:var(--gengage-text-muted,#6b7280);--text-inverse:var(--gengage-text-inverse,#f9fafb);--border-subtle:var(--gengage-border-subtle,#1118270f);--border-default:var(--gengage-border-color,#1118271a);--border-strong:var(--gengage-border-strong,#1118272e);--shadow-1:var(--gengage-shadow-1,var(--ds-shadow-1));--shadow-2:var(--gengage-shadow-2,var(--ds-shadow-2));--shadow-3:var(--gengage-shadow-3,var(--ds-shadow-3));--radius-control:var(--gengage-control-radius,var(--ds-radius-3));--radius-card:var(--gengage-card-radius,var(--ds-radius-4));--radius-panel:var(--gengage-panel-radius,var(--ds-radius-6));--radius-pill:var(--gengage-pill-radius,var(--ds-radius-pill));--success:var(--gengage-success-color,#16a34a);--warning:var(--gengage-warning-color,#d97706);--error:var(--gengage-error-color,#dc2626);--info:var(--gengage-info-color,#2563eb);--rating:var(--gengage-rating-color,#f5b301);--gengage-primary:var(--client-primary);--gengage-primary-soft:var(--client-primary-soft);--gengage-primary-subtle:var(--client-primary-subtle);--gengage-text-color:var(--text-primary);--gengage-text-secondary:var(--text-secondary);--gengage-hover-color:var(--surface-card-soft);--ds-button-primary-bg:var(--client-primary);--ds-button-primary-bg-hover:var(--client-primary-hover);--ds-button-primary-bg-active:var(--client-primary-active);--ds-button-primary-fg:var(--client-on-primary);--ds-button-primary-border:color-mix(in srgb, var(--client-primary) 82%, black 18%);--ds-button-secondary-bg:var(--surface-card);--ds-button-secondary-bg-hover:var(--client-primary-subtle);--ds-button-secondary-fg:var(--client-primary);--ds-button-secondary-border:color-mix(in srgb, var(--client-primary) 26%, white);--ds-button-ghost-bg:var(--surface-card-muted);--ds-button-ghost-bg-hover:var(--ds-button-ghost-bg);--ds-button-ghost-fg:var(--text-primary);--ds-button-ghost-fg-hover:var(--client-primary);--ds-button-ghost-border:var(--border-default);--ds-button-ghost-border-hover:color-mix(in srgb, var(--client-primary) 18%, white);--ds-panel-bg:var(--surface-card);--ds-panel-border:var(--border-default);--ds-panel-shadow:var(--shadow-1);--ds-panel-radius:var(--radius-panel);--ds-header-bg:var(--surface-card);--ds-header-fg:var(--text-primary);--ds-header-muted:var(--text-muted);--ds-header-border:var(--border-default);--ds-card-bg:var(--surface-card);--ds-card-bg-soft:var(--surface-card-muted);--ds-card-border:var(--border-default);--ds-card-shadow:var(--shadow-1);--ds-card-shadow-hover:var(--shadow-2);--ds-card-radius:var(--radius-card);--ds-card-border-hover:color-mix(in srgb, var(--client-primary) 14%, var(--border-default));--ds-card-bg-hover:color-mix(in srgb, var(--client-primary) 2%, var(--surface-card));--ds-product-card-media-bg:var(--surface-card-muted);--ds-product-card-media-border:var(--border-subtle);--ds-input-bg:var(--surface-input);--ds-input-border:var(--border-default);--ds-input-radius:16px;--ds-input-focus-border:color-mix(in srgb, var(--client-primary) 28%, white);--ds-input-focus-ring:0 0 0 4px var(--client-focus-ring);--ds-input-highlight:inset 0 1px 0 #fff9;--ds-chip-bg:var(--surface-card);--ds-chip-border:var(--border-default);--ds-chip-fg:var(--text-secondary);--ds-chip-bg-hover:var(--surface-card-muted);--ds-chip-bg-active:color-mix(in srgb, var(--client-primary) 8%, white);--ds-chip-border-active:color-mix(in srgb, var(--client-primary) 30%, white);--ds-chip-fg-active:var(--client-primary);--ds-tab-bg:var(--surface-card);--ds-tab-bg-hover:var(--surface-card-muted);--ds-tab-bg-active:color-mix(in srgb, var(--client-primary) 8%, white);--ds-tab-border:var(--border-default);--ds-tab-border-active:color-mix(in srgb, var(--client-primary) 26%, white);--ds-tab-fg:var(--text-secondary);--ds-tab-fg-active:var(--client-primary);--ds-badge-brand-bg:color-mix(in srgb, var(--client-primary) 10%, white);--ds-badge-brand-border:color-mix(in srgb, var(--client-primary) 18%, white);--ds-badge-brand-fg:var(--client-primary);--ds-message-user-bg:color-mix(in srgb, var(--client-primary) 10%, white);--ds-message-user-fg:var(--text-primary);--ds-message-user-border:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));--ds-message-user-shadow:none;--ds-message-assistant-bg:var(--surface-card-soft);--ds-message-assistant-fg:var(--text-primary);--ds-message-assistant-border:var(--border-default);--ds-message-assistant-shadow:none;--ds-message-active-outline:color-mix(in srgb, var(--client-primary) 68%, white);--ds-progress-card-border:var(--border-subtle);--ds-progress-mark-bg:color-mix(in srgb, var(--ai-accent-start) 8%, var(--surface-card));--ds-progress-mark-border:color-mix(in srgb, var(--ai-accent-start) 12%, var(--border-default));--ds-progress-scrollbar-thumb:color-mix(in srgb, var(--text-primary) 18%, transparent);--ds-toast-error-bg:color-mix(in srgb, var(--error) 5%, var(--surface-card));--ds-toast-error-border:color-mix(in srgb, var(--error) 18%, var(--border-default));--ds-toast-error-accent:var(--error);--ds-toast-error-fg:color-mix(in srgb, var(--error) 22%, var(--text-primary));--ds-toast-error-shadow:var(--shadow-3);--ds-comparison-table-bg:var(--surface-card);--ds-comparison-table-border:var(--border-default);--ds-comparison-table-header-bg:var(--surface-card-muted);--ds-comparison-table-header-fg:var(--text-muted);--ds-comparison-table-row-border:var(--border-subtle);--ds-comparison-table-winner-bg:color-mix(in srgb, var(--client-primary) 6%, white);--ds-comparison-table-winner-fg:var(--client-primary)}:where(.gds-panel){background:var(--ds-panel-bg);border:1px solid var(--ds-panel-border);border-radius:var(--ds-panel-radius);box-shadow:var(--ds-panel-shadow)}:where(.gengage-qna-panel,.gengage-chat-panel-topbar,.gengage-chat-chat-header,.gengage-chat-panel-ai-zone>.gengage-chat-ai-top-picks,.gengage-chat-grounding-review){border-color:var(--ds-panel-border)}:where(.gds-btn){border-radius:var(--radius-control);min-height:46px;font:inherit;cursor:pointer;border:0;outline:none;justify-content:center;align-items:center;gap:10px;padding:0 18px;font-weight:700;transition:box-shadow .15s,border-color .15s,background-color .15s,color .15s;display:inline-flex}:where(.gds-btn:hover){transform:none}:where(.gds-btn:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-btn:disabled){cursor:not-allowed;opacity:.56;box-shadow:none}:where(.gds-btn-primary){background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);border:1px solid var(--ds-button-primary-border)}:where(.gds-btn-primary:hover){background:var(--ds-button-primary-bg-hover)}:where(.gds-btn-secondary){background:var(--ds-button-secondary-bg);color:var(--ds-button-secondary-fg);border:1px solid var(--ds-button-secondary-border)}:where(.gds-btn-secondary:hover){background:var(--ds-button-secondary-bg-hover)}:where(.gds-btn-ghost){background:var(--ds-button-ghost-bg);color:var(--ds-button-ghost-fg);border:1px solid var(--ds-button-ghost-border)}:where(.gds-btn-ghost:hover){background:var(--ds-button-ghost-bg-hover);border-color:var(--ds-button-ghost-border-hover);color:var(--ds-button-ghost-fg-hover)}:where(.gds-chip){border-radius:var(--radius-pill);border:1px solid var(--ds-chip-border);background:var(--ds-chip-bg);color:var(--ds-chip-fg);align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:700;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}:where(.gds-chip:hover){background:var(--ds-chip-bg-hover);border-color:color-mix(in srgb, var(--client-primary) 16%, var(--ds-chip-border))}:where(.gds-chip:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-chip-active){border-color:var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active)}:where(.gds-badge){border-radius:var(--radius-pill);letter-spacing:.04em;align-items:center;min-height:28px;padding:0 10px;font-size:11px;font-weight:800;display:inline-flex}:where(.gds-badge-brand){background:var(--ds-badge-brand-bg);color:var(--ds-badge-brand-fg);border:1px solid var(--ds-badge-brand-border)}:where(.gds-shell-header){background:var(--ds-header-bg);color:var(--ds-header-fg);border-bottom:1px solid var(--ds-header-border);box-shadow:none;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;display:flex}:where(.gds-shell-header [data-gengage-part=chat-header-powered-by]){color:var(--ds-header-muted)}:where(.gds-icon-btn){border-radius:var(--radius-control);width:42px;min-width:42px;height:42px;min-height:42px;padding:0}:where(.gds-input-shell){border-radius:var(--ds-input-radius);border:1px solid var(--ds-input-border);background:var(--ds-input-bg);min-height:52px;box-shadow:var(--ds-input-highlight);align-items:center;gap:12px;padding:6px 6px 6px 14px;transition:border-color .15s,box-shadow .15s,background-color .15s;display:flex}:where(.gds-input-shell:focus-within){border-color:var(--ds-input-focus-border);box-shadow:var(--ds-input-focus-ring)}:where(.gds-tab){border-radius:var(--radius-pill);border:1px solid var(--ds-tab-border);background:var(--ds-tab-bg);color:var(--ds-tab-fg);align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:700;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}:where(.gds-tab:hover){background:var(--ds-tab-bg-hover)}:where(.gds-tab:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-tab[aria-selected=true],.gds-tab.is-active){color:var(--ds-tab-fg-active);border-color:var(--ds-tab-border-active);background:var(--ds-tab-bg-active)}:where(.gds-toolbar){flex-wrap:wrap;align-items:center;gap:10px;display:flex}:where(.gds-toolbar-compact){gap:8px}:where(.gds-card){background:var(--ds-card-bg);border:1px solid var(--ds-card-border);border-radius:var(--ds-card-radius);box-shadow:var(--ds-card-shadow);transition:border-color .15s,box-shadow .15s,background-color .15s}:where(.gds-card-interactive),:where(.gds-clickable){cursor:pointer}:where(.gds-card-interactive:hover){background:var(--ds-card-bg-hover);border-color:var(--ds-card-border-hover);box-shadow:var(--ds-card-shadow-hover)}:where(.gds-card-soft){background:var(--ds-card-bg-soft)}:where(.gds-product-card){border-radius:16px}:where(.gds-evidence-card){background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-control);box-shadow:var(--shadow-1)}:where(.gds-evidence-card-success){background:color-mix(in srgb, var(--success) 10%, white);border-color:color-mix(in srgb, var(--success) 22%, var(--border-default))}:where(.gds-evidence-card-danger){background:color-mix(in srgb, var(--error) 8%, white);border-color:color-mix(in srgb, var(--error) 20%, var(--border-default))}:where(.gds-evidence-card-warning){background:color-mix(in srgb, var(--warning) 10%, white);border-color:color-mix(in srgb, var(--warning) 22%, var(--border-default))}:where(.gds-message){border-radius:calc(var(--radius-control) + 4px);word-wrap:break-word;overflow-wrap:break-word;border:1px solid #0000;max-width:85%;padding:14px 16px;font-size:14px;font-weight:400;line-height:1.55;animation:.3s cubic-bezier(.2,.7,.2,1) gengage-chat-msg-in}:where(.gds-message-user){background:var(--ds-message-user-bg);color:var(--ds-message-user-fg);border-color:var(--ds-message-user-border);box-shadow:var(--ds-message-user-shadow);border-bottom-right-radius:6px;align-self:flex-end}:where(.gds-message-assistant){background:var(--ds-message-assistant-bg);color:var(--ds-message-assistant-fg);border-color:var(--ds-message-assistant-border);box-shadow:var(--ds-message-assistant-shadow);border-bottom-left-radius:6px;align-self:flex-start;min-width:120px}:where(.gds-message-active){outline:2px solid var(--ds-message-active-outline);outline-offset:-2px}:where(.gds-ai-card){background:var(--surface-card);border:1px solid var(--ds-progress-card-border);border-radius:20px;gap:16px;padding:18px;display:grid}:where(.gds-ai-mark){background:var(--ds-progress-mark-bg);width:42px;height:42px;color:var(--ai-accent-start);border:1px solid var(--ds-progress-mark-border);border-radius:14px;place-items:center;display:grid}:where(.gds-ai-loader-row){align-items:center;gap:12px;display:flex}:where(.gds-progress-loader){border:1px solid color-mix(in srgb, var(--ai-accent-start) 10%, var(--border-default));background:linear-gradient(110deg, var(--surface-card-soft) 8%, color-mix(in srgb, var(--ai-accent-start) 5%, var(--surface-card)) 18%, var(--surface-card-soft) 33%);width:fit-content;max-width:100%;color:var(--text-secondary);background-size:220% 100%;border-radius:14px;align-items:center;gap:10px;padding:8px 14px;animation:1.8s linear infinite gds-progress-shimmer;display:inline-flex}:where(.gds-progress-loader-chat){box-sizing:border-box;align-self:flex-start;width:100%;min-width:0;max-width:85%;display:flex}:where(.gds-progress-loader-chat) .gds-progress-label{overflow-wrap:anywhere;flex:auto;min-width:0}:where(.gds-progress-loader-panel){box-sizing:border-box;justify-content:flex-start;align-items:center;width:100%;min-width:0;max-width:100%;display:flex}:where(.gds-progress-loader-panel) .gds-progress-label{overflow-wrap:anywhere;flex:auto;min-width:0}:where(.gds-progress-label){min-width:0;color:var(--text-secondary);word-break:break-word;font-size:13px;line-height:1.5}:where(.gds-progress-dots){flex-shrink:0;align-items:center;gap:6px;display:inline-flex}:where(.gds-progress-dot){background:color-mix(in srgb, var(--ai-accent-start) 20%, var(--text-muted));border-radius:50%;width:8px;height:8px;animation:1.2s ease-in-out infinite gds-progress-dot-pulse;display:inline-block}:where(.gds-progress-dot:nth-child(2)){animation-delay:.2s}:where(.gds-progress-dot:nth-child(3)){animation-delay:.4s}:where(.gds-ai-status){border-radius:calc(var(--radius-control) + 2px);border:1px solid var(--border-default);background:var(--surface-card-muted);max-width:85%;color:var(--text-secondary);border-bottom-left-radius:6px;align-self:flex-start;align-items:center;gap:8px;padding:10px 14px;display:flex}:where(.gds-ai-status-text){color:var(--text-secondary);font-size:13px;font-style:italic}:where(.gds-ai-dot-loader){align-items:center;gap:5px;display:inline-flex}:where(.gds-ai-dot-loader span){background:color-mix(in srgb, var(--ai-accent-start) 38%, var(--text-muted));border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite gds-progress-dot-pulse;display:inline-block}:where(.gds-ai-dot-loader span:nth-child(2)){animation-delay:.2s}:where(.gds-ai-dot-loader span:nth-child(3)){animation-delay:.4s}:where(.gds-ai-spinner){border:2.5px solid var(--border-default);border-top-color:var(--ai-accent-start);border-radius:50%;flex-shrink:0;width:26px;height:26px;animation:.72s linear infinite gds-spin}@keyframes gds-spin{to{transform:rotate(360deg)}}@keyframes gds-progress-shimmer{0%{background-position:200% 0}to{background-position:-20% 0}}@keyframes gds-progress-dot-pulse{0%,to{opacity:.45;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){:where(.gds-progress-loader){animation:none}:where(.gds-progress-dot){opacity:.85;animation:none;transform:scale(1)}:where(.gds-ai-spinner){animation:none}:where(.gds-ai-dot-loader span){opacity:.85;animation:none}}:where(.gds-menu){border-radius:var(--radius-card);border:1px solid var(--border-default);background:var(--surface-elevated);box-shadow:var(--shadow-3);padding:4px}:where(.gds-menu-option){border-radius:calc(var(--radius-control) - 4px);width:100%;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:500;line-height:1.25;transition:background-color .15s,color .15s;display:flex}:where(.gds-menu-option:hover){background:var(--surface-card-muted)}:where(.gds-menu-option:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-menu-option-active){background:var(--client-primary-subtle);color:var(--client-primary);font-weight:600}:where(.gds-comparison-table){border-collapse:separate;border-spacing:0;border:1px solid var(--ds-comparison-table-border);background:var(--ds-comparison-table-bg);border-radius:20px;width:100%;overflow:hidden}:where(.gds-comparison-table th,.gds-comparison-table td){text-align:left;border-bottom:1px solid var(--ds-comparison-table-row-border);padding:14px 16px;font-size:13px}:where(.gds-comparison-table th){background:var(--ds-comparison-table-header-bg);text-transform:uppercase;letter-spacing:.08em;color:var(--ds-comparison-table-header-fg);font-size:11px}:where(.gds-comparison-table tr:last-child td){border-bottom:0}:where(.gds-comparison-table-winner-cell){background:var(--ds-comparison-table-winner-bg);color:var(--ds-comparison-table-winner-fg);font-weight:800}:host{all:initial;font-family:var(--gengage-font-family,\"Plus Jakarta Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);font-size:var(--gengage-font-size,14px)}.gengage-chat-root button,.gengage-chat-root [role=button],.gengage-chat-root a{cursor:pointer}.gengage-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gengage-chat-root{z-index:var(--gengage-z-index,2147480000);--_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,1rem);--_gengage-chat-header-height:var(--gengage-chat-header-height,72px);--_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,1200px);--_gengage-chat-input-height:var(--gengage-chat-input-height,48px);--_gengage-chat-shadow:var(--gengage-chat-shadow,var(--shadow-3));--_gengage-border-color:var(--border-default);--_gengage-discount-color:var(--gengage-discount-color,var(--client-primary));--_gengage-campaign-reason-start:var(--gengage-campaign-reason-color,var(--client-primary));--_gengage-campaign-reason-end:var(--gengage-campaign-reason-color-end,var(--gengage-campaign-reason-color,var(--client-primary)));--_gengage-success-color:var(--success);--_gengage-text-primary:var(--text-primary);--_gengage-text-secondary:var(--text-secondary);--_gengage-surface-secondary:var(--surface-card-soft);--_gengage-surface-muted:var(--surface-card-soft);--_gengage-surface-dark:var(--surface-shell);--_gengage-rating-color:var(--rating);--_gengage-error:var(--error);--_gengage-danger-color:var(--error);--_gengage-ghost-border:var(--gengage-ghost-border,color-mix(in srgb, var(--client-primary) 16%, transparent));position:fixed}.gengage-chat-backdrop{z-index:0;pointer-events:none;cursor:pointer;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background:0 0;border:none;margin:0;padding:0;display:none;position:fixed;inset:0}.gengage-chat-root--open:not(.gengage-chat--inline) .gengage-chat-backdrop{pointer-events:none;background:var(--gengage-chat-float-backdrop,transparent);display:block}.gengage-chat-root--open.gengage-chat-root--maximized-host-chrome:not(.gengage-chat--inline) .gengage-chat-backdrop{pointer-events:auto;background:var(--gengage-chat-float-backdrop,color-mix(in srgb, var(--surface-overlay) 72%, transparent))}.gengage-chat-root.gengage-chat--overlay.gengage-chat-root--open .gengage-chat-backdrop{background:var(--gengage-chat-overlay-backdrop,var(--surface-overlay));pointer-events:auto}.gengage-chat-launcher-container{bottom:var(--_gengage-chat-launcher-bottom);right:var(--_gengage-chat-launcher-right);z-index:var(--gengage-z-index,2147480000);flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed}.gengage-chat-launcher-content-area,.gengage-chat-launcher-content-area-bottom{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.gengage-chat-launcher-content-area:empty,.gengage-chat-launcher-content-area-bottom:empty,.gengage-chat-root--open .gengage-chat-launcher-content-area,.gengage-chat-root--open .gengage-chat-launcher-content-area-bottom{display:none}.gengage-chat-root--open .gengage-chat-launcher-container{pointer-events:none;opacity:0;transition:opacity .2s}.gengage-chat-launcher{width:var(--_gengage-chat-launcher-size);height:var(--_gengage-chat-launcher-size);border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);cursor:pointer;box-shadow:var(--shadow-3);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s;display:flex;position:relative}.gengage-chat-launcher:hover{box-shadow:var(--shadow-3);transform:none}.gengage-chat-launcher svg{width:28px;height:28px}.gengage-chat-launcher--image-mode{box-shadow:none;background:0 0;border:none;border-radius:0;padding:0;overflow:hidden}.gengage-chat-launcher--image-mode:hover{box-shadow:none}.gengage-chat-launcher--image-mode img{object-fit:contain;width:100%;height:100%}.gengage-chat-launcher--hidden-mobile{display:none!important}.gengage-chat-launcher-tooltip{border-radius:var(--radius-control);background:var(--surface-shell);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;box-shadow:var(--shadow-2);padding:6px 12px;font-size:13px;font-weight:500;transition:opacity .2s;position:absolute;top:50%;right:calc(100% + 12px);transform:translateY(-50%)}.gengage-chat-launcher-tooltip:after{content:\"\";border:5px solid #0000;border-left-color:var(--surface-shell);position:absolute;top:50%;left:100%;transform:translateY(-50%)}.gengage-chat-launcher:hover .gengage-chat-launcher-tooltip{opacity:1}.gengage-chat-root--open .gengage-chat-launcher-tooltip{display:none}.gengage-chat-drawer{width:var(--_gengage-chat-drawer-width);background:var(--surface-elevated,var(--surface-card));border-left:1px solid var(--border-default);max-height:100dvh;box-shadow:var(--_gengage-chat-shadow);z-index:var(--gengage-z-index,2147480000);opacity:1;border-radius:0;flex-direction:column;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .2s;display:flex;position:fixed;top:0;bottom:0;right:0;overflow:hidden;transform:translate(0)}.gengage-chat-root--mobile .gengage-chat-launcher-container{right:var(--gengage-chat-launcher-mobile-right,16px);bottom:calc(var(--gengage-chat-launcher-mobile-bottom,16px) + env(safe-area-inset-bottom,0px))}.gengage-chat-root--mobile .gengage-chat-drawer{border:1px solid var(--border-default);width:100%;max-width:none;max-height:100dvh;box-shadow:var(--shadow-3);padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface-elevated,var(--surface-card));border-bottom:none;border-radius:16px 16px 0 0;bottom:0;left:0;right:0}.gengage-chat-drawer-handle{display:none}.gengage-chat-root--mobile .gengage-chat-drawer-handle{pointer-events:none;z-index:1;justify-content:center;align-items:center;height:14px;display:flex;position:absolute;top:6px;left:0;right:0}.gengage-chat-root--mobile .gengage-chat-header{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.gengage-chat-root--mobile .gengage-chat-header button,.gengage-chat-root--mobile .gengage-chat-header a{cursor:pointer;touch-action:auto;-webkit-user-select:auto;user-select:auto}.gengage-chat-root--mobile .gengage-chat-drawer-handle:before{content:\"\";background:var(--border-strong);pointer-events:none;border-radius:999px;width:36px;height:4px}.gengage-chat-root--mobile.gengage-chat-root--mobile-half .gengage-chat-drawer{height:min(72dvh,620px);max-height:min(72dvh,620px);top:auto}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-drawer{border-radius:0;height:100dvh;max-height:100dvh;top:0}.gengage-chat-root--mobile .gengage-chat-input-area{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border-default);transform:translateY(calc(-1 * var(--gengage-keyboard-offset,0px)))}.gengage-chat-header{box-sizing:border-box;height:var(--_gengage-chat-header-height);background:var(--gengage-chat-header-bg,var(--ds-header-bg));color:var(--gengage-chat-header-foreground,var(--ds-header-fg));box-shadow:none;border-bottom:1px solid var(--gengage-chat-header-border-bottom,var(--ds-header-border));z-index:2;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex;position:relative}.gengage-chat-header-left{align-items:center;gap:10px;min-width:0;display:flex}.gengage-chat-header-avatar{background:var(--surface-card-soft);border:1px solid var(--border-default);object-fit:contain;border-radius:999px;flex-shrink:0;width:44px;height:44px}.gengage-chat-header-avatar--logo{object-fit:contain;background:0 0;border:none;border-radius:0;width:auto;max-width:92px;height:45px}.gengage-chat-header-info{flex-direction:column;gap:2px;min-width:0;display:flex}.gengage-chat-header-title-row{align-items:center;gap:6px;min-width:0;display:flex}.gengage-chat-header-title{letter-spacing:.01em;color:inherit;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:16px;font-weight:700;line-height:1.25;display:block;overflow:hidden}.gengage-chat-header-badge{border-radius:var(--radius-pill);background:var(--ds-badge-brand-bg);min-height:26px;color:var(--ds-badge-brand-fg);border:1px solid var(--ds-badge-brand-border);letter-spacing:.04em;text-transform:uppercase;align-items:center;padding:0 10px;font-size:10px;font-weight:800;line-height:1.5;display:inline-flex}.gengage-chat-header-powered{color:var(--ds-header-muted);align-items:center;gap:4px;font-size:11px;line-height:1.2;text-decoration:none;transition:color .15s;display:flex}.gengage-chat-header-powered:hover{color:var(--client-primary)}.gengage-chat-header-powered svg{opacity:.6;flex-shrink:0;width:12px;height:12px}.gengage-chat-header-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.gengage-chat-header-btn{border-radius:var(--radius-control,12px);background:var(--surface-card-soft);border:1px solid var(--border-default);width:42px;height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;line-height:1;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.gengage-chat-header-btn:hover{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-header-btn--fav{position:relative}.gengage-chat-header-btn--reopen-panel,.gengage-chat-root--mobile .gengage-chat-new-chat{display:none}.gengage-chat-header-fav-badge{background:var(--error);min-width:16px;height:16px;color:var(--text-inverse);text-align:center;pointer-events:none;border-radius:999px;padding:0 3px;font-size:9px;font-weight:700;line-height:16px;position:absolute;top:-4px;right:-4px}.gengage-chat-close{border-radius:var(--radius-control,12px);background:var(--surface-card-soft);border:1px solid var(--border-default);width:42px;min-width:42px;height:42px;min-height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;font-size:18px;line-height:1;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.gengage-chat-close:hover{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-body{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.gengage-chat-panel{width:0;transition:width .22s cubic-bezier(.2,.72,.2,1);display:none;overflow:hidden}.gengage-chat-panel--visible{box-sizing:border-box;background:var(--gengage-chat-panel-bg,var(--surface-card));border-right:1px solid var(--border-default);scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--text-muted) 24%, transparent) transparent;flex-direction:column;width:440px;min-width:440px;padding:16px;display:flex;position:relative;overflow-y:auto}.gengage-chat-panel--visible::-webkit-scrollbar{width:6px}.gengage-chat-panel--visible::-webkit-scrollbar-track{background:0 0}.gengage-chat-panel--visible::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--text-muted) 24%, transparent);border-radius:3px}.gengage-chat-panel--visible::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--text-muted) 36%, transparent)}.gengage-chat-panel-ai-zone{box-sizing:border-box;border-bottom:1px solid var(--border-subtle);flex-shrink:0;width:100%;max-height:min(42vh,320px);margin-bottom:4px;padding:8px 0 12px;overflow:auto}.gengage-chat-panel-ai-zone:has(.gengage-chat-grouping-cards){max-height:min(52vh,520px)}.gengage-chat-panel-ai-zone:has(.gengage-chat-ai-top-picks){max-height:none;overflow:visible}.gengage-chat-panel-ai-zone[hidden]{display:none!important}.gengage-chat-panel-ai-zone-inner{align-items:center;gap:10px;display:flex}.gengage-chat-panel-ai-zone-text{color:var(--text-muted);font-size:13px}.gengage-chat-grouping-section-title{display:none}.gengage-chat-panel-ai-zone .gengage-chat-grouping-section-title{width:100%;color:var(--text-primary);letter-spacing:-.01em;flex-shrink:0;align-self:stretch;margin:0 0 10px;font-size:15px;font-weight:700;display:block}.gengage-chat-panel-ai-zone .gengage-chat-grouping-cards{flex-direction:column;align-items:stretch;gap:0;width:100%;min-width:0;max-height:none;display:flex}.gengage-chat-panel-ai-zone .gengage-chat-grouping-cards-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:thin;flex-flow:row;align-items:stretch;gap:10px;width:100%;min-width:0;margin:0 -2px;padding:2px 2px 10px;display:flex;overflow:auto hidden}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card{box-sizing:border-box;background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-card);width:136px;min-width:136px;max-width:150px;box-shadow:var(--shadow-1);flex-direction:column;flex:none;align-items:stretch;gap:8px;padding:12px 10px 14px}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card:hover{border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-arrow{display:none}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-img{object-fit:cover;border-radius:8px;width:100%;min-width:0;max-width:88px;height:72px;min-height:72px;margin:0 auto}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-body{text-align:center;flex-direction:column;align-items:center;gap:4px;width:100%}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-name{font-size:13px;font-weight:700;line-height:1.25}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-desc{color:var(--text-muted);font-size:11px;line-height:1.3}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-labels{white-space:normal;text-overflow:unset;justify-content:center;margin-top:2px;line-height:1.35;overflow:visible}.gengage-chat-panel-divider{cursor:pointer;background:var(--_gengage-border-color);z-index:2;flex-shrink:0;align-items:center;width:4px;transition:background .15s;display:flex;position:relative}.gengage-chat-panel-divider:hover{background:var(--border-strong)}.gengage-chat-panel-divider--hidden{display:none}.gengage-chat-panel-divider-toggle{border:1px solid var(--_gengage-border-color);background:var(--surface-card);cursor:pointer;width:28px;height:48px;color:var(--text-secondary);box-shadow:var(--shadow-1);border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:background .15s,color .15s;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.gengage-chat-panel-divider-toggle:hover{background:var(--surface-card-muted);color:var(--client-primary)}.gengage-chat-panel-divider-preview{pointer-events:none;border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-elevated) 96%, transparent);width:38px;height:192px;box-shadow:var(--shadow-2);z-index:1;border-radius:999px;flex-direction:column;gap:2px;padding:6px 4px;display:none;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.gengage-chat-panel-divider-preview:after{content:\"\";background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--surface-shell) 10%, transparent));pointer-events:none;position:absolute;inset:0}.gengage-chat-panel-divider-preview-thumb{border-radius:999px;flex:1 1 0;min-height:0;position:relative;overflow:hidden}.gengage-chat-panel-divider-preview-img{object-fit:cover;filter:grayscale(.55)saturate(.8)brightness(.92);opacity:.9;width:100%;height:100%;transform:scale(1.14)}.gengage-chat-panel.gengage-chat-panel--collapsed{border-right:none;flex:0 0 0;width:0;min-width:0;max-width:0;padding:0;overflow:hidden}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider{background:0 0;width:0}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider .gengage-chat-panel-divider-toggle{left:50%;transform:translate(-50%,-50%)}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider.gengage-chat-panel-divider--preview-active .gengage-chat-panel-divider-preview{display:flex;left:50%;transform:translate(-50%,-50%)}.gengage-chat-conversation{background:var(--surface-card);z-index:1;flex-direction:column;flex:1;min-width:0;display:flex;position:relative;overflow:hidden}.gengage-chat-drawer--with-panel{width:auto;box-shadow:none;background:0 0;overflow:visible}.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;align-items:stretch;gap:0;min-height:0;padding:0;overflow:visible}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:clamp(var(--_gengage-chat-panel-min-width), 56vw, var(--_gengage-chat-panel-max-width));min-width:var(--_gengage-chat-panel-min-width);max-width:var(--_gengage-chat-panel-max-width);background:var(--gengage-chat-panel-bg,var(--surface-card));box-shadow:none;border-right:none;border-radius:0;flex:none;max-height:100dvh;margin:0;padding:0 16px 16px;overflow-y:auto}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider{background:0 0;width:0}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle{background:var(--surface-card);width:20px;height:48px;color:var(--client-primary);border:1px solid color-mix(in srgb, var(--client-primary) 20%, var(--border-default));box-shadow:var(--shadow-1);z-index:10;border-radius:10px;font-size:12px}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle:hover{background:var(--client-primary-subtle);color:var(--client-primary)}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider--preview-active .gengage-chat-panel-divider-toggle:hover{background:var(--client-primary-subtle)}.gengage-chat-drawer--with-panel .gengage-chat-conversation{flex:0 0 var(--_gengage-chat-conversation-width);width:var(--_gengage-chat-conversation-width);background:var(--surface-card);box-shadow:var(--shadow-2);border-left:none}.gengage-chat-drawer--with-panel .gengage-chat-messages{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--text-muted) 22%, transparent) transparent;padding-right:6px}.gengage-chat-drawer--with-panel .gengage-chat-messages::-webkit-scrollbar{width:0}.gengage-chat-drawer--with-panel .gengage-chat-panel.gengage-chat-panel--collapsed{flex:0 0 0;width:0;min-width:0;max-width:0;padding:0;overflow:hidden}.gengage-chat-drawer--with-panel:has(.gengage-chat-panel--collapsed){width:var(--_gengage-chat-conversation-width);background:var(--surface-elevated,var(--surface-card));box-shadow:var(--_gengage-chat-shadow)}.gengage-chat-drawer--with-panel .gengage-chat-footer{display:none}.gengage-chat-messages{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;flex-direction:column;flex:1;gap:16px;min-height:0;padding:16px;display:flex;overflow-y:auto}.gengage-chat-messages::-webkit-scrollbar{width:6px}.gengage-chat-messages::-webkit-scrollbar-track{background:0 0}.gengage-chat-messages::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--text-muted) 22%, transparent);border-radius:3px}.gengage-chat-messages::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--text-muted) 36%, transparent)}.gengage-chat-bubble--presentation-collapsed{display:none!important}.gengage-chat-former-messages-btn{z-index:2;border-radius:var(--radius-pill);border:1px solid var(--ds-chip-border);background:color-mix(in srgb, var(--surface-card) 96%, transparent);color:var(--text-primary);cursor:pointer;box-shadow:var(--shadow-1);flex-shrink:0;align-self:center;margin-bottom:4px;padding:8px 14px;font-size:13px;font-weight:600;position:sticky;top:0}.gengage-chat-former-messages-btn:hover{background:var(--surface-card-muted)}.gengage-chat-bubble{position:relative}@keyframes gengage-chat-msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-bubble--user{max-width:85%}.gengage-chat-bubble--assistant{max-width:85%;margin-left:2px}.gengage-chat-bubble--active{outline:2px solid var(--ds-message-active-outline);outline-offset:-2px}.gengage-chat-bubble--assistant:empty{display:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a{color:var(--client-primary);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:color-mix(in srgb, var(--text-primary) 8%, transparent);border-radius:6px;padding:1px 4px;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text pre{background:color-mix(in srgb, var(--surface-card) 78%, var(--surface-card-soft));border:1px solid var(--border-subtle);border-radius:12px;margin:4px 0;padding:10px 12px;overflow-x:auto}.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(--border-default);padding:4px 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text img{border-radius:12px;max-width:100%;height:auto;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{color:var(--text-primary);margin:8px 0 4px;line-height:1.3}.gengage-chat-bubble--assistant .gengage-chat-bubble-text blockquote{border-left:3px solid var(--border-default);color:var(--text-secondary);margin:4px 0;padding-left:12px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text{overflow-wrap:break-word}.gengage-chat-bubble--first{border-left:1px solid var(--ds-message-assistant-border)}.gengage-chat-bubble--first .gengage-chat-bubble-text{font-size:inherit}@media (width<=768px){.gengage-chat-bubble--assistant .gengage-chat-bubble-text{line-height:1.5}.gengage-chat-bubble--user{word-break:break-word;max-width:calc(100% - 16px)}}.gengage-chat-typing{align-self:flex-start;max-width:85%}.gengage-chat-typing-dots{flex-shrink:0}.gengage-chat-typing-text{flex:1;min-width:0}.gengage-chat-panel-loading-status{margin-bottom:16px}.gengage-chat-panel-loading-status.gds-progress-loader-panel{box-sizing:border-box;min-width:0;max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel-loading-status.gds-progress-loader-panel{max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel-loading-status .gengage-chat-panel-loading-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.gengage-chat-offline-bar{color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));background:color-mix(in srgb, var(--warning) 10%, white);border-bottom:1px solid color-mix(in srgb, var(--warning) 22%, var(--border-default));align-items:center;gap:6px;padding:6px 12px;font-size:12px;line-height:1.4;display:none}.gengage-chat-offline-bar--visible{display:flex}.gengage-chat-offline-bar:before{content:\"\";background:var(--_gengage-rating-color);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.gengage-chat-thinking-steps{flex-direction:column;gap:4px;padding:4px 0;display:flex}.gengage-chat-thinking-step{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;display:flex}.gengage-chat-thinking-step-marker{text-align:center;flex-shrink:0;width:16px;font-size:12px}.gengage-chat-thinking-step-marker--done{color:var(--_gengage-success-color)}.gengage-chat-thinking-step-marker--active{color:var(--ai-accent-start);animation:1.5s ease-in-out infinite gengage-thinking-pulse}@keyframes gengage-thinking-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-thinking-step-text{line-height:1.4}.gengage-chat-error{border-radius:var(--radius-control);background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 84%, var(--text-primary));text-align:center;border:1px solid color-mix(in srgb, var(--error) 22%, var(--border-default));justify-content:center;align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex}.gengage-chat-error-retry{border:1px solid color-mix(in srgb, var(--error) 24%, var(--border-default));border-radius:var(--radius-control);background:var(--surface-card);color:color-mix(in srgb, var(--error) 84%, var(--text-primary));cursor:pointer;flex-shrink:0;padding:4px 12px;font-size:12px;font-weight:500;transition:background .15s,border-color .15s}.gengage-chat-error-retry:hover{background:color-mix(in srgb, var(--error) 8%, white);border-color:color-mix(in srgb, var(--error) 32%, var(--border-default))}.gengage-chat-input-area{border-top:1px solid var(--border-subtle);background:var(--surface-card);z-index:2;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:0;padding:10px 12px 12px;display:flex;position:relative}.gengage-chat-input-pill{background:var(--surface-card);border:1px solid var(--border-default);min-width:0;min-height:52px;box-shadow:none;border-radius:16px;flex:1;align-items:center;gap:12px;padding:6px 6px 6px 14px;transition:border-color .2s,box-shadow .2s;display:flex;overflow:visible}.gengage-chat-input-pill:focus-within{border-color:color-mix(in srgb, var(--client-primary) 28%, white);box-shadow:0 0 0 4px var(--client-focus-ring)}.gengage-chat-input{min-width:0;min-height:40px;max-height:120px;color:var(--_gengage-text-primary);resize:none;background:0 0;border:none;border-radius:0;outline:none;flex:1;align-content:center;padding:0;font-family:inherit;font-size:14px;line-height:1.4;overflow-y:hidden}.gengage-chat-root--mobile .gengage-chat-input-pill{min-height:52px;padding:6px 6px 6px 14px}.gengage-chat-root--mobile .gengage-chat-input{white-space:nowrap;min-height:44px;max-height:44px;font-size:16px;overflow:hidden}.gengage-chat-input::placeholder{color:var(--text-muted);font-size:14px;line-height:normal}.gengage-chat-send{border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);width:40px;min-width:40px;height:40px;color:var(--ds-button-primary-fg);cursor:pointer;box-shadow:none;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:0;font-weight:700;transition:background-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s,transform .15s;display:flex;position:relative}.gengage-chat-send:hover{background:var(--ds-button-primary-bg-hover);box-shadow:none;transform:none}.gengage-chat-send:active{box-shadow:none;transform:translateY(0)}.gengage-chat-send svg{width:18px;height:18px}.gengage-chat-send--stop{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));color:var(--text-primary)}.gengage-chat-send--stop:hover{background:color-mix(in srgb, var(--surface-card-soft) 86%, var(--client-primary-subtle));border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));color:var(--client-primary)}.gengage-chat-send-stop-icon{background:currentColor;border-radius:4px;width:12px;height:12px;display:inline-block}.gengage-chat-send--stop:after{content:attr(data-tooltip);background:color-mix(in srgb, var(--surface-shell) 98%, black);border:1px solid color-mix(in srgb, var(--surface-shell) 60%, white);box-shadow:var(--shadow-2);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;z-index:12;border-radius:10px;padding:7px 10px;font-size:12px;font-weight:600;line-height:1.2;transition:opacity .16s;position:absolute;top:50%;right:calc(100% + 10px);transform:translateY(-50%)}@media (hover:hover) and (pointer:fine){.gengage-chat-send--stop:hover:after,.gengage-chat-send--stop:focus-visible:after{opacity:1}}.gengage-chat-send:disabled{background:var(--ds-neutral-200);border-color:var(--ds-neutral-200);opacity:.5;box-shadow:none;cursor:not-allowed}.gengage-chat-footer{text-align:center;color:var(--text-muted);border-top:1px solid var(--border-subtle);background:var(--surface-card);padding:4px 10px;font-size:10px}.gengage-chat-uispec{width:100%}.gengage-chat-uispec:empty{display:none}.gengage-chat-uispec>*{animation:.16s cubic-bezier(.2,.7,.2,1) both gengage-chat-widget-enter}@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{flex-wrap:wrap;justify-content:flex-start;gap:8px;padding:6px 0 4px;display:flex}.gengage-chat-action-buttons:after{content:\"\";flex:1 0 auto}.gengage-chat-action-btn{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-pill,999px);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);cursor:pointer;white-space:nowrap;flex:none;padding:8px 16px;font-family:inherit;font-size:13px;font-weight:700;line-height:1.25;transition:filter .15s,transform .1s}.gengage-chat-action-btn:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-action-btn:active{transform:scale(.97)}.gengage-chat-product-card{border:1px solid var(--ds-card-border);border-radius:var(--ds-card-radius);background:var(--ds-card-bg);width:160px;min-width:160px;max-width:160px;box-shadow:var(--ds-card-shadow);flex-direction:column;transition:transform .1s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.gengage-chat-product-card:hover{box-shadow:var(--ds-card-shadow-hover);transform:translateY(-2px)}.gengage-chat-product-card-img{object-fit:contain;background:var(--surface-card);box-sizing:border-box;width:100%;height:120px;padding:8px;display:block}.gengage-chat-product-card-body{text-align:center;flex-direction:column;flex:1;gap:4px;padding:8px 10px 10px;display:flex}.gengage-chat-product-card-name{color:var(--_gengage-text-primary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;min-height:2.7em;margin-bottom:0;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-product-card-brand{color:var(--text-secondary);font-size:10px}.gengage-chat-product-card-rating{color:var(--_gengage-rating-color);font-size:11px;line-height:1}.gengage-star-half{display:inline-block;position:relative}.gengage-star-half>span{width:.5em;position:absolute;top:0;left:0;overflow:hidden}.gengage-chat-product-card-review-count{color:var(--text-secondary);font-size:10px}.gengage-chat-product-card-price,.gengage-chat-product-card-price-block{color:var(--text-primary);flex-wrap:wrap;justify-content:center;align-items:baseline;gap:2px 6px;font-size:16px;font-weight:800;display:flex}.gengage-chat-product-card-current-price{font:inherit;color:var(--gengage-discounted-price-color,var(--text-primary));font-weight:800}.gengage-chat-product-card-original-price{color:var(--_gengage-text-secondary);margin-right:0;font-size:11px;font-weight:400;text-decoration:line-through}.gengage-chat-campaign-reason{letter-spacing:.02em;background:linear-gradient(90deg, var(--_gengage-campaign-reason-start), var(--_gengage-campaign-reason-end));color:#0000;-webkit-background-clip:text;background-clip:text;max-width:100%;margin:0 0 4px;font-size:11px;font-weight:700;line-height:1.25}@supports not ((-webkit-background-clip:text) or (background-clip:text)){.gengage-chat-campaign-reason,.gengage-chat-campaign-price-badge__reason{color:var(--_gengage-campaign-reason-start);background:0 0}}.gengage-chat-product-card-price-stack{flex-direction:column;align-items:flex-start;width:100%;min-width:0;display:flex}.gengage-chat-product-card-price-row{flex-flow:wrap;align-items:baseline;gap:0 6px;display:flex}.gengage-chat-product-card-price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:.95em;margin:0 1px;display:inline-block}.gengage-chat-product-card-price-block--inline .gengage-chat-product-card-original-price{color:var(--gengage-inline-original-price-color,var(--text-secondary));font-size:16px;font-weight:500;text-decoration:none}.gengage-chat-product-card-price-block--inline .gengage-chat-product-card-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:16px;font-weight:800}.gengage-chat-product-card-meta-row{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:8px;width:100%;min-height:34px;display:flex}.gengage-chat-product-card-meta-row--empty{visibility:hidden}.gengage-chat-product-card-rating-compact{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-secondary);border-radius:999px;flex-shrink:0;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:700;line-height:1.2;display:inline-flex}.gengage-chat-product-card-rating-compact-star{color:color-mix(in srgb, var(--warning) 60%, var(--text-primary));justify-content:center;align-items:center;line-height:0;display:inline-flex}.gengage-chat-product-card-rating-compact-value{font-variant-numeric:tabular-nums;color:var(--text-primary)}.gengage-chat-product-card-img-actions{z-index:4;pointer-events:none;flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute;top:8px;right:8px}.gengage-chat-product-card-img-actions>*{pointer-events:auto}.gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{position:static}.gengage-chat-price-skeleton{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);vertical-align:middle;background-size:200% 100%;border-radius:4px;width:80px;height:16px;animation:1.5s ease-in-out infinite gengage-skeleton-price-pulse;display:inline-block}@keyframes gengage-skeleton-price-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-product-card-cta{text-align:center;color:var(--client-primary);letter-spacing:.01em;border-top:1px solid var(--border-default);cursor:pointer;background:0 0;margin-top:auto;padding:8px 10px;font-size:12px;font-weight:700;text-decoration:none;transition:color .15s,background .15s;display:block}.gengage-chat-product-card-cta:hover{color:var(--client-primary-hover);background:var(--surface-card-soft)}.gengage-chat-product-card-cta:active{background:var(--surface-card-soft)}button.gengage-chat-product-card-cta{appearance:none;font:inherit;box-sizing:border-box;border-bottom:none;border-left:none;border-right:none;width:100%;margin:0}.gengage-chat-product-summary{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);cursor:pointer;flex-wrap:wrap;align-items:center;gap:12px;margin:4px 0;padding:10px 12px;transition:background .15s,box-shadow .15s,border-color .15s;display:flex}.gengage-chat-product-summary:hover{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-1)}.gengage-chat-product-summary__image{border-radius:var(--radius-control);border:1px solid var(--border-subtle);background:var(--surface-card-soft);flex-shrink:0;width:64px;height:64px;overflow:hidden}.gengage-chat-product-summary__image img{object-fit:cover;width:100%;height:100%;display:block}.gengage-chat-product-summary__content{flex-direction:column;flex:180px;gap:2px;min-width:0;display:flex}.gengage-chat-product-summary__name{color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;font-size:13px;font-weight:500;line-height:1.3;display:-webkit-box;overflow:hidden}.gengage-chat-product-summary__rating{color:var(--_gengage-rating-color);font-size:11px;line-height:1}.gengage-chat-product-summary__review-count{color:var(--text-secondary);font-size:11px}.gengage-chat-product-summary__price{color:var(--text-primary);margin-top:2px;font-size:13px;font-weight:600;line-height:1}.gengage-chat-product-summary__price-original{color:var(--_gengage-text-secondary);font-size:11px;font-weight:400;text-decoration:line-through}.gengage-chat-product-summary__price-current{color:var(--gengage-discounted-price-color,var(--text-primary))}.gengage-chat-product-summary__price-stack{flex-direction:column;align-items:flex-start;gap:2px;margin-top:2px;display:flex}.gengage-chat-product-summary__price-stack .gengage-chat-campaign-reason{font-size:11px;font-weight:700}.gengage-chat-product-summary__price--inline{flex-flow:wrap;align-items:baseline;gap:0 6px;display:flex}.gengage-chat-product-summary__price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:.9em;margin:0 1px;display:inline-block}.gengage-chat-product-summary__price--inline .gengage-chat-product-summary__price-original{color:var(--gengage-inline-original-price-color,var(--text-secondary));font-size:13px;font-weight:500;text-decoration:none}.gengage-chat-product-summary__price--inline .gengage-chat-product-summary__price-current{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:13px;font-weight:700}.gengage-chat-product-summary__cta{color:var(--client-primary);border-radius:var(--radius-pill);background:var(--client-primary-subtle);white-space:nowrap;flex-shrink:0;margin-left:auto;padding:4px 10px;font-size:12px;font-weight:600;text-decoration:none;transition:background .15s,color .15s}.gengage-chat-product-summary__cta:hover{background:var(--client-primary-soft)}.gengage-chat-product-summary__cta:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-product-grid{-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity;gap:12px;min-height:180px;padding:8px 16px 8px 0;display:flex;overflow-x:auto}.gengage-chat-product-grid>*{scroll-snap-align:start;flex:none}.gengage-chat-product-grid::-webkit-scrollbar{display:none}.gengage-chat-review-highlights{padding:4px 0 8px}.gengage-chat-review-empty{color:var(--_gengage-text-secondary);font-size:12px}.gengage-chat-review-subjects-heading{color:var(--text-primary);margin-bottom:10px;font-size:14px;font-weight:700}.gengage-chat-review-subjects{margin-bottom:12px}.gengage-chat-review-subject{color:var(--text-primary);box-shadow:none;gap:6px;padding:7px 11px;font-size:13px;font-weight:600;line-height:1.2}.gengage-chat-review-subject--active{border-color:var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active)}.gengage-chat-review-subject-icon{flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;display:inline-flex}.gengage-chat-review-subject-icon svg{width:14px;height:14px;display:block}.gengage-chat-review-subject[data-tone=positive] .gengage-chat-review-subject-icon{color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-review-subject[data-tone=negative] .gengage-chat-review-subject-icon{color:color-mix(in srgb, var(--error) 84%, var(--text-primary))}.gengage-chat-review-subject[data-tone=neutral] .gengage-chat-review-subject-icon{color:var(--text-secondary)}.gengage-chat-review-subject-label{color:inherit}.gengage-chat-review-subject-count{color:var(--text-secondary);font-size:12px;font-weight:700}.gengage-chat-review-detail{padding:12px}.gengage-chat-review-detail-meta{flex-wrap:wrap;align-items:baseline;gap:10px 16px;margin-bottom:10px;display:flex}.gengage-chat-review-detail-mentions{color:var(--_gengage-text-primary);font-size:13px;font-weight:700}.gengage-chat-review-detail-positive{color:var(--_gengage-success-color);font-size:13px;font-weight:700}.gengage-chat-review-detail-negative{color:var(--error);font-size:13px;font-weight:700}.gengage-chat-review-snippets{gap:10px;display:grid}.gengage-chat-review-snippet{border:1px solid var(--border-subtle);border-left:3px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card-soft);padding:8px 10px}.gengage-chat-review-snippet[data-tone=positive]{border-left-color:color-mix(in srgb, var(--success) 40%, var(--border-default))}.gengage-chat-review-snippet[data-tone=negative]{border-left-color:color-mix(in srgb, var(--error) 40%, var(--border-default))}.gengage-chat-review-snippet-text{color:var(--_gengage-text-primary);font-size:13px;line-height:1.4}.gengage-chat-review-snippet-rating{color:var(--text-secondary);margin-top:4px;font-size:12px;font-weight:700}.gengage-chat-favorites-page{padding:12px}.gengage-chat-favorites-empty{text-align:center;color:var(--_gengage-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;display:flex}.gengage-chat-favorites-empty-icon{opacity:.25;color:var(--error)}.gengage-chat-favorites-empty p{margin:0;font-size:13px;line-height:1.5}.gengage-chat-favorites-list{flex-direction:column;gap:10px;display:flex}.gengage-chat-favorites-card{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);box-shadow:var(--shadow-1);align-items:center;gap:12px;padding:10px 12px;transition:opacity .2s,transform .2s,box-shadow .2s,border-color .2s;display:flex;position:relative}.gengage-chat-favorites-card:hover{border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-1)}.gengage-chat-favorites-card--removing{opacity:0;transform:translate(8px)}.gengage-chat-favorites-card__image{border-radius:var(--radius-control);background:var(--surface-card-muted);flex-shrink:0;width:56px;height:56px;overflow:hidden}.gengage-chat-favorites-card__image img{object-fit:contain;width:100%;height:100%}.gengage-chat-favorites-card__info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.gengage-chat-favorites-card__name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.gengage-chat-favorites-card__price{color:var(--client-primary);font-size:13px;font-weight:700}.gengage-chat-favorites-remove{border-radius:var(--radius-pill);width:28px;height:28px;color:var(--error);cursor:pointer;opacity:.7;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .15s,background .15s;display:inline-flex}.gengage-chat-favorites-remove:hover{opacity:1;background:color-mix(in srgb, var(--error) 10%, white)}.gengage-chat-divider{border:none;border-top:1px solid var(--_gengage-border-color);margin:8px 0}.gengage-chat-divider-wrapper{align-items:center;gap:8px;margin:8px 0;display:flex}.gengage-chat-divider-wrapper hr{border:none;border-top:1px solid var(--_gengage-border-color);flex:1;margin:0}.gengage-chat-divider-label{color:var(--text-muted);white-space:nowrap;font-size:11px}.gengage-chat--overlay .gengage-chat-drawer{border-radius:0;width:100%;max-width:480px;max-height:100%;margin:0 auto;animation:.24s cubic-bezier(.2,.72,.2,1) gengage-chat-overlay-in;position:fixed;inset:0}@keyframes gengage-chat-overlay-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-panel-skeleton{box-sizing:border-box;flex-direction:column;gap:14px;min-width:0;max-width:100%;padding:6px 0;display:flex}.gengage-chat-panel-skeleton-block{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);background-size:200% 100%;border-radius:10px;height:110px;animation:1.4s infinite gengage-panel-shimmer}@keyframes gengage-panel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-panel-skeleton-block--image{border-radius:8px;height:200px;margin-bottom:12px}.gengage-chat-panel-skeleton-block--text{border-radius:4px;height:16px;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{grid-template-columns:1fr 1fr;gap:8px;display:grid}.gengage-chat-panel-skeleton-block--card{border-radius:8px;height:120px}.gengage-chat-panel-skeleton--comparison{gap:0;padding:0}.gengage-chat-panel-skeleton--comparison .gengage-chat-panel-loading-status{margin:0;padding:16px 16px 0}.gengage-chat-comparison--skeleton{pointer-events:none;box-sizing:border-box;width:100%}.gengage-chat-comparison-skeleton-shimmer{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);background-size:200% 100%;animation:1.4s infinite gengage-panel-shimmer}.gengage-chat-comparison-skeleton-rec-label{border-radius:4px;width:132px;height:12px;margin-bottom:12px}.gengage-chat-comparison-skeleton-rec-img{border-radius:8px;flex-shrink:0;width:80px;height:80px}.gengage-chat-comparison-skeleton-rec-title{border-radius:4px;max-width:100%;height:14px;margin-bottom:6px}.gengage-chat-comparison-skeleton-rec-title--short{width:72%;margin-bottom:8px}.gengage-chat-comparison-skeleton-rec-price{border-radius:4px;width:112px;height:18px}.gengage-chat-comparison-skeleton-hl-label{border-radius:4px;width:96px;height:12px;margin-bottom:6px}.gengage-chat-comparison-skeleton-hl-list{margin:0;padding-left:18px;list-style:none}.gengage-chat-comparison-skeleton-hl-list li{margin-bottom:8px}.gengage-chat-comparison-skeleton-hl-list li:last-child{margin-bottom:0}.gengage-chat-comparison-skeleton-hl-line{border-radius:4px;width:100%;height:13px}.gengage-chat-comparison-skeleton-hl-line--medium{width:92%}.gengage-chat-comparison-skeleton-hl-line--short{width:78%}.gengage-chat-comparison-skeleton-kd-heading{border-radius:4px;width:42%;height:14px;margin:0 0 8px}.gengage-chat-comparison-skeleton-kd-line{border-radius:4px;max-width:100%;height:13px;margin-bottom:8px}.gengage-chat-comparison-skeleton-kd-line:last-child{margin-bottom:0}.gengage-chat-comparison-skeleton-kd-line:nth-child(odd){width:100%}.gengage-chat-comparison-skeleton-kd-line:nth-child(2n){width:90%}.gengage-chat-comparison-special--skeleton{cursor:default;align-items:center;min-height:44px;display:flex}.gengage-chat-comparison-skeleton-special-line{border-radius:4px;width:56%;max-width:280px;height:14px}.gengage-chat-comparison-skeleton-table-wrap{border:1px solid var(--border-default);background:var(--surface-card);-webkit-overflow-scrolling:touch;border-radius:8px;margin-top:12px;overflow-x:auto}.gengage-chat-comparison-skeleton-table-head,.gengage-chat-comparison-skeleton-table-row{grid-template-columns:72px repeat(3,minmax(0,1fr));align-items:start;gap:8px;padding:10px 12px;display:grid}.gengage-chat-comparison-skeleton-table-head{border-bottom:1px solid var(--_gengage-surface-muted);background:var(--_gengage-surface-muted)}.gengage-chat-comparison-skeleton-table-corner{min-height:92px}.gengage-chat-comparison-skeleton-table-col{text-align:center;flex-direction:column;align-items:center;gap:6px;min-width:0;display:flex}.gengage-chat-comparison-skeleton-table-th-img{border-radius:6px;flex-shrink:0;width:60px;height:60px}.gengage-chat-comparison-skeleton-table-th-name{border-radius:3px;width:100%;max-width:100%;height:11px}.gengage-chat-comparison-skeleton-table-th-price{border-radius:3px;width:64%;height:13px}.gengage-chat-comparison-skeleton-table-row{border-bottom:1px solid var(--_gengage-surface-muted)}.gengage-chat-comparison-skeleton-table-row:last-child{border-bottom:none}.gengage-chat-comparison-skeleton-table-label{border-radius:3px;align-self:center;width:100%;max-width:56px;height:12px}.gengage-chat-comparison-skeleton-table-cell{border-radius:3px;width:100%;height:14px}.gengage-chat-panel-skeleton-block--row{border-radius:4px;height:32px;margin-bottom:4px}.gengage-chat-panel .gengage-chat-product-card{border-radius:var(--radius-card);border:1px solid var(--border-default);width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-1);background:var(--surface-card);flex-direction:column;padding:0;display:flex;overflow:hidden}.gengage-chat-panel .gengage-chat-product-card:hover{box-shadow:var(--shadow-2);border-color:var(--border-strong);transform:translateY(-2px)}.gengage-chat-panel .gengage-chat-product-card-img-actions{gap:6px;top:10px;right:10px}.gengage-chat-panel .gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-panel .gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{border-radius:8px;width:28px;height:28px}.gengage-chat-panel .gengage-chat-product-card-discount-badge{border-radius:var(--radius-pill);background:var(--client-primary);min-width:36px;height:36px;color:var(--client-on-primary);box-shadow:var(--shadow-1);justify-content:center;align-items:center;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex;top:10px;left:10px}.gengage-chat-panel .gengage-chat-product-card-brand{display:none}.gengage-chat-panel .gengage-chat-product-grid{grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:12px;min-height:auto;padding:4px 0;display:grid;overflow-x:visible}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--mobile{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-height:auto;padding:6px 0 10px;display:grid;overflow-x:visible}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--mobile .gengage-chat-product-card{box-sizing:border-box;width:100%;min-width:0;max-width:none}.gengage-chat-panel .gengage-chat-product-card-img-wrapper{aspect-ratio:1;background:var(--surface-card-muted);border-radius:var(--radius-card) var(--radius-card) 0 0;flex-shrink:0;width:100%;position:relative;overflow:hidden}.gengage-chat-panel .gengage-chat-product-card-img{border-radius:inherit;object-fit:cover;object-position:center;box-sizing:border-box;background:0 0;width:100%;height:100%;min-height:0;padding:0;display:block}.gengage-chat-panel .gengage-chat-product-card-body{text-align:left;gap:8px;padding:12px 14px 10px}.gengage-chat-panel .gengage-chat-product-card-meta-row{align-items:center;min-height:38px;margin-bottom:0}.gengage-chat-panel .gengage-chat-product-card-price,.gengage-chat-panel .gengage-chat-product-card-price-block{color:var(--text-primary);justify-content:flex-start;font-size:15px;font-weight:600}.gengage-chat-panel .gengage-chat-product-card-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:15px;font-weight:600}.gengage-chat-panel .gengage-chat-product-card-original-price{color:var(--text-muted);font-size:12px;font-weight:400}.gengage-chat-panel .gengage-chat-product-card-rating-compact{font-size:11px;font-weight:700}.gengage-chat-panel .gengage-chat-product-card-rating-compact-star{color:color-mix(in srgb, var(--warning) 58%, var(--text-primary))}.gengage-chat-panel .gengage-chat-product-card-name{min-height:0;color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;margin:0 0 2px;font-size:14px;font-weight:600;line-height:1.35}.gengage-chat-panel .gengage-chat-product-card-buy-footer{flex-shrink:0;min-width:0;margin-top:auto;padding:0 14px 16px;display:flex;position:relative}.gengage-chat-panel .gengage-chat-product-card-buy-trigger{box-sizing:border-box;border:1.5px solid var(--client-primary);background:var(--surface-card);width:100%;min-width:0;min-height:42px;color:var(--client-primary);white-space:nowrap;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;margin:0;padding:9px 14px;font-family:inherit;font-size:13px;font-weight:600;line-height:1.2;transition:background .15s,box-shadow .15s;display:flex}.gengage-chat-panel .gengage-chat-product-card-buy-trigger:hover{background:color-mix(in srgb, var(--client-primary) 6%, white);box-shadow:var(--shadow-1)}.gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta{border:1.5px solid var(--client-primary);background:var(--surface-card);width:calc(100% - 28px);min-width:0;color:var(--client-primary);box-sizing:border-box;border-radius:12px;justify-content:center;align-items:center;min-height:42px;margin:0 14px 16px;padding:9px 14px;font-size:13px;font-weight:600;display:flex}.gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta:hover{background:color-mix(in srgb, var(--client-primary) 6%, white)}.gengage-chat-product-card--selected{border-color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, transparent);box-shadow:0 0 0 1px var(--client-primary)}.gengage-chat-panel--visible{min-height:0}.gengage-chat-panel--visible>*{flex-shrink:0}.gengage-chat-load-more-btn{border:1px solid var(--border-default);color:var(--client-primary);cursor:pointer;background:0 0;border-radius:8px;margin:12px auto;padding:8px 24px;font-size:14px;display:block}.gengage-chat-load-more-btn:hover{background:var(--surface-card-muted)}.gengage-chat-product-details-panel{background:var(--surface-card);border:1px solid var(--border-default);box-sizing:border-box;border-radius:16px;flex-direction:column;gap:12px;width:100%;padding:14px;display:flex}.gengage-chat-product-details-media{border:1px solid var(--border-subtle);background:var(--surface-card-muted);border-radius:12px;flex-direction:column;align-items:center;padding:12px;display:flex}.gengage-chat-product-details-img{object-fit:contain;border-radius:8px;width:100%;height:auto;max-height:300px}.gengage-chat-product-details-content{flex-direction:column;gap:8px;min-width:0;display:flex}.gengage-chat-product-details-title{color:var(--text-primary);margin:0;font-size:17px;font-weight:700;line-height:1.3}.gengage-chat-product-details-rating{background:color-mix(in srgb, var(--warning) 10%, white);width:fit-content;color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));border-radius:999px;align-items:center;gap:4px;padding:3px 8px;font-size:13px;font-weight:700;display:inline-flex}.gengage-chat-product-details-review-count{color:color-mix(in srgb, var(--warning) 84%, var(--text-primary));font-weight:600}.gengage-chat-product-details-price{align-items:baseline;gap:6px;display:flex}.gengage-chat-product-details-original-price{color:var(--text-secondary);font-size:14px;text-decoration:line-through}.gengage-chat-product-details-price-stack{flex-direction:column;align-items:flex-start;gap:2px;width:100%;display:flex}.gengage-chat-product-details-price-stack .gengage-chat-campaign-reason{margin-bottom:2px;font-size:13px;font-weight:600}.gengage-chat-product-details-price--inline{flex-wrap:nowrap;align-items:baseline}.gengage-chat-product-details-price--inline .gengage-chat-product-details-price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:1em;margin:0 4px;display:inline-block}.gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price{color:var(--text-secondary);order:0;font-size:22px;font-weight:500;text-decoration:none}.gengage-chat-product-details-price--inline .gengage-chat-product-details-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));order:0;font-size:22px;font-weight:800}.gengage-chat-product-details-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:22px;font-weight:800;line-height:1.1}.gengage-chat-product-details-stock{border-radius:999px;width:fit-content;padding:4px 10px;font-size:12px;font-weight:700}.gengage-chat-product-details-stock.is-in-stock{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-product-details-stock.is-out-of-stock{background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 82%, var(--text-primary))}.gengage-chat-product-details-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.gengage-chat-product-details-cta{border-radius:var(--radius-control,12px);border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);min-height:40px;color:var(--ds-button-primary-fg);cursor:pointer;justify-content:center;align-items:center;padding:0 20px;font-size:14px;font-weight:700;text-decoration:none;transition:filter .14s,transform .12s;display:inline-flex}.gengage-chat-product-details-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-product-details-cta:active{background:var(--ds-button-primary-bg-active)}.gengage-chat-product-details-atc{border-radius:var(--radius-control);background:var(--_gengage-success-color);color:var(--client-on-primary);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:700;transition:filter .12s,transform .12s;display:inline-flex}.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{border-top:1px solid var(--border-default);margin-top:4px;padding-top:12px}.gengage-chat-product-detail-tab-bar{border-bottom:1px solid var(--border-default);gap:6px;margin-bottom:12px;padding-bottom:8px;display:flex}.gengage-chat-product-detail-tab{border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;flex:1;padding:8px 12px;font-family:inherit;font-size:13px;font-weight:600;transition:color .15s,border-color .15s,background .15s}.gengage-chat-product-detail-tab:hover{color:var(--text-primary);background:color-mix(in srgb, var(--surface-card-soft) 82%, transparent)}.gengage-chat-product-detail-tab--active{color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-product-detail-tab-panel{color:var(--text-secondary);font-size:13px;line-height:1.6}.gengage-chat-product-description{color:var(--text-primary);flex-direction:column;gap:10px;display:flex}.gengage-chat-product-description p,.gengage-chat-product-description h2,.gengage-chat-product-description h3,.gengage-chat-product-description h4,.gengage-chat-product-description ul,.gengage-chat-product-description ol{margin:0}.gengage-chat-product-description h2,.gengage-chat-product-description h3,.gengage-chat-product-description h4{color:var(--text-primary);font-size:15px;font-weight:800;line-height:1.35}.gengage-chat-product-description ul,.gengage-chat-product-description ol{padding-left:20px}.gengage-chat-product-description li+li{margin-top:6px}.gengage-chat-product-description strong,.gengage-chat-product-description b{font-weight:800}.gengage-chat-product-specs-table{border-collapse:collapse;width:100%;font-size:13px}.gengage-chat-product-specs-table tr:nth-child(2n){background:var(--surface-card-muted)}.gengage-chat-product-specs-key{color:var(--text-secondary);white-space:nowrap;border-bottom:1px solid var(--border-subtle);width:40%;padding:6px 10px;font-weight:600}.gengage-chat-product-specs-value{color:var(--text-primary);border-bottom:1px solid var(--border-subtle);padding:6px 10px}.gengage-chat-product-card-atc{opacity:0;z-index:1;transition:opacity .15s;position:absolute;bottom:42px;right:6px}.gengage-chat-product-card:hover .gengage-chat-product-card-atc{opacity:1}@media (hover:none),(pointer:coarse){.gengage-chat-product-card-atc{opacity:1;width:100%;margin:0;display:flex;position:relative;bottom:auto;right:auto}}.gengage-chat-drawer.gengage-chat-drawer--hidden{opacity:0;pointer-events:none;box-shadow:none;visibility:hidden;transform:translate(100%)}.gengage-chat-root--mobile .gengage-chat-drawer.gengage-chat-drawer--hidden{opacity:0;pointer-events:none;box-shadow:none;visibility:hidden;transform:translateY(100%)}@media (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{background:var(--surface-card-muted);border:1px solid var(--border-default);box-sizing:border-box;border-radius:8px;align-items:center;gap:8px;width:100%;padding:6px 10px;display:flex}.gengage-chat-attachment-preview--hidden{display:none}.gengage-chat-attachment-preview-thumb{object-fit:cover;border-radius:4px;flex-shrink:0;width:40px;height:40px}.gengage-chat-attachment-name{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.gengage-chat-attachment-remove{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:18px;line-height:1}.gengage-chat-attachment-remove:hover{color:var(--error)}.gengage-chat-attach-btn{background:var(--surface-card-soft);border:1px solid var(--border-default);cursor:pointer;width:40px;height:40px;color:var(--text-primary);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,background .15s,border-color .15s;display:flex}.gengage-chat-attach-btn:hover{color:var(--client-primary);background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-attach-btn svg{width:20px;height:20px}.gengage-chat-attach-wrap{flex-shrink:0;align-items:center;display:flex;position:relative}.gengage-chat-attach-menu{z-index:50;background:var(--surface-elevated);border:1px solid var(--border-default);border-radius:var(--radius-card);min-width:196px;box-shadow:var(--shadow-3);margin:0;padding:4px 0;list-style:none;position:absolute;bottom:calc(100% + 8px);left:0}.gengage-chat-attach-menu[hidden]{display:none!important}.gengage-chat-attach-menu-item{cursor:pointer;width:100%;color:var(--text-primary);text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:10px 14px;font-family:inherit;font-size:14px;font-weight:500;transition:background .12s;display:flex}.gengage-chat-attach-menu-item:hover{background:var(--surface-card-muted)}.gengage-chat-attach-menu-icon{color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-attach-menu-label{flex:1;min-width:0}.gengage-chat-attach-menu-sep{background:var(--border-default);height:1px;margin:4px 10px}.gengage-chat-mic-btn{cursor:pointer;border-radius:var(--radius-control);width:32px;height:32px;color:var(--text-secondary);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,background .15s;display:flex}.gengage-chat-mic-btn:hover{color:var(--text-primary);background:var(--surface-card-muted);border-color:var(--border-default)}.gengage-chat-mic-btn svg{width:20px;height:20px}.gengage-chat-mic-btn--active{color:var(--error);animation:1.2s ease-in-out infinite gengage-mic-pulse}.gengage-chat-mic-btn--active:hover{color:color-mix(in srgb, var(--error) 84%, black)}@keyframes gengage-mic-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.15)}}.gengage-chat-input-area--dragover{outline:2px dashed var(--client-primary);outline-offset:-2px;background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-attachment-thumb{border-radius:8px;width:120px;max-width:100%;height:auto;margin-bottom:6px;display:block}.gengage-chat-root--mobile .gengage-chat-header-btn,.gengage-chat-root--mobile .gengage-chat-close{border-radius:12px;width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-attach-btn,.gengage-chat-root--mobile .gengage-chat-mic-btn,.gengage-chat-root--mobile .gengage-chat-send{width:44px;min-width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-attach-btn svg,.gengage-chat-root--mobile .gengage-chat-mic-btn svg{width:22px;height:22px}.gengage-chat-root--mobile .gengage-chat-panel-divider{cursor:ns-resize;touch-action:pan-y;background:0 0;justify-content:center;align-items:center;width:100%;height:20px;display:flex;position:relative;overflow:visible}.gengage-chat-root--mobile .gengage-chat-panel-divider--hidden{display:none}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel{border-radius:0;width:100%;left:0;right:0}.gengage-chat-root--mobile .gengage-chat-panel{z-index:10;width:100%;min-width:0;max-width:none;max-height:none;box-shadow:none;background:var(--gengage-chat-panel-bg,var(--surface-card));pointer-events:none;border:none;border-radius:0;flex-direction:column;padding:0 12px 16px;transition:transform .32s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;inset:0;overflow-y:auto;transform:translate(100%)}.gengage-chat-root--mobile .gengage-chat-panel--visible{pointer-events:auto;transform:translate(0)}.gengage-chat-root--mobile .gengage-chat-panel-divider,.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-panel-divider{display:none}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-body{flex-direction:row}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-conversation{border-left:none;flex:1;width:100%}.gengage-chat-root--mobile .gengage-chat-product-details-share{width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-footer,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-cta{box-sizing:border-box;width:100%;max-width:100%}.gengage-chat-root--mobile .gengage-chat-product-details-panel{gap:8px;padding:10px}.gengage-chat-root--mobile .gengage-chat-product-details-media{min-height:0;padding:8px}.gengage-chat-root--mobile .gengage-chat-product-details-content{gap:6px}.gengage-chat-root--mobile .gengage-chat-product-details-title{font-size:14px;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-product-details-rating{padding:2px 6px;font-size:12px}.gengage-chat-root--mobile .gengage-chat-product-details-original-price{font-size:12px}.gengage-chat-root--mobile .gengage-chat-product-details-current-price,.gengage-chat-root--mobile .gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price,.gengage-chat-root--mobile .gengage-chat-product-details-price--inline .gengage-chat-product-details-current-price{font-size:18px}.gengage-chat-root--mobile .gengage-chat-product-details-actions{gap:6px;margin-top:2px}.gengage-chat-root--mobile .gengage-chat-product-details-cta{min-height:38px;padding:0 14px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-product-grid:not(.gengage-chat-product-grid--mobile){scroll-snap-type:x mandatory}.gengage-chat-root--mobile .gengage-chat-product-grid.gengage-chat-product-grid--mobile{scroll-snap-type:none}.gengage-chat-root--mobile .gengage-chat-product-card{box-sizing:border-box;scroll-snap-align:center;width:280px;min-width:280px;max-width:100%}.gengage-chat-root--mobile .gengage-chat-product-grid--mobile .gengage-chat-product-card{scroll-snap-align:start;width:100%;min-width:0;max-width:none}.gengage-chat-root--mobile .gengage-chat-product-card-img-wrapper{justify-content:center;align-items:center;min-height:0;display:flex}.gengage-chat-root--mobile .gengage-chat-product-card-img{object-fit:contain;object-position:center;width:auto;max-width:100%;height:auto;min-height:0;max-height:180px;display:block}.gengage-chat-root--mobile .gengage-chat-product-card-discount-badge{padding:2px 6px;font-size:10px;font-weight:700;line-height:1.2}.gengage-chat-root--mobile .gengage-chat-drawer{border-radius:0;width:100%;max-height:100%;position:fixed;inset:0}.gengage-chat-root--mobile .gengage-chat-bubble{max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-img-wrapper{aspect-ratio:1;justify-content:center;align-items:center;min-height:0;display:flex}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-img{object-fit:contain;object-position:center;width:auto;max-width:100%;height:auto;min-height:0;max-height:min(200px,72%)}.gengage-chat-root--mobile .gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-root--mobile .gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{flex-shrink:0;width:28px;min-width:28px;height:28px;min-height:28px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-discount-badge{min-width:28px;height:28px;padding:0 6px;font-size:10px;font-weight:700}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-footer{padding:0 12px 14px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-trigger{box-sizing:border-box;white-space:normal;text-align:center;-webkit-hyphens:auto;hyphens:auto;min-width:0;max-width:100%;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta{box-sizing:border-box;white-space:normal;width:calc(100% - 24px);min-width:0;max-width:calc(100% - 24px);margin-left:12px;margin-right:12px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-rating-compact{gap:3px;padding:2px 6px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-stock{padding:2px 5px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-messages{scrollbar-width:none;padding:12px 16px}.gengage-chat-root--mobile .gengage-chat-messages::-webkit-scrollbar{display:none}.gengage-chat-root--mobile .gengage-chat-drawer{border-top:none}.gengage-chat-root--mobile .gengage-chat-header{border-radius:16px 16px 0 0;min-height:72px;padding-top:22px;padding-bottom:8px}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-header{border-radius:0}.gengage-chat-root--mobile .gengage-chat-conversation{-webkit-overflow-scrolling:touch;min-height:0;overflow-y:auto}.gengage-chat-root--mobile .gengage-chat-product-details-img{object-fit:contain;min-height:0;max-height:200px}.gengage-chat-root--mobile .gengage-chat-product-details-actions{flex-wrap:wrap;gap:8px}.gengage-chat-root--mobile .gengage-chat-product-details-promos{flex-wrap:wrap;gap:4px}.gengage-chat-root--mobile .gengage-chat-input::placeholder{font-size:13px}.gengage-chat-kvkk-banner{background:color-mix(in srgb, var(--warning) 10%, white);border-bottom:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));align-items:flex-start;gap:8px;padding:10px 14px;font-size:12px;line-height:1.5;display:flex}.gengage-chat-kvkk-content{flex:1;min-width:0}.gengage-chat-kvkk-content a{color:color-mix(in srgb, var(--warning) 82%, var(--text-primary));text-decoration:underline}.gengage-chat-kvkk-dismiss{width:20px;height:20px;color:color-mix(in srgb, var(--warning) 84%, var(--text-primary));cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0;font-size:18px;line-height:1}.gengage-chat-comparison{box-sizing:border-box;flex-direction:column;gap:12px;padding:16px;display:flex}.gengage-chat-comparison-heading{letter-spacing:.05em;color:var(--text-primary);margin:0 0 16px;font-size:14px;font-weight:700}.gengage-chat-comparison-recommended{border:1px solid color-mix(in srgb, var(--client-primary) 18%, var(--border-default));border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-1);padding:16px}.gengage-chat-comparison-recommended-label{color:var(--client-primary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px;font-size:12px;font-weight:700}.gengage-chat-comparison-recommended-body{grid-template-columns:minmax(108px,148px) minmax(0,1fr);align-items:flex-start;gap:16px;display:grid}.gengage-chat-comparison-recommended-media{aspect-ratio:1;border:1px solid var(--border-subtle);background:var(--surface-card);border-radius:14px;justify-content:center;align-items:center;display:flex;overflow:hidden}.gengage-chat-comparison-recommended-body img,.gengage-chat-comparison-recommended-placeholder{object-fit:contain;box-sizing:border-box;width:100%;height:100%;padding:8px}.gengage-chat-comparison-recommended-placeholder{background:var(--surface-card-muted)}.gengage-chat-comparison-recommended-info{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.gengage-chat-comparison-recommended-title{color:var(--text-primary);margin:0;font-size:24px;font-weight:800;line-height:1.2}.gengage-chat-comparison-recommended-meta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.gengage-chat-comparison-recommended-rating{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:color-mix(in srgb, var(--warning) 78%, var(--text-primary));border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:13px;font-weight:700;display:inline-flex}.gengage-chat-comparison-recommended-rating-value{color:var(--text-primary)}.gengage-chat-comparison-recommended-price{color:var(--text-primary);font-size:20px;font-weight:700}.gengage-chat-comparison-highlights{border-top:1px solid var(--border-subtle);padding-top:12px}.gengage-chat-comparison-highlights-label{color:var(--text-secondary);margin-bottom:6px;font-size:12px;font-weight:600}.gengage-chat-comparison-highlights ul{color:var(--text-primary);margin:0;padding-left:18px;font-size:14px;line-height:1.55}.gengage-chat-comparison-special{background:color-mix(in srgb, var(--warning) 10%, white);border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));border-radius:var(--radius-card);color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));margin-bottom:12px;padding:12px 16px;font-size:13px}.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{border-collapse:collapse;background:var(--surface-card);width:100%;font-size:13px}.gengage-chat-comparison-table th,.gengage-chat-comparison-table td{text-align:center;border-bottom:1px solid var(--border-subtle);vertical-align:top;padding:10px 12px}.gengage-chat-comparison-table th{color:var(--text-secondary);font-size:12px;font-weight:600}.gengage-chat-comparison-table thead th:not(:first-child){vertical-align:top}.gengage-chat-comparison-table-header-cell{box-sizing:border-box;grid-template-rows:auto 1fr auto;place-items:start center;gap:6px;height:100%;min-height:0;display:grid}.gengage-chat-comparison-table-header-cell--clickable{cursor:pointer;border-radius:var(--radius-control);padding:6px;transition:background .16s,box-shadow .16s,transform .16s}.gengage-chat-comparison-table-header-cell--clickable:hover{background:var(--surface-card-soft);box-shadow:var(--shadow-1);transform:translateY(-1px)}.gengage-chat-comparison-table-header-cell--clickable:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-comparison-table-header-cell img{object-fit:contain;border-radius:calc(var(--radius-control) - 4px);background:var(--surface-card-muted);width:60px;height:60px}.gengage-chat-comparison-table-header-img-placeholder{border-radius:calc(var(--radius-control) - 4px);background:var(--surface-card-muted);width:60px;height:60px}.gengage-chat-comparison-table-product-name{width:100%;min-width:0;color:var(--text-secondary);text-align:center;-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;align-self:start;font-size:12px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-comparison-table-price{color:var(--text-primary);text-align:center;width:100%;font-weight:700}.gengage-chat-comparison-label{text-align:left;color:var(--text-secondary);white-space:nowrap;font-weight:600}.gengage-chat-comparison-selected{background:color-mix(in srgb, var(--client-primary) 6%, white)}.gengage-chat-comparison-recommended-text{color:var(--text-secondary);margin:0;font-size:14px;line-height:1.6}.gengage-chat-comparison-key-differences{border:1px solid var(--border-subtle);border-radius:var(--radius-card);background:var(--surface-card-muted)}.gengage-chat-comparison-key-differences-summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-weight:700;list-style:none;display:flex}.gengage-chat-comparison-key-differences-summary::-webkit-details-marker{display:none}.gengage-chat-comparison-key-differences-summary-label{color:var(--text-primary)}.gengage-chat-comparison-key-differences-summary-meta{color:var(--client-primary);font-size:13px;font-weight:700}.gengage-chat-comparison-key-differences[open] .gengage-chat-comparison-key-differences-summary-meta{opacity:0}.gengage-chat-comparison-key-differences-content{color:var(--text-primary);padding:0 16px 16px;font-size:14px;line-height:1.7}.gengage-chat-comparison-key-differences-content ul,.gengage-chat-comparison-key-differences-content ol{margin:0;padding-left:20px}.gengage-chat-comparison-key-differences-content li+li{margin-top:8px}@media (width<=960px){.gengage-chat-comparison-recommended-body{grid-template-columns:1fr}.gengage-chat-comparison-recommended-title{font-size:20px}}.gengage-chat-pills{border-top:1px solid var(--border-subtle);background:var(--surface-card);padding:8px 12px 6px;position:relative}.gengage-chat-pills-scroll{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;padding-right:28px;display:flex;overflow-x:auto}.gengage-chat-pills-scroll::-webkit-scrollbar{display:none}.gengage-chat-root--mobile .gengage-chat-pills-scroll{flex-wrap:wrap;gap:6px}.gengage-chat-root--mobile .gengage-chat-pill{white-space:normal;max-width:100%}.gengage-chat-pill{border:1px solid var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active);white-space:nowrap;cursor:pointer;border-radius:999px;flex:none;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:700;transition:background .15s,border-color .15s,color .15s}.gengage-chat-pill:hover{background:color-mix(in srgb, var(--client-primary) 12%, white);border-color:color-mix(in srgb, var(--client-primary) 36%, white)}.gengage-chat-pill:active{transform:none}.gengage-chat-pill--rich{border-radius:18px;align-items:center;gap:10px;padding:8px 14px 8px 8px;display:flex}.gengage-chat-pill-img{object-fit:cover;background:var(--surface-card);border-radius:12px;flex-shrink:0;width:32px;height:32px}.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{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:11px;font-weight:500;display:block;overflow:hidden}.gengage-chat-pills-arrow{border:1px solid var(--border-default);background:var(--surface-card);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;box-shadow:var(--shadow-1);z-index:1;border-radius:12px;justify-content:center;align-items:center;font-size:16px;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.gengage-chat-pills-arrow:hover{background:var(--surface-card-soft);color:var(--client-primary)}@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-typing-dots span,.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-skeleton-card,.gengage-skeleton-line,.gengage-skeleton-img,.gengage-skeleton-text,.gengage-skeleton-price,.gengage-chat-cart-toast,.gengage-chat-header-btn--cart-flash{transition:none!important;animation:none!important;transform:none!important}}.gengage-chat-bubble--user{position:relative}.gengage-chat-rollback-btn{border-radius:var(--radius-pill);background:var(--surface-card-muted);width:24px;height:24px;color:var(--text-secondary);cursor:pointer;opacity:0;border:none;justify-content:center;align-items:center;padding:0;transition:opacity .15s;display:flex;position:absolute;top:50%;left:-28px;transform:translateY(-50%)}.gengage-chat-bubble--user:hover .gengage-chat-rollback-btn{opacity:1}.gengage-chat-rollback-btn:hover{background:var(--client-primary);color:var(--client-on-primary)}.gengage-chat-bubble--hidden{display:none}.gengage-chat-ai-top-picks{flex-direction:column;gap:12px;padding:8px 0;scroll-margin-top:60px;display:flex}.gengage-chat-ai-top-picks-title{color:var(--text-primary);margin:0 0 4px;font-size:15px;font-weight:600}.gengage-chat-ai-top-picks-scroll{flex-direction:column;gap:10px;min-width:0;display:flex}.gengage-chat-ai-top-picks-rest,.gengage-chat-ai-toppick-top-row{display:contents}.gengage-chat-ai-toppick-detail{width:100%;min-width:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks{gap:0;padding-top:4px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-title{flex-shrink:0;width:100%;margin:0 0 10px;font-size:18px;font-weight:700;line-height:1.2}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll{scrollbar-width:none;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,auto);align-items:stretch;gap:12px;margin:0;padding:12px 0;display:grid;overflow:visible}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact{flex:initial;scroll-snap-align:none;width:100%;min-width:0;max-width:none}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child{grid-column:1/-1;grid-template-rows:auto auto;grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:12px 18px;display:grid}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail){grid-template-rows:auto auto auto}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact{flex-direction:column;align-items:stretch}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media{max-height:140px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-media{aspect-ratio:4/3;grid-area:1/1/span 2;max-height:260px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail) .gengage-chat-ai-toppick-media{grid-row:1/span 3}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-detail{grid-area:2/2;min-width:0;padding-top:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img{object-fit:contain;flex-shrink:0;width:100%;height:100%;max-height:140px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-img{max-height:260px}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-body,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{flex:1;min-height:0;padding:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-body{grid-area:1/2;padding-top:6px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail) .gengage-chat-ai-toppick-cta{grid-row:3}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);width:calc(100% - 24px);color:var(--ds-button-secondary-fg);align-self:stretch;margin:14px 12px 12px}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);width:auto;min-width:180px;color:var(--ds-button-secondary-fg);grid-area:2/2;place-self:end start;margin:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta:hover,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta:hover{background:var(--ds-button-secondary-bg-hover);filter:none}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner{border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-ai-toppick-rating{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-secondary);border-radius:999px;align-self:flex-start;align-items:center;gap:5px;margin-top:4px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.gengage-chat-ai-toppick-rating-icon{color:color-mix(in srgb, var(--warning) 60%, var(--text-primary));justify-content:center;align-items:center;line-height:0;display:inline-flex}.gengage-chat-ai-toppick-rating-value{color:var(--text-primary)}.gengage-chat-ai-toppick-media .gengage-chat-ai-toppick-discount-badge{background:var(--client-primary);color:var(--client-on-primary);z-index:1;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:800;line-height:1.2;position:absolute;top:4px;left:4px;right:auto}.gengage-chat-ai-toppick-card--winner,.gengage-chat-ai-toppick-card--compact{box-sizing:border-box;border-radius:var(--radius-card);background:var(--surface-card);flex-direction:column;align-items:stretch;padding:12px;transition:box-shadow .2s,background .15s,transform .15s;display:flex;position:relative;overflow:visible}.gengage-chat-ai-toppick-card--winner{border:1.5px solid color-mix(in srgb, var(--client-primary) 24%, var(--border-default))}.gengage-chat-ai-toppick-card--winner:hover{background:var(--surface-card-muted);box-shadow:var(--shadow-2)}.gengage-chat-ai-toppick-card--compact{border:1px solid var(--border-default)}.gengage-chat-ai-toppick-card--compact:hover{background:var(--surface-card-muted);box-shadow:var(--shadow-1);transform:translateY(-1px)}.gengage-chat-ai-toppick-badge{z-index:2;box-sizing:border-box;text-transform:uppercase;letter-spacing:.05em;pointer-events:none;white-space:normal;border-radius:999px;max-width:calc(100% - 24px);padding:2px 10px;font-size:10px;font-weight:700;line-height:1.25;position:absolute;top:-10px;left:12px}.gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-badge{background:var(--client-primary);color:var(--client-on-primary)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-badge{background:var(--surface-card-muted);color:var(--text-secondary)}.gengage-chat-ai-toppick-media{aspect-ratio:1;border:1px solid var(--border-subtle);background:var(--surface-card);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:100%;margin-top:4px;margin-bottom:8px;display:flex;position:relative;overflow:hidden}.gengage-chat-ai-toppick-img{object-fit:contain;box-sizing:border-box;width:auto;max-width:100%;height:auto;max-height:100%;padding:4px}.gengage-chat-ai-toppick-body{flex-direction:column;flex:1;gap:0;min-width:0;padding:0;display:flex}.gengage-chat-ai-toppick-name{color:var(--text-primary);text-overflow:ellipsis;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-bottom:4px;font-size:14px;font-weight:700;line-height:1.375;display:-webkit-box;overflow:hidden}.gengage-chat-ai-toppick-role{color:var(--client-primary);text-transform:uppercase;letter-spacing:.3px;font-size:11px;font-weight:600}.gengage-chat-ai-toppick-labels{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.gengage-chat-ai-toppick-label{border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700}.gengage-chat-ai-toppick-label[data-sentiment=positive]{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-ai-toppick-label[data-sentiment=negative]{background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 82%, var(--text-primary))}.gengage-chat-ai-toppick-label[data-sentiment=neutral]{background:var(--surface-card-muted);color:var(--text-secondary)}.gengage-chat-ai-toppick-reason{color:var(--text-secondary);margin:10px 0 0;font-size:13px;line-height:1.5}.gengage-chat-ai-toppick-review{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-primary);border-radius:14px;margin-top:10px;padding:10px 12px;font-size:12px;line-height:1.45}.gengage-chat-ai-toppick-snippet{color:var(--text-secondary);margin:8px 0 0;font-size:12px;line-height:1.45}.gengage-chat-ai-toppick-price{color:var(--text-primary);margin-top:4px;font-size:14px;font-weight:700}.gengage-chat-ai-toppick-price-current{color:var(--gengage-discounted-price-color,var(--text-primary))}.gengage-chat-ai-toppick-original-price{color:var(--text-secondary);font-size:12px;font-weight:400;text-decoration:line-through}.gengage-chat-ai-toppick-price-stack{flex-direction:column;align-items:flex-start;gap:2px;margin-top:4px;display:flex}.gengage-chat-ai-toppick-price-stack .gengage-chat-campaign-reason{font-size:11px;font-weight:700}.gengage-chat-campaign-price-badge{box-sizing:border-box;border-radius:var(--radius-control,10px);background-image:linear-gradient(var(--gengage-campaign-price-badge-fill,#fff) 0 0), linear-gradient(135deg, var(--_gengage-campaign-reason-start), var(--_gengage-campaign-reason-end));background-origin:border-box;background-clip:padding-box,border-box;border:1px solid #0000;flex-direction:row;align-items:center;gap:10px;max-width:100%;padding:10px 12px;display:inline-flex}.gengage-chat-campaign-price-badge__logo{flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-campaign-price-badge__logo img{object-fit:contain;width:auto;max-width:72px;height:auto;max-height:32px;display:block}.gengage-chat-campaign-price-badge__body{flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;min-width:0;display:flex}.gengage-chat-campaign-price-badge__reason{letter-spacing:.02em;background:linear-gradient(90deg, var(--_gengage-campaign-reason-start), var(--_gengage-campaign-reason-end));color:#0000;-webkit-background-clip:text;background-clip:text;max-width:100%;margin:0;font-size:12px;font-weight:700;line-height:1.25}.gengage-chat-campaign-price-badge__sale{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:17px;font-weight:800;line-height:1.15}.gengage-chat-product-card-price-row .gengage-chat-campaign-price-badge__sale{font-size:16px}.gengage-chat-product-summary__price .gengage-chat-campaign-price-badge__sale{font-size:15px}.gengage-chat-product-details-price .gengage-chat-campaign-price-badge{border-radius:var(--radius-control,12px);padding:12px 14px}.gengage-chat-product-details-price .gengage-chat-campaign-price-badge__reason{font-size:13px}.gengage-chat-product-details-price .gengage-chat-campaign-price-badge__sale{font-size:22px}:is(.gengage-chat-ai-toppick-price--inline:has(.gengage-chat-campaign-price-badge),.gengage-chat-product-card-price-row:has(.gengage-chat-campaign-price-badge),.gengage-chat-product-summary__price--inline:has(.gengage-chat-campaign-price-badge),.gengage-chat-product-details-price--inline:has(.gengage-chat-campaign-price-badge)){align-items:last baseline}:is(.gengage-chat-ai-toppick-price--inline:has(.gengage-chat-campaign-price-badge) .gengage-chat-ai-toppick-price-sep,.gengage-chat-product-card-price-row:has(.gengage-chat-campaign-price-badge) .gengage-chat-product-card-price-sep,.gengage-chat-product-summary__price--inline:has(.gengage-chat-campaign-price-badge) .gengage-chat-product-summary__price-sep,.gengage-chat-product-details-price--inline:has(.gengage-chat-campaign-price-badge) .gengage-chat-product-details-price-sep){align-self:last baseline}.gengage-chat-ai-toppick-price--inline{flex-flow:wrap;align-items:baseline;gap:0 6px;display:flex}.gengage-chat-ai-toppick-price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:.85em;margin:0 1px;display:inline-block}.gengage-chat-ai-toppick-price--inline .gengage-chat-ai-toppick-original-price{font-size:14px;font-weight:500;text-decoration:none}.gengage-chat-ai-toppick-price--inline .gengage-chat-ai-toppick-price-current{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:14px;font-weight:800}.gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-control,12px);background:var(--ds-button-primary-bg);width:calc(100% - 24px);color:var(--ds-button-primary-fg);cursor:pointer;text-align:center;box-sizing:border-box;opacity:0;pointer-events:none;flex-shrink:0;align-self:stretch;margin:14px 12px 12px;padding:8px 0;font-size:13px;font-weight:700;transition:opacity .18s,transform .18s,background .15s;display:block;transform:translateY(6px)}.gengage-chat-ai-toppick-card--winner:hover .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--compact:hover .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--winner:focus-within .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--compact:focus-within .gengage-chat-ai-toppick-cta{opacity:1;pointer-events:auto;transform:translateY(0)}.gengage-chat-ai-toppick-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-ai-toppick-spinner{background:color-mix(in srgb, var(--surface-card) 78%, transparent);z-index:6;border-radius:12px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.gengage-chat-ai-toppick-spinner:after{content:\"\";border:3px solid var(--border-default);border-top-color:var(--ai-accent-start);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite gengage-spin}@keyframes gengage-spin{to{transform:rotate(360deg)}}.gengage-chat-root--mobile .gengage-chat-ai-top-picks{gap:8px;padding:4px 0}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-title{margin:0 0 2px;font-size:14px}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll{flex-direction:column;gap:8px;min-width:0;padding:6px 0 2px;display:flex;overflow:visible}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll>:first-child{flex-direction:column;align-items:stretch;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll>:first-child.gengage-chat-ai-toppick-card--winner{flex-direction:column}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest{-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;flex-flow:row;gap:8px;min-width:0;margin:0 -2px;padding:2px 2px 8px;display:flex;overflow:auto visible}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest::-webkit-scrollbar{width:0;height:0;display:none}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest .gengage-chat-ai-toppick-card--compact{scroll-snap-align:start;flex:0 0 min(82vw,272px);width:min(82vw,272px);min-width:0;max-width:272px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner{scroll-snap-align:none;flex-shrink:1;width:100%;min-width:0;max-width:none;padding:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact{scroll-snap-align:none;flex-shrink:1;width:100%;min-width:0;max-width:none;padding:6px 8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner{border:1.5px solid color-mix(in srgb, var(--client-primary) 28%, var(--border-default));margin-bottom:8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact{border:1px solid var(--border-default);box-shadow:none;flex-direction:column;align-items:stretch}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-top-row{flex-direction:row;align-items:flex-start;gap:10px;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media{aspect-ratio:1;border-radius:10px;flex:0 0 clamp(96px,30vw,124px);width:clamp(96px,30vw,124px);height:clamp(96px,30vw,124px);max-height:none;margin:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img{object-fit:contain;width:100%;height:100%;max-height:100%;padding:4px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-body{flex:1;min-width:0;padding-top:2px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-detail{width:100%;margin-top:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-reason{color:var(--text-primary);margin:0;font-size:12px;line-height:1.45;display:block!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-review{color:var(--text-secondary);border:1px solid var(--border-subtle);background:var(--surface-card-muted);border-radius:12px;margin-top:8px;padding:8px 10px;font-size:12px;font-style:italic;line-height:1.4;display:block!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-top-row{flex-direction:row;align-items:flex-start;gap:6px;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media{aspect-ratio:1;border-radius:8px;flex:0 0 64px;width:64px;height:64px;max-height:64px;margin:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{object-fit:contain;width:100%;max-height:100%;padding:2px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{flex:1;min-width:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-rating{display:none}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-detail{width:100%;margin-top:4px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-snippet{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;margin:0;font-size:10px;line-height:1.3;display:-webkit-box;overflow:hidden}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-role-line{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin:0 0 2px;font-size:9px;font-weight:600;line-height:1.15}.gengage-chat-root--mobile .gengage-chat-ai-toppick-snippet{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:11px;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{gap:5px;top:3px;right:5px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{gap:5px;top:5px;right:6px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-badge{letter-spacing:.04em;background:var(--client-primary);max-width:calc(100% - 18px);color:var(--client-on-primary);box-shadow:none;border:none;padding:2px 6px;font-size:8px;font-weight:700;line-height:1.15;top:-14px;left:8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-name{margin-bottom:1px;font-size:12px;line-height:1.22}.gengage-chat-root--mobile .gengage-chat-ai-toppick-name{margin-bottom:2px;font-size:13px;line-height:1.28}.gengage-chat-root--mobile .gengage-chat-ai-toppick-rating{gap:3px;margin-top:2px;padding:2px 6px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-price{margin-top:1px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-price{margin-top:2px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-original-price{font-size:11px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-labels,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{display:none!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta{opacity:1;pointer-events:auto;border:1px solid var(--client-primary);background:var(--surface-card);width:calc(100% - 16px);color:var(--client-primary);box-shadow:none;filter:none;align-self:stretch;margin:8px 8px 6px;padding:6px 0;font-size:12px;font-weight:600;transform:none}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta:hover{background:color-mix(in srgb, var(--client-primary) 10%, var(--surface-card));color:var(--client-primary);border-color:var(--client-primary);filter:none}.gengage-chat-root--mobile .gengage-chat-rollback-btn{left:-24px}.gengage-chat-grounding-review{align-items:center;gap:12px;padding:12px 16px;transition:background .15s,border-color .15s,box-shadow .15s;display:flex}.gengage-chat-grounding-review:hover{background:var(--ds-card-bg-hover);border-color:var(--ds-card-border-hover);box-shadow:var(--ds-card-shadow-hover)}.gengage-chat-grounding-review-icon{background:color-mix(in srgb, var(--client-primary) 8%, var(--surface-card));width:32px;height:32px;color:var(--client-primary);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.gengage-chat-grounding-review-icon svg{width:18px;height:18px;display:block}.gengage-chat-grounding-review-body{flex:1;min-width:0}.gengage-chat-grounding-review-title{color:var(--text-primary);font-size:13px;font-weight:600}.gengage-chat-grounding-review-subtitle{color:var(--text-muted);margin-top:2px;font-size:12px}.gengage-chat-grounding-review-cta{color:var(--client-primary);white-space:nowrap;flex-shrink:0;align-items:center;gap:4px;font-size:13px;font-weight:600;display:inline-flex}.gengage-chat-grounding-review-cta-icon{align-items:center;display:inline-flex}.gengage-chat-grounding-review-cta-icon svg{width:14px;height:14px;display:block}.gengage-chat-grouping-cards{flex-direction:column;gap:6px;display:flex}.gengage-chat-grouping-cards-scroll{flex-direction:column;gap:6px;min-width:0;display:flex}.gengage-chat-grouping-card{background:var(--surface-card-soft);border:1px solid var(--border-default);border-radius:var(--radius-control);align-items:center;gap:10px;padding:8px 12px;transition:background .15s,border-color .15s;display:flex}.gengage-chat-grouping-card:hover{background:color-mix(in srgb, var(--client-primary) 6%, white);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default))}.gengage-chat-grouping-card-arrow{color:var(--client-primary);flex-shrink:0;font-size:14px;display:none}.gengage-chat-grouping-card-img{border-radius:calc(var(--radius-control) - 4px);object-fit:cover;flex-shrink:0;width:48px;min-width:48px;height:48px;min-height:48px}.gengage-chat-grouping-card-body{flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:0;display:flex}.gengage-chat-grouping-card-name{color:var(--text-primary);font-size:13px;font-weight:600}.gengage-chat-grouping-card-desc{color:var(--text-muted);font-size:12px}.gengage-chat-grouping-card-labels{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.gengage-chat-grouping-card-label{color:var(--text-secondary);background:var(--surface-card-muted);border:1px solid var(--border-subtle);border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700;line-height:1.2}.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{flex-direction:column;gap:8px;display:flex}.gengage-chat-suggested-search-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-card);box-shadow:var(--shadow-1);align-items:center;gap:14px;padding:14px 16px;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s;display:flex}.gengage-chat-suggested-search-card:hover{background:var(--surface-card);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));box-shadow:var(--shadow-2);transform:translateY(-1px)}.gengage-chat-suggested-search-card-img{object-fit:contain;background:var(--surface-card-muted);border:1px solid var(--border-subtle);border-radius:14px;flex-shrink:0;width:64px;height:64px;padding:4px}.gengage-chat-suggested-search-card-body{flex:1;min-width:0}.gengage-chat-suggested-search-card-name{color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.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-nav{z-index:3;border:1px solid var(--border-default);border-radius:var(--radius-pill);cursor:pointer;background:color-mix(in srgb, var(--surface-card) 92%, transparent);width:36px;min-width:36px;height:36px;min-height:36px;color:var(--text-primary);box-shadow:var(--shadow-1);justify-content:center;align-items:center;padding:0;transition:background .15s,opacity .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.gengage-chat-product-gallery-nav:hover:not(:disabled){background:var(--surface-card);color:var(--client-primary)}.gengage-chat-product-gallery-nav:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-product-gallery-nav:disabled{opacity:.35;cursor:not-allowed}.gengage-chat-product-gallery-nav--prev{left:8px}.gengage-chat-product-gallery-nav--next{right:8px}.gengage-chat-product-gallery-thumbs{scrollbar-width:thin;justify-content:center;gap:8px;width:100%;padding:10px 0 4px;display:flex;overflow-x:auto}.gengage-chat-product-gallery-thumb{object-fit:cover;cursor:pointer;background:var(--surface-card);border:2px solid #0000;border-radius:8px;flex-shrink:0;width:56px;height:56px;transition:border-color .15s}.gengage-chat-product-gallery-thumb:hover{border-color:var(--border-strong)}.gengage-chat-product-gallery-thumb--active{border-color:var(--client-primary)}.gengage-chat-product-gallery-thumb-more{background:var(--surface-card-muted);width:56px;height:56px;color:var(--text-secondary);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.gengage-chat-product-variants-label{color:var(--text-muted);text-transform:none;letter-spacing:.5px;margin-bottom:6px;font-size:12px;font-weight:600}.gengage-chat-product-variants-list{flex-wrap:wrap;gap:6px;display:flex}.gengage-chat-product-variant-btn{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;padding:6px 12px;font-size:12px;transition:background .15s,border-color .15s}.gengage-chat-product-variant-btn:hover{background:var(--surface-card-muted);border-color:color-mix(in srgb, var(--client-primary) 20%, var(--border-default));color:var(--client-primary)}.gengage-chat-product-details-panel{border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-1);gap:16px;padding:16px}.gengage-chat-product-details-media{border-color:var(--border-default);border-radius:var(--radius-card);background:var(--surface-card-soft);justify-content:center;min-height:320px}.gengage-chat-product-details-img{max-height:420px}.gengage-chat-product-details-content{gap:12px}.gengage-chat-product-details-brand{color:var(--client-primary);font-size:12px;font-weight:800;line-height:1.2}.gengage-chat-product-details-title{font-size:22px;line-height:1.2}.gengage-chat-product-details-rating{border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));background:color-mix(in srgb, var(--warning) 10%, var(--surface-card));color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));gap:6px;padding:6px 10px;font-family:inherit}button.gengage-chat-product-details-rating{border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));cursor:pointer}.gengage-chat-product-details-rating--clickable:hover{border-color:color-mix(in srgb, var(--warning) 42%, var(--border-default));background:color-mix(in srgb, var(--warning) 14%, var(--surface-card))}.gengage-chat-product-details-rating .gengage-star-rating{line-height:1}.gengage-chat-product-details-rating-value{color:var(--text-primary)}.gengage-chat-product-details-price{flex-wrap:wrap;gap:10px}.gengage-chat-product-details-original-price{order:2}.gengage-chat-product-details-current-price{order:1;font-size:30px}.gengage-chat-product-details-discount-badge{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--error) 12%, white);min-height:24px;color:color-mix(in srgb, var(--error) 84%, var(--text-primary));order:3;align-items:center;padding:2px 8px;font-size:12px;font-weight:800;display:inline-flex}.gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price,.gengage-chat-product-details-price--inline .gengage-chat-product-details-current-price{order:0;font-size:30px}.gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price{font-weight:500}.gengage-chat-product-details-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;display:grid}.gengage-chat-product-details-fact{border:1px solid var(--border-subtle);border-radius:var(--radius-control);background:var(--surface-card-soft);min-width:0;padding:8px 10px}.gengage-chat-product-details-fact dt,.gengage-chat-product-details-fact dd{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;overflow:hidden}.gengage-chat-product-details-fact dt{color:var(--text-muted);font-size:11px;font-weight:700}.gengage-chat-product-details-fact dd{color:var(--text-primary);margin-top:2px;font-size:13px;font-weight:700}.gengage-chat-product-variants{margin-top:4px}.gengage-chat-product-variants-label{color:var(--text-primary);letter-spacing:normal;margin-bottom:8px;font-size:14px;font-weight:800}.gengage-chat-product-variants-list{gap:8px}.gengage-chat-product-variant-btn{border-radius:var(--radius-control);min-height:44px;color:var(--text-primary);gap:8px;padding:7px 10px;font-size:13px;font-weight:700}.gengage-chat-product-variant-btn--active{border-color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, var(--surface-card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--client-primary) 36%, transparent);color:var(--client-primary)}.gengage-chat-product-variant-btn--out{opacity:.48;cursor:not-allowed}.gengage-chat-product-variant-swatch{border:1px solid var(--border-default);background:var(--surface-card-muted);width:22px;height:22px;box-shadow:inset 0 0 0 2px var(--surface-card);border-radius:50%;flex:0 0 22px}.gengage-chat-product-variant-swatch--image{object-fit:cover;box-shadow:none}.gengage-chat-product-variant-label,.gengage-chat-product-variant-price{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gengage-chat-product-variant-price{color:var(--text-secondary);font-size:12px;font-weight:700}.gengage-chat-product-details-actions{gap:10px;margin-top:6px}.gengage-chat-product-details-atc,.gengage-chat-product-details-cta{border-radius:var(--radius-control);min-height:44px}.gengage-chat-product-details-atc{border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg)}.gengage-chat-product-details-atc:hover{background:var(--ds-button-primary-bg-hover);filter:none}.gengage-chat-product-details-cta.gds-btn-secondary{border-color:var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);color:var(--ds-button-secondary-fg)}.gengage-chat-product-details-cta.gds-btn-secondary:hover{background:var(--ds-button-secondary-bg-hover)}@media (width>=960px){.gengage-chat-product-details-panel{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);align-items:start;display:grid}.gengage-chat-product-details-media{position:sticky;top:0}.gengage-chat-product-detail-tabs{grid-column:1/-1}}.gengage-chat-root--mobile .gengage-chat-product-details-panel{box-shadow:none;gap:10px;padding:10px}.gengage-chat-root--mobile .gengage-chat-product-details-media{min-height:220px}.gengage-chat-root--mobile .gengage-chat-product-details-title{font-size:18px}.gengage-chat-root--mobile .gengage-chat-product-details-current-price{font-size:24px}.gengage-chat-root--mobile .gengage-chat-product-details-facts{grid-template-columns:1fr}.gengage-chat-root--mobile .gengage-chat-product-details-actions{grid-template-columns:1fr 1fr 44px;align-items:stretch;display:grid}.gengage-chat-root--mobile .gengage-chat-product-details-actions>.gengage-chat-product-details-share{width:44px;min-width:44px}.gengage-chat-root--mobile .gengage-chat-product-details-atc,.gengage-chat-root--mobile .gengage-chat-product-details-cta{width:100%;padding-inline:10px}.gengage-chat-product-grid-wrapper{flex-direction:column;gap:6px;display:flex}.gengage-chat-product-grid-head{justify-content:space-between;align-items:center;gap:8px;min-width:0;margin-bottom:2px;display:flex}.gengage-chat-product-grid-head-title{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:18px;font-weight:700;line-height:1.2;overflow:hidden}.gengage-chat-product-grid-head-actions{flex-shrink:0;align-items:center;gap:6px;max-width:52%;display:flex}.gengage-chat-product-sort-toolbar{box-shadow:none;background:0 0;border:none;border-radius:0;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0;padding:0;display:flex}.gengage-chat-product-sort-toolbar--inline{flex-wrap:nowrap;justify-content:flex-end}.gengage-chat-product-sort-dropdown{z-index:5;flex:0 auto;width:auto;min-width:0;max-width:200px;position:relative}.gengage-chat-product-sort-toolbar:not(.gengage-chat-product-sort-toolbar--inline) .gengage-chat-product-sort-dropdown{flex:auto;max-width:min(200px,100%)}.gengage-chat-product-sort-dropdown--open{z-index:25}.gengage-chat-product-sort-trigger{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:100%;min-height:32px;color:var(--text-primary);cursor:pointer;text-align:left;align-items:center;gap:6px;padding:5px 8px;font-size:12px;font-weight:600;line-height:1.2;transition:border-color .15s,box-shadow .15s,background .15s;display:flex}.gengage-chat-product-sort-trigger:hover{border-color:color-mix(in srgb, var(--client-primary) 22%, var(--border-default));background:var(--surface-card-soft)}.gengage-chat-product-sort-trigger:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-product-sort-dropdown--open .gengage-chat-product-sort-trigger{border-color:color-mix(in srgb, var(--client-primary) 32%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-product-sort-trigger-icon{color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-product-sort-dropdown[data-sort-icon=related] .gengage-chat-product-sort-trigger-icon{color:var(--client-primary)}.gengage-chat-product-sort-trigger-icon svg{display:block}.gengage-chat-product-sort-trigger-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.gengage-chat-product-sort-trigger-chevron{color:var(--text-muted);flex-shrink:0;transition:transform .2s;display:flex}.gengage-chat-product-sort-dropdown--open .gengage-chat-product-sort-trigger-chevron{transform:rotate(180deg)}.gengage-chat-product-sort-menu{width:max-content;min-width:100%;max-width:min(260px,100vw - 48px);margin:0;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:auto}.gengage-chat-product-sort-option{border-radius:calc(var(--radius-control) - 4px);width:100%;color:var(--text-primary);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:500;line-height:1.25;transition:background .12s;display:flex}.gengage-chat-product-sort-option:hover{background:var(--surface-card-muted)}.gengage-chat-product-sort-option--active{color:var(--client-primary);background:var(--client-primary-subtle);font-weight:600}.gengage-chat-product-sort-option-icon{color:var(--text-secondary);flex-shrink:0;display:flex}.gengage-chat-product-sort-option--active .gengage-chat-product-sort-option-icon,.gengage-chat-product-sort-option--active[data-sort-key=related] .gengage-chat-product-sort-option-icon{color:var(--client-primary)}.gengage-chat-product-sort-option-icon svg{display:block}.gengage-chat-product-sort-option-label{flex:auto;min-width:0}.gengage-chat-product-sort-option-check{width:22px;color:var(--client-primary);flex-shrink:0;justify-content:flex-end;display:flex}.gengage-chat-product-sort-option-check--hidden{visibility:hidden}.gengage-chat-product-sort-separator{background:var(--border-default);width:1px;margin:2px}.gengage-chat-comparison-toggle-btn{border:1px solid var(--border-default);border-radius:var(--radius-control,12px);background:var(--surface-card);min-height:32px;color:var(--text-primary);cursor:pointer;white-space:nowrap;flex:none;align-items:center;gap:5px;padding:5px 8px;font-size:12px;font-weight:700;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.gengage-chat-comparison-toggle-icon{color:var(--text-secondary);flex-shrink:0;display:flex}.gengage-chat-comparison-toggle-icon svg{display:block}.gengage-chat-comparison-toggle-btn:hover{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, white);color:var(--client-primary)}.gengage-chat-comparison-toggle-btn--active{border-color:color-mix(in srgb, var(--client-primary) 26%, white);color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-comparison-toggle-btn--active .gengage-chat-comparison-toggle-icon{color:var(--client-primary)}.gengage-chat-comparison-toggle-btn--active:hover{background:var(--client-primary-hover);color:var(--client-on-primary);border-color:var(--client-primary-hover)}.gengage-chat-comparison-toggle-btn--active:hover .gengage-chat-comparison-toggle-icon{color:var(--client-on-primary)}.gengage-chat-comparison-select-wrapper{cursor:pointer;border-radius:var(--radius-control);transition:box-shadow .2s,transform .2s;position:relative}.gengage-chat-comparison-select-wrapper:hover{box-shadow:0 0 0 2px var(--client-focus-ring)}.gengage-chat-comparison-select-wrapper--selected,.gengage-chat-comparison-select-wrapper--selected:hover{box-shadow:none}@media (prefers-reduced-motion:reduce){.gengage-chat-comparison-select-wrapper{transition:none}}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card{pointer-events:none;transition:opacity .2s,transform .2s,filter .2s}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-img-actions,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-discount-badge,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-buy-footer,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-cta{opacity:0}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-body{opacity:.82}.gengage-chat-comparison-select-wrapper:hover>.gengage-chat-product-card,.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card{opacity:1;transform:translateY(-1px)}.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--client-primary) 26%, white), var(--shadow-1);filter:saturate(1.02);border-color:#0000;outline:none}.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card .gengage-chat-product-card-body{opacity:1}.gengage-chat-comparison-card-hint{display:none}.gengage-chat-comparison-checkbox{z-index:4;cursor:pointer;pointer-events:auto;border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-card) 94%, white);min-height:40px;color:var(--text-primary);box-shadow:var(--shadow-2);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 14px;display:inline-flex;position:absolute;bottom:16px;left:16px;right:16px}.gengage-chat-comparison-checkbox[data-selected=true]{background:color-mix(in srgb, var(--client-primary) 10%, white);border-color:color-mix(in srgb, var(--client-primary) 22%, var(--border-default));color:var(--client-primary)}.gengage-chat-comparison-checkbox-icon{background:var(--surface-card-soft);color:currentColor;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.gengage-chat-comparison-checkbox[data-selected=true] .gengage-chat-comparison-checkbox-icon{background:var(--client-primary);color:var(--client-on-primary)}.gengage-chat-comparison-checkbox-dot{background:color-mix(in srgb, currentColor 75%, white);border-radius:999px;width:8px;height:8px}.gengage-chat-comparison-checkbox-label{font-size:12px;font-weight:700;line-height:1.2}.gengage-chat-comparison-toggle-btn--hidden{opacity:0;pointer-events:none}@keyframes gengage-comparison-fade-in{0%{opacity:0}to{opacity:1}}.gengage-chat-comparison-toggle-btn--reveal{animation:.5s forwards gengage-comparison-fade-in}@media (prefers-reduced-motion:reduce){.gengage-chat-comparison-toggle-btn--reveal{opacity:1;animation:none}}.gengage-chat-comparison-floating-btn{border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-card) 92%, white);width:min(100%,520px);color:var(--text-primary);z-index:5;box-shadow:var(--shadow-2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:18px;justify-content:space-between;align-items:center;gap:14px;margin:16px auto 0;padding:12px 14px;display:flex;position:sticky;bottom:12px}.gengage-chat-comparison-dock-slot{display:none}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot:not(:empty){z-index:30;padding:0 10px max(6px, env(safe-area-inset-bottom,0px));box-sizing:border-box;pointer-events:none;max-width:100%;display:block;position:absolute;bottom:0;left:0;right:0}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot>*{pointer-events:auto}.gengage-chat-comparison-floating-summary{flex:auto;align-items:center;gap:12px;min-width:0;display:flex}.gengage-chat-comparison-floating-count{background:var(--client-primary-subtle);min-width:32px;height:32px;color:var(--client-primary);border-radius:999px;justify-content:center;align-items:center;padding:0 10px;font-size:13px;font-weight:800;display:inline-flex}.gengage-chat-comparison-floating-copy{min-width:0}.gengage-chat-comparison-floating-title{color:var(--text-primary);font-size:14px;font-weight:700;line-height:1.2}.gengage-chat-comparison-floating-warning{color:var(--error);margin-top:4px;font-size:12px;line-height:1.35}.gengage-chat-comparison-floating-subtitle{color:var(--text-secondary);margin-top:2px;font-size:12px;line-height:1.35}.gengage-chat-comparison-floating-action{flex:none;min-width:132px}.gengage-chat-comparison-floating-close{border-radius:14px;flex:none;width:40px;height:40px;padding:0}.gengage-chat-comparison-floating-action--disabled{opacity:.6}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-btn{box-sizing:border-box;width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-3);border-radius:14px;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:10px;margin:0;padding:10px;position:relative;bottom:auto}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-summary{align-items:center;gap:8px;min-height:26px;padding-right:34px;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-count{flex-shrink:0;justify-content:center;align-items:center;min-width:26px;height:26px;padding:0 7px;font-size:12px;font-weight:800;line-height:1;display:inline-flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-copy{flex-direction:column;justify-content:center;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-title{margin:0;font-size:13px;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-warning{margin-top:2px;font-size:11px}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-action{box-sizing:border-box;justify-content:center;align-items:center;width:100%;min-width:0;max-width:100%;min-height:42px;padding:0 12px;font-size:13px;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-close{box-sizing:border-box;align-self:unset;z-index:10;touch-action:manipulation;border-radius:8px;flex:none;width:26px;min-width:26px;max-width:26px;height:26px;min-height:26px;max-height:26px;padding:0;line-height:0;position:absolute;top:9px;right:9px}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-close svg{width:11px;height:11px;display:block}.gengage-chat-panel-topbar{box-sizing:border-box;height:var(--_gengage-chat-header-height);background:var(--surface-card);z-index:3;border-bottom:none;flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:12px;padding:14px 16px;display:flex;position:sticky;top:0}.gengage-chat-panel-topbar-title-wrap{flex:1 1 0;align-items:center;min-width:0;display:flex}.gengage-chat-panel-topbar-back,.gengage-chat-panel-topbar-forward{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:42px;min-width:42px;height:42px;min-height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:0;transition:background .15s,border-color .15s,opacity .15s;display:flex}.gengage-chat-panel-topbar-back[hidden],.gengage-chat-panel-topbar-forward[hidden]{display:none}.gengage-chat-panel-topbar-back:hover:not(:disabled),.gengage-chat-panel-topbar-forward:hover:not(:disabled){background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default))}.gengage-chat-panel-topbar-back:disabled,.gengage-chat-panel-topbar-forward:disabled{opacity:.3;cursor:default}.gengage-chat-panel-topbar-title{width:100%;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;text-align:left;letter-spacing:-.01em;font-size:17px;font-weight:700;line-height:1.2;display:block;overflow:hidden}.gengage-chat-panel-topbar-actions{flex:none;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.gengage-chat-panel-topbar-actions:empty{display:none}.gengage-chat-panel-topbar-toolbar-host{justify-content:flex-end;align-items:center;width:100%;display:flex}.gengage-chat-panel-topbar-toolbar-host .gengage-chat-product-sort-toolbar{flex-wrap:nowrap;justify-content:flex-end;gap:8px}.gengage-chat-panel-topbar-close{display:none}@keyframes gengage-typewriter-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-typewriter-block{animation:.15s both gengage-typewriter-fade-in;display:block}@media (prefers-reduced-motion:reduce){.gengage-chat-typewriter-block{animation:none}}.gengage-product-mention{color:var(--client-primary);cursor:pointer;border-bottom:1px dashed var(--client-primary);font-weight:500;text-decoration:none;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:1.5s ease-in-out infinite gengage-skeleton-pulse}@media (prefers-reduced-motion:reduce){.gengage-chat-panel-skeleton-block{animation:none}}.gengage-chat-input-chips{scrollbar-width:none;-ms-overflow-style:none;flex-wrap:nowrap;gap:6px;padding:4px 12px 2px;display:flex;overflow-x:auto}.gengage-chat-input-chips::-webkit-scrollbar{display:none}.gengage-chat-input-chip{border-radius:var(--radius-pill);border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;white-space:nowrap;align-items:center;padding:8px 12px;font-family:inherit;font-size:12px;font-weight:700;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.gengage-chat-input-chip:hover{background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));color:var(--client-primary)}.gengage-chat-icon{flex-shrink:0;width:14px;height:14px}.gengage-chat-input-chip-icon,.gengage-chat-pill-icon{align-items:center;margin-right:4px;display:inline-flex}.gengage-chat-product-card-img-wrapper,.gengage-chat-product-details-img-wrap{position:relative;overflow:hidden}.gengage-chat-product-card-discount-badge{border-radius:var(--radius-pill);background:var(--_gengage-discount-color);color:var(--text-inverse);z-index:1;padding:3px 8px;font-size:11px;font-weight:700;line-height:1.3;position:absolute;top:8px;left:8px}.gengage-chat-product-card-stock{border-radius:var(--radius-pill);width:fit-content;margin-top:2px;padding:2px 6px;font-size:11px;font-weight:600}.gengage-chat-product-card-stock.is-in-stock{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-product-card-stock.is-out-of-stock{background:color-mix(in srgb, var(--error) 10%, white);color:var(--error)}.gengage-chat-find-similar-pill{border:1px solid var(--border-subtle);border-radius:var(--radius-control);background:color-mix(in srgb, var(--surface-elevated) 96%, transparent);width:28px;height:28px;color:var(--text-primary);box-shadow:var(--shadow-1);cursor:pointer;z-index:2;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:11px;font-weight:500;transition:opacity .2s,box-shadow .15s;display:inline-flex;position:relative}.gengage-chat-find-similar-pill:hover{box-shadow:var(--shadow-2);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default))}@media (hover:hover) and (pointer:fine){.gengage-chat-find-similar-pill:after{content:attr(data-tooltip);background:color-mix(in srgb, var(--surface-shell) 98%, black);border:1px solid color-mix(in srgb, var(--surface-shell) 60%, white);box-shadow:var(--shadow-2);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;z-index:12;border-radius:10px;padding:6px 10px;font-size:11px;font-weight:600;line-height:1.2;transition:opacity .14s;position:absolute;top:50%;right:calc(100% + 8px);transform:translateY(-50%)}.gengage-chat-find-similar-pill:hover:after,.gengage-chat-find-similar-pill:focus-visible:after{opacity:1}}.gengage-chat-find-similar-pill-icon{justify-content:center;align-items:center;display:flex}.gengage-chat-find-similar-pill-icon svg{display:block}.gengage-chat-find-similar-pill-text{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gengage-chat-product-card-img-wrapper .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{transition:opacity .2s}@media (hover:hover) and (pointer:fine){.gengage-chat-product-card-img-wrapper:not(:hover) .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media:not(:hover) .gengage-chat-product-card-img-actions{opacity:0;pointer-events:none}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media:hover .gengage-chat-product-card-img-actions{opacity:1;pointer-events:auto}}@media (hover:none),(pointer:coarse){.gengage-chat-product-card-img-wrapper .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{opacity:1;pointer-events:auto}}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--surface-shell) 88%, transparent);width:auto;height:auto;color:var(--text-inverse);box-shadow:none;opacity:0;pointer-events:none;padding:4px 10px;position:absolute;top:40px;right:8px}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill-icon{display:none}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill-text{clip:auto;white-space:nowrap;width:auto;height:auto;margin:0;position:static;overflow:visible}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-find-similar-pill,.gengage-chat-ai-toppick-media: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{background:color-mix(in srgb, var(--surface-elevated) 96%, transparent);border:1px solid var(--border-subtle);border-radius:var(--radius-control);cursor:pointer;width:28px;height:28px;color:var(--text-secondary);box-shadow:var(--shadow-1);z-index:3;justify-content:center;align-items:center;padding:0;transition:color .2s,box-shadow .15s;display:flex;position:absolute;top:8px;right:8px}.gengage-chat-favorite-btn:hover{box-shadow:var(--shadow-2);color:var(--error);border-color:color-mix(in srgb, var(--error) 20%, var(--border-default))}.gengage-chat-favorite-btn--active{color:var(--error)}.gengage-chat-product-details-promos{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.gengage-chat-product-details-promo-badge{border-radius:var(--radius-pill);background:var(--gengage-chat-promo-bg,color-mix(in srgb, var(--success) 12%, white));color:var(--gengage-chat-promo-text,color-mix(in srgb, var(--success) 82%, var(--text-primary)));white-space:nowrap;box-sizing:border-box;min-height:20px;padding:2px 6px;font-size:10px;font-weight:500;display:inline-block}.gengage-chat-thumbnails-column{pointer-events:none;display:none!important}.gengage-chat-thumbnail-btn{border:2px solid var(--border-default);border-radius:calc(var(--radius-control) - 4px);background:var(--surface-card);cursor:pointer;justify-content:center;align-items:center;width:40px;height:40px;padding:0;transition:border-color .15s;display:flex;overflow:hidden}.gengage-chat-thumbnail-btn:hover{border-color:var(--client-primary)}.gengage-chat-thumbnail-img{object-fit:cover;width:100%;height:100%}.gengage-chat-panel-float{box-sizing:border-box;pointer-events:none;z-index:10;flex-shrink:0;align-self:stretch;width:100%;height:0;margin-top:auto;position:sticky;bottom:0;overflow:visible}.gengage-chat-choice-prompter{pointer-events:none;background:var(--surface-card);border:1px solid var(--border-default);width:auto;max-width:none;box-shadow:var(--shadow-2);z-index:5;opacity:0;border-radius:16px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;margin-left:0;margin-right:0;padding:12px 14px;transition:opacity .2s,transform .2s;display:grid;position:absolute;bottom:12px;left:16px;right:16px;transform:translateY(12px)}.gengage-chat-panel--scrolled .gengage-chat-choice-prompter{pointer-events:auto;opacity:1;transform:translateY(0)}.gengage-chat-choice-prompter-heading{color:var(--text-primary);margin-bottom:2px;font-size:12px;font-weight:700}.gengage-chat-choice-prompter-suggestion{color:var(--text-secondary);margin-bottom:0;font-size:12px;line-height:1.35}.gengage-chat-choice-prompter-copy{min-width:0}.gengage-chat-choice-prompter-cta{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-control);background:var(--ds-button-primary-bg);width:auto;min-width:180px;min-height:40px;color:var(--ds-button-primary-fg);cursor:pointer;text-align:center;padding:0 18px;font-family:inherit;font-size:13px;font-weight:700;transition:background .15s;display:inline-flex}.gengage-chat-choice-prompter-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-choice-prompter-dismiss{border:1px solid var(--border-default);background:var(--surface-card-soft);min-width:32px;min-height:32px;color:var(--text-muted);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex;position:absolute;top:10px;right:10px}.gengage-chat-choice-prompter-dismiss:hover{color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white);background:var(--client-primary-subtle)}@media (prefers-reduced-motion:reduce){.gengage-chat-choice-prompter{animation:none}}.gengage-chat-pros-cons{background:var(--surface-card-soft);border:1px solid var(--border-subtle);border-radius:var(--radius-control);margin:8px 0;padding:12px 14px}.gengage-chat-pros-cons-heading{color:var(--text-primary);margin:0 0 10px;font-size:14px;font-weight:600}.gengage-chat-pros-cons-list{margin:0 0 8px;padding:0;list-style:none}.gengage-chat-pros-cons-list:last-child{margin-bottom:0}.gengage-chat-pros-cons-item{color:var(--text-secondary);align-items:flex-start;gap:8px;padding:4px 0;font-size:13px;line-height:1.5;display:flex}.gengage-chat-pros-cons-icon{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;font-size:12px;font-weight:700;display:flex}.gengage-chat-pros-cons-icon--pro{color:var(--success);background:color-mix(in srgb, var(--success) 15%, white)}.gengage-chat-pros-cons-icon--con{color:var(--error);background:color-mix(in srgb, var(--error) 12%, white)}.gengage-chat-categories{flex-direction:column;gap:8px;display:flex}.gengage-chat-categories-tabs{-webkit-overflow-scrolling:touch;gap:4px;padding:4px 0;display:flex;overflow-x:auto}.gengage-chat-categories-tab{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;white-space:nowrap;padding:6px 14px;font-size:13px;transition:background .15s,color .15s,border-color .15s}.gengage-chat-categories-tab:hover{background:var(--surface-card-soft);border-color:var(--border-strong)}.gengage-chat-categories-tab--active{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default))}.gengage-chat-categories-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;display:grid}.gengage-chat-categories-filter-tags{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.gengage-chat-categories-filter-tag{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;padding:4px 10px;font-size:12px;transition:background .15s,border-color .15s,color .15s}.gengage-chat-categories-filter-tag:hover{background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));color:var(--client-primary)}.gengage-chat-product-grid-view-more{border:1px solid var(--ds-button-secondary-border);border-radius:var(--radius-control);background:var(--ds-button-secondary-bg);width:100%;color:var(--ds-button-secondary-fg);cursor:pointer;text-align:center;grid-column:1/-1;margin-top:8px;padding:10px;font-size:14px;font-weight:500;transition:background .15s;display:block}.gengage-chat-product-grid-view-more:hover{background:var(--ds-button-secondary-bg-hover)}.gengage-chat-product-grid--mobile{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px 0;display:grid;overflow-x:visible}.gengage-chat-product-grid--mobile .gengage-chat-product-card{width:100%;min-width:0;max-width:none}.gengage-chat-comparison--mobile{position:relative;overflow-x:clip}.gengage-chat-comparison--mobile .gengage-chat-comparison-table-wrapper{-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 88%,#0000);mask-image:linear-gradient(90deg,#000 88%,#0000)}.gengage-chat-comparison--mobile .gengage-chat-comparison-table{table-layout:fixed;min-width:480px}.gengage-chat-comparison--mobile .gengage-chat-comparison-table th:first-child,.gengage-chat-comparison--mobile .gengage-chat-comparison-table .gengage-chat-comparison-label{background:var(--surface-card);z-index:1;box-shadow:2px 0 4px color-mix(in srgb, var(--surface-shell) 8%, transparent);position:sticky;left:0}.gengage-chat-comparison--mobile .gengage-chat-comparison-table thead th:first-child{box-sizing:border-box;width:22ch;min-width:0;max-width:22ch;padding:8px 6px}.gengage-chat-comparison--mobile .gengage-chat-comparison-table td.gengage-chat-comparison-label{text-align:left;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;vertical-align:middle;width:22ch;min-width:0;max-width:22ch;overflow:hidden}.gengage-chat-product-details-similars-heading{color:var(--text-primary);margin:16px 0 8px;font-size:18px;font-weight:700;line-height:1.2}.gengage-chat-product-details-similars{margin-top:8px}.gengage-chat-handoff-notice{background:color-mix(in srgb, var(--warning) 10%, white);border:1px solid color-mix(in srgb, var(--warning) 28%, var(--border-default));border-radius:var(--radius-control);text-align:center;flex-direction:column;align-items:center;gap:6px;margin:8px 0;padding:16px;display:flex}.gengage-chat-handoff-notice-icon{font-size:24px}.gengage-chat-handoff-notice-heading{color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));margin:0;font-size:14px;font-weight:600}.gengage-chat-handoff-notice-summary{color:color-mix(in srgb, var(--warning) 84%, var(--text-primary));margin:0;font-size:13px;line-height:1.5}.gengage-chat-product-details-share{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:36px;height:36px;color:var(--text-muted);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;transition:color .12s,border-color .12s,background-color .12s;display:inline-flex;position:relative}.gengage-chat-product-details-share:hover{color:var(--client-primary);border-color:var(--client-primary);background:var(--client-primary-subtle)}.gengage-chat-product-details-share:before{content:attr(aria-label);border-radius:calc(var(--radius-control) - 4px);background:var(--surface-shell);color:var(--text-inverse);white-space:nowrap;pointer-events:none;opacity:0;z-index:2;padding:4px 8px;font-size:11px;font-weight:500;transition:opacity .15s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.gengage-chat-product-details-share:hover:before{opacity:1}.gengage-chat-product-details-share--copied:after{content:\"✓\";background:var(--_gengage-success-color);color:var(--client-on-primary);border-radius:var(--radius-control);justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex;position:absolute;inset:0}.gengage-chat-product-details-share svg{width:20px;height:20px}.gengage-chat-review-link,.gengage-chat-grounding-link{color:var(--client-primary);text-decoration:underline}@media (width<=768px){.gengage-chat-product-details-promo-badge{-webkit-line-clamp:2;line-clamp:2;white-space:normal;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}.gengage-chat-launcher:focus-visible,.gengage-chat-close:focus-visible,.gengage-chat-header-btn:focus-visible,.gengage-chat-header-powered: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-toggle-btn:focus-visible,.gengage-chat-comparison-floating-btn:focus-visible,.gengage-chat-comparison-checkbox:focus-visible,.gengage-chat-product-sort-trigger:focus-visible,.gengage-chat-product-sort-option: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-attach-menu-item: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{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-root--mobile .gengage-chat-choice-prompter{grid-template-columns:1fr;width:auto;max-width:none;max-height:40vh;bottom:12px;left:12px;right:12px;overflow-y:auto}.gengage-chat-root--mobile .gengage-chat-choice-prompter-cta{width:100%}.gengage-chat-root--mobile .gengage-chat-product-sort-trigger,.gengage-chat-root--mobile .gengage-chat-product-sort-option,.gengage-chat-root--mobile .gengage-chat-comparison-toggle-btn{min-height:40px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger-label,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger-chevron,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-comparison-toggle-label{display:none}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-dropdown{flex:none;width:auto;max-width:none}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger{justify-content:center;gap:0;width:auto;min-width:44px;padding:0 10px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-comparison-toggle-btn{justify-content:center;gap:0;width:44px;min-width:44px;padding:0}.gengage-chat-root--mobile .gengage-chat-input-chip{min-height:40px;padding:8px 12px}.gengage-chat-root--mobile .gengage-chat-choice-prompter-dismiss{width:32px;height:32px}.gengage-chat-root--mobile .gengage-chat-panel-divider-toggle{min-height:44px}.gengage-chat-root--mobile .gengage-chat-product-card-cta,.gengage-chat-root--mobile .gengage-chat-choice-prompter-cta,.gengage-chat-root--mobile .gengage-chat-product-grid-view-more{justify-content:center;align-items:center;min-height:44px;display:flex}.gengage-chat-root--mobile .gengage-chat-panel-topbar-back,.gengage-chat-root--mobile .gengage-chat-panel-topbar-forward,.gengage-chat-root--mobile .gengage-chat-favorite-btn,.gengage-chat-root--mobile .gengage-chat-product-details-share{width:44px;min-width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-panel-topbar-close{display:none}.gengage-skeleton{gap:12px;padding:12px;display:flex}.gengage-skeleton--message{flex-direction:column;gap:8px;padding:16px}.gengage-skeleton-card{flex-direction:column;flex:1;gap:8px;display:flex}.gengage-skeleton-img{border-radius:var(--radius-control);height:120px}.gengage-skeleton-text{border-radius:4px;height:14px}.gengage-skeleton-price{border-radius:4px;width:60%;height:14px}.gengage-skeleton-line{border-radius:4px;height:12px}@media (prefers-reduced-motion:no-preference){.gengage-skeleton-card,.gengage-skeleton-line,.gengage-skeleton-img,.gengage-skeleton-text,.gengage-skeleton-price{background:linear-gradient(90deg, var(--ds-neutral-100) 25%, var(--ds-neutral-200) 50%, var(--ds-neutral-100) 75%);background-size:200% 100%;animation:1.5s infinite gengage-shimmer}@keyframes gengage-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}}@media (prefers-reduced-motion:reduce){.gengage-skeleton-card,.gengage-skeleton-line,.gengage-skeleton-img,.gengage-skeleton-text,.gengage-skeleton-price{background:var(--ds-neutral-100)}}.gengage-chat-panel--has-scroll:after{content:\"\";background:linear-gradient(transparent, var(--surface-card-soft));pointer-events:none;height:40px;display:block;position:sticky;bottom:0}@media (prefers-reduced-motion:no-preference){.gengage-chat-panel--transitioning{opacity:0;transition:opacity .15s}}.gengage-chat-cart-toast{background:var(--success);color:var(--text-inverse);border-radius:var(--radius-pill);box-shadow:var(--shadow-3);pointer-events:none;opacity:0;z-index:10;white-space:nowrap;padding:8px 18px;font-size:13px;font-weight:600;transition:opacity .2s,transform .2s;position:absolute;bottom:72px;left:50%;transform:translate(-50%)translateY(8px)}.gengage-chat-cart-toast--visible{opacity:1;transform:translate(-50%)translateY(0)}@keyframes gengage-cart-flash{0%{transform:scale(1)}30%{transform:scale(1.25)}60%{transform:scale(.95)}to{transform:scale(1)}}.gengage-chat-header-btn--cart-flash{animation:.5s gengage-cart-flash}", Br = o({
|
|
4483
4682
|
role: u(["user", "assistant"]),
|
|
4484
4683
|
content: n(),
|
|
4485
4684
|
timestamp: t().optional()
|
|
4486
|
-
}),
|
|
4685
|
+
}), Vr = o({
|
|
4487
4686
|
sku: n(),
|
|
4488
4687
|
name: n(),
|
|
4489
4688
|
imageUrl: n().url().optional(),
|
|
@@ -4491,23 +4690,23 @@ var Mr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel
|
|
|
4491
4690
|
originalPrice: n().optional(),
|
|
4492
4691
|
url: n().url(),
|
|
4493
4692
|
ctaLabel: n().optional()
|
|
4494
|
-
}),
|
|
4693
|
+
}), Hr = o({ buttons: a(o({
|
|
4495
4694
|
label: n(),
|
|
4496
4695
|
action: o({
|
|
4497
4696
|
title: n(),
|
|
4498
4697
|
type: n(),
|
|
4499
4698
|
payload: d().optional()
|
|
4500
4699
|
})
|
|
4501
|
-
})) }),
|
|
4700
|
+
})) }), Ur = o({}), Wr = o({ label: n().optional() }), Gr = o({
|
|
4502
4701
|
sku: n(),
|
|
4503
4702
|
name: n(),
|
|
4504
4703
|
price: n(),
|
|
4505
4704
|
imageUrl: n().optional(),
|
|
4506
4705
|
rating: t().optional(),
|
|
4507
4706
|
reviewCount: t().optional()
|
|
4508
|
-
}),
|
|
4509
|
-
recommended:
|
|
4510
|
-
products: a(
|
|
4707
|
+
}), Kr = o({
|
|
4708
|
+
recommended: Gr,
|
|
4709
|
+
products: a(Gr),
|
|
4511
4710
|
attributes: a(o({
|
|
4512
4711
|
label: n(),
|
|
4513
4712
|
values: a(n())
|
|
@@ -4524,18 +4723,18 @@ var Mr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel
|
|
|
4524
4723
|
type: n(),
|
|
4525
4724
|
payload: d().optional()
|
|
4526
4725
|
})).optional()
|
|
4527
|
-
}),
|
|
4726
|
+
}), qr = o({
|
|
4528
4727
|
label: n(),
|
|
4529
4728
|
sentiment: u([
|
|
4530
4729
|
"positive",
|
|
4531
4730
|
"negative",
|
|
4532
4731
|
"neutral"
|
|
4533
4732
|
]).optional()
|
|
4534
|
-
}),
|
|
4733
|
+
}), Jr = o({ suggestions: a(o({
|
|
4535
4734
|
product: l(n(), d()),
|
|
4536
4735
|
role: n().optional(),
|
|
4537
4736
|
reason: n().optional(),
|
|
4538
|
-
labels: a(
|
|
4737
|
+
labels: a(qr).optional(),
|
|
4539
4738
|
expertQualityScore: t().optional(),
|
|
4540
4739
|
reviewHighlight: n().optional(),
|
|
4541
4740
|
action: o({
|
|
@@ -4543,7 +4742,7 @@ var Mr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel
|
|
|
4543
4742
|
type: n(),
|
|
4544
4743
|
payload: d().optional()
|
|
4545
4744
|
}).optional()
|
|
4546
|
-
})) }),
|
|
4745
|
+
})) }), Yr = o({
|
|
4547
4746
|
title: n().optional(),
|
|
4548
4747
|
text: n().optional(),
|
|
4549
4748
|
reviewCount: n().optional(),
|
|
@@ -4552,7 +4751,7 @@ var Mr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel
|
|
|
4552
4751
|
type: n(),
|
|
4553
4752
|
payload: d().optional()
|
|
4554
4753
|
})
|
|
4555
|
-
}),
|
|
4754
|
+
}), Xr = o({ entries: a(o({
|
|
4556
4755
|
name: n(),
|
|
4557
4756
|
image: n().optional(),
|
|
4558
4757
|
description: n().optional(),
|
|
@@ -4561,7 +4760,7 @@ var Mr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel
|
|
|
4561
4760
|
type: n(),
|
|
4562
4761
|
payload: d().optional()
|
|
4563
4762
|
})
|
|
4564
|
-
})) }),
|
|
4763
|
+
})) }), Zr = o({ entries: a(o({
|
|
4565
4764
|
shortName: n(),
|
|
4566
4765
|
detailedMessage: n().optional(),
|
|
4567
4766
|
whyDifferent: n().optional(),
|
|
@@ -4571,11 +4770,11 @@ var Mr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel
|
|
|
4571
4770
|
type: n(),
|
|
4572
4771
|
payload: d().optional()
|
|
4573
4772
|
})
|
|
4574
|
-
})) }),
|
|
4773
|
+
})) }), Qr = o({
|
|
4575
4774
|
title: n(),
|
|
4576
4775
|
type: n(),
|
|
4577
4776
|
payload: d().optional()
|
|
4578
|
-
}), $ = o({
|
|
4777
|
+
}), $r = o({
|
|
4579
4778
|
name: n().optional(),
|
|
4580
4779
|
value: n().optional(),
|
|
4581
4780
|
option_value: n().optional(),
|
|
@@ -4599,7 +4798,7 @@ var Mr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel
|
|
|
4599
4798
|
swatchColor: n().optional(),
|
|
4600
4799
|
in_stock: c().optional(),
|
|
4601
4800
|
inStock: c().optional()
|
|
4602
|
-
}),
|
|
4801
|
+
}), ei = o({
|
|
4603
4802
|
product: o({
|
|
4604
4803
|
sku: n().optional(),
|
|
4605
4804
|
name: n().optional(),
|
|
@@ -4609,15 +4808,21 @@ var Mr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel
|
|
|
4609
4808
|
reviewCount: t().optional(),
|
|
4610
4809
|
price: n().optional(),
|
|
4611
4810
|
originalPrice: n().optional(),
|
|
4811
|
+
discountReason: n().optional(),
|
|
4812
|
+
discount_reason: n().optional(),
|
|
4813
|
+
campaignReason: n().optional(),
|
|
4814
|
+
campaign_reason: n().optional(),
|
|
4815
|
+
originalPriceStyle: u(["strikethrough", "inline"]).optional(),
|
|
4816
|
+
price_original_style: u(["strikethrough", "inline"]).optional(),
|
|
4612
4817
|
price_discount_rate: t().optional(),
|
|
4613
4818
|
price_async: c().optional(),
|
|
4614
4819
|
inStock: c().optional(),
|
|
4615
4820
|
promotions: a(n()).optional(),
|
|
4616
|
-
variants: a($).optional(),
|
|
4617
|
-
variantOptions: a($).optional(),
|
|
4618
|
-
variant_options: a($).optional(),
|
|
4619
|
-
productVariants: a($).optional(),
|
|
4620
|
-
product_variants: a($).optional(),
|
|
4821
|
+
variants: a($r).optional(),
|
|
4822
|
+
variantOptions: a($r).optional(),
|
|
4823
|
+
variant_options: a($r).optional(),
|
|
4824
|
+
productVariants: a($r).optional(),
|
|
4825
|
+
product_variants: a($r).optional(),
|
|
4621
4826
|
url: n().optional(),
|
|
4622
4827
|
cartCode: n().optional(),
|
|
4623
4828
|
description: n().optional(),
|
|
@@ -4640,110 +4845,110 @@ var Mr = ":where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel
|
|
|
4640
4845
|
value: n()
|
|
4641
4846
|
}))]).optional()
|
|
4642
4847
|
}).optional(),
|
|
4643
|
-
action:
|
|
4644
|
-
}),
|
|
4848
|
+
action: Qr.optional()
|
|
4849
|
+
}), ti = o({ endOfList: c().optional() }), ni = o({ reviews: a(o({
|
|
4645
4850
|
review_class: n().optional(),
|
|
4646
4851
|
review_text: n().optional(),
|
|
4647
4852
|
review_rating: i([n(), t()]).optional(),
|
|
4648
4853
|
review_tag: n().optional()
|
|
4649
|
-
})).optional() }),
|
|
4854
|
+
})).optional() }), ri = o({
|
|
4650
4855
|
productName: n().optional(),
|
|
4651
4856
|
pros: a(n()).optional(),
|
|
4652
4857
|
cons: a(n()).optional()
|
|
4653
|
-
}),
|
|
4858
|
+
}), ii = o({
|
|
4654
4859
|
groups: a(o({
|
|
4655
4860
|
groupName: n(),
|
|
4656
4861
|
products: a(l(n(), d())).optional()
|
|
4657
4862
|
})).optional(),
|
|
4658
4863
|
filterTags: a(o({
|
|
4659
4864
|
title: n(),
|
|
4660
|
-
action:
|
|
4865
|
+
action: Qr.optional()
|
|
4661
4866
|
})).optional()
|
|
4662
|
-
}),
|
|
4867
|
+
}), ai = o({
|
|
4663
4868
|
summary: n().optional(),
|
|
4664
4869
|
products_discussed: a(n()).optional(),
|
|
4665
4870
|
user_sentiment: n().optional()
|
|
4666
|
-
}),
|
|
4871
|
+
}), oi = { components: {
|
|
4667
4872
|
MessageBubble: {
|
|
4668
|
-
schema:
|
|
4873
|
+
schema: Br,
|
|
4669
4874
|
description: "A single chat message bubble for user or assistant turns."
|
|
4670
4875
|
},
|
|
4671
4876
|
ProductCard: {
|
|
4672
|
-
schema:
|
|
4877
|
+
schema: Vr,
|
|
4673
4878
|
description: "A product card rendered inline in the chat stream."
|
|
4674
4879
|
},
|
|
4675
4880
|
ActionButtons: {
|
|
4676
|
-
schema:
|
|
4881
|
+
schema: Hr,
|
|
4677
4882
|
description: "A horizontal row of quick-reply action buttons."
|
|
4678
4883
|
},
|
|
4679
4884
|
TypingIndicator: {
|
|
4680
|
-
schema:
|
|
4885
|
+
schema: Ur,
|
|
4681
4886
|
description: "An animated indicator shown while the assistant is typing."
|
|
4682
4887
|
},
|
|
4683
4888
|
Divider: {
|
|
4684
|
-
schema:
|
|
4889
|
+
schema: Wr,
|
|
4685
4890
|
description: "A horizontal rule with an optional label."
|
|
4686
4891
|
},
|
|
4687
4892
|
ComparisonTable: {
|
|
4688
|
-
schema:
|
|
4893
|
+
schema: Kr,
|
|
4689
4894
|
description: "A product comparison table with recommended pick, attribute rows, and highlights."
|
|
4690
4895
|
},
|
|
4691
4896
|
AITopPicks: {
|
|
4692
|
-
schema:
|
|
4897
|
+
schema: Jr,
|
|
4693
4898
|
description: "Rich AI-curated product suggestion cards with roles, sentiment labels, scores, and review quotes."
|
|
4694
4899
|
},
|
|
4695
4900
|
GroundingReviewCard: {
|
|
4696
|
-
schema:
|
|
4901
|
+
schema: Yr,
|
|
4697
4902
|
description: "A card showing review grounding data with review count and CTA."
|
|
4698
4903
|
},
|
|
4699
4904
|
AIGroupingCards: {
|
|
4700
|
-
schema:
|
|
4905
|
+
schema: Xr,
|
|
4701
4906
|
description: "Category grouping cards with images and labels for product discovery."
|
|
4702
4907
|
},
|
|
4703
4908
|
AISuggestedSearchCards: {
|
|
4704
|
-
schema:
|
|
4909
|
+
schema: Zr,
|
|
4705
4910
|
description: "Suggested search cards with images, descriptions, and differentiation."
|
|
4706
4911
|
},
|
|
4707
4912
|
ProductDetailsPanel: {
|
|
4708
|
-
schema:
|
|
4913
|
+
schema: ei,
|
|
4709
4914
|
description: "Full product detail view with images, specs, variants, and purchase actions."
|
|
4710
4915
|
},
|
|
4711
4916
|
ProductGrid: {
|
|
4712
|
-
schema:
|
|
4917
|
+
schema: ti,
|
|
4713
4918
|
description: "A scrollable grid of ProductCard children with optional \"more\" pagination."
|
|
4714
4919
|
},
|
|
4715
4920
|
ReviewHighlights: {
|
|
4716
|
-
schema:
|
|
4921
|
+
schema: ni,
|
|
4717
4922
|
description: "A list of highlighted customer reviews with sentiment and ratings."
|
|
4718
4923
|
},
|
|
4719
4924
|
ProsAndCons: {
|
|
4720
|
-
schema:
|
|
4925
|
+
schema: ri,
|
|
4721
4926
|
description: "A pros and cons list for a product."
|
|
4722
4927
|
},
|
|
4723
4928
|
CategoriesContainer: {
|
|
4724
|
-
schema:
|
|
4929
|
+
schema: ii,
|
|
4725
4930
|
description: "Tabbed product groups with optional filter tag buttons."
|
|
4726
4931
|
},
|
|
4727
4932
|
HandoffNotice: {
|
|
4728
|
-
schema:
|
|
4933
|
+
schema: ai,
|
|
4729
4934
|
description: "A notice shown when the conversation is escalated to a human agent."
|
|
4730
4935
|
}
|
|
4731
4936
|
} };
|
|
4732
4937
|
//#endregion
|
|
4733
4938
|
//#region src/chat/index.ts
|
|
4734
|
-
function
|
|
4939
|
+
function si(e) {
|
|
4735
4940
|
return e.length > 120 ? !1 : /^[a-zA-Z0-9#(),.\s%/\-]+$/.test(e);
|
|
4736
4941
|
}
|
|
4737
|
-
function
|
|
4942
|
+
function ci(e) {
|
|
4738
4943
|
return typeof e == "object" && !!e && typeof e.type == "string";
|
|
4739
4944
|
}
|
|
4740
|
-
var
|
|
4945
|
+
var li = class e extends V {
|
|
4741
4946
|
constructor(...e) {
|
|
4742
4947
|
super(...e), this._shadow = null, this._rootEl = null, this._backdropEl = null, this._launcher = null, this._drawer = null, this._bridge = null, this._drawerVisible = !1, this._pillLauncherApply = null, this._hostScrollLockActive = !1, this._preventHostDocumentTouchMove = (e) => {
|
|
4743
4948
|
this._hostScrollLockActive && (this._hostScrollEventShouldReachChatScroller(e) || e.preventDefault());
|
|
4744
4949
|
}, this._preventHostDocumentWheel = (e) => {
|
|
4745
4950
|
this._hostScrollLockActive && (this._hostScrollEventShouldReachChatScroller(e) || e.preventDefault());
|
|
4746
|
-
}, 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._comparisonSelectionWarning = null, this._comparisonRefreshRafId = null, this._viewedProductSkus = /* @__PURE__ */ new Set(), this._thumbnailEntries = [], this._choicePrompterEl = null, this._openState = "full", this._mobileBreakpoint = 768, this._isMobileViewport = !1, this._pdpLaunched = !1, this._entryContextPrimed = !1, this._pdpPrimingInFlight = !1, this._queuedUserMessages = [], this._productContextUnavailableSku = null, this._i18n =
|
|
4951
|
+
}, 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._comparisonSelectionWarning = null, this._comparisonRefreshRafId = null, this._viewedProductSkus = /* @__PURE__ */ new Set(), this._thumbnailEntries = [], this._choicePrompterEl = null, this._openState = "full", this._mobileBreakpoint = 768, this._isMobileViewport = !1, this._pdpLaunched = !1, this._entryContextPrimed = !1, this._pdpPrimingInFlight = !1, this._queuedUserMessages = [], this._productContextUnavailableSku = null, this._i18n = Ae, 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._localPanelHistory = [], this._currentPanelSource = null, this._session = null, this._presentation = new xr(), this._eventCallbacks = /* @__PURE__ */ new Map(), this._lastSentAction = null, this._consecutiveErrorCount = 0, this._lastErrorMessage = "";
|
|
4747
4952
|
}
|
|
4748
4953
|
static {
|
|
4749
4954
|
this._MAX_COMPARISON_SELECTION = 5;
|
|
@@ -4753,16 +4958,17 @@ var ti = class e extends B {
|
|
|
4753
4958
|
}
|
|
4754
4959
|
async onInit(e) {
|
|
4755
4960
|
if (this._i18n = this._resolveI18n(e), this._chatCreatedAt = (/* @__PURE__ */ new Date()).toISOString(), e.pillLauncher) {
|
|
4756
|
-
let t =
|
|
4961
|
+
let t = Cr(e.pillLauncher);
|
|
4757
4962
|
e.launcherImageUrl = t.launcherImageUrl, e.headerAvatarUrl === void 0 && (e.headerAvatarUrl = e.pillLauncher.avatarUrl), this._pillLauncherApply = () => t.apply(this._shadow ?? void 0);
|
|
4758
4963
|
}
|
|
4759
4964
|
this._shadow = this.root.attachShadow({ mode: "open" });
|
|
4760
4965
|
let t = document.createElement("style");
|
|
4761
|
-
t.textContent =
|
|
4966
|
+
t.textContent = zr, this._shadow.appendChild(t);
|
|
4762
4967
|
let n = this.root, r = (e, t) => {
|
|
4763
|
-
t &&
|
|
4968
|
+
t && si(t) && n.style.setProperty(e, t);
|
|
4764
4969
|
};
|
|
4765
4970
|
if (r("--gengage-chat-header-bg", e.headerBg), r("--gengage-chat-header-foreground", e.headerForeground), e.theme) for (let [t, n] of Object.entries(e.theme)) t.startsWith("--") && typeof n == "string" && r(t, n);
|
|
4971
|
+
this._applyDiscountedPriceColorVar(e.productPriceUi?.discountedPriceColor);
|
|
4766
4972
|
let i = document.createElement("div");
|
|
4767
4973
|
i.className = "gengage-chat-root", this._rootEl = i, this._shadow.appendChild(i);
|
|
4768
4974
|
let a = e.variant ?? "floating";
|
|
@@ -4777,11 +4983,11 @@ var ti = class e extends B {
|
|
|
4777
4983
|
onClick: () => this.open(),
|
|
4778
4984
|
ariaLabel: this._i18n.openButton
|
|
4779
4985
|
};
|
|
4780
|
-
e.launcherImageUrl === void 0 ? e.launcherSvg !== void 0 && (t.svgMarkup = e.launcherSvg) : t.imageUrl = e.launcherImageUrl, e.hideMobileLauncher !== void 0 && (t.hideMobile = e.hideMobileLauncher), e.mobileBreakpoint !== void 0 && (t.mobileBreakpoint = e.mobileBreakpoint), e.launcherTooltip !== void 0 && (t.tooltip = e.launcherTooltip), this._launcher =
|
|
4986
|
+
e.launcherImageUrl === void 0 ? e.launcherSvg !== void 0 && (t.svgMarkup = e.launcherSvg) : t.imageUrl = e.launcherImageUrl, e.hideMobileLauncher !== void 0 && (t.hideMobile = e.hideMobileLauncher), e.mobileBreakpoint !== void 0 && (t.mobileBreakpoint = e.mobileBreakpoint), e.launcherTooltip !== void 0 && (t.tooltip = e.launcherTooltip), this._launcher = Ye(t), i.appendChild(this._launcher.container);
|
|
4781
4987
|
}
|
|
4782
4988
|
a === "overlay" && i.classList.add("gengage-chat--overlay");
|
|
4783
4989
|
let o = document.createElement("div");
|
|
4784
|
-
i.appendChild(o), this._drawer = new
|
|
4990
|
+
i.appendChild(o), this._drawer = new qe(o, {
|
|
4785
4991
|
i18n: this._i18n,
|
|
4786
4992
|
onSend: (e, t) => this._sendMessage(e, t),
|
|
4787
4993
|
onClose: () => this.close(),
|
|
@@ -4812,7 +5018,7 @@ var ti = class e extends B {
|
|
|
4812
5018
|
e.headerCartUrl ? this._saveSessionAndOpenURL(e.headerCartUrl) : e.onCartClick?.();
|
|
4813
5019
|
},
|
|
4814
5020
|
onFavoritesClick: () => {
|
|
4815
|
-
if (
|
|
5021
|
+
if (P(), typeof e.onFavoritesClick == "function") {
|
|
4816
5022
|
e.onFavoritesClick();
|
|
4817
5023
|
return;
|
|
4818
5024
|
}
|
|
@@ -4842,10 +5048,10 @@ var ti = class e extends B {
|
|
|
4842
5048
|
shouldBlockSoftAutoScroll: () => this._presentation.shouldBlockStreamAutoScroll(),
|
|
4843
5049
|
onReleasePresentationFocus: () => this._releasePresentationFocus()
|
|
4844
5050
|
}
|
|
4845
|
-
}), this._extendedModeManager = new
|
|
5051
|
+
}), this._extendedModeManager = new hr({
|
|
4846
5052
|
onChange: (e) => this._panel?.notifyExtension(e),
|
|
4847
5053
|
productDetailsInPanel: (e.isDemoWebsite ?? !1) && (e.productDetailsExtended ?? !1)
|
|
4848
|
-
}), this._panel = new
|
|
5054
|
+
}), this._panel = new gr({
|
|
4849
5055
|
drawer: () => this._drawer,
|
|
4850
5056
|
shadow: () => this._shadow,
|
|
4851
5057
|
currentThreadId: () => this._currentThreadId,
|
|
@@ -4859,10 +5065,10 @@ var ti = class e extends B {
|
|
|
4859
5065
|
let c = sessionStorage.getItem("gengage_restore_session_id"), l = sessionStorage.getItem("gengage_restore_sku"), u = !!(c && l);
|
|
4860
5066
|
u && (sessionStorage.removeItem("gengage_restore_session_id"), sessionStorage.removeItem("gengage_restore_sku"));
|
|
4861
5067
|
try {
|
|
4862
|
-
let e = new
|
|
4863
|
-
await e.open(), this._session = new
|
|
5068
|
+
let e = new pr();
|
|
5069
|
+
await e.open(), this._session = new yr(e), await this._restoreFromIndexedDB(u);
|
|
4864
5070
|
} catch {
|
|
4865
|
-
this._session = new
|
|
5071
|
+
this._session = new yr(null);
|
|
4866
5072
|
}
|
|
4867
5073
|
this._registerPublicAPI(), e.mobileInitialState !== void 0 && (this._openState = e.mobileInitialState), this._mobileBreakpoint = e.mobileBreakpoint ?? 768, this._syncViewportState();
|
|
4868
5074
|
let d = () => this._syncViewportState();
|
|
@@ -4881,15 +5087,15 @@ var ti = class e extends B {
|
|
|
4881
5087
|
namespace: "chat",
|
|
4882
5088
|
onMessage: (e) => this._handleBridgeMessage(e)
|
|
4883
5089
|
};
|
|
4884
|
-
e.allowedOrigins !== void 0 && (f.allowedOrigins = e.allowedOrigins), this._bridge = new
|
|
5090
|
+
e.allowedOrigins !== void 0 && (f.allowedOrigins = e.allowedOrigins), this._bridge = new le(f), this._lastSku = this.config.pageContext?.sku, this._initComplete = !0;
|
|
4885
5091
|
for (let e of this._pendingActions) this._sendAction(e.action, e.options);
|
|
4886
|
-
this._pendingActions = [], this._pillLauncherApply && a === "floating" && (await this._pillLauncherApply(), this._pillLauncherApply = null), y("gengage:chat:ready", {}),
|
|
5092
|
+
this._pendingActions = [], this._pillLauncherApply && a === "floating" && (await this._pillLauncherApply(), this._pillLauncherApply = null), y("gengage:chat:ready", {}), k("chat"), e.onReady?.();
|
|
4887
5093
|
}
|
|
4888
5094
|
onUpdate(e) {
|
|
4889
5095
|
e.sku !== void 0 && e.sku !== this._lastSku && (this._lastSku = e.sku, this._resetForNewPage());
|
|
4890
5096
|
}
|
|
4891
5097
|
onShow() {
|
|
4892
|
-
this._showDrawer(), this.emit("open"), y("gengage:chat:open", { state: this._openState }),
|
|
5098
|
+
this._showDrawer(), this.emit("open"), y("gengage:chat:open", { state: this._openState }), M("chat"), this.config.onOpen?.(), this._showWelcomeIfNeeded(), this._maybePrimeEntryContextOpening(), !this._pdpLaunched && this.config.pageContext?.sku && (this._pdpLaunched = !0, this._pdpPrimingInFlight = !0, this._sendAction({
|
|
4893
5099
|
title: "",
|
|
4894
5100
|
type: "launchSingleProduct",
|
|
4895
5101
|
payload: {
|
|
@@ -4907,7 +5113,7 @@ var ti = class e extends B {
|
|
|
4907
5113
|
(this.config.variant ?? "floating") === "floating" && (this.root.style.display = ""), this._hideDrawer(), this.emit("close"), y("gengage:chat:close", {}), this.config.onClose?.();
|
|
4908
5114
|
}
|
|
4909
5115
|
onDestroy() {
|
|
4910
|
-
this._releaseHostDocumentScrollLock(), this._abortAllActiveRequests(), this._activeTypewriter?.cancel(), this._activeTypewriter = null, this._activeTtsHandle?.stop(), this._activeTtsHandle = null, this._comparisonRefreshRafId !== null && (cancelAnimationFrame(this._comparisonRefreshRafId), this._comparisonRefreshRafId = null), this._drawer?.destroy(),
|
|
5116
|
+
this._releaseHostDocumentScrollLock(), this._abortAllActiveRequests(), this._activeTypewriter?.cancel(), this._activeTypewriter = null, this._activeTtsHandle?.stop(), this._activeTtsHandle = null, this._comparisonRefreshRafId !== null && (cancelAnimationFrame(this._comparisonRefreshRafId), this._comparisonRefreshRafId = null), this._drawer?.destroy(), ke(), this._drawer = null, this._bridge?.destroy(), this._bridge = null, this._extendedModeManager = null, this._panel?.destroy(), this._panel = null, this._session?.close(), this._session = null, this._localPanelHistory = [], this._currentPanelSource = null, window.gengage && delete window.gengage.chat, this._shadow &&= (this._shadow.innerHTML = "", null), this._rootEl = null;
|
|
4911
5117
|
}
|
|
4912
5118
|
open(e) {
|
|
4913
5119
|
e?.state !== void 0 && (this._openState = e.state, this._drawerVisible && this._applyOpenStateClasses()), this.show(), e?.initialMessage !== void 0 && this._sendMessage(e.initialMessage);
|
|
@@ -4936,6 +5142,10 @@ var ti = class e extends B {
|
|
|
4936
5142
|
n.delete(t), n.size === 0 && this._eventCallbacks.delete(e);
|
|
4937
5143
|
};
|
|
4938
5144
|
}
|
|
5145
|
+
_applyDiscountedPriceColorVar(e) {
|
|
5146
|
+
let t = this.root;
|
|
5147
|
+
e === "client" ? t.style.setProperty("--gengage-discounted-price-color", "var(--client-primary)") : t.style.removeProperty("--gengage-discounted-price-color");
|
|
5148
|
+
}
|
|
4939
5149
|
_abortAllActiveRequests() {
|
|
4940
5150
|
for (let e of this._abortControllers) e.abort();
|
|
4941
5151
|
this._abortControllers.clear();
|
|
@@ -4985,7 +5195,7 @@ var ti = class e extends B {
|
|
|
4985
5195
|
if (!this._drawer || !this._presentation.shown) return;
|
|
4986
5196
|
let e = this._orderedThreadIds();
|
|
4987
5197
|
if (e.length === 0) return;
|
|
4988
|
-
let t =
|
|
5198
|
+
let t = Sr(e, this._presentation);
|
|
4989
5199
|
if (!t) return;
|
|
4990
5200
|
let n = `${t}:assistant`;
|
|
4991
5201
|
this._presentation.lastAutoAnchoredGroupId !== n && (this._presentation.userInteracting && !this._presentation.pinnedToBottom || this._drawer.scrollThreadIntoView(t, "smooth") && this._presentation.markGroupAutoAnchored(n));
|
|
@@ -4999,7 +5209,7 @@ var ti = class e extends B {
|
|
|
4999
5209
|
this.close();
|
|
5000
5210
|
break;
|
|
5001
5211
|
case "startNewChatWithLauncherAction": {
|
|
5002
|
-
let t = e.payload, n = t?.action, r =
|
|
5212
|
+
let t = e.payload, n = t?.action, r = ci(n) ? n : ci(t) ? t : null;
|
|
5003
5213
|
r && this._sendAction(r, { silent: !0 }), this.open();
|
|
5004
5214
|
break;
|
|
5005
5215
|
}
|
|
@@ -5008,7 +5218,7 @@ var ti = class e extends B {
|
|
|
5008
5218
|
if (t && typeof t == "object") {
|
|
5009
5219
|
this._bridgeContext = t;
|
|
5010
5220
|
let e = t.sku;
|
|
5011
|
-
if (e && this.update({ sku: e }),
|
|
5221
|
+
if (e && this.update({ sku: e }), ci(t.action)) {
|
|
5012
5222
|
this._pdpLaunched = !0, this.open(), this._sendAction(t.action);
|
|
5013
5223
|
break;
|
|
5014
5224
|
}
|
|
@@ -5042,7 +5252,7 @@ var ti = class e extends B {
|
|
|
5042
5252
|
break;
|
|
5043
5253
|
case "bgColorChange": {
|
|
5044
5254
|
let t = e.payload?.color;
|
|
5045
|
-
typeof t == "string" &&
|
|
5255
|
+
typeof t == "string" && si(t) && this._shadow && this._shadow.host.style.setProperty("--gengage-chat-bg", t);
|
|
5046
5256
|
break;
|
|
5047
5257
|
}
|
|
5048
5258
|
default: break;
|
|
@@ -5081,7 +5291,7 @@ var ti = class e extends B {
|
|
|
5081
5291
|
let n = this._resolveContextualOpeningMessage(e);
|
|
5082
5292
|
if (!n) return;
|
|
5083
5293
|
let r = {
|
|
5084
|
-
id:
|
|
5294
|
+
id: ce(),
|
|
5085
5295
|
role: "assistant",
|
|
5086
5296
|
content: n,
|
|
5087
5297
|
timestamp: Date.now(),
|
|
@@ -5246,7 +5456,7 @@ var ti = class e extends B {
|
|
|
5246
5456
|
typeof document > "u" || !this._hostScrollLockActive || (document.removeEventListener("touchmove", this._preventHostDocumentTouchMove, { capture: !0 }), document.removeEventListener("wheel", this._preventHostDocumentWheel, { capture: !0 }), this._hostScrollLockActive = !1);
|
|
5247
5457
|
}
|
|
5248
5458
|
_handleAttachment(e) {
|
|
5249
|
-
let t =
|
|
5459
|
+
let t = _e(e);
|
|
5250
5460
|
if (!t.ok) {
|
|
5251
5461
|
y("gengage:global:error", {
|
|
5252
5462
|
message: t.reason === "invalid_type" ? this._i18n.invalidFileType : this._i18n.fileTooLarge,
|
|
@@ -5264,7 +5474,7 @@ var ti = class e extends B {
|
|
|
5264
5474
|
});
|
|
5265
5475
|
return;
|
|
5266
5476
|
}
|
|
5267
|
-
(!this._messages.some((e) => e.role === "user") || this._drawer?.isKvkkBannerVisible()) && (
|
|
5477
|
+
(!this._messages.some((e) => e.role === "user") || this._drawer?.isKvkkBannerVisible()) && (Pr(this.config.accountId), this._drawer?.hideKvkkBanner()), A(), this._messages.some((e) => e.role === "user") || I();
|
|
5268
5478
|
let n = t === void 0 ? {
|
|
5269
5479
|
title: e,
|
|
5270
5480
|
type: "user_message",
|
|
@@ -5293,7 +5503,7 @@ var ti = class e extends B {
|
|
|
5293
5503
|
});
|
|
5294
5504
|
return;
|
|
5295
5505
|
}
|
|
5296
|
-
if (this._choicePrompterEl?.remove(), this._choicePrompterEl = null, t?.preservePanel ||
|
|
5506
|
+
if (this._choicePrompterEl?.remove(), this._choicePrompterEl = null, t?.preservePanel || or(), !t?.preservePanel && this._comparisonSelectMode && e.type !== "getComparisonTable" && (this._comparisonSelectMode = !1, this._comparisonSelectedSkus = []), t?.preservePanel || (this._localPanelHistory = []), this._currentThreadId && this._lastThreadId && this._lastThreadId > this._currentThreadId) {
|
|
5297
5507
|
let e = this._currentThreadId, t = this._messages.filter((t) => t.threadId !== void 0 && t.threadId > e);
|
|
5298
5508
|
this._messages = this._messages.filter((t) => !t.threadId || t.threadId <= e);
|
|
5299
5509
|
for (let e of t) this._shadow?.querySelector(`[data-message-id="${CSS.escape(e.id)}"]`)?.remove(), this._panel.snapshots.delete(e.id), this._panel.snapshotTypes.delete(e.id);
|
|
@@ -5302,7 +5512,7 @@ var ti = class e extends B {
|
|
|
5302
5512
|
});
|
|
5303
5513
|
}
|
|
5304
5514
|
t?.preservePills || this._drawer?.setPills([]), this._drawer?.clearInputAreaChips(), this._bridge?.send("isResponding", !0);
|
|
5305
|
-
let n =
|
|
5515
|
+
let n = ce();
|
|
5306
5516
|
this._currentThreadId = n, this._lastThreadId = n, this._panel && e.type !== "launchSingleProduct" && (this._panel.lastActionType = e.type);
|
|
5307
5517
|
let r = t?.preservePanel === !0, i = e.type === "launchSingleProduct" && t?.silent === !0 && t?.isPdpPrime === !0;
|
|
5308
5518
|
if (r || (this._activeRequestThreadId = n), !t?.silent && !r && this._drawer?.setPresentationFocus(n), !t?.silent) {
|
|
@@ -5340,7 +5550,7 @@ var ti = class e extends B {
|
|
|
5340
5550
|
role: e.role === "user" ? "user" : "model",
|
|
5341
5551
|
content: e.content ?? ""
|
|
5342
5552
|
})), p = {
|
|
5343
|
-
outputLanguage:
|
|
5553
|
+
outputLanguage: Rr(this.config.locale),
|
|
5344
5554
|
parentUrl: window.location.href,
|
|
5345
5555
|
windowWidth: String(window.innerWidth),
|
|
5346
5556
|
windowHeight: String(window.innerHeight),
|
|
@@ -5350,14 +5560,14 @@ var ti = class e extends B {
|
|
|
5350
5560
|
appId: this.config.accountId,
|
|
5351
5561
|
threads: [],
|
|
5352
5562
|
createdAt: this._chatCreatedAt,
|
|
5353
|
-
kvkkApproved:
|
|
5563
|
+
kvkkApproved: Nr(this.config.accountId),
|
|
5354
5564
|
voiceEnabled: this.config.voiceEnabled ?? !1,
|
|
5355
5565
|
threadId: n,
|
|
5356
5566
|
isControlGroup: this.config.session?.abTestVariant === "control",
|
|
5357
5567
|
isMobile: this._isMobileViewport
|
|
5358
5568
|
};
|
|
5359
5569
|
this.config.session?.viewId !== void 0 && (p.viewId = this.config.session.viewId);
|
|
5360
|
-
let h =
|
|
5570
|
+
let h = ve(e, {
|
|
5361
5571
|
pageContext: this.config.pageContext,
|
|
5362
5572
|
backendContext: this._lastBackendContext,
|
|
5363
5573
|
isMobile: this._isMobileViewport
|
|
@@ -5375,13 +5585,13 @@ var ti = class e extends B {
|
|
|
5375
5585
|
}
|
|
5376
5586
|
};
|
|
5377
5587
|
this.config.session?.userId !== void 0 && (_.user_id = this.config.session.userId), this.config.session?.viewId !== void 0 && (_.view_id = this.config.session.viewId), h.payload !== void 0 && (_.payload = h.payload), this.config.pageContext?.sku !== void 0 && (_.sku = this.config.pageContext.sku), this.config.pageContext?.pageType !== void 0 && (_.page_type = this.config.pageContext.pageType);
|
|
5378
|
-
let x = crypto.randomUUID(),
|
|
5588
|
+
let x = crypto.randomUUID(), O = Date.now(), ee = 0, k = !1, A = !1, j = !1, M = !1, P = !1, F = null, I = () => {
|
|
5379
5589
|
if (this._drawer) {
|
|
5380
|
-
if (this._isMobileViewport || !
|
|
5590
|
+
if (this._isMobileViewport || !j) {
|
|
5381
5591
|
this._drawer.setPanelAiZoneState("hidden");
|
|
5382
5592
|
return;
|
|
5383
5593
|
}
|
|
5384
|
-
|
|
5594
|
+
M || (P ? this._drawer.setPanelAiZoneState("hidden") : this._drawer.setPanelAiZoneState("analyzing", { analyzingLabel: this._i18n.aiAnalysisAnalyzingLabel }));
|
|
5385
5595
|
}
|
|
5386
5596
|
};
|
|
5387
5597
|
this.track(b(this.analyticsContext(), {
|
|
@@ -5389,41 +5599,41 @@ var ti = class e extends B {
|
|
|
5389
5599
|
request_id: x,
|
|
5390
5600
|
widget: "chat"
|
|
5391
5601
|
}));
|
|
5392
|
-
let
|
|
5393
|
-
if (
|
|
5602
|
+
let L = null;
|
|
5603
|
+
if (L = xe(_, {
|
|
5394
5604
|
onTextChunk: (e, t, i) => {
|
|
5395
5605
|
if (!r && n !== this._activeRequestThreadId || (l += e, this._drawer?.removeTypingIndicator(), i?.skuToProductItem && (this._skuToProductItem = {
|
|
5396
5606
|
...this._skuToProductItem,
|
|
5397
5607
|
...i.skuToProductItem
|
|
5398
5608
|
}), i?.conversationMode && (this._conversationMode = i.conversationMode), this.track(T(this.analyticsContext(), {
|
|
5399
5609
|
request_id: x,
|
|
5400
|
-
chunk_index:
|
|
5610
|
+
chunk_index: ee++,
|
|
5401
5611
|
widget: "chat"
|
|
5402
5612
|
})), !this._drawer)) return;
|
|
5403
5613
|
let a = l;
|
|
5404
|
-
if (t &&
|
|
5614
|
+
if (t && Mr(a)) {
|
|
5405
5615
|
let e = this.config.accountId;
|
|
5406
|
-
if (!
|
|
5407
|
-
let t =
|
|
5616
|
+
if (!Nr(e)) {
|
|
5617
|
+
let t = Ir(a);
|
|
5408
5618
|
t ? this._drawer?.showKvkkBanner(t, () => {
|
|
5409
|
-
this._drawer?.hideKvkkBanner(),
|
|
5410
|
-
}) :
|
|
5619
|
+
this._drawer?.hideKvkkBanner(), Pr(e);
|
|
5620
|
+
}) : Pr(e);
|
|
5411
5621
|
}
|
|
5412
|
-
a =
|
|
5622
|
+
a = Fr(a);
|
|
5413
5623
|
}
|
|
5414
5624
|
let o = this._shadow?.querySelector(`[data-message-id="${u.id}"] .gengage-chat-bubble-text`);
|
|
5415
5625
|
if (o ? o.innerHTML = C(a) : (u.content = a, u.role === "assistant" && u.threadId && !this._threadsWithFirstBot.has(u.threadId) && (this._threadsWithFirstBot.add(u.threadId), this._drawer.markFirstBotMessage(u.id)), this._drawer.addMessage(u)), t) {
|
|
5416
|
-
u.content = a, u.status = "done",
|
|
5626
|
+
u.content = a, u.status = "done", te();
|
|
5417
5627
|
let e = this._shadow?.querySelector(`[data-message-id="${u.id}"] .gengage-chat-bubble-text`);
|
|
5418
5628
|
if (e) {
|
|
5419
5629
|
this._activeTypewriter?.cancel();
|
|
5420
5630
|
let t = i?.productMentions;
|
|
5421
|
-
this._activeTypewriter =
|
|
5631
|
+
this._activeTypewriter = Zn({
|
|
5422
5632
|
container: e,
|
|
5423
5633
|
html: C(a),
|
|
5424
5634
|
onTick: () => this._drawer?.scrollToBottomIfNeeded(),
|
|
5425
5635
|
onComplete: () => {
|
|
5426
|
-
this._activeTypewriter = null, t && t.length > 0 && e &&
|
|
5636
|
+
this._activeTypewriter = null, t && t.length > 0 && e && $n({
|
|
5427
5637
|
container: e,
|
|
5428
5638
|
mentions: t,
|
|
5429
5639
|
onProductClick: (e) => {
|
|
@@ -5441,27 +5651,27 @@ var ti = class e extends B {
|
|
|
5441
5651
|
},
|
|
5442
5652
|
onUISpec: (t, a, o, s) => {
|
|
5443
5653
|
if (!r && n !== this._activeRequestThreadId || a !== "chat") return;
|
|
5444
|
-
s && (this._clearAssistantPanelLikeStreamClearPanel(),
|
|
5654
|
+
s && (this._clearAssistantPanelLikeStreamClearPanel(), k = !1);
|
|
5445
5655
|
let c = t.elements[t.root], l = c?.type ?? "unknown", d = l === "ProductGrid" && c?.props?.similarsAppend === !0, f = this.config.productDetailsExtended !== !0 && (l === "ProductDetailsPanel" || d);
|
|
5446
|
-
f && !s && (this._clearAssistantPanelLikeStreamClearPanel(),
|
|
5656
|
+
f && !s && (this._clearAssistantPanelLikeStreamClearPanel(), k = !1);
|
|
5447
5657
|
let p = l === "ProductDetailsPanel" && o !== "panel" ? "panel" : o;
|
|
5448
5658
|
this.track(m(this.analyticsContext(), {
|
|
5449
5659
|
request_id: x,
|
|
5450
|
-
chunk_index:
|
|
5660
|
+
chunk_index: ee,
|
|
5451
5661
|
component_type: l,
|
|
5452
5662
|
widget: "chat"
|
|
5453
5663
|
}));
|
|
5454
5664
|
let h = this._buildRenderContext();
|
|
5455
5665
|
if (h.isStreaming = !0, l === "ComparisonTable") {
|
|
5456
5666
|
let e = c?.props?.products;
|
|
5457
|
-
|
|
5667
|
+
N(Array.isArray(e) ? e.length : 0);
|
|
5458
5668
|
}
|
|
5459
|
-
l === "ProductGrid" &&
|
|
5669
|
+
l === "ProductGrid" && ne(void 0, c?.children?.length ?? 0);
|
|
5460
5670
|
let g = p === "panel" && this._panel ? this._panel.toPanelSpec(t) : t;
|
|
5461
5671
|
if (p === "panel" && this._panel && !f) {
|
|
5462
|
-
let t = !
|
|
5463
|
-
|
|
5464
|
-
let n =
|
|
5672
|
+
let t = !A;
|
|
5673
|
+
A = !0;
|
|
5674
|
+
let n = vr({
|
|
5465
5675
|
componentType: l,
|
|
5466
5676
|
similarsAppend: c?.props?.similarsAppend === !0,
|
|
5467
5677
|
currentPanelType: this._panel.currentType,
|
|
@@ -5478,13 +5688,13 @@ var ti = class e extends B {
|
|
|
5478
5688
|
}, this._panel.currentType = l), this._drawer?.setDividerPreviewEnabled((this._panel.currentType ?? l) === "ProductGrid"), l === "ProductDetailsPanel" && e.type === "launchSingleProduct" && this._clearUnavailableProductContext(), u.threadId && !this._panel.threads.includes(u.threadId) && this._panel.threads.push(u.threadId);
|
|
5479
5689
|
let r = this._panel.currentType ?? l, i = c?.props?.panelTitle;
|
|
5480
5690
|
if (this._panel.updateTopBar(r, i), this._panel.updateExtendedMode(l), l === "ProductGrid" || l === "CategoriesContainer") {
|
|
5481
|
-
if (
|
|
5691
|
+
if (j = !this._isMobileViewport, F) {
|
|
5482
5692
|
let e = this._buildRenderContext();
|
|
5483
5693
|
e.isStreaming = !0;
|
|
5484
|
-
let t = this._renderUISpec(
|
|
5485
|
-
|
|
5694
|
+
let t = this._renderUISpec(F, e);
|
|
5695
|
+
M = !0, this._drawer?.setPanelAiZoneState("results", { resultEl: t }), F = null;
|
|
5486
5696
|
}
|
|
5487
|
-
} else n !== "appendSimilars" && n !== "append" && (
|
|
5697
|
+
} else n !== "appendSimilars" && n !== "append" && (j = !1, F = null, this._drawer?.setPanelAiZoneState("hidden"));
|
|
5488
5698
|
}
|
|
5489
5699
|
if (l === "ProductDetailsPanel" && p === "panel" && (!u.silent || i)) {
|
|
5490
5700
|
let e = c?.props?.product;
|
|
@@ -5503,15 +5713,15 @@ var ti = class e extends B {
|
|
|
5503
5713
|
r && r.parentNode === n ? r.after(e) : n.appendChild(e), e.scrollIntoView({
|
|
5504
5714
|
behavior: "auto",
|
|
5505
5715
|
block: "end"
|
|
5506
|
-
}), this._drawer?.refreshPresentationCollapsed(),
|
|
5716
|
+
}), this._drawer?.refreshPresentationCollapsed(), A = !0;
|
|
5507
5717
|
}
|
|
5508
5718
|
}
|
|
5509
5719
|
}
|
|
5510
5720
|
let _ = l === "AITopPicks" || l === "AIGroupingCards", v = !1, y = !1;
|
|
5511
|
-
if (f && d && (h.panelProductListHeading = this._i18n.similarProductsLabel ?? "Similar Products"), _ && !this._isMobileViewport && !u.silent) if (
|
|
5721
|
+
if (f && d && (h.panelProductListHeading = this._i18n.similarProductsLabel ?? "Similar Products"), _ && !this._isMobileViewport && !u.silent) if (j) {
|
|
5512
5722
|
let e = this._renderUISpec(t, h);
|
|
5513
|
-
|
|
5514
|
-
} else
|
|
5723
|
+
M = !0, this._drawer?.setPanelAiZoneState("results", { resultEl: e }), v = !0, F = null;
|
|
5724
|
+
} else F = t, y = !0;
|
|
5515
5725
|
let b = i && l === "GroundingReviewCard";
|
|
5516
5726
|
if ((!u.silent || b) && (p !== "panel" || l === "ProductCard" || f && l === "ProductGrid") && l !== "ActionButtons" && !v && !(y && _)) {
|
|
5517
5727
|
let e = this._shadow?.querySelector(".gengage-chat-messages");
|
|
@@ -5520,7 +5730,7 @@ var ti = class e extends B {
|
|
|
5520
5730
|
u.threadId && (n.dataset.threadId = u.threadId), e.appendChild(n), n.scrollIntoView({
|
|
5521
5731
|
behavior: "auto",
|
|
5522
5732
|
block: "end"
|
|
5523
|
-
}), this._drawer?.refreshPresentationCollapsed(), f && l === "ProductGrid" && (
|
|
5733
|
+
}), this._drawer?.refreshPresentationCollapsed(), f && l === "ProductGrid" && (A = !0);
|
|
5524
5734
|
}
|
|
5525
5735
|
}
|
|
5526
5736
|
if ((l === "ProductGrid" || l === "ProductCard") && u.threadId) {
|
|
@@ -5540,8 +5750,8 @@ var ti = class e extends B {
|
|
|
5540
5750
|
e.length > 0 && this._bridge?.send("previewImages", { images: e });
|
|
5541
5751
|
}
|
|
5542
5752
|
let S = c?.children?.length ?? 0;
|
|
5543
|
-
if (l === "ProductGrid" && p === "panel" && !f && S > 1 && !this._comparisonSelectMode && !
|
|
5544
|
-
this._choicePrompterEl?.remove(), this._shadow?.querySelectorAll(".gengage-chat-choice-prompter").forEach((e) => e.remove()), this._choicePrompterEl =
|
|
5753
|
+
if (l === "ProductGrid" && p === "panel" && !f && S > 1 && !this._comparisonSelectMode && !sr(this._currentThreadId ?? "")) {
|
|
5754
|
+
this._choicePrompterEl?.remove(), this._shadow?.querySelectorAll(".gengage-chat-choice-prompter").forEach((e) => e.remove()), this._choicePrompterEl = ar({
|
|
5545
5755
|
heading: this._i18n.choicePrompterHeading,
|
|
5546
5756
|
suggestion: this._i18n.choicePrompterSuggestion,
|
|
5547
5757
|
ctaLabel: this._i18n.choicePrompterCta,
|
|
@@ -5568,7 +5778,7 @@ var ti = class e extends B {
|
|
|
5568
5778
|
let e = c?.props?.buttons;
|
|
5569
5779
|
if (e && e.length > 0) {
|
|
5570
5780
|
let t = [], n = [];
|
|
5571
|
-
for (let r of e) if (
|
|
5781
|
+
for (let r of e) if (nr(r)) {
|
|
5572
5782
|
let e = {
|
|
5573
5783
|
label: r.label,
|
|
5574
5784
|
action: r.action
|
|
@@ -5588,15 +5798,15 @@ var ti = class e extends B {
|
|
|
5588
5798
|
}));
|
|
5589
5799
|
}
|
|
5590
5800
|
}
|
|
5591
|
-
|
|
5801
|
+
I(), u.uiSpec = t;
|
|
5592
5802
|
},
|
|
5593
5803
|
onAction: (e) => {
|
|
5594
5804
|
if (!(!r && n !== this._activeRequestThreadId) && e.type === "action") {
|
|
5595
5805
|
let t = {};
|
|
5596
|
-
this.config.actionHandling?.unknownActionPolicy !== void 0 && (t.unknownActionPolicy = this.config.actionHandling.unknownActionPolicy), this.config.actionHandling?.allowScriptCall !== void 0 && (t.allowScriptCall = this.config.actionHandling.allowScriptCall),
|
|
5806
|
+
this.config.actionHandling?.unknownActionPolicy !== void 0 && (t.unknownActionPolicy = this.config.actionHandling.unknownActionPolicy), this.config.actionHandling?.allowScriptCall !== void 0 && (t.allowScriptCall = this.config.actionHandling.allowScriptCall), pe(e, {
|
|
5597
5807
|
openChat: () => this.open(),
|
|
5598
5808
|
navigate: (e) => {
|
|
5599
|
-
|
|
5809
|
+
H(e.url) && (this._bridge?.send("navigate", e), e.newTab ? window.open(e.url, "_blank", "noopener,noreferrer") : window.location.href = e.url);
|
|
5600
5810
|
},
|
|
5601
5811
|
saveSession: (e) => this.saveSession(e.sessionId, e.sku),
|
|
5602
5812
|
addToCart: (e) => {
|
|
@@ -5612,7 +5822,7 @@ var ti = class e extends B {
|
|
|
5612
5822
|
if (!(!r && n !== this._activeRequestThreadId) && e.type === "metadata" && e.meta) {
|
|
5613
5823
|
if ((e.meta.panel !== void 0 || e.meta.messages !== void 0 || e.meta.message_id !== void 0) && (this._lastBackendContext = e.meta), e.meta.panelLoading) {
|
|
5614
5824
|
let t = typeof e.meta.panelPendingType == "string" ? e.meta.panelPendingType : void 0;
|
|
5615
|
-
this.config.productDetailsExtended !== !0 && (t === "productDetails" || t === "productDetailsSimilars") || (
|
|
5825
|
+
this.config.productDetailsExtended !== !0 && (t === "productDetails" || t === "productDetailsSimilars") || (k = !0, A = !1, s(), this._panel && (this._panel.currentType = null), this._drawer?.showPanelLoading(t), t && this._panel?.updateTopBarForLoading(t));
|
|
5616
5826
|
}
|
|
5617
5827
|
if (e.meta.voice) {
|
|
5618
5828
|
let t = new CustomEvent("gengage:chat:voice", {
|
|
@@ -5620,15 +5830,15 @@ var ti = class e extends B {
|
|
|
5620
5830
|
bubbles: !1,
|
|
5621
5831
|
cancelable: !0
|
|
5622
5832
|
}), n = window.dispatchEvent(t);
|
|
5623
|
-
if (
|
|
5833
|
+
if (D(), n) {
|
|
5624
5834
|
let t = e.meta.voice;
|
|
5625
|
-
t.audio_base64 && (this._activeTtsHandle?.stop(), this._activeTtsHandle =
|
|
5835
|
+
t.audio_base64 && (this._activeTtsHandle?.stop(), this._activeTtsHandle = $e(t.audio_base64, t.content_type ?? "audio/ogg"));
|
|
5626
5836
|
}
|
|
5627
5837
|
}
|
|
5628
5838
|
if ((e.meta.redirectTarget || e.meta.redirect) && y("gengage:chat:redirect", {
|
|
5629
5839
|
target: e.meta.redirectTarget ?? null,
|
|
5630
5840
|
payload: e.meta.redirect ?? null
|
|
5631
|
-
}), e.meta.analyzeAnimation && this.config.productDetailsExtended === !0 && (
|
|
5841
|
+
}), e.meta.analyzeAnimation && this.config.productDetailsExtended === !0 && (k = !0, A = !1, s(), this._panel && (this._panel.currentType = null), this._drawer?.showPanelLoading(), this._panel?.updateTopBarForLoading("productDetails")), e.meta.loading) {
|
|
5632
5842
|
let t = Array.isArray(e.meta.thinkingMessages) ? e.meta.thinkingMessages.filter((e) => typeof e == "string") : [];
|
|
5633
5843
|
t.length > 0 && this._drawer?.setThinkingSteps(t), typeof e.meta.loadingText == "string" && (this._drawer?.addThinkingStep(e.meta.loadingText), this._bridge?.send("loadingMessage", { text: e.meta.loadingText }));
|
|
5634
5844
|
}
|
|
@@ -5646,10 +5856,10 @@ var ti = class e extends B {
|
|
|
5646
5856
|
}
|
|
5647
5857
|
},
|
|
5648
5858
|
onError: (e) => {
|
|
5649
|
-
if (
|
|
5650
|
-
|
|
5651
|
-
let t =
|
|
5652
|
-
|
|
5859
|
+
if (L && this._abortControllers.delete(L), !r && n !== this._activeRequestThreadId) return;
|
|
5860
|
+
P = !0, this._activeTypewriter?.cancel(), this._activeTypewriter = null, I(), F = null, this._bridge?.send("isResponding", !1), this._bridge?.send("loadingMessage", { text: null }), this._drawer?.removeTypingIndicator(), this._drawer?.clearInputAreaChips();
|
|
5861
|
+
let t = A;
|
|
5862
|
+
k && !A && c(), k = !1, A = !1;
|
|
5653
5863
|
let a = u.silent || u.content != null && u.content.length > 0 || l.length > 0 || t, o = typeof navigator < "u" && navigator.onLine === !1 && g(e), s = () => {
|
|
5654
5864
|
this._shadow?.querySelector(`[data-message-id="${CSS.escape(u.id)}"]`)?.remove();
|
|
5655
5865
|
let e = this._messages.indexOf(u);
|
|
@@ -5671,7 +5881,7 @@ var ti = class e extends B {
|
|
|
5671
5881
|
s(), d = !0, this._drawer?.showErrorWithRecovery(this._i18n.accountInactiveMessage, i);
|
|
5672
5882
|
return;
|
|
5673
5883
|
}
|
|
5674
|
-
if (
|
|
5884
|
+
if (Or(e, r)) {
|
|
5675
5885
|
s(), d = !0, this._drawer?.showErrorWithRecovery(r, i);
|
|
5676
5886
|
return;
|
|
5677
5887
|
}
|
|
@@ -5693,21 +5903,21 @@ var ti = class e extends B {
|
|
|
5693
5903
|
}));
|
|
5694
5904
|
},
|
|
5695
5905
|
onDone: () => {
|
|
5696
|
-
if (
|
|
5697
|
-
if (
|
|
5906
|
+
if (L && this._abortControllers.delete(L), !r && n !== this._activeRequestThreadId) return;
|
|
5907
|
+
if (P = !0, I(), F) {
|
|
5698
5908
|
let e = this._buildRenderContext();
|
|
5699
5909
|
e.isStreaming = !1;
|
|
5700
5910
|
let t = this._shadow?.querySelector(".gengage-chat-messages");
|
|
5701
5911
|
if (t) {
|
|
5702
|
-
let n = this._renderUISpec(
|
|
5912
|
+
let n = this._renderUISpec(F, e);
|
|
5703
5913
|
u.threadId && (n.dataset.threadId = u.threadId), t.appendChild(n), n.scrollIntoView({
|
|
5704
5914
|
behavior: "auto",
|
|
5705
5915
|
block: "end"
|
|
5706
5916
|
}), this._drawer?.refreshPresentationCollapsed();
|
|
5707
5917
|
}
|
|
5708
|
-
|
|
5918
|
+
F = null;
|
|
5709
5919
|
}
|
|
5710
|
-
if (this._activeRequestThreadId = null, this._consecutiveErrorCount = 0, this._lastErrorMessage = "", this._bridge?.send("isResponding", !1), this._bridge?.send("loadingMessage", { text: null }), this._drawer?.removeTypingIndicator(),
|
|
5920
|
+
if (this._activeRequestThreadId = null, this._consecutiveErrorCount = 0, this._lastErrorMessage = "", this._bridge?.send("isResponding", !1), this._bridge?.send("loadingMessage", { text: null }), this._drawer?.removeTypingIndicator(), k && !A && c(), k = !1, A = !1, i && !l && !A) {
|
|
5711
5921
|
let e = this._i18n.productNotFoundMessage;
|
|
5712
5922
|
u.content = e, this._ensureAssistantMessageRendered(u), this._drawer?.updateBotMessage(u.id, e), this._markUnavailableProductContext();
|
|
5713
5923
|
}
|
|
@@ -5716,7 +5926,7 @@ var ti = class e extends B {
|
|
|
5716
5926
|
let e = this._queuedUserMessages.length > 0;
|
|
5717
5927
|
this._flushQueuedUserMessages(), e || this._ensurePdpPrimeSuggestedUiIfNeeded();
|
|
5718
5928
|
}
|
|
5719
|
-
u.status === "streaming" && (u.status = "done",
|
|
5929
|
+
u.status === "streaming" && (u.status = "done", te()), this._presentation.finalizeAssistantGroup(n);
|
|
5720
5930
|
let e = this._shadow?.querySelector(".gengage-chat-comparison-toggle-btn--hidden");
|
|
5721
5931
|
e && (e.classList.remove("gengage-chat-comparison-toggle-btn--hidden"), e.classList.add("gengage-chat-comparison-toggle-btn--reveal")), this.emit("message", u);
|
|
5722
5932
|
let t = this._currentPanelSource;
|
|
@@ -5725,10 +5935,10 @@ var ti = class e extends B {
|
|
|
5725
5935
|
return this._renderPanelFromSource(t, e);
|
|
5726
5936
|
} : void 0), this.track(w(this.analyticsContext(), {
|
|
5727
5937
|
request_id: x,
|
|
5728
|
-
latency_ms: Date.now() -
|
|
5729
|
-
chunk_count:
|
|
5938
|
+
latency_ms: Date.now() - O,
|
|
5939
|
+
chunk_count: ee,
|
|
5730
5940
|
widget: "chat"
|
|
5731
|
-
})), this.track(
|
|
5941
|
+
})), this.track(R(this.analyticsContext(), {
|
|
5732
5942
|
meter_key: "chat_request",
|
|
5733
5943
|
quantity: 1,
|
|
5734
5944
|
unit: "request"
|
|
@@ -5738,8 +5948,8 @@ var ti = class e extends B {
|
|
|
5738
5948
|
redaction_level: "none"
|
|
5739
5949
|
})), this._persistToIndexedDB().catch(() => {});
|
|
5740
5950
|
}
|
|
5741
|
-
}, d), this._abortControllers.add(
|
|
5742
|
-
let e =
|
|
5951
|
+
}, d), this._abortControllers.add(L), !t?.silent && !r) {
|
|
5952
|
+
let e = L;
|
|
5743
5953
|
this._drawer?.showStopButton(() => {
|
|
5744
5954
|
e.abort(), this._abortControllers.delete(e), this._drawer?.removeTypingIndicator(), this._bridge?.send("isResponding", !1), this._bridge?.send("loadingMessage", { text: null }), u.status === "streaming" && (u.status = "done");
|
|
5745
5955
|
});
|
|
@@ -5981,7 +6191,7 @@ var ti = class e extends B {
|
|
|
5981
6191
|
return e?.kind === "spec" ? this._shouldUseDividerPreviewForSpec(e.spec) : !1;
|
|
5982
6192
|
}
|
|
5983
6193
|
_toggleComparisonSku(t) {
|
|
5984
|
-
if (t === "") this._comparisonSelectMode = !this._comparisonSelectMode, this._comparisonSelectionWarning = null, this._comparisonSelectMode && (
|
|
6194
|
+
if (t === "") this._comparisonSelectMode = !this._comparisonSelectMode, this._comparisonSelectionWarning = null, this._comparisonSelectMode && (lr(this._currentThreadId ?? ""), this._choicePrompterEl?.remove(), this._choicePrompterEl = null, this._shadow?.querySelectorAll(".gengage-chat-choice-prompter").forEach((e) => e.remove())), this._comparisonSelectMode || (this._comparisonSelectedSkus = [], this._comparisonSelectionWarning = null, F());
|
|
5985
6195
|
else if (this._comparisonSelectedSkus.indexOf(t) >= 0) this._comparisonSelectedSkus = this._comparisonSelectedSkus.filter((e) => e !== t), this._comparisonSelectionWarning = null;
|
|
5986
6196
|
else {
|
|
5987
6197
|
if (this._comparisonSelectedSkus.length >= e._MAX_COMPARISON_SELECTION) {
|
|
@@ -5990,7 +6200,7 @@ var ti = class e extends B {
|
|
|
5990
6200
|
});
|
|
5991
6201
|
return;
|
|
5992
6202
|
}
|
|
5993
|
-
this._comparisonSelectedSkus = [...this._comparisonSelectedSkus, t], this._comparisonSelectionWarning = null,
|
|
6203
|
+
this._comparisonSelectedSkus = [...this._comparisonSelectedSkus, t], this._comparisonSelectionWarning = null, z(t);
|
|
5994
6204
|
}
|
|
5995
6205
|
this._comparisonRefreshRafId !== null && cancelAnimationFrame(this._comparisonRefreshRafId), this._comparisonRefreshRafId = requestAnimationFrame(() => {
|
|
5996
6206
|
this._comparisonRefreshRafId = null, this._refreshComparisonUI();
|
|
@@ -6045,7 +6255,7 @@ var ti = class e extends B {
|
|
|
6045
6255
|
}
|
|
6046
6256
|
}
|
|
6047
6257
|
if (t.querySelector(".gengage-chat-comparison-floating-btn")?.remove(), this._comparisonSelectMode) {
|
|
6048
|
-
let e =
|
|
6258
|
+
let e = Bt(this._comparisonSelectedSkus, this._buildRenderContext());
|
|
6049
6259
|
this._isMobileViewport ? this._drawer?.setComparisonDockContent(e) : (this._drawer?.setComparisonDockContent(null), t.appendChild(e));
|
|
6050
6260
|
} else this._drawer?.setComparisonDockContent(null);
|
|
6051
6261
|
}
|
|
@@ -6068,7 +6278,7 @@ var ti = class e extends B {
|
|
|
6068
6278
|
} catch (e) {
|
|
6069
6279
|
console.error("[gengage] onAddToCart", e);
|
|
6070
6280
|
}
|
|
6071
|
-
|
|
6281
|
+
B(e.sku, e.quantity);
|
|
6072
6282
|
let t = {
|
|
6073
6283
|
...e,
|
|
6074
6284
|
sessionId: this.config.session?.sessionId ?? null
|
|
@@ -6095,7 +6305,7 @@ var ti = class e extends B {
|
|
|
6095
6305
|
_buildRenderContext() {
|
|
6096
6306
|
let t = {
|
|
6097
6307
|
onAction: (e) => {
|
|
6098
|
-
if (
|
|
6308
|
+
if (j(e.title, e.type), e.type === "addToCart") {
|
|
6099
6309
|
let t = this._parseAddToCartActionPayload(e.payload);
|
|
6100
6310
|
if (t) {
|
|
6101
6311
|
this._runChatAddToCartFlow(t);
|
|
@@ -6105,14 +6315,14 @@ var ti = class e extends B {
|
|
|
6105
6315
|
if (e.type === "launchSingleProduct") {
|
|
6106
6316
|
this._drawer?.setDividerPreviewEnabled(!1);
|
|
6107
6317
|
let t = typeof e.payload == "object" && e.payload !== null && "sku" in e.payload ? String(e.payload.sku) : "";
|
|
6108
|
-
t &&
|
|
6318
|
+
t && L(t, e.title);
|
|
6109
6319
|
}
|
|
6110
|
-
e.type === "findSimilar" &&
|
|
6320
|
+
e.type === "findSimilar" && re(typeof e.payload == "object" && e.payload !== null && "sku" in e.payload ? String(e.payload.sku) : ""), e.type === "getComparisonTable" && O(this._comparisonSelectedSkus);
|
|
6111
6321
|
let t = e.type === "addToCart" || e.type === "like";
|
|
6112
6322
|
this._sendAction(e, t ? { preservePanel: !0 } : void 0);
|
|
6113
6323
|
},
|
|
6114
6324
|
onProductClick: (e) => {
|
|
6115
|
-
if (
|
|
6325
|
+
if (L(e.sku), this.config.isDemoWebsite !== !0 && this._isSameOriginUrl(e.url)) y("gengage:similar:product-click", {
|
|
6116
6326
|
sku: e.sku,
|
|
6117
6327
|
url: e.url,
|
|
6118
6328
|
sessionId: this.config.session?.sessionId ?? null
|
|
@@ -6169,6 +6379,7 @@ var ti = class e extends B {
|
|
|
6169
6379
|
},
|
|
6170
6380
|
i18n: this._i18n,
|
|
6171
6381
|
pricing: this.config.pricing,
|
|
6382
|
+
productPriceUi: this.config.productPriceUi,
|
|
6172
6383
|
productSort: this._productSort,
|
|
6173
6384
|
onSortChange: (e) => {
|
|
6174
6385
|
this._productSort = e;
|
|
@@ -6226,7 +6437,7 @@ var ti = class e extends B {
|
|
|
6226
6437
|
return;
|
|
6227
6438
|
}
|
|
6228
6439
|
if (await this._toggleFavorite(e, t), n) {
|
|
6229
|
-
|
|
6440
|
+
ie(e);
|
|
6230
6441
|
let n = t.name ?? e;
|
|
6231
6442
|
this._sendAction({
|
|
6232
6443
|
title: n,
|
|
@@ -6338,15 +6549,15 @@ var ti = class e extends B {
|
|
|
6338
6549
|
}
|
|
6339
6550
|
_resolveI18n(e) {
|
|
6340
6551
|
return {
|
|
6341
|
-
...
|
|
6552
|
+
...Ne(e.locale),
|
|
6342
6553
|
...e.i18n
|
|
6343
6554
|
};
|
|
6344
6555
|
}
|
|
6345
6556
|
_resolveUISpecRegistry() {
|
|
6346
|
-
return f(
|
|
6557
|
+
return f(Yt(), this.config.renderer?.registry);
|
|
6347
6558
|
}
|
|
6348
6559
|
_renderUISpec(e, t) {
|
|
6349
|
-
let n = this._resolveUISpecRegistry(), r = this.config.renderer?.unknownRenderer ??
|
|
6560
|
+
let n = this._resolveUISpecRegistry(), r = this.config.renderer?.unknownRenderer ?? Jt, i = (e, t) => Xt(e, t, n, r), a = this.config.renderer?.renderUISpec;
|
|
6350
6561
|
return a ? a(e, t, {
|
|
6351
6562
|
registry: n,
|
|
6352
6563
|
unknownRenderer: r,
|
|
@@ -6354,10 +6565,10 @@ var ti = class e extends B {
|
|
|
6354
6565
|
}) : i(e, t);
|
|
6355
6566
|
}
|
|
6356
6567
|
};
|
|
6357
|
-
function
|
|
6358
|
-
return new
|
|
6568
|
+
function ui() {
|
|
6569
|
+
return new li();
|
|
6359
6570
|
}
|
|
6360
6571
|
//#endregion
|
|
6361
|
-
export {
|
|
6572
|
+
export { xr as a, Xt as c, Ee as d, Oe as f, Cr as i, Ie as l, pe as m, ui as n, Yt as o, ke as p, oi as r, Jt as s, li as t, Pe as u };
|
|
6362
6573
|
|
|
6363
|
-
//# sourceMappingURL=chat-
|
|
6574
|
+
//# sourceMappingURL=chat-CmKpcbQS.js.map
|