@akropolys/kiku 1.7.16 → 1.7.19

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/index.js CHANGED
@@ -1,3314 +1,48 @@
1
1
  'use client';
2
- "use strict";
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
-
21
- // src/index.ts
22
- var src_exports = {};
23
- __export(src_exports, {
24
- ChatWidget: () => ChatWidget,
25
- ComparisonMatrix: () => ComparisonMatrix,
26
- KikuButton: () => KikuButton,
27
- KikuChat: () => ChatWidget,
28
- SearchBar: () => SearchBar,
29
- Sparkle: () => Sparkle,
30
- VisualSearch: () => VisualSearch,
31
- VoiceButton: () => VoiceButton
32
- });
33
- module.exports = __toCommonJS(src_exports);
34
-
35
- // src/components/SearchBar.tsx
36
- var import_react = require("react");
37
- var import_sdk = require("@akropolys/sdk");
38
-
39
- // src/utils/cn.ts
40
- var import_clsx = require("clsx");
41
- var import_tailwind_merge = require("tailwind-merge");
42
- function cn(...inputs) {
43
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
44
- }
45
-
46
- // src/components/SearchBar.tsx
47
- var import_jsx_runtime = require("react/jsx-runtime");
48
- var SearchIcon = () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { width: "15", height: "15", viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: [
49
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "8.5", cy: "8.5", r: "5.5" }),
50
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "13", y1: "13", x2: "18", y2: "18" })
51
- ] });
52
- function SearchBar({
53
- placeholder = "Search products\u2026",
54
- limit = 10,
55
- debounceMs = 150,
56
- onSelect,
57
- className,
58
- inputClassName,
59
- dropdownClassName,
60
- renderResult,
61
- theme,
62
- classNames = {}
63
- }) {
64
- const [query, setQuery] = (0, import_react.useState)("");
65
- const [open, setOpen] = (0, import_react.useState)(false);
66
- const { results, loading, search, clear } = (0, import_sdk.useSearch)({ debounceMs });
67
- const client = (0, import_sdk.useAkropolysContext)();
68
- const wrap = (0, import_react.useRef)(null);
69
- const ignoreNextQueryChange = (0, import_react.useRef)(false);
70
- (0, import_react.useEffect)(() => {
71
- if (ignoreNextQueryChange.current) {
72
- ignoreNextQueryChange.current = false;
73
- return;
74
- }
75
- if (!query.trim()) {
76
- clear();
77
- setOpen(false);
78
- return;
79
- }
80
- setOpen(true);
81
- search(query, limit);
82
- }, [query]);
83
- (0, import_react.useEffect)(() => {
84
- const h = (e) => {
85
- if (wrap.current && !wrap.current.contains(e.target)) setOpen(false);
86
- };
87
- document.addEventListener("mousedown", h);
88
- return () => document.removeEventListener("mousedown", h);
89
- }, []);
90
- const handleSelect = (r) => {
91
- if (query.trim()) {
92
- client.api.searchVector(query, 1, void 0, true).catch(() => {
93
- });
94
- }
95
- ignoreNextQueryChange.current = true;
96
- setOpen(false);
97
- setQuery(r.entity.title ?? r.entity.name ?? "");
98
- onSelect?.(r);
99
- };
100
- const handleCommitSearch = () => {
101
- if (!query.trim()) return;
102
- client.api.searchVector(query, 1, void 0, true).catch(() => {
103
- });
104
- if (results.length > 0) {
105
- handleSelect(results[0]);
106
- }
107
- };
108
- const showDrop = open && query.trim().length > 0;
109
- const customStyles = {
110
- ...theme?.primaryColor && { "--hsk-primary": theme.primaryColor },
111
- ...theme?.backgroundColor && { "--hsk-bg": theme.backgroundColor },
112
- ...theme?.textColor && { "--hsk-text": theme.textColor },
113
- ...theme?.fontFamily && { "--hsk-font": theme.fontFamily },
114
- ...theme?.borderRadius && { "--hsk-border-radius": theme.borderRadius }
115
- };
116
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cn("hsk-sb-wrap", classNames.root, className), ref: wrap, style: customStyles, children: [
117
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "hsk-sb-icon", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SearchIcon, {}) }),
118
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
119
- "input",
120
- {
121
- className: cn("hsk-sb-input", classNames.input, inputClassName),
122
- type: "text",
123
- value: query,
124
- placeholder,
125
- onChange: (e) => setQuery(e.target.value),
126
- onFocus: () => results.length > 0 && query.trim() && setOpen(true),
127
- onKeyDown: (e) => {
128
- if (e.key === "Enter") {
129
- handleCommitSearch();
130
- }
131
- },
132
- autoComplete: "off",
133
- spellCheck: false
134
- }
135
- ),
136
- showDrop && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cn("hsk-sb-drop", classNames.dropdown, dropdownClassName), style: { position: "absolute" }, children: [
137
- loading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "hsk-sb-loading-bar" }),
138
- loading && results.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
139
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "hsk-sb-skeleton-row", children: [
140
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "hsk-sb-skeleton-icon" }),
141
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "hsk-sb-row-body", children: [
142
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "hsk-sb-skeleton-text1" }),
143
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "hsk-sb-skeleton-text2" })
144
- ] })
145
- ] }),
146
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "hsk-sb-skeleton-row", children: [
147
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "hsk-sb-skeleton-icon" }),
148
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "hsk-sb-row-body", children: [
149
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "hsk-sb-skeleton-text1", style: { width: "45%" } }),
150
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "hsk-sb-skeleton-text2", style: { width: "25%" } })
151
- ] })
152
- ] })
153
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
154
- results.length === 0 && !loading && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "hsk-sb-empty", children: [
155
- "No results for \u201C",
156
- query,
157
- "\u201D"
158
- ] }),
159
- results.map((r, i) => {
160
- if (renderResult) {
161
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
162
- "div",
163
- {
164
- onClick: () => handleSelect(r),
165
- className: "hsk-sb-fade",
166
- style: { animationDelay: `${i * 18}ms` },
167
- children: renderResult(r)
168
- },
169
- r.id
170
- );
171
- }
172
- const thumb = r.entity.image ?? r.entity.thumbnail ?? r.entity.images?.[0];
173
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
174
- "div",
175
- {
176
- className: cn("hsk-sb-row hsk-sb-fade", classNames.row),
177
- style: { animationDelay: `${i * 18}ms` },
178
- onClick: () => handleSelect(r),
179
- children: [
180
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "hsk-sb-row-thumb", children: thumb ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
181
- "img",
182
- {
183
- src: thumb,
184
- alt: "",
185
- loading: "lazy",
186
- onError: (e) => {
187
- e.currentTarget.style.display = "none";
188
- }
189
- }
190
- ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SearchIcon, {}) }),
191
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "hsk-sb-row-body", children: [
192
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "hsk-sb-row-title", children: r.entity.title ?? r.entity.name }),
193
- (r.entity.category || r.entity.brand) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "hsk-sb-row-sub", children: r.entity.category ?? r.entity.brand })
194
- ] })
195
- ]
196
- },
197
- r.id
198
- );
199
- })
200
- ] })
201
- ] })
202
- ] });
203
- }
204
-
205
- // src/components/ChatWidget.tsx
206
- var import_react4 = require("react");
207
- var import_sdk3 = require("@akropolys/sdk");
208
-
209
- // src/utils/markdown.tsx
210
- var import_jsx_runtime2 = require("react/jsx-runtime");
211
- var parseInline = (text, keyPrefix) => {
212
- const tokenRegex = /(!\[[^\]]*\]\([^)]+\)|\[[^\]]+\]\([^)]+\)|\*\*[^*]+\*\*|`[^`]+`)/g;
213
- const parts = text.split(tokenRegex);
214
- return parts.map((part, index) => {
215
- if (!part) return null;
216
- const key = `${keyPrefix}-inline-${index}`;
217
- if (part.startsWith("`") && part.endsWith("`")) {
218
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("code", { className: "hsk-markdown-code", children: part.slice(1, -1) }, key);
219
- }
220
- if (part.startsWith("**") && part.endsWith("**")) {
221
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("strong", { children: parseInline(part.slice(2, -2), key) }, key);
222
- }
223
- const imageMatch = part.match(/^!\[([^\]]*)\]\(([^)]+)\)$/);
224
- if (imageMatch) {
225
- const alt = imageMatch[1];
226
- const url = imageMatch[2];
227
- const isSafeUrl = /^(https?|data:image):/i.test(url);
228
- if (isSafeUrl) {
229
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
230
- "img",
231
- {
232
- src: url,
233
- alt: alt || "Product image",
234
- className: "hsk-markdown-img",
235
- loading: "lazy",
236
- onError: (e) => {
237
- e.target.style.display = "none";
238
- }
239
- },
240
- key
241
- );
242
- }
243
- return null;
244
- }
245
- const linkMatch = part.match(/^\[([^\]]+)\]\(([^)]+)\)$/);
246
- if (linkMatch) {
247
- const url = linkMatch[2];
248
- const isSafeUrl = /^(https?|mailto|tel):/i.test(url) || url.startsWith("/");
249
- if (isSafeUrl) {
250
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("a", { href: url, target: "_blank", rel: "noopener noreferrer", className: "hsk-markdown-link", children: parseInline(linkMatch[1], key) }, key);
251
- }
252
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: parseInline(linkMatch[1], key) }, key);
253
- }
254
- return part;
255
- });
256
- };
257
- function isTableLine(line, inTable) {
258
- const t = line.trim();
259
- if (inTable) return t.includes("|");
260
- return t.startsWith("|");
261
- }
262
- function splitTableCells(rowLine) {
263
- let t = rowLine.trim();
264
- if (t.startsWith("|")) t = t.slice(1);
265
- if (t.endsWith("|")) t = t.slice(0, -1);
266
- return t.split("|").map((c) => c.trim());
267
- }
268
- function renderMarkdown(content, streaming = false) {
269
- const lines = content.split("\n");
270
- if (streaming && lines.length > 0) {
271
- const last = lines[lines.length - 1];
272
- if (last.trim().startsWith("|") && !last.trim().endsWith("|")) {
273
- lines.pop();
274
- }
275
- }
276
- const elements = [];
277
- let i = 0;
278
- while (i < lines.length) {
279
- const line = lines[i];
280
- const key = `md-line-${i}`;
281
- if (!line.trim()) {
282
- i++;
283
- continue;
284
- }
285
- const standaloneImageMatch = line.trim().match(/^!\[([^\]]*)\]\(([^)]+)\)$/);
286
- if (standaloneImageMatch) {
287
- const alt = standaloneImageMatch[1];
288
- const url = standaloneImageMatch[2];
289
- const isSafeUrl = /^(https?|data:image):/i.test(url);
290
- if (isSafeUrl) {
291
- elements.push(
292
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "hsk-markdown-img-block", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
293
- "img",
294
- {
295
- src: url,
296
- alt: alt || "Product image",
297
- className: "hsk-markdown-img",
298
- loading: "lazy",
299
- onError: (e) => {
300
- e.target.style.display = "none";
301
- }
302
- }
303
- ) }, key)
304
- );
305
- }
306
- i++;
307
- continue;
308
- }
309
- const headerMatch = line.match(/^(#{1,3})\s+(.*)/);
310
- if (headerMatch) {
311
- const level = headerMatch[1].length;
312
- const Tag = `h${level + 3}`;
313
- elements.push(/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Tag, { className: `hsk-markdown-h${level}`, children: parseInline(headerMatch[2], key) }, key));
314
- i++;
315
- continue;
316
- }
317
- if (line.match(/^[-*]\s+/)) {
318
- const listItems = [];
319
- while (i < lines.length && lines[i].match(/^[-*]\s+/)) {
320
- const itemText = lines[i].replace(/^[-*]\s+/, "");
321
- listItems.push(/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("li", { children: parseInline(itemText, `li-${i}`) }, `li-${i}`));
322
- i++;
323
- }
324
- elements.push(/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("ul", { className: "hsk-markdown-list", children: listItems }, `ul-${key}`));
325
- continue;
326
- }
327
- if (line.match(/^\d+[.)]\s+/)) {
328
- const listItems = [];
329
- while (i < lines.length && lines[i].match(/^\d+[.)]\s+/)) {
330
- const itemText = lines[i].replace(/^\d+[.)]\s+/, "");
331
- listItems.push(/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("li", { children: parseInline(itemText, `li-${i}`) }, `li-${i}`));
332
- i++;
333
- }
334
- elements.push(/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("ol", { className: "hsk-markdown-list", children: listItems }, `ol-${key}`));
335
- continue;
336
- }
337
- if (isTableLine(line, false)) {
338
- const tableRows = [];
339
- let isHeader = true;
340
- while (i < lines.length && isTableLine(lines[i], true)) {
341
- const rowLine = lines[i].trim();
342
- if (rowLine.match(/^\|?[-:| ]+\|?$/) && rowLine.includes("-")) {
343
- i++;
344
- isHeader = false;
345
- continue;
346
- }
347
- const cells = splitTableCells(rowLine);
348
- const Tag = isHeader ? "th" : "td";
349
- tableRows.push(
350
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("tr", { children: cells.map((cell, cIdx) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Tag, { children: parseInline(cell, `td-${i}-${cIdx}`) }, `td-${i}-${cIdx}`)) }, `tr-${i}`)
351
- );
352
- i++;
353
- }
354
- elements.push(
355
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "hsk-table-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("table", { className: "hsk-markdown-table", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("tbody", { children: tableRows }) }) }, `table-wrapper-${key}`)
356
- );
357
- continue;
358
- }
359
- elements.push(
360
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "hsk-markdown-p", children: parseInline(line, key) }, key)
361
- );
362
- i++;
363
- }
364
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: elements });
365
- }
366
-
367
- // src/utils/icons.tsx
368
- var import_jsx_runtime3 = require("react/jsx-runtime");
369
- var ArrowUpIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
370
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m5 12 7-7 7 7" }),
371
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 19V5" })
372
- ] });
373
-
374
- // src/utils/theme.ts
375
- function resolveTheme(theme) {
376
- if (typeof theme === "string") {
377
- return { themeAttr: theme, vars: void 0 };
378
- }
379
- if (!theme) {
380
- return { themeAttr: void 0, vars: void 0 };
381
- }
382
- const vars = {};
383
- if (theme.primaryColor) vars["--hsk-primary"] = theme.primaryColor;
384
- if (theme.backgroundColor) {
385
- vars["--hsk-bg"] = theme.backgroundColor;
386
- vars["--hsk-chat-bg"] = theme.backgroundColor;
387
- }
388
- if (theme.textColor) {
389
- vars["--hsk-text"] = theme.textColor;
390
- vars["--hsk-chat-text"] = theme.textColor;
391
- }
392
- if (theme.fontFamily) vars["--hsk-font"] = theme.fontFamily;
393
- if (theme.fontSize) vars["--hsk-font-size"] = theme.fontSize;
394
- if (theme.borderRadius) vars["--hsk-border-radius"] = theme.borderRadius;
395
- return { themeAttr: void 0, vars };
396
- }
397
-
398
- // src/components/VoiceButton.tsx
399
- var import_react2 = require("react");
400
- var import_jsx_runtime4 = require("react/jsx-runtime");
401
- var MicIcon = ({ active }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
402
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("rect", { x: "9", y: "2", width: "6", height: "11", rx: "3", fill: active ? "currentColor" : "none" }),
403
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M5 10a7 7 0 0 0 14 0" }),
404
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "12", y1: "19", x2: "12", y2: "23" }),
405
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "8", y1: "23", x2: "16", y2: "23" })
406
- ] });
407
- function VoiceButton({
408
- onTranscript,
409
- onInterim,
410
- lang = "en-US",
411
- className = "",
412
- disabled = false
413
- }) {
414
- const [listening, setListening] = (0, import_react2.useState)(false);
415
- const recognitionRef = (0, import_react2.useRef)(null);
416
- const isSupported = typeof window !== "undefined" && ("SpeechRecognition" in window || "webkitSpeechRecognition" in window);
417
- const start = (0, import_react2.useCallback)(() => {
418
- if (!isSupported || listening) return;
419
- const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
420
- const recognition = new SR();
421
- recognition.lang = lang;
422
- recognition.interimResults = true;
423
- recognition.maxAlternatives = 1;
424
- recognitionRef.current = recognition;
425
- recognition.onstart = () => setListening(true);
426
- recognition.onend = () => setListening(false);
427
- recognition.onerror = () => setListening(false);
428
- recognition.onresult = (e) => {
429
- const results = Array.from(e.results);
430
- const transcript = results.map((r) => r[0].transcript).join("");
431
- const isFinal = e.results[e.results.length - 1].isFinal;
432
- if (isFinal) {
433
- onTranscript(transcript);
434
- setListening(false);
435
- } else {
436
- onInterim?.(transcript);
437
- }
438
- };
439
- recognition.start();
440
- }, [isSupported, listening, lang, onTranscript, onInterim]);
441
- const stop = (0, import_react2.useCallback)(() => {
442
- recognitionRef.current?.stop();
443
- setListening(false);
444
- }, []);
445
- if (!isSupported) return null;
446
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
447
- "button",
448
- {
449
- type: "button",
450
- className: `kiku-voice-btn${listening ? " kiku-voice-btn--active" : ""} ${className}`,
451
- onClick: listening ? stop : start,
452
- disabled,
453
- title: listening ? "Stop listening" : "Speak your search",
454
- "aria-label": listening ? "Stop voice input" : "Start voice input",
455
- children: [
456
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MicIcon, { active: listening }),
457
- listening && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "kiku-voice-ripple", "aria-hidden": "true" })
458
- ]
459
- }
460
- );
461
- }
462
-
463
- // src/components/VisualSearch.tsx
464
- var import_react3 = require("react");
465
- var import_sdk2 = require("@akropolys/sdk");
466
- var import_jsx_runtime5 = require("react/jsx-runtime");
467
- var CameraIcon = () => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
468
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("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" }),
469
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("circle", { cx: "12", cy: "13", r: "4" })
470
- ] });
471
- var SpinnerIcon = () => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "kiku-vs-spin", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" }) });
472
- function fileToBase64(file) {
473
- return new Promise((resolve, reject) => {
474
- const reader = new FileReader();
475
- reader.onload = () => resolve(reader.result);
476
- reader.onerror = reject;
477
- reader.readAsDataURL(file);
478
- });
479
- }
480
- function VisualSearch({
481
- onResults,
482
- onError,
483
- categoryHint,
484
- className = "",
485
- disabled = false
486
- }) {
487
- const client = (0, import_sdk2.useAkropolysContext)();
488
- const inputRef = (0, import_react3.useRef)(null);
489
- const [loading, setLoading] = (0, import_react3.useState)(false);
490
- const handleFile = async (file) => {
491
- if (!file.type.startsWith("image/")) return;
492
- setLoading(true);
493
- try {
494
- const base64 = await fileToBase64(file);
495
- const res = await client.api.searchByImage(base64, categoryHint);
496
- onResults(res, base64);
497
- } catch (e) {
498
- onError?.(e instanceof Error ? e : new Error(String(e)));
499
- } finally {
500
- setLoading(false);
501
- if (inputRef.current) inputRef.current.value = "";
502
- }
503
- };
504
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
505
- "label",
506
- {
507
- className: `kiku-vs-btn${loading ? " kiku-vs-btn--loading" : ""} ${className}`,
508
- title: "Search by photo",
509
- "aria-label": "Search by uploading a photo",
510
- style: { cursor: disabled || loading ? "not-allowed" : "pointer" },
511
- children: [
512
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
513
- "input",
514
- {
515
- ref: inputRef,
516
- type: "file",
517
- accept: "image/*",
518
- capture: "environment",
519
- onChange: (e) => e.target.files?.[0] && handleFile(e.target.files[0]),
520
- disabled: disabled || loading,
521
- hidden: true
522
- }
523
- ),
524
- loading ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SpinnerIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CameraIcon, {})
525
- ]
526
- }
527
- );
528
- }
529
-
530
- // src/components/ChatWidget.tsx
531
- var import_jsx_runtime6 = require("react/jsx-runtime");
532
- var SparkleIcon = () => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z" }) });
533
- function SourceCard({
534
- source,
535
- defaultCurrency,
536
- onSelect,
537
- isReferenced
538
- }) {
539
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
540
- "div",
541
- {
542
- className: cn("hsk-source-card", isReferenced && "hsk-source-card--referenced"),
543
- onClick: () => onSelect?.(source),
544
- children: [
545
- source.image && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: source.image, alt: source.name, className: "hsk-source-img" }),
546
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { flex: 1, minWidth: 0, position: "relative" }, children: [
547
- isReferenced && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-cb-source-ref-badge", title: "Featured in response", style: { top: "0", right: "0" }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SparkleIcon, {}) }),
548
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-source-name", style: { paddingRight: isReferenced ? "20px" : void 0 }, children: source.name }),
549
- source.price && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-source-price", children: [
550
- source.currency ?? defaultCurrency,
551
- " ",
552
- source.price
553
- ] })
554
- ] })
555
- ]
556
- }
557
- );
558
- }
559
- function ChatWidget({
560
- title = "kiku",
561
- placeholder = "Ask about anything in our store\u2026",
562
- emptyStateText = "Ask me anything about our products",
563
- emptyStateSuggestions = '"Find me headphones under KSh 5,000" \xB7 "Gift ideas"',
564
- defaultCurrency = "KES",
565
- className,
566
- theme,
567
- classNames = {},
568
- onSelectSource,
569
- enableVoice = false,
570
- enableVision = false,
571
- visionCategoryHint
572
- }) {
573
- const { messages, sources, referencedIds, loading: chatLoading, streaming, error, send, reset } = (0, import_sdk3.useKiku)();
574
- const [input, setInput] = (0, import_react4.useState)("");
575
- const [visualLoading, setVisualLoading] = (0, import_react4.useState)(false);
576
- const bottomRef = (0, import_react4.useRef)(null);
577
- const textareaRef = (0, import_react4.useRef)(null);
578
- const loading = chatLoading || visualLoading;
579
- const [chatHistory, setChatHistory] = (0, import_react4.useState)([]);
580
- const lastSyncedCount = (0, import_react4.useRef)(0);
581
- (0, import_react4.useEffect)(() => {
582
- if (messages.length === 0) {
583
- setChatHistory([]);
584
- lastSyncedCount.current = 0;
585
- return;
586
- }
587
- if (messages.length > lastSyncedCount.current) {
588
- const newMsgs = messages.slice(lastSyncedCount.current);
589
- setChatHistory((prev) => [...prev, ...newMsgs]);
590
- lastSyncedCount.current = messages.length;
591
- } else if (messages.length < lastSyncedCount.current) {
592
- setChatHistory(messages);
593
- lastSyncedCount.current = messages.length;
594
- } else {
595
- setChatHistory((prev) => {
596
- const next = [...prev];
597
- let hookIdx = messages.length - 1;
598
- let historyIdx = next.length - 1;
599
- while (hookIdx >= 0 && historyIdx >= 0) {
600
- if (next[historyIdx].role === messages[hookIdx].role) {
601
- next[historyIdx] = {
602
- ...next[historyIdx],
603
- content: messages[hookIdx].content,
604
- actionType: messages[hookIdx].actionType,
605
- thinking: messages[hookIdx].thinking,
606
- thoughtForSeconds: messages[hookIdx].thoughtForSeconds,
607
- statusMessage: messages[hookIdx].statusMessage
608
- };
609
- break;
610
- }
611
- historyIdx--;
612
- }
613
- return next;
614
- });
615
- }
616
- }, [messages]);
617
- (0, import_react4.useEffect)(() => {
618
- bottomRef.current?.scrollIntoView({ behavior: "smooth" });
619
- }, [chatHistory, loading]);
620
- const handleSend = async () => {
621
- const q = input.trim();
622
- if (!q || loading) return;
623
- setInput("");
624
- if (textareaRef.current) textareaRef.current.style.height = "auto";
625
- await send(q);
626
- };
627
- const handleKey = (e) => {
628
- if (e.key === "Enter" && !e.shiftKey) {
629
- e.preventDefault();
630
- handleSend();
631
- }
632
- };
633
- const handleInput = (e) => {
634
- setInput(e.target.value);
635
- const t = e.target;
636
- t.style.height = "auto";
637
- t.style.height = Math.min(t.scrollHeight, 120) + "px";
638
- };
639
- const handleVisualResults = (res, preview) => {
640
- const userMsg = {
641
- role: "user",
642
- content: "Uploaded a photo for visual search",
643
- imagePreview: preview
644
- };
645
- const dna = res.style_dna;
646
- let content = `I've analyzed your image! Here is the Style DNA I found:
647
- `;
648
- if (dna) {
649
- if (dna.color_palette) content += `* **Palette:** ${dna.color_palette}
650
- `;
651
- if (dna.dominant_colors && dna.dominant_colors.length > 0) {
652
- content += `* **Colors:** ${dna.dominant_colors.join(", ")}
653
- `;
654
- }
655
- if (dna.aesthetic && dna.aesthetic.length > 0) {
656
- content += `* **Aesthetic:** ${dna.aesthetic.join(", ")}
657
- `;
658
- }
659
- if (dna.texture) content += `* **Texture:** ${dna.texture}
660
- `;
661
- if (dna.formality) content += `* **Formality:** ${dna.formality}
662
- `;
663
- }
664
- const results = res.results || [];
665
- if (results.length > 0) {
666
- content += `
667
- I found ${results.length} matching products in the store for you.`;
668
- } else {
669
- content += `
670
- I couldn't find any matching products in the store.`;
671
- }
672
- const assistantMsg = {
673
- role: "assistant",
674
- content,
675
- styleDNA: dna,
676
- visualSources: results.map((r) => ({
677
- id: r.id,
678
- name: r.product.name,
679
- price: r.product.price,
680
- currency: r.product.currency,
681
- category: r.product.category,
682
- url: r.product.url,
683
- image: r.product.images && r.product.images.length > 0 ? r.product.images[0] : void 0,
684
- brand: r.product.brand
685
- }))
686
- };
687
- setChatHistory((prev) => [...prev, userMsg, assistantMsg]);
688
- };
689
- const { vars: customStyles } = resolveTheme(theme);
690
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
691
- "div",
692
- {
693
- className: cn("hsk-chat-widget", classNames.root, className),
694
- style: customStyles,
695
- children: [
696
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: cn("hsk-chat-header", classNames.header), children: [
697
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hsk-chat-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SparkleIcon, {}) }),
698
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hsk-chat-title", children: title }),
699
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hsk-chat-badge", children: "AI" }),
700
- chatHistory.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: "hsk-chat-reset", onClick: reset, style: { marginLeft: "auto" }, children: "Clear" })
701
- ] }),
702
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-chat-messages", children: [
703
- chatHistory.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-chat-empty", children: [
704
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-chat-empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SparkleIcon, {}) }),
705
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { children: emptyStateText }),
706
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-chat-empty-suggestions", children: emptyStateSuggestions })
707
- ] }) : chatHistory.map((msg, idx) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { children: [
708
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: `hsk-msg-row ${msg.role}`, children: [
709
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn("hsk-msg-avatar", msg.role === "assistant" ? "ai" : "user"), children: msg.role === "assistant" ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SparkleIcon, {}) : "U" }),
710
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: cn("hsk-msg-bubble", msg.role, classNames.messageBubble), children: [
711
- msg.imagePreview && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "kiku-vs-preview-bubble", style: { marginBottom: "8px" }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: msg.imagePreview, alt: "Uploaded Preview", className: "kiku-vs-preview-bubble-img", style: { maxWidth: "200px", borderRadius: "8px" } }) }),
712
- msg.thinking && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("details", { className: "hsk-thinking-details", open: streaming && idx === chatHistory.length - 1 && !msg.content, children: [
713
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("summary", { className: "hsk-thinking-summary", children: [
714
- "Thought for ",
715
- msg.thoughtForSeconds ?? 1,
716
- "s"
717
- ] }),
718
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-thinking-text", children: msg.thinking })
719
- ] }),
720
- !msg.content && !msg.thinking && msg.role === "assistant" && idx === chatHistory.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-status-live", children: [
721
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hsk-status-dot" }),
722
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: msg.statusMessage || "Thinking..." })
723
- ] }),
724
- renderMarkdown(msg.content),
725
- streaming && idx === chatHistory.length - 1 && msg.role === "assistant" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hsk-streaming-cursor" }),
726
- msg.styleDNA && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "kiku-vs-preview-banner", style: { marginTop: "10px" }, children: [
727
- chatHistory[idx - 1]?.imagePreview && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: chatHistory[idx - 1].imagePreview, alt: "Visual Search Input", className: "kiku-vs-preview-img" }),
728
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "kiku-vs-preview-info", children: [
729
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "kiku-vs-preview-label", children: "Visual Match Palette" }),
730
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "kiku-vs-preview-palette", children: msg.styleDNA.color_palette || "Detected Style DNA" }),
731
- msg.styleDNA.style_tags && msg.styleDNA.style_tags.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "kiku-style-tags", children: msg.styleDNA.style_tags.map((tag, ti) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "kiku-style-tag", children: [
732
- "#",
733
- tag
734
- ] }, ti)) })
735
- ] })
736
- ] })
737
- ] })
738
- ] }),
739
- msg.role === "assistant" && msg.visualSources && msg.visualSources.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-sources-container", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-sources", children: msg.visualSources.map((src, si) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SourceCard, { source: src, defaultCurrency, onSelect: onSelectSource }, si)) }) }),
740
- msg.role === "assistant" && idx === chatHistory.length - 1 && !msg.visualSources && sources.length > 0 && (() => {
741
- const isStreamingActive = chatLoading || streaming;
742
- if (isStreamingActive) {
743
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-sources-container", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-sources", children: sources.map((src, si) => {
744
- const isReferenced = !!(src.id && referencedIds.includes(src.id));
745
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
746
- SourceCard,
747
- {
748
- source: src,
749
- defaultCurrency,
750
- onSelect: onSelectSource,
751
- isReferenced
752
- },
753
- si
754
- );
755
- }) }) });
756
- }
757
- const featured = sources.filter((src) => src.id && referencedIds.includes(src.id));
758
- const general = referencedIds.length > 0 ? [] : sources.filter((src) => !src.id || !referencedIds.includes(src.id));
759
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-sources-container", children: [
760
- featured.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-sources-group", style: { marginBottom: "10px" }, children: [
761
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-sources-group-title", children: "\u2B50 Featured in response" }),
762
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-sources", children: featured.map((src, si) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
763
- SourceCard,
764
- {
765
- source: src,
766
- defaultCurrency,
767
- onSelect: onSelectSource,
768
- isReferenced: true
769
- },
770
- `feat-${si}`
771
- )) })
772
- ] }),
773
- general.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-sources-group", children: [
774
- featured.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-sources-group-title", children: "All matches" }),
775
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-sources", children: general.map((src, si) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
776
- SourceCard,
777
- {
778
- source: src,
779
- defaultCurrency,
780
- onSelect: onSelectSource,
781
- isReferenced: false
782
- },
783
- `gen-${si}`
784
- )) })
785
- ] })
786
- ] });
787
- })()
788
- ] }, idx)),
789
- loading && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-msg-row", children: [
790
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-msg-avatar ai", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SparkleIcon, {}) }),
791
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-pending", role: "status", "aria-live": "polite", children: [
792
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-pending-glyph", children: [
793
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hsk-pending-ring" }),
794
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hsk-pending-dot" })
795
- ] }),
796
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-pending-text", children: [
797
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hsk-pending-step step-1", children: "Searching catalog" }),
798
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hsk-pending-step step-2", children: "Reasoning" }),
799
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hsk-pending-step step-3", children: "Composing" })
800
- ] })
801
- ] })
802
- ] }),
803
- error && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "hsk-chat-error", children: (() => {
804
- try {
805
- const parsed = JSON.parse(error);
806
- return parsed.error || parsed.message || error;
807
- } catch {
808
- return error;
809
- }
810
- })() }),
811
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { ref: bottomRef })
812
- ] }),
813
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "hsk-chat-input-area", style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
814
- enableVision && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
815
- VisualSearch,
816
- {
817
- onResults: handleVisualResults,
818
- onError: (err) => console.error("[VisualSearch] error:", err),
819
- categoryHint: visionCategoryHint,
820
- disabled: loading
821
- }
822
- ),
823
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
824
- "textarea",
825
- {
826
- ref: textareaRef,
827
- className: cn("hsk-chat-input", classNames.input),
828
- value: input,
829
- onChange: handleInput,
830
- onKeyDown: handleKey,
831
- placeholder,
832
- rows: 1,
833
- disabled: loading,
834
- style: { flex: 1 }
835
- }
836
- ),
837
- enableVoice && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
838
- VoiceButton,
839
- {
840
- onTranscript: (text) => {
841
- setInput(text);
842
- send(text);
843
- setInput("");
844
- },
845
- onInterim: (text) => setInput(text),
846
- disabled: loading
847
- }
848
- ),
849
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
850
- "button",
851
- {
852
- className: "hsk-chat-send",
853
- onClick: handleSend,
854
- disabled: !input.trim() || loading,
855
- "aria-label": "Send message",
856
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ArrowUpIcon, {})
857
- }
858
- )
859
- ] })
860
- ]
861
- }
862
- );
863
- }
864
-
865
- // src/components/KikuButton.tsx
866
- var import_react6 = require("react");
867
- var import_react_dom = require("react-dom");
868
- var import_sdk5 = require("@akropolys/sdk");
869
- var import_sdk6 = require("@akropolys/sdk");
870
-
871
- // src/components/ComparisonMatrix.tsx
872
- var import_sdk4 = require("@akropolys/sdk");
873
- var import_jsx_runtime7 = require("react/jsx-runtime");
874
- function normalizeKey(key) {
875
- let s = key.replace(/[_-]+/g, " ");
876
- s = s.replace(/([a-z])([A-Z])/g, "$1 $2");
877
- return s.split(" ").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
878
- }
879
- function getBaseGroup(normalized) {
880
- const norm = normalized.toLowerCase().trim();
881
- if (norm.startsWith("salary") || norm.startsWith("pay") || norm.startsWith("wage")) {
882
- return "Salary";
883
- }
884
- if (norm.startsWith("price") || norm.startsWith("cost") || norm.startsWith("rate")) {
885
- return "Price";
886
- }
887
- if (norm.startsWith("location") || norm.startsWith("address") || norm.startsWith("city")) {
888
- return "Location";
889
- }
890
- if (norm.startsWith("image") || norm.startsWith("photo") || norm.startsWith("pic") || norm.startsWith("thumb")) {
891
- return "Image";
892
- }
893
- if (norm.startsWith("title") || norm.startsWith("name") || norm.startsWith("label") || norm.startsWith("heading")) {
894
- return "Title";
895
- }
896
- return normalized;
897
- }
898
- function buildRows(products, displayConfig, defaultCurrency = "KES") {
899
- const rows = [];
900
- const resolved = products.map((p) => (0, import_sdk4.resolveDisplayFields)(p.fields || p, displayConfig));
901
- rows.push({
902
- label: "Product Preview",
903
- values: resolved.map((r) => r.image || null),
904
- type: "image"
905
- });
906
- const prices = resolved.map((r) => {
907
- const n = parseFloat(String(r.price ?? "").replace(/[^0-9.]/g, ""));
908
- return isNaN(n) ? null : n;
909
- });
910
- const priceLabels = products.map((p, i) => {
911
- const c = p.fields?.currency || p.currency || defaultCurrency;
912
- const n = prices[i];
913
- return n !== null ? `${c} ${n.toLocaleString("en-KE", { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : null;
914
- });
915
- const validPrices = prices.filter((p) => p !== null);
916
- const minPrice = validPrices.length ? Math.min(...validPrices) : null;
917
- rows.push({
918
- label: "Price",
919
- values: priceLabels,
920
- type: "price",
921
- bestIdx: minPrice !== null ? prices.indexOf(minPrice) : void 0
922
- });
923
- const keysToExclude = /* @__PURE__ */ new Set([
924
- "url",
925
- "fields",
926
- "id",
927
- "score",
928
- "currency",
929
- "status",
930
- "indexed_at",
931
- "indexedAt"
932
- ]);
933
- if (displayConfig) {
934
- Object.values(displayConfig).forEach((v) => {
935
- if (v) keysToExclude.add(v);
936
- });
937
- }
938
- const commonKeys = [
939
- "title",
940
- "name",
941
- "label",
942
- "headline",
943
- "subject",
944
- "job_title",
945
- "listing_title",
946
- "common_name",
947
- "product_name",
948
- "image",
949
- "images",
950
- "thumbnail",
951
- "photo",
952
- "cover",
953
- "featured_image",
954
- "hero_image",
955
- "listing_image",
956
- "logo",
957
- "price",
958
- "cost",
959
- "listingPrice",
960
- "rate",
961
- "fee",
962
- "startingFrom",
963
- "brand",
964
- "category",
965
- "location",
966
- "type",
967
- "variety",
968
- "make"
969
- ];
970
- commonKeys.forEach((k) => keysToExclude.add(k));
971
- const allFieldKeys = /* @__PURE__ */ new Set();
972
- products.forEach((p) => {
973
- const f = p.fields || p;
974
- if (f) {
975
- Object.keys(f).forEach((k) => {
976
- if (!keysToExclude.has(k)) {
977
- allFieldKeys.add(k);
978
- }
979
- });
980
- }
981
- });
982
- const groupedKeys = /* @__PURE__ */ new Map();
983
- allFieldKeys.forEach((k) => {
984
- const norm = normalizeKey(k);
985
- const base = getBaseGroup(norm);
986
- if (!groupedKeys.has(base)) {
987
- groupedKeys.set(base, []);
988
- }
989
- groupedKeys.get(base).push(k);
990
- });
991
- const sortedGroups = Array.from(groupedKeys.keys()).sort();
992
- sortedGroups.forEach((group) => {
993
- const originalKeys = groupedKeys.get(group);
994
- const values = products.map((p) => {
995
- const f = p.fields || p;
996
- if (!f) return null;
997
- for (const k of originalKeys) {
998
- if (f[k] !== void 0 && f[k] !== null) {
999
- if (typeof f[k] === "object") {
1000
- return JSON.stringify(f[k]);
1001
- }
1002
- return String(f[k]);
1003
- }
1004
- }
1005
- return null;
1006
- });
1007
- if (values.some((v) => v !== null)) {
1008
- rows.push({
1009
- label: group,
1010
- values,
1011
- type: "text"
1012
- });
1013
- }
1014
- });
1015
- const avail = products.map((s) => {
1016
- const f = s.fields || s;
1017
- const a = f.availability || "";
1018
- if (!a) return null;
1019
- if (/in.?stock/i.test(a)) return "In-Stock";
1020
- if (/out.?of.?stock/i.test(a)) return "Out of Stock";
1021
- return a;
1022
- });
1023
- if (avail.some(Boolean)) {
1024
- rows.push({ label: "Availability", values: avail, type: "availability" });
1025
- }
1026
- const cats = products.map((s) => {
1027
- const f = s.fields || s;
1028
- return f.category || null;
1029
- });
1030
- if (cats.some(Boolean)) rows.push({ label: "Category", values: cats });
1031
- return rows;
1032
- }
1033
- function ImageCell({ value, name }) {
1034
- if (!value) {
1035
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { fontSize: 28, textAlign: "center" }, children: "\u{1F4E6}" });
1036
- }
1037
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1038
- "img",
1039
- {
1040
- src: value,
1041
- alt: name,
1042
- style: {
1043
- width: 72,
1044
- height: 72,
1045
- objectFit: "contain",
1046
- borderRadius: 8,
1047
- background: "#f5f5f5",
1048
- display: "block"
1049
- }
1050
- }
1051
- );
1052
- }
1053
- function AvailabilityCell({ value }) {
1054
- if (!value) return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { style: { color: "#9ca3af" }, children: "\u2014" });
1055
- const inStock = /in.?stock/i.test(value);
1056
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { style: { display: "flex", alignItems: "center", gap: 6, fontSize: 13, color: "var(--hsk-text, #111827)" }, children: [
1057
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { style: {
1058
- width: 8,
1059
- height: 8,
1060
- borderRadius: "50%",
1061
- flexShrink: 0,
1062
- background: inStock ? "#22c55e" : "#ef4444",
1063
- boxShadow: inStock ? "0 0 0 3px rgba(34,197,94,0.2)" : "0 0 0 3px rgba(239,68,68,0.2)",
1064
- display: "inline-block"
1065
- } }),
1066
- value
1067
- ] });
1068
- }
1069
- function ComparisonMatrix({ sources, defaultCurrency = "KES", displayConfig }) {
1070
- if (!sources || sources.length < 2) return null;
1071
- const products = sources.slice(0, 3);
1072
- const rows = buildRows(products, displayConfig, defaultCurrency);
1073
- const colTemplate = `140px repeat(${products.length}, 1fr)`;
1074
- const labelStyle = {
1075
- padding: "10px 12px",
1076
- fontSize: 11,
1077
- fontWeight: 700,
1078
- color: "var(--hsk-text-muted, #4b5563)",
1079
- textTransform: "uppercase",
1080
- letterSpacing: "0.05em",
1081
- borderBottom: "1px solid var(--hsk-border, rgba(0,0,0,0.07))",
1082
- verticalAlign: "middle",
1083
- whiteSpace: "nowrap",
1084
- display: "flex",
1085
- alignItems: "center"
1086
- };
1087
- const cellBase = {
1088
- padding: "10px 14px",
1089
- fontSize: 13,
1090
- color: "var(--hsk-text, #111827)",
1091
- borderBottom: "1px solid var(--hsk-border, rgba(0,0,0,0.07))",
1092
- verticalAlign: "middle",
1093
- display: "flex",
1094
- alignItems: "center"
1095
- };
1096
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1097
- "div",
1098
- {
1099
- className: "hsk-compare-matrix",
1100
- style: {
1101
- marginTop: 10,
1102
- borderRadius: 12,
1103
- overflow: "hidden",
1104
- border: "1px solid var(--hsk-border, rgba(0,0,0,0.09))",
1105
- background: "var(--hsk-surface, #fff)",
1106
- fontSize: 13
1107
- },
1108
- children: [
1109
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: { display: "grid", gridTemplateColumns: colTemplate, background: "var(--hsk-surface2, #f9fafb)", borderBottom: "2px solid var(--hsk-border, rgba(0,0,0,0.09))" }, children: [
1110
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { ...labelStyle, borderBottom: "none", color: "var(--hsk-text, #111)", fontSize: 12 }, children: "Feature" }),
1111
- products.map((p, i) => {
1112
- const { title } = (0, import_sdk4.resolveDisplayFields)(p.fields || p, displayConfig);
1113
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1114
- "a",
1115
- {
1116
- href: p.url || "#",
1117
- target: "_blank",
1118
- rel: "noopener noreferrer",
1119
- style: {
1120
- display: "flex",
1121
- alignItems: "center",
1122
- padding: "10px 14px",
1123
- fontSize: 12,
1124
- fontWeight: 700,
1125
- color: "var(--hsk-primary, #16a34a)",
1126
- textDecoration: "none",
1127
- lineHeight: 1.3,
1128
- borderLeft: i > 0 ? "1px solid var(--hsk-border, rgba(0,0,0,0.07))" : "none"
1129
- },
1130
- children: title
1131
- },
1132
- i
1133
- );
1134
- })
1135
- ] }),
1136
- rows.map((row, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1137
- "div",
1138
- {
1139
- style: {
1140
- display: "grid",
1141
- gridTemplateColumns: colTemplate,
1142
- background: rowIdx % 2 === 1 ? "var(--hsk-surface2, rgba(0,0,0,0.015))" : "transparent"
1143
- },
1144
- children: [
1145
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: labelStyle, children: row.label }),
1146
- products.map((p, i) => {
1147
- const val = row.values[i];
1148
- const isBest = row.bestIdx === i && row.values.filter(Boolean).length > 1;
1149
- const { title } = (0, import_sdk4.resolveDisplayFields)(p.fields || p, displayConfig);
1150
- if (row.type === "image") {
1151
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { ...cellBase, justifyContent: "center", padding: "12px", borderLeft: i > 0 ? "1px solid var(--hsk-border, rgba(0,0,0,0.07))" : "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ImageCell, { value: val, name: title }) }, i);
1152
- }
1153
- if (row.type === "availability") {
1154
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { ...cellBase, borderLeft: i > 0 ? "1px solid var(--hsk-border, rgba(0,0,0,0.07))" : "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(AvailabilityCell, { value: val }) }, i);
1155
- }
1156
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1157
- "div",
1158
- {
1159
- style: {
1160
- ...cellBase,
1161
- fontWeight: isBest ? 700 : 400,
1162
- color: isBest ? "var(--hsk-primary, #ea580c)" : row.type === "price" ? "var(--hsk-text, #374151)" : "var(--hsk-text, #111827)",
1163
- borderLeft: i > 0 ? "1px solid var(--hsk-border, rgba(0,0,0,0.07))" : "none"
1164
- },
1165
- children: val ?? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { style: { color: "#9ca3af" }, children: "\u2014" })
1166
- },
1167
- i
1168
- );
1169
- })
1170
- ]
1171
- },
1172
- rowIdx
1173
- ))
1174
- ]
1175
- }
1176
- );
1177
- }
1178
-
1179
- // src/components/MarkupEditor.tsx
1180
- var import_react5 = require("react");
1181
- var import_jsx_runtime8 = require("react/jsx-runtime");
1182
- var COLORS = ["#111111", "#ff5a5a", "#ffb300", "#22c55e", "#06b6d4", "#d946ef", "#9ca3af"];
1183
- var MAX_EXPORT_DIM = 1280;
1184
- function MarkupEditor({ src, onCancel, onSend }) {
1185
- const [img, setImg] = (0, import_react5.useState)(null);
1186
- const [loadError, setLoadError] = (0, import_react5.useState)(false);
1187
- const [tool, setTool] = (0, import_react5.useState)("pen");
1188
- const [color, setColor] = (0, import_react5.useState)(COLORS[1]);
1189
- const [actions, setActions] = (0, import_react5.useState)([]);
1190
- const [pendingText, setPendingText] = (0, import_react5.useState)(null);
1191
- const [textValue, setTextValue] = (0, import_react5.useState)("");
1192
- const [instruction, setInstruction] = (0, import_react5.useState)("");
1193
- const [exportError, setExportError] = (0, import_react5.useState)(false);
1194
- const canvasRef = (0, import_react5.useRef)(null);
1195
- const drawingRef = (0, import_react5.useRef)(null);
1196
- const textInputRef = (0, import_react5.useRef)(null);
1197
- (0, import_react5.useEffect)(() => {
1198
- const el = new Image();
1199
- el.crossOrigin = "anonymous";
1200
- el.onload = () => setImg(el);
1201
- el.onerror = () => setLoadError(true);
1202
- el.src = src;
1203
- }, [src]);
1204
- const dims = (() => {
1205
- if (!img) return { w: 0, h: 0 };
1206
- const scale = Math.min(1, MAX_EXPORT_DIM / Math.max(img.naturalWidth, img.naturalHeight));
1207
- return { w: Math.round(img.naturalWidth * scale), h: Math.round(img.naturalHeight * scale) };
1208
- })();
1209
- const markLayer = (0, import_react5.useRef)(null);
1210
- const paint = (live) => {
1211
- const canvas = canvasRef.current;
1212
- if (!canvas || !img) return;
1213
- const ctx = canvas.getContext("2d");
1214
- if (!ctx) return;
1215
- if (!markLayer.current) markLayer.current = document.createElement("canvas");
1216
- const layer = markLayer.current;
1217
- layer.width = canvas.width;
1218
- layer.height = canvas.height;
1219
- const lctx = layer.getContext("2d");
1220
- const all = live ? [...actions, live] : actions;
1221
- for (const a of all) {
1222
- if (a.kind === "stroke") {
1223
- lctx.save();
1224
- lctx.globalCompositeOperation = a.tool === "eraser" ? "destination-out" : "source-over";
1225
- lctx.strokeStyle = a.color;
1226
- lctx.lineWidth = a.tool === "eraser" ? a.size * 3 : a.size;
1227
- lctx.lineCap = "round";
1228
- lctx.lineJoin = "round";
1229
- lctx.beginPath();
1230
- a.points.forEach((p, i) => i === 0 ? lctx.moveTo(p.x, p.y) : lctx.lineTo(p.x, p.y));
1231
- if (a.points.length === 1) lctx.lineTo(a.points[0].x + 0.01, a.points[0].y);
1232
- lctx.stroke();
1233
- lctx.restore();
1234
- } else {
1235
- lctx.save();
1236
- lctx.fillStyle = a.color;
1237
- lctx.font = `600 ${a.size}px system-ui, sans-serif`;
1238
- lctx.fillText(a.value, a.x, a.y);
1239
- lctx.restore();
1240
- }
1241
- }
1242
- ctx.clearRect(0, 0, canvas.width, canvas.height);
1243
- ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
1244
- ctx.drawImage(layer, 0, 0);
1245
- };
1246
- (0, import_react5.useEffect)(() => {
1247
- paint();
1248
- }, [img, actions, dims.w, dims.h]);
1249
- (0, import_react5.useEffect)(() => {
1250
- if (pendingText) textInputRef.current?.focus();
1251
- }, [pendingText]);
1252
- const toCanvasPoint = (e) => {
1253
- const canvas = canvasRef.current;
1254
- const rect = canvas.getBoundingClientRect();
1255
- return {
1256
- x: (e.clientX - rect.left) / rect.width * canvas.width,
1257
- y: (e.clientY - rect.top) / rect.height * canvas.height
1258
- };
1259
- };
1260
- const strokeSize = () => Math.max(4, Math.round(dims.w / 180));
1261
- const textSize = () => Math.max(18, Math.round(dims.w / 28));
1262
- const onPointerDown = (e) => {
1263
- if (!img) return;
1264
- const p = toCanvasPoint(e);
1265
- if (tool === "text") {
1266
- setPendingText({ x: p.x, y: p.y });
1267
- setTextValue("");
1268
- return;
1269
- }
1270
- e.target.setPointerCapture(e.pointerId);
1271
- drawingRef.current = { kind: "stroke", tool, color, size: strokeSize(), points: [p] };
1272
- paint(drawingRef.current);
1273
- };
1274
- const onPointerMove = (e) => {
1275
- if (!drawingRef.current) return;
1276
- drawingRef.current.points.push(toCanvasPoint(e));
1277
- paint(drawingRef.current);
1278
- };
1279
- const onPointerUp = () => {
1280
- if (!drawingRef.current) return;
1281
- const done = drawingRef.current;
1282
- drawingRef.current = null;
1283
- setActions((prev) => [...prev, done]);
1284
- };
1285
- const commitText = () => {
1286
- if (pendingText && textValue.trim()) {
1287
- setActions((prev) => [...prev, { kind: "text", x: pendingText.x, y: pendingText.y, color, value: textValue.trim(), size: textSize() }]);
1288
- }
1289
- setPendingText(null);
1290
- setTextValue("");
1291
- };
1292
- const handleSend = () => {
1293
- const canvas = canvasRef.current;
1294
- if (!canvas) return;
1295
- try {
1296
- paint();
1297
- const dataUrl = canvas.toDataURL("image/jpeg", 0.92);
1298
- onSend(dataUrl, instruction.trim());
1299
- } catch {
1300
- setExportError(true);
1301
- }
1302
- };
1303
- const hasMarks = actions.length > 0;
1304
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "hsk-markup", role: "dialog", "aria-label": "Mark up image", children: [
1305
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "hsk-markup-head", children: [
1306
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "hsk-markup-title", children: "Mark where you want the change" }),
1307
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { className: "hsk-markup-cancel", onClick: onCancel, children: "Cancel" })
1308
- ] }),
1309
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "hsk-markup-stage", children: loadError ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "hsk-markup-error", children: "This image can't be edited here." }) : !img ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "hsk-markup-loading", children: "Loading image\u2026" }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "hsk-markup-canvas-wrap", children: [
1310
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1311
- "canvas",
1312
- {
1313
- ref: canvasRef,
1314
- width: dims.w,
1315
- height: dims.h,
1316
- className: `hsk-markup-canvas hsk-markup-canvas--${tool}`,
1317
- onPointerDown,
1318
- onPointerMove,
1319
- onPointerUp,
1320
- onPointerLeave: onPointerUp
1321
- }
1322
- ),
1323
- pendingText && canvasRef.current && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1324
- "input",
1325
- {
1326
- ref: textInputRef,
1327
- className: "hsk-markup-textinput",
1328
- style: {
1329
- left: `${pendingText.x / dims.w * 100}%`,
1330
- top: `${pendingText.y / dims.h * 100}%`,
1331
- color
1332
- },
1333
- value: textValue,
1334
- placeholder: "Type, then Enter",
1335
- onChange: (e) => setTextValue(e.target.value),
1336
- onKeyDown: (e) => {
1337
- if (e.key === "Enter") commitText();
1338
- if (e.key === "Escape") {
1339
- setPendingText(null);
1340
- setTextValue("");
1341
- }
1342
- },
1343
- onBlur: commitText
1344
- }
1345
- )
1346
- ] }) }),
1347
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "hsk-markup-tools", children: [
1348
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "hsk-markup-colors", children: COLORS.map((c) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1349
- "button",
1350
- {
1351
- className: `hsk-markup-color${color === c ? " hsk-markup-color--on" : ""}`,
1352
- style: { background: c },
1353
- onClick: () => {
1354
- setColor(c);
1355
- if (tool === "eraser") setTool("pen");
1356
- },
1357
- "aria-label": `Colour ${c}`
1358
- },
1359
- c
1360
- )) }),
1361
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "hsk-markup-actions", children: [
1362
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { className: `hsk-markup-tool${tool === "pen" ? " hsk-markup-tool--on" : ""}`, onClick: () => setTool("pen"), children: "Sketch" }),
1363
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { className: `hsk-markup-tool${tool === "text" ? " hsk-markup-tool--on" : ""}`, onClick: () => setTool("text"), children: "Text" }),
1364
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { className: `hsk-markup-tool${tool === "eraser" ? " hsk-markup-tool--on" : ""}`, onClick: () => setTool("eraser"), children: "Eraser" }),
1365
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { className: "hsk-markup-tool", onClick: () => setActions((prev) => prev.slice(0, -1)), disabled: !hasMarks, children: "Undo" }),
1366
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { className: "hsk-markup-tool", onClick: () => setActions([]), disabled: !hasMarks, children: "Clear" })
1367
- ] })
1368
- ] }),
1369
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "hsk-markup-send", children: [
1370
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1371
- "input",
1372
- {
1373
- className: "hsk-markup-instruction",
1374
- value: instruction,
1375
- placeholder: "Describe the change \u2014 e.g. add the sofa here",
1376
- onChange: (e) => setInstruction(e.target.value),
1377
- onKeyDown: (e) => {
1378
- if (e.key === "Enter" && (hasMarks || instruction.trim())) handleSend();
1379
- }
1380
- }
1381
- ),
1382
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1383
- "button",
1384
- {
1385
- className: "hsk-markup-go",
1386
- onClick: handleSend,
1387
- disabled: !img || !hasMarks && !instruction.trim(),
1388
- children: "Send"
1389
- }
1390
- )
1391
- ] }),
1392
- exportError && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "hsk-markup-error", children: "Couldn't process this image \u2014 try a newer visualization." })
1393
- ] });
1394
- }
1395
-
1396
- // src/components/KikuButton.tsx
1397
- var import_jsx_runtime9 = require("react/jsx-runtime");
1398
- var KikuIcon = ({ className, size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1399
- "svg",
1400
- {
1401
- className: cn("hsk-brand-mark", className),
1402
- width: size,
1403
- height: size,
1404
- viewBox: "0 0 100 100",
1405
- xmlns: "http://www.w3.org/2000/svg",
1406
- "aria-label": "kiku",
1407
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("g", { transform: "translate(22.7 19) scale(0.62)", fill: "currentColor", fillRule: "evenodd", children: [
1408
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M39.4 10.4 Q44 0 48.6 10.4 L86.1 95.8 Q88 100 83.4 100 L4.6 100 Q0 100 1.9 95.8 Z M24 100 L24 65 Q24 60 27.4 56.3 Q44 38 60.6 56.3 Q64 60 64 65 L64 100 Z" }),
1409
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "55", cy: "82", r: "3.4" })
1410
- ] })
1411
- }
1412
- );
1413
- var SparkleIcon2 = KikuIcon;
1414
- var StopIcon = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("rect", { x: "5", y: "5", width: "14", height: "14", rx: "2" }) });
1415
- var ExternalIcon = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1416
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }),
1417
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("polyline", { points: "15 3 21 3 21 9" }),
1418
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
1419
- ] });
1420
- var ContinueIcon = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M8 5v14l11-7z" }) });
1421
- var CloseIcon = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
1422
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
1423
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
1424
- ] });
1425
- var ChevronRightIcon = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "m9 18 6-6-6-6" }) });
1426
- var HistoryIcon = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1427
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }),
1428
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M3 3v5h5" }),
1429
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M12 7v5l4 2" })
1430
- ] });
1431
- var BookmarkIcon = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M19 21 12 16l-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z" }) });
1432
- var TrashIcon = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1433
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M3 6h18" }),
1434
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })
1435
- ] });
1436
- var PaperclipIcon = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48" }) });
1437
- var MicIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1438
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3z" }),
1439
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M19 10v2a7 7 0 0 1-14 0v-2" }),
1440
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "12", y1: "19", x2: "12", y2: "22" })
1441
- ] });
1442
- var MicOffIcon = () => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1443
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "2", y1: "2", x2: "22", y2: "22" }),
1444
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M18.89 13.23A7.12 7.12 0 0 0 19 12v-2" }),
1445
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M5 10v2a7 7 0 0 0 12 5" }),
1446
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M15 9.34V5a3 3 0 0 0-5.68-1.33" }),
1447
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M9 9v3a3 3 0 0 0 5.12 2.12" }),
1448
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "12", y1: "19", x2: "12", y2: "22" })
1449
- ] });
1450
- var DEFAULT_CHIPS = [];
1451
- function extractName(raw) {
1452
- let s = raw.trim();
1453
- if (!s || s.length > 40 || s.includes("?")) return null;
1454
- s = s.replace(/^(hi|hey|hello|yo)[,!.\s]+/i, "");
1455
- s = s.replace(/^(i['’]?m|im|my name is|call me|it['’]?s|this is|name['’]?s)\s+/i, "");
1456
- s = s.trim().replace(/[.!,]+$/, "");
1457
- const words = s.split(/\s+/);
1458
- if (words.length === 0 || words.length > 3) return null;
1459
- if (!/^[\p{L}][\p{L}\-'’ ]{0,30}$/u.test(s)) return null;
1460
- const q = s.toLowerCase();
1461
- const queryish = ["phone", "laptop", "tv", "cheap", "best", "under", "buy", "search", "find", "show", "need", "want", "price", "sofa", "shoe", "headphone", "camera", "gift", "help"];
1462
- if (queryish.some((w) => q.includes(w))) return null;
1463
- const name = words[0];
1464
- return name.charAt(0).toUpperCase() + name.slice(1);
1465
- }
1466
- function parseAtKiku(raw) {
1467
- const trimmed = raw.trim();
1468
- if (!/^@kiku\b/i.test(trimmed)) return null;
1469
- const rest = trimmed.slice(5).trim();
1470
- if (rest === "" || /^(capture|save)\b/i.test(rest)) {
1471
- return {
1472
- intent: "capture",
1473
- cleanQuery: rest.replace(/^(capture|save)\s*/i, "").trim() || trimmed
1474
- };
1475
- }
1476
- if (/^(history|what have you|show my|my items|what did you|saved|captures|recall)\b/i.test(rest)) {
1477
- return { intent: "view_history", cleanQuery: "show my saved items" };
1478
- }
1479
- if (/^(delete|forget|remove|unsave)\b/i.test(rest)) {
1480
- return {
1481
- intent: "delete",
1482
- cleanQuery: rest.replace(/^(delete|forget|remove|unsave)\s*/i, "").trim() || trimmed
1483
- };
1484
- }
1485
- return { intent: "capture", cleanQuery: rest || trimmed };
1486
- }
1487
- function KikuPickerMenu({
1488
- sources,
1489
- referencedIds,
1490
- defaultCurrency,
1491
- onCapture,
1492
- onCaptureAll,
1493
- onViewHistory,
1494
- onDelete,
1495
- onDismiss
1496
- }) {
1497
- const discussed = sources.filter((s) => s.id && referencedIds.includes(s.id));
1498
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1499
- "div",
1500
- {
1501
- className: "hsk-kiku-picker",
1502
- role: "menu",
1503
- "aria-label": "@kiku commands",
1504
- onMouseDown: (e) => e.preventDefault(),
1505
- children: [
1506
- discussed.map((src, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1507
- "button",
1508
- {
1509
- className: "hsk-kiku-picker-item",
1510
- role: "menuitem",
1511
- onClick: () => {
1512
- onCapture(src);
1513
- onDismiss();
1514
- },
1515
- children: [
1516
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-icon", children: src.image ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("img", { src: src.image, alt: "" }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(BookmarkIcon, {}) }),
1517
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-item-name", children: src.name }),
1518
- src.price && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: "hsk-kiku-picker-item-price", children: [
1519
- src.currency ?? defaultCurrency,
1520
- " ",
1521
- parseFloat(String(src.price).replace(/[^0-9.]/g, "") || "0").toLocaleString()
1522
- ] })
1523
- ]
1524
- },
1525
- src.id ?? i
1526
- )),
1527
- discussed.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1528
- "button",
1529
- {
1530
- className: "hsk-kiku-picker-item",
1531
- role: "menuitem",
1532
- onClick: () => {
1533
- onCaptureAll(discussed);
1534
- onDismiss();
1535
- },
1536
- children: [
1537
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-icon", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(BookmarkIcon, {}) }),
1538
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: "hsk-kiku-picker-item-name", children: [
1539
- "Capture all (",
1540
- discussed.length,
1541
- ")"
1542
- ] })
1543
- ]
1544
- }
1545
- ),
1546
- discussed.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1547
- "button",
1548
- {
1549
- className: "hsk-kiku-picker-item",
1550
- role: "menuitem",
1551
- onClick: () => {
1552
- onCapture({ name: "current page", id: void 0 });
1553
- onDismiss();
1554
- },
1555
- children: [
1556
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-icon", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(BookmarkIcon, {}) }),
1557
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-item-name", children: "Capture current page" })
1558
- ]
1559
- }
1560
- ),
1561
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1562
- "button",
1563
- {
1564
- className: "hsk-kiku-picker-item",
1565
- role: "menuitem",
1566
- onClick: () => {
1567
- onViewHistory();
1568
- onDismiss();
1569
- },
1570
- children: [
1571
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-icon", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(HistoryIcon, {}) }),
1572
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-item-name", children: "What have you saved?" })
1573
- ]
1574
- }
1575
- ),
1576
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1577
- "button",
1578
- {
1579
- className: "hsk-kiku-picker-item",
1580
- role: "menuitem",
1581
- onClick: () => {
1582
- onDelete();
1583
- onDismiss();
1584
- },
1585
- children: [
1586
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-icon", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TrashIcon, {}) }),
1587
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-item-name", children: "Delete this" })
1588
- ]
1589
- }
1590
- )
1591
- ]
1592
- }
1593
- );
1594
- }
1595
- function AtPickerMenu({ onSelect, onDismiss }) {
1596
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1597
- "div",
1598
- {
1599
- className: "hsk-kiku-picker",
1600
- role: "menu",
1601
- "aria-label": "Extensions",
1602
- onMouseDown: (e) => e.preventDefault(),
1603
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1604
- "button",
1605
- {
1606
- className: "hsk-kiku-picker-item",
1607
- role: "menuitem",
1608
- onClick: () => onSelect("@kiku"),
1609
- children: [
1610
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-icon hsk-kiku-picker-icon--accent", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, {}) }),
1611
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-picker-item-name", children: "kiku \u2014 capture & remember" })
1612
- ]
1613
- }
1614
- )
1615
- }
1616
- );
1617
- }
1618
- function SourceImg({ src, alt, onImageClick }) {
1619
- const [failed, setFailed] = (0, import_react6.useState)(false);
1620
- if (failed) {
1621
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { width: "100%", height: "100%", display: "flex", alignItems: "center", justifyContent: "center", background: "var(--hsk-chat-source-bg, rgba(0,0,0,.04))", color: "var(--hsk-chat-muted, #888)" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, {}) });
1622
- }
1623
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1624
- "img",
1625
- {
1626
- src,
1627
- alt: alt ?? "",
1628
- onError: () => setFailed(true),
1629
- onClick: onImageClick ? (e) => {
1630
- e.stopPropagation();
1631
- onImageClick(src);
1632
- } : void 0
1633
- }
1634
- );
1635
- }
1636
- function SourcesCarousel({ sources, defaultCurrency, onSelectSource, onImageClick, referencedIds = [], compact = false }) {
1637
- const client = (0, import_sdk6.useAkropolysContext)();
1638
- const isProperty = client?.vertical === "property";
1639
- const railRef = (0, import_react6.useRef)(null);
1640
- const [showNext, setShowNext] = (0, import_react6.useState)(false);
1641
- const measure = (0, import_react6.useCallback)(() => {
1642
- const el = railRef.current;
1643
- if (!el) return;
1644
- const atEnd = el.scrollLeft + el.clientWidth >= el.scrollWidth - 8;
1645
- setShowNext(el.scrollWidth > el.clientWidth + 4 && !atEnd);
1646
- }, []);
1647
- (0, import_react6.useEffect)(() => {
1648
- measure();
1649
- const el = railRef.current;
1650
- if (!el) return;
1651
- const ro = new ResizeObserver(measure);
1652
- ro.observe(el);
1653
- el.addEventListener("scroll", measure, { passive: true });
1654
- return () => {
1655
- ro.disconnect();
1656
- el.removeEventListener("scroll", measure);
1657
- };
1658
- }, [measure, sources]);
1659
- const scrollNext = () => {
1660
- railRef.current?.scrollBy({ left: 170, behavior: "smooth" });
1661
- };
1662
- const display = sources.filter((s) => s.id && referencedIds.includes(s.id));
1663
- if (display.length === 0) return null;
1664
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: cn("hsk-cb-sources-wrap", compact && "hsk-cb-sources-wrap--compact"), children: [
1665
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-sources", ref: railRef, children: display.map((src, si) => {
1666
- const isReferenced = !!(src.id && referencedIds.includes(src.id));
1667
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1668
- "div",
1669
- {
1670
- className: cn("hsk-cb-source", isReferenced && "hsk-cb-source--referenced"),
1671
- style: { animationDelay: `${si * 50}ms` },
1672
- onClick: () => onSelectSource?.(src),
1673
- children: [
1674
- src.image ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-src-imgwrap", style: { position: "relative" }, children: [
1675
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SourceImg, { src: src.image, alt: src.name, onImageClick }),
1676
- isReferenced && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-source-ref-badge", title: "Featured in response", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, { size: 10 }) }),
1677
- isProperty && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: {
1678
- position: "absolute",
1679
- top: "6px",
1680
- right: "6px",
1681
- background: "rgba(14, 14, 15, 0.75)",
1682
- backdropFilter: "blur(4px)",
1683
- borderRadius: "50%",
1684
- width: "24px",
1685
- height: "24px",
1686
- display: "flex",
1687
- alignItems: "center",
1688
- justifyContent: "center",
1689
- color: "#fbbf24",
1690
- // Gold sparkle badge
1691
- boxShadow: "0 2px 4px rgba(0,0,0,0.2)"
1692
- }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, { size: 12 }) })
1693
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-src-imgwrap-empty", style: { position: "relative" }, children: [
1694
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, {}),
1695
- isReferenced && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-source-ref-badge", title: "Featured in response", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, { size: 10 }) })
1696
- ] }),
1697
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-src-info", children: [
1698
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-src-name", children: src.name }),
1699
- src.price && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-src-price", children: [
1700
- src.currency ?? defaultCurrency,
1701
- " ",
1702
- parseFloat(String(src.price).replace(/[^0-9.]/g, "") || "0").toLocaleString()
1703
- ] })
1704
- ] })
1705
- ]
1706
- },
1707
- src.id ?? si
1708
- );
1709
- }) }),
1710
- showNext && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
1711
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1712
- "div",
1713
- {
1714
- className: "hsk-cb-sources-fade",
1715
- style: { background: "linear-gradient(to right, transparent, var(--hsk-fade-bg, #0e0e0f))" }
1716
- }
1717
- ),
1718
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { className: "hsk-cb-sources-next", onClick: scrollNext, "aria-label": "See more", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ChevronRightIcon, {}) })
1719
- ] })
1720
- ] });
1721
- }
1722
- function stripMarkdownTables(content) {
1723
- const lines = content.split("\n");
1724
- const out = [];
1725
- for (const line of lines) {
1726
- if (line.trim().startsWith("|")) continue;
1727
- out.push(line);
1728
- }
1729
- return out.join("\n").replace(/\n{3,}/g, "\n\n").trim();
1730
- }
1731
- function SmartContextPills({
1732
- intent,
1733
- sources,
1734
- onSend,
1735
- loading
1736
- }) {
1737
- const client = (0, import_sdk6.useAkropolysContext)();
1738
- const isProperty = client?.vertical === "property";
1739
- if (!intent) return null;
1740
- const pills = [];
1741
- const cheapest = sources.length > 0 ? sources.reduce((min, s) => {
1742
- const p = parseFloat(String(s.price ?? "").replace(/[^0-9.]/g, ""));
1743
- const m = parseFloat(String(min.price ?? "").replace(/[^0-9.]/g, ""));
1744
- return !isNaN(p) && (isNaN(m) || p < m) ? s : min;
1745
- }, sources[0]) : null;
1746
- const firstName = sources[0]?.name ?? "";
1747
- const firstTwo = sources.slice(0, 2).map((s) => s.name);
1748
- if (intent === "search" && sources.length > 0) {
1749
- if (firstTwo.length >= 2) {
1750
- pills.push({
1751
- emoji: "\u2696\uFE0F",
1752
- label: "Compare top 2",
1753
- query: `Compare the ${firstTwo[0]} and ${firstTwo[1]}`
1754
- });
1755
- }
1756
- if (cheapest && !isProperty && cheapest.name) {
1757
- const short = cheapest.name.split(" ").slice(0, 3).join(" ");
1758
- pills.push({
1759
- emoji: "\u{1F4A1}",
1760
- label: `More on ${short}`,
1761
- query: `Tell me more about the ${cheapest.name}`
1762
- });
1763
- }
1764
- if (isProperty) {
1765
- pills.push({ emoji: "\u{1F4B0}", label: "Under KSh 5M", query: "Show me options under KSh 5,000,000" });
1766
- } else {
1767
- pills.push({ emoji: "\u{1F4B0}", label: "Under KSh 20K", query: "Show me options under KSh 20,000" });
1768
- }
1769
- } else if (intent === "compare" && sources.length > 0) {
1770
- if (firstName) {
1771
- pills.push({
1772
- emoji: "\u{1F50D}",
1773
- label: "Similar options",
1774
- query: isProperty ? `Show me more properties similar to the ${firstName}` : `Show me more products similar to the ${firstName}`
1775
- });
1776
- }
1777
- pills.push({ emoji: "\u{1F4A1}", label: "Which is best?", query: "Which one would you recommend and why?" });
1778
- } else if (intent === "specs" && sources.length > 0) {
1779
- if (firstName) {
1780
- pills.push({
1781
- emoji: "\u{1F504}",
1782
- label: "Find alternatives",
1783
- query: `What are good alternatives to the ${firstName}?`
1784
- });
1785
- }
1786
- } else if (intent === "general") {
1787
- if (isProperty) {
1788
- pills.push({ emoji: "\u{1F50D}", label: "Show popular listings", query: "What are your most popular properties?" });
1789
- } else {
1790
- pills.push({ emoji: "\u{1F50D}", label: "Show popular items", query: "What are your most popular products?" });
1791
- }
1792
- pills.push({ emoji: "\u{1F4A1}", label: "Recommend something", query: "What do you recommend for me?" });
1793
- }
1794
- if (pills.length === 0) return null;
1795
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-action-pills", children: pills.map((pill) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1796
- "button",
1797
- {
1798
- className: "hsk-action-pill",
1799
- onClick: () => onSend(pill.query),
1800
- disabled: loading,
1801
- children: [
1802
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-pill-emoji", children: pill.emoji }),
1803
- pill.label
1804
- ]
1805
- },
1806
- pill.query
1807
- )) });
1808
- }
1809
- var getFriendlyError = (err) => {
1810
- let str = "";
1811
- if (typeof err === "string") str = err;
1812
- else if (err && typeof err === "object" && err.message) str = err.message;
1813
- else try {
1814
- str = JSON.stringify(err);
1815
- } catch {
1816
- str = String(err);
1817
- }
1818
- const lower = str.toLowerCase();
1819
- if (lower.includes("429") || lower.includes("too many requests") || lower.includes("requests per minute limit exceeded") || lower.includes("too_many_requests_error") || lower.includes("request_quota_exceeded") || lower.includes("quota")) {
1820
- return "The assistant is currently receiving too many requests. Please try again in a few moments.";
1821
- }
1822
- if (lower.includes("token limit")) {
1823
- return "You've reached your usage limit. Please update your billing limits in your dashboard to continue.";
1824
- }
1825
- if (lower.includes("failed to fetch") || lower.includes("networkerror") || lower.includes("request failed")) {
1826
- return "The assistant couldn't respond just now \u2014 please try again in a moment.";
1827
- }
1828
- try {
1829
- const parsed = JSON.parse(str);
1830
- return parsed.error || parsed.message || str;
1831
- } catch {
1832
- return str;
1833
- }
1834
- };
1835
- var KIKU_KEY_REVEAL_SECONDS = 60;
1836
- function parseThinking(text) {
1837
- const openMatch = text.match(/<\s*thinking\s*>/i);
1838
- if (!openMatch) {
1839
- return { thinking: "", content: text, isComplete: true };
1840
- }
1841
- const openIdx = openMatch.index ?? 0;
1842
- const openTagLength = openMatch[0].length;
1843
- const start = openIdx + openTagLength;
1844
- const contentBefore = text.slice(0, openIdx);
1845
- const textAfterOpen = text.slice(start);
1846
- const closeMatch = textAfterOpen.match(/<\/\s*thinking\s*>/i);
1847
- if (!closeMatch) {
1848
- return {
1849
- thinking: textAfterOpen,
1850
- content: contentBefore,
1851
- isComplete: false
1852
- };
1853
- }
1854
- const closeIdx = closeMatch.index ?? 0;
1855
- const closeTagLength = closeMatch[0].length;
1856
- return {
1857
- thinking: textAfterOpen.slice(0, closeIdx),
1858
- content: contentBefore + textAfterOpen.slice(closeIdx + closeTagLength),
1859
- isComplete: true
1860
- };
1861
- }
1862
- function ThinkingBlock({ text, isComplete, seconds: fixedSeconds }) {
1863
- const startRef = (0, import_react6.useRef)(Date.now());
1864
- const [seconds, setSeconds] = (0, import_react6.useState)(() => isComplete ? null : 0);
1865
- const [isOpen, setIsOpen] = (0, import_react6.useState)(!isComplete);
1866
- (0, import_react6.useEffect)(() => {
1867
- if (isComplete) {
1868
- if (seconds !== null) {
1869
- setSeconds(Math.max(1, Math.round((Date.now() - startRef.current) / 1e3)));
1870
- setIsOpen(false);
1871
- }
1872
- return;
1873
- }
1874
- setIsOpen(true);
1875
- const t = setInterval(() => {
1876
- setSeconds(Math.round((Date.now() - startRef.current) / 1e3));
1877
- }, 1e3);
1878
- return () => clearInterval(t);
1879
- }, [isComplete]);
1880
- const finalSeconds = fixedSeconds ?? seconds;
1881
- const label = isComplete ? finalSeconds !== null && finalSeconds !== void 0 ? `Thought for ${finalSeconds}s` : "Thought process" : `Thinking${seconds ? ` \xB7 ${seconds}s` : "\u2026"}`;
1882
- const expandable = !!text;
1883
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: cn("hsk-cb-think", !isComplete && "hsk-cb-think--live"), children: [
1884
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1885
- "button",
1886
- {
1887
- type: "button",
1888
- className: cn("hsk-cb-think-head", !expandable && "hsk-cb-think-head--static"),
1889
- onClick: expandable ? () => setIsOpen((o) => !o) : void 0,
1890
- "aria-expanded": expandable ? isOpen : void 0,
1891
- children: [
1892
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: !isComplete ? "hsk-cb-think-spin" : void 0, children: [
1893
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
1894
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M12 6v6l4 2" })
1895
- ] }),
1896
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: label }),
1897
- expandable && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: cn("hsk-cb-think-chevron", isOpen && "hsk-cb-think-chevron--open"), children: "\u25B6" })
1898
- ]
1899
- }
1900
- ),
1901
- expandable && isOpen && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-think-body", children: text })
1902
- ] });
1903
- }
1904
- function ChatModal({
1905
- title = "kiku",
1906
- placeholder = "Ask me anything\u2026",
1907
- backdropColor,
1908
- backdropBlur,
1909
- onClose,
1910
- onSelectSource,
1911
- defaultCurrency = "KES",
1912
- chips = DEFAULT_CHIPS,
1913
- theme,
1914
- classNames = {},
1915
- enableVoice = false,
1916
- voiceLang,
1917
- enableVision = false,
1918
- visionCategoryHint
1919
- }) {
1920
- const client = (0, import_sdk6.useAkropolysContext)();
1921
- const { messages, sources, loading, streaming, error, lastAction, lastIntent, send, stop, stopped, interrupted, continueGenerating, reset, referencedIds } = (0, import_sdk5.useKiku)();
1922
- const [input, setInput] = (0, import_react6.useState)("");
1923
- const [shopperName, setShopperNameState] = (0, import_react6.useState)(() => {
1924
- try {
1925
- return client.getShopperName?.() ?? "";
1926
- } catch {
1927
- return "";
1928
- }
1929
- });
1930
- const [nameSkipped, setNameSkipped] = (0, import_react6.useState)(false);
1931
- const awaitingName = messages.length === 0 && !shopperName && !nameSkipped;
1932
- const [attachments, setAttachments] = (0, import_react6.useState)([]);
1933
- const imageInputRef = (0, import_react6.useRef)(null);
1934
- const handleImageFiles = (files) => {
1935
- if (!files || files.length === 0) return;
1936
- Array.from(files).forEach((file) => {
1937
- if (!file.type.startsWith("image/")) return;
1938
- const reader = new FileReader();
1939
- reader.onload = (e) => {
1940
- const dataUrl = e.target?.result;
1941
- if (dataUrl) {
1942
- setAttachments((prev) => [...prev, { type: "image", data: dataUrl }]);
1943
- }
1944
- };
1945
- reader.readAsDataURL(file);
1946
- });
1947
- };
1948
- const removeAttachment = (idx) => {
1949
- setAttachments((prev) => prev.filter((_, i) => i !== idx));
1950
- };
1951
- const [voiceState, setVoiceState] = (0, import_react6.useState)("idle");
1952
- const recognitionRef = (0, import_react6.useRef)(null);
1953
- const pendingVoiceRef = (0, import_react6.useRef)(null);
1954
- const hasSpeechAPI = typeof window !== "undefined" && ("SpeechRecognition" in window || "webkitSpeechRecognition" in window);
1955
- const startVoice = (0, import_react6.useCallback)(() => {
1956
- if (!hasSpeechAPI || voiceState !== "idle") return;
1957
- const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
1958
- const recognition = new SR();
1959
- recognition.lang = voiceLang || document.documentElement.lang || navigator.language || "en-US";
1960
- recognition.interimResults = true;
1961
- recognition.maxAlternatives = 1;
1962
- recognitionRef.current = recognition;
1963
- recognition.onstart = () => setVoiceState("listening");
1964
- recognition.onresult = (event) => {
1965
- let finalText = "";
1966
- let interimText = "";
1967
- for (let i = 0; i < event.results.length; i++) {
1968
- const seg = event.results[i][0].transcript;
1969
- if (event.results[i].isFinal) finalText += seg;
1970
- else interimText += seg;
1971
- }
1972
- const live = (finalText + " " + interimText).trim();
1973
- if (live) setInput(live);
1974
- if (finalText.trim()) {
1975
- pendingVoiceRef.current = finalText.trim();
1976
- setVoiceState("processing");
1977
- }
1978
- };
1979
- recognition.onerror = (event) => {
1980
- const err = event?.error;
1981
- if (err === "not-allowed" || err === "service-not-allowed") {
1982
- setInput("Microphone access was blocked \u2014 enable it in your browser to use voice.");
1983
- } else if (err === "no-speech") {
1984
- setInput("Didn't catch that \u2014 tap the mic and try again.");
1985
- }
1986
- setVoiceState("idle");
1987
- };
1988
- recognition.onend = () => {
1989
- setVoiceState((prev) => prev === "listening" ? "idle" : prev);
1990
- };
1991
- recognition.start();
1992
- }, [hasSpeechAPI, voiceState, voiceLang]);
1993
- const stopVoice = (0, import_react6.useCallback)(() => {
1994
- recognitionRef.current?.stop();
1995
- setVoiceState("idle");
1996
- }, []);
1997
- (0, import_react6.useEffect)(() => {
1998
- return () => recognitionRef.current?.abort();
1999
- }, []);
2000
- const activeChips = chips;
2001
- const activeTitle = title;
2002
- const activePlaceholder = awaitingName ? "Type your name\u2026" : placeholder;
2003
- const [selectedProduct, setSelectedProduct] = (0, import_react6.useState)(null);
2004
- const [lightboxSrc, setLightboxSrc] = (0, import_react6.useState)(null);
2005
- const [markupSrc, setMarkupSrc] = (0, import_react6.useState)(null);
2006
- const bottomRef = (0, import_react6.useRef)(null);
2007
- const textareaRef = (0, import_react6.useRef)(null);
2008
- const [keyInput, setKeyInput] = (0, import_react6.useState)("");
2009
- const [keyPhase, setKeyPhase] = (0, import_react6.useState)("idle");
2010
- const [mintedKey, setMintedKey] = (0, import_react6.useState)(null);
2011
- const [mintedPub, setMintedPub] = (0, import_react6.useState)(null);
2012
- const [copied, setCopied] = (0, import_react6.useState)(null);
2013
- const copyValue = (value, which) => {
2014
- try {
2015
- navigator.clipboard?.writeText(value);
2016
- } catch {
2017
- }
2018
- setCopied(which);
2019
- setTimeout(() => setCopied((c) => c === which ? null : c), 1600);
2020
- };
2021
- const [keyCountdown, setKeyCountdown] = (0, import_react6.useState)(KIKU_KEY_REVEAL_SECONDS);
2022
- const [minting, setMinting] = (0, import_react6.useState)(false);
2023
- const [showKikuPicker, setShowKikuPicker] = (0, import_react6.useState)(false);
2024
- const [showAtPicker, setShowAtPicker] = (0, import_react6.useState)(false);
2025
- (0, import_react6.useEffect)(() => {
2026
- if (!lastAction) return;
2027
- if (lastAction.type === "request_kiku_key") {
2028
- setKeyPhase("prompt_key");
2029
- }
2030
- }, [lastAction]);
2031
- (0, import_react6.useEffect)(() => {
2032
- if (!mintedKey) return;
2033
- setKeyCountdown(KIKU_KEY_REVEAL_SECONDS);
2034
- const t = setInterval(() => {
2035
- setKeyCountdown((s) => {
2036
- if (s <= 1) {
2037
- clearInterval(t);
2038
- setMintedKey(null);
2039
- setMintedPub(null);
2040
- return 0;
2041
- }
2042
- return s - 1;
2043
- });
2044
- }, 1e3);
2045
- return () => clearInterval(t);
2046
- }, [mintedKey]);
2047
- const { themeAttr: hskThemeAttr, vars: customStyles } = resolveTheme(theme);
2048
- const retryLastMessage = async () => {
2049
- const lastUserMsg = [...messages].reverse().find((m) => m.role === "user");
2050
- if (lastUserMsg) await handleSend(lastUserMsg.content);
2051
- };
2052
- const handleUseExistingKey = async () => {
2053
- const pub = keyInput.trim();
2054
- if (!pub) return;
2055
- client.setKikuPub(pub);
2056
- setKeyInput("");
2057
- setKeyPhase("idle");
2058
- await retryLastMessage();
2059
- };
2060
- const handleCreateKey = async () => {
2061
- if (minting) return;
2062
- setMinting(true);
2063
- try {
2064
- const { secret, publicId } = await client.mintKikuKey();
2065
- setMintedKey(secret);
2066
- setMintedPub(publicId);
2067
- setKeyPhase("idle");
2068
- await retryLastMessage();
2069
- } catch {
2070
- } finally {
2071
- setMinting(false);
2072
- }
2073
- };
2074
- const msgsContainerRef = (0, import_react6.useRef)(null);
2075
- const messageRefs = (0, import_react6.useRef)([]);
2076
- (0, import_react6.useEffect)(() => {
2077
- const container = msgsContainerRef.current;
2078
- if (!container) return;
2079
- const lastMsg = messages[messages.length - 1];
2080
- if (lastMsg?.role === "user") {
2081
- messageRefs.current[messages.length - 1]?.scrollIntoView({ behavior: "smooth", block: "start" });
2082
- return;
2083
- }
2084
- const distanceFromBottom = container.scrollHeight - container.scrollTop - container.clientHeight;
2085
- if (distanceFromBottom < 120) {
2086
- bottomRef.current?.scrollIntoView({ behavior: "smooth" });
2087
- }
2088
- }, [messages, loading, selectedProduct]);
2089
- (0, import_react6.useEffect)(() => {
2090
- const prev = document.body.style.overflow;
2091
- document.body.style.overflow = "hidden";
2092
- return () => {
2093
- document.body.style.overflow = prev;
2094
- };
2095
- }, []);
2096
- (0, import_react6.useEffect)(() => {
2097
- const h = (e) => {
2098
- if (e.key !== "Escape") return;
2099
- if (lightboxSrc) {
2100
- setLightboxSrc(null);
2101
- return;
2102
- }
2103
- onClose();
2104
- };
2105
- document.addEventListener("keydown", h);
2106
- return () => document.removeEventListener("keydown", h);
2107
- }, [lightboxSrc, onClose]);
2108
- const handleReset = (0, import_react6.useCallback)(() => {
2109
- reset();
2110
- setKeyPhase("idle");
2111
- }, [reset]);
2112
- const handleSourceClick = (src) => {
2113
- setSelectedProduct(src);
2114
- onSelectSource?.(src);
2115
- const lastAssistant = [...messages].reverse().find((m) => m.role === "assistant");
2116
- if (lastAssistant && lastAssistant.content.trim().endsWith("?")) {
2117
- send(`The ${src.name}`);
2118
- return;
2119
- }
2120
- const q = `Tell me more about the ${src.name}${src.price ? ` (${src.currency ?? defaultCurrency} ${src.price})` : ""} \u2014 what are its key specs, who is it best for, and is it worth buying?`;
2121
- send(q);
2122
- };
2123
- const handleSend = async (text, extraAttachments, forcedIntent, captureTargets) => {
2124
- const raw = (text ?? input).trim();
2125
- if (!raw || loading) return;
2126
- if (awaitingName) {
2127
- const name = extractName(raw);
2128
- if (name) {
2129
- try {
2130
- client.setShopperName?.(name);
2131
- } catch {
2132
- }
2133
- setShopperNameState(name);
2134
- setInput("");
2135
- if (textareaRef.current) textareaRef.current.style.height = "auto";
2136
- return;
2137
- }
2138
- setNameSkipped(true);
2139
- }
2140
- const kiku = parseAtKiku(raw);
2141
- const q = kiku ? kiku.cleanQuery : raw;
2142
- const resolvedForcedIntent = forcedIntent ?? kiku?.intent;
2143
- setSelectedProduct(null);
2144
- setShowKikuPicker(false);
2145
- setShowAtPicker(false);
2146
- setInput("");
2147
- if (textareaRef.current) {
2148
- textareaRef.current.style.height = "auto";
2149
- }
2150
- const toSend = extraAttachments ?? attachments;
2151
- setAttachments([]);
2152
- await send(q, raw, toSend.length > 0 ? toSend : void 0, resolvedForcedIntent, captureTargets);
2153
- };
2154
- const handleSelectExtension = (ext) => {
2155
- setInput(ext + " ");
2156
- setShowAtPicker(false);
2157
- setShowKikuPicker(true);
2158
- if (textareaRef.current) {
2159
- textareaRef.current.focus();
2160
- }
2161
- };
2162
- const handleKikuCapture = (0, import_react6.useCallback)((product) => {
2163
- const name = product.name || "";
2164
- const display = `@kiku capture${name ? " " + name : ""}`;
2165
- const q = name || "capture current page";
2166
- setInput("");
2167
- setSelectedProduct(null);
2168
- const toSend = attachments;
2169
- setAttachments([]);
2170
- send(q, display, toSend.length > 0 ? toSend : void 0, "capture");
2171
- }, [attachments, send]);
2172
- const handleKikuCaptureAll = (0, import_react6.useCallback)((products) => {
2173
- const targets = products.filter((p) => p.id).map((p) => ({
2174
- name: p.name || "",
2175
- url: p.url || "",
2176
- image: p.image || "",
2177
- price: p.price ? String(p.price) : "",
2178
- currency: p.currency || defaultCurrency
2179
- }));
2180
- const names = products.map((p) => p.name).filter(Boolean).join(", ");
2181
- const display = `@kiku capture all (${products.length} items)`;
2182
- setInput("");
2183
- setSelectedProduct(null);
2184
- setAttachments([]);
2185
- send(names || "capture all", display, void 0, "capture_all", targets);
2186
- }, [defaultCurrency, send]);
2187
- const handleKikuViewHistory = (0, import_react6.useCallback)(() => {
2188
- const display = "@kiku what have you saved?";
2189
- setInput("");
2190
- setSelectedProduct(null);
2191
- setAttachments([]);
2192
- send("show my saved items", display, void 0, "view_history");
2193
- }, [send]);
2194
- const handleKikuDelete = (0, import_react6.useCallback)(() => {
2195
- const display = "@kiku delete this";
2196
- setInput("");
2197
- setSelectedProduct(null);
2198
- setAttachments([]);
2199
- send("delete this", display, void 0, "delete");
2200
- }, [send]);
2201
- const handleKeyDown = (e) => {
2202
- if (e.key === "Escape" && showKikuPicker) {
2203
- e.preventDefault();
2204
- setShowKikuPicker(false);
2205
- return;
2206
- }
2207
- if (e.key === "Escape" && showAtPicker) {
2208
- e.preventDefault();
2209
- setShowAtPicker(false);
2210
- return;
2211
- }
2212
- if (e.key === "Enter" && !e.shiftKey) {
2213
- e.preventDefault();
2214
- handleSend();
2215
- }
2216
- };
2217
- const handleInput = (e) => {
2218
- const val = e.target.value;
2219
- setInput(val);
2220
- const trimmed = val.trim();
2221
- setShowAtPicker(trimmed === "@");
2222
- setShowKikuPicker(/^@kiku\s*$/i.test(trimmed));
2223
- const t = e.target;
2224
- t.style.height = "auto";
2225
- t.style.height = `${Math.min(t.scrollHeight, 140)}px`;
2226
- };
2227
- (0, import_react6.useEffect)(() => {
2228
- if (voiceState !== "processing") return;
2229
- const transcript = pendingVoiceRef.current;
2230
- if (!transcript) {
2231
- setVoiceState("idle");
2232
- return;
2233
- }
2234
- pendingVoiceRef.current = null;
2235
- const timer = setTimeout(() => {
2236
- setVoiceState("idle");
2237
- handleSend(transcript);
2238
- }, 400);
2239
- return () => clearTimeout(timer);
2240
- }, [voiceState]);
2241
- const blurVal = typeof backdropBlur === "number" ? `${backdropBlur}px` : backdropBlur ?? "20px";
2242
- const displayMessages = messages;
2243
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2244
- "div",
2245
- {
2246
- className: cn("hsk-cb-overlay", classNames.overlay),
2247
- onClick: onClose,
2248
- "data-hsk-theme": hskThemeAttr,
2249
- style: {
2250
- backdropFilter: `blur(${blurVal})`,
2251
- WebkitBackdropFilter: `blur(${blurVal})`,
2252
- ...backdropColor ? { background: backdropColor } : {},
2253
- ...customStyles
2254
- },
2255
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2256
- "div",
2257
- {
2258
- className: cn("hsk-cb-panel", classNames.panel),
2259
- onClick: (e) => {
2260
- e.stopPropagation();
2261
- const target = e.target;
2262
- if (target.tagName === "IMG" && (target.classList.contains("hsk-markdown-img") || target.classList.contains("hsk-cb-user-img-thumb"))) {
2263
- const src = target.src;
2264
- if (src) setLightboxSrc(src);
2265
- }
2266
- },
2267
- children: [
2268
- lightboxSrc && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-lightbox", onClick: () => setLightboxSrc(null), children: [
2269
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { className: "hsk-lightbox-close", onClick: () => setLightboxSrc(null), "aria-label": "Close image", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CloseIcon, {}) }),
2270
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("img", { src: lightboxSrc, alt: "", className: "hsk-lightbox-img", onClick: (e) => e.stopPropagation() })
2271
- ] }),
2272
- markupSrc && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-markup-overlay", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2273
- MarkupEditor,
2274
- {
2275
- src: markupSrc,
2276
- onCancel: () => setMarkupSrc(null),
2277
- onSend: (dataUrl, instruction) => {
2278
- setMarkupSrc(null);
2279
- handleSend(
2280
- instruction || "Apply the change indicated by the markings on the image.",
2281
- [{ type: "image", data: dataUrl, annotated: true }]
2282
- );
2283
- }
2284
- }
2285
- ) }),
2286
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-main", children: [
2287
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-topbar", children: [
2288
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-topbar-left", children: [
2289
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-cb-topbar-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, {}) }),
2290
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-topbar-title", children: activeTitle }) })
2291
- ] }),
2292
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-topbar-actions", children: [
2293
- messages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { className: "hsk-cb-topbar-btn", onClick: handleReset, children: "Clear chat" }),
2294
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { className: "hsk-cb-close", onClick: onClose, "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CloseIcon, {}) })
2295
- ] })
2296
- ] }),
2297
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-msgs", ref: msgsContainerRef, children: [
2298
- displayMessages.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-empty", children: [
2299
- awaitingName ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2300
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("h2", { className: "hsk-cb-hello", children: [
2301
- "Hi, I'm ",
2302
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("b", { children: "kiku" }),
2303
- "."
2304
- ] }),
2305
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "hsk-cb-hello-lead", children: "I can search, visualize, or capture anything for you \u2014 on this site or any other." }),
2306
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "hsk-cb-hello-ask", children: "What should I call you?" }),
2307
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { className: "hsk-cb-hello-skip", onClick: () => setNameSkipped(true), children: "Skip for now" })
2308
- ] }) : shopperName ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2309
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("h2", { className: "hsk-cb-hello", children: [
2310
- "Hi, ",
2311
- shopperName,
2312
- "."
2313
- ] }),
2314
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "hsk-cb-hello-lead", children: "What can I find for you today?" })
2315
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2316
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("h2", { className: "hsk-cb-hello", children: [
2317
- "Hi, I'm ",
2318
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("b", { children: "kiku" }),
2319
- "."
2320
- ] }),
2321
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "hsk-cb-hello-lead", children: "Ask me to search, visualize, or capture anything \u2014 I look across the whole site in real time." })
2322
- ] }),
2323
- !awaitingName && activeChips.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-chips", children: activeChips.map((chip) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2324
- "button",
2325
- {
2326
- className: "hsk-cb-chip",
2327
- onClick: () => handleSend(chip),
2328
- children: chip
2329
- },
2330
- chip
2331
- )) })
2332
- ] }) : displayMessages.map((msg, idx) => {
2333
- const isLast = idx === displayMessages.length - 1;
2334
- const isLastUser = msg.role === "user" && !displayMessages.slice(idx + 1).some((m) => m.role === "user");
2335
- const isUser = msg.role === "user";
2336
- const compareSources = sources.filter((s) => s.id && referencedIds.includes(s.id));
2337
- const showMatrix = isLast && lastIntent === "compare" && compareSources.length >= 2;
2338
- const displayContent = !isUser && showMatrix ? stripMarkdownTables(msg.content) : msg.content;
2339
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-msg-group", ref: (el) => {
2340
- messageRefs.current[idx] = el;
2341
- }, children: isUser ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: `hsk-cb-user-msg${isLastUser ? " hsk-sent" : ""}`, children: [
2342
- msg.images && msg.images.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-user-imgs", children: msg.images.map((img, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("img", { src: img, alt: `attachment ${i + 1}`, className: "hsk-cb-user-img-thumb" }, i)) }),
2343
- msg.content && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-user-bubble", children: /^@kiku\b/i.test(msg.content) ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2344
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-kiku-badge", children: "@kiku" }),
2345
- msg.content.replace(/^@kiku\s*/i, "")
2346
- ] }) : msg.content })
2347
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-ai-msg", children: [
2348
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-ai-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, {}) }),
2349
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-ai-body", children: [
2350
- (() => {
2351
- const parsed = parseThinking(displayContent);
2352
- const thinking = msg.thinking || parsed.thinking;
2353
- const content = parsed.content;
2354
- const isComplete = msg.thinking ? content.length > 0 || !(isLast && streaming) : parsed.isComplete;
2355
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2356
- (thinking || msg.thoughtForSeconds != null) && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ThinkingBlock, { text: thinking, isComplete, seconds: msg.thoughtForSeconds }),
2357
- content && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-ai-text", children: [
2358
- renderMarkdown(content, isLast && streaming),
2359
- isLast && streaming && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { display: "inline-block", width: "0.5em", height: "1.05em", marginLeft: "2px", verticalAlign: "text-bottom", background: "currentColor", opacity: 0.55, borderRadius: "1px" } })
2360
- ] })
2361
- ] });
2362
- })(),
2363
- msg.visualizing && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-viz hsk-cb-viz--loading", children: [
2364
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-cb-viz-spinner" }),
2365
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: msg.visualizingText || "Visualizing\u2026" })
2366
- ] }),
2367
- msg.visualization && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-viz", children: [
2368
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-viz-imgwrap", children: [
2369
- msg.visualizationType === "video" || msg.visualization.includes("/videos/") ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2370
- "video",
2371
- {
2372
- src: msg.visualization,
2373
- controls: true,
2374
- autoPlay: true,
2375
- loop: true,
2376
- muted: true,
2377
- playsInline: true,
2378
- className: "hsk-markdown-video",
2379
- style: { display: "block", maxHeight: "400px", objectFit: "contain", width: "100%" }
2380
- }
2381
- ) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2382
- "img",
2383
- {
2384
- src: msg.visualization,
2385
- alt: "Product visualized in your photo",
2386
- className: "hsk-markdown-img",
2387
- onError: (e) => {
2388
- e.target.style.display = "none";
2389
- }
2390
- }
2391
- ),
2392
- isLast && !streaming && (msg.visualizationType !== "video" && !msg.visualization.includes("/videos/")) && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { className: "hsk-cb-viz-mark", onClick: () => setMarkupSrc(msg.visualization), children: [
2393
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
2394
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M12 20h9" }),
2395
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4Z" })
2396
- ] }),
2397
- "Mark & edit"
2398
- ] })
2399
- ] }),
2400
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-viz-disclaimer", children: msg.visualizationType === "video" || msg.visualization.includes("/videos/") ? "AI-generated video makeover \u2014 colors, size and movement may differ from the real product." : "AI-generated preview \u2014 colours, size and placement may differ from the real product." })
2401
- ] }),
2402
- !isUser && (msg.knowledgeImages?.length ?? 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-kimgs", children: msg.knowledgeImages.map((ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-kimg-group", children: [
2403
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-kimg-grid", children: ref.images.map((img, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2404
- "img",
2405
- {
2406
- src: img.url,
2407
- alt: img.note || ref.title || "Reference image",
2408
- className: "hsk-cb-kimg",
2409
- loading: "lazy",
2410
- onClick: () => setLightboxSrc(img.url),
2411
- onError: (e) => {
2412
- e.target.style.display = "none";
2413
- }
2414
- },
2415
- i
2416
- )) }),
2417
- (ref.title || ref.images[0]?.note) && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-kimg-caption", children: ref.title || ref.images[0]?.note })
2418
- ] }, ref.entryId)) }),
2419
- showMatrix && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ComparisonMatrix, { sources: compareSources, defaultCurrency }),
2420
- (() => {
2421
- const msgReferencedIds = isLast ? referencedIds : msg.referencedIds ?? [];
2422
- const msgSources = isLast ? sources : msg.sources ?? [];
2423
- const msgIntent = isLast ? lastIntent : msg.intent;
2424
- const hiddenIntent = msgIntent === "compare" || msgIntent === "capture" || msgIntent === "capture_all" || msgIntent === "delete" || msgIntent === "view_history";
2425
- const showCarousel = msgReferencedIds.length > 0 && !hiddenIntent && (!isLast || lastAction?.type !== "request_kiku_key");
2426
- return showCarousel && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2427
- SourcesCarousel,
2428
- {
2429
- sources: msgSources,
2430
- defaultCurrency,
2431
- onSelectSource: handleSourceClick,
2432
- onImageClick: setLightboxSrc,
2433
- referencedIds: msgReferencedIds,
2434
- compact: !!msg.visualization
2435
- }
2436
- );
2437
- })(),
2438
- isLast && !loading && lastAction?.url && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-action-pills", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("a", { className: "hsk-action-pill", href: lastAction.url, children: [
2439
- String(lastAction.type || "continue").replace(/_/g, " "),
2440
- " \u2192"
2441
- ] }) }),
2442
- isLast && !loading && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2443
- SmartContextPills,
2444
- {
2445
- intent: lastIntent,
2446
- sources: sources.filter((s) => s.id && referencedIds.includes(s.id)),
2447
- onSend: handleSend,
2448
- loading
2449
- }
2450
- )
2451
- ] })
2452
- ] }) }, idx);
2453
- }),
2454
- selectedProduct && loading && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2455
- "div",
2456
- {
2457
- className: "hsk-cb-selected-product",
2458
- onClick: () => selectedProduct.url && window.open(selectedProduct.url, "_blank"),
2459
- children: [
2460
- selectedProduct.image && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("img", { className: "hsk-cb-selected-img", src: selectedProduct.image, alt: selectedProduct.name }),
2461
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-selected-info", children: [
2462
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-selected-name", children: selectedProduct.name }),
2463
- selectedProduct.price && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-selected-price", children: [
2464
- selectedProduct.currency ?? defaultCurrency,
2465
- " ",
2466
- parseFloat(String(selectedProduct.price ?? "").replace(/[^0-9.]/g, "") || "0").toLocaleString()
2467
- ] })
2468
- ] })
2469
- ]
2470
- }
2471
- ),
2472
- loading && !streaming && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-typing-row", style: { display: "flex", alignItems: "center", gap: "10px" }, children: [
2473
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-thinking-icon", children: [
2474
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { className: "hsk-brand-mark", viewBox: "0 0 100 100", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M39.4 10.4 Q44 0 48.6 10.4 L86.1 95.8 Q88 100 83.4 100 L4.6 100 Q0 100 1.9 95.8 Z M24 100 L24 65 Q24 60 27.4 56.3 Q44 38 60.6 56.3 Q64 60 64 65 L64 100 Z", transform: "translate(22.7 19) scale(0.62)", fillRule: "evenodd" }) }),
2475
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { className: "hsk-brand-mark hsk-brand-mark--sheen", viewBox: "0 0 100 100", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M39.4 10.4 Q44 0 48.6 10.4 L86.1 95.8 Q88 100 83.4 100 L4.6 100 Q0 100 1.9 95.8 Z M24 100 L24 65 Q24 60 27.4 56.3 Q44 38 60.6 56.3 Q64 60 64 65 L64 100 Z", transform: "translate(22.7 19) scale(0.62)", fillRule: "evenodd" }) }),
2476
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-handle-orbit", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: "hsk-handle-ring", children: [
2477
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-handle-ball" }),
2478
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-handle-ball" }),
2479
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-handle-ball" }),
2480
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-handle-ball" }),
2481
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-handle-ball" })
2482
- ] }) }),
2483
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-handle-rest" })
2484
- ] }),
2485
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-cb-thinking-text", children: "Thinking\u2026" })
2486
- ] }),
2487
- lastAction?.type === "open_memory" && lastAction.url && !loading && !streaming && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2488
- "a",
2489
- {
2490
- className: "hsk-cb-memory-pill",
2491
- href: String(lastAction.url),
2492
- target: "_blank",
2493
- rel: "noopener noreferrer",
2494
- children: [
2495
- "Open my memory on mimi",
2496
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ExternalIcon, {})
2497
- ]
2498
- }
2499
- ),
2500
- (stopped || interrupted) && !loading && !streaming && messages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-stopped", children: [
2501
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-cb-stopped-label", children: stopped ? "You stopped this response." : "This response was interrupted." }),
2502
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { className: "hsk-cb-continue", onClick: continueGenerating, children: [
2503
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ContinueIcon, {}),
2504
- messages[messages.length - 1]?.role === "assistant" ? "Continue generating" : "Generate response"
2505
- ] })
2506
- ] }),
2507
- error && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-error", children: getFriendlyError(error) }),
2508
- keyPhase === "prompt_key" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-ai-msg", children: [
2509
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-ai-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, {}) }),
2510
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-ai-body", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-ai-text", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-phone-form", children: [
2511
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("label", { className: "hsk-cb-phone-label", children: "Paste your public id \u2014 or create one" }),
2512
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2513
- "input",
2514
- {
2515
- type: "text",
2516
- className: "hsk-cb-phone-input",
2517
- placeholder: "your public id\u2026",
2518
- value: keyInput,
2519
- onChange: (e) => setKeyInput(e.target.value),
2520
- onKeyDown: (e) => e.key === "Enter" && handleUseExistingKey(),
2521
- autoFocus: true
2522
- }
2523
- ),
2524
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { display: "flex", gap: 8 }, children: [
2525
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { className: "hsk-cb-phone-submit", onClick: handleUseExistingKey, disabled: !keyInput.trim(), children: "Use my id" }),
2526
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { className: "hsk-cb-phone-submit", onClick: handleCreateKey, disabled: minting, children: minting ? "Creating\u2026" : "I'm new \u2014 create one" })
2527
- ] })
2528
- ] }) }) })
2529
- ] }),
2530
- mintedKey && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-ai-msg", children: [
2531
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-ai-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, {}) }),
2532
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-ai-body", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-ai-text", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { padding: "12px 14px", border: "1px solid var(--hsk-border, #e5e5e5)", borderRadius: "var(--hsk-border-radius, 0px)", display: "flex", flexDirection: "column", gap: 12 }, children: [
2533
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
2534
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { fontSize: 12, fontWeight: 600, marginBottom: 4 }, children: "Your secret \u2014 shown only once" }),
2535
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("code", { style: { display: "block", fontSize: 14, fontWeight: 700, marginBottom: 6, wordBreak: "break-all" }, children: mintedKey }),
2536
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { display: "flex", gap: 8, alignItems: "center" }, children: [
2537
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { className: "hsk-cb-phone-submit", style: { padding: "4px 10px" }, onClick: () => copyValue(mintedKey, "secret"), children: copied === "secret" ? "Copied" : "Copy secret" }),
2538
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { fontSize: 11, opacity: 0.7 }, children: "Keep it private \u2014 use it to unlock your memory at mimi.akropolys.cloud. If lost, the memory is lost with it." })
2539
- ] })
2540
- ] }),
2541
- mintedPub && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
2542
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { fontSize: 12, fontWeight: 600, marginBottom: 4 }, children: "Your public id" }),
2543
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("code", { style: { display: "block", fontSize: 13, fontWeight: 600, marginBottom: 6, wordBreak: "break-all", opacity: 0.85 }, children: mintedPub }),
2544
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { display: "flex", gap: 8, alignItems: "center" }, children: [
2545
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { className: "hsk-cb-phone-submit", style: { padding: "4px 10px" }, onClick: () => copyValue(mintedPub, "pub"), children: copied === "pub" ? "Copied" : "Copy id" }),
2546
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { fontSize: 11, opacity: 0.7 }, children: "Paste this on any site to keep saving to the same memory." })
2547
- ] })
2548
- ] }),
2549
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { fontSize: 11, opacity: 0.6 }, children: [
2550
- "Hidden in ",
2551
- keyCountdown,
2552
- "s."
2553
- ] })
2554
- ] }) }) })
2555
- ] }),
2556
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { ref: bottomRef, style: { height: 1 } })
2557
- ] }),
2558
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-input-wrap", children: [
2559
- showAtPicker && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2560
- AtPickerMenu,
2561
- {
2562
- onSelect: handleSelectExtension,
2563
- onDismiss: () => setShowAtPicker(false)
2564
- }
2565
- ),
2566
- showKikuPicker && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2567
- KikuPickerMenu,
2568
- {
2569
- sources,
2570
- referencedIds,
2571
- defaultCurrency,
2572
- onCapture: handleKikuCapture,
2573
- onCaptureAll: handleKikuCaptureAll,
2574
- onViewHistory: handleKikuViewHistory,
2575
- onDelete: handleKikuDelete,
2576
- onDismiss: () => setShowKikuPicker(false)
2577
- }
2578
- ),
2579
- attachments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-img-strip", children: attachments.map((att, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-img-thumb-wrap", children: [
2580
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("img", { src: att.data, alt: `attachment ${i + 1}`, className: "hsk-cb-img-thumb" }),
2581
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2582
- "button",
2583
- {
2584
- className: "hsk-cb-img-thumb-remove",
2585
- onClick: () => removeAttachment(i),
2586
- "aria-label": "Remove image",
2587
- children: "\xD7"
2588
- }
2589
- )
2590
- ] }, i)) }),
2591
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "hsk-cb-input-box", children: [
2592
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2593
- "input",
2594
- {
2595
- ref: imageInputRef,
2596
- type: "file",
2597
- accept: "image/*",
2598
- multiple: true,
2599
- style: { display: "none" },
2600
- onChange: (e) => handleImageFiles(e.target.files)
2601
- }
2602
- ),
2603
- enableVision && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2604
- "button",
2605
- {
2606
- className: "hsk-cb-attach-btn",
2607
- onClick: () => imageInputRef.current?.click(),
2608
- disabled: loading,
2609
- "aria-label": "Attach image",
2610
- title: "Attach image",
2611
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(PaperclipIcon, {})
2612
- }
2613
- ),
2614
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2615
- "textarea",
2616
- {
2617
- ref: textareaRef,
2618
- className: cn("hsk-cb-textarea", classNames.input),
2619
- value: input,
2620
- onChange: handleInput,
2621
- onKeyDown: handleKeyDown,
2622
- placeholder: voiceState === "listening" ? "\u{1F399}\uFE0F Listening\u2026 tap the mic to stop" : voiceState === "processing" ? "Got it \u2014 sending\u2026" : activePlaceholder,
2623
- rows: 1,
2624
- disabled: loading,
2625
- autoFocus: true
2626
- }
2627
- ),
2628
- hasSpeechAPI && enableVoice && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2629
- "button",
2630
- {
2631
- className: cn(
2632
- "hsk-cb-mic-btn",
2633
- voiceState === "listening" && "hsk-cb-mic-btn--listening",
2634
- voiceState === "processing" && "hsk-cb-mic-btn--processing"
2635
- ),
2636
- onClick: voiceState === "idle" ? startVoice : stopVoice,
2637
- disabled: loading,
2638
- "aria-label": voiceState === "idle" ? "Start voice input" : "Stop recording",
2639
- title: voiceState === "idle" ? "Voice input" : "Stop",
2640
- children: [
2641
- voiceState === "listening" ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(MicOffIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(MicIcon2, {}),
2642
- voiceState === "listening" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-cb-mic-pulse" })
2643
- ]
2644
- }
2645
- ),
2646
- loading || streaming ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2647
- "button",
2648
- {
2649
- className: cn("hsk-cb-send", "hsk-cb-send--stop", classNames.sendButton),
2650
- onClick: stop,
2651
- "aria-label": "Stop generating",
2652
- title: "Stop generating",
2653
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(StopIcon, {})
2654
- }
2655
- ) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2656
- "button",
2657
- {
2658
- className: cn("hsk-cb-send", classNames.sendButton),
2659
- onClick: () => handleSend(),
2660
- disabled: !input.trim() && attachments.length === 0,
2661
- "aria-label": "Send message",
2662
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ArrowUpIcon, {})
2663
- }
2664
- )
2665
- ] }),
2666
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "hsk-cb-hint", children: "kiku \xB7 searches the whole catalogue in real time" })
2667
- ] })
2668
- ] })
2669
- ]
2670
- }
2671
- )
2672
- }
2673
- );
2674
- }
2675
- function KikuButton({
2676
- label,
2677
- title,
2678
- placeholder,
2679
- backdropColor,
2680
- backdropBlur,
2681
- className,
2682
- onSelectSource,
2683
- defaultCurrency,
2684
- chips,
2685
- theme,
2686
- classNames = {},
2687
- enableVoice = false,
2688
- voiceLang,
2689
- enableVision = false,
2690
- visionCategoryHint
2691
- }) {
2692
- const [open, setOpen] = (0, import_react6.useState)(false);
2693
- const [mounted, setMounted] = (0, import_react6.useState)(false);
2694
- (0, import_react6.useEffect)(() => {
2695
- setMounted(true);
2696
- if (typeof window !== "undefined" && !window.__akropolys_nav_patched) {
2697
- window.__akropolys_nav_patched = true;
2698
- const originalPush = window.history.pushState;
2699
- const originalReplace = window.history.replaceState;
2700
- window.history.pushState = function(...args) {
2701
- originalPush.apply(this, args);
2702
- window.dispatchEvent(new CustomEvent("akropolys:navigation"));
2703
- };
2704
- window.history.replaceState = function(...args) {
2705
- originalReplace.apply(this, args);
2706
- window.dispatchEvent(new CustomEvent("akropolys:navigation"));
2707
- };
2708
- }
2709
- const handleNavigation = () => {
2710
- setOpen(false);
2711
- };
2712
- window.addEventListener("popstate", handleNavigation);
2713
- window.addEventListener("akropolys:navigation", handleNavigation);
2714
- return () => {
2715
- window.removeEventListener("popstate", handleNavigation);
2716
- window.removeEventListener("akropolys:navigation", handleNavigation);
2717
- };
2718
- }, []);
2719
- const { themeAttr: hskThemeAttr, vars: customStyles } = resolveTheme(theme);
2720
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2721
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2722
- "button",
2723
- {
2724
- className: cn("hsk-cb-btn", classNames.button, className),
2725
- onClick: () => setOpen(true),
2726
- style: customStyles,
2727
- "data-hsk-theme": hskThemeAttr,
2728
- "aria-label": "Open AI chat",
2729
- children: [
2730
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "hsk-cb-btn-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SparkleIcon2, {}) }),
2731
- label !== void 0 ? label : null
2732
- ]
2733
- }
2734
- ),
2735
- open && mounted && (0, import_react_dom.createPortal)(
2736
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2737
- ChatModal,
2738
- {
2739
- title,
2740
- placeholder,
2741
- backdropColor,
2742
- backdropBlur,
2743
- onClose: () => setOpen(false),
2744
- onSelectSource,
2745
- defaultCurrency,
2746
- chips,
2747
- theme,
2748
- classNames,
2749
- enableVoice,
2750
- voiceLang,
2751
- enableVision,
2752
- visionCategoryHint
2753
- }
2754
- ),
2755
- document.body
2756
- )
2757
- ] });
2758
- }
2759
-
2760
- // src/components/Sparkle.tsx
2761
- var import_react7 = require("react");
2762
- var import_react_dom2 = require("react-dom");
2763
- var import_sdk7 = require("@akropolys/sdk");
2764
- var import_jsx_runtime10 = require("react/jsx-runtime");
2765
- var SparkleIcon3 = ({ className, size = 16 }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2766
- "svg",
2767
- {
2768
- className: cn("hsk-brand-mark", className),
2769
- width: size,
2770
- height: size,
2771
- viewBox: "0 0 100 100",
2772
- xmlns: "http://www.w3.org/2000/svg",
2773
- "aria-label": "kiku",
2774
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("g", { transform: "translate(22.7 19) scale(0.62)", fill: "currentColor", fillRule: "evenodd", children: [
2775
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M39.4 10.4 Q44 0 48.6 10.4 L86.1 95.8 Q88 100 83.4 100 L4.6 100 Q0 100 1.9 95.8 Z M24 100 L24 65 Q24 60 27.4 56.3 Q44 38 60.6 56.3 Q64 60 64 65 L64 100 Z" }),
2776
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("circle", { cx: "55", cy: "82", r: "3.4" })
2777
- ] })
2778
- }
2779
- );
2780
- var CloseIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
2781
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
2782
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
2783
- ] });
2784
- var getFriendlyError2 = (err) => {
2785
- let str = "";
2786
- if (typeof err === "string") str = err;
2787
- else if (err && typeof err === "object" && err.message) str = err.message;
2788
- else try {
2789
- str = JSON.stringify(err);
2790
- } catch {
2791
- str = String(err);
2792
- }
2793
- if (str.toLowerCase().includes("token limit")) {
2794
- return "You've reached your usage limit. Please update your billing limits in your dashboard to continue.";
2795
- }
2796
- try {
2797
- const parsed = JSON.parse(str);
2798
- return parsed.error || parsed.message || str;
2799
- } catch {
2800
- return str;
2801
- }
2802
- };
2803
- function SparkleModal({
2804
- productName,
2805
- limit,
2806
- backdropColor,
2807
- backdropBlur,
2808
- onClose,
2809
- onNavigate,
2810
- onResult,
2811
- theme,
2812
- classNames = {},
2813
- product: initialProduct
2814
- }) {
2815
- const client = (0, import_sdk7.useAkropolysContext)();
2816
- const [fetchedProduct, setFetchedProduct] = (0, import_react7.useState)(null);
2817
- const displayProduct = initialProduct || fetchedProduct;
2818
- const { results, loading: searchLoading, search } = (0, import_sdk7.useSearch)({ type: "vector" });
2819
- const { messages, sources, loading: chatLoading, error: chatError, send } = (0, import_sdk7.useKiku)();
2820
- const [chatInput, setChatInput] = (0, import_react7.useState)("");
2821
- const [isMobile, setIsMobile] = (0, import_react7.useState)(false);
2822
- const [showSpecs, setShowSpecs] = (0, import_react7.useState)(false);
2823
- const [collapseSimilar, setCollapseSimilar] = (0, import_react7.useState)(false);
2824
- const chatBottomRef = (0, import_react7.useRef)(null);
2825
- const chatTextareaRef = (0, import_react7.useRef)(null);
2826
- (0, import_react7.useEffect)(() => {
2827
- if (!initialProduct && !fetchedProduct) {
2828
- client.api.searchVector(productName, 1).then((res) => {
2829
- if (res.results && res.results.length > 0) {
2830
- setFetchedProduct(res.results[0].entity);
2831
- }
2832
- }).catch((err) => console.error("[Akropolys] Failed to fetch product details", err));
2833
- }
2834
- search(productName, limit);
2835
- }, [productName, initialProduct, fetchedProduct, client, limit, search]);
2836
- (0, import_react7.useEffect)(() => {
2837
- const handleResize = () => setIsMobile(window.innerWidth <= 768);
2838
- handleResize();
2839
- if (typeof window !== "undefined") {
2840
- window.addEventListener("resize", handleResize);
2841
- return () => window.removeEventListener("resize", handleResize);
2842
- }
2843
- }, []);
2844
- (0, import_react7.useEffect)(() => {
2845
- if (results.length > 0) onResult?.(results);
2846
- }, [results, onResult]);
2847
- (0, import_react7.useEffect)(() => {
2848
- const h = (e) => {
2849
- if (e.key === "Escape") onClose();
2850
- };
2851
- document.addEventListener("keydown", h);
2852
- return () => document.removeEventListener("keydown", h);
2853
- }, [onClose]);
2854
- (0, import_react7.useEffect)(() => {
2855
- chatBottomRef.current?.scrollIntoView({ behavior: "smooth" });
2856
- }, [messages, chatLoading]);
2857
- const blurVal = typeof backdropBlur === "number" ? `${backdropBlur}px` : backdropBlur ?? "16px";
2858
- const bg = backdropColor ?? void 0;
2859
- const handleNav = (r) => {
2860
- const prevent = onNavigate?.(r);
2861
- if (prevent !== false) {
2862
- onClose();
2863
- if (r.entity.url) window.location.href = r.entity.url;
2864
- }
2865
- };
2866
- const handleSend = async (text) => {
2867
- const q = (text ?? chatInput).trim();
2868
- if (!q || chatLoading) return;
2869
- setChatInput("");
2870
- if (chatTextareaRef.current) {
2871
- chatTextareaRef.current.style.height = "auto";
2872
- }
2873
- if (messages.length === 0 && displayProduct) {
2874
- const contextQuery = `[Context: Shopper is viewing "${displayProduct.name}". Price: ${displayProduct.price}. Description: ${displayProduct.description || ""}]
2875
-
2876
- Question: ${q}`;
2877
- await send(contextQuery, q);
2878
- } else {
2879
- await send(q);
2880
- }
2881
- };
2882
- const handleKeyDown = (e) => {
2883
- if (e.key === "Enter" && !e.shiftKey) {
2884
- e.preventDefault();
2885
- handleSend();
2886
- }
2887
- };
2888
- const handleInput = (e) => {
2889
- setChatInput(e.target.value);
2890
- const t = e.target;
2891
- t.style.height = "auto";
2892
- t.style.height = `${Math.min(t.scrollHeight, 140)}px`;
2893
- };
2894
- const customStyles = {
2895
- ...theme?.primaryColor && { "--hsk-primary": theme.primaryColor },
2896
- ...theme?.backgroundColor && { "--hsk-bg": theme.backgroundColor },
2897
- ...theme?.textColor && { "--hsk-text": theme.textColor },
2898
- ...theme?.fontFamily && { "--hsk-font": theme.fontFamily },
2899
- ...theme?.borderRadius && { "--hsk-border-radius": theme.borderRadius }
2900
- };
2901
- const displayMessages = messages.length === 0 && displayProduct ? [
2902
- {
2903
- role: "assistant",
2904
- content: `Hi! I can help you with **${displayProduct.name}**. Ask me about its specifications, features, compare it with other options, or find alternatives!`
2905
- }
2906
- ] : messages;
2907
- if (isMobile) {
2908
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2909
- "div",
2910
- {
2911
- className: cn("hsk-sp-backdrop hsk-sp-mobile-view", classNames.backdrop),
2912
- onClick: onClose,
2913
- style: {
2914
- backdropFilter: `blur(${blurVal})`,
2915
- WebkitBackdropFilter: `blur(${blurVal})`,
2916
- background: bg ?? void 0,
2917
- ...customStyles
2918
- },
2919
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: cn("hsk-sp-card hsk-sp-fullscreen hsk-sp-mobile-card", classNames.card), onClick: (e) => e.stopPropagation(), children: [
2920
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-header", children: [
2921
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-header-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SparkleIcon3, {}) }),
2922
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-header-body", children: [
2923
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-header-title-row", children: [
2924
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-header-title", children: displayProduct?.name || productName }),
2925
- displayProduct && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2926
- "button",
2927
- {
2928
- type: "button",
2929
- className: "hsk-sp-header-specs-btn",
2930
- onClick: () => setShowSpecs(true),
2931
- children: "Specs"
2932
- }
2933
- )
2934
- ] }),
2935
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-header-sub", children: "kiku" })
2936
- ] }),
2937
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { className: "hsk-sp-close", onClick: onClose, "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CloseIcon2, {}) })
2938
- ] }),
2939
- searchLoading && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-bar" }),
2940
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-chat-container", children: [
2941
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-msgs", children: [
2942
- displayMessages.map((msg, idx) => {
2943
- const isUser = msg.role === "user";
2944
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-msg-group", children: isUser ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-user-msg", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-user-bubble", children: msg.content }) }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-ai-msg", children: [
2945
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-ai-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SparkleIcon3, {}) }),
2946
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-ai-body", children: [
2947
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-ai-text", children: renderMarkdown(msg.content) }),
2948
- idx === 0 && displayProduct && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-attachment-deck", children: [
2949
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-main-card", children: [
2950
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-mobile-main-card-img", children: displayProduct.images?.[0] ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("img", { src: displayProduct.images[0], alt: displayProduct.name }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: "\xF0\u0178\u203A\x8D" }) }),
2951
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-main-card-info", children: [
2952
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-mobile-main-card-brand", children: displayProduct.brand || displayProduct.category || "Product" }),
2953
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-mobile-main-card-name", children: displayProduct.name }),
2954
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-main-card-price", children: [
2955
- displayProduct.currency ?? "KES",
2956
- " ",
2957
- parseFloat(displayProduct.price?.replace(/[^0-9.]/g, "") || "0").toLocaleString()
2958
- ] })
2959
- ] }),
2960
- (displayProduct.specs && Object.keys(displayProduct.specs).length > 0 || displayProduct.description) && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2961
- "button",
2962
- {
2963
- type: "button",
2964
- className: "hsk-sp-mobile-main-card-specs-btn",
2965
- onClick: () => setShowSpecs(true),
2966
- children: "Specs"
2967
- }
2968
- )
2969
- ] }),
2970
- (() => {
2971
- const similarProducts = results.filter(
2972
- (r) => {
2973
- const isSameName = !!(r.entity.name && displayProduct?.name && r.entity.name.toLowerCase() === displayProduct.name.toLowerCase());
2974
- const isSameSlug = r.entity.slug && displayProduct?.slug && r.entity.slug.toLowerCase() === displayProduct.slug.toLowerCase();
2975
- return !isSameName && !isSameSlug;
2976
- }
2977
- );
2978
- if (similarProducts.length === 0) return null;
2979
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-similar-carousel-inline", children: [
2980
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-mobile-similar-carousel-title", children: "Similar Products" }),
2981
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-mobile-similar-carousel-list", children: similarProducts.map((r) => {
2982
- const price = parseFloat(r.entity.price?.replace(/[^0-9.]/g, "") || "0");
2983
- const currency = r.entity.currency ?? "KES";
2984
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
2985
- "div",
2986
- {
2987
- className: "hsk-sp-mobile-similar-carousel-item",
2988
- onClick: () => handleNav(r),
2989
- children: [
2990
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-mobile-similar-carousel-img", children: r.entity.images?.[0] ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("img", { src: r.entity.images[0], alt: r.entity.name }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: "\xF0\u0178\u203A\x8D" }) }),
2991
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-similar-carousel-meta", children: [
2992
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-mobile-similar-carousel-name", title: r.entity.name, children: r.entity.name }),
2993
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-similar-carousel-price", children: [
2994
- currency,
2995
- " ",
2996
- price.toLocaleString()
2997
- ] })
2998
- ] })
2999
- ]
3000
- },
3001
- r.id
3002
- );
3003
- }) })
3004
- ] });
3005
- })()
3006
- ] })
3007
- ] })
3008
- ] }) }, idx);
3009
- }),
3010
- chatLoading && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-typing-row", children: [
3011
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-ai-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SparkleIcon3, {}) }),
3012
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-typing", children: [
3013
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-dot" }),
3014
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-dot" }),
3015
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-dot" })
3016
- ] })
3017
- ] }),
3018
- chatError && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-error", children: getFriendlyError2(chatError) }),
3019
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref: chatBottomRef, style: { height: 1 } })
3020
- ] }),
3021
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-input-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-input-box", children: [
3022
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3023
- "textarea",
3024
- {
3025
- ref: chatTextareaRef,
3026
- className: "hsk-cb-textarea",
3027
- value: chatInput,
3028
- onChange: handleInput,
3029
- onKeyDown: handleKeyDown,
3030
- placeholder: "Ask about this product, specs, or comparison...",
3031
- rows: 1,
3032
- disabled: chatLoading
3033
- }
3034
- ),
3035
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3036
- "button",
3037
- {
3038
- className: "hsk-cb-send",
3039
- onClick: () => handleSend(),
3040
- disabled: !chatInput.trim() || chatLoading,
3041
- "aria-label": "Send message",
3042
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ArrowUpIcon, {})
3043
- }
3044
- )
3045
- ] }) })
3046
- ] }),
3047
- showSpecs && displayProduct && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-mobile-specs-overlay", onClick: () => setShowSpecs(false), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-specs-drawer", onClick: (e) => e.stopPropagation(), children: [
3048
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-specs-header", children: [
3049
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { children: "Specifications" }),
3050
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { type: "button", onClick: () => setShowSpecs(false), children: "Close" })
3051
- ] }),
3052
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-specs-body", children: [
3053
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h4", { className: "hsk-sp-mobile-specs-title", children: displayProduct.name }),
3054
- displayProduct.description && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-specs-desc", children: [
3055
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h5", { children: "Description" }),
3056
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { children: displayProduct.description })
3057
- ] }),
3058
- displayProduct.specs && Object.keys(displayProduct.specs).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-specs-list", children: [
3059
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h5", { children: "Details" }),
3060
- Object.entries(displayProduct.specs).map(([key, val]) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-mobile-spec-row", children: [
3061
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-mobile-spec-label", children: key }),
3062
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-mobile-spec-value", children: val })
3063
- ] }, key))
3064
- ] })
3065
- ] })
3066
- ] }) })
3067
- ] })
3068
- }
3069
- );
3070
- }
3071
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3072
- "div",
3073
- {
3074
- className: cn("hsk-sp-backdrop", classNames.backdrop),
3075
- onClick: onClose,
3076
- style: {
3077
- backdropFilter: `blur(${blurVal})`,
3078
- WebkitBackdropFilter: `blur(${blurVal})`,
3079
- background: bg ?? void 0,
3080
- ...customStyles
3081
- },
3082
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: cn("hsk-sp-card hsk-sp-fullscreen", classNames.card), onClick: (e) => e.stopPropagation(), children: [
3083
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-header", children: [
3084
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-header-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SparkleIcon3, {}) }),
3085
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-header-body", children: [
3086
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-header-title", children: displayProduct?.name || productName }),
3087
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-header-sub", children: "Ask questions, compare specs, or check similar products" })
3088
- ] }),
3089
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { className: "hsk-sp-close", onClick: onClose, "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CloseIcon2, {}) })
3090
- ] }),
3091
- searchLoading && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-bar" }),
3092
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-body", children: [
3093
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-details-pane", children: [
3094
- displayProduct && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-product-profile-container", children: [
3095
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-product-profile", children: [
3096
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-details-imgwrap", children: displayProduct.images?.[0] ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("img", { src: displayProduct.images[0], alt: displayProduct.name }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-img-placeholder", children: "\xF0\u0178\u203A\x8D" }) }),
3097
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-details-meta", children: [
3098
- displayProduct.brand && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-item-brand", children: displayProduct.brand }),
3099
- displayProduct.category && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-item-cat", children: displayProduct.category }),
3100
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h2", { className: "hsk-sp-details-name", children: displayProduct.name }),
3101
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-item-price-row", children: [
3102
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-item-currency", children: displayProduct.currency ?? "KES" }),
3103
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-item-price", children: parseFloat(displayProduct.price?.replace(/[^0-9.]/g, "") || "0").toLocaleString() }),
3104
- displayProduct.originalPrice && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-item-original-price", children: parseFloat(displayProduct.originalPrice.replace(/[^0-9.]/g, "") || "0").toLocaleString() }),
3105
- displayProduct.discount && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "hsk-sp-item-discount", children: [
3106
- "(",
3107
- displayProduct.discount,
3108
- ")"
3109
- ] })
3110
- ] }),
3111
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-item-meta-badges", children: [
3112
- displayProduct.rating && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "hsk-sp-meta-badge hsk-sp-meta-badge-rating", children: [
3113
- "\xE2\u02DC\u2026 ",
3114
- parseFloat(displayProduct.rating.toString()).toFixed(1),
3115
- " ",
3116
- displayProduct.reviewCount ? `(${displayProduct.reviewCount})` : ""
3117
- ] }),
3118
- displayProduct.availability && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: `hsk-sp-meta-badge hsk-sp-meta-badge-avail ${displayProduct.availability.toLowerCase().includes("in") ? "in-stock" : "out-stock"}`, children: displayProduct.availability }),
3119
- displayProduct.stock && !displayProduct.availability && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "hsk-sp-meta-badge hsk-sp-meta-badge-stock", children: [
3120
- "Stock: ",
3121
- displayProduct.stock
3122
- ] })
3123
- ] })
3124
- ] })
3125
- ] }),
3126
- displayProduct.specs && Object.keys(displayProduct.specs).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-specs-horizontal", children: Object.entries(displayProduct.specs).map(([key, val]) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-spec-item-horizontal", children: [
3127
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "hsk-sp-spec-label-horizontal", children: [
3128
- key,
3129
- ":"
3130
- ] }),
3131
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-spec-value-horizontal", title: val, children: val })
3132
- ] }, key)) }),
3133
- displayProduct.description && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-details-desc", children: [
3134
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h4", { children: "Description" }),
3135
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { children: displayProduct.description })
3136
- ] })
3137
- ] }),
3138
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-similar-section", children: [
3139
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { children: "Similar Products" }),
3140
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-results", children: (() => {
3141
- const similarProducts = results.filter(
3142
- (r) => {
3143
- const isSameName = !!(r.entity.name && displayProduct?.name && r.entity.name.toLowerCase() === displayProduct.name.toLowerCase());
3144
- const isSameSlug = r.entity.slug && displayProduct?.slug && r.entity.slug.toLowerCase() === displayProduct.slug.toLowerCase();
3145
- return !isSameName && !isSameSlug;
3146
- }
3147
- );
3148
- if (!searchLoading && similarProducts.length === 0) {
3149
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-empty", children: "No similar products found." });
3150
- }
3151
- return similarProducts.map((r, i) => {
3152
- const price = parseFloat(r.entity.price?.replace(/[^0-9.]/g, "") || "0");
3153
- const currency = r.entity.currency ?? "KES";
3154
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3155
- "div",
3156
- {
3157
- className: cn("hsk-sp-item", classNames.item),
3158
- style: { animationDelay: `${i * 55}ms`, cursor: "pointer" },
3159
- onClick: () => handleNav(r),
3160
- children: [
3161
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-img-wrap", children: r.entity.images?.[0] ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("img", { src: r.entity.images[0], alt: r.entity.name }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-img-placeholder", children: "\xF0\u0178\u203A\x8D" }) }),
3162
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-item-body", children: [
3163
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
3164
- r.entity.category && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-item-cat", children: r.entity.category }),
3165
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-item-name", title: r.entity.name, children: r.entity.name })
3166
- ] }),
3167
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-item-price-row", children: [
3168
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-item-currency", children: currency }),
3169
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-item-price", children: price.toLocaleString() })
3170
- ] }),
3171
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-actions", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3172
- "button",
3173
- {
3174
- className: "hsk-sp-action hsk-sp-action-primary",
3175
- onClick: (e) => {
3176
- e.stopPropagation();
3177
- handleNav(r);
3178
- },
3179
- children: "View"
3180
- }
3181
- ) })
3182
- ] })
3183
- ]
3184
- },
3185
- r.id
3186
- );
3187
- });
3188
- })() })
3189
- ] })
3190
- ] }),
3191
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-sp-chat-pane", children: [
3192
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-msgs", children: [
3193
- displayMessages.map((msg, idx) => {
3194
- const isUser = msg.role === "user";
3195
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-msg-group", children: isUser ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-user-msg", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-user-bubble", children: msg.content }) }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-ai-msg", children: [
3196
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-ai-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SparkleIcon3, {}) }),
3197
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-ai-body", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-ai-text", children: renderMarkdown(msg.content) }) })
3198
- ] }) }, idx);
3199
- }),
3200
- chatLoading && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-typing-row", children: [
3201
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-ai-icon", style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SparkleIcon3, {}) }),
3202
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-typing", children: [
3203
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-dot" }),
3204
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-dot" }),
3205
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-dot" })
3206
- ] })
3207
- ] }),
3208
- chatError && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-error", children: getFriendlyError2(chatError) }),
3209
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref: chatBottomRef, style: { height: 1 } })
3210
- ] }),
3211
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-input-wrap", children: [
3212
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "hsk-cb-input-box", children: [
3213
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3214
- "textarea",
3215
- {
3216
- ref: chatTextareaRef,
3217
- className: "hsk-cb-textarea",
3218
- value: chatInput,
3219
- onChange: handleInput,
3220
- onKeyDown: handleKeyDown,
3221
- placeholder: "Ask about this product, specs, or comparison...",
3222
- rows: 1,
3223
- disabled: chatLoading
3224
- }
3225
- ),
3226
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3227
- "button",
3228
- {
3229
- className: "hsk-cb-send",
3230
- onClick: () => handleSend(),
3231
- disabled: !chatInput.trim() || chatLoading,
3232
- "aria-label": "Send message",
3233
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ArrowUpIcon, {})
3234
- }
3235
- )
3236
- ] }),
3237
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-cb-hint", children: "Akropolys \xB7 instant product knowledge" })
3238
- ] })
3239
- ] })
3240
- ] }),
3241
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "hsk-sp-footer", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "hsk-sp-esc", children: "Esc to close" }) })
3242
- ] })
3243
- }
3244
- );
3245
- }
3246
- function Sparkle({
3247
- productName,
3248
- limit = 8,
3249
- onResult,
3250
- backdropColor,
3251
- backdropBlur,
3252
- className,
3253
- onNavigate,
3254
- theme,
3255
- classNames = {},
3256
- product,
3257
- children
3258
- }) {
3259
- const [open, setOpen] = (0, import_react7.useState)(false);
3260
- const [mounted, setMounted] = (0, import_react7.useState)(false);
3261
- (0, import_react7.useEffect)(() => {
3262
- setMounted(true);
3263
- }, []);
3264
- const customStyles = {
3265
- ...theme?.primaryColor && { "--hsk-primary": theme.primaryColor },
3266
- ...theme?.backgroundColor && { "--hsk-bg": theme.backgroundColor },
3267
- ...theme?.textColor && { "--hsk-text": theme.textColor },
3268
- ...theme?.fontFamily && { "--hsk-font": theme.fontFamily },
3269
- ...theme?.borderRadius && { "--hsk-border-radius": theme.borderRadius }
3270
- };
3271
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
3272
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3273
- "button",
3274
- {
3275
- className: cn("hsk-sp-btn", classNames.button, className),
3276
- onClick: () => setOpen(true),
3277
- style: customStyles,
3278
- title: "Find similar products",
3279
- "aria-label": "Find similar products",
3280
- children: children || /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SparkleIcon3, {})
3281
- }
3282
- ),
3283
- open && mounted && (0, import_react_dom2.createPortal)(
3284
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3285
- SparkleModal,
3286
- {
3287
- productName,
3288
- limit,
3289
- onResult,
3290
- backdropColor,
3291
- backdropBlur,
3292
- onClose: () => setOpen(false),
3293
- onNavigate,
3294
- theme,
3295
- classNames,
3296
- product
3297
- }
3298
- ),
3299
- document.body
3300
- )
3301
- ] });
3302
- }
3303
- // Annotate the CommonJS export names for ESM import in node:
3304
- 0 && (module.exports = {
3305
- ChatWidget,
3306
- ComparisonMatrix,
3307
- KikuButton,
3308
- KikuChat,
3309
- SearchBar,
3310
- Sparkle,
3311
- VisualSearch,
3312
- VoiceButton
3313
- });
2
+ "use strict";var ys=Object.create;var cr=Object.defineProperty;var xs=Object.getOwnPropertyDescriptor;var ws=Object.getOwnPropertyNames;var Ss=Object.getPrototypeOf,Cs=Object.prototype.hasOwnProperty;var Ms=(e,a)=>{for(var t in a)cr(e,t,{get:a[t],enumerable:!0})},Ho=(e,a,t,r)=>{if(a&&typeof a=="object"||typeof a=="function")for(let o of ws(a))!Cs.call(e,o)&&o!==t&&cr(e,o,{get:()=>a[o],enumerable:!(r=xs(a,o))||r.enumerable});return e};var ft=(e,a,t)=>(t=e!=null?ys(Ss(e)):{},Ho(a||!e||!e.__esModule?cr(t,"default",{value:e,enumerable:!0}):t,e)),Ns=e=>Ho(cr({},"__esModule",{value:!0}),e);var Zc={};Ms(Zc,{ChatWidget:()=>Yr,KikuButton:()=>zr,KikuChat:()=>Yr,SearchBar:()=>Ko,Sparkle:()=>_i,VisualSearch:()=>mr,VoiceButton:()=>hr,initKiku:()=>Ro,normalizeShopifyProduct:()=>Pr,shopifyAddToCart:()=>No,shopifyGetCart:()=>To});module.exports=Ns(Zc);var Pt=require("react"),lr=require("@akropolys/sdk");function $o(e){var a,t,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(a=0;a<o;a++)e[a]&&(t=$o(e[a]))&&(r&&(r+=" "),r+=t)}else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}function jo(){for(var e,a,t=0,r="",o=arguments.length;t<o;t++)(e=arguments[t])&&(a=$o(e))&&(r&&(r+=" "),r+=a);return r}function ae(...e){return jo(e)}var ge=require("react/jsx-runtime"),Vo=()=>(0,ge.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[(0,ge.jsx)("circle",{cx:"8.5",cy:"8.5",r:"5.5"}),(0,ge.jsx)("line",{x1:"13",y1:"13",x2:"18",y2:"18"})]});function Ko({placeholder:e="Search products\u2026",limit:a=10,debounceMs:t=150,onSelect:r,className:o,inputClassName:i,dropdownClassName:s,renderResult:c,theme:n,classNames:l={}}){let[m,p]=(0,Pt.useState)(""),[u,d]=(0,Pt.useState)(!1),{results:b,loading:v,search:y,clear:w}=(0,lr.useSearch)({debounceMs:t}),C=(0,lr.useAkropolysContext)(),L=(0,Pt.useRef)(null),f=(0,Pt.useRef)(!1);(0,Pt.useEffect)(()=>{if(f.current){f.current=!1;return}if(!m.trim()){w(),d(!1);return}d(!0),y(m,a)},[m]),(0,Pt.useEffect)(()=>{let S=$=>{L.current&&!L.current.contains($.target)&&d(!1)};return document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[]);let N=S=>{m.trim()&&C.api.searchVector(m,1,void 0,!0).catch(()=>{}),f.current=!0,d(!1),p(S.entity.title??S.entity.name??""),r?.(S)},T=()=>{m.trim()&&(C.api.searchVector(m,1,void 0,!0).catch(()=>{}),b.length>0&&N(b[0]))},x=u&&m.trim().length>0,Q={...n?.primaryColor&&{"--hsk-primary":n.primaryColor},...n?.backgroundColor&&{"--hsk-bg":n.backgroundColor},...n?.textColor&&{"--hsk-text":n.textColor},...n?.fontFamily&&{"--hsk-font":n.fontFamily},...n?.borderRadius&&{"--hsk-border-radius":n.borderRadius}};return(0,ge.jsxs)("div",{className:ae("hsk-sb-wrap",l.root,o),ref:L,style:Q,children:[(0,ge.jsx)("span",{className:"hsk-sb-icon",children:(0,ge.jsx)(Vo,{})}),(0,ge.jsx)("input",{className:ae("hsk-sb-input",l.input,i),type:"text",value:m,placeholder:e,onChange:S=>p(S.target.value),onFocus:()=>b.length>0&&m.trim()&&d(!0),onKeyDown:S=>{S.key==="Enter"&&T()},autoComplete:"off",spellCheck:!1}),x&&(0,ge.jsxs)("div",{className:ae("hsk-sb-drop",l.dropdown,s),style:{position:"absolute"},children:[v&&(0,ge.jsx)("div",{className:"hsk-sb-loading-bar"}),v&&b.length===0?(0,ge.jsxs)(ge.Fragment,{children:[(0,ge.jsxs)("div",{className:"hsk-sb-skeleton-row",children:[(0,ge.jsx)("span",{className:"hsk-sb-skeleton-icon"}),(0,ge.jsxs)("div",{className:"hsk-sb-row-body",children:[(0,ge.jsx)("div",{className:"hsk-sb-skeleton-text1"}),(0,ge.jsx)("div",{className:"hsk-sb-skeleton-text2"})]})]}),(0,ge.jsxs)("div",{className:"hsk-sb-skeleton-row",children:[(0,ge.jsx)("span",{className:"hsk-sb-skeleton-icon"}),(0,ge.jsxs)("div",{className:"hsk-sb-row-body",children:[(0,ge.jsx)("div",{className:"hsk-sb-skeleton-text1",style:{width:"45%"}}),(0,ge.jsx)("div",{className:"hsk-sb-skeleton-text2",style:{width:"25%"}})]})]})]}):(0,ge.jsxs)(ge.Fragment,{children:[b.length===0&&!v&&(0,ge.jsxs)("div",{className:"hsk-sb-empty",children:["No results for \u201C",m,"\u201D"]}),b.map((S,$)=>{if(c)return(0,ge.jsx)("div",{onClick:()=>N(S),className:"hsk-sb-fade",style:{animationDelay:`${$*18}ms`},children:c(S)},S.id);let _=S.entity.image??S.entity.thumbnail??S.entity.images?.[0];return(0,ge.jsxs)("div",{className:ae("hsk-sb-row hsk-sb-fade",l.row),style:{animationDelay:`${$*18}ms`},onClick:()=>N(S),children:[(0,ge.jsx)("span",{className:"hsk-sb-row-thumb",children:_?(0,ge.jsx)("img",{src:_,alt:"",loading:"lazy",onError:I=>{I.currentTarget.style.display="none"}}):(0,ge.jsx)(Vo,{})}),(0,ge.jsxs)("div",{className:"hsk-sb-row-body",children:[(0,ge.jsx)("div",{className:"hsk-sb-row-title",children:S.entity.title??S.entity.name}),(S.entity.category||S.entity.brand)&&(0,ge.jsx)("div",{className:"hsk-sb-row-sub",children:S.entity.category??S.entity.brand})]})]},S.id)})]})]})]})}var Qe=require("react"),ga=require("@akropolys/sdk");var ea=ft(require("react")),xe=require("react/jsx-runtime"),Ts=/[ \t]{2,}/g,Rs=/ ([.,!?:;])/g,zs=/\(([ \t]+)/g,Ps=/([ \t]+)\)/g,Ls=/(\d+)\s+(MP|mAh|W|GB|MB|KHz|Hz|KSh|KES|USD|EUR)\b/gi,As=/(!\[[^\]]*\]\([^)]+\)|\[[^\]]+\]\([^)]+\)|\*\*[^*]+\*\*|`[^`]+`)/g,Is=/^!\[([^\]]*)\]\(([^)]+)\)$/,Es=/^\[([^\]]+)\]\(([^)]+)\)$/,Ds=/^(https?|data:image|blob):/i,Fs=/^(https?|mailto|tel):/i,_s=/memory|mimi/i,qs=/mimi\.akropolys/i,Us=e=>e&&e.replace(Ts," ").replace(Rs,"$1").replace(zs,"(").replace(Ps,")").replace(Ls,"$1 $2"),Lt=(e,a)=>Us(e).split(As).map((o,i)=>{if(!o)return null;let s=`${a}-inline-${i}`;if(o.startsWith("`")&&o.endsWith("`"))return(0,xe.jsx)("code",{className:"hsk-markdown-code",children:o.slice(1,-1)},s);if(o.startsWith("**")&&o.endsWith("**"))return(0,xe.jsx)("strong",{children:Lt(o.slice(2,-2),s)},s);let c=o.match(Is);if(c){let l=c[1],m=c[2];return Ds.test(m)||m.startsWith("/")?(0,xe.jsx)("img",{src:m,alt:l||"Product image",className:"hsk-markdown-img",loading:"lazy",onError:u=>{u.target.style.display="none"}},s):null}let n=o.match(Es);if(n){let l=n[1],m=n[2];return _s.test(l)||qs.test(m)?null:Fs.test(m)||m.startsWith("/")?(0,xe.jsx)("a",{href:m,target:"_blank",rel:"noopener noreferrer",className:"hsk-markdown-link",children:Lt(l,s)},s):(0,xe.jsx)("span",{children:Lt(l,s)},s)}return o});function Oo(e,a){let t=e.trim();return a?t.includes("|"):t.startsWith("|")}function Wo(e){let a=e.trim();return a.startsWith("|")&&(a=a.slice(1)),a.endsWith("|")&&(a=a.slice(0,-1)),a.split("|").map(t=>t.trim())}function Bs({children:e}){let a=ea.default.useRef(null),[t,r]=ea.default.useState("none"),[o,i]=ea.default.useState(!1),s=ea.default.useRef({startX:0,scrollLeft:0,isDown:!1,hasMoved:!1}),c=ea.default.useCallback(()=>{let p=a.current;if(!p)return;if(!(p.scrollWidth>p.clientWidth+2)){r("none");return}let d=getComputedStyle(p).direction==="rtl",b=Math.abs(p.scrollLeft),v=b<=4,y=b+p.clientWidth>=p.scrollWidth-4;r(v?d?"right":"left":y?d?"left":"right":"middle")},[]);ea.default.useEffect(()=>{c();let p=a.current;if(!p)return;let u=typeof ResizeObserver<"u"?new ResizeObserver(c):null;return u?.observe(p),()=>u?.disconnect()},[c]);let n=p=>{let u=a.current;!u||u.scrollWidth<=u.clientWidth||p.target.closest("a, button, input")||(s.current={startX:p.pageX-u.offsetLeft,scrollLeft:u.scrollLeft,isDown:!0,hasMoved:!1},i(!0))},l=p=>{if(!s.current.isDown)return;let u=a.current;if(!u)return;let b=(p.pageX-u.offsetLeft-s.current.startX)*1.5;Math.abs(b)>3&&(s.current.hasMoved=!0,p.preventDefault(),u.scrollLeft=s.current.scrollLeft-b)},m=()=>{s.current.isDown=!1,i(!1)};return(0,xe.jsx)("div",{ref:a,className:`hsk-table-wrapper hsk-table-wrapper--${t}${o?" is-dragging":""}`,onScroll:c,onMouseDown:n,onMouseMove:l,onMouseUp:m,onMouseLeave:m,children:e})}function ta(e,a=!1){return Hs(e,a)}function Hs(e,a){let t=e.split(`
3
+ `);if(a&&t.length>0){let n=t[t.length-1];n.trim().startsWith("|")&&!n.trim().endsWith("|")&&t.pop()}let r=[],o=[],i=0,s=()=>{o.length>0&&(r.push((0,xe.jsx)("div",{className:"hsk-cb-ai-text",children:o},`text-bubble-${i++}`)),o=[])},c=0;for(;c<t.length;){let n=t[c],l=`md-line-${c}`;if(!n.trim()){c++;continue}let m=n.trim().match(/^!\[([^\]]*)\]\(([^)]+)\)$/);if(m){s();let u=m[1],d=m[2];(/^(https?|data:image|blob):/i.test(d)||d.startsWith("/"))&&r.push((0,xe.jsx)("div",{className:"hsk-markdown-img-block",children:(0,xe.jsx)("img",{src:d,alt:u||"Product image",className:"hsk-markdown-img",loading:"lazy",onError:v=>{v.target.style.display="none"}})},l)),c++;continue}let p=n.match(/^(#{1,3})\s+(.*)/);if(p){let u=p[1].length,d=`h${u+3}`;o.push((0,xe.jsx)(d,{className:`hsk-markdown-h${u}`,children:Lt(p[2],l)},l)),c++;continue}if(n.match(/^[\s]*[-*+•]\s+/)){let u=[];for(;c<t.length&&t[c].match(/^[\s]*[-*+•]\s+/);){let d=t[c].replace(/^[\s]*[-*+•]\s+/,"");u.push((0,xe.jsx)("li",{children:Lt(d,`li-${c}`)},`li-${c}`)),c++}o.push((0,xe.jsx)("ul",{className:"hsk-markdown-list hsk-markdown-ul",children:u},`ul-${l}`));continue}if(n.match(/^[\s]*\d+[\.\)]\s+/)){let u=[];for(;c<t.length&&t[c].match(/^[\s]*\d+[\.\)]\s+/);){let d=t[c].replace(/^[\s]*\d+[\.\)]\s+/,"");u.push((0,xe.jsx)("li",{children:Lt(d,`li-${c}`)},`li-${c}`)),c++}o.push((0,xe.jsx)("ol",{className:"hsk-markdown-list hsk-markdown-ol",children:u},`ol-${l}`));continue}if(Oo(n,!1)){s();let u=[],d=[],b=[],v=!0;for(;c<t.length&&Oo(t[c],!0);){let f=t[c].trim();if(f.match(/^\|?[-:| ]+\|?$/)&&f.includes("-")){b=Wo(f).map(x=>{let Q=x.trim(),S=Q.startsWith(":"),$=Q.endsWith(":");return S&&$?"center":$?"end":"start"}),c++,v=!1;continue}let N=Wo(f);v&&u.length===0?u=N:d.push(N),c++}let y=Math.max(u.length,...d.map(f=>f.length)),w=[];for(let f=0;f<y;f++)if(b[f])w[f]=b[f];else if(f===0)w[f]="start";else{let N=d.filter(T=>{let x=(T[f]||"").trim();return/^[\$€£¥+-]?\d+([.,]\d+)?%?$/.test(x)||/^[\$€£¥+-]?\d+([.,]\d+)?\s*(bps|M|K|B)?$/i.test(x)}).length;w[f]=N>=Math.ceil(d.length/2)?"end":"start"}let C=u.length>0?(0,xe.jsx)("tr",{children:u.map((f,N)=>(0,xe.jsx)("th",{style:{textAlign:w[N]||"start"},children:(0,xe.jsx)("bdi",{children:Lt(f,`th-${l}-${N}`)})},`th-${l}-${N}`))},`tr-head-${l}`):null,L=d.map((f,N)=>(0,xe.jsx)("tr",{children:f.map((T,x)=>(0,xe.jsx)("td",{style:{textAlign:w[x]||"start"},children:(0,xe.jsx)("bdi",{children:Lt(T,`td-${l}-${N}-${x}`)})},`td-${l}-${N}-${x}`))},`tr-body-${l}-${N}`));r.push((0,xe.jsx)(Bs,{children:(0,xe.jsxs)("table",{className:"hsk-markdown-table",children:[C&&(0,xe.jsx)("thead",{children:C}),(0,xe.jsx)("tbody",{children:L})]})},`table-wrapper-${l}`));continue}o.push((0,xe.jsx)("p",{className:"hsk-markdown-p",children:Lt(n,l)},l)),c++}return s(),(0,xe.jsx)(xe.Fragment,{children:r})}var Ua=require("react/jsx-runtime"),Ba=()=>(0,Ua.jsxs)("svg",{className:"hsk-telegram-icon",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Ua.jsx)("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),(0,Ua.jsx)("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]});function ka(e){if(typeof e=="string")return{themeAttr:e,vars:void 0};if(!e)return{themeAttr:void 0,vars:void 0};let a={};return e.primaryColor&&(a["--hsk-primary"]=e.primaryColor),e.backgroundColor&&(a["--hsk-bg"]=e.backgroundColor,a["--hsk-chat-bg"]=e.backgroundColor),e.textColor&&(a["--hsk-text"]=e.textColor,a["--hsk-chat-text"]=e.textColor),e.fontFamily&&(a["--hsk-font"]=e.fontFamily),e.fontSize&&(a["--hsk-font-size"]=e.fontSize),e.mobileFontSize&&(a["--hsk-mobile-font-size"]=e.mobileFontSize),e.borderRadius&&(a["--hsk-border-radius"]=e.borderRadius),{themeAttr:void 0,vars:a}}var It=require("react");var he=require("react");var gt=null,$t=null,jt=null,fa=null,vt=0,Vt=!1,ba=0,Vr=!1;function $s(){if(typeof window>"u")return null;let e=window.AudioContext||window.webkitAudioContext;return e?(gt||(gt=new e,$t=gt.createAnalyser(),$t.fftSize=1024,$t.smoothingTimeConstant=.25,jt=gt.createGain(),jt.gain.value=1,$t.connect(jt),jt.connect(gt.destination),fa=new Uint8Array($t.fftSize)),{ctx:gt,analyser:$t}):null}function Ha(e,a=130){let t=jt;if(!t||!gt)return;let r=gt.currentTime;t.gain.cancelScheduledValues(r),t.gain.setValueAtTime(t.gain.value,r),t.gain.linearRampToValueAtTime(Math.max(0,Math.min(1,e)),r+a/1e3)}function Go(){if(!Vt)return ba*=.85,ba;if(Vr||!$t||!fa){let r=Date.now()/1e3;return .35+.18*Math.sin(r*7.1)+.1*Math.sin(r*3.3)}$t.getByteTimeDomainData(fa);let e=0;for(let r=0;r<fa.length;r++){let o=(fa[r]-128)/128;e+=o*o}let a=Math.sqrt(e/fa.length),t=Math.min(1,a*3.2);return ba+=(t-ba)*(t>ba?.6:.12),ba}function At(){if(vt++,Vt=!1,jt&&gt&&(jt.gain.cancelScheduledValues(gt.currentTime),jt.gain.value=1),typeof window<"u"&&"speechSynthesis"in window)try{window.speechSynthesis.cancel()}catch{}}function js(e){return e.replace(/```[\s\S]*?```/g," ").replace(/`([^`]+)`/g,"$1").replace(/!\[[^\]]*\]\([^)]*\)/g," ").replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/https?:\/\/\S+/g," ").replace(/^\s{0,3}#{1,6}\s+/gm,"").replace(/^\s*[-*+]\s+/gm,"").replace(/[*_~>|]/g,"").replace(/\s*\n\s*\n\s*/g,". ").replace(/\s*\n\s*/g," ").replace(/\s+/g," ").replace(/\s+([.,!?;:])/g,"$1").trim()}var Vs=/([.!?…。!?؟۔।]+["'”’)\]]*\s+)/,Ks=240;function Os(e,a=Ks){let t=e.split(Vs).filter(Boolean),r=[],o="";for(let i of t)for(o&&(o+i).length>a&&(r.push(o.trim()),o=""),o+=i;o.length>a*2;){let s=o.lastIndexOf(" ",a*2);r.push(o.slice(0,s>a?s:a*2).trim()),o=o.slice(s>a?s:a*2)}return o.trim()&&r.push(o.trim()),r.filter(i=>/\S/.test(i))}function Ws(e,a,t){return new Promise(r=>{if(t!==vt)return r();let o=e.ctx.createBufferSource();o.buffer=a,o.connect(e.analyser),o.onended=()=>r(),o.start();let i=setInterval(()=>{if(t!==vt){clearInterval(i);try{o.stop()}catch{}r()}},100);o.onended=()=>{clearInterval(i),r()}})}async function Kr({client:e,text:a,voice:t,language:r,bcp47:o,onStart:i,onEnd:s,onError:c,onRefused:n,onSecondsLeft:l}){At();let m=++vt;Vr=!1;let p=js(a);if(!p){s?.();return}let u=$s();if(!u){Yo(p,o,i,s,c);return}if(u.ctx.state==="suspended")try{await u.ctx.resume()}catch{}let d=Os(p),b=w=>e.synthesizeSpeech(w,t,r).catch(()=>null),v=!1,y=b(d[0]);for(let w=0;w<d.length&&m===vt;w++){let C=await y;if(y=w+1<d.length?b(d[w+1]):Promise.resolve(null),C&&"refused"in C&&C.refused){n?.(C.refused),s?.();return}if(!C){if(!v){Yo(d.slice(w).join(" "),o,i,s,c);return}continue}if(C.secondsLeft!==void 0&&l?.(C.secondsLeft),m!==vt)break;let L;try{L=await u.ctx.decodeAudioData(C.audio.slice(0))}catch(f){c?.(f);continue}if(m!==vt)break;v||(v=!0,Vt=!0,i?.()),await Ws(u,L,m)}m===vt&&(Vt=!1,s?.())}function Ys(e){let a=window.speechSynthesis.getVoices?.()??[];if(!a.length||!e)return;let t=e.toLowerCase(),r=t.split("-")[0],o=a.filter(s=>s.lang?.toLowerCase().replace("_","-")===t),i=o.length?o:a.filter(s=>s.lang?.toLowerCase().split(/[-_]/)[0]===r);if(i.length)return i.find(s=>s.localService===!1)??i[0]}function Yo(e,a,t,r,o){if(typeof window>"u"||!("speechSynthesis"in window)){o?.("speech-unavailable"),r?.();return}let i=vt;Vr=!0;try{window.speechSynthesis.cancel();let s=new SpeechSynthesisUtterance(e),c=a||document.documentElement.lang||navigator.language||"";c&&(s.lang=c);let n=Ys(c);n&&(s.voice=n),s.rate=1,s.pitch=1,s.onstart=()=>{Vt=!0,t?.()},s.onend=()=>{i===vt&&(Vt=!1,r?.())},s.onerror=l=>{Vt=!1,o?.(l),r?.()},window.speechSynthesis.speak(s)}catch(s){Vt=!1,o?.(s),r?.()}}var Gs=1100,Or=.012,Qs=320,Xs=.09,Js=.25,Qo=130,Zs=700,ec=12,tc=48,ac=.45,rc=.35,oc=.2,Xo=.55;function dr({lang:e,onUtterance:a,onError:t,onBargeIn:r,silenceMs:o=Gs,paused:i=!1}){let[s,c]=(0,he.useState)(!1),[n,l]=(0,he.useState)(!1),[m,p]=(0,he.useState)(""),[u,d]=(0,he.useState)(!1),b=(0,he.useRef)(null),v=(0,he.useRef)(null),y=(0,he.useRef)(null),w=(0,he.useRef)(null),C=(0,he.useRef)(null),L=(0,he.useRef)(null),f=(0,he.useRef)(0),N=(0,he.useRef)(.008),T=(0,he.useRef)(0),x=(0,he.useRef)(0),Q=(0,he.useRef)(""),S=(0,he.useRef)(0),$=(0,he.useRef)(0),_=(0,he.useRef)(!1),I=(0,he.useRef)(i),K=(0,he.useRef)(!1),E=(0,he.useRef)(!1),F=(0,he.useRef)(a),ee=(0,he.useRef)(t),z=(0,he.useRef)(r);(0,he.useEffect)(()=>{F.current=a},[a]),(0,he.useEffect)(()=>{ee.current=t},[t]),(0,he.useEffect)(()=>{z.current=r},[r]),(0,he.useEffect)(()=>{I.current=i},[i]),(0,he.useEffect)(()=>{d(typeof window<"u"&&("SpeechRecognition"in window||"webkitSpeechRecognition"in window)&&!!navigator.mediaDevices?.getUserMedia)},[]);let B=(0,he.useCallback)(()=>f.current,[]),ie=(0,he.useCallback)(W=>{let te=w.current;return!te||W.length!==te.frequencyBinCount?!1:(te.getByteFrequencyData(W),!0)},[]),re=(0,he.useCallback)(()=>w.current?.frequencyBinCount??0,[]),h=(0,he.useRef)([]),P=(0,he.useRef)(null),q=(0,he.useRef)(!1),X=(0,he.useRef)(0),Y=(0,he.useRef)(0),A=(0,he.useCallback)(W=>{let te=w.current;if(!te)return 0;let oe=h.current;oe.push(W),oe.length>tc&&oe.shift();let de=0;if(oe.length>=12){let Re=0;for(let nt of oe)Re+=nt;if(Re/=oe.length,Re>1e-4){let nt=0;for(let lt of oe)nt+=(lt-Re)*(lt-Re);de=Math.min(1,Math.sqrt(nt/oe.length)/Re/.6)}}let V=0;(!P.current||P.current.length!==te.frequencyBinCount)&&(P.current=new Uint8Array(te.frequencyBinCount));let ce=P.current;te.getByteFrequencyData(ce);let We=(y.current?.sampleRate??48e3)/2/ce.length,De=Math.floor(300/We),Fe=Math.min(ce.length-1,Math.ceil(3400/We)),Qt=0,Je=0;for(let Re=0;Re<ce.length;Re++)Je+=ce[Re],Re>=De&&Re<=Fe&&(Qt+=ce[Re]);Je>0&&(V=Qt/Je);let Mt=Math.min(1,W/(N.current+Or*3));return ac*Mt+rc*de+oc*V},[]),M=(0,he.useCallback)(()=>{let W=Q.current.trim();Q.current="",S.current=$.current,p(""),l(!1),W&&F.current(W)},[]),Z=(0,he.useCallback)(()=>{let W=w.current,te=L.current;if(!W||!te)return;W.getByteTimeDomainData(te);let oe=0;for(let De=0;De<te.length;De++){let Fe=(te[De]-128)/128;oe+=Fe*Fe}let de=Math.sqrt(oe/te.length),V=Math.min(1,de*4);f.current+=(V-f.current)*(V>f.current?.6:.12);let ce=Date.now(),Ne=I.current?Go()*Xs:0;de>N.current+Or+Ne?(T.current=ce,x.current||(x.current=ce)):(x.current=0,N.current=Math.min(N.current*1.02+2e-5,Math.max(.004,de))),I.current?q.current?(A(de)>Xo?Y.current+=1:Y.current=Math.max(0,Y.current-2),Y.current>=ec?(q.current=!1,Y.current=0,Ha(1,0),z.current?.()):ce-X.current>Zs&&(q.current=!1,Y.current=0,Ha(1,Qo*2))):x.current&&ce-x.current>Qs&&A(de)>Xo&&(x.current=0,q.current=!0,X.current=ce,Y.current=0,Ha(Js,Qo)):Q.current.trim()&&ce-T.current>o&&M(),C.current=requestAnimationFrame(Z)},[M,o,A]),G=(0,he.useCallback)(()=>{if(b.current||!_.current)return;let W=window.SpeechRecognition||window.webkitSpeechRecognition,te=new W;S.current=0,$.current=0,te.lang=e||document.documentElement.lang||navigator.language||"en-US",te.interimResults=!0,te.maxAlternatives=1,te.continuous=!0,te.onresult=oe=>{let de="";for(let V=S.current;V<oe.results.length;V++)de+=oe.results[V][0].transcript;$.current=oe.results.length,de=de.trim(),de&&(Q.current=de,p(de),l(!0))},te.onerror=oe=>{let de=oe?.error||"";de==="no-speech"||de==="aborted"||ee.current?.(de)},te.onend=()=>{b.current=null,_.current&&K.current&&setTimeout(()=>{G()},120)},b.current=te;try{te.start()}catch{b.current=null,ee.current?.("failed-to-start")}},[e]),g=(0,he.useCallback)(()=>{K.current=!1;let W=b.current;b.current=null;try{W?.stop()}catch{}},[]),J=(0,he.useCallback)(()=>{_.current=!1,q.current=!1,Y.current=0,h.current=[],Ha(1,0),K.current=!1,c(!1),l(!1),p(""),Q.current="",f.current=0;let W=b.current;b.current=null;try{W?.abort()}catch{}C.current!==null&&(cancelAnimationFrame(C.current),C.current=null),v.current?.getTracks().forEach(te=>te.stop()),v.current=null,w.current=null,y.current?.close().catch(()=>{}),y.current=null},[]),O=(0,he.useCallback)(async()=>{if(!(_.current||!u)){_.current=!0,c(!0);try{let W=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0}});v.current=W;let te=window.AudioContext||window.webkitAudioContext,oe=new te;y.current=oe;let de=oe.createAnalyser();de.fftSize=1024,de.smoothingTimeConstant=.25,oe.createMediaStreamSource(W).connect(de),w.current=de,L.current=new Uint8Array(de.fftSize),N.current=.008,T.current=Date.now(),C.current=requestAnimationFrame(Z)}catch(W){_.current=!1,c(!1),ee.current?.(W?.name==="NotAllowedError"?"not-allowed":"audio-capture");return}K.current=!0,G()}},[u,Z,G]);return(0,he.useEffect)(()=>{s&&(i?(Q.current="",p(""),q.current=!1,Y.current=0,h.current=[],g()):(q.current=!1,T.current=Date.now(),K.current=!0,G()))},[i,s,G,g]),(0,he.useEffect)(()=>{if(!s||i)return;let W=setInterval(()=>{let te=!!b.current,oe=f.current>N.current+Or;te&&oe&&Q.current},2e3);return()=>clearInterval(W)},[s,i]),(0,he.useEffect)(()=>()=>{J()},[J]),{supported:u,active:s,hearing:n,interim:m,micLevel:B,micSpectrum:ie,spectrumBins:re,start:O,stop:J}}var yt=require("react/jsx-runtime"),nc=({active:e})=>(0,yt.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,yt.jsx)("rect",{x:"9",y:"2",width:"6",height:"11",rx:"3",fill:e?"currentColor":"none"}),(0,yt.jsx)("path",{d:"M5 10a7 7 0 0 0 14 0"}),(0,yt.jsx)("line",{x1:"12",y1:"19",x2:"12",y2:"23"}),(0,yt.jsx)("line",{x1:"8",y1:"23",x2:"16",y2:"23"})]});function hr({onTranscript:e,onInterim:a,lang:t,className:r="",disabled:o=!1,onError:i}){let s=(0,It.useRef)(e);(0,It.useEffect)(()=>{s.current=e},[e]);let c=(0,It.useRef)(()=>{}),n=(0,It.useCallback)(m=>{c.current(),s.current(m)},[]),l=dr({lang:t,onUtterance:n,onError:i});return(0,It.useEffect)(()=>{c.current=l.stop},[l.stop]),(0,It.useEffect)(()=>{l.interim&&a?.(l.interim)},[l.interim,a]),l.supported?(0,yt.jsxs)("button",{type:"button",className:`kiku-voice-btn${l.active?" kiku-voice-btn--active":""} ${r}`,onClick:()=>l.active?l.stop():void l.start(),disabled:o,title:l.active?"Stop listening":"Speak your search","aria-label":l.active?"Stop voice input":"Start voice input",children:[(0,yt.jsx)(nc,{active:l.active}),l.active&&(0,yt.jsx)("span",{className:"kiku-voice-ripple","aria-hidden":"true"})]}):null}var ur=require("react");function Wr(e){let a=e.indexOf(","),t=a===-1?e:e.slice(a+1);return Math.floor(t.length*.75)}async function pr(e){let a=await new Promise((t,r)=>{let o=new FileReader;o.onload=()=>t(o.result),o.onerror=()=>r(o.error??new Error("read failed")),o.readAsDataURL(e)});if(e.type==="image/gif"||e.type==="image/svg+xml"||Wr(a)<=307200)return a;try{let t=await createImageBitmap(e);try{let r=Math.min(1,1536/Math.max(t.width,t.height)),o=Math.max(1,Math.round(t.width*r)),i=Math.max(1,Math.round(t.height*r)),s=document.createElement("canvas");s.width=o,s.height=i;let c=s.getContext("2d");if(!c)return a;c.drawImage(t,0,0,o,i);let n=e.type==="image/png",l=s.toDataURL(n?"image/png":"image/jpeg",.85);return Wr(l)<Wr(a)?l:a}finally{t.close?.()}}catch{return a}}var Jo=require("@akropolys/sdk"),pt=require("react/jsx-runtime"),ic=()=>(0,pt.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,pt.jsx)("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"}),(0,pt.jsx)("circle",{cx:"12",cy:"13",r:"4"})]}),sc=()=>(0,pt.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"kiku-vs-spin",children:(0,pt.jsx)("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})});function cc(e){return pr(e)}function mr({onResults:e,onError:a,categoryHint:t,className:r="",disabled:o=!1}){let i=(0,Jo.useAkropolysContext)(),s=(0,ur.useRef)(null),[c,n]=(0,ur.useState)(!1),l=async m=>{if(m.type.startsWith("image/")){n(!0);try{let p=await cc(m),u=await i.api.searchByImage(p,t);e(u,p)}catch(p){a?.(p instanceof Error?p:new Error(String(p)))}finally{n(!1),s.current&&(s.current.value="")}}};return(0,pt.jsxs)("label",{className:`kiku-vs-btn${c?" kiku-vs-btn--loading":""} ${r}`,title:"Search by photo","aria-label":"Search by uploading a photo",style:{cursor:o||c?"not-allowed":"pointer"},children:[(0,pt.jsx)("input",{ref:s,type:"file",accept:"image/*",capture:"environment",onChange:m=>m.target.files?.[0]&&l(m.target.files[0]),disabled:o||c,hidden:!0}),c?(0,pt.jsx)(sc,{}):(0,pt.jsx)(ic,{})]})}var H=require("react/jsx-runtime"),$a=()=>(0,H.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,H.jsx)("path",{d:"m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"})}),Zo=({active:e})=>(0,H.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,H.jsx)("polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",fill:e?"currentColor":"none"}),e?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)("path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07"}),(0,H.jsx)("path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14"})]}):(0,H.jsx)("line",{x1:"23",y1:"9",x2:"17",y2:"15"})]});function kr({source:e,defaultCurrency:a,onSelect:t,isReferenced:r}){return(0,H.jsxs)("div",{className:ae("hsk-source-card",r&&"hsk-source-card--referenced"),onClick:()=>t?.(e),children:[e.image&&(0,H.jsx)("img",{src:e.image,alt:e.name,className:"hsk-source-img"}),(0,H.jsxs)("div",{style:{flex:1,minWidth:0,position:"relative"},children:[r&&(0,H.jsx)("div",{className:"hsk-cb-source-ref-badge",title:"Featured in response",style:{top:"0",right:"0"},children:(0,H.jsx)($a,{})}),(0,H.jsx)("div",{className:"hsk-source-name",style:{paddingRight:r?"20px":void 0},children:e.name}),e.price&&(0,H.jsxs)("div",{className:"hsk-source-price",children:[e.currency??a," ",e.price]})]})]})}function Yr({title:e="kiku",placeholder:a="Ask about anything in our store\u2026",emptyStateText:t="Ask me anything about our products",emptyStateSuggestions:r='"Find me headphones under KSh 5,000" \xB7 "Gift ideas"',defaultCurrency:o="KES",className:i,theme:s,classNames:c={},onSelectSource:n,enableVoice:l=!1,enableVision:m=!1,visionCategoryHint:p,enableAudioResponse:u=!0,ttsVoice:d,autoSpeakResponses:b=!0}){let v=(0,ga.useAkropolysContext)(),{messages:y,sources:w,referencedIds:C,loading:L,streaming:f,error:N,send:T,reset:x}=(0,ga.useKiku)(),[Q,S]=(0,Qe.useState)(""),[$,_]=(0,Qe.useState)(!1),I=(0,Qe.useRef)(null),K=(0,Qe.useRef)(null),[E,F]=(0,Qe.useState)(u),[ee,z]=(0,Qe.useState)(null),B=(0,Qe.useRef)(f),ie=(0,Qe.useRef)(!1),re=L||$,[h,P]=(0,Qe.useState)([]),q=(0,Qe.useRef)(0);(0,Qe.useEffect)(()=>{if(y.length===0){P([]),q.current=0;return}if(y.length>q.current){let g=y.slice(q.current);P(J=>[...J,...g]),q.current=y.length}else y.length<q.current?(P(y),q.current=y.length):P(g=>{let J=[...g],O=y.length-1,W=J.length-1;for(;O>=0&&W>=0;){if(J[W].role===y[O].role){J[W]={...J[W],content:y[O].content,actionType:y[O].actionType,thinking:y[O].thinking,thoughtForSeconds:y[O].thoughtForSeconds,statusMessage:y[O].statusMessage};break}W--}return J})},[y]),(0,Qe.useEffect)(()=>{let g=B.current;B.current=f;let J=ie.current;if(ie.current=!1,g&&!f&&J&&E&&b){let O=h.length-1,W=h[O];W&&W.role==="assistant"&&W.content&&(z(O),Kr({client:v,text:W.content,voice:d,language:v.getShopperLanguage?.(),onEnd:()=>z(null),onError:()=>z(null)}))}},[f,E,b,h,d,v]),(0,Qe.useEffect)(()=>{I.current?.scrollIntoView({behavior:re?"auto":"smooth"})},[h,re]);let X=async()=>{let g=Q.trim();!g||re||(At(),z(null),S(""),K.current&&(K.current.style.height="auto"),await T(g))},Y=g=>{g.key==="Enter"&&!g.shiftKey&&!g.nativeEvent.isComposing&&(g.preventDefault(),X())},A=g=>{S(g.target.value);let J=g.target;J.style.height="auto",J.style.height=Math.min(J.scrollHeight,120)+"px"},M=(g,J)=>{ee===g?(At(),z(null)):(z(g),Kr({client:v,text:J,voice:d,language:v.getShopperLanguage?.(),onEnd:()=>z(null),onError:()=>z(null)}))},Z=(g,J)=>{let O={role:"user",content:"Uploaded a photo for visual search",imagePreview:J},W=g.style_dna,te=`I've analyzed your image! Here is the Style DNA I found:
4
+ `;W&&(W.color_palette&&(te+=`* **Palette:** ${W.color_palette}
5
+ `),W.dominant_colors&&W.dominant_colors.length>0&&(te+=`* **Colors:** ${W.dominant_colors.join(", ")}
6
+ `),W.aesthetic&&W.aesthetic.length>0&&(te+=`* **Aesthetic:** ${W.aesthetic.join(", ")}
7
+ `),W.texture&&(te+=`* **Texture:** ${W.texture}
8
+ `),W.formality&&(te+=`* **Formality:** ${W.formality}
9
+ `));let oe=g.results||[];oe.length>0?te+=`
10
+ I found ${oe.length} matching products in the store for you.`:te+=`
11
+ I couldn't find any matching products in the store.`;let de={role:"assistant",content:te,styleDNA:W,visualSources:oe.map(V=>{let ce=V.entity??{},Ne=(0,ga.resolveDisplayFields)(ce,void 0);return{id:V.id,url:V.url??ce.url,fields:ce,name:Ne.title,price:Ne.price,image:Ne.image,brand:Ne.subtitle,currency:typeof ce.currency=="string"?ce.currency:void 0}})};P(V=>[...V,O,de])},{vars:G}=ka(s);return(0,H.jsxs)("div",{className:ae("hsk-chat-widget",c.root,i),style:G,children:[(0,H.jsxs)("div",{className:ae("hsk-chat-header",c.header),children:[(0,H.jsx)("span",{className:"hsk-chat-header-icon",children:(0,H.jsx)($a,{})}),(0,H.jsx)("span",{className:"hsk-chat-title",children:e}),(0,H.jsx)("span",{className:"hsk-chat-badge",children:"AI"}),(0,H.jsxs)("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:"8px"},children:[u&&(0,H.jsx)("button",{type:"button",className:ae("hsk-audio-toggle-btn",E&&"hsk-audio-toggle-btn--active"),onClick:()=>{let g=!E;F(g),g||(At(),z(null))},title:E?"Mute AI audio response":"Enable AI audio response","aria-label":E?"Mute voice":"Enable voice",children:(0,H.jsx)(Zo,{active:E})}),h.length>0&&(0,H.jsx)("button",{className:"hsk-chat-reset",onClick:()=>{At(),x()},children:"Clear"})]})]}),(0,H.jsxs)("div",{className:"hsk-chat-messages",children:[h.length===0?(0,H.jsxs)("div",{className:"hsk-chat-empty",children:[(0,H.jsx)("div",{className:"hsk-chat-empty-icon",children:(0,H.jsx)($a,{})}),(0,H.jsx)("div",{children:t}),(0,H.jsx)("div",{className:"hsk-chat-empty-suggestions",children:r})]}):h.map((g,J)=>(0,H.jsxs)("div",{children:[(0,H.jsxs)("div",{className:`hsk-msg-row ${g.role}`,children:[(0,H.jsx)("div",{className:ae("hsk-msg-avatar",g.role==="assistant"?"ai":"user"),children:g.role==="assistant"?(0,H.jsx)($a,{}):"U"}),(0,H.jsxs)("div",{className:ae("hsk-msg-bubble",g.role,c.messageBubble),children:[g.imagePreview&&(0,H.jsx)("div",{className:"kiku-vs-preview-bubble",style:{marginBottom:"8px"},children:(0,H.jsx)("img",{src:g.imagePreview,alt:"Uploaded Preview",className:"kiku-vs-preview-bubble-img",style:{maxWidth:"200px",borderRadius:"8px"}})}),g.thinking&&(0,H.jsxs)("details",{className:"hsk-thinking-details",open:f&&J===h.length-1&&!g.content,children:[(0,H.jsxs)("summary",{className:"hsk-thinking-summary",children:["Thought for ",g.thoughtForSeconds??1,"s"]}),(0,H.jsx)("div",{className:"hsk-thinking-text",children:g.thinking})]}),!g.content&&!g.thinking&&g.role==="assistant"&&J===h.length-1&&(0,H.jsxs)("div",{className:"hsk-status-live",children:[(0,H.jsx)("span",{className:"hsk-status-dot"}),(0,H.jsx)("span",{children:g.statusMessage||"Thinking..."})]}),ta(g.content),g.role==="assistant"&&g.content&&!f&&(0,H.jsx)("button",{type:"button",className:ae("hsk-msg-audio-btn",ee===J&&"hsk-msg-audio-btn--active"),onClick:()=>M(J,g.content),title:ee===J?"Stop speaking":"Listen to response","aria-label":"Toggle speech",children:(0,H.jsx)(Zo,{active:ee===J})}),f&&J===h.length-1&&g.role==="assistant"&&(0,H.jsx)("span",{className:"hsk-streaming-cursor"}),g.styleDNA&&(0,H.jsxs)("div",{className:"kiku-vs-preview-banner",style:{marginTop:"10px"},children:[h[J-1]?.imagePreview&&(0,H.jsx)("img",{src:h[J-1].imagePreview,alt:"Visual Search Input",className:"kiku-vs-preview-img"}),(0,H.jsxs)("div",{className:"kiku-vs-preview-info",children:[(0,H.jsx)("div",{className:"kiku-vs-preview-label",children:"Visual Match Palette"}),(0,H.jsx)("div",{className:"kiku-vs-preview-palette",children:g.styleDNA.color_palette||"Detected Style DNA"}),g.styleDNA.style_tags&&g.styleDNA.style_tags.length>0&&(0,H.jsx)("div",{className:"kiku-style-tags",children:g.styleDNA.style_tags.map((O,W)=>(0,H.jsxs)("span",{className:"kiku-style-tag",children:["#",O]},W))})]})]})]})]}),g.role==="assistant"&&g.visualSources&&g.visualSources.length>0&&(0,H.jsx)("div",{className:"hsk-sources-container",children:(0,H.jsx)("div",{className:"hsk-sources",children:g.visualSources.map((O,W)=>(0,H.jsx)(kr,{source:O,defaultCurrency:o,onSelect:n},W))})}),g.role==="assistant"&&J===h.length-1&&!g.visualSources&&w.length>0&&(()=>{if(L||f)return(0,H.jsx)("div",{className:"hsk-sources-container",children:(0,H.jsx)("div",{className:"hsk-sources",children:w.map((oe,de)=>{let V=!!(oe.id&&C.includes(oe.id));return(0,H.jsx)(kr,{source:oe,defaultCurrency:o,onSelect:n,isReferenced:V},de)})})});let W=w.filter(oe=>oe.id&&C.includes(oe.id)),te=C.length>0?[]:w.filter(oe=>!oe.id||!C.includes(oe.id));return(0,H.jsxs)("div",{className:"hsk-sources-container",children:[W.length>0&&(0,H.jsxs)("div",{className:"hsk-sources-group",style:{marginBottom:"10px"},children:[(0,H.jsx)("div",{className:"hsk-sources-group-title",children:"\u2B50 Featured in response"}),(0,H.jsx)("div",{className:"hsk-sources",children:W.map((oe,de)=>(0,H.jsx)(kr,{source:oe,defaultCurrency:o,onSelect:n,isReferenced:!0},`feat-${de}`))})]}),te.length>0&&(0,H.jsxs)("div",{className:"hsk-sources-group",children:[W.length>0&&(0,H.jsx)("div",{className:"hsk-sources-group-title",children:"All matches"}),(0,H.jsx)("div",{className:"hsk-sources",children:te.map((oe,de)=>(0,H.jsx)(kr,{source:oe,defaultCurrency:o,onSelect:n,isReferenced:!1},`gen-${de}`))})]})]})})()]},J)),re&&(0,H.jsxs)("div",{className:"hsk-msg-row",children:[(0,H.jsx)("div",{className:"hsk-msg-avatar ai",children:(0,H.jsx)($a,{})}),(0,H.jsxs)("div",{className:"hsk-pending",role:"status","aria-live":"polite",children:[(0,H.jsxs)("div",{className:"hsk-pending-glyph",children:[(0,H.jsx)("span",{className:"hsk-pending-ring"}),(0,H.jsx)("span",{className:"hsk-pending-dot"})]}),(0,H.jsxs)("div",{className:"hsk-pending-text",children:[(0,H.jsx)("span",{className:"hsk-pending-step step-1",children:"Searching catalog"}),(0,H.jsx)("span",{className:"hsk-pending-step step-2",children:"Reasoning"}),(0,H.jsx)("span",{className:"hsk-pending-step step-3",children:"Composing"})]})]})]}),N&&(0,H.jsx)("div",{className:"hsk-chat-error",children:(()=>{try{let g=JSON.parse(N);return g.error||g.message||N}catch{return N}})()}),(0,H.jsx)("div",{ref:I})]}),(0,H.jsxs)("div",{className:"hsk-chat-input-area",style:{display:"flex",alignItems:"center",gap:"8px"},children:[m&&(0,H.jsx)(mr,{onResults:Z,onError:g=>console.error("[VisualSearch] error:",g),categoryHint:p,disabled:re}),(0,H.jsx)("textarea",{ref:K,className:ae("hsk-chat-input",c.input),value:Q,onChange:A,onKeyDown:Y,placeholder:a,rows:1,disabled:re,style:{flex:1}}),l&&(0,H.jsx)(hr,{onTranscript:g=>{ie.current=!0,At(),z(null),S(g),T(g),S("")},onInterim:g=>S(g),disabled:re}),(0,H.jsx)("button",{className:"hsk-chat-send",onClick:X,disabled:!Q.trim()||re,"aria-label":"Send message",children:(0,H.jsx)(Ba,{})})]})]})}var Dt=require("react"),Ai=require("react-dom");var Gr=`@property --hsk-chat-bg{syntax:'<color>';inherits:true;initial-value:#0a0a0a}@property --hsk-chat-text{syntax:'<color>';inherits:true;initial-value:#f0efed}@property --hsk-chat-muted{syntax:'<color>';inherits:true;initial-value:#888888}@property --hsk-chat-divide{syntax:'<color>';inherits:true;initial-value:rgba(255,255,255,.08)}@property --hsk-chat-input-bg{syntax:'<color>';inherits:true;initial-value:#191919}@property --hsk-chat-source-bg{syntax:'<color>';inherits:true;initial-value:rgba(255,255,255,.04)}@property --hsk-fade-bg{syntax:'<color>';inherits:true;initial-value:#0a0a0a}@property --hsk-surface-1{syntax:'<color>';inherits:true;initial-value:rgba(255,255,255,.06)}@property --hsk-surface-2{syntax:'<color>';inherits:true;initial-value:#1f1f22}@property --hsk-bubble-bg{syntax:'<color>';inherits:true;initial-value:#1f1f22}@property --hsk-think-text{syntax:'<color>';inherits:true;initial-value:#a6a6a6}@property --hsk-placeholder{syntax:'<color>';inherits:true;initial-value:#555555}@property --hsk-grid-bg{syntax:'<color>';inherits:true;initial-value:#1a1a1c}@property --hsk-active-bg{syntax:'<color>';inherits:true;initial-value:#f0efed}@property --hsk-on-active{syntax:'<color>';inherits:true;initial-value:#0a0a0a}@property --hsk-src-title{syntax:'<color>';inherits:true;initial-value:#f9fafb}@property --hsk-src-desc{syntax:'<color>';inherits:true;initial-value:#9ca3af}@property --hsk-price-bg{syntax:'<color>';inherits:true;initial-value:rgba(255,255,255,.08)}@property --hsk-price-text{syntax:'<color>';inherits:true;initial-value:#ff7a45}@property --hsk-sheet-bg{syntax:'<color>';inherits:true;initial-value:#1f1f22}@property --hsk-primary{syntax:'<color>';inherits:true;initial-value:#ff6a33}:host,:root{--hsk-border-radius:0;--hsk-brand-green:#2D7A4B;--hsk-font:"Geist","Inter",-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Segoe UI",Roboto,Helvetica,Arial,sans-serif;--hsk-default-font-size:15px}.hsk-cb-btn,.hsk-cb-close,.hsk-cb-topbar-btn,.hsk-cb-chip,.hsk-cb-source,.hsk-cb-sources-next,.hsk-action-pill,.hsk-chat-send,.hsk-chat-reset,.hsk-close-btn,.hsk-cb-overlay{--hsk-font-size:16px;touch-action:manipulation;-webkit-tap-highlight-color:transparent;font-family:var(--hsk-font)}.hsk-cb-overlay{transition:--hsk-chat-bg .45s cubic-bezier(.16,1,.3,1),--hsk-chat-text .45s cubic-bezier(.16,1,.3,1),--hsk-chat-muted .45s cubic-bezier(.16,1,.3,1),--hsk-chat-divide .45s cubic-bezier(.16,1,.3,1),--hsk-chat-input-bg .45s cubic-bezier(.16,1,.3,1),--hsk-surface-1 .45s cubic-bezier(.16,1,.3,1),--hsk-surface-2 .45s cubic-bezier(.16,1,.3,1),--hsk-bubble-bg .45s cubic-bezier(.16,1,.3,1),--hsk-primary .45s cubic-bezier(.16,1,.3,1),--hsk-grid-bg .45s cubic-bezier(.16,1,.3,1),--hsk-active-bg .45s cubic-bezier(.16,1,.3,1),--hsk-on-active .45s cubic-bezier(.16,1,.3,1),--hsk-src-title .45s cubic-bezier(.16,1,.3,1),--hsk-src-desc .45s cubic-bezier(.16,1,.3,1),--hsk-price-bg .45s cubic-bezier(.16,1,.3,1),--hsk-price-text .45s cubic-bezier(.16,1,.3,1),--hsk-sheet-bg .45s cubic-bezier(.16,1,.3,1),background-color .45s cubic-bezier(.16,1,.3,1),border-color .45s cubic-bezier(.16,1,.3,1),color .45s cubic-bezier(.16,1,.3,1),fill .45s cubic-bezier(.16,1,.3,1),stroke .45s cubic-bezier(.16,1,.3,1),box-shadow .45s cubic-bezier(.16,1,.3,1)}.hsk-kiku-avatar,.hsk-kiku-avatar *{transition:none}@media (prefers-reduced-motion:reduce){.hsk-cb-overlay,.hsk-cb-overlay *,.hsk-cb-overlay *::before,.hsk-cb-overlay *::after{transition:none}}.hsk-cb-overlay button,.hsk-cb-overlay [role="button"],.hsk-cb-overlay input,.hsk-cb-overlay textarea,.hsk-cb-overlay select,.hsk-chat button,.hsk-chat [role="button"],.hsk-chat input,.hsk-chat textarea,.hsk-chat select,.hsk-cb-btn,.hsk-search button,.hsk-search [role="button"],.hsk-search input,.hsk-search textarea,.hsk-search select{touch-action:manipulation;-webkit-tap-highlight-color:transparent;font-family:var(--hsk-font)}:host,:root,.hsk-cb-btn,.hsk-cb-overlay,.hsk-chat-widget{--hsk-marble-1:color-mix(in srgb,var(--hsk-primary,#ff6a33) 12%,#fffaf4);--hsk-marble-2:color-mix(in srgb,var(--hsk-primary,#ff6a33) 30%,#fdf0e4);--hsk-marble-3:color-mix(in srgb,var(--hsk-primary,#ff6a33) 62%,#e8cbb0);--hsk-marble-4:color-mix(in srgb,var(--hsk-primary,#ff6a33) 85%,#6d3a1c);--hsk-marble-sheen:.5}@media (prefers-color-scheme:dark){:host,:root,.hsk-cb-btn,.hsk-cb-overlay,.hsk-chat-widget{--hsk-marble-1:#FFFDF6;--hsk-marble-2:#FBF3E2;--hsk-marble-3:color-mix(in srgb,var(--hsk-primary,#ff6a33) 20%,#EDDFC4);--hsk-marble-4:color-mix(in srgb,var(--hsk-primary,#ff6a33) 42%,#D8C39C);--hsk-marble-sheen:.9}}.hsk-chat-widget{--hsk-bg:var(--chat-bg-color,#ffffff);--hsk-text:var(--chat-text-color,#1f1f1f);--hsk-primary:var(--chat-primary-color,#ff6a33);--hsk-font:var(--chat-font-family,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif);--hsk-font-size:var(--chat-font-size,16px);display:flex;flex-direction:column;height:100%;min-height:320px;font-family:var(--hsk-font);letter-spacing:normal;word-spacing:normal;text-transform:none;background:var(--hsk-bg);border:1px solid #f1f3f4;border-radius:var(--hsk-border-radius,0);overflow:hidden}@media (prefers-color-scheme:dark){.hsk-chat-widget{--hsk-bg:var(--chat-bg-color,#0a0a0a);--hsk-text:var(--chat-text-color,#e8eaed);border-color:#202124}}.hsk-chat-header{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid #f1f3f4;background:var(--hsk-bg);flex-shrink:0}@media (prefers-color-scheme:dark){.hsk-chat-header{border-bottom-color:#202124}}.hsk-chat-header-icon{color:var(--hsk-primary);display:flex;align-items:center}.hsk-chat-title{font-size:14px;font-weight:600;color:var(--hsk-text)}.hsk-chat-badge{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--hsk-primary);background:rgba(255,106,51,.09);border:1px solid rgba(255,106,51,.18);padding:2px 8px;border-radius:var(--hsk-border-radius,0)}.hsk-chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}.hsk-chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:8px;color:#555;font-size:13px;text-align:center;padding:24px}.hsk-chat-empty-icon{font-size:28px;margin-bottom:4px;color:var(--hsk-primary);display:flex;align-items:center;justify-content:center}.hsk-chat-empty-suggestions{font-size:12px;color:#666;margin-top:4px}.hsk-msg-row{display:flex;gap:8px;align-items:flex-start}.hsk-msg-row.user{flex-direction:row-reverse}.hsk-msg-avatar{width:28px;height:28px;border-radius:var(--hsk-border-radius,0);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700}.hsk-msg-avatar.ai{background:rgba(255,106,51,.12);border:1px solid rgba(255,106,51,.25);color:var(--hsk-primary);display:flex;align-items:center;justify-content:center}.hsk-msg-avatar.user{background:#f1f3f4;color:#5f6368}@media (prefers-color-scheme:dark){.hsk-msg-avatar.user{background:#202124;color:#888}}.hsk-msg-bubble{max-width:78%;padding:10px 14px;border-radius:var(--hsk-border-radius,0);font-size:var(--hsk-font-size,13px);line-height:1.6}.hsk-msg-bubble.ai{background:var(--hsk-bg);border:1px solid #f1f3f4;color:var(--hsk-text)}@media (prefers-color-scheme:dark){.hsk-msg-bubble.ai{border-color:#202124}}.hsk-msg-bubble.user{background:var(--hsk-primary);color:#fff}.hsk-streaming-cursor{display:inline-block;width:6px;height:1.1em;margin-inline-start:3px;vertical-align:-2px;background-color:var(--hsk-primary);animation:hsk-cursor-blink .9s infinite}@keyframes hsk-cursor-blink{0%,100%{opacity:1}50%{opacity:0}}.hsk-status-live{display:flex;align-items:center;gap:8px;font-size:12px;color:#666;padding:4px 0 8px 0;font-weight:500}.hsk-status-dot{width:8px;height:8px;border-radius:50%;background-color:var(--hsk-primary);animation:hsk-pulse 1.4s infinite ease-in-out}@keyframes hsk-pulse{0%,100%{transform:scale(.8);opacity:.5}50%{transform:scale(1.2);opacity:1}}.hsk-thinking-details{margin-bottom:10px;padding:8px 12px;background:rgba(0,0,0,.03);border:1px solid rgba(0,0,0,.06);border-radius:8px;font-size:12px}.hsk-thinking-summary{cursor:pointer;font-weight:600;color:#666;user-select:none}.hsk-thinking-text{margin-top:8px;white-space:pre-wrap;color:#555;font-family:monospace;font-size:11px;line-height:1.4;max-height:200px;overflow-y:auto}.hsk-sources-container{margin-inline-start:36px}.hsk-sources{margin-top:10px;display:flex;flex-direction:column;gap:6px}.hsk-source-card{display:flex;align-items:center;gap:10px;padding:8px 10px;background:#f8f9fa;border:1px solid #f1f3f4;border-radius:var(--hsk-border-radius,0);cursor:pointer;transition:border-color .15s}@media (prefers-color-scheme:dark){.hsk-source-card{background:#1a1a1b;border-color:#202124}}.hsk-source-card:hover{border-color:rgba(255,106,51,.37)}.hsk-source-img{width:36px;height:36px;object-fit:cover;border-radius:var(--hsk-border-radius,0);background:#fff}.hsk-source-name{font-size:12px;font-weight:500;color:var(--hsk-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hsk-source-price{font-size:11px;color:var(--hsk-primary);font-weight:700;margin-top:2px}.hsk-typing{display:flex;gap:4px;align-items:center;padding:10px 14px;background:var(--hsk-bg);border:1px solid #f1f3f4;border-radius:var(--hsk-border-radius,0);width:fit-content}@media (prefers-color-scheme:dark){.hsk-typing{border-color:#202124}}.hsk-typing-dot{width:6px;height:6px;background:var(--hsk-primary);border-radius:50%;animation:hsk-chat-bounce 1.2s infinite}.hsk-typing-dot:nth-child(2){animation-delay:.2s}.hsk-typing-dot:nth-child(3){animation-delay:.4s}@keyframes hsk-chat-bounce{0%,100%{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-4px)}}.hsk-pending{display:inline-flex;align-items:center;gap:10px;padding:10px 14px;background:var(--hsk-bg);border:1px solid #f1f3f4;border-radius:var(--hsk-border-radius,0);position:relative}@media (prefers-color-scheme:dark){.hsk-pending{border-color:#202124}}.hsk-pending-glyph{width:18px;height:18px;position:relative;display:inline-flex;align-items:center;justify-content:center}.hsk-pending-ring{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,106,51,.25);border-top-color:var(--hsk-primary);animation:hsk-pending-spin 1.1s linear infinite}.hsk-pending-dot{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--hsk-primary);box-shadow:0 0 8px rgba(255,106,51,.45);animation:hsk-pending-pulse 1.4s ease-in-out infinite}.hsk-pending-text{position:relative;min-width:140px;height:16px;font-size:12px;color:var(--hsk-text);letter-spacing:.01em}.hsk-pending-step{position:absolute;left:0;top:0;opacity:0;animation:hsk-pending-cycle 6s infinite}.hsk-pending-step.step-1{animation-delay:0s}.hsk-pending-step.step-2{animation-delay:2s}.hsk-pending-step.step-3{animation-delay:4s}@keyframes hsk-pending-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes hsk-pending-pulse{0%,100%{transform:scale(.75);opacity:.6}50%{transform:scale(1);opacity:1}}@keyframes hsk-pending-cycle{0%,10%{opacity:0;transform:translateY(2px)}20%,45%{opacity:1;transform:translateY(0)}55%,100%{opacity:0;transform:translateY(-2px)}}.hsk-chat-input-area{display:flex;align-items:center;gap:8px;padding:12px 14px;border-top:1px solid #f1f3f4;background:var(--hsk-bg);flex-shrink:0}@media (prefers-color-scheme:dark){.hsk-chat-input-area{border-top-color:#202124}}.hsk-chat-input{flex:1;background:#f1f3f4;border:1px solid #f1f3f4;border-radius:var(--hsk-border-radius,0);padding:9px 14px;font-size:13px;color:var(--hsk-text);outline:none;font-family:inherit;transition:border-color .2s;resize:none;min-height:38px;max-height:120px;line-height:1.5}@media (prefers-color-scheme:dark){.hsk-chat-input{background:#1a1a1b;border-color:#202124}}.hsk-chat-input::placeholder{color:#888}.hsk-chat-input:focus{border-color:var(--hsk-primary)}.hsk-chat-send{width:34px;height:34px;border-radius:var(--hsk-border-radius,0);background:var(--hsk-primary);border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px;transition:opacity .15s,transform .1s}.hsk-chat-send:hover{opacity:.88}.hsk-chat-send:active{transform:scale(.93)}.hsk-chat-send:disabled{opacity:.4;cursor:not-allowed}.hsk-chat-reset{font-size:11px;color:#555;cursor:pointer;padding:0 4px;transition:color .15s;background:none;border:none;font-family:inherit}.hsk-chat-reset:hover{color:var(--hsk-primary)}.hsk-chat-error{font-size:12px;color:#ef4444;text-align:center;padding:8px}.hsk-cb-btn{--hsk-primary:var(--chat-primary-color,#ff6a33);display:inline-flex;align-items:center;gap:7px;padding:8px 16px;border-radius:var(--hsk-border-radius,0);border:1px solid rgba(255,106,51,.4);background:rgba(255,106,51,.1);color:var(--hsk-primary);font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,transform .12s,box-shadow .15s;font-family:inherit;white-space:nowrap}.hsk-cb-btn:hover{background:rgba(255,106,51,.18);border-color:rgba(255,106,51,.7);box-shadow:0 4px 16px rgba(255,106,51,.2)}.hsk-cb-btn:active{transform:scale(.95)}.hsk-cb-btn-icon{font-size:15px;line-height:1;display:flex;align-items:center}.hsk-cb-overlay{--hsk-primary:var(--chat-primary-color,#ff6a33);--hsk-font:var(--chat-font-family,"Geist",ui-sans-serif,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif);letter-spacing:normal;word-spacing:normal;font-kerning:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--hsk-font-size:var(--hsk-desktop-font-size,15px);--hsk-mobile-font-size:14px;position:fixed !important;inset:0 !important;width:100vw !important;height:100vh !important;height:100dvh !important;z-index:2147483647 !important;display:flex !important;flex-direction:column !important;overflow:hidden !important;animation:hsk-overlay-in .2s ease-out;background:var(--hsk-chat-bg,#ffffff) !important;box-sizing:border-box !important;margin:0 !important;padding:0 !important}@keyframes hsk-overlay-in{from{opacity:0}to{opacity:1}}.hsk-cb-overlay.hsk-cb-overlay--grows{animation:hsk-overlay-in .18s cubic-bezier(.16,1,.3,1) both !important}.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-panel{transform-origin:var(--hsk-ox,50%) var(--hsk-oy,50%);animation:hsk-panel-float-in .22s cubic-bezier(.16,1,.3,1) both !important}@keyframes hsk-panel-float-in{0%{opacity:0;transform:translateY(8px) scale(.985)}100%{opacity:1;transform:translateY(0) scale(1)}}.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-msgs{animation:hsk-content-fade .2s cubic-bezier(.16,1,.3,1) both}@keyframes hsk-content-fade{0%{opacity:0;transform:translateY(4px)}100%{opacity:1;transform:translateY(0)}}.hsk-cb-lang-chip,.hsk-cb-chip{animation:hsk-pill-wave .22s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.04s+var(--hsk-pill-idx,0) * .012s)}.hsk-cb-lang-chips-hint{animation:hsk-content-fade .22s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.04s+var(--hsk-pill-idx,0) * .012s)}@keyframes hsk-pill-wave{0%{opacity:0;transform:translateY(6px) scale(.96)}100%{opacity:1;transform:translateY(0) scale(1)}}.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-input-wrap{animation:hsk-input-dock .22s cubic-bezier(.16,1,.3,1) both}@keyframes hsk-input-dock{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:translateY(0)}}.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-hello-avatar{animation:hsk-avatar-spring .22s cubic-bezier(.16,1,.3,1) both}@keyframes hsk-avatar-spring{0%{opacity:0;transform:scale(.92)}100%{opacity:1;transform:scale(1)}}.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-hello-wrap{animation:hsk-hello-spring .2s cubic-bezier(.16,1,.3,1) both}@keyframes hsk-hello-spring{0%{opacity:0;transform:translateY(6px)}100%{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.hsk-cb-overlay.hsk-cb-overlay--grows{animation:none !important;-webkit-clip-path:none !important;clip-path:none !important}.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-panel,.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-msgs,.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-lang-chip,.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-chip,.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-input-wrap,.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-hello-avatar,.hsk-cb-overlay.hsk-cb-overlay--grows .hsk-cb-hello-wrap{animation:none !important}}.hsk-cb-panel{position:relative;display:flex;flex-direction:column;height:100%;max-width:720px;width:100%;margin:0 auto;animation:hsk-panel-in .28s cubic-bezier(.34,1.2,.64,1)}.hsk-cb-main{flex:1;min-width:0;display:flex;flex-direction:column;height:100%;overflow:hidden}@keyframes hsk-panel-in{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.hsk-cb-topbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:14px var(--hsk-gutter,24px) 10px;flex-shrink:0;position:relative;z-index:10;background:transparent !important;backdrop-filter:none !important;-webkit-backdrop-filter:none !important}.hsk-cb-topbar::after{display:none !important}.hsk-cb-topbar-left{display:flex;align-items:center;gap:10px;justify-self:start;min-width:0}.hsk-cb-topbar-mark{justify-self:center;display:flex;flex-direction:column;align-items:center;line-height:0;cursor:pointer;user-select:none;touch-action:manipulation;transition:transform .22s cubic-bezier(.34,1.56,.64,1)}.hsk-cb-topbar-mark:hover{transform:translateY(-1px)}.hsk-cb-topbar-mark[data-unread="true"] .hsk-cb-topbar-name{background:var(--hsk-primary,#ff6a33);color:#fff;box-shadow:0 0 0 3px var(--hsk-chat-bg,#ffffff);animation:hsk-unread-pill .9s cubic-bezier(.34,1.56,.64,1) infinite}@keyframes hsk-unread-pill{0%,100%{transform:scale(1,1)}38%{transform:scale(1.08,.92)}62%{transform:scale(.97,1.03)}}@media (prefers-reduced-motion:reduce){.hsk-cb-topbar-mark[data-unread="true"] .hsk-cb-topbar-name{animation:none}}.hsk-cb-topbar-name{margin-top:-5px;padding:3px 13px;white-space:nowrap;border-radius:999px;background:var(--hsk-surface-2);box-shadow:0 0 0 3px var(--hsk-chat-bg),0 1px 3px rgba(0,0,0,.12);font-size:12px;font-weight:700;line-height:18px;letter-spacing:-.01em;color:var(--hsk-name-text,var(--hsk-chat-text));transform-origin:50% 0;transition:transform .18s cubic-bezier(.34,1.8,.64,1)}.hsk-cb-topbar-mark{position:relative;z-index:100}.hsk-cb-topbar-ooze-menu{position:absolute;top:calc(100%+12px) !important;left:50%;transform:translateX(-50%);width:216px;padding:6px;border-radius:20px;background:var(--hsk-chat-source-bg,rgba(255,255,255,.08));border:none !important;box-shadow:none !important;z-index:1000;animation:hsk-topbar-ooze .25s cubic-bezier(.16,1,.3,1) both}.hsk-cb-topbar-ooze-menu .hsk-cb-theme-2x2-grid{display:grid !important;grid-template-columns:repeat(2,1fr) !important;gap:6px !important;width:100% !important;box-shadow:none !important}.hsk-cb-topbar-ooze-menu .hsk-cb-theme-grid-item{width:100%;display:inline-flex;align-items:center;justify-content:flex-start;gap:6px;padding:8px 11px;border-radius:14px;border:none !important;box-shadow:none !important;font-size:11.5px;font-weight:550;box-sizing:border-box;white-space:nowrap}@keyframes hsk-topbar-ooze{0%{opacity:0;transform:translateX(-50%) translateY(-6px) scale(.94)}100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}.hsk-cb-topbar-mark[data-impacting="true"] .hsk-cb-topbar-name{transform:translateY(1.5px) scale(1.09,.91);box-shadow:0 0 0 3px var(--hsk-chat-bg,#ffffff),0 2px 10px var(--hsk-contact-glow,rgba(19,78,61,.45))}.hsk-cb-back{width:34px;height:34px;border-radius:999px;border:none;padding:0;display:flex;align-items:center;justify-content:center;background:var(--hsk-surface-1);color:var(--hsk-chat-muted);cursor:pointer;transition:transform .18s cubic-bezier(.34,1.56,.64,1)}.hsk-cb-back:hover{background:var(--hsk-chat-divide,rgba(0,0,0,.09))}.hsk-cb-back:active{transform:scale(.94)}.hsk-cb-panel[dir="rtl"] .hsk-cb-back-icon{display:inline-flex;transform:scaleX(-1)}.hsk-cb-topbar-actions{justify-self:end}.hsk-cb-topbar-title{font-size:16px;font-weight:500;color:var(--hsk-chat-text,#1f1f1f);letter-spacing:-.01em}.hsk-cb-topbar-sub{font-size:12px;color:var(--hsk-chat-muted,#5f6368);margin-top:2px}.hsk-cb-kiku-id-rail{display:none}@media (min-width:900px){.hsk-cb-kiku-id-rail.hsk-cb-kiku-id-rail--left{display:flex;position:absolute;left:auto !important;right:100% !important;margin-right:28px !important;transform:none !important;top:auto !important;bottom:48px !important;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:8px;max-width:240px;min-width:0;padding:0;border:0;background:none;font-family:inherit;z-index:10}.hsk-cb-kiku-id-rail.hsk-cb-kiku-id-rail--right{display:flex;position:absolute;left:100% !important;right:auto !important;margin-left:28px !important;transform:none !important;top:auto !important;bottom:48px !important;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:8px;max-width:240px;min-width:0;padding:0;border:0;background:none;font-family:inherit;z-index:10}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-kiku-id-rail{bottom:50px !important}.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-kiku-id-rail{bottom:58px !important}.hsk-cb-kiku-id-pill{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:5px 12px;border-radius:999px;border:none !important;background:var(--hsk-chat-source-bg,rgba(255,255,255,.05));color:var(--hsk-chat-muted,#71717a);cursor:pointer;font-family:inherit;transition:all .22s cubic-bezier(.16,1,.3,1)}.hsk-cb-kiku-id-pill:hover{color:var(--hsk-primary,#ff6a33)}.hsk-cb-kiku-id-rail-val{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;letter-spacing:-.01em;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hsk-cb-kiku-id-pill svg{flex:none;opacity:.8}.hsk-cb-theme-squircle-wrap{position:relative;display:flex;flex-direction:column;align-items:flex-start;padding:0;margin:0;border:none !important;box-shadow:none !important;background:transparent;transition:all .28s cubic-bezier(.16,1,.3,1)}.hsk-cb-theme-squircle-wrap.is-open{padding:6px;border-radius:18px;background:var(--hsk-chat-source-bg,rgba(255,255,255,.06));box-shadow:none !important}.hsk-cb-theme-squircle-trigger{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;border-radius:16px;border:none !important;outline:none !important;background:var(--hsk-surface-1) !important;color:var(--hsk-chat-text) !important;font-size:11.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:transform .2s cubic-bezier(.16,1,.3,1);box-shadow:none !important}.hsk-cb-theme-squircle-trigger:hover{background:var(--hsk-primary,#ff6a33);color:#ffffff;box-shadow:none !important}.hsk-cb-theme-trigger-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.hsk-cb-theme-trigger-icon svg{width:13px;height:13px}.hsk-cb-theme-trigger-label{letter-spacing:-0.01em}.hsk-cb-theme-2x2-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:5px;box-shadow:none !important;transform-origin:bottom center;animation:hsk-theme-morph-in .26s cubic-bezier(.16,1,.3,1) both}.hsk-cb-theme-squircle-wrap.is-closing .hsk-cb-theme-2x2-grid{animation:hsk-theme-morph-out .2s cubic-bezier(.4,0,.9,.4) both}.hsk-cb-theme-grid-item{display:inline-flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:6px;padding:7px 11px;border-radius:13px;border:none !important;outline:none !important;background:var(--hsk-chat-bg,#1a1a1c);color:var(--hsk-chat-muted,#a1a1aa);font-size:11px;font-weight:550;cursor:pointer;font-family:inherit;transition:all .18s cubic-bezier(.16,1,.3,1);box-shadow:none !important}.hsk-cb-theme-grid-item svg{flex-shrink:0;width:12px;height:12px}.hsk-cb-theme-grid-item:hover{background:rgba(255,255,255,.1);color:var(--hsk-chat-text,#f0efed);box-shadow:none !important}.hsk-cb-theme-grid-item.is-active{background:var(--hsk-primary,#ff6a33) !important;color:#ffffff !important;box-shadow:none !important}}@keyframes hsk-ooze-in{0%{opacity:0;transform:translateX(-50%) translateY(-16px) scale(.88);filter:blur(6px)}65%{transform:translateX(-50%) translateY(3px) scale(1.02);filter:blur(0)}100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1);filter:blur(0)}}.hsk-cb-topbar-actions{display:flex;align-items:center;gap:8px}.hsk-cb-topbar-btn{height:34px;padding:0 14px;border-radius:var(--hsk-control-radius,999px);border:1px solid transparent;background:var(--hsk-chat-subtle,rgba(0,0,0,.045));color:var(--hsk-chat-muted,#5f6368);font-size:12px;font-weight:500;cursor:pointer;transition:all .15s;font-family:inherit}.hsk-cb-topbar-btn:hover{background:color-mix(in srgb,var(--hsk-primary) 12%,transparent);color:var(--hsk-primary)}.hsk-cb-close{width:34px;height:34px;border-radius:var(--hsk-control-radius,999px);border:1px solid transparent;background:var(--hsk-chat-subtle,rgba(0,0,0,.045));color:var(--hsk-chat-muted,#5f6368);cursor:pointer;font-size:20px;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;font-family:inherit;line-height:1}.hsk-cb-close:hover{background:color-mix(in srgb,var(--hsk-primary) 12%,transparent);color:var(--hsk-primary)}.hsk-cb-msgs{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior-y:none;overflow-anchor:none;padding:16px var(--hsk-gutter,24px) 16px;display:flex;flex-direction:column;gap:0;scrollbar-width:none;-ms-overflow-style:none;mask-image:linear-gradient(to bottom,transparent 0,#000000 8px,#000000 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000000 8px,#000000 100%)}.hsk-cb-msgs>:first-child{margin-top:auto}.hsk-cb-msgs.hsk-scrolling>*{pointer-events:none}.hsk-cb-msgs::-webkit-scrollbar{display:none !important;width:0 !important;height:0 !important}.hsk-cb-empty{flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:14px;padding:24px 0 32px;width:100%;text-align:start}.hsk-cb-onboarding-card{display:flex;flex-direction:column;align-items:flex-start;width:100%;gap:10px}.hsk-cb-onboarding-head{display:flex;align-items:center;justify-content:flex-end;width:100%;margin-bottom:8px}.hsk-cb-step-badge{font-size:11px;font-weight:600;letter-spacing:.05em;color:var(--hsk-chat-muted,#71717a);background:var(--hsk-chat-source-bg,rgba(255,255,255,.06));border:1px solid var(--hsk-chat-border,rgba(255,255,255,.08));padding:4px 10px;border-radius:999px;line-height:1}.hsk-cb-hello-wrap{display:flex;flex-direction:column;align-items:flex-start;text-align:start;gap:6px;padding:0;width:100%}.hsk-cb-hello-avatar{--hsk-avatar-size:80px;display:flex;align-items:center;justify-content:flex-start;width:auto;margin-inline-start:calc(var(--hsk-avatar-size,80px) * -0.25);margin-inline-end:0;margin-top:0;margin-bottom:0;animation:hsk-avatar-spring .42s cubic-bezier(.16,1,.3,1) both}.hsk-cb-hello{margin:0;font-size:clamp(24px,4.5vw,34px);font-weight:500;line-height:1.2;letter-spacing:-0.02em;color:color-mix(in srgb,var(--hsk-chat-text,#111) 55%,var(--hsk-chat-muted,#8b8b8f));text-align:start}.hsk-cb-hello b{font-weight:700;color:var(--hsk-primary,#ff6a33)}.hsk-cb-hello-lead{margin:0;font-size:15px;line-height:22px;color:var(--hsk-chat-muted,#5f6368);max-width:42ch;text-align:start}.hsk-cb-hello-ask{margin:2px 0 2px;font-size:16px;font-weight:500;color:var(--hsk-chat-text,#111);text-align:start}.hsk-cb-step{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--hsk-chat-muted,#9aa0a6)}.hsk-cb-panel[dir="rtl"] .hsk-cb-msgs{direction:ltr}.hsk-cb-panel[dir="rtl"] .hsk-cb-msgs>*{direction:rtl}.hsk-cb-panel[dir="rtl"] .hsk-cb-user-imgs{margin-left:0;margin-right:auto}.hsk-cb-panel[dir="rtl"] .hsk-cb-user-bubble,.hsk-cb-panel[dir="rtl"] .hsk-cb-ai-text{word-break:normal;overflow-wrap:break-word;letter-spacing:normal}.hsk-cb-panel[dir="rtl"] .hsk-cb-hello{line-height:1.6;letter-spacing:normal}.hsk-cb-panel[dir="rtl"] .hsk-cb-entlang-cards{justify-content:end}.hsk-cb-lang-chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 4px}.hsk-cb-lang-chip{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:6px 16px;font-size:14px;font-weight:500;line-height:1;color:var(--hsk-chat-text,#111);background:var(--hsk-chat-source-bg,rgba(0,0,0,.04));border:1px solid var(--hsk-chat-border,rgba(0,0,0,.09));border-radius:999px;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.03);transition:all .18s cubic-bezier(.16,1,.3,1);user-select:none;-webkit-font-smoothing:antialiased}.hsk-cb-lang-chip:hover{background:var(--hsk-primary,#ff6a33);color:#ffffff;border-color:var(--hsk-primary,#ff6a33);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--hsk-primary,#ff6a33) 25%,transparent)}.hsk-cb-lang-chip:active{transform:scale(.96)}@media (prefers-color-scheme:dark){.hsk-cb-lang-chip{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1);color:#f4f4f5}}[data-hsk-theme="dark"] .hsk-cb-lang-chip{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1);color:#f4f4f5}.hsk-cb-lang-chips-hint{display:inline-flex;align-items:center;font-size:13px;color:var(--hsk-chat-muted,#71717a);padding:0 6px;margin-inline-start:4px;user-select:none;align-self:center}.hsk-cb-chrome-loading{display:flex;flex-direction:column;align-items:flex-start;text-align:start;gap:12px;width:100%;max-width:480px;margin:4px 0 2px;animation:hsk-content-fade .3s ease-out both}.hsk-cb-chrome-loading-header{display:flex;flex-direction:column;align-items:flex-start;text-align:start;gap:6px;width:100%}.hsk-cb-chrome-loading-sub{margin:0;font-size:15px;color:var(--hsk-chat-muted,#71717a);line-height:1.45;text-align:start}.hsk-cb-chrome-loading-sub b{color:var(--hsk-chat-text,#f4f4f5);font-weight:600}.hsk-cb-chrome-progress{height:3px;width:100%;border-radius:3px;background:var(--hsk-chat-source-bg,rgba(255,255,255,.08));overflow:hidden;margin-top:4px}.hsk-cb-chrome-progress-track{height:100%;width:100%;border-radius:3px;background:linear-gradient( 90deg,#ff6a33,#f7b733,#43c59e,#3d8bfd,#9b5de5,#ff5d8f,#ff6a33 );background-size:300% 100%;animation:hsk-chrome-rainbow 2.6s linear infinite}.hsk-cb-chrome-progress{position:relative;overflow:hidden}.hsk-cb-chrome-progress::after{content:'';position:absolute;inset:0;background:linear-gradient( 100deg,transparent 20%,rgba(255,255,255,.55) 50%,transparent 80% );transform:translateX(-100%);animation:hsk-chrome-sheen 1.9s cubic-bezier(.55,0,.45,1) infinite;pointer-events:none}@keyframes hsk-chrome-rainbow{0%{background-position:0 0}100%{background-position:-300% 0}}@keyframes hsk-chrome-sheen{0%{transform:translateX(-100%)}100%{transform:translateX(200%)}}@media (prefers-reduced-motion:reduce){.hsk-cb-chrome-progress-track{animation:none;opacity:.5}.hsk-cb-chrome-progress::after{animation:none;opacity:0}}.hsk-cb-chrome-back-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;margin-top:6px;font-size:13px;font-weight:500;color:var(--hsk-chat-muted,#a1a1aa);background:var(--hsk-chat-source-bg,rgba(255,255,255,.05));border:1px solid var(--hsk-chat-border,rgba(255,255,255,.09));border-radius:999px;cursor:pointer;transition:all .15s ease;user-select:none}.hsk-cb-chrome-back-btn:hover{background:var(--hsk-chat-source-bg,rgba(255,255,255,.12));color:var(--hsk-chat-text,#ffffff);border-color:var(--hsk-chat-border,rgba(255,255,255,.18))}.hsk-cb-chrome-notice{display:flex;flex-direction:column;gap:6px;max-width:48ch;margin:24px 0 0;padding:14px 16px;border-radius:14px;background:var(--hsk-chat-source-bg,rgba(255,255,255,.04));border:1px solid var(--hsk-chat-border,rgba(255,255,255,.09));text-align:start;font-family:var(--hsk-font,system-ui,sans-serif);animation:hsk-content-fade .4s ease-out both}.hsk-cb-chrome-notice-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.hsk-cb-chrome-notice-pill{display:inline-flex;align-items:center;padding:2px 7px;border-radius:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:rgba(255,106,51,.15);color:var(--hsk-primary,#ff6a33);border:1px solid rgba(255,106,51,.28)}.hsk-cb-chrome-notice-title{font-size:12px;font-weight:600;letter-spacing:.01em;color:var(--hsk-chat-text,#ffffff)}.hsk-cb-chrome-notice-body{font-size:12px;line-height:1.55;color:var(--hsk-chat-muted,#a1a1aa)}.hsk-cb-chrome-notice-body b{color:var(--hsk-chat-text,#ffffff)}@media (prefers-color-scheme:light){.hsk-cb-chrome-loading-sub b{color:var(--hsk-chat-text,#18181b)}.hsk-cb-chrome-progress{background:var(--hsk-chat-source-bg,rgba(0,0,0,.06))}.hsk-cb-chrome-back-btn{color:#52525b;background:rgba(0,0,0,.04);border-color:rgba(0,0,0,.08)}.hsk-cb-chrome-back-btn:hover{background:rgba(0,0,0,.08);color:#09090b;border-color:rgba(0,0,0,.14)}}.hsk-cb-input-box--waiting{opacity:.45;pointer-events:none}.hsk-cb-entlang-opts{display:flex;flex-direction:column;gap:10px;width:100%;max-width:440px;margin-top:6px}.hsk-cb-entlang-opt{position:relative;display:flex;flex-direction:row;align-items:center;width:100%;padding:16px 20px;text-align:start;background:transparent !important;border:none !important;outline:none !important;border-radius:16px;cursor:pointer;user-select:none;overflow:hidden;box-shadow:none !important;animation:hsk-entlang-opt-in .22s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.04s+var(--hsk-opt-idx,0) * .02s)}@media (prefers-color-scheme:light){.hsk-cb-entlang-opt{background:transparent !important}}[data-hsk-theme="light"] .hsk-cb-entlang-opt{background:transparent !important}@keyframes hsk-entlang-opt-in{0%{opacity:0;transform:translateY(6px)}100%{opacity:1;transform:translateY(0)}}.hsk-cb-entlang-opt:hover{background:transparent !important;border:none !important;box-shadow:none !important}.hsk-cb-entlang-opt:active{opacity:.8}.hsk-cb-entlang-radio{position:relative;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;min-width:18px;min-height:18px;border-radius:999px;border:1.5px solid var(--hsk-chat-divide,rgba(255,255,255,.22));flex-shrink:0;margin-inline-end:14px;box-sizing:border-box;transform:none !important;transition:border-color .2s cubic-bezier(.16,1,.3,1),background-color .2s ease}.hsk-cb-entlang-radio-dot{width:9px;height:9px;border-radius:999px;background:var(--hsk-primary,#ff6a33);opacity:0;transition:opacity .15s ease;pointer-events:none}.hsk-cb-entlang-opt:hover .hsk-cb-entlang-radio,.hsk-cb-entlang-opt.is-selected .hsk-cb-entlang-radio{border-color:var(--hsk-primary,#ff6a33)}.hsk-cb-entlang-opt.is-selected .hsk-cb-entlang-radio-dot{opacity:1}.hsk-cb-entlang-opt-text{display:flex;flex-direction:column;gap:3px;width:100%}.hsk-cb-entlang-opt-title{font-size:15px;font-weight:600;color:var(--hsk-chat-text,#1f1f1f);letter-spacing:-0.01em}.hsk-cb-entlang-opt-note{font-size:12.5px;color:var(--hsk-chat-muted,#71717a);line-height:1.45}.hsk-cb-shimmer-char{display:inline;color:inherit;font-family:inherit}.hsk-cb-entlang-opt:hover .hsk-cb-entlang-opt-title .hsk-cb-shimmer-char{animation:hsk-entlang-char-shimmer-title .5s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--hsk-char-idx,0) * 16ms)}.hsk-cb-entlang-opt:hover .hsk-cb-entlang-opt-note .hsk-cb-shimmer-char{animation:hsk-entlang-char-shimmer-note .5s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--hsk-char-idx,0) * 16ms)}@keyframes hsk-entlang-char-shimmer-title{0%{color:var(--hsk-chat-text,#1f1f1f)}45%{color:hsl(var(--hsk-ph-hue,0) 80% 60%)}100%{color:var(--hsk-primary,#ff6a33)}}@keyframes hsk-entlang-char-shimmer-note{0%{color:var(--hsk-chat-muted,#71717a)}45%{color:hsl(var(--hsk-ph-hue,0) 75% 55%)}100%{color:var(--hsk-chat-muted,#71717a)}}.hsk-cb-entlang-opt-note{font-size:12.5px;color:var(--hsk-chat-muted,#71717a);line-height:1.45}@keyframes hsk-hello-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.hsk-cb-hello,.hsk-cb-hello-lead,.hsk-cb-hello-ask,.hsk-cb-hello-skip{opacity:0;animation:hsk-hello-rise .9s cubic-bezier(.22,1,.36,1) both}.hsk-cb-hello{animation-delay:.06s}.hsk-cb-hello-lead{animation-delay:.26s}.hsk-cb-hello-ask{animation-delay:.44s}.hsk-cb-hello-skip{animation-delay:.60s}.hsk-cb-hello.hsk-cascade,.hsk-cb-hello-lead.hsk-cascade,.hsk-cb-hello-ask.hsk-cascade{opacity:1;animation:none;filter:none}.hsk-cascade__w{display:inline-block;white-space:nowrap;opacity:0;animation:hsk-cascade-rise .44s cubic-bezier(.16,1,.3,1) both}@keyframes hsk-cascade-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.hsk-cb-hello,.hsk-cb-hello-lead,.hsk-cb-hello-ask,.hsk-cb-hello-skip,.hsk-cascade__w{animation:none;opacity:1;transform:none;filter:none}}.hsk-cb-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-start;margin-top:4px}.hsk-cb-chip{padding:8px 16px;border-radius:var(--hsk-border-radius,0);border:1px solid var(--hsk-chat-divide,rgba(0,0,0,.1));background:var(--hsk-chat-source-bg,rgba(0,0,0,.03));color:var(--hsk-chat-text,#333);font-size:13px;cursor:pointer;transition:all .15s;font-family:inherit}.hsk-cb-chip:hover{border-color:var(--hsk-primary);color:var(--hsk-primary);background:rgba(255,106,51,.06)}.hsk-cb-msg-group{padding:16px 0;border-bottom:none;animation:hsk-msg-in .22s ease-out both}.hsk-cb-spoken-mark{position:absolute;top:50%;margin-top:-5px;inset-inline-start:-17px;opacity:.4;pointer-events:none}.hsk-cb-msg-group--run-mid{padding-bottom:0}.hsk-cb-msg-group--run-mid .hsk-cb-user-msg{margin-bottom:0}.hsk-cb-msg-group--run-cont{padding-top:2px}.hsk-cb-msg-group:last-child{border-bottom:none}@keyframes hsk-msg-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hsk-cb-user-msg{display:flex;flex-direction:column;align-items:flex-end;align-self:flex-end;max-width:min(75%,420px);margin-inline-start:auto;margin-inline-end:0;gap:6px;margin-bottom:20px}@media (max-width:640px){.hsk-cb-user-msg{max-width:84%}}.hsk-cb-user-msg.hsk-sent{transform-origin:bottom right;animation:hsk-send-in .42s cubic-bezier(.2,.9,.3,1.2) both}.hsk-cb-panel[dir="rtl"] .hsk-cb-user-msg.hsk-sent{transform-origin:bottom left}@keyframes hsk-send-in{0%{opacity:0;transform:translateY(28px) scale(.55)}55%{opacity:1}75%{transform:translateY(-2px) scale(1.02)}100%{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion:reduce){.hsk-cb-user-msg.hsk-sent{animation:none}}.hsk-cb-user-bubble{background:var(--hsk-user-bubble-bg,#007aff);color:#ffffff;padding:10px 18px;border-radius:20px;position:relative;font-size:var(--hsk-font-size,15.5px);font-family:var(--hsk-font);line-height:1.45;max-width:100%;font-weight:500;word-break:break-word;overflow-wrap:anywhere;letter-spacing:-0.01em}.hsk-cb-user-bubble--tail::before,.hsk-cb-user-bubble--tail::after{content:'';position:absolute;bottom:0;height:25px;pointer-events:none}.hsk-cb-user-bubble--tail::before{right:-7px;width:20px;background:var(--hsk-user-bubble-bg,#007aff);border-bottom-left-radius:16px 14px}.hsk-cb-user-bubble--tail::after{right:-26px;width:26px;background:var(--hsk-chat-bg,#ffffff);border-bottom-left-radius:10px}.hsk-cb-panel[dir="rtl"] .hsk-cb-user-bubble--tail::before{right:auto;left:-7px;border-bottom-left-radius:0;border-bottom-right-radius:16px 14px}.hsk-cb-panel[dir="rtl"] .hsk-cb-user-bubble--tail::after{right:auto;left:-26px;border-bottom-left-radius:0;border-bottom-right-radius:10px}.hsk-cb-ai-msg{display:block}.hsk-cb-ai-icon{width:32px;height:32px;border-radius:0;background:transparent !important;border:none !important;color:var(--hsk-primary,#ff6a33);display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:-2px}.hsk-cb-ai-icon>svg{width:30px !important;height:30px !important}.hsk-cb-ai-icon>.hsk-cb-ai-mark{width:40px !important;height:40px !important}.hsk-cb-ai-body{flex:1;min-width:0}.hsk-cb-ai-content{display:flex;flex-direction:column;gap:10px;align-items:flex-start;width:100%}.hsk-cb-think+.hsk-cb-ai-content>.hsk-cb-ai-text:first-child{padding-top:20px}.hsk-cb-ai-text{font-size:var(--hsk-font-size,14.5px);font-family:var(--hsk-font);line-height:1.48;color:var(--hsk-chat-text,#111827);background:var(--hsk-chat-ai-bg,#eeeef0);padding:11px 15px;border-radius:18px;position:relative;display:inline-block;width:fit-content;box-sizing:border-box;max-width:min(88%,560px);word-break:break-word;overflow-wrap:anywhere;margin-top:4px}.hsk-cb-ai-text:not(:has(~.hsk-cb-ai-text))::before,.hsk-cb-ai-text:not(:has(~.hsk-cb-ai-text))::after{content:'';position:absolute;bottom:0;height:25px;pointer-events:none}.hsk-cb-ai-text:not(:has(~.hsk-cb-ai-text))::before{left:-7px;width:20px;background:var(--hsk-chat-ai-bg,#eeeef0);border-bottom-right-radius:16px 14px}.hsk-cb-ai-text:not(:has(~.hsk-cb-ai-text))::after{left:-26px;width:26px;background:var(--hsk-chat-bg,#ffffff);border-bottom-right-radius:10px}.hsk-cb-panel[dir="rtl"] .hsk-cb-ai-text:not(:has(~.hsk-cb-ai-text))::before{left:auto;right:-7px;border-bottom-right-radius:0;border-bottom-left-radius:16px 14px}.hsk-cb-panel[dir="rtl"] .hsk-cb-ai-text:not(:has(~.hsk-cb-ai-text))::after{left:auto;right:-26px;border-bottom-right-radius:0;border-bottom-left-radius:10px}.hsk-cb-sent-status{font-size:11px;line-height:1;color:var(--hsk-chat-muted,#8a8f98);padding:4px 6px 0 0;animation:hsk-sent-in .2s ease-out both}@keyframes hsk-sent-in{from{opacity:0}to{opacity:1}}.hsk-cb-user-bubble--queued{opacity:.55}.hsk-cb-queued-status{display:inline-flex;align-items:center;gap:5px;font-size:11px;line-height:1;color:var(--hsk-chat-muted,#8a8f98);padding:4px 0 0;background:none;border:none;cursor:pointer;font-family:var(--hsk-font);animation:hsk-sent-in .2s ease-out both}.hsk-cb-queued-dot{width:5px;height:5px;border-radius:999px;background:currentColor;animation:hsk-queued-pulse 1.1s ease-in-out infinite}@keyframes hsk-queued-pulse{0%,100%{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}.hsk-cb-queued-now{color:var(--hsk-primary,#ff6a33);font-weight:600;transition:opacity .15s ease}.hsk-cb-queued-status:hover .hsk-cb-queued-now{opacity:.7}@media (prefers-reduced-motion:reduce){.hsk-cb-queued-dot{animation:none;opacity:.8}}.hsk-cb-timeline{display:none}@media (min-width:900px){.hsk-cb-timeline.hsk-cb-timeline--left{display:block;position:absolute;left:auto !important;right:100% !important;margin-right:28px !important;top:50%;transform:translateY(-50%) !important;width:180px;max-height:60%;overflow:hidden;z-index:10;pointer-events:auto;direction:ltr !important;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 14%,#000 86%,transparent);mask-image:linear-gradient(to bottom,transparent,#000 14%,#000 86%,transparent)}.hsk-cb-timeline.hsk-cb-timeline--right{display:block;position:absolute;left:100% !important;right:auto !important;margin-left:28px !important;top:50%;transform:translateY(-50%) !important;width:180px;max-height:60%;overflow:hidden;z-index:10;pointer-events:auto;direction:ltr !important;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 14%,#000 86%,transparent);mask-image:linear-gradient(to bottom,transparent,#000 14%,#000 86%,transparent)}.hsk-cb-timeline-track{animation:hsk-tl-in .32s cubic-bezier(.22,1,.36,1) both}}@keyframes hsk-tl-in{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}.hsk-cb-timeline-track{--hsk-tl-x:9px;position:relative;padding-left:26px !important;padding-right:6px !important}.hsk-cb-timeline-track::before,.hsk-cb-timeline-track::after{content:'';position:absolute;left:calc(var(--hsk-tl-x) - 1px) !important;right:auto !important;top:8px;bottom:8px;width:2px;border-radius:2px}.hsk-cb-timeline-track::before{background:var(--hsk-chat-divide,rgba(0,0,0,.09))}.hsk-cb-timeline-track::after{background:var(--hsk-primary,#ff6a33);opacity:.5;transform-origin:top;transform:scaleY(var(--hsk-tl-progress,0));transition:transform .18s linear}.hsk-cb-tl-item{--hsk-tl-d:0;position:relative;display:block;width:100%;padding:7px 6px 7px 0 !important;border:none;background:none;text-align:left !important;cursor:pointer;font-family:var(--hsk-font)}.hsk-cb-tl-dot{position:absolute;left:calc(var(--hsk-tl-x,9px) - 3.5px) !important;right:auto !important;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:999px;background:var(--hsk-chat-divide,rgba(0,0,0,.18));opacity:max(.25,calc(1 - var(--hsk-tl-d) * .22));transition:transform .28s cubic-bezier(.34,1.4,.64,1),opacity .46s cubic-bezier(.22,1,.36,1),background .2s ease}.hsk-cb-tl-label{display:block;font-size:12px;line-height:1.4;color:var(--hsk-chat-muted,#8a8f98);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform:translateX(calc(var(--hsk-tl-d) * 7px));opacity:max(.32,calc(.9 - var(--hsk-tl-d) * .15));transition:transform .46s cubic-bezier(.22,1,.36,1),opacity .46s cubic-bezier(.22,1,.36,1),color .2s ease}.hsk-cb-tl-item:hover .hsk-cb-tl-label{opacity:1;transform:translateX(calc(var(--hsk-tl-d) * 7px - 2px))}.hsk-cb-tl-item:hover .hsk-cb-tl-dot{transform:scale(1.25)}.hsk-cb-tl-cursor{position:absolute;left:calc(var(--hsk-tl-x,9px) - 4.5px) !important;right:auto !important;top:0;width:9px;height:9px;margin-top:-4.5px;border-radius:999px;background:var(--hsk-primary,#ff6a33);transform:translateY(0);transition:transform .44s cubic-bezier(.22,1,.36,1);will-change:transform;pointer-events:none}.hsk-cb-tl-item--on .hsk-cb-tl-dot{opacity:.35}.hsk-cb-tl-item--on .hsk-cb-tl-label{color:var(--hsk-chat-text,#1f1f1f);opacity:1;font-weight:500}@media (prefers-reduced-motion:reduce){.hsk-cb-timeline-track{animation:none}.hsk-cb-timeline-track::after,.hsk-cb-tl-label,.hsk-cb-tl-cursor,.hsk-cb-tl-dot{transition:none}}@media (prefers-color-scheme:dark){.hsk-cb-ai-text{--hsk-chat-ai-bg:#26262a;background:var(--hsk-chat-ai-bg);color:#f9fafb}}.hsk-cb-sources-wrap{position:relative;margin-top:20px}.hsk-cb-sources{display:flex;flex-direction:row;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none;padding-bottom:4px}.hsk-cb-sources::-webkit-scrollbar{display:none}.hsk-cb-sources-fade-left,.hsk-cb-sources-fade-right{position:absolute;top:0;bottom:4px;width:30px;pointer-events:none;z-index:2}.hsk-cb-sources-fade-left,.hsk-cb-sources-fade-right{background-color:var(--hsk-fade-bg,var(--hsk-chat-bg,#0e0e0f))}.hsk-cb-sources-fade-left,[dir="rtl"] .hsk-cb-sources-fade-right{-webkit-mask-image:linear-gradient(to right,#000 0,rgba(0,0,0,.55) 45%,transparent 100%);mask-image:linear-gradient(to right,#000 0,rgba(0,0,0,.55) 45%,transparent 100%)}.hsk-cb-sources-fade-right,[dir="rtl"] .hsk-cb-sources-fade-left{-webkit-mask-image:linear-gradient(to left,#000 0,rgba(0,0,0,.55) 45%,transparent 100%);mask-image:linear-gradient(to left,#000 0,rgba(0,0,0,.55) 45%,transparent 100%)}.hsk-cb-sources-fade-left{inset-inline-start:0}.hsk-cb-sources-fade-right{inset-inline-end:0}.hsk-cb-sources-next,.hsk-cb-sources-prev{position:absolute;top:42%;transform:translateY(-50%);width:34px;height:34px;border-radius:50% !important;background:var(--hsk-chat-bg,#ffffff) !important;border:1px solid var(--hsk-chat-divide,rgba(0,0,0,.12)) !important;color:var(--hsk-primary,#ff6a33) !important;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.14);z-index:10;cursor:pointer;transition:transform .2s cubic-bezier(.34,1.56,.64,1),background .18s ease,color .18s ease,box-shadow .18s ease}.hsk-cb-sources-next:hover,.hsk-cb-sources-prev:hover{background:var(--hsk-primary,#ff6a33) !important;color:#ffffff !important;border-color:var(--hsk-primary,#ff6a33) !important;transform:translateY(-50%) scale(1.1);box-shadow:0 6px 18px rgba(255,106,51,.35)}.hsk-cb-sources-next{inset-inline-end:2px}.hsk-cb-sources-prev{inset-inline-start:2px}[dir="rtl"] .hsk-cb-sources-next svg,[dir="rtl"] .hsk-cb-sources-prev svg{transform:scaleX(-1)}.hsk-cb-carousel-dots{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:10px}.hsk-cb-dot-item{width:6px;height:6px;border-radius:50%;background:rgba(150,150,150,.35);transition:all .25s cubic-bezier(.34,1.56,.64,1);cursor:pointer}.hsk-cb-dot-item--active{width:18px;border-radius:999px;background:var(--hsk-primary,#ff6a33)}.hsk-cb-source{flex:0 0 188px;scroll-snap-align:start;border-radius:var(--hsk-border-radius,0);border:none;background:transparent;cursor:pointer;transition:transform .14s,opacity .14s;animation:hsk-card-in .26s ease-out both;overflow:visible}@keyframes hsk-card-in{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}.hsk-cb-source:hover{transform:translateY(-3px);opacity:.92}.hsk-cb-src-imgwrap{width:188px;height:188px;overflow:hidden;border-radius:var(--hsk-border-radius,0);display:block;background:var(--hsk-chat-source-bg,#f8f9fa)}.hsk-cb-src-imgwrap img{width:100%;height:100%;object-fit:cover;transition:transform .22s;display:block}.hsk-cb-source:hover .hsk-cb-src-imgwrap img{transform:scale(1.05)}.hsk-cb-src-imgwrap-empty{width:188px;height:188px;background:var(--hsk-chat-divide,rgba(0,0,0,.06));display:flex;align-items:center;justify-content:center;color:var(--hsk-chat-muted,#555);font-size:32px}.hsk-cb-src-info{padding:8px 2px 0}.hsk-cb-sources-wrap--compact{margin-top:10px}.hsk-cb-sources-wrap--compact .hsk-cb-sources{gap:10px}.hsk-cb-sources-wrap--compact .hsk-cb-source{flex:0 0 96px}.hsk-cb-sources-wrap--compact .hsk-cb-src-imgwrap,.hsk-cb-sources-wrap--compact .hsk-cb-src-imgwrap-empty{width:96px;height:96px}.hsk-cb-sources-wrap--compact .hsk-cb-src-imgwrap-empty{font-size:20px}.hsk-cb-sources-wrap--compact .hsk-cb-src-name{font-size:12px;-webkit-line-clamp:1}.hsk-cb-sources-wrap--compact .hsk-cb-src-price{font-size:11px;padding:1px 6px}.hsk-cb-sources-wrap--compact .hsk-cb-source-ref-badge{display:none}.hsk-cb-src-name{font-size:13px;font-weight:600;color:var(--hsk-chat-text,#333);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hsk-cb-src-price{display:inline-flex;align-items:center;width:fit-content;max-width:100%;padding:2px 9px;border-radius:9999px;background:var(--hsk-chat-source-bg,rgba(0,0,0,.05));border:1px solid var(--hsk-chat-divide,rgba(0,0,0,.08));font-size:12px;font-weight:600;color:var(--hsk-primary,#ff6a33);margin-top:5px;line-height:1.2}.hsk-cb-typing-row{display:flex;align-items:flex-start;gap:14px;padding:20px 0}@keyframes hsk-shimmer{0%{background-position:130% 0}100%{background-position:-110% 0}}.hsk-cb-input-wrap{position:relative;--hsk-composer-pad-top:16px;--hsk-composer-pad-x:var(--hsk-gutter,24px);padding:var(--hsk-composer-pad-top) var(--hsk-composer-pad-x) 24px;flex-shrink:0;background:transparent !important;z-index:10}.hsk-cb-input-wrap::after{display:none !important}.hsk-cb-input-card{border-radius:20px;background:var(--hsk-chat-input-bg,#ffffff);border:none !important;outline:none !important;box-shadow:0 3px 14px -1px rgba(0,0,0,.05),0 1px 4px rgba(0,0,0,.03) !important;overflow:hidden;position:relative;z-index:1;transition:height .22s cubic-bezier(.32,.72,0,1)}.hsk-cb-input-card:focus-within{border:none !important;outline:none !important;box-shadow:0 4px 18px -1px rgba(0,0,0,.07),0 2px 6px rgba(0,0,0,.04) !important}.hsk-cb-docked-header{display:flex;align-items:center;gap:8px;padding:10px 16px 6px;background:transparent;border-bottom:none !important;user-select:none}.hsk-cb-docked-icon{display:flex;align-items:center;justify-content:center;width:18px;height:18px;color:var(--hsk-primary,#ff6a33)}.hsk-cb-docked-title{font-size:13px;font-weight:700;color:var(--hsk-primary,#ff6a33);letter-spacing:-0.01em}.hsk-cb-docked-sub{font-size:12px;font-weight:500;letter-spacing:-0.01em;color:var(--hsk-chat-text,#1f1f1f);flex:1}.hsk-cb-docked-close{background:none;border:none;color:var(--hsk-chat-muted,rgba(0,0,0,.4));font-size:16px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:50%;transition:background .12s,color .12s}.hsk-cb-docked-close:hover{background:rgba(0,0,0,.08);color:var(--hsk-chat-text,#111111)}.hsk-cb-field{margin-inline:5px}.hsk-cb-input-box[data-expanded="true"]>.hsk-cb-field{margin-inline:0}.hsk-cb-docked-options{display:flex;flex-direction:column;padding:4px 6px;background:transparent;border-bottom:none !important;max-height:220px;overflow-y:auto;scrollbar-width:thin}.hsk-cb-docked-option{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border:none;background:transparent !important;border-radius:10px;color:var(--hsk-chat-text,#1f1f1f);font-family:inherit;font-size:14px;text-align:start;cursor:pointer;transition:color .15s ease}.hsk-cb-docked-option:hover,.hsk-cb-docked-option:focus{background:transparent !important;color:var(--hsk-primary,#ff6a33)}.hsk-cb-docked-option-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:color-mix(in srgb,var(--hsk-primary,#ff6a33) 12%,transparent);color:var(--hsk-primary,#ff6a33);flex-shrink:0;overflow:hidden;transition:transform .2s cubic-bezier(.34,1.56,.64,1),background .18s ease}.hsk-cb-docked-option:hover .hsk-cb-docked-option-icon,.hsk-cb-docked-option:focus .hsk-cb-docked-option-icon{background:color-mix(in srgb,var(--hsk-primary,#ff6a33) 22%,transparent);transform:scale(1.15) rotate(4deg)}.hsk-cb-docked-option-icon img{width:100%;height:100%;object-fit:cover}.hsk-cb-docked-option-title{font-weight:500;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s ease}.hsk-cb-docked-option-desc{font-size:12px;color:var(--hsk-chat-muted,#6b7280);font-weight:400}.hsk-cb-docked-option-price{font-size:12px;font-weight:600;color:var(--hsk-chat-muted,#6b7280)}.hsk-cb-input-box{position:relative;display:grid;grid-template-columns:auto auto 1fr auto auto;grid-template-rows:auto 0;align-items:center;justify-items:start;column-gap:10px;row-gap:0;transition:grid-template-rows .2s cubic-bezier(.32,.72,0,1),row-gap .2s cubic-bezier(.32,.72,0,1);background:transparent !important;border:none !important;outline:none !important;border-radius:0 !important;padding-block:12px;padding-inline:18px 14px;box-shadow:none !important}.hsk-cb-tools-toggle{display:none}.hsk-cb-toolsheet-wrap{position:absolute;bottom:calc(100% - 6px);inset-inline-start:var(--hsk-composer-pad-x,14px);inset-inline-end:auto;z-index:100;transform-origin:bottom left;animation:hsk-toolsheet-in .22s cubic-bezier(.16,1,.3,1) both;pointer-events:auto}[dir="rtl"] .hsk-cb-toolsheet-wrap,.hsk-cb-panel[dir="rtl"] .hsk-cb-toolsheet-wrap{transform-origin:bottom right}.hsk-cb-toolsheet{position:relative;z-index:1;min-width:200px;padding:6px;border-radius:16px;background:var(--hsk-chat-source-bg,rgba(255,255,255,.08));border:none !important;box-shadow:none !important}@keyframes hsk-toolsheet-in{0%{opacity:0;transform:translateY(8px) scale(.92)}100%{opacity:1;transform:translateY(0) scale(1)}}.hsk-cb-toolsheet-scrim{position:fixed;inset:0;z-index:90;background:transparent;cursor:default}.hsk-cb-toolsheet-item{display:flex;align-items:center;gap:11px;width:100%;padding:10px 12px;border:none;border-radius:11px;background:transparent;color:var(--hsk-chat-text,#111827);font-family:var(--hsk-font);font-size:15px;text-align:start;cursor:pointer;transition:background-color .15s ease}.hsk-cb-toolsheet-item:hover:not(:disabled){background:var(--hsk-chat-subtle,rgba(0,0,0,.05))}.hsk-cb-toolsheet-item:disabled{opacity:.45;cursor:default}.hsk-cb-toolsheet-item>svg{flex-shrink:0;color:var(--hsk-chat-muted,#6b7280)}[data-hsk-theme] .hsk-cb-toolsheet{background:var(--hsk-sheet-bg,var(--hsk-chat-input-bg,#f3f4f6)) !important;border:none !important}[data-hsk-theme] .hsk-cb-toolsheet-item{color:var(--hsk-chat-text,#111827) !important}[data-hsk-theme] .hsk-cb-toolsheet-item:hover:not(:disabled){background:var(--hsk-sheet-hover,var(--hsk-surface-2,rgba(0,0,0,.05))) !important}[data-hsk-theme] .hsk-cb-toolsheet-item>svg{color:var(--hsk-chat-muted,#6b7280) !important}@media (prefers-reduced-motion:reduce){.hsk-cb-toolsheet-wrap,.hsk-cb-toolsheet-stem{animation:none}.hsk-cb-toolsheet-stem{transform:scale(.62)}}.hsk-cb-input-box>.hsk-cb-attach-btn{grid-column:1;grid-row:1}.hsk-cb-input-box>.hsk-cb-voice-mode-btn{grid-column:2;grid-row:1}.hsk-cb-input-box>.hsk-cb-field{grid-column:3;grid-row:1}.hsk-cb-input-box>.hsk-cb-mic-btn{grid-column:4;grid-row:1}.hsk-cb-input-box>.hsk-cb-send,.hsk-cb-input-box>.hsk-chat-send{grid-column:5;grid-row:1}.hsk-cb-input-box[data-expanded="true"]{grid-template-rows:auto 36px;row-gap:6px}.hsk-cb-input-box[data-expanded="true"]>.hsk-cb-field{grid-column:1 / -1;grid-row:1}.hsk-cb-input-box[data-expanded="true"]>.hsk-cb-attach-btn,.hsk-cb-input-box[data-expanded="true"]>.hsk-cb-voice-mode-btn,.hsk-cb-input-box[data-expanded="true"]>.hsk-cb-mic-btn,.hsk-cb-input-box[data-expanded="true"]>.hsk-cb-send,.hsk-cb-input-box[data-expanded="true"]>.hsk-chat-send{grid-row:2}.hsk-cb-textarea{width:100%;background:transparent;border:none;outline:none;resize:none;font-size:var(--hsk-input-font-size,16px);font-family:var(--hsk-font);color:var(--hsk-chat-text,#111);min-height:28px;max-height:140px;field-sizing:content;line-height:var(--hsk-input-line-height,1.55);word-break:break-word;overflow-wrap:break-word;padding:0;transition:height .18s cubic-bezier(.32,.72,0,1),color .42s cubic-bezier(.16,1,.3,1);scrollbar-width:none}.hsk-cb-textarea::-webkit-scrollbar{width:0;height:0}.hsk-cb-textarea::placeholder{color:var(--hsk-chat-muted,#9ca3af);font-family:var(--hsk-font);font-size:16px}.hsk-cb-attach-btn,.hsk-cb-mic-btn,.hsk-cb-send,.hsk-chat-send{width:36px;height:36px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:none;cursor:pointer;transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s cubic-bezier(.34,1.56,.64,1),background-color .42s cubic-bezier(.16,1,.3,1),opacity .2s ease;font-family:inherit;margin:0;padding:0}.hsk-cb-send,.hsk-chat-send{background:linear-gradient(135deg,#007aff 0,#0056b3 100%);color:#ffffff;border-radius:12px !important;box-shadow:0 4px 14px rgba(0,122,255,.38),inset 0 1px 0 rgba(255,255,255,.35);position:relative;overflow:hidden}.hsk-cb-send .hsk-telegram-icon,.hsk-chat-send .hsk-telegram-icon{transition:transform .25s cubic-bezier(.34,1.56,.64,1)}.hsk-cb-send:hover:not(:disabled),.hsk-chat-send:hover:not(:disabled){opacity:1;transform:translateY(-1px) scale(1.05);box-shadow:0 6px 18px rgba(0,122,255,.48),inset 0 1px 0 rgba(255,255,255,.45)}.hsk-cb-send:hover:not(:disabled) .hsk-telegram-icon,.hsk-chat-send:hover:not(:disabled) .hsk-telegram-icon{transform:translate(2px,-2px) rotate(-10deg) scale(1.1)}.hsk-cb-send:active:not(:disabled),.hsk-chat-send:active:not(:disabled){transform:translateY(0) scale(.94);box-shadow:0 1px 4px rgba(0,122,255,.3)}.hsk-cb-send:disabled,.hsk-chat-send:disabled{opacity:.4;cursor:not-allowed;background:var(--hsk-chat-muted,#ccc);box-shadow:none}.hsk-cb-send--stop{background:#e5342a !important}.hsk-cb-send--stop:hover{background:#c92a21 !important;opacity:1}.hsk-cb-hint{text-align:center;font-size:9px;line-height:14px;color:var(--hsk-chat-muted,#bbb);margin-top:10px}.hsk-cb-field{position:relative;grid-area:field;display:flex;align-items:center;width:100%;min-width:0;--hsk-input-font-size:16px;--hsk-input-line-height:1.55;--hsk-input-control:36px;--hsk-input-line-box:calc(var(--hsk-input-font-size) * var(--hsk-input-line-height))}.hsk-cb-listening{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.hsk-cb-listening span{width:2px;height:2px;border-radius:999px;background:var(--hsk-primary,#ff6a33);opacity:.3;transform-origin:center;will-change:transform,opacity;transition:transform 90ms linear,opacity 90ms linear}.hsk-animated-placeholder{position:absolute;inset:0;display:flex;align-items:center;height:100%;pointer-events:none;overflow:hidden;user-select:none;padding:0;z-index:1}.hsk-cb-input-box>*{--hsk-cascade-ease:cubic-bezier(.45,0,.55,1);--hsk-cascade-dur:.44s;--hsk-cascade-step:55ms}.hsk-cb-input-box[data-cascade]>*:not([type="file"]):not(.hsk-cb-field){animation-duration:var(--hsk-cascade-dur);animation-timing-function:var(--hsk-cascade-ease);animation-fill-mode:none}.hsk-cb-input-box[data-cascade="a"]>*:not([type="file"]):not(.hsk-cb-field){animation-name:hsk-leaf-settle-a}.hsk-cb-input-box[data-cascade="b"]>*:not([type="file"]):not(.hsk-cb-field){animation-name:hsk-leaf-settle-b}.hsk-cb-input-box[data-cascade]>*:not([type="file"]):not(.hsk-cb-field),.hsk-animated-placeholder__char{will-change:transform}.hsk-cb-input-box:hover>*,.hsk-cb-input-box:focus-within>*{will-change:auto}.hsk-cb-input-box>*{--hsk-cascade-field:110ms}.hsk-cb-input-box[data-cascade]>.hsk-cb-attach-btn{animation-delay:0ms}.hsk-cb-input-box[data-cascade]>.hsk-cb-voice-mode-btn{animation-delay:var(--hsk-cascade-step)}.hsk-cb-input-box[data-cascade]>.hsk-cb-mic-btn{animation-delay:calc(var(--hsk-cascade-field)+var(--hsk-text-sweep,0ms))}.hsk-cb-input-box[data-cascade]>.hsk-cb-send,.hsk-cb-input-box[data-cascade]>.hsk-chat-send{animation-delay:calc(var(--hsk-cascade-field)+var(--hsk-text-sweep,0ms)+var(--hsk-cascade-step))}@keyframes hsk-leaf-settle-a{0%{transform:translateY(0) scale(1)}42%{transform:translateY(-3px) scale(1.05)}100%{transform:translateY(0) scale(1)}}@keyframes hsk-leaf-settle-b{0%{transform:translateY(0) scale(1)}42%{transform:translateY(-3px) scale(1.05)}100%{transform:translateY(0) scale(1)}}.hsk-cb-input-box>.hsk-cb-field .hsk-animated-placeholder__char{animation-name:hsk-placeholder-animate-up}@media (prefers-reduced-motion:reduce){.hsk-cb-input-box[data-cascade="a"]>*,.hsk-cb-input-box[data-cascade="b"]>*{animation:none;transform:none;opacity:1}.hsk-cb-textarea,.hsk-cb-input-card{transition-property:background-color,box-shadow}}.hsk-animated-placeholder__char{display:inline-block;font-size:var(--hsk-input-font-size,16px);line-height:var(--hsk-input-line-height,1.55);color:var(--hsk-chat-muted,#9ca3af);font-family:var(--hsk-font);white-space:pre;animation:hsk-placeholder-animate-up .46s cubic-bezier(.16,1,.3,1) both}@keyframes hsk-placeholder-animate-up{0%{opacity:0;transform:translateY(9px);color:hsl(var(--hsk-ph-hue,0) var(--hsk-ph-sat,68%) var(--hsk-ph-light,55%))}55%{opacity:1;color:hsl(var(--hsk-ph-hue,0) var(--hsk-ph-sat,68%) var(--hsk-ph-light,55%))}100%{opacity:1;transform:translateY(0);color:var(--hsk-chat-muted,#9ca3af)}}@media (prefers-reduced-motion:reduce){.hsk-animated-placeholder__char{animation:none;transform:none;opacity:1;color:var(--hsk-chat-muted,#9ca3af);animation-delay:0ms !important}}.hsk-cb-voice-error{display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;line-height:1.4;max-width:90%;margin-inline:auto;text-wrap:balance;color:#ff6b6b;margin-top:8px;padding:4px 12px;border-radius:12px;background:rgba(229,72,77,.12);border:none;cursor:pointer;animation:hsk-msg-in .2s ease-out both}.hsk-cb-voice-error-dismiss{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:none;background:rgba(255,255,255,.12);color:inherit;font-size:14px;line-height:1;cursor:pointer;padding:0;flex-shrink:0;transition:background .15s ease,transform .15s ease}.hsk-cb-voice-error-dismiss:hover{background:rgba(255,255,255,.25);transform:scale(1.1)}.hsk-cb-img-strip{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 18px 2px 18px;background:transparent;border:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;animation:hsk-msg-in .2s ease-out both}.hsk-cb-img-thumb-wrap{position:relative;width:60px;height:60px;flex-shrink:0;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.08),0 0 0 1px rgba(255,255,255,.12);transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s cubic-bezier(.16,1,.3,1);overflow:visible}.hsk-cb-img-thumb-wrap:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(0,0,0,.12),0 0 0 1px rgba(255,255,255,.2)}.hsk-cb-img-thumb{width:100%;height:100%;object-fit:cover;border-radius:12px;border:none;display:block}.hsk-cb-img-thumb-remove{position:absolute;top:-5px;inset-inline-end:-5px;width:18px;height:18px;border-radius:50%;background:rgba(20,20,24,.75);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#ffffff;border:1px solid rgba(255,255,255,.25);box-shadow:0 2px 6px rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:transform .15s cubic-bezier(.16,1,.3,1),background-color .15s ease;z-index:2}.hsk-cb-img-thumb-remove:hover{background:rgba(239,68,68,.92);border-color:rgba(255,255,255,.4);transform:scale(1.15)}.hsk-cb-attach-btn,.hsk-cb-mic-btn,.hsk-cb-voice-mode-btn{position:relative;width:36px;height:36px;border-radius:12px;border:none !important;outline:none !important;background:transparent;color:var(--hsk-chat-muted,#71717a);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:none !important;opacity:.75;transition:transform .35s cubic-bezier(.34,1.8,.64,1),background-color .2s ease,color .2s ease,opacity .2s ease;font-family:inherit;overflow:visible}.hsk-cb-attach-btn:hover:not(:disabled),.hsk-cb-mic-btn:hover:not(:disabled),.hsk-cb-voice-mode-btn:hover:not(:disabled){opacity:1;color:var(--hsk-chat-text,#1f1f1f);background:transparent;transform:translateY(-1px)}.hsk-cb-attach-btn:active:not(:disabled),.hsk-cb-mic-btn:active:not(:disabled),.hsk-cb-voice-mode-btn:active:not(:disabled){transform:translateY(0) scale(.94);transition-duration:.1s}.hsk-cb-attach-btn svg,.hsk-cb-mic-btn svg,.hsk-cb-voice-mode-btn svg{overflow:visible}.hsk-cb-attach-btn svg{transition:transform .34s cubic-bezier(.22,1,.36,1)}.hsk-cb-attach-btn:hover:not(:disabled) svg{transform:rotate(-14deg) translateY(-1px)}.hsk-mic-cap{transform-box:fill-box;transform-origin:center;transition:transform .32s cubic-bezier(.34,1.56,.64,1)}.hsk-cb-mic-btn:hover:not(:disabled) .hsk-mic-cap{transform:translateY(-1.5px)}.hsk-wave-bar{transform-box:fill-box;transform-origin:center;transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.hsk-cb-voice-mode-btn:hover:not(:disabled) .hsk-wave-bar{animation:hsk-wave-wake .52s cubic-bezier(.34,1.8,.64,1) both,hsk-wave-live var(--hsk-period,1.1s) ease-in-out .52s infinite;animation-delay:calc(var(--hsk-bar,0) * 55ms),calc(.52s+var(--hsk-bar,0) * 55ms)}.hsk-cb-voice-mode-btn:hover:not(:disabled) .hsk-wave-bar--tip{animation-name:hsk-wave-wake-tip,hsk-wave-live-tip}@keyframes hsk-wave-wake{0%{transform:scaleY(.12)}55%{transform:scaleY(calc(var(--hsk-amp,1.6) * 1.12))}100%{transform:scaleY(1)}}@keyframes hsk-wave-live{0%,100%{transform:scaleY(1)}30%{transform:scaleY(var(--hsk-amp,1.6))}55%{transform:scaleY(calc(1+(var(--hsk-amp,1.6) - 1) * .22))}78%{transform:scaleY(calc(1+(var(--hsk-amp,1.6) - 1) * .62))}}@keyframes hsk-wave-wake-tip{0%{transform:scaleX(.2);opacity:.4}55%{transform:scaleX(calc(var(--hsk-amp,1.9) * 1.1));opacity:1}100%{transform:scaleX(1);opacity:.8}}@keyframes hsk-wave-live-tip{0%,100%{transform:scaleX(1);opacity:.7}30%{transform:scaleX(var(--hsk-amp,1.9));opacity:1}70%{transform:scaleX(1.15);opacity:.8}}.hsk-copy-sheet,.hsk-copy-back{transform-box:fill-box;transform-origin:center;transition:transform .3s cubic-bezier(.22,1,.36,1)}.hsk-cb-kiku-id-pill:hover .hsk-copy-sheet{transform:translate(.9px,.9px)}.hsk-cb-kiku-id-pill:hover .hsk-copy-back{transform:translate(-0.9px,-0.9px)}@media (prefers-reduced-motion:reduce){.hsk-cb-attach-btn:hover:not(:disabled) svg,.hsk-cb-mic-btn:hover:not(:disabled) .hsk-mic-cap,.hsk-cb-kiku-id-pill:hover .hsk-copy-sheet,.hsk-cb-kiku-id-pill:hover .hsk-copy-back{transform:none}.hsk-cb-voice-mode-btn:hover:not(:disabled) .hsk-wave-bar{animation:none}}.hsk-cb-attach-btn:disabled,.hsk-cb-mic-btn:disabled,.hsk-cb-voice-mode-btn:disabled{opacity:.3;cursor:not-allowed;transform:none}.hsk-cb-mic-btn--listening{color:#ef4444 !important;background:rgba(239,68,68,.16) !important;transform:scale(1.1) !important}.hsk-cb-mic-btn--processing{color:var(--hsk-primary,#ff6a33) !important;opacity:.85}.hsk-cb-user-imgs{display:grid;gap:2px;width:fit-content;max-width:min(78%,320px);margin-bottom:4px;margin-left:auto;border-radius:18px 18px 4px 18px;overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,.16)}.hsk-cb-user-imgs[data-count="1"]{grid-template-columns:1fr}.hsk-cb-user-imgs[data-count="2"]{grid-template-columns:1fr 1fr}.hsk-cb-user-imgs[data-count="3"]{grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr}.hsk-cb-user-imgs[data-count="3"]>:first-child{grid-row:span 2}.hsk-cb-user-imgs[data-count="4"]{grid-template-columns:1fr 1fr}.hsk-cb-user-img-cell{position:relative;display:block;padding:0;border:none;background:none;cursor:pointer;overflow:hidden;min-width:0;line-height:0}.hsk-cb-user-imgs[data-count="1"] .hsk-cb-user-img-cell{aspect-ratio:auto}.hsk-cb-user-imgs:not([data-count="1"]) .hsk-cb-user-img-cell{aspect-ratio:1}.hsk-cb-user-img-more{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45);color:#fff;font-size:20px;font-weight:600;line-height:1}.hsk-cb-user-img-thumb{width:100%;height:100%;object-fit:cover;display:block;cursor:pointer}.hsk-cb-user-imgs[data-count="1"] .hsk-cb-user-img-thumb{height:auto;max-height:300px;object-fit:contain}.hsk-cb-user-img-cell:hover .hsk-cb-user-img-thumb{filter:brightness(.93)}.hsk-cb-error{display:block;width:fit-content;max-width:min(560px,100%);margin:10px auto 8px;padding:10px 14px;border-radius:10px;background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.2);color:#ef4444;font-size:13px;line-height:1.5;font-family:var(--hsk-font);text-align:center}.hsk-kiku-badge{display:inline-block;font-size:var(--hsk-font-size,16px);font-family:var(--hsk-font);font-weight:600;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.35);color:#ffffff;padding:1px 7px;border-radius:6px;margin-inline-end:6px}.hsk-cb-memory-pill{display:inline-flex;align-items:center;gap:10px;align-self:flex-start;margin:12px 0 6px 0;padding:12px 22px;font-size:15px;font-weight:600;text-decoration:none;color:#ffffff;background:linear-gradient(135deg,#007aff 0,#0056b3 100%);border:none;border-radius:18px 18px 18px 4px !important;box-shadow:0 4px 16px -2px rgba(0,122,255,.38),inset 0 1px 0 rgba(255,255,255,.28);transition:transform .18s cubic-bezier(.34,1.56,.64,1),opacity .15s,box-shadow .18s ease;cursor:pointer}.hsk-cb-memory-pill:hover{opacity:.96;transform:translateY(-1px) scale(1.02);box-shadow:0 6px 20px rgba(0,122,255,.48)}.hsk-cb-think{position:relative;z-index:2;margin-bottom:-11px;margin-inline-start:12px;font-size:14px;font-family:var(--hsk-font)}.hsk-cb-think-head{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 11px;border:none;border-radius:999px;background:var(--hsk-chat-ai-bg,#eeeef0);box-shadow:0 0 0 3px var(--hsk-chat-bg,#ffffff),0 1px 3px rgba(0,0,0,.13);font-family:var(--hsk-font);font-size:12px;font-weight:600;color:var(--hsk-chat-muted,#6b7280);cursor:pointer;user-select:none;line-height:28px}.hsk-cb-think-head:hover{color:var(--hsk-chat-text,#111827)}.hsk-cb-think-head--static{cursor:default}.hsk-cb-think-head--static:hover{color:var(--hsk-chat-muted,#6b7280)}.hsk-cb-think-spin{animation:hsk-think-spin 3s linear infinite}@keyframes hsk-think-spin{to{transform:rotate(360deg)}}.hsk-cb-think-chevron{font-size:9px;transition:transform .12s}.hsk-cb-think-chevron--open{transform:rotate(90deg)}.hsk-cb-think-body{margin-top:6px;padding:8px 12px;border-left:2px solid var(--hsk-chat-border,rgba(128,128,128,.25));color:var(--hsk-chat-muted,#4b5563);white-space:pre-wrap;line-height:1.5;font-family:var(--hsk-font);font-size:14px}.hsk-cb-stopped{display:flex;flex-direction:column;align-items:start;gap:8px;margin:10px 0 14px}.hsk-cb-stopped--empty{align-items:center;text-align:center;margin:22px auto 18px}.hsk-cb-stopped--empty .hsk-cb-stopped-label{text-align:center}.hsk-cb-stopped-dots{display:flex;gap:5px;margin-bottom:2px}.hsk-cb-stopped-dots i{width:5px;height:5px;border-radius:50%;background:var(--hsk-chat-muted,#888);opacity:.4}.hsk-cb-stopped-label{font-size:13px;line-height:1.5;color:var(--hsk-chat-muted,#888);font-family:var(--hsk-font);text-align:start}.hsk-cb-continue{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;font-size:13px;font-weight:500;font-family:var(--hsk-font);color:var(--hsk-chat-text,#111);background:var(--hsk-chat-source-bg,rgba(0,0,0,.04));border:1px solid transparent;border-radius:999px;cursor:pointer;transition:border-color .15s,color .15s,background .15s}.hsk-cb-continue:hover{border-color:var(--hsk-primary);color:var(--hsk-primary);background:transparent}.hsk-cb-continue svg{flex:none}[dir="rtl"] .hsk-cb-continue svg{transform:scaleX(-1)}@media (prefers-color-scheme:dark){.hsk-cb-continue{background:rgba(255,255,255,.06);color:#f0efed}.hsk-cb-continue:hover{background:transparent}}.hsk-sb-wrap{--hsk-bg:#ffffff;--hsk-border:#f1f3f4;--hsk-text:#1f1f1f;--hsk-muted:#5f6368;--hsk-hover:#f8f9fa;--hsk-drop-shadow:0 8px 30px rgba(0,0,0,.06);--hsk-primary:var(--chat-primary-color,#ff6a33);position:relative;width:100%;font-family:inherit}@media (prefers-color-scheme:dark){.hsk-sb-wrap{--hsk-bg:#0a0a0a;--hsk-border:#202124;--hsk-text:#e8eaed;--hsk-muted:#888;--hsk-hover:#1a1a1b;--hsk-drop-shadow:0 12px 40px rgba(0,0,0,.4)}}.hsk-sb-input{width:100%;padding:10px 16px 10px 40px;font-size:14px;border-radius:var(--hsk-border-radius,0);border:1.5px solid var(--hsk-border);outline:none;box-sizing:border-box;background:var(--hsk-bg);color:var(--hsk-text);transition:border-color .15s,box-shadow .15s;font-family:inherit}.hsk-sb-input::placeholder{color:var(--hsk-muted)}.hsk-sb-input:focus{border-color:var(--hsk-primary);box-shadow:0 0 0 3px rgba(255,106,51,.12)}.hsk-sb-icon{position:absolute;inset-inline-start:14px;top:50%;transform:translateY(-50%);color:var(--hsk-muted);pointer-events:none;display:flex;align-items:center}.hsk-sb-drop{position:absolute;top:calc(100%+6px);left:0;right:0;background:var(--hsk-bg);border:1px solid var(--hsk-border);border-radius:var(--hsk-border-radius,0);box-shadow:var(--hsk-drop-shadow);z-index:9999;overflow:hidden;padding:6px 0}.hsk-sb-row{display:flex;align-items:center;gap:12px;padding:9px 16px;cursor:pointer;transition:background .1s}.hsk-sb-row:hover{background:var(--hsk-hover)}.hsk-sb-row-icon{color:var(--hsk-muted);flex-shrink:0;display:flex;align-items:center}.hsk-sb-row-thumb{width:38px;height:38px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--hsk-muted);background:var(--hsk-hover);border-radius:var(--hsk-border-radius,0);overflow:hidden}.hsk-sb-row-thumb img{width:100%;height:100%;object-fit:cover;display:block}.hsk-sb-row-body{flex:1;min-width:0}.hsk-sb-row-title{font-size:13px;font-weight:500;color:var(--hsk-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.hsk-sb-row-sub{font-size:11px;color:var(--hsk-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hsk-sb-empty{padding:14px 16px;font-size:13px;color:var(--hsk-muted)}.hsk-sb-loading-bar{height:2px;background:linear-gradient(90deg,transparent,var(--hsk-primary),transparent);background-size:200% 100%;animation:hsk-sweep .9s linear infinite;position:absolute;top:0;left:0;right:0}@keyframes hsk-sweep{0%{background-position:200% 0}100%{background-position:-200% 0}}.hsk-sb-fade{animation:hsk-fin .1s ease-out both}@keyframes hsk-fin{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.hsk-sb-skeleton-row{display:flex;align-items:center;gap:12px;padding:9px 16px}.hsk-sb-skeleton-icon{width:38px;height:38px;background:var(--hsk-hover,rgba(0,0,0,.05));border-radius:var(--hsk-border-radius,0);flex-shrink:0;animation:hsk-pulse 1.5s ease-in-out infinite}.hsk-sb-skeleton-text1{height:12px;background:var(--hsk-hover,rgba(0,0,0,.05));border-radius:3px;width:60%;animation:hsk-pulse 1.5s ease-in-out infinite}.hsk-sb-skeleton-text2{height:8px;background:var(--hsk-hover,rgba(0,0,0,.05));border-radius:2px;width:35%;margin-top:5px;animation:hsk-pulse 1.5s ease-in-out infinite}@keyframes hsk-pulse{0%,100%{opacity:.6}50%{opacity:1}}.hsk-sp-btn{--hsk-primary:var(--chat-primary-color,#ff6a33);display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--hsk-border-radius,0);border:1px solid var(--hsk-sp-border,rgba(255,106,51,.35));background:var(--hsk-sp-bg,rgba(255,106,51,.08));color:var(--hsk-primary);cursor:pointer;font-size:15px;line-height:1;transition:background .15s,border-color .15s,transform .12s;flex-shrink:0;padding:0}.hsk-sp-btn:hover{background:rgba(255,106,51,.18);border-color:rgba(255,106,51,.7);transform:scale(1.1)}.hsk-sp-btn:active{transform:scale(.92)}.hsk-sp-backdrop{position:fixed;inset:0;width:100vw;height:100vh;min-height:100dvh;z-index:2147483647 !important;display:flex;align-items:center;justify-content:center;padding:24px;animation:hsk-bd-in .2s ease-out both;background:var(--hsk-chat-bg,#ffffff) !important;box-sizing:border-box}@keyframes hsk-bd-in{from{opacity:0}to{opacity:1}}.hsk-sp-card{--hsk-primary:var(--chat-primary-color,#ff6a33);width:100%;max-width:600px;border-radius:var(--hsk-border-radius,0);overflow:hidden;animation:hsk-card-in .24s cubic-bezier(.34,1.36,.64,1) both;flex-shrink:0;background:var(--hsk-modal-card-bg,#ffffff);border:1px solid var(--hsk-modal-card-border,#f1f3f4);box-shadow:0 32px 80px rgba(0,0,0,.08),0 2px 8px rgba(0,0,0,.04);display:flex;flex-direction:column}.hsk-sp-card.hsk-sp-fullscreen{max-width:1000px;width:90vw;height:85vh;max-height:800px}@media (max-width:768px){.hsk-sp-backdrop{padding:0}.hsk-sp-card.hsk-sp-fullscreen{width:100vw;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;border:none;border-radius:0}}@keyframes hsk-card-in{from{opacity:0;transform:scale(.96) translateY(-12px)}to{opacity:1;transform:scale(1) translateY(0)}}.hsk-sp-header{display:flex;align-items:center;gap:10px;padding:18px 20px 14px;border-bottom:1px solid var(--hsk-modal-divide,#f1f3f4);flex-shrink:0}.hsk-sp-header-icon{font-size:18px;color:var(--hsk-primary);flex-shrink:0;display:flex;align-items:center}.hsk-sp-header-body{flex:1;min-width:0}.hsk-sp-header-title{font-size:14px;font-weight:600;color:var(--hsk-modal-text,#1f1f1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hsk-sp-header-sub{font-size:11px;color:var(--hsk-modal-muted,#5f6368);margin-top:2px}.hsk-sp-close{width:30px;height:30px;border-radius:var(--hsk-border-radius,0);border:1px solid var(--hsk-modal-divide,#f1f3f4);background:none;color:var(--hsk-modal-muted,#5f6368);cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.hsk-sp-close:hover{border-color:var(--hsk-primary);color:var(--hsk-primary)}.hsk-sp-bar{height:2px;background:linear-gradient(90deg,transparent 0,var(--hsk-primary) 40%,#ffaa80 60%,transparent 100%);background-size:200% 100%;animation:hsk-bar .9s linear infinite;flex-shrink:0}@keyframes hsk-bar{0%{background-position:200% 0}100%{background-position:-200% 0}}.hsk-sp-body{display:flex;flex:1;overflow:hidden}.hsk-sp-details-pane{flex:1;overflow-y:auto;padding:24px;border-right:1px solid var(--hsk-modal-divide,#f1f3f4);display:flex;flex-direction:column;gap:20px}.hsk-sp-chat-pane{flex:1.2;display:flex;flex-direction:column;background:var(--hsk-chat-bg,#ffffff)}.hsk-sp-product-profile{display:flex;gap:20px}@media (max-width:480px){.hsk-sp-product-profile{flex-direction:column}}.hsk-sp-details-imgwrap{width:140px;height:140px;flex-shrink:0;border:1px solid var(--hsk-modal-divide,#f1f3f4);background:#ffffff;display:flex;align-items:center;justify-content:center;padding:8px;border-radius:var(--hsk-border-radius,0)}.hsk-sp-details-imgwrap img{max-width:100%;max-height:100%;object-fit:contain}.hsk-sp-details-meta{flex:1;display:flex;flex-direction:column;gap:6px}.hsk-sp-details-name{font-size:20px;font-weight:700;color:var(--hsk-modal-text,#1f1f1f);margin:0;line-height:1.3}.hsk-sp-details-desc{margin-top:12px}.hsk-sp-details-desc h4{font-size:13px;font-weight:600;color:var(--hsk-modal-text,#1f1f1f);margin:0 0 4px 0}.hsk-sp-details-desc p{font-size:13px;line-height:1.5;color:var(--hsk-modal-muted,#5f6368);margin:0}.hsk-sp-similar-section{border-top:1px solid var(--hsk-modal-divide,#f1f3f4);padding-top:20px}.hsk-sp-similar-section h3{font-size:14px;font-weight:600;color:var(--hsk-modal-text,#1f1f1f);margin:0 0 12px 0}.hsk-sp-results{padding:10px 0;display:flex;flex-direction:row;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px}.hsk-sp-empty{padding:40px;text-align:center;font-size:13px;color:var(--hsk-modal-muted,#999)}.hsk-sp-item{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:var(--hsk-border-radius,0);border:1px solid var(--hsk-modal-item-border,#f1f3f4);background:var(--hsk-modal-item-bg,#f8f9fa);animation:hsk-toast-up .28s cubic-bezier(.22,.68,0,1.2) both;overflow:hidden;flex:0 0 170px;scroll-snap-align:start}@keyframes hsk-toast-up{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.hsk-sp-img-wrap{width:100%;height:120px;border-radius:var(--hsk-border-radius,0);background:#fff;border:1px solid var(--hsk-modal-divide,#f1f3f4);flex-shrink:0;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:6px}.hsk-sp-img-wrap img{max-width:100%;max-height:100%;object-fit:contain}.hsk-sp-img-placeholder{font-size:26px}.hsk-sp-item-body{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:space-between;gap:6px}.hsk-sp-item-name{font-size:13px;font-weight:600;color:var(--hsk-modal-text,#1f1f1f);line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hsk-sp-item-cat{font-size:11px;font-weight:600;color:var(--hsk-primary);text-transform:uppercase;letter-spacing:.05em}.hsk-sp-item-price-row{display:flex;align-items:baseline;gap:4px;margin-top:2px;flex-wrap:wrap}.hsk-sp-item-price{font-size:15px;font-weight:700;color:var(--hsk-modal-text,#1f1f1f)}.hsk-sp-item-currency{font-size:11px;color:var(--hsk-modal-muted,#5f6368)}.hsk-sp-actions{display:flex;gap:6px;margin-top:auto}.hsk-sp-action{flex:1;padding:6px 8px;border-radius:var(--hsk-border-radius,0);font-size:11px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:all .15s;text-align:center;font-family:inherit}.hsk-sp-action-primary{background:var(--hsk-primary);color:#fff;border-color:var(--hsk-primary)}.hsk-sp-action-primary:hover{opacity:.88}.hsk-sp-action-secondary{background:var(--hsk-action-sec-bg,#f1f3f4);color:var(--hsk-modal-muted,#5f6368);border-color:var(--hsk-modal-divide,#f1f3f4)}.hsk-sp-action-secondary:hover{background:var(--hsk-action-sec-bg-hover,#e8eaed);color:var(--hsk-modal-text,#1f1f1f)}.hsk-sp-footer{padding:12px 20px;border-top:1px solid var(--hsk-modal-divide,#f1f3f4);display:flex;align-items:center;gap:8px;flex-shrink:0}.hsk-sp-badge{font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--hsk-primary);background:rgba(255,106,51,.1);border:1px solid rgba(255,106,51,.25);padding:2px 8px;border-radius:var(--hsk-border-radius,0)}.hsk-sp-esc{font-size:11px;color:var(--hsk-modal-muted,#5f6368);margin-inline-start:auto}@media (max-width:768px){.hsk-cb-overlay{--hsk-font-size:var(--hsk-mobile-font-size,14px) !important;position:fixed !important;inset:0 !important;top:0 !important;left:0 !important;right:0 !important;width:100vw !important;height:100% !important;height:var(--hsk-vvh,100dvh) !important;min-height:0 !important;z-index:2147483647 !important;display:flex !important;flex-direction:column !important;overflow:hidden !important;overscroll-behavior:contain !important;background:var(--hsk-chat-bg,#0a0a0a) !important;box-sizing:border-box !important}.hsk-cb-panel{position:relative !important;height:100% !important;width:100% !important;max-width:100% !important;margin:0 !important;display:flex !important;flex-direction:column !important;overflow:hidden !important;border-radius:0 !important;background:var(--hsk-chat-bg,#0a0a0a) !important;box-sizing:border-box !important}.hsk-cb-main{flex:1 1 auto !important;height:100% !important;min-height:0 !important;display:flex !important;flex-direction:column !important;justify-content:space-between !important;overflow:hidden !important;background:var(--hsk-chat-bg,#0a0a0a) !important;box-sizing:border-box !important}.hsk-cb-topbar{padding:14px 14px 8px !important}.hsk-cb-msgs{flex:1 1 auto !important;min-height:0 !important;overflow-y:auto !important;-webkit-overflow-scrolling:touch !important;padding:10px 14px 0 !important}.hsk-cb-empty{flex:1 1 auto !important;min-height:0 !important;justify-content:center !important;padding:16px 4px !important}.hsk-cb-input-box{grid-template-columns:auto 1fr auto auto}.hsk-cb-input-box>.hsk-cb-attach-btn,.hsk-cb-input-box>.hsk-cb-voice-mode-btn{display:none}.hsk-cb-input-box>.hsk-cb-field{grid-column:2}.hsk-cb-input-box>.hsk-cb-mic-btn{grid-column:3}.hsk-cb-input-box>.hsk-cb-send,.hsk-cb-input-box>.hsk-chat-send{grid-column:4}.hsk-cb-tools-toggle{display:flex;grid-column:1;grid-row:1;width:36px;height:36px;align-items:center;justify-content:center;flex-shrink:0;padding:0;border:none;border-radius:12px;background:var(--hsk-chat-subtle,rgba(0,0,0,.045));color:var(--hsk-chat-muted,#6b7280);cursor:pointer;transition:transform .26s cubic-bezier(.34,1.56,.64,1),background-color .2s ease}.hsk-cb-tools-toggle--open{transform:rotate(45deg);background:var(--hsk-chat-divide,rgba(0,0,0,.09))}.hsk-cb-toolsheet-wrap,.hsk-cb-toolsheet-scrim{display:block}.hsk-cb-toolsheet-item{display:flex}.hsk-cb-input-box[data-expanded="true"]>.hsk-cb-tools-toggle{grid-row:2}.hsk-cb-ai-msg--inline{display:block !important;padding-inline-end:34px}.hsk-cb-hello-avatar{display:none !important}.hsk-cb-hello-wrap{align-items:center !important;text-align:center !important;gap:3px !important;max-width:30ch;margin-inline:auto}.hsk-cb-hello{font-size:21px !important;font-weight:600 !important;letter-spacing:-.015em;color:var(--hsk-chat-muted,#8b8b8f) !important;text-align:center !important}.hsk-cb-hello-lead,.hsk-cb-hello-ask{font-size:14px !important;font-weight:400 !important;text-align:center !important;color:color-mix(in srgb,var(--hsk-chat-muted,#8b8b8f) 78%,transparent) !important}.hsk-cb-onboarding-head{justify-content:flex-end !important;margin-bottom:12px !important}.hsk-cb-hello{font-size:clamp(26px,6.8vw,36px) !important;font-weight:600 !important;line-height:1.22 !important;letter-spacing:-0.025em !important}.hsk-cb-hello-lead{font-size:15px !important;line-height:1.45 !important;color:var(--hsk-chat-muted,#71717a) !important;margin-top:4px !important}.hsk-cb-doodles{opacity:.92 !important}.hsk-cb-input-wrap{margin-top:auto !important;flex-shrink:0 !important;--hsk-composer-pad-top:8px;--hsk-composer-pad-x:14px;padding:8px 14px !important;padding-bottom:max(12px,env(safe-area-inset-bottom)) !important;background:var(--hsk-chat-bg,#0a0a0a) !important;position:relative !important;z-index:10 !important}.hsk-cb-attach-btn,.hsk-cb-mic-btn,.hsk-cb-send,.hsk-chat-send{width:32px !important;height:32px !important;border-radius:8px !important}.hsk-cb-attach-btn svg,.hsk-cb-mic-btn svg,.hsk-cb-send svg,.hsk-chat-send svg{width:15px !important;height:15px !important}.hsk-sp-backdrop.hsk-sp-mobile-view{position:fixed !important;top:0 !important;left:0 !important;right:0 !important;bottom:auto !important;width:100vw !important;height:var(--hsk-vvh,100dvh) !important;min-height:0 !important;z-index:2147483647 !important;display:flex !important;flex-direction:column !important;overflow:hidden !important;overscroll-behavior:contain !important;background:var(--hsk-chat-bg,#0a0a0a) !important;padding:0 !important;box-sizing:border-box !important}.hsk-sp-card.hsk-sp-mobile-card{position:relative !important;width:100% !important;height:100% !important;max-width:100% !important;margin:0 !important;display:flex !important;flex-direction:column !important;justify-content:space-between !important;overflow:hidden !important;border-radius:0 !important;background:var(--hsk-chat-bg,#0a0a0a) !important;box-sizing:border-box !important}.hsk-sp-body{flex:1 1 auto !important;min-height:0 !important;display:flex !important;flex-direction:column !important;overflow-y:auto !important;-webkit-overflow-scrolling:touch !important;background:var(--hsk-chat-bg,#0a0a0a) !important}.hsk-cb-input-box{padding:10px 10px 10px 14px}.hsk-cb-user-bubble{max-width:85%}.hsk-sp-footer{padding:8px 12px}}@media (prefers-color-scheme:dark){.hsk-sp-backdrop{background:#000000 !important}.hsk-sp-card{--hsk-modal-card-bg:#0a0a0a;--hsk-modal-card-border:#202124;--hsk-modal-text:#e8eaed;--hsk-modal-muted:#888;--hsk-action-sec-bg:#202124;--hsk-action-sec-bg-hover:#2d2f34}.hsk-sp-details-imgwrap{background:#202124;border-color:#202124}.hsk-sp-img-wrap{background:#202124;border-color:#202124}.hsk-sp-chat-pane{background:var(--hsk-chat-bg,#0a0a0a)}}@media (prefers-color-scheme:light){.hsk-sp-backdrop{background:#ffffff !important}}.hsk-table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:12px 0 8px;width:100%;max-width:100%;min-width:0;border-radius:0;padding:0 0 6px;background:transparent;box-shadow:none;box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--hsk-chat-divide,rgba(0,0,0,.2)) transparent;cursor:grab;user-select:auto;transition:mask-image .15s ease,-webkit-mask-image .15s ease}.hsk-table-wrapper.is-dragging{cursor:grabbing;user-select:none}.hsk-table-wrapper::-webkit-scrollbar{height:5px}.hsk-table-wrapper::-webkit-scrollbar-track{background:transparent}.hsk-table-wrapper::-webkit-scrollbar-thumb{background:var(--hsk-chat-divide,rgba(0,0,0,.25));border-radius:4px}.hsk-table-wrapper::-webkit-scrollbar-thumb:hover{background:var(--hsk-chat-muted,rgba(0,0,0,.5))}.hsk-cb-ai-text .hsk-markdown-p{margin:0 0 10px}.hsk-cb-ai-text .hsk-markdown-p:last-child{margin-bottom:0}.hsk-cb-ai-text .hsk-markdown-list{margin:0 0 10px;padding-inline-start:1.2em}.hsk-cb-ai-text .hsk-markdown-list:last-child{margin-bottom:0}.hsk-cb-ai-text .hsk-markdown-ul{list-style:disc outside}.hsk-cb-ai-text .hsk-markdown-ol{list-style:decimal outside}.hsk-cb-ai-text .hsk-markdown-list li{margin:0 0 7px;padding-left:3px;line-height:1.5}.hsk-cb-ai-text .hsk-markdown-list li:last-child{margin-bottom:0}.hsk-cb-ai-text .hsk-markdown-list li::marker{color:var(--hsk-primary,#ff6a33)}.hsk-cb-ai-text .hsk-markdown-h1,.hsk-cb-ai-text .hsk-markdown-h2,.hsk-cb-ai-text .hsk-markdown-h3{margin:14px 0 7px;font-weight:650;line-height:1.3;letter-spacing:-0.01em}.hsk-cb-ai-text .hsk-markdown-h1{font-size:1.09em}.hsk-cb-ai-text .hsk-markdown-h2{font-size:1.03em}.hsk-cb-ai-text .hsk-markdown-h3{font-size:1em}.hsk-cb-ai-text>:first-child{margin-top:0}.hsk-markdown-table{width:max-content;min-width:100%;border-collapse:collapse;border-spacing:0;text-align:start;font-size:13px;background:transparent;margin:0;border:none;font-variant-numeric:tabular-nums}.hsk-markdown-table th{padding:8px 16px 6px 16px;vertical-align:bottom;line-height:1.35;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;color:var(--hsk-chat-muted,rgba(0,0,0,.55));border-bottom:1px solid var(--hsk-chat-divide,rgba(0,0,0,.1));background:transparent !important}.hsk-markdown-table td{padding:8px 16px 8px 16px;vertical-align:middle;line-height:1.45;font-size:13px;white-space:nowrap;color:var(--hsk-chat-text,inherit);border-bottom:.5px solid var(--hsk-chat-divide,rgba(0,0,0,.06));background:transparent !important}.hsk-markdown-table th:first-child,.hsk-markdown-table td:first-child{padding-inline-start:0;font-weight:590;white-space:normal;max-width:280px;min-width:150px;line-height:1.35}.hsk-markdown-table th:last-child,.hsk-markdown-table td:last-child{padding-inline-end:0}.hsk-markdown-table tbody tr:last-child td{border-bottom:none}.hsk-markdown-table td *{color:inherit}.hsk-markdown-table .hsk-markdown-link{display:inline-flex;align-items:center;padding:2px 8px;background-color:var(--hsk-chat-source-bg,rgba(0,0,0,.04));border:1px solid var(--hsk-chat-divide,rgba(0,0,0,.08));color:var(--hsk-primary,#ff6a33);font-size:12px;font-weight:500;border-radius:6px;text-decoration:none !important;margin:2px 0;transition:opacity .15s ease}.hsk-markdown-table .hsk-markdown-link:hover{opacity:.8}@media (prefers-color-scheme:dark){.hsk-markdown-table th{color:var(--hsk-chat-muted,rgba(255,255,255,.5));border-bottom-color:var(--hsk-chat-divide,rgba(255,255,255,.1))}.hsk-markdown-table td{color:var(--hsk-chat-text,#f0efed);border-bottom-color:var(--hsk-chat-divide,rgba(255,255,255,.06))}}.hsk-markdown-link{color:var(--hsk-primary,#ff6a33);text-decoration:underline;text-underline-offset:2px}.hsk-markdown-code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace,var(--hsk-font);font-size:.85em;background-color:rgba(128,128,128,.15);padding:.2em .4em;border-radius:var(--hsk-border-radius,0);color:inherit;word-break:break-word}.hsk-markdown-img-block{margin:8px 0;line-height:0}.hsk-markdown-img{display:block;max-width:100%;width:auto;max-height:220px;border-radius:10px;box-shadow:0 2px 12px rgba(0,0,0,.18);object-fit:cover;background:rgba(128,128,128,.08)}.hsk-sp-item-original-price{font-size:12px;text-decoration:line-through;color:var(--hsk-modal-muted,#888);margin-left:6px}.hsk-sp-item-discount{font-size:11px;font-weight:600;color:#10b981;margin-left:6px}.hsk-sp-item-meta-badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.hsk-sp-meta-badge{font-size:11px;font-weight:500;padding:3px 8px;border-radius:var(--hsk-border-radius,0);background:var(--hsk-modal-item-bg,#f8f9fa);border:1px solid var(--hsk-modal-divide,#f1f3f4);color:var(--hsk-modal-muted,#5f6368)}.hsk-sp-meta-badge-rating{color:#f59e0b;background:rgba(245,158,11,.08);border-color:rgba(245,158,11,.2)}.hsk-sp-meta-badge-avail.in-stock{color:#10b981;background:rgba(16,185,129,.08);border-color:rgba(16,185,129,.2)}.hsk-sp-meta-badge-avail.out-stock{color:#ef4444;background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.2)}.hsk-sp-item-brand{font-size:11px;font-weight:700;color:var(--hsk-modal-muted,#888);text-transform:uppercase;letter-spacing:.05em;margin-bottom:-2px}.hsk-chat-widget::-webkit-scrollbar,.hsk-sp-card::-webkit-scrollbar,.hsk-cb-msgs::-webkit-scrollbar,.hsk-sp-details-pane::-webkit-scrollbar,.hsk-sp-results::-webkit-scrollbar,.hsk-chat-messages::-webkit-scrollbar{width:3px;height:3px}.hsk-chat-widget::-webkit-scrollbar-track,.hsk-sp-card::-webkit-scrollbar-track,.hsk-cb-msgs::-webkit-scrollbar-track,.hsk-sp-details-pane::-webkit-scrollbar-track,.hsk-sp-results::-webkit-scrollbar-track,.hsk-chat-messages::-webkit-scrollbar-track{background:transparent}.hsk-chat-widget::-webkit-scrollbar-thumb,.hsk-sp-card::-webkit-scrollbar-thumb,.hsk-cb-msgs::-webkit-scrollbar-thumb,.hsk-sp-details-pane::-webkit-scrollbar-thumb,.hsk-sp-results::-webkit-scrollbar-thumb,.hsk-chat-messages::-webkit-scrollbar-thumb{background:rgba(0,0,0,.06);border-radius:99px;transition:background .2s ease}.hsk-chat-widget::-webkit-scrollbar-thumb:hover,.hsk-cb-msgs::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.15)}@media (prefers-color-scheme:dark){.hsk-chat-widget::-webkit-scrollbar-thumb,.hsk-sp-card::-webkit-scrollbar-thumb,.hsk-cb-msgs::-webkit-scrollbar-thumb,.hsk-sp-details-pane::-webkit-scrollbar-thumb,.hsk-sp-results::-webkit-scrollbar-thumb,.hsk-chat-messages::-webkit-scrollbar-thumb{background:rgba(255,255,255,.08)}.hsk-chat-widget::-webkit-scrollbar-thumb:hover,.hsk-cb-msgs::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.2)}}.hsk-sp-details-pane,.hsk-sp-results,.hsk-chat-messages{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.06) transparent}@media (prefers-color-scheme:dark){.hsk-sp-details-pane,.hsk-sp-results,.hsk-chat-messages{scrollbar-color:rgba(255,255,255,.08) transparent}}.hsk-sp-specs-horizontal{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.hsk-sp-spec-item-horizontal{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--hsk-modal-item-bg,#f8f9fa);border:1px solid var(--hsk-modal-divide,#f1f3f4);border-radius:var(--hsk-border-radius,0);font-size:11px}.hsk-sp-spec-label-horizontal{font-weight:500;color:var(--hsk-modal-muted,#888)}.hsk-sp-spec-value-horizontal{font-weight:600;color:var(--hsk-modal-text,#1f1f1f)}@media (prefers-color-scheme:dark){.hsk-sp-spec-item-horizontal{background:#1a1a1b;border-color:#202124}}.hsk-cb-phone-form{display:flex;flex-direction:column;gap:8px;margin-top:8px}.hsk-cb-phone-label{font-size:.875rem;color:var(--hsk-chat-text,#111);margin:0}.hsk-cb-phone-input{width:100%;box-sizing:border-box;padding:8px 12px;border:1px solid var(--hsk-chat-divide,rgba(0,0,0,.12));border-radius:var(--hsk-border-radius,0);background:var(--hsk-chat-input-bg,rgba(0,0,0,.04));color:var(--hsk-chat-text,#111);font-size:.9rem;outline:none;transition:border-color .15s}.hsk-cb-phone-input::placeholder{color:var(--hsk-chat-muted,#888)}.hsk-cb-phone-input:focus{border-color:var(--hsk-primary,#ff6a33)}.hsk-cb-phone-submit{align-self:flex-start;padding:8px 16px;border:1px solid var(--hsk-chat-divide,rgba(0,0,0,.12));border-radius:var(--hsk-border-radius,0);background:transparent;color:var(--hsk-chat-text,#111);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.hsk-cb-phone-submit:hover{border-color:var(--hsk-primary,#ff6a33);color:var(--hsk-primary,#ff6a33)}.hsk-cb-main{flex:1;min-width:0;display:flex;flex-direction:column;height:100%;overflow:hidden}@keyframes hsk-fade-in-up{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.hsk-action-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;animation:hsk-fade-in-up .35s ease .1s both}.hsk-action-pill{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:20px;border:1px solid var(--hsk-chat-divide,rgba(0,0,0,.12));background:var(--hsk-pill-bg,rgba(255,255,255,.8));color:var(--hsk-chat-text,#1f1f1f);font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;transition:all .15s;white-space:nowrap;backdrop-filter:blur(4px)}.hsk-action-pill:hover:not(:disabled){border-color:var(--hsk-primary,#ff6a33);background:color-mix(in srgb,var(--hsk-primary,#ff6a33) 8%,transparent);color:var(--hsk-primary,#ff6a33);transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,.08)}.hsk-action-pill:disabled{opacity:.4;cursor:not-allowed}.hsk-pill-emoji{font-size:13px;line-height:1}@media (prefers-color-scheme:dark){.hsk-action-pill{--hsk-pill-bg:rgba(40,40,42,.85);border-color:rgba(255,255,255,.1);color:var(--hsk-chat-text,#e8eaed)}}[data-hsk-theme="dark"] .hsk-action-pill{--hsk-pill-bg:rgba(40,40,42,.85);border-color:rgba(255,255,255,.1);color:var(--hsk-chat-text,#e8eaed)}.hsk-sp-tabs-mobile{display:none}@media (max-width:768px){.hsk-sp-tabs-mobile{display:flex;border-bottom:1px solid var(--hsk-modal-divide,#f1f3f4);background:var(--hsk-modal-card-bg,#ffffff);flex-shrink:0}.hsk-sp-tab-btn{flex:1;padding:12px 8px;background:none;border:none;border-bottom:2px solid transparent;font-size:13px;font-weight:600;color:var(--hsk-modal-muted,#5f6368);cursor:pointer;text-align:center;transition:all .15s;font-family:inherit}.hsk-sp-tab-btn.active{color:var(--hsk-primary);border-bottom-color:var(--hsk-primary)}.hsk-sp-pane-hidden-mobile{display:none !important}.hsk-sp-details-pane,.hsk-sp-chat-pane{flex:1 !important;height:100% !important;max-height:none !important}}@media (max-width:768px){.hsk-sp-header-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}.hsk-sp-header-specs-btn{flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:600;color:var(--hsk-modal-muted,#5f6368);background:var(--hsk-action-sec-bg,#f1f3f4);border:1px solid var(--hsk-modal-divide,#f1f3f4);border-radius:20px;cursor:pointer;font-family:inherit;transition:all .2s ease}.hsk-sp-header-specs-btn:hover{background:var(--hsk-action-sec-bg-hover,#e8eaed);color:var(--hsk-primary)}.hsk-sp-mobile-attachment-deck{margin-top:10px;display:flex;flex-direction:column;gap:10px;width:100%}.hsk-sp-mobile-main-card{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--hsk-modal-item-bg,#f8f9fa);border:1px solid var(--hsk-modal-divide,#f1f3f4);border-radius:8px;width:100%;box-sizing:border-box}.hsk-sp-mobile-main-card-img{width:44px;height:44px;flex-shrink:0;border:1px solid var(--hsk-modal-divide,#f1f3f4);border-radius:6px;background:#ffffff;display:flex;align-items:center;justify-content:center;padding:3px;overflow:hidden}.hsk-sp-mobile-main-card-img img{max-width:100%;max-height:100%;object-fit:contain}.hsk-sp-mobile-main-card-info{flex:1;min-width:0}.hsk-sp-mobile-main-card-brand{font-size:9px;font-weight:700;color:var(--hsk-modal-muted,#888);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hsk-sp-mobile-main-card-name{font-size:13px;font-weight:600;color:var(--hsk-modal-text,#1f1f1f);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.hsk-sp-mobile-main-card-price{font-size:12px;font-weight:700;color:var(--hsk-primary);margin-top:1px}.hsk-sp-mobile-main-card-specs-btn{padding:5px 10px;font-size:11px;font-weight:600;color:var(--hsk-primary);background:transparent;border:1px solid var(--hsk-primary);border-radius:4px;cursor:pointer;font-family:inherit;transition:all .2s ease}.hsk-sp-mobile-main-card-specs-btn:hover{background:var(--hsk-primary);color:#ffffff}.hsk-sp-mobile-similar-carousel-inline{display:flex;flex-direction:column;gap:6px;width:100%}.hsk-sp-mobile-similar-carousel-title{font-size:10px;font-weight:700;color:var(--hsk-modal-muted,#888);text-transform:uppercase;letter-spacing:.05em;padding-left:2px}.hsk-sp-mobile-similar-carousel-list{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px}.hsk-sp-mobile-similar-carousel-list::-webkit-scrollbar{display:none}.hsk-sp-mobile-similar-carousel-item{flex:0 0 160px;display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--hsk-modal-item-bg,#f8f9fa);border:1px solid var(--hsk-modal-divide,#f1f3f4);border-radius:6px;cursor:pointer;box-sizing:border-box;transition:transform .15s ease,border-color .15s ease}.hsk-sp-mobile-similar-carousel-item:hover{border-color:var(--hsk-primary)}.hsk-sp-mobile-similar-carousel-img{width:32px;height:32px;flex-shrink:0;border-radius:4px;background:#ffffff;border:1px solid var(--hsk-modal-divide,#f1f3f4);display:flex;align-items:center;justify-content:center;padding:2px;overflow:hidden}.hsk-sp-mobile-similar-carousel-img img{max-width:100%;max-height:100%;object-fit:contain}.hsk-sp-mobile-similar-carousel-meta{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}.hsk-sp-mobile-similar-carousel-name{font-size:11px;font-weight:600;color:var(--hsk-modal-text,#1f1f1f);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hsk-sp-mobile-similar-carousel-price{font-size:10px;font-weight:700;color:var(--hsk-primary);margin-top:1px}.hsk-sp-mobile-chat-container{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--hsk-chat-bg,#ffffff)}.hsk-sp-mobile-specs-overlay{position:fixed;inset:0;z-index:100000;background:rgba(0,0,0,.4);display:flex;align-items:flex-end;animation:hsk-bd-in .2s ease-out}.hsk-sp-mobile-specs-drawer{width:100%;background:var(--hsk-modal-card-bg,#ffffff);border-top-left-radius:12px;border-top-right-radius:12px;max-height:70vh;display:flex;flex-direction:column;animation:hsk-drawer-in .25s cubic-bezier(0,0,.2,1);box-shadow:0 -8px 24px rgba(0,0,0,.15)}@keyframes hsk-drawer-in{from{transform:translateY(100%)}to{transform:translateY(0)}}.hsk-sp-mobile-specs-header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--hsk-modal-divide,#f1f3f4)}.hsk-sp-mobile-specs-header h3{margin:0;font-size:14px;font-weight:700;color:var(--hsk-modal-text,#1f1f1f)}.hsk-sp-mobile-specs-header button{background:none;border:none;font-size:12px;font-weight:600;color:var(--hsk-primary);cursor:pointer;font-family:inherit}.hsk-sp-mobile-specs-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px}.hsk-sp-mobile-specs-title{font-size:15px;font-weight:700;color:var(--hsk-modal-text,#1f1f1f);margin:0}.hsk-sp-mobile-specs-desc h5,.hsk-sp-mobile-specs-list h5{margin:0 0 6px 0;font-size:11px;font-weight:700;color:var(--hsk-modal-muted,#888);text-transform:uppercase;letter-spacing:.05em}.hsk-sp-mobile-specs-desc p{margin:0;font-size:13px;line-height:1.5;color:var(--hsk-modal-text,#333)}.hsk-sp-mobile-specs-list{display:flex;flex-direction:column;gap:8px}.hsk-sp-mobile-spec-row{display:flex;justify-content:space-between;padding:8px 10px;background:var(--hsk-modal-item-bg,#f8f9fa);border:1px solid var(--hsk-modal-divide,#f1f3f4);border-radius:var(--hsk-border-radius,4px);font-size:12px;gap:12px}.hsk-sp-mobile-spec-label{color:var(--hsk-modal-muted,#5f6368);font-weight:500}.hsk-sp-mobile-spec-value{color:var(--hsk-modal-text,#1f1f1f);font-weight:600;text-align:right}}@media (prefers-color-scheme:dark){.hsk-sp-mobile-main-card{background:#0a0a0a !important}.hsk-sp-mobile-main-card-img{background:#1a1a1b !important}.hsk-sp-mobile-similar-carousel-item{background:#0a0a0a !important}.hsk-sp-mobile-similar-carousel-img{background:#1a1a1b !important}.hsk-sp-mobile-specs-drawer{background:#0a0a0a !important}.hsk-sp-mobile-spec-row{background:#1a1a1b !important}}.kiku-voice-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:none;background:transparent;color:var(--hsk-text-muted,#888);cursor:pointer;transition:color .2s,background .2s;flex-shrink:0}.kiku-voice-btn:hover{background:var(--hsk-hover-bg,rgba(0,0,0,.06));color:var(--hsk-primary,#6c47ff)}.kiku-voice-btn--active{color:#ef4444;background:rgba(239,68,68,.1)}.kiku-voice-btn:disabled{opacity:.4;cursor:not-allowed}.kiku-voice-ripple{position:absolute;inset:-4px;border-radius:50%;border:2px solid #ef4444;animation:kiku-voice-pulse 1.2s ease-out infinite;pointer-events:none}@keyframes kiku-voice-pulse{0%{transform:scale(1);opacity:1}100%{transform:scale(1.6);opacity:0}}.kiku-vs-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:none;background:transparent;color:var(--hsk-text-muted,#888);cursor:pointer;transition:color .2s,background .2s;flex-shrink:0}.kiku-vs-btn:hover{background:var(--hsk-hover-bg,rgba(0,0,0,.06));color:var(--hsk-primary,#6c47ff)}.kiku-vs-btn--loading{opacity:.6;pointer-events:none}@keyframes kiku-vs-rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.kiku-vs-spin{animation:kiku-vs-rotate .8s linear infinite}.kiku-style-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.kiku-style-tag{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:99px;background:var(--hsk-primary-alpha,rgba(108,71,255,.1));color:var(--hsk-primary,#6c47ff);font-size:11px;font-weight:500;white-space:nowrap}.kiku-vs-preview-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--hsk-surface,#f9f9f9);border-radius:10px;margin-bottom:12px;border:1px solid var(--hsk-border,#e5e5e5)}.kiku-vs-preview-img{width:44px;height:44px;object-fit:cover;border-radius:8px;flex-shrink:0}.kiku-vs-preview-info{flex:1;min-width:0}.kiku-vs-preview-label{font-size:11px;color:var(--hsk-text-muted,#888);margin-bottom:2px}.kiku-vs-preview-palette{font-size:13px;font-weight:600;color:var(--hsk-text,#1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kiku-voice-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:none;background:transparent;color:var(--hsk-text-muted,#888);cursor:pointer;transition:color .2s,background .2s;flex-shrink:0}.kiku-voice-btn:hover{background:var(--hsk-hover-bg,rgba(0,0,0,.06));color:var(--hsk-primary,#ff6a33)}.kiku-voice-btn--active{color:#ef4444;background:rgba(239,68,68,.1)}.kiku-voice-btn:disabled{opacity:.4;cursor:not-allowed}.kiku-voice-ripple{position:absolute;inset:-4px;border-radius:50%;border:2px solid #ef4444;animation:kiku-voice-pulse 1.2s ease-out infinite;pointer-events:none}@keyframes kiku-voice-pulse{0%{transform:scale(1);opacity:1}100%{transform:scale(1.7);opacity:0}}.kiku-vs-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:none;background:transparent;color:var(--hsk-text-muted,#888);cursor:pointer;transition:color .2s,background .2s;flex-shrink:0}.kiku-vs-btn:hover{background:var(--hsk-hover-bg,rgba(0,0,0,.06));color:var(--hsk-primary,#ff6a33)}.kiku-vs-btn--loading{opacity:.6;pointer-events:none}@keyframes kiku-vs-rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.kiku-vs-spin{animation:kiku-vs-rotate .8s linear infinite}.kiku-style-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.kiku-style-tag{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:99px;background:rgba(255,106,51,.1);color:var(--hsk-primary,#ff6a33);font-size:11px;font-weight:500;white-space:nowrap}.kiku-vs-preview-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--hsk-surface,#f9f9f9);border-radius:10px;margin-bottom:12px;border:1px solid var(--hsk-border,#e5e5e5);animation:hsk-msg-in .22s ease-out both}.kiku-vs-preview-img{width:44px;height:44px;object-fit:cover;border-radius:8px;flex-shrink:0}.kiku-vs-preview-info{flex:1;min-width:0}.kiku-vs-preview-label{font-size:11px;color:var(--hsk-text-muted,#888);margin-bottom:2px}.kiku-vs-preview-palette{font-size:13px;font-weight:600;color:var(--hsk-text,#1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hsk-cb-source--referenced{}.hsk-source-card--referenced{}.hsk-cb-source-ref-badge{position:absolute;top:6px;right:6px;background:#fbbf24;color:#fff;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,.15);z-index:10;animation:hsk-badge-pop .3s cubic-bezier(.34,1.56,.64,1) both}@keyframes hsk-badge-pop{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.hsk-sources-group-title{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#888;margin:14px 0 8px 0;display:flex;align-items:center;gap:4px}.hsk-kiku-badge{display:inline-flex;align-items:center;gap:3px;font-size:13px;font-weight:700;letter-spacing:-0.01em;color:#ffffff;background:rgba(255,255,255,.28);border:1px solid rgba(255,255,255,.45);padding:2px 8px;border-radius:8px;margin-inline-end:8px;vertical-align:middle;position:relative;top:-1px;box-shadow:0 1px 3px rgba(0,0,0,.12)}.hsk-markdown-img,.hsk-cb-user-img-thumb,.hsk-cb-source .hsk-cb-src-imgwrap img{cursor:zoom-in}.hsk-lightbox{position:fixed;inset:0;z-index:999999;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;padding:24px;animation:hsk-lightbox-in .15s ease-out both;cursor:zoom-out}@keyframes hsk-lightbox-in{from{opacity:0}to{opacity:1}}.hsk-lightbox-img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:4px;cursor:default}.hsk-lightbox-close{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;border:none;background:rgba(255,255,255,.15);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s}.hsk-lightbox-close:hover{background:rgba(255,255,255,.28)}.hsk-cb-viz{margin-top:10px;animation:hsk-msg-in .2s ease-out both}.hsk-cb-viz img,.hsk-cb-viz video{width:100%;max-width:420px;border-radius:8px;display:block}.hsk-cb-viz-disclaimer{max-width:420px;margin-top:4px;font-size:11px;line-height:1.4;color:var(--hsk-chat-muted,#9aa0a6)}.hsk-cb-calc-disclaimer{max-width:440px;margin-top:8px;padding:8px 12px;font-size:11.5px;line-height:1.45;color:var(--hsk-chat-muted,rgba(255,255,255,.65));background:var(--hsk-chat-callout-bg,rgba(255,255,255,.04));border:1px solid var(--hsk-border-subtle,rgba(255,255,255,.08));border-radius:8px}[data-hsk-theme="light"] .hsk-cb-calc-disclaimer{color:rgba(0,0,0,.6);background:rgba(0,0,0,.03);border-color:rgba(0,0,0,.08)}.hsk-cb-stale{max-width:420px;margin-top:8px;padding:8px 10px;border:1px solid rgba(220,38,38,.35);border-left-width:3px;border-radius:6px;background:rgba(220,38,38,.06)}.hsk-cb-stale-title{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#dc2626}.hsk-cb-stale-item{margin-top:3px;font-size:12px;line-height:1.45;color:var(--hsk-chat-text,#202124)}.hsk-cb-stale-reason{color:var(--hsk-chat-muted,#9aa0a6)}.hsk-cb-viz-imgwrap{position:relative;display:inline-block;max-width:100%}.hsk-cb-viz-mark{position:absolute;right:10px;bottom:10px;display:inline-flex;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;color:#fff;background:rgba(0,0,0,.62);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.35);border-radius:999px;cursor:pointer;transition:background .15s}.hsk-cb-viz-mark:hover{background:var(--hsk-primary,#ff6a33);border-color:transparent}.hsk-markup-overlay{position:fixed;inset:0;z-index:999999;background:rgba(0,0,0,.88);display:flex;align-items:center;justify-content:center;padding:16px;animation:hsk-lightbox-in .15s ease-out both}.hsk-markup{display:flex;flex-direction:column;gap:12px;width:min(720px,100%);max-height:100%;overflow-y:auto}.hsk-markup-head{display:flex;align-items:center;justify-content:space-between}.hsk-markup-title{font-size:14px;font-weight:600;color:#fff}.hsk-markup-cancel{padding:6px 12px;font-size:12px;font-weight:600;color:#fff;background:rgba(255,255,255,.12);border:none;border-radius:var(--hsk-border-radius,0);cursor:pointer}.hsk-markup-cancel:hover{background:rgba(255,255,255,.22)}.hsk-markup-stage{display:flex;justify-content:center}.hsk-markup-canvas-wrap{position:relative;max-width:100%}.hsk-markup-canvas{display:block;max-width:100%;max-height:60vh;border-radius:var(--hsk-border-radius,0);touch-action:none}.hsk-markup-canvas--pen,.hsk-markup-canvas--eraser{cursor:crosshair}.hsk-markup-canvas--text{cursor:text}.hsk-markup-textinput{position:absolute;transform:translateY(-100%);min-width:140px;padding:4px 6px;font-size:14px;font-weight:600;background:rgba(0,0,0,.55);border:1px dashed rgba(255,255,255,.6);border-radius:4px;outline:none}.hsk-markup-loading,.hsk-markup-error{padding:40px 16px;font-size:13px;color:rgba(255,255,255,.75);text-align:center}.hsk-markup-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.hsk-markup-colors{display:flex;gap:8px}.hsk-markup-color{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}.hsk-markup-color--on{border-color:#fff;transform:scale(1.15)}.hsk-markup-actions{display:flex;gap:6px}.hsk-markup-tool{padding:6px 11px;font-size:12px;font-weight:600;color:#fff;background:rgba(255,255,255,.12);border:none;border-radius:var(--hsk-border-radius,0);cursor:pointer}.hsk-markup-tool:hover:not(:disabled){background:rgba(255,255,255,.22)}.hsk-markup-tool--on{background:var(--hsk-primary,#ff6a33)}.hsk-markup-tool--on:hover:not(:disabled){background:var(--hsk-primary,#ff6a33)}.hsk-markup-tool:disabled{opacity:.4;cursor:default}.hsk-markup-send{display:flex;gap:8px}.hsk-markup-instruction{flex:1;min-width:0;padding:10px 12px;font-size:14px;color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);border-radius:var(--hsk-border-radius,0);outline:none}.hsk-markup-instruction::placeholder{color:rgba(255,255,255,.5)}.hsk-markup-instruction:focus{border-color:var(--hsk-primary,#ff6a33)}.hsk-markup-go{padding:10px 20px;font-size:13px;font-weight:600;color:#fff;background:var(--hsk-primary,#ff6a33);border:none;border-radius:var(--hsk-border-radius,0);cursor:pointer}.hsk-markup-go:hover:not(:disabled){opacity:.9}.hsk-markup-go:disabled{opacity:.45;cursor:default}.hsk-cb-kimgs{margin-top:10px;display:flex;flex-direction:column;gap:10px;animation:hsk-msg-in .2s ease-out both}.hsk-cb-kimg-grid{display:flex;flex-wrap:wrap;gap:6px}.hsk-cb-kimg{width:132px;height:132px;object-fit:cover;border-radius:8px;cursor:zoom-in;border:1px solid var(--hsk-chat-border,rgba(0,0,0,.08))}.hsk-cb-kimg:only-child{width:100%;max-width:320px;height:auto}.hsk-cb-kimg-caption{margin-top:4px;font-size:11px;line-height:1.4;color:var(--hsk-chat-muted,#9aa0a6)}.hsk-cb-viz--loading{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--hsk-chat-muted,#888);padding:10px 0}.hsk-cb-viz-spinner{width:14px;height:14px;border-radius:50%;border:2px solid var(--hsk-chat-divide,rgba(0,0,0,.15));border-top-color:var(--hsk-primary,#ff6a33);animation:hsk-viz-spin .7s linear infinite}@keyframes hsk-viz-spin{to{transform:rotate(360deg)}}.hsk-cb-panel[data-script="nonlatin"][data-host-font="gap"]{--hsk-font:"Geist",system-ui,-apple-system,'Segoe UI',Roboto,'Noto Sans',sans-serif}.hsk-cb-panel[data-script="nonlatin"],.hsk-cb-panel[data-script="nonlatin"] *{letter-spacing:normal;font-family:var(--hsk-font)}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-hello,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-hello-lead,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-hello-ask,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-ai-text,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-user-bubble,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-hint,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-chip,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-topbar-btn,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-textarea,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-entlang-opt-title,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-entlang-opt-note,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-ai-text .hsk-markdown-list li,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-ai-text .hsk-markdown-h1,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-ai-text .hsk-markdown-h2,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-ai-text .hsk-markdown-h3,.hsk-cb-panel[data-script="nonlatin"] .hsk-markdown-table th,.hsk-cb-panel[data-script="nonlatin"] .hsk-markdown-table td{line-height:1.9}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-hint{font-size:11px;line-height:16px;bottom:4px}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-voice-error{font-size:12px;line-height:22px;max-width:30ch}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-hello{font-size:clamp(20px,3.4vw,26px);line-height:1.5;text-wrap:balance;overflow-wrap:break-word}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-hello-ask{font-size:15px;line-height:1.75}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-hello-wrap{max-width:100%;min-width:0}.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-hello,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-hello-lead,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-hello-ask,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-ai-text,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-user-bubble,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-hint,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-chip,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-topbar-btn,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-textarea,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-entlang-opt-title,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-entlang-opt-note,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-ai-text .hsk-markdown-list li,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-ai-text .hsk-markdown-h1,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-ai-text .hsk-markdown-h2,.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-ai-text .hsk-markdown-h3,.hsk-cb-panel[data-nastaliq="true"] .hsk-markdown-table th,.hsk-cb-panel[data-nastaliq="true"] .hsk-markdown-table td{line-height:2.2}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-chip{font-size:14px}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-topbar-btn{height:auto;min-height:34px;padding:5px 14px}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-field{--hsk-input-line-height:1.9}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-textarea{min-height:34px}.hsk-cb-panel[data-nastaliq="true"] .hsk-cb-field{--hsk-input-line-height:2.2}.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-user-bubble,.hsk-cb-panel[data-script="nonlatin"] .hsk-cb-ai-text{overflow-wrap:break-word;word-break:normal}.hsk-cb-viz-broken{font-size:13px;color:var(--hsk-chat-muted,#71717a);padding:14px 16px;border:1px dashed var(--hsk-chat-divide,rgba(0,0,0,.12));border-radius:12px}.hsk-msg-audio-btn{background:transparent;border:none;color:#888;cursor:pointer;padding:4px;border-radius:4px;display:inline-flex;align-items:center}.hsk-cb-voice-mode-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;background:transparent;border:1px solid transparent;border-radius:12px;color:var(--hsk-chat-muted,#71717a);cursor:pointer;transition:all .2s cubic-bezier(.34,1.56,.64,1);font-family:inherit}.hsk-cb-voice-mode-btn:hover:not(:disabled),.hsk-cb-mic-btn:hover:not(:disabled){border-color:color-mix(in srgb,var(--hsk-primary,#ff6a33) 25%,transparent);color:var(--hsk-primary,#ff6a33);background:color-mix(in srgb,var(--hsk-primary,#ff6a33) 8%,transparent);transform:translateY(-1px)}.hsk-cb-voice-mode-btn:disabled{opacity:.35;cursor:not-allowed}.hsk-cb-voice-mode-btn--active,.hsk-cb-mic-btn--listening{color:var(--hsk-primary,#ff6a33);background:color-mix(in srgb,var(--hsk-primary,#ff6a33) 12%,transparent)}.hsk-cb-mic-btn--processing{color:var(--hsk-primary,#ff6a33);opacity:.7}.hsk-voice-overlay{position:absolute;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(12px,2.2vh,26px);padding:clamp(14px,2.5vh,24px);overflow-y:auto;overscroll-behavior:contain;background:var(--hsk-chat-bg,#ffffff);animation:hsk-voice-in .32s cubic-bezier(.2,.8,.2,1);will-change:opacity;contain:paint}.hsk-voice-overlay::before{content:'';position:absolute;inset:0;background:radial-gradient(42% 26% at 50% 40%,color-mix(in srgb,var(--hsk-primary,#ff6a33) 8%,transparent) 0,transparent 68%);pointer-events:none}.hsk-voice-overlay>*{position:relative}@keyframes hsk-voice-in{from{opacity:0}to{opacity:1}}.hsk-voice-allowance{position:absolute;top:14px;left:14px;display:flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 10px;font-size:12px;font-variant-numeric:tabular-nums;font-weight:600;border:1px solid color-mix(in srgb,var(--hsk-chat-text,#1f1f1f) 14%,transparent);border-radius:999px;color:var(--hsk-chat-muted,#71717a);transition:color .18s ease,border-color .18s ease}.hsk-voice-allowance--low{color:#dc2626;border-color:color-mix(in srgb,#dc2626 40%,transparent)}.hsk-voice-exit{position:absolute;top:14px;right:14px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:transparent;border:1px solid color-mix(in srgb,var(--hsk-chat-text,#1f1f1f) 14%,transparent);border-radius:999px;color:var(--hsk-chat-muted,#71717a);cursor:pointer;transition:color .18s ease,border-color .18s ease}.hsk-voice-exit:hover{color:var(--hsk-chat-text,#1f1f1f);border-color:color-mix(in srgb,var(--hsk-chat-text,#1f1f1f) 32%,transparent)}.hsk-voice-stage{width:min(560px,100%);height:clamp(110px,24vh,240px);flex:none}.hsk-voice-canvas{display:block;width:100%;height:100%}.hsk-voice-controls{display:flex;align-items:center;gap:12px}.hsk-voice-control{display:flex;align-items:center;justify-content:center;width:52px;height:52px;padding:0;background:var(--hsk-surface-2,rgba(255,255,255,.95));border:1px solid color-mix(in srgb,var(--hsk-chat-text,#000000) 10%,transparent);border-radius:999px;color:var(--hsk-chat-text,#1f1f1f);cursor:pointer;box-shadow:0 2px 12px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.04);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:color .2s ease,border-color .2s ease,background .2s ease,transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s ease}.hsk-voice-control:hover{transform:scale(1.06);box-shadow:0 4px 18px rgba(0,0,0,.12)}.hsk-voice-control:active{transform:scale(.92);transition-duration:.08s}.hsk-voice-control--muted{color:var(--hsk-chat-muted,#888888);border-color:color-mix(in srgb,var(--hsk-chat-text,#000000) 12%,transparent);background:color-mix(in srgb,var(--hsk-chat-bg,#ffffff) 85%,transparent);box-shadow:0 1px 4px rgba(0,0,0,.04)}.hsk-voice-control-icon{display:inline-flex;align-items:center;justify-content:center;z-index:2;transition:transform .2s ease}@keyframes hsk-voice-icon-in{from{opacity:0;transform:scale(.6) rotate(-12deg)}to{opacity:1;transform:scale(1) rotate(0deg)}}@keyframes hsk-voice-control-pulse{0%{transform:scale(1);box-shadow:0 0 0 0 color-mix(in srgb,var(--hsk-primary,#ff6a33) 45%,transparent)}40%{transform:scale(1.08);box-shadow:0 0 0 8px color-mix(in srgb,var(--hsk-primary,#ff6a33) 0,transparent)}100%{transform:scale(1);box-shadow:0 0 0 0 transparent}}@media (prefers-reduced-motion:reduce){.hsk-voice-control-icon,.hsk-voice-control--muted{animation:none}}.hsk-voice-caption{display:flex;flex-direction:column;align-items:center;gap:10px;max-width:min(520px,100%);text-align:center}.hsk-voice-phase{font-family:var(--hsk-font);font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--hsk-chat-muted,#71717a);transition:color .25s ease}.hsk-voice-phase--listening,.hsk-voice-phase--speaking{color:var(--hsk-primary,#ff6a33)}.hsk-voice-phase--thinking{animation:hsk-voice-breathe 1.6s ease-in-out infinite}@keyframes hsk-voice-breathe{0%,100%{opacity:.45}50%{opacity:1}}.hsk-voice-stage--connecting{opacity:.4;transition:opacity .25s ease}.hsk-voice-connecting{display:flex;align-items:center;gap:7px;font-family:var(--hsk-font);font-size:13px;color:var(--hsk-chat-muted,#8a8f98);animation:hsk-sent-in .2s ease-out both}.hsk-voice-connecting-dot{width:6px;height:6px;border-radius:999px;background:currentColor;animation:hsk-queued-pulse 1s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.hsk-voice-connecting-dot{animation:none;opacity:.7}}.hsk-voice-heard{font-family:var(--hsk-font);font-size:1.05rem;line-height:1.5;color:var(--hsk-chat-text,#1f1f1f)}.hsk-voice-hint-sub{font-family:var(--hsk-font);font-size:14px;color:var(--hsk-chat-muted,#a1a1aa);line-height:1.4;opacity:.85}.hsk-voice-items{display:flex;flex-wrap:wrap;align-items:stretch;justify-content:center;gap:10px;width:min(620px,100%)}.hsk-voice-item{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:clamp(108px,30vw,132px);padding:8px;text-align:start;background:transparent;border:1px solid color-mix(in srgb,var(--hsk-chat-text,#1f1f1f) 10%,transparent);border-radius:12px;cursor:pointer;font-family:var(--hsk-font);animation:hsk-voice-item-in .34s cubic-bezier(.2,.8,.2,1) both;transition:border-color .18s ease,transform .18s ease}.hsk-voice-item:hover{border-color:color-mix(in srgb,var(--hsk-primary,#ff6a33) 45%,transparent);transform:translateY(-2px)}@keyframes hsk-voice-item-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.hsk-voice-item-img{width:100%;height:clamp(52px,8.5vh,78px);object-fit:cover;border-radius:8px;background:color-mix(in srgb,var(--hsk-chat-text,#1f1f1f) 5%,transparent)}.hsk-voice-item-img--empty{display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--hsk-chat-text,#1f1f1f) 30%,transparent)}.hsk-voice-item-name{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.78rem;line-height:1.35;color:var(--hsk-chat-text,#1f1f1f)}.hsk-voice-item-price{font-size:.78rem;font-weight:600;color:var(--hsk-primary,#ff6a33)}@media (prefers-reduced-motion:reduce){.hsk-voice-item{animation:none}}.hsk-voice-error{font-family:var(--hsk-font);font-size:.85rem;color:#e5484d;text-align:center}@media (prefers-reduced-motion:reduce){.hsk-voice-overlay,.hsk-voice-phase--thinking{animation:none}}.hsk-cb-listen{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;margin-top:6px;padding:0;background:transparent;border:none;border-radius:999px;color:var(--hsk-chat-muted,#71717a);cursor:pointer;opacity:0;transition:opacity .18s ease,color .18s ease}.hsk-cb-msg-group:hover .hsk-cb-listen,.hsk-cb-listen:focus-visible,.hsk-cb-listen--active{opacity:1}.hsk-cb-listen:hover,.hsk-cb-listen--active{color:var(--hsk-primary,#ff6a33)}.hsk-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.hsk-voice-picker{position:absolute;top:clamp(14px,3vh,28px);left:50%;transform:translateX(-50%);display:flex;gap:8px;flex-wrap:nowrap;justify-content:center;max-width:min(100%,420px);padding:0 56px;z-index:2}.hsk-voice-pill{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:999px;border:1px solid rgba(0,0,0,.09);background:rgba(255,255,255,.72);backdrop-filter:blur(8px);font:inherit;font-size:11px;letter-spacing:.01em;color:#5b5b5b;cursor:pointer;transition:background 160ms ease,border-color 160ms ease,color 160ms ease,transform 160ms ease;opacity:0;animation:hsk-voice-pill-in 420ms cubic-bezier(.16,1,.3,1) forwards}.hsk-voice-pill--on{animation:hsk-voice-pill-in 420ms cubic-bezier(.16,1,.3,1) forwards,hsk-voice-pill-pop 260ms ease}@keyframes hsk-voice-pill-in{from{opacity:0;transform:translateY(-6px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes hsk-voice-pill-pop{0%{transform:scale(1)}40%{transform:scale(1.06)}100%{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.hsk-voice-pill{opacity:1;animation:none}}@media (max-width:520px){.hsk-voice-picker{gap:5px;padding:0 44px}.hsk-voice-pill{padding:5px 8px;gap:4px}}.hsk-voice-pill:hover{background:rgba(255,255,255,.95);border-color:rgba(0,0,0,.16)}.hsk-voice-pill--on:hover{background:#1c1c1c;border-color:#1c1c1c;color:#fff}.hsk-voice-pill--on{background:#1a1a1a;border-color:#1a1a1a;color:#fff}@media (prefers-color-scheme:dark){.hsk-voice-pill{border-color:rgba(255,255,255,.14);background:rgba(30,30,30,.7);color:#cfcfcf}.hsk-voice-pill:hover{background:rgba(45,45,45,.9)}.hsk-voice-pill--on:hover{background:#f2f2f2;border-color:#f2f2f2;color:#141414}.hsk-voice-pill--on{background:#f2f2f2;border-color:#f2f2f2;color:#141414}}@media (max-width:520px){.hsk-cb-input-box{gap:6px;padding:10px 10px 10px 12px}.hsk-cb-attach-btn,.hsk-cb-mic-btn,.hsk-cb-send,.hsk-cb-voice-mode-btn,.hsk-chat-send{width:32px;height:32px;border-radius:10px}.hsk-cb-textarea{flex:1 1 auto;min-width:0;font-size:16px}.hsk-cb-input-box .hsk-cb-listening{display:none}}.hsk-cb-main{position:relative}.hsk-cb-main,.hsk-voice-overlay{--hsk-doodle-ink:31,31,31;--hsk-doodle-tint:255,106,51}@keyframes hsk-doodles-shimmer-in{0%{opacity:0}100%{opacity:.9}}.hsk-cb-doodles{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.9;animation:hsk-doodles-shimmer-in .28s cubic-bezier(.16,1,.3,1) both}.hsk-cb-main>*:not(.hsk-cb-doodles){position:relative}@media (prefers-color-scheme:dark){.hsk-cb-main,.hsk-voice-overlay{--hsk-doodle-ink:240,239,237;--hsk-doodle-tint:255,150,110}}[data-hsk-theme="light"] .hsk-cb-main,[data-hsk-theme="light"] .hsk-voice-overlay{--hsk-doodle-ink:31,31,31;--hsk-doodle-tint:255,106,51}[data-hsk-theme="dark"] .hsk-cb-main,[data-hsk-theme="dark"] .hsk-voice-overlay{--hsk-doodle-ink:240,239,237;--hsk-doodle-tint:255,150,110}.hsk-cb-docked-option-price,.hsk-cb-entlang-price,.hsk-cb-src-price,.hsk-kiku-picker-item-price,.hsk-source-price,.hsk-sp-item-discount,.hsk-sp-item-original-price,.hsk-sp-item-price,.hsk-sp-mobile-main-card-price,.hsk-sp-mobile-similar-carousel-price,.hsk-voice-item-price,.hsk-live-cell{font-variant-numeric:tabular-nums}.hsk-live-wrap{margin:8px 0 2px;max-width:min(88%,560px);box-sizing:border-box}.hsk-live-carousel{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}.hsk-live-card{flex:0 1 auto;min-width:0;max-width:100%;background:var(--hsk-chat-source-bg,rgba(0,0,0,.035));border:1px solid var(--hsk-chat-divide,rgba(0,0,0,.08));border-radius:14px;padding:10px 12px;box-sizing:border-box;display:flex;flex-direction:column;gap:8px;transition:opacity .2s ease}.hsk-live-card.is-stale{opacity:.75}.hsk-live-card__header{display:flex;align-items:center;justify-content:space-between;gap:8px}.hsk-live-card__status{display:flex;align-items:center;gap:6px;min-width:0}.hsk-live-dot{width:7px;height:7px;border-radius:50%;background:#10b981;flex-shrink:0}@media (prefers-reduced-motion:no-preference){.hsk-live-dot:not(.is-stale){animation:hsk-live-pulse 2s ease-in-out infinite}}.hsk-live-dot.is-stale{background:var(--hsk-chat-muted,#9ca3af)}.hsk-live-card__title{font-size:12px;font-weight:600;color:var(--hsk-chat-text,#111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-0.01em}.hsk-live-card__meta{display:flex;align-items:center;gap:8px;flex-shrink:0}.hsk-live-card__close{font-size:11px;font-weight:500;color:var(--hsk-chat-muted,#6b7280);opacity:.85;white-space:nowrap}.hsk-live-card__age{font-size:11px;font-weight:400;color:var(--hsk-chat-muted,#6b7280);white-space:nowrap;flex-shrink:0}.hsk-live-card__pills{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.hsk-live-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;background:var(--hsk-chat-bg,#ffffff);border:1px solid var(--hsk-chat-divide,rgba(0,0,0,.08));border-radius:8px;font-size:12px;font-variant-numeric:tabular-nums;line-height:1.3;color:var(--hsk-chat-text,#111827);box-shadow:0 1px 2px rgba(0,0,0,.03)}.hsk-live-pill__label{font-weight:500;color:var(--hsk-chat-muted,#6b7280);font-size:11px;text-transform:capitalize}.hsk-live-pill__value{font-weight:650;color:var(--hsk-chat-text,#111827)}@media (prefers-reduced-motion:no-preference){.hsk-live-pill.is-changed{animation:hsk-live-pill-flash 1.2s ease-out}@keyframes hsk-live-pill-flash{0%{background:rgba(16,185,129,.25);border-color:#10b981}100%{background:var(--hsk-chat-bg,#ffffff);border-color:var(--hsk-chat-divide,rgba(0,0,0,.08))}}}@media (max-width:640px){.hsk-cb-source{flex:0 0 128px}.hsk-cb-src-imgwrap,.hsk-cb-src-imgwrap-empty{width:128px;height:128px;font-size:24px}.hsk-cb-sources{gap:10px}.hsk-cb-src-name{font-size:12px;line-height:1.35}.hsk-cb-src-price{font-size:11px;padding:1px 7px;margin-top:4px}.hsk-cb-ai-text,.hsk-live{max-width:100%;width:100%}}@media (max-width:480px){.hsk-cb-source{flex:0 0 114px}.hsk-cb-src-imgwrap,.hsk-cb-src-imgwrap-empty{width:114px;height:114px;font-size:20px}.hsk-cb-sources{gap:8px}.hsk-live{border-radius:12px;padding:2px 0 8px;margin:8px 0 2px}.hsk-live-card{flex:1 1 100%}}.hsk-cb-overlay[data-hsk-theme],[data-hsk-theme] .hsk-cb-overlay{background:var(--hsk-chat-bg) !important;color:var(--hsk-chat-text) !important}[data-hsk-theme] .hsk-cb-panel{background:transparent !important;color:var(--hsk-chat-text) !important}[data-hsk-theme] .hsk-cb-topbar-name{background:var(--hsk-surface-2) !important;color:var(--hsk-name-text,var(--hsk-chat-text)) !important;box-shadow:0 0 0 3px var(--hsk-chat-bg),0 1px 3px rgba(var(--hsk-primary-rgb),.2) !important}[data-hsk-theme] .hsk-cb-think-head{background:var(--hsk-surface-2) !important;color:var(--hsk-think-text) !important;box-shadow:0 0 0 3px var(--hsk-chat-bg),0 1px 3px rgba(var(--hsk-primary-rgb),.2) !important}[data-hsk-theme] .hsk-cb-chip,[data-hsk-theme] .hsk-cb-lang-chip,[data-hsk-theme] .hsk-action-pill{border:var(--hsk-chip-border,none) !important;background:var(--hsk-surface-1) !important;color:var(--hsk-chat-text) !important}[data-hsk-theme] .hsk-cb-chip:hover,[data-hsk-theme] .hsk-cb-lang-chip:hover,[data-hsk-theme] .hsk-action-pill:hover{background:rgba(var(--hsk-primary-rgb),.12) !important;color:var(--hsk-primary) !important}[data-hsk-theme] .hsk-cb-ai-text{background:var(--hsk-bubble-bg) !important;color:var(--hsk-chat-text) !important}[data-hsk-theme] .hsk-cb-ai-text:not(:has(~.hsk-cb-ai-text))::before{background:var(--hsk-bubble-bg) !important}[data-hsk-theme] .hsk-cb-ai-text:not(:has(~.hsk-cb-ai-text))::after{background:var(--hsk-chat-bg) !important}[data-hsk-theme] .hsk-cb-user-bubble--tail::before{background:#007aff !important}[data-hsk-theme] .hsk-cb-user-bubble--tail::after{background:var(--hsk-chat-bg) !important}[data-hsk-theme] .hsk-cb-topbar-title{color:var(--hsk-chat-text) !important}[data-hsk-theme] .hsk-cb-topbar-btn,[data-hsk-theme] .hsk-cb-back{background:var(--hsk-surface-1) !important;color:var(--hsk-chat-muted) !important}[data-hsk-theme] .hsk-cb-input-box{background:transparent !important;border:none !important;border-radius:inherit !important}[data-hsk-theme] .hsk-cb-textarea{color:var(--hsk-chat-text) !important}[data-hsk-theme] .hsk-cb-textarea::placeholder{color:var(--hsk-placeholder) !important}[data-hsk-theme] .hsk-markdown-table th{color:var(--hsk-chat-muted) !important;border-bottom:1px solid var(--hsk-chat-divide) !important}[data-hsk-theme] .hsk-markdown-table td{color:var(--hsk-chat-text) !important;border-bottom:1px solid var(--hsk-chat-divide) !important}[data-hsk-theme] .hsk-cb-kiku-id-pill{background:var(--hsk-surface-1) !important;border:none !important;box-shadow:none !important;color:var(--hsk-chat-muted) !important}[data-hsk-theme] .hsk-cb-kiku-id-pill:hover{color:var(--hsk-primary) !important}[data-hsk-theme] .hsk-cb-theme-squircle-wrap.is-open,[data-hsk-theme] .hsk-cb-topbar-ooze-menu{background:var(--hsk-surface-2) !important;box-shadow:none !important}[data-hsk-theme] .hsk-cb-theme-squircle-trigger{background:var(--hsk-surface-1) !important;color:var(--hsk-chat-text) !important;border:none !important;box-shadow:none !important}[data-hsk-theme] .hsk-cb-theme-grid-item{background:var(--hsk-grid-bg) !important;color:var(--hsk-chat-muted) !important;border:none !important;box-shadow:none !important}[data-hsk-theme] .hsk-cb-theme-grid-item.is-active{background:var(--hsk-active-bg) !important;color:var(--hsk-on-active) !important;box-shadow:none !important}[data-hsk-theme] .hsk-cb-src-name,[data-hsk-theme] .hsk-source-card__title{color:var(--hsk-src-title) !important;font-weight:650 !important}[data-hsk-theme] .hsk-cb-src-desc,[data-hsk-theme] .hsk-cb-src-detail,[data-hsk-theme] .hsk-source-card__desc{color:var(--hsk-src-desc) !important}[data-hsk-theme] .hsk-cb-src-price{background:var(--hsk-price-bg) !important;color:var(--hsk-price-text) !important;font-weight:700 !important}[data-hsk-theme] .hsk-cb-main,[data-hsk-theme] .hsk-voice-overlay{--hsk-doodle-ink:var(--hsk-ink) !important;--hsk-doodle-tint:var(--hsk-tint) !important}[data-hsk-theme] .hsk-voice-pill{background:var(--hsk-chat-input-bg) !important;border-color:var(--hsk-chat-divide) !important;color:var(--hsk-chat-muted) !important}[data-hsk-theme] .hsk-voice-pill:hover{background:var(--hsk-surface-2) !important;color:var(--hsk-chat-text) !important}[data-hsk-theme] .hsk-voice-pill--on,[data-hsk-theme] .hsk-voice-pill--on:hover{background:var(--hsk-active-bg) !important;border-color:var(--hsk-active-bg) !important;color:var(--hsk-on-active) !important}.hsk-cb-overlay[data-hsk-theme="light"],[data-hsk-theme="light"] .hsk-cb-overlay{--hsk-primary:#ff6a33 !important;--hsk-primary-rgb:255,106,51 !important;--hsk-chat-bg:#ffffff !important;--hsk-chat-text:#1f1f1f !important;--hsk-chat-muted:#5f6368 !important;--hsk-chat-divide:#e5e7eb !important;--hsk-chat-input-bg:#f3f4f6 !important;--hsk-chat-source-bg:#f9fafb !important;--hsk-fade-bg:#ffffff !important;--hsk-goo-fill:#ffffff !important;--hsk-surface-1:rgba(0,0,0,.05) !important;--hsk-surface-2:#f1f3f4 !important;--hsk-bubble-bg:#f3f4f6 !important;--hsk-think-text:#4b5563 !important;--hsk-placeholder:#757575 !important;--hsk-grid-bg:#ffffff !important;--hsk-active-bg:#1f1f1f !important;--hsk-on-active:#ffffff !important;--hsk-src-title:#111827 !important;--hsk-src-desc:#4b5563 !important;--hsk-price-bg:#f3f4f6 !important;--hsk-price-text:#ea580c !important;--hsk-sheet-bg:#f3f4f6 !important;--hsk-chip-border:1px solid rgba(0,0,0,.08) !important;--hsk-ink:55,65,81 !important;--hsk-tint:145,77,47 !important}.hsk-cb-overlay[data-hsk-theme="dark"],[data-hsk-theme="dark"] .hsk-cb-overlay{--hsk-primary:#ff6a33 !important;--hsk-primary-rgb:255,106,51 !important;--hsk-chat-bg:#0a0a0a !important;--hsk-chat-text:#f0efed !important;--hsk-chat-muted:#888888 !important;--hsk-chat-divide:rgba(255,255,255,.08) !important;--hsk-chat-input-bg:#191919 !important;--hsk-chat-source-bg:rgba(255,255,255,.04) !important;--hsk-fade-bg:#0a0a0a !important;--hsk-goo-fill:#1a1a1c !important;--hsk-surface-1:rgba(255,255,255,.06) !important;--hsk-surface-2:#1f1f22 !important;--hsk-bubble-bg:#1f1f22 !important;--hsk-think-text:#a6a6a6 !important;--hsk-placeholder:#555555 !important;--hsk-grid-bg:#1a1a1c !important;--hsk-active-bg:#f0efed !important;--hsk-on-active:#0a0a0a !important;--hsk-src-title:#f9fafb !important;--hsk-src-desc:#9ca3af !important;--hsk-price-bg:rgba(255,255,255,.08) !important;--hsk-price-text:#ff7a45 !important;--hsk-sheet-bg:#1f1f22 !important;--hsk-ink:240,239,237 !important;--hsk-tint:248,195,174 !important}.hsk-cb-overlay[data-hsk-theme="mahogany"],[data-hsk-theme="mahogany"] .hsk-cb-overlay{--hsk-primary:#e07a38 !important;--hsk-primary-rgb:224,122,56 !important;--hsk-chat-bg:#140d09 !important;--hsk-chat-text:#f6eee3 !important;--hsk-chat-muted:#a89485 !important;--hsk-chat-divide:rgba(217,140,85,.18) !important;--hsk-chat-input-bg:#211610 !important;--hsk-chat-source-bg:#1c130d !important;--hsk-fade-bg:#140d09 !important;--hsk-goo-fill:#211610 !important;--hsk-surface-1:#211610 !important;--hsk-surface-2:#2b1c14 !important;--hsk-bubble-bg:#261912 !important;--hsk-think-text:#c4b1a1 !important;--hsk-placeholder:#7a6557 !important;--hsk-grid-bg:#2b1c14 !important;--hsk-active-bg:#e07a38 !important;--hsk-on-active:#ffffff !important;--hsk-src-title:#fdf8f4 !important;--hsk-src-desc:#c4b1a1 !important;--hsk-price-bg:#2b1c14 !important;--hsk-price-text:#f59e0b !important;--hsk-sheet-bg:#211610 !important;--hsk-ink:246,238,227 !important;--hsk-tint:235,180,142 !important}.hsk-cb-overlay[data-hsk-theme="blush"],[data-hsk-theme="blush"] .hsk-cb-overlay{--hsk-primary:#ec4899 !important;--hsk-primary-rgb:236,72,153 !important;--hsk-chat-bg:#fff5f7 !important;--hsk-chat-text:#3d1424 !important;--hsk-chat-muted:#94536d !important;--hsk-chat-divide:rgba(236,72,153,.18) !important;--hsk-chat-input-bg:#ffe4ec !important;--hsk-chat-source-bg:#fff0f4 !important;--hsk-fade-bg:#fff5f7 !important;--hsk-goo-fill:#ffe4ec !important;--hsk-surface-1:#ffe4ec !important;--hsk-surface-2:#fbcfe8 !important;--hsk-bubble-bg:#ffebf1 !important;--hsk-think-text:#831843 !important;--hsk-name-text:#831843 !important;--hsk-placeholder:#b57a91 !important;--hsk-grid-bg:#fff0f4 !important;--hsk-active-bg:#ec4899 !important;--hsk-on-active:#ffffff !important;--hsk-src-title:#2b0c19 !important;--hsk-src-desc:#702648 !important;--hsk-price-bg:#fce7f3 !important;--hsk-price-text:#db2777 !important;--hsk-sheet-bg:#ffe4ec !important;--hsk-sheet-hover:#ffd2e0 !important;--hsk-ink:130,36,75 !important;--hsk-tint:175,38,97 !important}.hsk-cb-overlay[data-hsk-theme="coffee"],[data-hsk-theme="coffee"] .hsk-cb-overlay{--hsk-primary:#a9714b !important;--hsk-primary-rgb:169,113,75 !important;--hsk-chat-bg:#f7f1e8 !important;--hsk-chat-text:#3b2a1d !important;--hsk-chat-muted:#8a7561 !important;--hsk-chat-divide:rgba(169,113,75,.18) !important;--hsk-chat-input-bg:#efe4d6 !important;--hsk-chat-source-bg:#f2eade !important;--hsk-fade-bg:#f7f1e8 !important;--hsk-goo-fill:#efe4d6 !important;--hsk-surface-1:#efe4d6 !important;--hsk-surface-2:#e6d7c4 !important;--hsk-bubble-bg:#f0e7da !important;--hsk-think-text:#6b543f !important;--hsk-placeholder:#a89680 !important;--hsk-grid-bg:#f2eade !important;--hsk-active-bg:#a9714b !important;--hsk-on-active:#ffffff !important;--hsk-src-title:#2a1c11 !important;--hsk-src-desc:#6b543f !important;--hsk-price-bg:#ece0cf !important;--hsk-price-text:#9a5f32 !important;--hsk-sheet-bg:#efe4d6 !important;--hsk-sheet-hover:#e6d7c4 !important;--hsk-ink:59,42,29 !important;--hsk-tint:120,88,62 !important}.hsk-cb-overlay[data-hsk-theme="midnight"],[data-hsk-theme="midnight"] .hsk-cb-overlay{--hsk-primary:#6366f1 !important;--hsk-primary-rgb:99,102,241 !important;--hsk-chat-bg:#0f1420 !important;--hsk-chat-text:#dfe6f5 !important;--hsk-chat-muted:#8792ad !important;--hsk-chat-divide:rgba(99,102,241,.18) !important;--hsk-chat-input-bg:#1a2133 !important;--hsk-chat-source-bg:#161d2c !important;--hsk-fade-bg:#0f1420 !important;--hsk-goo-fill:#1a2133 !important;--hsk-surface-1:#1a2133 !important;--hsk-surface-2:#222b40 !important;--hsk-bubble-bg:#1e2637 !important;--hsk-think-text:#a8b3cc !important;--hsk-placeholder:#5c6780 !important;--hsk-grid-bg:#222b40 !important;--hsk-active-bg:#6366f1 !important;--hsk-on-active:#ffffff !important;--hsk-src-title:#f2f5fc !important;--hsk-src-desc:#a8b3cc !important;--hsk-price-bg:#222b40 !important;--hsk-price-text:#818cf8 !important;--hsk-sheet-bg:#1a2133 !important;--hsk-sheet-hover:#222b40 !important;--hsk-ink:223,230,245 !important;--hsk-tint:150,160,200 !important}.hsk-cb-back-icon{display:inline-flex;transition:transform .22s cubic-bezier(.22,1,.36,1)}.hsk-cb-back:hover:not(:disabled) .hsk-cb-back-icon{transform:translateX(-2px)}.hsk-cb-panel[dir="rtl"] .hsk-cb-back:hover:not(:disabled) .hsk-cb-back-icon{transform:scaleX(-1) translateX(-2px)}.hsk-cb-tools-toggle{transition:transform .26s cubic-bezier(.34,1.56,.64,1),background-color .42s cubic-bezier(.16,1,.3,1),color .42s cubic-bezier(.16,1,.3,1)}.hsk-cb-tools-toggle:hover:not(:disabled){color:var(--hsk-primary,#ff6a33);transform:rotate(90deg)}.hsk-cb-tools-toggle--open:hover:not(:disabled){transform:rotate(135deg)}.hsk-cb-tools-toggle:active:not(:disabled){transform:scale(.9);transition-duration:.1s}.hsk-cb-theme-trigger-icon{display:inline-flex;transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.hsk-cb-theme-squircle-trigger:hover .hsk-cb-theme-trigger-icon{transform:translateY(-1.5px) rotate(-8deg)}.hsk-cb-dot-item:hover:not(.hsk-cb-dot-item--active){background:var(--hsk-chat-muted,rgba(120,120,120,.6));transform:scale(1.35)}.hsk-msg-audio-btn{transition:color .18s ease,transform .22s cubic-bezier(.34,1.56,.64,1)}.hsk-msg-audio-btn:hover:not(:disabled){color:var(--hsk-primary,#ff6a33);transform:scale(1.12)}.hsk-msg-audio-btn:active:not(:disabled){transform:scale(.94);transition-duration:.1s}.hsk-markup-color{transition:transform .22s cubic-bezier(.34,1.56,.64,1),border-color .18s ease}.hsk-markup-color:hover:not(.hsk-markup-color--on){transform:scale(1.22)}.hsk-markup-color--on:hover{transform:scale(1.15)}@media (prefers-reduced-motion:reduce){.hsk-cb-back:hover:not(:disabled) .hsk-cb-back-icon,.hsk-cb-panel[dir="rtl"] .hsk-cb-back:hover:not(:disabled) .hsk-cb-back-icon,.hsk-cb-theme-squircle-trigger:hover .hsk-cb-theme-trigger-icon,.hsk-cb-dot-item:hover:not(.hsk-cb-dot-item--active),.hsk-msg-audio-btn:hover:not(:disabled),.hsk-markup-color:hover:not(.hsk-markup-color--on){transform:none}.hsk-cb-tools-toggle:hover:not(:disabled),.hsk-cb-tools-toggle--open:hover:not(:disabled){transform:none}}.hsk-voice-control{position:relative;isolation:isolate;border-radius:999px}.hsk-voice-control:not(.hsk-voice-control--muted)::before{content:'';position:absolute;inset:-1.5px;border-radius:inherit;background:conic-gradient( from 0deg,#ff3b30,#ff9500,#ffd60a,#34c759,#00c7be,#30b0c7,#007aff,#5856d6,#af52de,#ff2d55,#ff3b30 );-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 2.5px),#000 calc(100% - 2px));mask:radial-gradient(farthest-side,transparent calc(100% - 2.5px),#000 calc(100% - 2px));animation:hsk-apple-siri-spin 3s linear infinite;pointer-events:none;z-index:1}.hsk-voice-control::after{display:none !important}.hsk-voice-control-icon{will-change:transform}.hsk-voice-control:not(.hsk-voice-control--muted) .hsk-voice-control-icon{animation:hsk-apple-siri-mic-pulse 2.2s ease-in-out infinite}@keyframes hsk-apple-siri-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes hsk-apple-siri-breathe{0%,100%{transform:scale(.95);opacity:.55}50%{transform:scale(1.15);opacity:.95}}@keyframes hsk-apple-siri-mic-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}.hsk-voice-control--muted::before,.hsk-voice-control--muted::after{display:none}@media (prefers-reduced-motion:reduce){.hsk-voice-control:not(:hover):not(.hsk-voice-control--muted) .hsk-voice-control-icon,.hsk-voice-control:hover::before,.hsk-voice-control--muted::before,.hsk-voice-control--muted::after{animation:none}.hsk-voice-control:hover,.hsk-voice-control:hover .hsk-mic-cap{transform:none}}.hsk-cb-voice-error{animation:hsk-error-shake .26s cubic-bezier(.36,.07,.19,.97) both}@keyframes hsk-error-shake{0%,100%{transform:translateX(0)}22%{transform:translateX(-3px)}55%{transform:translateX(2px)}80%{transform:translateX(-1px)}}@media (prefers-reduced-motion:reduce){.hsk-cb-voice-error{animation:none}}.hsk-sun-rays,.hsk-sun-core,.hsk-moon-body,.hsk-wood-layer,.hsk-heart-body,.hsk-steam,.hsk-star-spark,.hsk-check-mark,.hsk-send-tail,.hsk-send-body{transform-box:fill-box;transform-origin:center}.hsk-sun-rays{transform-origin:12px 12px;transition:transform .5s cubic-bezier(.22,1,.36,1)}.hsk-cb-theme-grid-item:hover .hsk-sun-rays,.hsk-cb-theme-squircle-trigger:hover .hsk-sun-rays{transform:rotate(45deg)}.hsk-sun-core{transition:transform .32s cubic-bezier(.34,1.56,.64,1)}.hsk-cb-theme-grid-item:hover .hsk-sun-core,.hsk-cb-theme-squircle-trigger:hover .hsk-sun-core{transform:scale(1.14)}.hsk-moon-body{transition:transform .34s cubic-bezier(.34,1.56,.64,1)}.hsk-cb-theme-grid-item:hover .hsk-moon-body,.hsk-cb-theme-squircle-trigger:hover .hsk-moon-body{transform:rotate(-16deg)}.hsk-wood-layer{transition:transform .34s cubic-bezier(.34,1.56,.64,1)}.hsk-wood-layer{transition-delay:calc(var(--hsk-layer,0) * 45ms)}.hsk-cb-theme-grid-item:hover .hsk-wood-layer,.hsk-cb-theme-squircle-trigger:hover .hsk-wood-layer{transform:translateY(-1.2px)}.hsk-cb-theme-grid-item:hover .hsk-heart-body,.hsk-cb-theme-squircle-trigger:hover .hsk-heart-body{animation:hsk-heartbeat 1.1s ease-in-out infinite}@keyframes hsk-heartbeat{0%,100%{transform:scale(1)}14%{transform:scale(1.18)}28%{transform:scale(1)}42%{transform:scale(1.12)}56%{transform:scale(1)}}.hsk-steam{opacity:.9}.hsk-cb-theme-grid-item:hover .hsk-steam,.hsk-cb-theme-squircle-trigger:hover .hsk-steam{animation:hsk-steam-rise 1.6s ease-out infinite;animation-delay:calc(var(--hsk-steam,0) * 220ms)}@keyframes hsk-steam-rise{0%{transform:translateY(2px) scaleY(.5);opacity:0}35%{opacity:.95}100%{transform:translateY(-3px) scaleY(1.15);opacity:0}}.hsk-cb-theme-grid-item:hover .hsk-star-spark,.hsk-cb-theme-squircle-trigger:hover .hsk-star-spark{animation:hsk-twinkle 1.4s ease-in-out infinite}@keyframes hsk-twinkle{0%,100%{transform:scale(1) rotate(0deg);opacity:.85}50%{transform:scale(1.45) rotate(20deg);opacity:1}}.hsk-check-mark{stroke-dasharray:30;stroke-dashoffset:30;animation:hsk-check-draw .42s cubic-bezier(.65,0,.35,1) forwards}@keyframes hsk-check-draw{to{stroke-dashoffset:0}}.hsk-send-body,.hsk-send-tail{transition:transform .28s cubic-bezier(.22,1,.36,1)}.hsk-send-tail{transition-delay:40ms}.hsk-chat-send:hover:not(:disabled) .hsk-send-body,.hsk-cb-send:hover:not(:disabled) .hsk-send-body{transform:translate(1.5px,-1.5px)}.hsk-chat-send:hover:not(:disabled) .hsk-send-tail,.hsk-cb-send:hover:not(:disabled) .hsk-send-tail{transform:translate(2.5px,-2.5px)}@media (prefers-reduced-motion:reduce){.hsk-sun-rays,.hsk-sun-core,.hsk-moon-body,.hsk-wood-layer,.hsk-send-body,.hsk-send-tail{transition:none;transform:none !important}.hsk-cb-theme-grid-item:hover .hsk-heart-body,.hsk-cb-theme-squircle-trigger:hover .hsk-heart-body,.hsk-cb-theme-grid-item:hover .hsk-steam,.hsk-cb-theme-squircle-trigger:hover .hsk-steam,.hsk-cb-theme-grid-item:hover .hsk-star-spark,.hsk-cb-theme-squircle-trigger:hover .hsk-star-spark{animation:none}.hsk-check-mark{animation:none;stroke-dashoffset:0}}.hsk-cb-send-stage{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:visible}.hsk-cb-send-seam{position:absolute;top:50%;left:50%;width:2px;height:15px;border-radius:2px;background:currentColor;transform:translate(-50%,-50%) rotate(38deg) scaleY(0);transform-origin:center;opacity:0;pointer-events:none}.hsk-cb-send-kite{display:inline-flex;transform-origin:center;will-change:transform}.hsk-cb-send:hover:not(:disabled) .hsk-cb-send-kite{transform:translate(1.5px,-1.5px);transition:transform .26s cubic-bezier(.22,1,.36,1)}.hsk-cb-send.is-launching .hsk-cb-send-kite{animation:hsk-kite-tear .55s cubic-bezier(.22,1,.36,1) both}.hsk-cb-send.is-launching .hsk-cb-send-seam{animation:hsk-seam-heal .55s cubic-bezier(.4,0,.3,1) both}@keyframes hsk-kite-tear{0%{transform:translate(0,0) scale(1) rotate(0deg);opacity:1}18%{transform:translate(-1px,2.5px) scale(.92,1.08) rotate(-4deg);opacity:1}45%{transform:translate(3px,-16px) scale(1.2,.8) rotate(6deg);opacity:.95}75%{transform:translate(6px,-38px) scale(1.05,.7) rotate(10deg);opacity:.6}100%{transform:translate(8px,-56px) scale(.6,.4) rotate(12deg);opacity:0}}@keyframes hsk-seam-heal{0%{transform:translate(-50%,-50%) rotate(38deg) scaleY(0);opacity:0}22%{transform:translate(-50%,-50%) rotate(38deg) scaleY(1);opacity:.9}45%{transform:translate(-50%,-50%) rotate(38deg) scaleY(1.3);opacity:.8}72%{transform:translate(-50%,-50%) rotate(38deg) scaleY(.3);opacity:.35}100%{transform:translate(-50%,-50%) rotate(38deg) scaleY(0);opacity:0}}.hsk-kite-wing{transform-box:fill-box;transform-origin:100% 0}.hsk-cb-send:not(:disabled):not(.is-launching) .hsk-kite-wing--far{animation:hsk-wing-beat-far .62s ease-in-out infinite}.hsk-cb-send:not(:disabled):not(.is-launching) .hsk-kite-wing--near{animation:hsk-wing-beat-near .62s ease-in-out .07s infinite}.hsk-cb-send:not(:disabled):not(.is-launching) .hsk-cb-send-kite{animation:hsk-kite-strain 2.4s cubic-bezier(.45,0,.35,1) infinite}.hsk-cb-send:not(:disabled):not(.is-launching) .hsk-cb-send-seam{animation:hsk-seam-strain 2.4s cubic-bezier(.45,0,.35,1) infinite}@keyframes hsk-kite-strain{0%,10%{transform:translate(0,0) scale(1) rotate(0deg)}20%{transform:translate(-1.2px,2px) scale(.94,1.05) rotate(-4deg)}34%{transform:translate(3.5px,-5px) scale(1.16,.86) rotate(8deg)}42%{transform:translate(4.2px,-6px) scale(1.2,.82) rotate(9deg)}50%{transform:translate(2.4px,-3.4px) scale(1.06,.94) rotate(5deg)}64%{transform:translate(-.6px,1.2px) scale(.97,1.03) rotate(-2deg)}78%,100%{transform:translate(0,0) scale(1) rotate(0deg)}}@keyframes hsk-seam-strain{0%,22%{transform:translate(-50%,-50%) rotate(38deg) scaleY(0);opacity:0}34%{transform:translate(-50%,-50%) rotate(38deg) scaleY(.6);opacity:.34}42%{transform:translate(-50%,-50%) rotate(38deg) scaleY(.95);opacity:.5}52%{transform:translate(-50%,-50%) rotate(38deg) scaleY(.55);opacity:.3}66%,100%{transform:translate(-50%,-50%) rotate(38deg) scaleY(0);opacity:0}}@keyframes hsk-wing-beat-far{0%,100%{transform:scaleX(1) skewY(0deg)}50%{transform:scaleX(.86) skewY(-4deg)}}@keyframes hsk-wing-beat-near{0%,100%{transform:scaleX(1) skewY(0deg)}50%{transform:scaleX(1.1) skewY(3deg)}}.hsk-stop-ring{transform-box:fill-box;transform-origin:center;stroke-dasharray:22 38;opacity:.85;animation:hsk-stop-orbit 1.4s linear infinite}.hsk-stop-core{transform-box:fill-box;transform-origin:center;animation:hsk-stop-pulse 1.4s ease-in-out infinite;transition:rx .2s ease,transform .2s cubic-bezier(.34,1.56,.64,1)}.hsk-cb-send--stop:hover .hsk-stop-core{transform:scale(1.16);animation-play-state:paused}.hsk-cb-send--stop:hover .hsk-stop-ring{animation-duration:.7s}@keyframes hsk-stop-orbit{to{transform:rotate(1turn)}}@keyframes hsk-stop-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(.86);opacity:.75}}@media (prefers-reduced-motion:reduce){.hsk-cb-send.is-launching .hsk-cb-send-kite,.hsk-cb-send.is-launching .hsk-cb-send-seam,.hsk-cb-send:hover:not(:disabled) .hsk-cb-send-kite{animation:none;transform:none}}.hsk-cb-send.is-launching{overflow:visible !important}.hsk-cb-send-sheath{position:absolute;inset:-1px;background:radial-gradient(120% 90% at 32% 22%,rgba(255,255,255,.44) 0,rgba(255,255,255,0) 58%),linear-gradient(150deg,color-mix(in srgb,var(--hsk-primary,#1273e6) 72%,#ffffff) 0,var(--hsk-primary,#1273e6) 46%,color-mix(in srgb,var(--hsk-primary,#1273e6) 74%,#000000) 100%);border-radius:46% 54% 52% 48% / 50% 47% 53% 50%;box-shadow:inset 0 2px 3px rgba(255,255,255,.5),inset 0 -3px 5px color-mix(in srgb,var(--hsk-primary,#1273e6) 30%,rgba(0,0,0,.55)),0 2px 5px rgba(0,0,0,.20),0 7px 16px color-mix(in srgb,var(--hsk-primary,#1273e6) 16%,transparent);transform-origin:58% 62%;pointer-events:none;z-index:1;will-change:transform,border-radius;transition:border-radius .5s cubic-bezier(.34,1.6,.5,1),box-shadow .3s ease}.hsk-cb-send-stage{z-index:2;position:relative}.hsk-cb-send:not(:disabled):not(.is-launching) .hsk-cb-send-sheath{animation:hsk-sheath-press 2.4s cubic-bezier(.35,.8,.3,1) infinite}@keyframes hsk-sheath-press{0%,12%{transform:scale(1);border-radius:46% 54% 52% 48% / 50% 47% 53% 50%}22%{transform:scale(.94,1.08) translate(-1.4px,2.2px);border-radius:52% 48% 44% 56% / 58% 40% 60% 42%}36%{transform:scale(1.14,.87) translate(2.6px,-3.4px) rotate(2deg);border-radius:38% 66% 54% 46% / 40% 62% 38% 60%}46%{transform:scale(1.19,.83) translate(3.6px,-4.6px) rotate(2.8deg);border-radius:34% 72% 56% 44% / 36% 68% 32% 64%}58%{transform:scale(.93,1.09) translate(-1.2px,1.8px) rotate(-1.4deg);border-radius:56% 44% 42% 58% / 60% 38% 62% 40%}70%{transform:scale(1.05,.96) translate(.8px,-1px) rotate(.6deg);border-radius:44% 56% 50% 50% / 46% 54% 46% 54%}80%{transform:scale(.98,1.03);border-radius:50% 50% 48% 52% / 52% 48% 52% 48%}88%,100%{transform:scale(1);border-radius:46% 54% 52% 48% / 50% 47% 53% 50%}}.hsk-cb-send.is-launching .hsk-cb-send-sheath{animation:hsk-sheath-yield .55s cubic-bezier(.3,.7,.25,1) both}@keyframes hsk-sheath-yield{0%{transform:scale(1);border-radius:46% 54% 52% 48% / 50% 47% 53% 50%}20%{transform:scale(.88,1.14) translate(-2px,3.4px);border-radius:56% 44% 40% 60% / 64% 34% 66% 36%}45%{transform:scale(1.34,.68) translate(6px,-10px) rotate(4.6deg);border-radius:24% 86% 62% 38% / 26% 80% 20% 74%}65%{transform:scale(.86,1.16) translate(-2.2px,3.6px) rotate(-2.2deg);border-radius:60% 40% 38% 62% / 68% 30% 70% 32%}82%{transform:scale(1.06,.95) translate(1px,-1px) rotate(.8deg);border-radius:44% 56% 52% 48% / 46% 54% 46% 54%}100%{transform:scale(1);border-radius:46% 54% 52% 48% / 50% 47% 53% 50%}}.hsk-cb-send:disabled .hsk-cb-send-sheath{opacity:0}.hsk-cb-send--stop .hsk-cb-send-sheath{display:none}.hsk-cb-send:active:not(:disabled) .hsk-cb-send-sheath{box-shadow:inset 0 1px 2px rgba(255,255,255,.3),inset 0 -1px 3px color-mix(in srgb,var(--hsk-primary,#1273e6) 24%,rgba(0,0,0,.6)),0 1px 3px rgba(0,0,0,.24)}@media (prefers-reduced-motion:reduce){.hsk-cb-send:not(:disabled):not(.is-launching) .hsk-cb-send-sheath,.hsk-cb-send.is-launching .hsk-cb-send-sheath{animation:none}}.hsk-cb-send:not(.hsk-cb-send--stop):not(:disabled){background:transparent !important;box-shadow:none !important;overflow:visible !important}.hsk-cb-send:not(.hsk-cb-send--stop):not(:disabled):hover{box-shadow:none !important}.hsk-cb-send:not(:disabled):hover .hsk-cb-send-sheath{box-shadow:inset 0 2px 4px rgba(255,255,255,.58),inset 0 -3px 6px color-mix(in srgb,var(--hsk-primary,#1273e6) 28%,rgba(0,0,0,.5)),0 3px 7px rgba(0,0,0,.22),0 10px 22px color-mix(in srgb,var(--hsk-primary,#1273e6) 20%,transparent)}.hsk-cb-terms-sanctuary{display:flex;flex-direction:column;margin:18px 0 22px;width:100%;max-width:520px;text-align:start;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;border:none;border-radius:0;padding:0;box-shadow:none;opacity:0;animation:hsk-terms-delicate-in .5s cubic-bezier(.16,1,.3,1) .05s forwards}@keyframes hsk-terms-delicate-in{0%{opacity:0;transform:translateY(8px)}100%{opacity:1;transform:translateY(0)}}.hsk-cb-terms-item{display:flex;flex-direction:column;gap:4px;opacity:0;animation:hsk-terms-item-in .45s cubic-bezier(.16,1,.3,1) forwards;animation-delay:calc(var(--hsk-row-idx,0) * 60ms+80ms)}@keyframes hsk-terms-item-in{0%{opacity:0;transform:translateY(6px)}100%{opacity:1;transform:translateY(0)}}.hsk-cb-terms-head{display:flex;align-items:baseline;gap:10px}.hsk-cb-terms-numeral{font-family:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;font-style:italic;font-size:11px;font-weight:600;letter-spacing:.12em;color:var(--hsk-primary,#ff6a33);opacity:.85;flex-shrink:0;user-select:none}.hsk-cb-terms-title{margin:0;font-size:14.5px;font-weight:700;letter-spacing:-0.015em;color:var(--hsk-chat-text,#ffffff)}.hsk-cb-terms-desc{margin:0;padding-inline-start:22px;font-size:13px;line-height:1.55;color:var(--hsk-chat-muted,#9ca3af);font-weight:400}.hsk-cb-terms-divider{height:1px;margin:14px 0;background:linear-gradient( 90deg,transparent 0,color-mix(in srgb,var(--hsk-chat-text,#000000) 8%,transparent) 20%,color-mix(in srgb,var(--hsk-chat-text,#000000) 8%,transparent) 80%,transparent 100% )}.hsk-cb-terms-action-wrap{display:flex;justify-content:center;width:100%;margin-top:14px}.hsk-cb-terms-agree-btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 34px;font-size:14px;font-weight:600;border-radius:9999px;border:1px solid var(--hsk-chat-divide,rgba(255,255,255,.08));background:var(--hsk-chat-divide,rgba(255,255,255,.06));color:var(--hsk-chat-muted,rgba(255,255,255,.4));cursor:not-allowed;transition:all .3s cubic-bezier(.16,1,.3,1);letter-spacing:-0.01em}.hsk-cb-terms-agree-btn.is-active{background:#ff6a33;color:#ffffff;border-color:#ff6a33;cursor:pointer;box-shadow:0 4px 14px rgba(255,106,51,.3)}.hsk-cb-terms-agree-btn.is-active:hover{background:#e55620;border-color:#e55620;transform:translateY(-1px);box-shadow:0 6px 18px rgba(255,106,51,.38)}.hsk-cb-terms-agree-btn.is-active:active{transform:translateY(0);box-shadow:0 2px 6px rgba(255,106,51,.2)}`;var en="akropolys-kiku-root",Kt=null,ja=null;function lc(e){if(typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype)try{let t=new CSSStyleSheet;t.replaceSync(Gr),e.adoptedStyleSheets=[...e.adoptedStyleSheets,t];return}catch{}let a=document.createElement("style");a.textContent=Gr,e.appendChild(a)}function Va(){return typeof document>"u"?null:ja||(Kt=document.getElementById(en),Kt||(Kt=document.createElement("div"),Kt.id=en,Kt.style.cssText="all: initial;",document.body.appendChild(Kt)),ja=Kt.shadowRoot??Kt.attachShadow({mode:"open"}),lc(ja),ja)}var Ii=require("@akropolys/sdk");var tn=new WeakMap;function Qr(e){if(!e)return Promise.resolve(null);let a=tn.get(e);if(a)return a;let t=Promise.resolve().then(()=>e.baseFont?.()??null).catch(()=>null);return tn.set(e,t),t}function an(e,a,t){if(e&&(Qr(e),a))try{e.getUIStrings?.(a,t)?.catch?.(()=>{})}catch{}}var Xr=require("react"),xt=new Map;function dc(e){let a=e.split("?")[0].split("#")[0].split(".").pop()?.toLowerCase();return a==="woff2"?"woff2":a==="woff"?"woff":a==="otf"?"opentype":a==="ttf"?"truetype":""}function on(e){let a=e.trim();return!a||/["'()\\\s]/.test(a)||/^(javascript|vbscript):/i.test(a)?null:a}var hc=/^[Uu]\+[0-9A-Fa-f?]{1,6}(-[0-9A-Fa-f]{1,6})?$/,rn=e=>{let a=e.split(",").map(t=>t.trim()).filter(Boolean);return a.length===0||!a.every(t=>hc.test(t))?"":a.join(", ")},pc=e=>/^\d{3}( \d{3})?$/.test(e)?e:"400";function uc(e,a){(0,Xr.useEffect)(()=>{if(!e||!a||typeof document>"u")return;let t=5381;for(let o=0;o<e.length;o++)t=(t<<5)+t+e.charCodeAt(o)>>>0;let r=`hsk-font-${t.toString(36)}`;if(xt.set(e,(xt.get(e)??0)+1),!document.getElementById(r)){let o=document.createElement("style");o.id=r,o.textContent=a,document.head.appendChild(o)}return()=>{let o=(xt.get(e)??1)-1;if(o>0){xt.set(e,o);return}xt.delete(e),document.getElementById(r)?.remove()}},[e,a])}function nn(e){return e.faces.map(a=>{let t=on(a.url);return t?`@font-face{font-family:"${e.family}";font-style:normal;font-weight:${pc(a.weight)};font-display:swap;src:url(${t}) format("woff2");`+(rn(a.unicodeRange)?`unicode-range:${rn(a.unicodeRange)};`:"")+"}":""}).join("")}function Jr(e){let a=e?.faces??[],t=e&&a.length?nn(e):"";uc(t?`script|${e.family}|${a.map(r=>r.url).join("|")}`:"",t)}async function sn(e,a=1200){if(typeof document>"u"||!("fonts"in document))return;let t=nn(e);if(!t)return;let r=`script|${e.family}|${e.faces.map(n=>n.url).join("|")}`,o=5381;for(let n=0;n<r.length;n++)o=(o<<5)+o+r.charCodeAt(n)>>>0;let i=`hsk-font-${o.toString(36)}`;if(!document.getElementById(i)){let n=document.createElement("style");n.id=i,n.textContent=t,document.head.appendChild(n)}let s=document.fonts,c=e.faces.map(()=>s.load(`16px "${e.family}"`).catch(()=>{}));await Promise.race([Promise.all(c),new Promise(n=>setTimeout(n,a))])}function br(e){let a=typeof e=="object"&&e?e:void 0,t=a?.fontFamily?.split(",")[0].trim().replace(/^['"]|['"]$/g,"")??"",r=typeof a?.fontUrl=="string"?{normal:a.fontUrl}:a?.fontUrl??{},o=r.normal??"",i=r.bold??"",s=r.variable??"";(0,Xr.useEffect)(()=>{if(!t||!o&&!i&&!s)return;let c=s?[["100 900",s]]:[["400",o],["700",i]],n=[];for(let[d,b]of c){if(!b)continue;let v=on(b);if(!v)continue;let y=dc(v);n.push(`@font-face{font-family:"${t}";font-style:normal;font-weight:${d};font-display:swap;src:url(${v})${y?` format("${y}")`:""};}`)}if(n.length===0)return;let l=n.join(""),m=`${t}|${o}|${i}|${s}`,p=5381;for(let d=0;d<m.length;d++)p=(p<<5)+p+m.charCodeAt(d)>>>0;let u=`hsk-host-font-${p.toString(36)}`;if(xt.set(m,(xt.get(m)??0)+1),!document.getElementById(u)){let d=document.createElement("style");d.id=u,d.textContent=l,document.head.appendChild(d)}return()=>{let d=(xt.get(m)??1)-1;if(d>0){xt.set(m,d);return}xt.delete(m),document.getElementById(u)?.remove()}},[t,o,i,s])}var eo=ft(require("react")),Ka=[],fr=[{value:"English",native:"English",tag:"en",rtl:!1},{value:"Chinese",native:"\u4E2D\u6587",tag:"zh",rtl:!1},{value:"Spanish",native:"Espa\xF1ol",tag:"es",rtl:!1},{value:"Arabic",native:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629",tag:"ar",rtl:!0},{value:"Hindi",native:"\u0939\u093F\u0928\u094D\u0926\u0940",tag:"hi",rtl:!1},{value:"French",native:"Fran\xE7ais",tag:"fr",rtl:!1},{value:"Swahili",native:"Kiswahili",tag:"sw",rtl:!1},{value:"Portuguese",native:"Portugu\xEAs",tag:"pt",rtl:!1},{value:"Japanese",native:"\u65E5\u672C\u8A9E",tag:"ja",rtl:!1},{value:"Urdu",native:"\u0627\u0631\u062F\u0648",tag:"ur",rtl:!0}];function Zr(e){if(!e)return;let a=e.trim();if(!a)return;let t=a.toLowerCase(),r=fr.find(o=>o.value.toLowerCase()===t||o.native.toLowerCase()===t||o.tag===t);return r?r.native:a}function cn(e){for(let a of e){let t=a.codePointAt(0)??0;if(t>=1424&&t<=2303||t>=64285&&t<=65023||t>=65136&&t<=65279)return!0}return!1}var mc={english:{preparing:"Preparing in English\u2026",changeLang:"Change language",endonym:"English"},swahili:{preparing:"Inatayarisha kwa Kiswahili\u2026",changeLang:"Badilisha lugha",endonym:"Kiswahili"},french:{preparing:"Configuration en fran\xE7ais\u2026",changeLang:"Changer de langue",endonym:"Fran\xE7ais"},spanish:{preparing:"Configurando en espa\xF1ol\u2026",changeLang:"Cambiar idioma",endonym:"Espa\xF1ol"},arabic:{preparing:"\u062C\u0627\u0631\u064D \u0627\u0644\u0625\u0639\u062F\u0627\u062F \u0628\u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0639\u0631\u0628\u064A\u0629\u2026",changeLang:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0644\u063A\u0629",rtl:!0,endonym:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629"},portuguese:{preparing:"Configurando em portugu\xEAs\u2026",changeLang:"Alterar idioma",endonym:"Portugu\xEAs"},hindi:{preparing:"\u0939\u093F\u0928\u094D\u0926\u0940 \u092E\u0947\u0902 \u0924\u0948\u092F\u093E\u0930 \u0915\u093F\u092F\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948\u2026",changeLang:"\u092D\u093E\u0937\u093E \u092C\u0926\u0932\u0947\u0902",endonym:"\u0939\u093F\u0928\u094D\u0926\u0940"},chinese:{preparing:"\u6B63\u5728\u51C6\u5907\u4E2D\u6587\u73AF\u5883\u2026",changeLang:"\u66F4\u6539\u8BED\u8A00",endonym:"\u4E2D\u6587"},urdu:{preparing:"\u0627\u0631\u062F\u0648 \u0645\u06CC\u06BA \u062A\u06CC\u0627\u0631\u06CC \u062C\u0627\u0631\u06CC \u06C1\u06D2\u2026",changeLang:"\u0632\u0628\u0627\u0646 \u062A\u0628\u062F\u06CC\u0644 \u06A9\u0631\u06CC\u06BA",rtl:!0,endonym:"\u0627\u0631\u062F\u0648"},japanese:{preparing:"\u65E5\u672C\u8A9E\u3092\u8A2D\u5B9A\u4E2D\u2026",changeLang:"\u8A00\u8A9E\u3092\u5909\u66F4",endonym:"\u65E5\u672C\u8A9E"},german:{preparing:"Wird auf Deutsch eingerichtet\u2026",changeLang:"Sprache \xE4ndern",endonym:"Deutsch"},italian:{preparing:"Configurazione in italiano\u2026",changeLang:"Cambia lingua",endonym:"Italiano"},russian:{preparing:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u043D\u0430 \u0440\u0443\u0441\u0441\u043A\u043E\u043C\u2026",changeLang:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u044F\u0437\u044B\u043A",endonym:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439"},korean:{preparing:"\uD55C\uAD6D\uC5B4\uB85C \uC124\uC815 \uC911\u2026",changeLang:"\uC5B8\uC5B4 \uBCC0\uACBD",endonym:"\uD55C\uAD6D\uC5B4"},turkish:{preparing:"T\xFCrk\xE7e olarak haz\u0131rlan\u0131yor\u2026",changeLang:"Dili de\u011Fi\u015Ftir",endonym:"T\xFCrk\xE7e"},vietnamese:{preparing:"\u0110ang thi\u1EBFt l\u1EADp b\u1EB1ng Ti\u1EBFng Vi\u1EC7t\u2026",changeLang:"\u0110\u1ED5i ng\xF4n ng\u1EEF",endonym:"Ti\u1EBFng Vi\u1EC7t"},indonesian:{preparing:"Menyiapkan dalam Bahasa Indonesia\u2026",changeLang:"Ubah bahasa",endonym:"Bahasa Indonesia"},polish:{preparing:"Przygotowywanie w j\u0119zyku polskim\u2026",changeLang:"Zmie\u0144 j\u0119zyk",endonym:"Polski"},dutch:{preparing:"Instellen in het Nederlands\u2026",changeLang:"Taal wijzigen",endonym:"Nederlands"},thai:{preparing:"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E40\u0E1B\u0E47\u0E19\u0E20\u0E32\u0E29\u0E32\u0E44\u0E17\u0E22\u2026",changeLang:"\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E20\u0E32\u0E29\u0E32",endonym:"\u0E44\u0E17\u0E22"},bengali:{preparing:"\u09AC\u09BE\u0982\u09B2\u09BE\u09AF\u09BC \u09AA\u09CD\u09B0\u09B8\u09CD\u09A4\u09C1\u09A4 \u0995\u09B0\u09BE \u09B9\u099A\u09CD\u099B\u09C7\u2026",changeLang:"\u09AD\u09BE\u09B7\u09BE \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09A8 \u0995\u09B0\u09C1\u09A8",endonym:"\u09AC\u09BE\u0982\u09B2\u09BE"},tamil:{preparing:"\u0BA4\u0BAE\u0BBF\u0BB4\u0BBF\u0BB2\u0BCD \u0BA4\u0BAF\u0BBE\u0BB0\u0BCD \u0B9A\u0BC6\u0BAF\u0BCD\u0BAF\u0BAA\u0BCD\u0BAA\u0B9F\u0BC1\u0B95\u0BBF\u0BB1\u0BA4\u0BC1\u2026",changeLang:"\u0BAE\u0BCA\u0BB4\u0BBF\u0BAF\u0BC8 \u0BAE\u0BBE\u0BB1\u0BCD\u0BB1\u0BB5\u0BC1\u0BAE\u0BCD",endonym:"\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD"},telugu:{preparing:"\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41\u0C32\u0C4B \u0C38\u0C3F\u0C26\u0C4D\u0C27\u0C02 \u0C1A\u0C47\u0C38\u0C4D\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",changeLang:"\u0C2D\u0C3E\u0C37\u0C28\u0C41 \u0C2E\u0C3E\u0C30\u0C4D\u0C1A\u0C02\u0C21\u0C3F",endonym:"\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41"},persian:{preparing:"\u062F\u0631 \u062D\u0627\u0644 \u0622\u0645\u0627\u062F\u0647\u200C\u0633\u0627\u0632\u06CC \u0628\u0647 \u0632\u0628\u0627\u0646 \u0641\u0627\u0631\u0633\u06CC\u2026",changeLang:"\u062A\u063A\u06CC\u06CC\u0631 \u0632\u0628\u0627\u0646",rtl:!0,endonym:"\u0641\u0627\u0631\u0633\u06CC"},farsi:{preparing:"\u062F\u0631 \u062D\u0627\u0644 \u0622\u0645\u0627\u062F\u0647\u200C\u0633\u0627\u0632\u06CC \u0628\u0647 \u0632\u0628\u0627\u0646 \u0641\u0627\u0631\u0633\u06CC\u2026",changeLang:"\u062A\u063A\u06CC\u06CC\u0631 \u0632\u0628\u0627\u0646",rtl:!0,endonym:"\u0641\u0627\u0631\u0633\u06CC"},greek:{preparing:"\u03A1\u03CD\u03B8\u03BC\u03B9\u03C3\u03B7 \u03C3\u03C4\u03B1 \u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC\u2026",changeLang:"\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03B3\u03BB\u03CE\u03C3\u03C3\u03B1\u03C2",endonym:"\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC"},hebrew:{preparing:"\u05DE\u05D2\u05D3\u05D9\u05E8 \u05D1\u05E2\u05D1\u05E8\u05D9\u05EA\u2026",changeLang:"\u05E9\u05E0\u05D4 \u05E9\u05E4\u05D4",rtl:!0,endonym:"\u05E2\u05D1\u05E8\u05D9\u05EA"},swedish:{preparing:"St\xE4ller in p\xE5 svenska\u2026",changeLang:"Byt spr\xE5k",endonym:"Svenska"},kikuyu:{preparing:"G\u0129k\u0169y\u0169 g\u0129g\u0129thondekwo\u2026",changeLang:"Cenjia r\u0169thiomi",endonym:"G\u0129k\u0169y\u0169"},gikuyu:{preparing:"G\u0129k\u0169y\u0169 g\u0129g\u0129thondekwo\u2026",changeLang:"Cenjia r\u0169thiomi",endonym:"G\u0129k\u0169y\u0169"},akan:{preparing:"Y\u025Bresiesie w\u0254 Akan mu\u2026",changeLang:"Sesa kasa",endonym:"Akan"},twi:{preparing:"Y\u025Bresiesie w\u0254 Twi mu\u2026",changeLang:"Sesa kasa",endonym:"Twi"},yoruba:{preparing:"Ngbaradi ni \xC8d\xE8 Yor\xF9b\xE1\u2026",changeLang:"Yi ede pada",endonym:"\xC8d\xE8 Yor\xF9b\xE1"},amharic:{preparing:"\u1260\u12A0\u121B\u122D\u129B \u1260\u1218\u12D8\u130B\u1300\u1275 \u120B\u12ED\u2026",changeLang:"\u124B\u1295\u124B \u1240\u12ED\u122D",endonym:"\u12A0\u121B\u122D\u129B"},somali:{preparing:"Diyaarinta af Soomaali\u2026",changeLang:"Beddel luqadda",endonym:"Af-Soomaali"},hausa:{preparing:"Shirya cikin Hausa\u2026",changeLang:"Canja harshe",endonym:"Hausa"},zulu:{preparing:"Ilungiselela ngesiZulu\u2026",changeLang:"Shintsha ulimi",endonym:"isiZulu"},oromo:{preparing:"Afaan Oromootiin qophaa'aa jira\u2026",changeLang:"Afaan jijjiiri",endonym:"Afaan Oromoo"},luganda:{preparing:"Tuteekateeka mu Oluganda\u2026",changeLang:"Kyusa olulimi",endonym:"Oluganda"}};function ln(e){let a=e.trim();return a?a.charAt(0).toUpperCase()+a.slice(1):"\u2026"}function Oa(e){if(!e)return{nativeName:"\u2026",preparing:"Preparing\u2026",changeLang:"\u2190",rtl:!1,known:!0};let a=e.trim().toLowerCase(),t=Object.entries(mc).find(([s,c])=>s===a||c.endonym?.toLowerCase()===a||Zr(s)?.toLowerCase()===a);if(t)return{nativeName:t[1].endonym||Zr(e)||ln(e),preparing:t[1].preparing,changeLang:t[1].changeLang,rtl:!!t[1].rtl||cn(t[1].preparing),known:!0};let r=Zr(e)||e,o=ln(r),i=cn(o);return{nativeName:o,preparing:`Preparing in ${o}\u2026`,changeLang:i?"\u062A\u063A\u064A\u064A\u0631":"Change",rtl:i,known:!1}}var gr=[{name:"Puck",label:"Puck",gender:"male"},{name:"Charon",label:"Charon",gender:"male"},{name:"Kore",label:"Kore",gender:"female"},{name:"Aoede",label:"Aoede",gender:"female"}],to="hsk-live-voice",aa={langPlaceholder:"Type your preferred language\u2026",nameStepTitle:"Nice to meet you.",nameStepLead:"I can search, visualize, or capture anything for you \u2014 on this site or any other.",nameStepAsk:"What should I call you?",namePlaceholder:"Type your name\u2026",attachImage:"Attach a photo",vizUnavailable:"The preview could not be loaded.",vizDisclaimerImage:"Generated using Artificial Intelligence \u2014 colours, size and placement may differ from the real product.",vizDisclaimerVideo:"Generated using Artificial Intelligence \u2014 colours, size and movement may differ from the real product.",calcDisclaimer:"This is a calculation from live figures, not a guarantee \u2014 the market can move against it.",staleTitle:"No longer available",staleRemoved:"{title} has been removed and is no longer on offer.",staleUnavailable:"{title} is currently unavailable.",keyPastePrompt:"Paste your public id \u2014 or create one",keyPastePlaceholder:"your public id\u2026",keyUseMine:"Use my id",keyCreating:"Creating\u2026",keyCreateNew:"I'm new \u2014 create one",keySecretTitle:"Your secret \u2014 shown only once",keyDismiss:"Dismiss",keyCopySecret:"Copy secret",keyCopied:"Copied",keySecretHint:"Keep it private \u2014 use it to unlock your memory.",keyPublicTitle:"Your public id",keyCopyId:"Copy id",keyPublicHint:"Paste this on any site to save to the same memory.",keyAutoHide:"Hides automatically in {seconds}s.",greetReturning:"Hi, {name}.",greetReturningLead:"What can I find for you today?",howShouldResultsLook:"How should results look?",entityLangIntro:"I reply in {lang}. Product names stay as this site lists them \u2014 the details can too, or be translated.",asWritten:"As written",inLanguage:"In {lang}",namesAsWritten:"Details exactly as the site lists them.",detailsTranslated:"Details translated. Numbers and links stay exactly as listed.",entityLangPlaceholder:"Pick one of the two cards above\u2026",termsStepTitle:"Privacy & Terms of Use",termsStepSubtitle:"Transparent, anonymous, and zero-PII by design.",termsPiiTitle:"Zero PII Collection",termsPiiDesc:"We never collect or store personal identifying information (no emails, phone numbers, or real-world identities) from your chats or voice sessions.",termsSessionTitle:"Anonymous Session Tokens",termsSessionDesc:"Your session uses an anonymous client-side token solely to maintain context. It is never linked to your real identity.",termsMemoryTitle:"Ephemeral Chats vs. Mimi Vault",termsMemoryDesc:'Regular chats are ephemeral \u2014 closing the tab or clicking "Clear Chat" terminates them forever. Items you save with "@kiku" are encrypted and can be unlocked at mimi.akropolys.cloud with your Secret Access Key.',termsCookieTitle:"Host Website Telemetry",termsCookieDesc:"The host website where Kiku is embedded may collect cookies and analytics per their own cookie policy, outside Kiku's control.",termsAgreeButton:"Agree & Continue",termsAgreeCounting:"Agree & Continue ({seconds}s)",termsPlaceholder:"Please review and accept our Privacy & Terms above\u2026",allSet:"You're all set, {name}.",replyingTranslated:"Replying in {lang}, results translated too. Ask me anything.",replyingOriginal:"Replying in {lang}, results as this site wrote them. Ask me anything.",defaultPlaceholder:"Ask me anything\u2026",footerHint:"kiku \xB7 searches the whole catalogue in real time",voiceListening:"Listening\u2026 tap the mic to stop",voiceSending:"Got it \u2014 sending\u2026",voiceModeStart:"Hands-free conversation",voiceModeExit:"Leave hands-free",voicePhaseListening:"Listening",voicePhaseThinking:"Thinking",voicePhaseSpeaking:"Speaking",voiceHint:"Just talk \u2014 I'll answer when you pause.",voiceMuted:"Muted",voiceMutedHint:"Tap the microphone to speak again.",micDenied:"Microphone blocked. Allow mic access for this site, then try again.",micInsecure:"Voice needs a secure (https) connection.",micMissing:"No microphone found.",micLangUnsupported:"This browser cannot transcribe that language yet. Type instead.",micNetwork:"Couldn't reach voice. Try again in a moment.",voiceUnavailable:"Voice is unavailable right now. Try again in a moment.",voiceLimitReached:"You've used up today's voice time. It resets in a day \u2014 chat still works.",voiceSiteLimit:"Voice is out of allowance on this site for now. Chat still works.",voicePickerLabel:"Choose a voice",micNoSpeech:"Didn't catch anything. Try again, a little closer to the mic.",micFailed:"Couldn't hear that. Try again.",clearChat:"Clear chat",thinking:"Thinking",thoughtForSeconds:"Thought for {duration}",thoughtProcess:"Thought process",captureAndRemember:"kiku \u2014 capture & remember",captureCurrentPage:"Capture current page",captureAll:"Capture all ({count})",whatHaveYouSaved:"What have you saved?",deleteThis:"Delete this",errShopperReplyLimit:"You've reached this site's reply limit for your account.",errAccessRevoked:"Your access to the assistant has been revoked by the store.",errAccountRequired:"Please create an account to continue using the chat assistant.",errStreamInterrupted:"The reply was interrupted. Please try again.",errNetwork:"The assistant couldn't respond just now \u2014 please try again in a moment.",errGeneric:"Something went wrong. Please try again.",vizWorking:"Visualizing\u2026",vizMarkEdit:"Mark & edit",markupTitle:"Mark where you want the change",markupCancel:"Cancel",markupSketch:"Sketch",markupText:"Text",markupEraser:"Eraser",markupUndo:"Undo",markupClear:"Clear",markupSend:"Send",markupTextHint:"Type, then Enter",markupInstruction:"Describe the change \u2014 e.g. add the sofa here",markupDialogLabel:"Mark up image",markupColorLabel:"Colour {colour}",markupError:"Couldn't process this image \u2014 try a newer visualization.",markupLoadError:"This image can't be edited here.",markupLoading:"Loading image\u2026",markupApplyMarks:"Apply the change I marked on the image.",openMemory:"Open my memory on mimi",errTooManyRequests:"The assistant is currently receiving too many requests. Please try again in a few moments.",errTokenLimit:"You've reached your usage limit. Please update your billing limits in your dashboard to continue.",statusSent:"Sent",statusStopped:"Sent \xB7 reply stopped",queuedWaiting:"Queued",queuedSendNow:"Send now",jumpToLatest:"Scroll to latest",timelineLabel:"Questions in this conversation",voiceConnecting:"Connecting \u2014 wait for the tone before speaking",stoppedByYou:"You stopped this response.",stoppedInterrupted:"This response was interrupted.",continueGenerating:"Continue generating",generateResponse:"Generate response",pillCompareTop2:"Compare top 2",pillCompareTop2Query:"Compare the {a} and {b}",pillMoreOn:"More on {name}",pillMoreOnQuery:"Tell me more about the {name}",pillUnder:"Under {amount}",pillUnderQuery:"Show me options under {amount}",pillSimilarOptions:"Similar options",pillSimilarOptionsQuery:"Show me more like the {name}",pillWhichBest:"Which is best?",pillWhichBestQuery:"Which one would you recommend and why?",pillFindAlternatives:"Find alternatives",pillFindAlternativesQuery:"What are good alternatives to the {name}?",pillShowPopular:"Show popular items",pillShowPopularQuery:"What are your most popular items?",pillRecommend:"Recommend something",pillRecommendQuery:"What do you recommend for me?",cardClickAnswer:"The {name}",cardClickQuery:"Tell me more about the {name}{price} \u2014 what are its key details, who is it best suited for, and what should I know?",displayCapture:"capture {name}",displayCaptureAll:"capture all ({count} items)",displayViewHistory:"what have you saved?",displayDelete:"delete this"},ao=eo.default.createContext((e,a)=>{let t=aa[e];if(a)for(let[r,o]of Object.entries(a))t=t.split(`{${r}}`).join(o);return t}),Ot=()=>eo.default.useContext(ao);function hn(e){let a=e.trim();if(!a||a.length>40||a.includes("?"))return null;a=a.replace(/^(hi|hey|hello|yo)[,!.\s]+/i,""),a=a.replace(/^(i['’]?m|im|my name is|call me|it['’]?s|this is|name['’]?s)\s+/i,""),a=a.trim().replace(/[.!,]+$/,"");let t=a.split(/\s+/);if(t.length===0||t.length>3||!/^[\p{L}][\p{L}\-'’ ]{0,30}$/u.test(a))return null;let r=a.toLowerCase();if(["phone","laptop","tv","cheap","best","under","buy","search","find","show","need","want","price","sofa","shoe","headphone","camera","gift","help"].some(s=>r.includes(s)))return null;let i=t[0];return i.charAt(0).toUpperCase()+i.slice(1)}var dn={shopper_reply_limit:"errShopperReplyLimit",RATE_LIMIT_EXCEEDED:"errShopperReplyLimit",access_revoked:"errAccessRevoked",account_required:"errAccountRequired",stream_interrupted:"errStreamInterrupted"};var pn=(e,a)=>{let t=e&&typeof e=="object"?e.code:void 0;if(t&&dn[t])return a(dn[t]);let r="";if(typeof e=="string")r=e;else if(e&&typeof e=="object"&&e.message)r=e.message;else try{r=JSON.stringify(e)}catch{r=String(e)}let o=r.toLowerCase();if(o.includes("429")||o.includes("too many requests")||o.includes("requests per minute limit exceeded")||o.includes("too_many_requests_error")||o.includes("request_quota_exceeded")||o.includes("quota"))return a("errTooManyRequests");if(o.includes("token limit"))return a("errTokenLimit");if(o.includes("failed to fetch")||o.includes("networkerror")||o.includes("request failed"))return a("errNetwork");if(r)try{console.warn("[kiku] untranslated error:",r)}catch{}return a("errGeneric")},un=()=>typeof window>"u"||window.isSecureContext!==!1,ro=15;var se=ft(require("react"));var U=require("react/jsx-runtime"),kc=({className:e,size:a=18,tight:t=!1})=>(0,U.jsx)("svg",{className:ae("hsk-brand-mark",e),width:a,height:a,viewBox:t?"10.2 17.4 79.5 79.5":"0 0 100 100",xmlns:"http://www.w3.org/2000/svg","aria-label":"kiku",children:(0,U.jsxs)("g",{transform:"translate(22.7 19) scale(0.62)",fill:"currentColor",fillRule:"evenodd",children:[(0,U.jsx)("path",{d:"M39.4 10.4 Q44 0 48.6 10.4 L86.1 95.8 Q88 100 83.4 100 L4.6 100 Q0 100 1.9 95.8 Z M24 100 L24 65 Q24 60 27.4 56.3 Q44 38 60.6 56.3 Q64 60 64 65 L64 100 Z"}),(0,U.jsx)("circle",{cx:"55",cy:"82",r:"3.4"})]})}),ut=kc,mn=()=>(0,U.jsxs)("svg",{className:"hsk-stop-icon",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",children:[(0,U.jsx)("circle",{className:"hsk-stop-ring",cx:"12",cy:"12",r:"9.5",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"}),(0,U.jsx)("rect",{className:"hsk-stop-core",x:"8.5",y:"8.5",width:"7",height:"7",rx:"1.8",fill:"currentColor"})]});var kn=()=>(0,U.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),(0,U.jsx)("polyline",{points:"15 3 21 3 21 9"}),(0,U.jsx)("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),bn=()=>(0,U.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"currentColor",children:(0,U.jsx)("path",{d:"M8 5v14l11-7z"})}),vr=()=>(0,U.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,U.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),yr=()=>(0,U.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,U.jsx)("path",{d:"m15 18-6-6 6-6"})}),fn=()=>(0,U.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,U.jsx)("path",{d:"m9 18 6-6-6-6"})}),gn=()=>(0,U.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}),(0,U.jsx)("path",{d:"M3 3v5h5"}),(0,U.jsx)("path",{d:"M12 7v5l4 2"})]}),xr=()=>(0,U.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,U.jsx)("path",{d:"M19 21 12 16l-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"})}),vn=()=>(0,U.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("path",{d:"M3 6h18"}),(0,U.jsx)("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]});var yn=()=>(0,U.jsx)("svg",{width:"19",height:"19",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:(0,U.jsx)("path",{d:"M12 5v14M5 12h14"})}),oo=()=>(0,U.jsx)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,U.jsx)("path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"})}),xn=({size:e=13}={})=>(0,U.jsxs)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("rect",{className:"hsk-copy-sheet",x:"9",y:"9",width:"13",height:"13",rx:"2"}),(0,U.jsx)("path",{className:"hsk-copy-back",d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),wn=({size:e=13}={})=>(0,U.jsx)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,U.jsx)("polyline",{className:"hsk-check-mark",points:"20 6 9 17 4 12"})}),va=({className:e,size:a=18}={})=>(0,U.jsxs)("svg",{className:e,width:a,height:a,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("path",{className:"hsk-mic-cap",d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3z"}),(0,U.jsx)("path",{d:"M19 10v2a7 7 0 0 1-14 0v-2"}),(0,U.jsx)("line",{x1:"12",y1:"19",x2:"12",y2:"22"})]}),wr=()=>(0,U.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("line",{x1:"2",y1:"2",x2:"22",y2:"22"}),(0,U.jsx)("path",{d:"M18.89 13.23A7.12 7.12 0 0 0 19 12v-2"}),(0,U.jsx)("path",{d:"M5 10v2a7 7 0 0 0 12 5"}),(0,U.jsx)("path",{d:"M15 9.34V5a3 3 0 0 0-5.68-1.33"}),(0,U.jsx)("path",{d:"M9 9v3a3 3 0 0 0 5.12 2.12"}),(0,U.jsx)("line",{x1:"12",y1:"19",x2:"12",y2:"22"})]}),no=({active:e})=>(0,U.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("path",{className:"hsk-wave-bar hsk-wave-bar--tip",style:{"--hsk-bar":0,"--hsk-amp":1.9,"--hsk-period":"1.24s"},d:"M2 12h2"}),(0,U.jsx)("path",{className:"hsk-wave-bar",style:{"--hsk-bar":1,"--hsk-amp":1.78,"--hsk-period":"0.94s"},d:"M6 8v8"}),(0,U.jsx)("path",{className:"hsk-wave-bar",style:{"--hsk-bar":2,"--hsk-amp":1.26,"--hsk-period":"1.42s"},d:"M10 4v16"}),(0,U.jsx)("path",{className:"hsk-wave-bar",style:{"--hsk-bar":3,"--hsk-amp":1.62,"--hsk-period":"1.08s"},d:"M14 7v10"}),(0,U.jsx)("path",{className:"hsk-wave-bar",style:{"--hsk-bar":4,"--hsk-amp":2.05,"--hsk-period":"0.86s"},d:"M18 9v6"}),(0,U.jsx)("path",{className:"hsk-wave-bar hsk-wave-bar--tip",style:{"--hsk-bar":5,"--hsk-amp":1.9,"--hsk-period":"1.32s"},d:"M22 12h-2"})]}),Sn=()=>(0,U.jsxs)("svg",{className:"hsk-telegram-icon",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("polygon",{className:"hsk-kite-wing hsk-kite-wing--far",points:"22 2 11 13 2 9"}),(0,U.jsx)("polygon",{className:"hsk-kite-wing hsk-kite-wing--near",points:"22 2 15 22 11 13"}),(0,U.jsx)("line",{className:"hsk-kite-spine",x1:"22",y1:"2",x2:"11",y2:"13"})]}),Cn=()=>(0,U.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("circle",{className:"hsk-sun-core",cx:"12",cy:"12",r:"5"}),(0,U.jsxs)("g",{className:"hsk-sun-rays",children:[(0,U.jsx)("line",{x1:"12",y1:"1",x2:"12",y2:"3"}),(0,U.jsx)("line",{x1:"12",y1:"21",x2:"12",y2:"23"}),(0,U.jsx)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"}),(0,U.jsx)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"}),(0,U.jsx)("line",{x1:"1",y1:"12",x2:"3",y2:"12"}),(0,U.jsx)("line",{x1:"21",y1:"12",x2:"23",y2:"12"}),(0,U.jsx)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"}),(0,U.jsx)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"})]})]}),Mn=()=>(0,U.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,U.jsx)("path",{className:"hsk-moon-body",d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})}),Nn=()=>(0,U.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("path",{className:"hsk-wood-layer",style:{"--hsk-layer":0},d:"M12 2L2 7l10 5 10-5-10-5z"}),(0,U.jsx)("path",{className:"hsk-wood-layer",style:{"--hsk-layer":2},d:"M2 17l10 5 10-5"}),(0,U.jsx)("path",{className:"hsk-wood-layer",style:{"--hsk-layer":1},d:"M2 12l10 5 10-5"})]}),Tn=()=>(0,U.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,U.jsx)("path",{className:"hsk-heart-body",d:"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"})}),Rn=()=>(0,U.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("path",{d:"M17 8h1a4 4 0 1 1 0 8h-1"}),(0,U.jsx)("path",{d:"M3 8h14v9a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4z"}),(0,U.jsx)("line",{className:"hsk-steam",style:{"--hsk-steam":0},x1:"6",y1:"1",x2:"6",y2:"4"}),(0,U.jsx)("line",{className:"hsk-steam",style:{"--hsk-steam":1},x1:"10",y1:"1",x2:"10",y2:"4"}),(0,U.jsx)("line",{className:"hsk-steam",style:{"--hsk-steam":2},x1:"14",y1:"1",x2:"14",y2:"4"})]}),zn=()=>(0,U.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("path",{d:"M12 3a6.5 6.5 0 0 0 9 9 9 9 0 1 1-9-9z"}),(0,U.jsx)("path",{className:"hsk-star-spark",d:"M18.5 2.5l.6 1.6 1.6.6-1.6.6-.6 1.6-.6-1.6-1.6-.6 1.6-.6z"})]});var Pn=({size:e=11})=>(0,U.jsxs)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.6",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,U.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]});var ra=[{id:"light",label:"Silver",Icon:Cn,dark:!1},{id:"dark",label:"Onyx",Icon:Mn,dark:!0},{id:"mahogany",label:"Mahogany",Icon:Nn,dark:!0},{id:"blush",label:"Blush",Icon:Tn,dark:!1},{id:"coffee",label:"Coffee",Icon:Rn,dark:!1},{id:"midnight",label:"Midnight",Icon:zn,dark:!0}],io="dark",Ln="light";function so(e){return typeof e=="string"&&ra.some(a=>a.id===e)}function co(e){return ra.find(a=>a.id===e)??ra[0]}var Rr=require("@akropolys/sdk"),Li=require("@akropolys/sdk");var Sr=require("react");function bc(e,a,t=.55){return a<=0?0:e*a*t/(a+t*Math.abs(e))}function fc({stiffness:e=500,damping:a=45,onFrame:t,onRest:r}){let o=0,i=0,s=0,c=null,n=0,l=p=>{let u=Math.min(.032,(p-n)/1e3)||.016666666666666666;n=p;let d=Math.max(1,Math.ceil(u/.008)),b=u/d;for(let v=0;v<d;v++){let y=-e*(o-s)-a*i;i+=y*b,o+=i*b}if(Math.abs(o-s)<.5&&Math.abs(i)<.5){o=s,i=0,c=null,t(o),r?.();return}t(o),c=requestAnimationFrame(l)},m=()=>{c===null&&(n=performance.now(),c=requestAnimationFrame(l))};return{track(p){c!==null&&(cancelAnimationFrame(c),c=null),o=p,i=0,t(o)},to(p,u=0){s=p,i=u,m()},get value(){return o},stop(){c!==null&&(cancelAnimationFrame(c),c=null)}}}function An({panel:e,scroller:a,onDismiss:t,quiescent:r,enabled:o=!0}){let i=(0,Sr.useRef)(t);i.current=t,(0,Sr.useEffect)(()=>{if(!o)return;let s=e();if(!s||typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches)return;let c=!1,n=0,l=0,m=0,p=-1,u=0,d=0,b=0,v=!1,y=!1,C=fc({onFrame:x=>{s.style.transform=x===0?"":`translate3d(0, ${x}px, 0)`;let Q=s.parentElement;Q&&(Q.style.opacity=x===0?"":String(Math.max(.35,1-x/(s.offsetHeight||1)*1.1)))},onRest:()=>{s.style.willChange="",y&&(y=!1,i.current())}}),L=()=>{let x=a();return x&&x.scrollTop>0?!1:r?r():!0},f=x=>{x.pointerType==="mouse"||!x.isPrimary||(c=!1,v=!1,p=x.pointerId,n=u=x.clientY,l=x.clientX,d=x.timeStamp,b=0,m=C.value)},N=x=>{if(x.pointerId!==p)return;let Q=x.clientY-n,S=x.clientX-l;if(!v){if(Math.abs(Q)<6&&Math.abs(S)<6)return;if(v=!0,c=Q>0&&Math.abs(Q)>Math.abs(S)&&L(),c){try{s.setPointerCapture(x.pointerId)}catch{}C.stop(),s.style.animation="none",s.style.willChange="transform"}}if(!c)return;let $=x.timeStamp-d;$>0&&(b=(x.clientY-u)/$*1e3),u=x.clientY,d=x.timeStamp;let _=m+Q;C.track(_<0?-bc(-_,s.offsetHeight||1):_),x.cancelable&&x.preventDefault()},T=x=>{if(x.pointerId!==p)return;try{s.hasPointerCapture(x.pointerId)&&s.releasePointerCapture(x.pointerId)}catch{}if(p=-1,!c)return;c=!1;let Q=s.offsetHeight||1;C.value+b*.12>Q*.3||b>900?(y=!0,s.style.pointerEvents="none",C.to(Q,b)):C.to(0,b)};return s.addEventListener("pointerdown",f,{passive:!0}),s.addEventListener("pointermove",N,{passive:!1}),s.addEventListener("pointerup",T,{passive:!0}),s.addEventListener("pointercancel",T,{passive:!0}),()=>{C.stop(),s.removeEventListener("pointerdown",f),s.removeEventListener("pointermove",N),s.removeEventListener("pointerup",T),s.removeEventListener("pointercancel",T),s.style.transform="",s.style.willChange="",s.style.animation="",s.style.pointerEvents="";let x=s.parentElement;x&&(x.style.opacity="")}},[o,e,a,r])}var qe=require("react");var In=(e,a)=>Math.hypot(e.x-a.x,e.y-a.y);function gc(e){let a=0;for(let t=1;t<e.length;t++)a+=In(e[t-1],e[t]);return a}function En(e){let a=1/0,t=1/0,r=-1/0,o=-1/0;for(let i of e)i.x<a&&(a=i.x),i.y<t&&(t=i.y),i.x>r&&(r=i.x),i.y>o&&(o=i.y);return{minX:a,minY:t,maxX:r,maxY:o}}var ya=e=>Math.max(0,Math.min(1e3,Math.round(e)));function Dn(e,a,t){return[ya(e.minY/t*1e3),ya(e.minX/a*1e3),ya(e.maxY/t*1e3),ya(e.maxX/a*1e3)]}function vc(e,a){let[t,r,o,i]=e,[s,c,n,l]=a,m=Math.min(i,l)-Math.max(r,c),p=Math.min(o,n)-Math.max(t,s);if(m<=0||p<=0)return!1;let u=Math.min((i-r)*(o-t),(l-c)*(n-s));return u>0&&m*p/u>.35}var yc=(e,a)=>[Math.min(e[0],a[0]),Math.min(e[1],a[1]),Math.max(e[2],a[2]),Math.max(e[3],a[3])];function xc(e,a,t){if(e.length<2)return null;let r=En(e),o=Dn(r,a,t),i=Math.hypot(r.maxX-r.minX,r.maxY-r.minY);if(i<4)return null;let s=gc(e),c=In(e[0],e[e.length-1]),n=s/Math.max(c,1e-6);return c/i<.3&&s>i*1.8?{gesture:"ring",box:o,straight:!1}:n<1.25?{gesture:"arrow",box:o,to:[ya(e[e.length-1].y/t*1e3),ya(e[e.length-1].x/a*1e3)],straight:!0}:{gesture:"scribble",box:o,straight:!1}}function Fn(e,a,t){if(!a||!t)return[];let r=[],o=[];for(let c of e){if(c.kind==="text"&&c.value&&typeof c.x=="number"&&typeof c.y=="number"){let n={x:c.x,y:c.y};o.push({gesture:"text",box:Dn(En([n,n]),a,t),text:c.value});continue}if(c.kind==="stroke"&&c.tool!=="eraser"&&c.points){let n=xc(c.points,a,t);n&&r.push(n)}}let i=new Set,s=[];for(let c=0;c<r.length;c++){if(i.has(c))continue;let n=r[c];for(let l=c+1;l<r.length;l++)i.has(l)||!n.straight||!r[l].straight||vc(n.box,r[l].box)&&(i.add(l),n={gesture:"cross",box:yc(n.box,r[l].box),straight:!1});i.add(c),s.push(n.gesture==="arrow"?{gesture:"arrow",box:n.box,to:n.to}:{gesture:n.gesture,box:n.box})}return[...s,...o]}var Te=require("react/jsx-runtime"),_n=["#111111","#ff5a5a","#ffb300","#22c55e","#06b6d4","#d946ef","#9ca3af"],wc=1280;function qn({src:e,onCancel:a,onSend:t,t:r}){let[o,i]=(0,qe.useState)(null),[s,c]=(0,qe.useState)(!1),[n,l]=(0,qe.useState)("pen"),[m,p]=(0,qe.useState)(_n[1]),[u,d]=(0,qe.useState)([]),[b,v]=(0,qe.useState)(null),[y,w]=(0,qe.useState)(""),[C,L]=(0,qe.useState)(""),[f,N]=(0,qe.useState)(!1),T=(0,qe.useRef)(null),x=(0,qe.useRef)(null),Q=(0,qe.useRef)(null);(0,qe.useEffect)(()=>{let h=new Image;h.crossOrigin="anonymous",h.onload=()=>i(h),h.onerror=()=>c(!0),h.src=e},[e]);let S=(()=>{if(!o)return{w:0,h:0};let h=Math.min(1,wc/Math.max(o.naturalWidth,o.naturalHeight));return{w:Math.round(o.naturalWidth*h),h:Math.round(o.naturalHeight*h)}})(),$=(0,qe.useRef)(null),_=h=>{let P=T.current;if(!P||!o)return;let q=P.getContext("2d");if(!q)return;$.current||($.current=document.createElement("canvas"));let X=$.current;X.width=P.width,X.height=P.height;let Y=X.getContext("2d"),A=h?[...u,h]:u;for(let M of A)M.kind==="stroke"?(Y.save(),Y.globalCompositeOperation=M.tool==="eraser"?"destination-out":"source-over",Y.strokeStyle=M.color,Y.lineWidth=M.tool==="eraser"?M.size*3:M.size,Y.lineCap="round",Y.lineJoin="round",Y.beginPath(),M.points.forEach((Z,G)=>G===0?Y.moveTo(Z.x,Z.y):Y.lineTo(Z.x,Z.y)),M.points.length===1&&Y.lineTo(M.points[0].x+.01,M.points[0].y),Y.stroke(),Y.restore()):(Y.save(),Y.fillStyle=M.color,Y.font=`600 ${M.size}px system-ui, sans-serif`,Y.fillText(M.value,M.x,M.y),Y.restore());q.clearRect(0,0,P.width,P.height),q.drawImage(o,0,0,P.width,P.height),q.drawImage(X,0,0)};(0,qe.useEffect)(()=>{_()},[o,u,S.w,S.h]),(0,qe.useEffect)(()=>{b&&Q.current?.focus()},[b]);let I=h=>{let P=T.current,q=P.getBoundingClientRect();return{x:(h.clientX-q.left)/q.width*P.width,y:(h.clientY-q.top)/q.height*P.height}},K=()=>Math.max(4,Math.round(S.w/180)),E=()=>Math.max(18,Math.round(S.w/28)),F=h=>{if(!o)return;let P=I(h);if(n==="text"){v({x:P.x,y:P.y}),w("");return}h.target.setPointerCapture(h.pointerId),x.current={kind:"stroke",tool:n,color:m,size:K(),points:[P]},_(x.current)},ee=h=>{x.current&&(x.current.points.push(I(h)),_(x.current))},z=()=>{if(!x.current)return;let h=x.current;x.current=null,d(P=>[...P,h])},B=()=>{b&&y.trim()&&d(h=>[...h,{kind:"text",x:b.x,y:b.y,color:m,value:y.trim(),size:E()}]),v(null),w("")},ie=()=>{if(o)try{let h=document.createElement("canvas");h.width=S.w,h.height=S.h;let P=h.getContext("2d");if(!P){N(!0);return}P.drawImage(o,0,0,S.w,S.h);let q=h.toDataURL("image/jpeg",.92),X=T.current?.toDataURL("image/jpeg",.85)||q;t(q,C.trim(),Fn(u,S.w,S.h),X)}catch{N(!0)}},re=u.length>0;return(0,Te.jsxs)("div",{className:"hsk-markup",role:"dialog","aria-label":r("markupDialogLabel"),children:[(0,Te.jsxs)("div",{className:"hsk-markup-head",children:[(0,Te.jsx)("span",{className:"hsk-markup-title",children:r("markupTitle")}),(0,Te.jsx)("button",{className:"hsk-markup-cancel",onClick:a,children:r("markupCancel")})]}),(0,Te.jsx)("div",{className:"hsk-markup-stage",children:s?(0,Te.jsx)("div",{className:"hsk-markup-error",children:r("markupLoadError")}):o?(0,Te.jsxs)("div",{className:"hsk-markup-canvas-wrap",children:[(0,Te.jsx)("canvas",{ref:T,width:S.w,height:S.h,className:`hsk-markup-canvas hsk-markup-canvas--${n}`,onPointerDown:F,onPointerMove:ee,onPointerUp:z,onPointerLeave:z}),b&&T.current&&(0,Te.jsx)("input",{ref:Q,className:"hsk-markup-textinput",style:{left:`${b.x/S.w*100}%`,top:`${b.y/S.h*100}%`,color:m},value:y,placeholder:r("markupTextHint"),onChange:h=>w(h.target.value),onKeyDown:h=>{h.key==="Enter"&&B(),h.key==="Escape"&&(v(null),w(""))},onBlur:B})]}):(0,Te.jsx)("div",{className:"hsk-markup-loading",children:r("markupLoading")})}),(0,Te.jsxs)("div",{className:"hsk-markup-tools",children:[(0,Te.jsx)("div",{className:"hsk-markup-colors",children:_n.map(h=>(0,Te.jsx)("button",{className:`hsk-markup-color${m===h?" hsk-markup-color--on":""}`,style:{background:h},onClick:()=>{p(h),n==="eraser"&&l("pen")},"aria-label":r("markupColorLabel",{colour:h})},h))}),(0,Te.jsxs)("div",{className:"hsk-markup-actions",children:[(0,Te.jsx)("button",{className:`hsk-markup-tool${n==="pen"?" hsk-markup-tool--on":""}`,onClick:()=>l("pen"),children:r("markupSketch")}),(0,Te.jsx)("button",{className:`hsk-markup-tool${n==="text"?" hsk-markup-tool--on":""}`,onClick:()=>l("text"),children:r("markupText")}),(0,Te.jsx)("button",{className:`hsk-markup-tool${n==="eraser"?" hsk-markup-tool--on":""}`,onClick:()=>l("eraser"),children:r("markupEraser")}),(0,Te.jsx)("button",{className:"hsk-markup-tool",onClick:()=>d(h=>h.slice(0,-1)),disabled:!re,children:r("markupUndo")}),(0,Te.jsx)("button",{className:"hsk-markup-tool",onClick:()=>d([]),disabled:!re,children:r("markupClear")})]})]}),(0,Te.jsxs)("div",{className:"hsk-markup-send",children:[(0,Te.jsx)("input",{className:"hsk-markup-instruction",value:C,placeholder:r("markupInstruction"),onChange:h=>L(h.target.value),onKeyDown:h=>{h.key==="Enter"&&(re||C.trim())&&ie()}}),(0,Te.jsx)("button",{className:"hsk-markup-go",onClick:ie,disabled:!o||!re&&!C.trim(),children:r("markupSend")})]}),f&&(0,Te.jsx)("div",{className:"hsk-markup-error",children:r("markupError")})]})}var wt=ft(require("react")),Vn=require("react/jsx-runtime");function Sc(e){let a=2166136261;for(let t=0;t<e.length;t++)a^=e.charCodeAt(t),a=Math.imul(a,16777619);return a>>>0}function po(e){let a=e>>>0;return()=>{a=a+1831565813>>>0;let t=Math.imul(a^a>>>15,1|a);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}var Un=e=>e*e*(3-2*e);function Cc(e){let t=new Float32Array(65536);for(let o=0;o<t.length;o++)t[o]=e();let r=(o,i)=>t[(i&255)*256+(o&255)];return(o,i)=>{let s=Math.floor(o),c=Math.floor(i),n=Un(o-s),l=Un(i-c),m=r(s,c),p=r(s+1,c),u=r(s,c+1),d=r(s+1,c+1);return(m+(p-m)*n)*(1-l)+(u+(d-u)*n)*l}}function Mc(e,a,t,r){let o=t/Math.SQRT2,i=Math.ceil(e/o),s=Math.ceil(a/o),c=new Int32Array(i*s).fill(-1),n=[],l=[],m=(u,d)=>{let b=n.length;n.push([u,d]),c[Math.floor(d/o)*i+Math.floor(u/o)]=b,l.push(b)},p=(u,d)=>{if(u<0||d<0||u>=e||d>=a)return!1;let b=Math.floor(u/o),v=Math.floor(d/o);for(let y=Math.max(v-2,0);y<=Math.min(v+2,s-1);y++)for(let w=Math.max(b-2,0);w<=Math.min(b+2,i-1);w++){let C=c[y*i+w];if(C<0)continue;let L=n[C][0]-u,f=n[C][1]-d;if(L*L+f*f<t*t)return!1}return!0};for(m(r()*e,r()*a);l.length;){let u=r()*l.length|0,[d,b]=n[l[u]],v=!1;for(let y=0;y<24;y++){let w=r()*Math.PI*2,C=t*(1+r()),L=d+Math.cos(w)*C,f=b+Math.sin(w)*C;if(p(L,f)){m(L,f),v=!0;break}}v||l.splice(u,1)}return n}var Ue=(e,a)=>(e()-.5)*a,lo=[(e,a,t)=>{let r=a*.5,o=a*(.14+t()*.04),i=a*.07;e.beginPath(),e.moveTo(-o-i*.6,-r),e.lineTo(o+i*.6,-r),e.moveTo(-o,-r+i),e.lineTo(o,-r+i),e.moveTo(-o,-r+i),e.lineTo(-o*.85,r-i),e.moveTo(o,-r+i),e.lineTo(o*.85,r-i),e.moveTo(0,-r+i*1.7),e.lineTo(0,r-i*1.7),e.moveTo(-o,r-i),e.lineTo(o,r-i),e.moveTo(-o-i*.6,r),e.lineTo(o+i*.6,r),e.stroke()},(e,a,t)=>{let r=a*.5,o=-r*(.18+t()*.1);e.beginPath(),e.moveTo(-r,o),e.lineTo(0,-r),e.lineTo(r,o),e.closePath(),e.moveTo(-r*.92,o+r*.16),e.lineTo(r*.92,o+r*.16);for(let i of[-.62,-.21,.21,.62])e.moveTo(r*i,o+r*.16),e.lineTo(r*i,r*.8);e.moveTo(-r,r*.8),e.lineTo(r,r*.8),e.stroke()},(e,a,t)=>{let r=a*.5,o=r*(.48+t()*.12);e.beginPath(),e.moveTo(-r*.2,-r*.86),e.lineTo(r*.2,-r*.86),e.moveTo(-r*.15,-r*.78),e.bezierCurveTo(-o,-r*.3,-o*.85,r*.6,0,r*.86),e.bezierCurveTo(o*.85,r*.6,o,-r*.3,r*.15,-r*.78),e.moveTo(-r*.17,-r*.64),e.quadraticCurveTo(-o*1.16,-r*.48,-o*.7,-r*.04),e.moveTo(r*.17,-r*.64),e.quadraticCurveTo(o*1.16,-r*.48,o*.7,-r*.04),e.stroke()},(e,a,t)=>{let r=a*.5;e.beginPath(),e.moveTo(-r*.9,r*.52),e.quadraticCurveTo(0,-r*.18,r*.9,-r*.58),e.stroke();let o=4+(t()*3|0);for(let i=0;i<o;i++){let s=.16+i/o*.8,c=-r*.9+s*r*1.8,n=r*.52-s*r*1.16+(1-s)*s*r*.3,l=i%2?1:-1,m=r*(.26+t()*.1);e.beginPath(),e.moveTo(c,n),e.quadraticCurveTo(c+m*.5,n+l*m*.66,c+m*.9,n+l*m*.08),e.quadraticCurveTo(c+m*.42,n+l*m*.04,c,n),e.stroke()}},(e,a,t)=>{let r=a*.5;e.beginPath(),e.moveTo(-r*.85,-r*.7),e.quadraticCurveTo(-r*.1,-r*.35,r*.2,r*.1),e.stroke();let o=[[-r*.45,-r*.12],[r*.05,r*.3],[r*.42,-r*.4]];for(let[i,s]of o)e.beginPath(),e.moveTo(i,s-r*.28),e.lineTo(i-r*.02,s-r*.16),e.stroke(),e.beginPath(),e.ellipse(i,s,r*(.15+t()*.04),r*.19,Ue(t,.5),0,Math.PI*2),e.stroke()},(e,a,t)=>{let r=a*.5;for(let o of[-1,1]){e.beginPath(),e.arc(0,0,r*.72,o>0?-1.25:1.25,o>0?1.25:Math.PI*2-1.25,o<0),e.stroke();for(let i=0;i<5;i++){let s=-1.05+i/4*2.1,c=Math.sin(s)*o*r*.72,n=Math.cos(s)*r*.72,l=r*(.2+t()*.08);e.beginPath(),e.moveTo(c,n),e.quadraticCurveTo(c+o*l*.9,n-l*.5,c+o*l*.6,n-l*1.05),e.stroke()}}},(e,a)=>{let t=a*.5;e.beginPath(),e.moveTo(-t,t*.6),e.lineTo(t*.55,t*.6),e.lineTo(t*.55,-t*.6),e.lineTo(-t*.45,-t*.6),e.lineTo(-t*.45,t*.15),e.lineTo(t*.1,t*.15),e.lineTo(t*.1,-t*.18),e.stroke()},(e,a)=>{let t=a*.5;e.beginPath(),e.moveTo(-t*.62,t*.8),e.lineTo(-t*.62,-t*.05),e.arc(0,-t*.05,t*.62,Math.PI,0),e.lineTo(t*.62,t*.8),e.stroke(),e.beginPath(),e.moveTo(-t*.86,t*.8),e.lineTo(t*.86,t*.8),e.stroke()},(e,a,t)=>{let r=a*.5;e.beginPath(),e.arc(0,0,r*.4,0,Math.PI*2),e.stroke();let o=t()*.5;for(let i=0;i<8;i++){let s=o+i/8*Math.PI*2;e.beginPath(),e.moveTo(Math.cos(s)*r*.6,Math.sin(s)*r*.6),e.lineTo(Math.cos(s)*r*.94,Math.sin(s)*r*.94),e.stroke()}},(e,a)=>{let t=a*.5;e.beginPath(),e.moveTo(-t*.44,t*.7),e.bezierCurveTo(-t,t*.2,-t*.8,-t*.7,-t*.3,-t*.6),e.moveTo(t*.44,t*.7),e.bezierCurveTo(t,t*.2,t*.8,-t*.7,t*.3,-t*.6),e.moveTo(-t*.32,-t*.64),e.lineTo(t*.32,-t*.64),e.moveTo(-t*.44,t*.7),e.lineTo(t*.44,t*.7);for(let r of[-.16,.02,.2])e.moveTo(t*r,-t*.56),e.lineTo(t*r,t*.62);e.stroke()},(e,a,t)=>{let r=a*.5,o=r*(.4+t()*.18);e.beginPath(),e.moveTo(-r,r*.16),e.quadraticCurveTo(-r*.5,-o,0,-r*.02),e.quadraticCurveTo(r*.5,-o,r,r*.16),e.stroke()}],Bn=[(e,a,t)=>{let r=a*.5,o=-r+Ue(t,r*.3),i=Ue(t,r);e.beginPath(),e.moveTo(o,i);let s=4+(t()*4|0);for(let c=0;c<s;c++){let n=o+r*2/s+Ue(t,r*.5),l=Ue(t,r*1.5);e.quadraticCurveTo(o+Ue(t,r*.9),i+Ue(t,r*1.6),n,l),o=n,i=l}e.stroke()},(e,a,t)=>{let r=a*.5,o=2.2+t()*1.6,i=t()<.5?-1:1;e.beginPath();for(let s=0;s<=60;s++){let c=s/60,n=i*c*o*Math.PI*2,l=r*c*(.9+Ue(t,.06)),m=Math.cos(n)*l,p=Math.sin(n)*l;s===0?e.moveTo(m,p):e.lineTo(m,p)}e.stroke()},(e,a,t)=>{let r=a*.5,o=4+(t()*4|0),i=Ue(t,.7);for(let s=0;s<o;s++){let c=-r+s/(o-1)*r*2+Ue(t,r*.16),n=r*(.7+t()*.6);e.beginPath(),e.moveTo(c-i*n*.5,-n*.5),e.quadraticCurveTo(c+Ue(t,r*.2),0,c+i*n*.5,n*.5),e.stroke()}},(e,a,t)=>{let r=a*.5,o=2+(t()*3|0),i=r*2/o;e.beginPath(),e.moveTo(-r,r*.4);for(let s=0;s<o;s++){let c=-r+s*i,n=i*(.42+t()*.18);e.bezierCurveTo(c+n*.2,r*.4-n*2.1,c+i-n*.2,r*.4-n*2.1,c+i,r*.4+Ue(t,r*.14))}e.stroke()}],Hn=[(e,a,t)=>{e.beginPath(),e.arc(0,0,a*.1+t()*a*.04,0,Math.PI*2),e.fill()},(e,a,t)=>{e.beginPath(),e.arc(Ue(t,a*.04),Ue(t,a*.04),a*.32,0,Math.PI*2),e.stroke()},(e,a,t)=>{let r=a*.4,o=r*(.2+t()*.12);e.beginPath(),e.moveTo(0,-r),e.quadraticCurveTo(o,-o,r,0),e.quadraticCurveTo(o,o,0,r),e.quadraticCurveTo(-o,o,-r,0),e.quadraticCurveTo(-o,-o,0,-r),e.stroke()},(e,a,t)=>{let r=a*.4;e.beginPath(),e.moveTo(-r,Ue(t,a*.08)),e.quadraticCurveTo(0,Ue(t,a*.16),r,Ue(t,a*.08)),e.stroke()}],Nc={light:(e,a)=>{let t=a*.5;e.beginPath(),e.moveTo(0,-t),e.quadraticCurveTo(t*.16,-t*.16,t,0),e.quadraticCurveTo(t*.16,t*.16,0,t),e.quadraticCurveTo(-t*.16,t*.16,-t,0),e.quadraticCurveTo(-t*.16,-t*.16,0,-t),e.stroke()},dark:(e,a)=>{let t=a*.44;e.beginPath(),e.moveTo(-t*.6,-t*.5),e.lineTo(t*.6,-t*.5),e.lineTo(t,t*.05),e.lineTo(0,t),e.lineTo(-t,t*.05),e.closePath(),e.moveTo(-t,t*.05),e.lineTo(t,t*.05),e.moveTo(-t*.6,-t*.5),e.lineTo(-t*.3,t*.05),e.lineTo(0,t),e.moveTo(t*.6,-t*.5),e.lineTo(t*.3,t*.05),e.lineTo(0,t),e.stroke()},mahogany:(e,a)=>{let t=a*.5;e.beginPath(),e.moveTo(0,t),e.bezierCurveTo(-t*.9,t*.2,-t*.7,-t*.7,0,-t),e.bezierCurveTo(t*.7,-t*.7,t*.9,t*.2,0,t),e.moveTo(0,t*.86),e.lineTo(0,-t*.86);for(let r=0;r<3;r++){let o=-.34+r*.36;e.moveTo(0,t*o),e.lineTo(t*.44,t*(o-.26)),e.moveTo(0,t*o),e.lineTo(-t*.44,t*(o-.26))}e.stroke()},blush:(e,a)=>{let t=a*.5;for(let r=0;r<5;r++){let o=r/5*Math.PI*2-Math.PI/2;e.beginPath(),e.ellipse(Math.cos(o)*t*.52,Math.sin(o)*t*.52,t*.42,t*.26,o,0,Math.PI*2),e.stroke()}e.beginPath(),e.arc(0,0,t*.19,0,Math.PI*2),e.stroke()},coffee:(e,a)=>{let t=a*.5;e.beginPath(),e.ellipse(0,0,t*.6,t*.9,0,0,Math.PI*2),e.stroke(),e.beginPath(),e.moveTo(0,-t*.84),e.bezierCurveTo(t*.34,-t*.3,-t*.34,t*.3,0,t*.84),e.stroke()},midnight:(e,a)=>{let t=a*.5;e.beginPath();for(let r=0;r<10;r++){let o=r%2===0?t:t*.4,i=r/10*Math.PI*2-Math.PI/2,s=Math.cos(i)*o,c=Math.sin(i)*o;r===0?e.moveTo(s,c):e.lineTo(s,c)}e.closePath(),e.stroke()}},$n=e=>{let a=e.split(",").map(t=>parseFloat(t.trim()));return[a[0]||0,a[1]||0,a[2]||0]};function jn(e,a,t){let r=$n(e),o=$n(a);return`rgb(${Math.round(r[0]+(o[0]-r[0])*t)},${Math.round(r[1]+(o[1]-r[1])*t)},${Math.round(r[2]+(o[2]-r[2])*t)})`}function Tc(e,a,t){return`hsl(${Math.round(a*300%360)}, ${t?72:68}%, ${t?58:46}%)`}function Rc(e,a,t,r,o,i,s){let c=s?Nc[s]:void 0,n=po(o),l=Cc(po(o^2654435769)),m=e*a,u=Math.max(40,Math.min(520,Math.round(m/3100)))/.48,d=Math.max(26,Math.sqrt(.7*m/u)),b=Mc(e,a,d,n),v=4.4/Math.max(e,a),y=v*2.6,w=Math.hypot(e,a),C=n()*Math.PI*2,L=Math.cos(C),f=Math.sin(C),N=e*(.18+n()*.64),T=a*(.12+n()*.5),x=[],Q=Math.hypot(e,a)||1,[S,$,_]=t.split(",").map(K=>parseFloat(K)||0),I=.2126*S+.7152*$+.0722*_>128;for(let[K,E]of b){let F=l(K*v,E*v)*.72+l(K*y,E*y)*.28,ee=Math.min(1,Math.max(0,(F-.26)/.44));if(n()>ee*ee*(3-2*ee))continue;let z=n(),B=Math.max(0,1-Math.hypot(K-N,E-T)/(w*.72))**1.6,ie=((K-e/2)*L+(E-a/2)*f)/w+.5,re=!I,P=((re?.055:.028)+n()*(re?.04:.025))*(.75+ie*.55)*(1+B*.4),q=jn(t,r,B*.85),X=i?(e-K+a-E)/(e+a||1):(K+E)/(e+a||1),Y=n()*16777215|0,A=Tc(Y,X,I),M=0,Z=re?1.05+n()*.35:.65+n()*.35,G=20,g=lo[0],J=1;z<.5?(M=Ue(n,.16),Z=re?1.15+n()*.45:.7+n()*.35,G=20+n()*16,g=lo[n()*lo.length|0]):z<.82?(M=n()*Math.PI*2,Z=re?.95+n()*.4:.6+n()*.4,G=16+n()*20,g=Bn[n()*Bn.length|0]):z<.95||!c?(M=n()*Math.PI*2,Z=re?.85+n()*.35:.55+n()*.35,G=7+n()*7,g=Hn[n()*Hn.length|0]):(M=Ue(n,.3),Z=re?1.1+n()*.3:.75+n()*.3,G=15+n()*9,g=c,J=2.6),x.push({x:K,y:E,roll:z,rotation:M,lineWidth:Z,alpha:P*J,baseColor:q,shimmerColor:A,drawFn:g,size:G,seed:Y,normDist:X})}return x}function ho(e,a,t,r,o){e.clearRect(0,0,t,r),e.lineCap="round",e.lineJoin="round";let i=o>=0&&o<=1.4,s=i?o*1.4-.2:-999,c=.3;for(let n of a){let l=n.alpha,m=n.baseColor,p=n.lineWidth;if(i){let d=n.normDist-s;if(d>c)l=n.alpha*.45,m=n.baseColor,p=n.lineWidth;else if(d<-c)l=n.alpha,m=n.baseColor,p=n.lineWidth;else{let b=Math.cos(d/c*(Math.PI/2))**2;l=n.alpha+b*.08,m=b>.08?jn(n.baseColor,n.shimmerColor,b*.65):n.baseColor,p=n.lineWidth*(1+b*.2)}}e.save(),e.translate(n.x,n.y),e.rotate(n.rotation),e.globalAlpha=Math.min(l,1),e.strokeStyle=m,e.fillStyle=m,e.lineWidth=p;let u=po(n.seed);n.drawFn(e,n.size,u),e.restore()}}var zc=wt.default.memo(function({seed:a="",theme:t,dir:r}){let o=(0,wt.useRef)(null),i=(0,wt.useRef)(!1),s=(0,wt.useRef)(0),c=(0,wt.useRef)(null),n=(0,wt.useRef)(0);return(0,wt.useEffect)(()=>{let l=o.current;if(!l)return;let m=Sc(a||"kiku"),p=0,u=(C,L,f,N)=>T=>{let x=T-C,Q=Math.min(1,x/L),$=(1-Math.cos(Q*Math.PI))/2*1.4,_=l.clientWidth,I=l.clientHeight;if(_&&I){let K=Math.min(window.devicePixelRatio||1,3),E=Math.round(_*K),F=Math.round(I*K);(l.width!==E||l.height!==F)&&(l.width=E,l.height=F);let ee=l.getContext("2d");ee&&(ee.setTransform(K,0,0,K,0,0),ho(ee,f,_,I,$))}if(Q<1)s.current=requestAnimationFrame(u(C,L,f,N));else{i.current=!1;let K=l.clientWidth,E=l.clientHeight,F=l.getContext("2d");if(F&&K&&E){let ee=Math.min(window.devicePixelRatio||1,3);F.setTransform(ee,0,0,ee,0,0),ho(F,f,K,E,-1)}}},d=()=>{let C=l.clientWidth,L=l.clientHeight;if(!C||!L)return;let f=Math.min(window.devicePixelRatio||1,3),N=l.getContext("2d");if(!N)return;let T=getComputedStyle(l),x=T.getPropertyValue("--hsk-doodle-ink").trim()||"31,31,31",Q=T.getPropertyValue("--hsk-doodle-tint").trim()||x,S=r==="rtl"||T.direction==="rtl"||l.closest('[dir="rtl"]')!==null,$=typeof window<"u"?Math.max(L,window.innerHeight||0):L,_=Rc(C,$,x,Q,m,S,t);c.current=_,n.current=C;let I=Math.round(C*f),K=Math.round(L*f);if((l.width!==I||l.height!==K)&&(l.width=I,l.height=K),N.setTransform(f,0,0,f,0,0),window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches){ho(N,_,C,L,-1);return}cancelAnimationFrame(s.current),i.current=!0;let F=1200,ee=performance.now();s.current=requestAnimationFrame(u(ee,F,_,S))},b=()=>{clearTimeout(p),p=window.setTimeout(d,20)};d();let v=new ResizeObserver(b);v.observe(l);let y=window.matchMedia?.("(prefers-color-scheme: dark)"),w=()=>{d()};return y?.addEventListener?.("change",w),()=>{clearTimeout(p),cancelAnimationFrame(s.current),i.current=!1,v.disconnect(),y?.removeEventListener?.("change",w)}},[a,t,r]),(0,Vn.jsx)("canvas",{className:"hsk-cb-doodles",ref:o,"aria-hidden":"true"})}),Cr=zc;var Ie=ft(require("react")),Kn=require("@akropolys/sdk");var uo={arabic:{allSet:"\u0623\u0646\u062A \u062C\u0627\u0647\u0632\u060C {name}.",asWritten:"\u0643\u0645\u0627 \u0647\u064A \u0645\u0643\u062A\u0648\u0628\u0629",captureAll:"\u0627\u0644\u062A\u0642\u0627\u0637 \u0627\u0644\u0643\u0644 ({count})",captureAndRemember:"kiku \u2014 \u0627\u0644\u062A\u0642\u0627\u0637 \u0648\u062A\u0630\u0643\u0631",captureCurrentPage:"\u0627\u0644\u062A\u0642\u0627\u0637 \u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u062D\u0627\u0644\u064A\u0629",cardClickAnswer:"\u0627\u0644\u0640 {name}",cardClickQuery:"\u0623\u062E\u0628\u0631\u0646\u064A \u0627\u0644\u0645\u0632\u064A\u062F \u0639\u0646 {name}{price} \u2014 \u0645\u0627 \u0647\u064A \u062A\u0641\u0627\u0635\u064A\u0644\u0647 \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629\u060C \u0648\u0644\u0645\u0646 \u0647\u0648 \u0627\u0644\u0623\u0646\u0633\u0628\u060C \u0648\u0645\u0627\u0630\u0627 \u064A\u062C\u0628 \u0623\u0646 \u0623\u0639\u0631\u0641\u061F",clearChat:"\u0645\u0633\u062D \u0627\u0644\u062F\u0631\u062F\u0634\u0629",defaultPlaceholder:"\u0627\u0633\u0623\u0644\u0646\u064A \u0623\u064A \u0634\u064A\u0621...",deleteThis:"\u062D\u0630\u0641 \u0647\u0630\u0627",detailsTranslated:"\u062A\u0645\u062A \u062A\u0631\u062C\u0645\u0629 \u0627\u0644\u062A\u0641\u0627\u0635\u064A\u0644. \u062A\u0628\u0642\u0649 \u0627\u0644\u0623\u0631\u0642\u0627\u0645 \u0648\u0627\u0644\u0631\u0648\u0627\u0628\u0637 \u0643\u0645\u0627 \u0647\u064A \u062A\u0645\u0627\u0645\u064B\u0627.",displayCapture:"\u0627\u0644\u062A\u0642\u0627\u0637 {name}",displayCaptureAll:"\u0627\u0644\u062A\u0642\u0627\u0637 \u0627\u0644\u0643\u0644 ({count} \u0639\u0646\u0627\u0635\u0631)",displayDelete:"\u062D\u0630\u0641 \u0647\u0630\u0627",displayViewHistory:"\u0645\u0627\u0630\u0627 \u062D\u0641\u0638\u062A\u061F",entityLangIntro:"\u0623\u0646\u0627 \u0623\u0631\u062F \u0628\u0640 {lang}. \u064A\u0645\u0643\u0646 \u0623\u0646 \u062A\u0628\u0642\u0649 \u0628\u0637\u0627\u0642\u0627\u062A \u0627\u0644\u0646\u062A\u0627\u0626\u062C \u0643\u0645\u0627 \u0643\u062A\u0628\u0647\u0627 \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0642\u0639 \u062A\u0645\u0627\u0645\u064B\u0627\u060C \u0623\u0648 \u064A\u0645\u0643\u0646 \u062A\u0631\u062C\u0645\u062A\u0647\u0627 \u0623\u064A\u0636\u064B\u0627.",entityLangPlaceholder:"\u0627\u062E\u062A\u0631 \u0625\u062D\u062F\u0649 \u0627\u0644\u0628\u0637\u0627\u0642\u062A\u064A\u0646 \u0623\u0639\u0644\u0627\u0647...",errAccessRevoked:"\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0648\u0635\u0648\u0644\u0643 \u0625\u0644\u0649 \u0627\u0644\u0645\u0633\u0627\u0639\u062F \u0645\u0646 \u0642\u0628\u0644 \u0627\u0644\u0645\u062A\u062C\u0631.",errAccountRequired:"\u0627\u0644\u0631\u062C\u0627\u0621 \u0625\u0646\u0634\u0627\u0621 \u062D\u0633\u0627\u0628 \u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0645\u0633\u0627\u0639\u062F \u0627\u0644\u062F\u0631\u062F\u0634\u0629.",errShopperReplyLimit:"\u0644\u0642\u062F \u0648\u0635\u0644\u062A \u0625\u0644\u0649 \u062D\u062F \u0627\u0644\u0631\u062F\u0648\u062F \u0627\u0644\u0645\u0633\u0645\u0648\u062D \u0628\u0647 \u0644\u062D\u0633\u0627\u0628\u0643 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0642\u0639.",errStreamInterrupted:"\u062A\u0645\u062A \u0645\u0642\u0627\u0637\u0639\u0629 \u0627\u0644\u0631\u062F. \u0627\u0644\u0631\u062C\u0627\u0621 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",errTokenLimit:"\u0644\u0642\u062F \u0648\u0635\u0644\u062A \u0625\u0644\u0649 \u062D\u062F \u0627\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u062E\u0627\u0635 \u0628\u0643. \u0627\u0644\u0631\u062C\u0627\u0621 \u062A\u062D\u062F\u064A\u062B \u062D\u062F\u0648\u062F \u0627\u0644\u0641\u0648\u0627\u062A\u064A\u0631 \u0641\u064A \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062D\u0643\u0645 \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",errTooManyRequests:"\u064A\u062A\u0644\u0642\u0649 \u0627\u0644\u0645\u0633\u0627\u0639\u062F \u062D\u0627\u0644\u064A\u064B\u0627 \u0639\u062F\u062F\u064B\u0627 \u0643\u0628\u064A\u0631\u064B\u0627 \u062C\u062F\u064B\u0627 \u0645\u0646 \u0627\u0644\u0637\u0644\u0628\u0627\u062A. \u0627\u0644\u0631\u062C\u0627\u0621 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0628\u0639\u062F \u0644\u062D\u0638\u0627\u062A \u0642\u0644\u064A\u0644\u0629.",footerHint:"kiku \xB7 \u064A\u0628\u062D\u062B \u0641\u064A \u0627\u0644\u0643\u062A\u0627\u0644\u0648\u062C \u0628\u0623\u0643\u0645\u0644\u0647 \u0641\u064A \u0627\u0644\u0648\u0642\u062A \u0627\u0644\u0641\u0639\u0644\u064A",greetReturning:"\u0623\u0647\u0644\u0627\u064B\u060C {name}.",greetReturningLead:"\u0645\u0627\u0630\u0627 \u064A\u0645\u0643\u0646\u0646\u064A \u0623\u0646 \u0623\u062C\u062F \u0644\u0643 \u0627\u0644\u064A\u0648\u0645\u061F",howShouldResultsLook:"\u0643\u064A\u0641 \u064A\u062C\u0628 \u0623\u0646 \u062A\u0628\u062F\u0648 \u0627\u0644\u0646\u062A\u0627\u0626\u062C\u061F",inLanguage:"\u0628\u0640 {lang}",keyAutoHide:"\u064A\u062E\u062A\u0641\u064A \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627 \u0641\u064A {seconds} \u062B\u0648\u0627\u0646\u064D.",keyCopied:"\u062A\u0645 \u0627\u0644\u0646\u0633\u062E",keyCopyId:"\u0646\u0633\u062E \u0627\u0644\u0645\u0639\u0631\u0651\u0641",keyCopySecret:"\u0646\u0633\u062E \u0627\u0644\u0633\u0631",keyCreateNew:"\u0623\u0646\u0627 \u062C\u062F\u064A\u062F \u2014 \u0623\u0646\u0634\u0626 \u0648\u0627\u062D\u062F\u064B\u0627",keyCreating:"\u062C\u0627\u0631\u064D \u0627\u0644\u0625\u0646\u0634\u0627\u0621\u2026",keyDismiss:"\u062A\u062C\u0627\u0647\u0644",keyPastePlaceholder:"\u0645\u0639\u0631\u0651\u0641\u0643 \u0627\u0644\u0639\u0627\u0645\u2026",keyPastePrompt:"\u0627\u0644\u0635\u0642 \u0645\u0639\u0631\u0651\u0641\u0643 \u0627\u0644\u0639\u0627\u0645 \u2014 \u0623\u0648 \u0623\u0646\u0634\u0626 \u0648\u0627\u062D\u062F\u064B\u0627",keyPublicHint:"\u0627\u0644\u0635\u0642\u0647 \u0641\u064A \u0623\u064A \u0645\u0648\u0642\u0639 \u0644\u0644\u062D\u0641\u0638 \u0641\u064A \u0646\u0641\u0633 \u0627\u0644\u0630\u0627\u0643\u0631\u0629.",keyPublicTitle:"\u0645\u0639\u0631\u0651\u0641\u0643 \u0627\u0644\u0639\u0627\u0645",keySecretHint:"\u0627\u062D\u062A\u0641\u0638 \u0628\u0647 \u062E\u0627\u0635\u064B\u0627 \u2014 \u0627\u0633\u062A\u062E\u062F\u0645\u0647 \u0644\u0641\u062A\u062D \u0630\u0627\u0643\u0631\u062A\u0643.",keySecretTitle:"\u0633\u0631\u0643 \u2014 \u064A\u064F\u0639\u0631\u0636 \u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0641\u0642\u0637",keyUseMine:"\u0627\u0633\u062A\u062E\u062F\u0645 \u0645\u0639\u0631\u0651\u0641\u064A",kikuActionUnavailable:"\u0639\u0630\u0631\u064B\u0627 \u2014 \u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0642\u0639.",kikuCaptureDbError:"\u0641\u0634\u0644 \u0627\u0644\u0627\u0644\u062A\u0642\u0627\u0637 \u0628\u0633\u0628\u0628 \u062E\u0637\u0623 \u0641\u064A \u0642\u0627\u0639\u062F\u0629 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A.",kikuCaptureNoContext:"\u0641\u0634\u0644 \u0627\u0644\u0627\u0644\u062A\u0642\u0627\u0637 \u0644\u0623\u0646\u0647 \u0644\u0645 \u064A\u062A\u0645 \u062A\u0648\u0641\u064A\u0631 \u0633\u064A\u0627\u0642 \u0627\u0644\u0635\u0641\u062D\u0629 \u0623\u0648 \u0627\u0644\u0645\u0646\u062A\u062C \u0628\u0648\u0627\u0633\u0637\u0629 SDK.",kikuCaptureNoUrl:"\u062A\u0639\u0630\u0631 \u062D\u0641\u0638 \u0623\u064A \u0639\u0646\u0627\u0635\u0631 \u2014 \u0644\u0645 \u064A\u0643\u0646 \u0644\u0623\u064A \u0645\u0646\u0647\u0627 \u0639\u0646\u0648\u0627\u0646 URL \u0635\u0627\u0644\u062D.",kikuCaptureNoneSelected:"\u0644\u0645 \u064A\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u0623\u064A \u0639\u0646\u0627\u0635\u0631 \u0644\u0627\u0644\u062A\u0642\u0627\u0637\u0647\u0627.",kikuDeleteDbError:"\u0641\u0634\u0644 \u0627\u0644\u062D\u0630\u0641 \u0628\u0633\u0628\u0628 \u062E\u0637\u0623 \u0641\u064A \u0642\u0627\u0639\u062F\u0629 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A.",kikuDeleteDone:"\u062A\u0645\u062A \u0625\u0632\u0627\u0644\u062A\u0647 \u0645\u0646 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u062D\u0641\u0648\u0638\u0629 \u0644\u062F\u064A\u0643.",kikuDeleteNoContext:"\u0641\u0634\u0644 \u0627\u0644\u062D\u0630\u0641 \u0644\u0623\u0646\u0647 \u0644\u0645 \u064A\u062A\u0645 \u062A\u0648\u0641\u064A\u0631 \u0633\u064A\u0627\u0642 \u0627\u0644\u0635\u0641\u062D\u0629 \u0644\u062A\u062D\u062F\u064A\u062F \u0645\u0627 \u064A\u062C\u0628 \u062D\u0630\u0641\u0647.",kikuMemoryIntro:"\u0643\u0644 \u0645\u0627 \u0627\u0644\u062A\u0642\u0637\u062A\u0647 \u0639\u0628\u0631 \u0627\u0644\u0645\u0648\u0627\u0642\u0639 \u0645\u0648\u062C\u0648\u062F \u0641\u064A \u0630\u0627\u0643\u0631\u062A\u0643 \u0627\u0644\u062E\u0627\u0635\u0629. \u0627\u0641\u062A\u062D\u0647\u0627 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0633\u0631\u0643:",kikuMintNeeded:"\u0644\u062D\u0641\u0638 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0639\u0628\u0631 \u0627\u0644\u0645\u0648\u0627\u0642\u0639\u060C \u062A\u062D\u062A\u0627\u062C \u0625\u0644\u0649 \u0645\u0641\u062A\u0627\u062D kiku \u2014 \u0633\u0623\u0642\u0648\u0645 \u0628\u0625\u0646\u0634\u0627\u0621 \u0648\u0627\u062D\u062F \u0644\u0643. \u064A\u064F\u0639\u0631\u0636 \u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0641\u0642\u0637\u060C \u0644\u0630\u0627 \u0627\u062D\u0641\u0638\u0647 \u0641\u064A \u0645\u0643\u0627\u0646 \u0622\u0645\u0646.",kikuMintOffer:"\u064A\u0645\u0643\u0646\u0646\u064A \u0627\u0644\u0627\u062D\u062A\u0641\u0627\u0638 \u0628\u0647\u0630\u0627 \u0644\u0643 \u0648\u0645\u062A\u0627\u0628\u0639\u062A\u0647 \u0645\u0639\u0643 \u0639\u0628\u0631 \u0627\u0644\u0645\u0648\u0627\u0642\u0639 \u2014 \u0633\u0623\u0642\u0648\u0645 \u0628\u0625\u0646\u0634\u0627\u0621 \u0645\u0641\u062A\u0627\u062D kiku \u0644\u0643. \u064A\u064F\u0639\u0631\u0636 \u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0641\u0642\u0637\u060C \u0644\u0630\u0627 \u0627\u062D\u0641\u0638\u0647 \u0641\u064A \u0645\u0643\u0627\u0646 \u0622\u0645\u0646.",kikuNeedKeyToUpdate:"\u0623\u062F\u062E\u0644 \u0645\u0641\u062A\u0627\u062D kiku \u0627\u0644\u062E\u0627\u0635 \u0628\u0643 \u062D\u062A\u0649 \u0623\u062A\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u062D\u0641\u0648\u0638\u0629 \u0644\u062F\u064A\u0643 \u0648\u062A\u062D\u062F\u064A\u062B\u0647\u0627.",micDenied:"\u062A\u0645 \u062D\u0638\u0631 \u0627\u0644\u0645\u064A\u0643\u0631\u0648\u0641\u0648\u0646. \u0627\u0633\u0645\u062D \u0628\u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u0645\u064A\u0643\u0631\u0648\u0641\u0648\u0646 \u0644\u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0642\u0639\u060C \u062B\u0645 \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",micFailed:"\u0644\u0645 \u0623\u062A\u0645\u0643\u0646 \u0645\u0646 \u0633\u0645\u0627\u0639 \u0630\u0644\u0643. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",micInsecure:"\u064A\u062A\u0637\u0644\u0628 \u0627\u0644\u0635\u0648\u062A \u0627\u062A\u0635\u0627\u0644\u0627\u064B \u0622\u0645\u0646\u064B\u0627 (https).",micLangUnsupported:"\u0644\u0627 \u064A\u0645\u0643\u0646 \u0644\u0647\u0630\u0627 \u0627\u0644\u0645\u062A\u0635\u0641\u062D \u0646\u0633\u062E \u0647\u0630\u0647 \u0627\u0644\u0644\u063A\u0629 \u0628\u0639\u062F. \u064A\u0631\u062C\u0649 \u0627\u0644\u0643\u062A\u0627\u0628\u0629 \u0628\u062F\u0644\u0627\u064B \u0645\u0646 \u0630\u0644\u0643.",micMissing:"\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0645\u064A\u0643\u0631\u0648\u0641\u0648\u0646.",micNetwork:"\u062A\u062A\u0637\u0644\u0628 \u0645\u064A\u0632\u0629 \u0627\u0644\u0635\u0648\u062A \u0627\u062A\u0635\u0627\u0644\u0627\u064B \u0627\u0644\u0622\u0646. \u064A\u0631\u062C\u0649 \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u062A\u0635\u0627\u0644\u0643 \u0648\u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",micNoSpeech:"\u0644\u0645 \u0623\u0633\u0645\u0639 \u0634\u064A\u0626\u064B\u0627. \u064A\u0631\u062C\u0649 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649\u060C \u0648\u0627\u0642\u062A\u0631\u0628 \u0642\u0644\u064A\u0644\u0627\u064B \u0645\u0646 \u0627\u0644\u0645\u064A\u0643\u0631\u0648\u0641\u0648\u0646.",namePlaceholder:"\u0627\u0643\u062A\u0628 \u0627\u0633\u0645\u0643...",nameStepAsk:"\u0645\u0627\u0630\u0627 \u064A\u062C\u0628 \u0623\u0646 \u0623\u0646\u0627\u062F\u064A\u0643\u061F",nameStepLead:"\u064A\u0645\u0643\u0646\u0646\u064A \u0627\u0644\u0628\u062D\u062B \u0639\u0646 \u0623\u064A \u0634\u064A\u0621 \u0623\u0648 \u062A\u0635\u0648\u0631\u0647 \u0623\u0648 \u0627\u0644\u062A\u0642\u0627\u0637\u0647 \u0644\u0643 \u2014 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0642\u0639 \u0623\u0648 \u0623\u064A \u0645\u0648\u0642\u0639 \u0622\u062E\u0631.",nameStepTitle:"\u0633\u0631\u0631\u062A \u0628\u0644\u0642\u0627\u0626\u0643.",namesAsWritten:"\u0627\u0644\u0623\u0633\u0645\u0627\u0621 \u0648\u0627\u0644\u062A\u0641\u0627\u0635\u064A\u0644 \u062A\u0645\u0627\u0645\u064B\u0627 \u0643\u0645\u0627 \u0647\u064A \u0645\u062F\u0631\u062C\u0629 \u0641\u064A \u0627\u0644\u0645\u0648\u0642\u0639.",pillCompareTop2:"\u0642\u0627\u0631\u0646 \u0623\u0641\u0636\u0644 2",pillCompareTop2Query:"\u0642\u0627\u0631\u0646 \u0628\u064A\u0646 {a} \u0648 {b}",pillFindAlternatives:"\u0627\u0628\u062D\u062B \u0639\u0646 \u0628\u062F\u0627\u0626\u0644",pillFindAlternativesQuery:"\u0645\u0627 \u0647\u064A \u0627\u0644\u0628\u062F\u0627\u0626\u0644 \u0627\u0644\u062C\u064A\u062F\u0629 \u0644\u0640 {name}\u061F",pillMoreOn:"\u0627\u0644\u0645\u0632\u064A\u062F \u0639\u0646 {name}",pillMoreOnQuery:"\u0623\u062E\u0628\u0631\u0646\u064A \u0627\u0644\u0645\u0632\u064A\u062F \u0639\u0646 {name}",pillRecommend:"\u0623\u0648\u0635\u0650 \u0628\u0634\u064A\u0621",pillRecommendQuery:"\u0645\u0627\u0630\u0627 \u062A\u0648\u0635\u064A \u0644\u064A\u061F",pillShowPopular:"\u0639\u0631\u0636 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0634\u0627\u0626\u0639\u0629",pillShowPopularQuery:"\u0645\u0627 \u0647\u064A \u0645\u0646\u062A\u062C\u0627\u062A\u0643 \u0627\u0644\u0623\u0643\u062B\u0631 \u0634\u0639\u0628\u064A\u0629\u061F",pillSimilarOptions:"\u062E\u064A\u0627\u0631\u0627\u062A \u0645\u0634\u0627\u0628\u0647\u0629",pillSimilarOptionsQuery:"\u0623\u0631\u0646\u064A \u0627\u0644\u0645\u0632\u064A\u062F \u0627\u0644\u0645\u0634\u0627\u0628\u0647 \u0644\u0640 {name}",pillUnder:"\u0623\u0642\u0644 \u0645\u0646 {amount}",pillUnderQuery:"\u0623\u0638\u0647\u0631 \u0644\u064A \u062E\u064A\u0627\u0631\u0627\u062A \u0628\u0633\u0639\u0631 \u0623\u0642\u0644 \u0645\u0646 {amount}",pillWhichBest:"\u0623\u064A\u0647\u0645\u0627 \u0627\u0644\u0623\u0641\u0636\u0644\u061F",pillWhichBestQuery:"\u0623\u064A\u0647\u0645\u0627 \u062A\u0648\u0635\u064A \u0648\u0644\u0645\u0627\u0630\u0627\u061F",replyingOriginal:"\u0623\u0631\u062F\u0651 \u0628\u0627\u0644\u0644\u063A\u0629 {lang}\u060C \u0648\u0627\u0644\u0646\u062A\u0627\u0626\u062C \u0643\u0645\u0627 \u0643\u062A\u0628\u0647\u0627 \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0642\u0639. \u0627\u0633\u0623\u0644\u0646\u064A \u0623\u064A \u0634\u064A\u0621.",replyingTranslated:"\u0623\u0631\u062F\u0651 \u0628\u0627\u0644\u0644\u063A\u0629 {lang}\u060C \u0648\u0627\u0644\u0646\u062A\u0627\u0626\u062C \u0645\u062A\u0631\u062C\u0645\u0629 \u0623\u064A\u0636\u064B\u0627. \u0627\u0633\u0623\u0644\u0646\u064A \u0623\u064A \u0634\u064A\u0621.",statusSent:"\u062A\u0645 \u0627\u0644\u0625\u0631\u0633\u0627\u0644",statusStopped:"\u062A\u0645 \u0627\u0644\u0625\u0631\u0633\u0627\u0644 \xB7 \u062A\u0645 \u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0631\u062F",thinking:"\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u0641\u0643\u064A\u0631",thoughtForSeconds:"\u0641\u0643\u0631\u062A \u0644\u0645\u062F\u0629 {duration}",thoughtProcess:"\u0639\u0645\u0644\u064A\u0629 \u0627\u0644\u062A\u0641\u0643\u064A\u0631",vizDisclaimerImage:"\u062A\u0645 \u0627\u0644\u0625\u0646\u0634\u0627\u0621 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u2014 \u0642\u062F \u062A\u062E\u062A\u0644\u0641 \u0627\u0644\u0623\u0644\u0648\u0627\u0646 \u0648\u0627\u0644\u062D\u062C\u0645 \u0648\u0627\u0644\u0645\u0648\u0636\u0639 \u0639\u0646 \u0627\u0644\u0645\u0646\u062A\u062C \u0627\u0644\u062D\u0642\u064A\u0642\u064A.",vizDisclaimerVideo:"\u062A\u0645 \u0627\u0644\u0625\u0646\u0634\u0627\u0621 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u2014 \u0642\u062F \u062A\u062E\u062A\u0644\u0641 \u0627\u0644\u0623\u0644\u0648\u0627\u0646 \u0648\u0627\u0644\u062D\u062C\u0645 \u0648\u0627\u0644\u062D\u0631\u0643\u0629 \u0639\u0646 \u0627\u0644\u0645\u0646\u062A\u062C \u0627\u0644\u062D\u0642\u064A\u0642\u064A.",vizUnavailable:"\u062A\u0639\u0630\u0631 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0639\u0627\u064A\u0646\u0629.",voiceListening:"\u062C\u0627\u0631\u064A \u0627\u0644\u0627\u0633\u062A\u0645\u0627\u0639... \u0627\u0636\u063A\u0637 \u0639\u0644\u0649 \u0627\u0644\u0645\u064A\u0643\u0631\u0648\u0641\u0648\u0646 \u0644\u0644\u0625\u064A\u0642\u0627\u0641",voiceSending:"\u062A\u0645\u0627\u0645 \u2014 \u062C\u0627\u0631\u064A \u0627\u0644\u0625\u0631\u0633\u0627\u0644...",termsStepTitle:"\u0627\u0644\u062E\u0635\u0648\u0635\u064A\u0629 \u0648\u0634\u0631\u0648\u0637 \u0627\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645",termsStepSubtitle:"\u0634\u0641\u0627\u0641\u064A\u0629 \u0643\u0627\u0645\u0644\u0629\u060C \u0648\u0647\u0648\u064A\u0629 \u0645\u062C\u0647\u0648\u0644\u0629\u060C \u0648\u0628\u062F\u0648\u0646 \u062C\u0645\u0639 \u0623\u064A \u0628\u064A\u0627\u0646\u0627\u062A \u0634\u062E\u0635\u064A\u0629.",termsPiiTitle:"\u0639\u062F\u0645 \u062C\u0645\u0639 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0634\u062E\u0635\u064A\u0629",termsPiiDesc:"\u0646\u062D\u0646 \u0644\u0627 \u0646\u062C\u0645\u0639 \u0623\u0648 \u0646\u0637\u0644\u0628 \u0623\u0648 \u0646\u062E\u0632\u0646 \u0623\u064A \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u062A\u0639\u0631\u064A\u0641 \u0634\u062E\u0635\u064A\u0629 (\u0644\u0627 \u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\u060C \u0644\u0627 \u0623\u0631\u0642\u0627\u0645 \u0647\u0648\u0627\u062A\u0641\u060C \u0648\u0644\u0627 \u0647\u0648\u064A\u0627\u062A \u062D\u0642\u064A\u0642\u064A\u0629) \u0645\u0646 \u0645\u062D\u0627\u062F\u062B\u0627\u062A\u0643 \u0623\u0648 \u062C\u0644\u0633\u0627\u062A\u0643 \u0627\u0644\u0635\u0648\u062A\u064A\u0629.",termsSessionTitle:"\u0645\u0639\u0631\u0651\u0641\u0627\u062A \u062C\u0644\u0633\u0629 \u0645\u062C\u0647\u0648\u0644\u0629",termsSessionDesc:"\u062A\u0633\u062A\u062E\u062F\u0645 \u062C\u0644\u0633\u062A\u0643 \u0645\u0639\u0631\u0651\u0641\u064B\u0627 \u0645\u062C\u0647\u0648\u0644\u0627\u064B \u0645\u0646 \u062C\u0627\u0646\u0628 \u0627\u0644\u0639\u0645\u064A\u0644 \u0641\u0642\u0637 \u0644\u0644\u062D\u0641\u0627\u0638 \u0639\u0644\u0649 \u0627\u0644\u0633\u064A\u0627\u0642\u060C \u0648\u0644\u0627 \u064A\u062A\u0645 \u0631\u0628\u0637\u0647 \u0628\u0647\u0648\u064A\u062A\u0643 \u0627\u0644\u062D\u0642\u064A\u0642\u064A\u0629 \u0623\u0628\u062F\u0627\u064B.",termsMemoryTitle:"\u0645\u062D\u0627\u062F\u062B\u0627\u062A \u0645\u0624\u0642\u062A\u0629 \u0645\u0642\u0627\u0628\u0644 \u062E\u0632\u064A\u0646\u0629 \u0645\u064A\u0645\u064A",termsMemoryDesc:'\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A \u0627\u0644\u0639\u0627\u062F\u064A\u0629 \u0645\u0624\u0642\u062A\u0629 \u2014 \u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0646\u0627\u0641\u0630\u0629 \u0623\u0648 \u0645\u0633\u062D \u0627\u0644\u062F\u0631\u062F\u0634\u0629 \u064A\u0646\u0647\u064A\u0647\u0627 \u0646\u0647\u0627\u0626\u064A\u064B\u0627. \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u062A\u064A \u062A\u062D\u0641\u0638\u0647\u0627 \u0639\u0628\u0631 "@kiku" \u0645\u0634\u0641\u0631\u0629 \u0648\u064A\u0645\u0643\u0646 \u0641\u062A\u062D\u0647\u0627 \u0641\u064A mimi.akropolys.cloud \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0645\u0641\u062A\u0627\u062D\u0643 \u0627\u0644\u0633\u0631\u064A.',termsCookieTitle:"\u0628\u064A\u0627\u0646\u0627\u062A \u062A\u062A\u0628\u0639 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0645\u0636\u064A\u0641",termsCookieDesc:"\u0642\u062F \u064A\u0642\u0648\u0645 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0645\u0636\u064A\u0641 \u0628\u062C\u0645\u0639 \u0645\u0644\u0641\u0627\u062A \u062A\u0639\u0631\u064A\u0641 \u0627\u0644\u0627\u0631\u062A\u0628\u0627\u0637 \u0648\u0627\u0644\u062A\u062D\u0644\u064A\u0644\u0627\u062A \u0648\u0641\u0642\u064B\u0627 \u0644\u0633\u064A\u0627\u0633\u0629 \u0645\u0644\u0641\u0627\u062A \u062A\u0639\u0631\u064A\u0641 \u0627\u0644\u0627\u0631\u062A\u0628\u0627\u0637 \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0647\u060C \u0648\u0647\u064A \u062E\u0627\u0631\u062C\u0629 \u0639\u0646 \u0633\u064A\u0637\u0631\u0629 kiku.",termsAgreeButton:"\u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0648\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629",termsAgreeCounting:"\u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0648\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 ({seconds} \u062B)",termsPlaceholder:"\u064A\u0631\u062C\u0649 \u0645\u0631\u0627\u062C\u0639\u0629 \u0648\u0642\u0628\u0648\u0644 \u0627\u0644\u062E\u0635\u0648\u0635\u064A\u0629 \u0648\u0627\u0644\u0634\u0631\u0648\u0637 \u0623\u0639\u0644\u0627\u0647...",whatHaveYouSaved:"\u0645\u0627\u0630\u0627 \u062D\u0641\u0638\u062A\u061F",voiceHint:"\u062A\u062D\u062F\u062B \u0641\u0642\u0637 \u2014 \u0633\u0623\u062C\u064A\u0628 \u0639\u0646\u062F\u0645\u0627 \u062A\u062A\u0648\u0642\u0641.",voiceModeExit:"\u0627\u0644\u062E\u0631\u0648\u062C \u0645\u0646 \u0627\u0644\u0648\u0636\u0639 \u0628\u062F\u0648\u0646 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u064A\u062F\u064A\u0646",voiceModeStart:"\u0645\u062D\u0627\u062F\u062B\u0629 \u0628\u062F\u0648\u0646 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u064A\u062F\u064A\u0646",voiceMuted:"\u0645\u0643\u062A\u0648\u0645",voiceMutedHint:"\u0627\u0636\u063A\u0637 \u0639\u0644\u0649 \u0627\u0644\u0645\u064A\u0643\u0631\u0648\u0641\u0648\u0646 \u0644\u0644\u062A\u062D\u062F\u062B \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",voicePhaseListening:"\u0627\u0633\u062A\u0645\u0627\u0639",voicePhaseSpeaking:"\u062A\u062D\u062F\u062B",voicePhaseThinking:"\u062A\u0641\u0643\u064A\u0631"},chinese:{allSet:"\u60A8\u5DF2\u51C6\u5907\u597D\uFF0C{name}\u3002",asWritten:"\u5982\u539F\u6587\u6240\u793A",captureAll:"\u6355\u83B7\u5168\u90E8\uFF08{count}\uFF09",captureAndRemember:"kiku \u2014 \u6355\u83B7\u5E76\u8BB0\u4F4F",captureCurrentPage:"\u6355\u83B7\u5F53\u524D\u9875\u9762",cardClickAnswer:"{name}",cardClickQuery:"\u544A\u8BC9\u6211\u66F4\u591A\u5173\u4E8E {name}{price} \u2014 \u5173\u952E\u7EC6\u8282\u662F\u4EC0\u4E48\uFF0C\u6700\u9002\u5408\u8C01\uFF0C\u6211\u9700\u8981\u4E86\u89E3\u4EC0\u4E48\uFF1F",clearChat:"\u6E05\u9664\u804A\u5929",defaultPlaceholder:"\u968F\u4FBF\u95EE\u6211\u4EFB\u4F55\u4E8B\u2026",deleteThis:"\u5220\u9664\u6B64\u9879",detailsTranslated:"\u8BE6\u60C5\u5DF2\u7FFB\u8BD1\u3002\u6570\u5B57\u548C\u94FE\u63A5\u4FDD\u6301\u539F\u6837\u3002",displayCapture:"\u6355\u83B7 {name}",displayCaptureAll:"\u6355\u83B7\u5168\u90E8\uFF08{count} \u9879\uFF09",displayDelete:"\u5220\u9664\u6B64\u9879",displayViewHistory:"\u6211\u4FDD\u5B58\u4E86\u4EC0\u4E48\uFF1F",entityLangIntro:"\u6211\u4F1A\u7528 {lang} \u56DE\u590D\u3002\u7ED3\u679C\u5361\u7247\u53EF\u4EE5\u4FDD\u6301\u7F51\u7AD9\u539F\u6587\uFF0C\u4E5F\u53EF\u4EE5\u7FFB\u8BD1\u3002",entityLangPlaceholder:"\u4ECE\u4E0A\u9762\u7684\u4E24\u5F20\u5361\u7247\u4E2D\u9009\u62E9\u4E00\u4E2A\u2026",errAccessRevoked:"\u60A8\u7684\u8BBF\u95EE\u6743\u9650\u5DF2\u88AB\u5546\u5E97\u64A4\u9500\u3002",errAccountRequired:"\u8BF7\u521B\u5EFA\u8D26\u6237\u4EE5\u7EE7\u7EED\u4F7F\u7528\u804A\u5929\u52A9\u624B\u3002",errShopperReplyLimit:"\u60A8\u5DF2\u8FBE\u5230\u6B64\u7AD9\u70B9\u5BF9\u60A8\u8D26\u6237\u7684\u56DE\u590D\u4E0A\u9650\u3002",errStreamInterrupted:"\u56DE\u590D\u88AB\u4E2D\u65AD\u3002\u8BF7\u518D\u8BD5\u4E00\u6B21\u3002",errTokenLimit:"\u60A8\u5DF2\u8FBE\u5230\u4F7F\u7528\u4E0A\u9650\u3002\u8BF7\u5728\u4EEA\u8868\u677F\u4E2D\u66F4\u65B0\u8BA1\u8D39\u4E0A\u9650\u4EE5\u7EE7\u7EED\u3002",errTooManyRequests:"\u52A9\u624B\u5F53\u524D\u8BF7\u6C42\u8FC7\u591A\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002",footerHint:"kiku \xB7 \u5B9E\u65F6\u641C\u7D22\u6574\u4E2A\u76EE\u5F55",greetReturning:"\u60A8\u597D\uFF0C{name}\u3002",greetReturningLead:"\u4ECA\u5929\u6211\u80FD\u4E3A\u60A8\u627E\u5230\u4EC0\u4E48\uFF1F",howShouldResultsLook:"\u7ED3\u679C\u5E94\u8BE5\u662F\u4EC0\u4E48\u6837\u5B50\uFF1F",inLanguage:"\u4F7F\u7528 {lang}",namePlaceholder:"\u8F93\u5165\u60A8\u7684\u540D\u5B57\u2026",nameStepAsk:"\u6211\u8BE5\u600E\u4E48\u79F0\u547C\u60A8\uFF1F",nameStepLead:"\u6211\u53EF\u4EE5\u4E3A\u60A8\u641C\u7D22\u3001\u53EF\u89C6\u5316\u6216\u6355\u83B7\u4EFB\u4F55\u5185\u5BB9\u2014\u2014\u5728\u6B64\u7AD9\u70B9\u6216\u5176\u4ED6\u4EFB\u4F55\u7AD9\u70B9\u3002",nameStepTitle:"\u5F88\u9AD8\u5174\u89C1\u5230\u60A8\u3002",namesAsWritten:"\u540D\u79F0\u548C\u8BE6\u60C5\u5B8C\u5168\u6309\u7AD9\u70B9\u5217\u51FA\u3002",pillCompareTop2:"\u6BD4\u8F83\u524D\u4E24\u9879",pillCompareTop2Query:"\u6BD4\u8F83 {a} \u548C {b}",pillFindAlternatives:"\u5BFB\u627E\u66FF\u4EE3\u54C1",pillFindAlternativesQuery:"\u6709\u4EC0\u4E48\u597D\u7684\u66FF\u4EE3\u54C1\u53EF\u4EE5\u66FF\u4EE3 {name}\uFF1F",pillMoreOn:"\u66F4\u591A\u5173\u4E8E {name}",pillMoreOnQuery:"\u544A\u8BC9\u6211\u66F4\u591A\u5173\u4E8E {name}",pillRecommend:"\u63A8\u8350\u4E00\u4E9B\u4E1C\u897F",pillRecommendQuery:"\u60A8\u4F1A\u63A8\u8350\u4EC0\u4E48\u7ED9\u6211\uFF1F",pillShowPopular:"\u663E\u793A\u70ED\u95E8\u9879\u76EE",pillShowPopularQuery:"\u60A8\u6700\u53D7\u6B22\u8FCE\u7684\u9879\u76EE\u662F\u4EC0\u4E48\uFF1F",pillSimilarOptions:"\u76F8\u4F3C\u9009\u9879",pillSimilarOptionsQuery:"\u5C55\u793A\u66F4\u591A\u7C7B\u4F3C {name} \u7684\u5185\u5BB9",pillUnder:"\u4F4E\u4E8E {amount}",pillUnderQuery:"\u5C55\u793A\u4F4E\u4E8E {amount} \u7684\u9009\u9879",pillWhichBest:"\u54EA\u4E00\u4E2A\u6700\u597D\uFF1F",pillWhichBestQuery:"\u60A8\u4F1A\u63A8\u8350\u54EA\u4E00\u4E2A\uFF0C\u4E3A\u4EC0\u4E48\uFF1F",replyingOriginal:"\u7528 {lang} \u56DE\u590D\uFF0C\u7ED3\u679C\u4FDD\u6301\u7F51\u7AD9\u539F\u6587\u3002\u968F\u4FBF\u95EE\u6211\u4EFB\u4F55\u4E8B\u3002",replyingTranslated:"\u7528 {lang} \u56DE\u590D\uFF0C\u7ED3\u679C\u4E5F\u5DF2\u7FFB\u8BD1\u3002\u968F\u4FBF\u95EE\u6211\u4EFB\u4F55\u4E8B\u3002",statusSent:"\u5DF2\u53D1\u9001",statusStopped:"\u5DF2\u53D1\u9001 \xB7 \u56DE\u590D\u5DF2\u505C\u6B62",thinking:"\u601D\u8003\u4E2D",thoughtForSeconds:"\u601D\u8003\u4E86 {duration}",thoughtProcess:"\u601D\u8003\u8FC7\u7A0B",termsStepTitle:"\u9690\u79C1\u4E0E\u4F7F\u7528\u6761\u6B3E",termsStepSubtitle:"\u900F\u660E\u3001\u533F\u540D\uFF0C\u4ECE\u8BBE\u8BA1\u4E4B\u521D\u5373\u96F6\u4E2A\u4EBA\u8EAB\u4EFD\u4FE1\u606F\u3002",termsPiiTitle:"\u96F6\u4E2A\u4EBA\u8EAB\u4EFD\u4FE1\u606F\u6536\u96C6",termsPiiDesc:"\u6211\u4EEC\u7EDD\u4E0D\u4F1A\u4ECE\u60A8\u7684\u5BF9\u8BDD\u6216\u8BED\u97F3\u4E2D\u6536\u96C6\u6216\u5B58\u50A8\u4EFB\u4F55\u4E2A\u4EBA\u8EAB\u4EFD\u4FE1\u606F\uFF08\u65E0\u90AE\u7BB1\u3001\u7535\u8BDD\u53F7\u7801\u6216\u771F\u5B9E\u59D3\u540D\uFF09\u3002",termsSessionTitle:"\u533F\u540D\u4F1A\u8BDD\u51ED\u8BC1",termsSessionDesc:"\u60A8\u7684\u4F1A\u8BDD\u4EC5\u4F7F\u7528\u5BA2\u6237\u7AEF\u751F\u6210\u7684\u533F\u540D\u6807\u8BC6\u7B26\u6765\u7EF4\u6301\u4E0A\u4E0B\u6587\uFF0C\u7EDD\u4E0D\u4E0E\u60A8\u7684\u771F\u5B9E\u8EAB\u4EFD\u5173\u8054\u3002",termsMemoryTitle:"\u5373\u65F6\u4F1A\u8BDD vs. Mimi \u8BB0\u5FC6\u5E93",termsMemoryDesc:'\u666E\u901A\u5BF9\u8BDD\u5B8C\u5168\u5373\u65F6\u5904\u7406\u2014\u2014\u5173\u95ED\u6216\u6E05\u9664\u804A\u5929\u5373\u53EF\u5F7B\u5E95\u9500\u6BC1\u3002\u4F7F\u7528 "@kiku" \u4FDD\u5B58\u7684\u5185\u5BB9\u7ECF\u8FC7\u52A0\u5BC6\uFF0C\u53EF\u5728 mimi.akropolys.cloud \u4F7F\u7528\u60A8\u7684\u79C1\u94A5\u968F\u65F6\u89E3\u9501\u3002',termsCookieTitle:"\u5BBF\u4E3B\u7F51\u7AD9\u9065\u6D4B",termsCookieDesc:"\u5D4C\u5165 kiku \u7684\u5BBF\u4E3B\u7F51\u7AD9\u53EF\u80FD\u4F1A\u6839\u636E\u5176\u81EA\u8EAB\u7684 Cookie \u653F\u7B56\u6536\u96C6\u6D4F\u89C8\u6570\u636E\uFF0C\u4E0D\u53D7 kiku \u63A7\u5236\u3002",termsAgreeButton:"\u540C\u610F\u5E76\u7EE7\u7EED",termsAgreeCounting:"\u540C\u610F\u5E76\u7EE7\u7EED ({seconds}\u79D2)",termsPlaceholder:"\u8BF7\u67E5\u9605\u5E76\u540C\u610F\u4E0A\u65B9\u7684\u9690\u79C1\u4E0E\u6761\u6B3E\u2026",whatHaveYouSaved:"\u6211\u4FDD\u5B58\u4E86\u4EC0\u4E48\uFF1F",keyAutoHide:"\u5C06\u5728 {seconds} \u79D2\u540E\u81EA\u52A8\u9690\u85CF\u3002",keyCopied:"\u5DF2\u590D\u5236",keyCopyId:"\u590D\u5236 ID",keyCopySecret:"\u590D\u5236\u5BC6\u94A5",keyCreateNew:"\u6211\u662F\u65B0\u7528\u6237 \u2014 \u521B\u5EFA\u4E00\u4E2A",keyCreating:"\u6B63\u5728\u521B\u5EFA\u2026",keyDismiss:"\u5173\u95ED",keyPastePlaceholder:"\u60A8\u7684\u516C\u5F00 ID\u2026",keyPastePrompt:"\u7C98\u8D34\u60A8\u7684\u516C\u5F00 ID \u2014 \u6216\u521B\u5EFA\u4E00\u4E2A",keyPublicHint:"\u5728\u4EFB\u4F55\u7F51\u7AD9\u4E0A\u7C98\u8D34\u6B64 ID \u5373\u53EF\u4FDD\u5B58\u5230\u76F8\u540C\u7684\u8BB0\u5FC6\u5E93\u4E2D\u3002",keyPublicTitle:"\u60A8\u7684\u516C\u5F00 ID",keySecretHint:"\u8BF7\u59A5\u5584\u4FDD\u7BA1 \u2014 \u7528\u4E8E\u89E3\u9501\u60A8\u7684\u8BB0\u5FC6\u5E93\u3002",keySecretTitle:"\u60A8\u7684\u5BC6\u94A5 \u2014 \u4EC5\u663E\u793A\u4E00\u6B21",keyUseMine:"\u4F7F\u7528\u6211\u7684 ID",kikuActionUnavailable:"\u62B1\u6B49 \u2014 \u6B64\u7AD9\u70B9\u6682\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C\u3002",kikuCaptureDbError:"\u7531\u4E8E\u6570\u636E\u5E93\u9519\u8BEF\uFF0C\u4FDD\u5B58\u5931\u8D25\u3002",kikuCaptureNoContext:"\u7531\u4E8E\u672A\u63D0\u4F9B\u9875\u9762\u6216\u4EA7\u54C1\u4E0A\u4E0B\u6587\uFF0C\u4FDD\u5B58\u5931\u8D25\u3002",kikuCaptureNoUrl:"\u65E0\u6CD5\u4FDD\u5B58\u4EFB\u4F55\u9879\u76EE \u2014 \u5747\u65E0\u6709\u6548\u7F51\u5740\u3002",kikuCaptureNoneSelected:"\u672A\u9009\u62E9\u8981\u4FDD\u5B58\u7684\u9879\u76EE\u3002",kikuDeleteDbError:"\u7531\u4E8E\u6570\u636E\u5E93\u9519\u8BEF\uFF0C\u5220\u9664\u5931\u8D25\u3002",kikuDeleteDone:"\u5DF2\u4ECE\u4FDD\u5B58\u7684\u9879\u76EE\u4E2D\u79FB\u9664\u3002",kikuDeleteNoContext:"\u672A\u63D0\u4F9B\u9875\u9762\u4E0A\u4E0B\u6587\u4EE5\u786E\u5B9A\u8981\u5220\u9664\u7684\u5185\u5BB9\u3002",kikuMemoryIntro:"\u60A8\u5728\u5404\u7AD9\u70B9\u4FDD\u5B58\u7684\u6240\u6709\u5185\u5BB9\u5747\u5B58\u50A8\u5728\u60A8\u7684\u79C1\u6709\u8BB0\u5FC6\u5E93\u4E2D\u3002\u4F7F\u7528\u60A8\u7684\u5BC6\u94A5\u89E3\u9501\uFF1A",kikuMintNeeded:"\u8981\u5728\u8DE8\u7AD9\u70B9\u4FDD\u5B58\u9879\u76EE\uFF0C\u60A8\u9700\u8981\u4E00\u4E2A kiku \u5BC6\u94A5 \u2014 \u6211\u5C06\u4E3A\u60A8\u751F\u6210\u4E00\u4E2A\u3002\u8BE5\u5BC6\u94A5\u4EC5\u663E\u793A\u4E00\u6B21\uFF0C\u8BF7\u59A5\u5584\u4FDD\u5B58\u3002",kikuMintOffer:"\u6211\u53EF\u4EE5\u4E3A\u60A8\u4FDD\u5B58\u5E76\u8DDF\u968F\u60A8\u8DE8\u7AD9\u70B9\u540C\u6B65 \u2014 \u6211\u5C06\u4E3A\u60A8\u751F\u6210\u4E00\u4E2A kiku \u5BC6\u94A5\u3002\u4EC5\u663E\u793A\u4E00\u6B21\uFF0C\u8BF7\u59A5\u5584\u4FDD\u5B58\u3002",kikuNeedKeyToUpdate:"\u8F93\u5165\u60A8\u7684 kiku \u5BC6\u94A5\u4EE5\u4FBF\u6211\u67E5\u627E\u5E76\u66F4\u65B0\u60A8\u4FDD\u5B58\u7684\u9879\u76EE\u3002",micDenied:"\u9EA6\u514B\u98CE\u5DF2\u88AB\u963B\u6B62\u3002\u8BF7\u5141\u8BB8\u6B64\u7AD9\u70B9\u8BBF\u95EE\u9EA6\u514B\u98CE\uFF0C\u7136\u540E\u91CD\u8BD5\u3002",micFailed:"\u672A\u80FD\u542C\u6E05\u3002\u8BF7\u91CD\u8BD5\u3002",micInsecure:"\u8BED\u97F3\u529F\u80FD\u9700\u8981\u5B89\u5168\u8FDE\u63A5 (HTTPS)\u3002",micLangUnsupported:"\u6B64\u6D4F\u89C8\u5668\u6682\u4E0D\u652F\u6301\u8BE5\u8BED\u8A00\u7684\u8BED\u97F3\u8F6C\u5F55\u3002\u8BF7\u4F7F\u7528\u6587\u5B57\u8F93\u5165\u3002",micMissing:"\u672A\u627E\u5230\u9EA6\u514B\u98CE\u3002",micNetwork:"\u8BED\u97F3\u529F\u80FD\u9700\u8981\u7F51\u7EDC\u8FDE\u63A5\u3002\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5\u3002",micNoSpeech:"\u672A\u68C0\u6D4B\u5230\u58F0\u97F3\u3002\u8BF7\u9760\u8FD1\u9EA6\u514B\u98CE\u540E\u91CD\u8BD5\u3002",vizDisclaimerImage:"\u7531\u4EBA\u5DE5\u667A\u80FD\u751F\u6210 \u2014 \u989C\u8272\u3001\u5C3A\u5BF8\u548C\u4F4D\u7F6E\u53EF\u80FD\u4E0E\u5B9E\u7269\u7565\u6709\u4E0D\u540C\u3002",vizDisclaimerVideo:"\u7531\u4EBA\u5DE5\u667A\u80FD\u751F\u6210 \u2014 \u989C\u8272\u3001\u5C3A\u5BF8\u548C\u52A8\u4F5C\u53EF\u80FD\u4E0E\u5B9E\u7269\u7565\u6709\u4E0D\u540C\u3002",vizUnavailable:"\u65E0\u6CD5\u52A0\u8F7D\u9884\u89C8\u3002",voiceHint:"\u76F4\u63A5\u8BF4\u8BDD\u5373\u53EF \u2014 \u60A8\u505C\u987F\u540E\u6211\u4F1A\u56DE\u7B54\u3002",voiceListening:"\u6B63\u5728\u8046\u542C\u2026 \u70B9\u51FB\u9EA6\u514B\u98CE\u505C\u6B62",voiceModeExit:"\u9000\u51FA\u514D\u63D0\u6A21\u5F0F",voiceModeStart:"\u514D\u63D0\u5BF9\u8BDD",voiceMuted:"\u9759\u97F3",voiceMutedHint:"\u70B9\u51FB\u9EA6\u514B\u98CE\u91CD\u65B0\u5F00\u59CB\u8BF4\u8BDD\u3002",voicePhaseListening:"\u6B63\u5728\u8046\u542C",voicePhaseSpeaking:"\u6B63\u5728\u56DE\u7B54",voicePhaseThinking:"\u6B63\u5728\u601D\u8003",voiceSending:"\u5DF2\u6536\u5230 \u2014 \u6B63\u5728\u53D1\u9001\u2026"},english:{allSet:"You're all set, {name}.",asWritten:"As written",captureAll:"Capture all ({count})",captureAndRemember:"kiku \u2014 capture & remember",captureCurrentPage:"Capture current page",cardClickAnswer:"The {name}",cardClickQuery:"Tell me more about the {name}{price} \u2014 what are its key details, who is it best suited for, and what should I know?",clearChat:"Clear chat",defaultPlaceholder:"Ask me anything\u2026",deleteThis:"Delete this",detailsTranslated:"Details translated. Numbers and links stay exactly as listed.",displayCapture:"capture {name}",displayCaptureAll:"capture all ({count} items)",displayDelete:"delete this",displayViewHistory:"what have you saved?",entityLangIntro:"I reply in {lang}. Result cards can stay exactly as this site wrote them, or be translated too.",entityLangPlaceholder:"Pick one of the two cards above\u2026",errAccessRevoked:"Your access to the assistant has been revoked by the store.",errAccountRequired:"Please create an account to continue using the chat assistant.",errShopperReplyLimit:"You've reached this site's reply limit for your account.",errStreamInterrupted:"The reply was interrupted. Please try again.",errTokenLimit:"You've reached your usage limit. Please update your billing limits in your dashboard to continue.",errTooManyRequests:"The assistant is currently receiving too many requests. Please try again in a few moments.",footerHint:"kiku \xB7 searches the whole catalogue in real time",greetReturning:"Hi, {name}.",greetReturningLead:"What can I find for you today?",howShouldResultsLook:"How should results look?",inLanguage:"In {lang}",keyAutoHide:"Hides automatically in {seconds}s.",keyCopied:"Copied",keyCopyId:"Copy id",keyCopySecret:"Copy secret",keyCreateNew:"I'm new \u2014 create one",keyCreating:"Creating\u2026",keyDismiss:"Dismiss",keyPastePlaceholder:"your public id\u2026",keyPastePrompt:"Paste your public id \u2014 or create one",keyPublicHint:"Paste this on any site to save to the same memory.",keyPublicTitle:"Your public id",keySecretHint:"Keep it private \u2014 use it to unlock your memory.",keySecretTitle:"Your secret \u2014 shown only once",keyUseMine:"Use my id",kikuActionUnavailable:"Sorry \u2014 that action isn't available on this site.",kikuCaptureDbError:"Capture failed due to a database error.",kikuCaptureNoContext:"Capture failed because no page or product context was provided by the SDK.",kikuCaptureNoUrl:"Couldn\u2019t save any items \u2014 none had a valid URL.",kikuCaptureNoneSelected:"No items were selected to capture.",kikuDeleteDbError:"Delete failed due to a database error.",kikuDeleteDone:"Removed it from your saved items.",kikuDeleteNoContext:"Delete failed because no page context was provided to identify what to delete.",kikuMemoryIntro:"Everything you've captured across sites lives in your private memory. Unlock it with your secret:",kikuMintNeeded:"To save items across sites you need a kiku key \u2014 I'll mint one for you. It's shown only once, so save it somewhere safe.",kikuMintOffer:"I can keep this for you and have it follow you across sites \u2014 I'll mint you a kiku key. It's shown only once, so save it somewhere safe.",kikuNeedKeyToUpdate:"Enter your kiku key so I can find and update your saved items.",micDenied:"Microphone blocked. Allow mic access for this site, then try again.",micFailed:"Couldn't hear that. Try again.",micInsecure:"Voice needs a secure (https) connection.",micLangUnsupported:"This browser cannot transcribe that language yet. Type instead.",micMissing:"No microphone found.",micNetwork:"Voice needs a connection right now. Check yours and try again.",micNoSpeech:"Didn't catch anything. Try again, a little closer to the mic.",namePlaceholder:"Type your name\u2026",nameStepAsk:"What should I call you?",nameStepLead:"I can search, visualize, or capture anything for you \u2014 on this site or any other.",nameStepTitle:"Nice to meet you.",namesAsWritten:"Names and details exactly as the site lists them.",pillCompareTop2:"Compare top 2",pillCompareTop2Query:"Compare the {a} and {b}",pillFindAlternatives:"Find alternatives",pillFindAlternativesQuery:"What are good alternatives to the {name}?",pillMoreOn:"More on {name}",pillMoreOnQuery:"Tell me more about the {name}",pillRecommend:"Recommend something",pillRecommendQuery:"What do you recommend for me?",pillShowPopular:"Show popular items",pillShowPopularQuery:"What are your most popular items?",pillSimilarOptions:"Similar options",pillSimilarOptionsQuery:"Show me more like the {name}",pillUnder:"Under {amount}",pillUnderQuery:"Show me options under {amount}",pillWhichBest:"Which is best?",pillWhichBestQuery:"Which one would you recommend and why?",replyingOriginal:"Replying in {lang}, results as this site wrote them. Ask me anything.",replyingTranslated:"Replying in {lang}, results translated too. Ask me anything.",statusSent:"Sent",statusStopped:"Sent \xB7 reply stopped",thinking:"Thinking",thoughtForSeconds:"Thought for {duration}",thoughtProcess:"Thought process",vizDisclaimerImage:"Generated using Artificial Intelligence \u2014 colours, size and placement may differ from the real product.",vizDisclaimerVideo:"Generated using Artificial Intelligence \u2014 colours, size and movement may differ from the real product.",vizUnavailable:"The preview could not be loaded.",voiceHint:"Just talk \u2014 I'll answer when you pause.",voiceListening:"Listening\u2026 tap the mic to stop",voiceModeExit:"Leave hands-free",voiceModeStart:"Hands-free conversation",voiceMuted:"Muted",voiceMutedHint:"Tap the microphone to speak again.",voicePhaseListening:"Listening",voicePhaseSpeaking:"Speaking",voicePhaseThinking:"Thinking",voiceSending:"Got it \u2014 sending\u2026",termsStepTitle:"Privacy & Terms of Use",termsStepSubtitle:"Transparent, anonymous, and zero-PII by design.",termsPiiTitle:"Zero PII Collection",termsPiiDesc:"We never collect or store personal identifying information (no emails, phone numbers, or real-world identities) from your chats or voice sessions.",termsSessionTitle:"Anonymous Session Tokens",termsSessionDesc:"Your session uses an anonymous client-side token solely to maintain context. It is never linked to your real identity.",termsMemoryTitle:"Ephemeral Chats vs. Mimi Vault",termsMemoryDesc:'Regular chats are ephemeral \u2014 closing the tab or clicking "Clear Chat" terminates them forever. Items you save with "@kiku" are encrypted and can be unlocked at mimi.akropolys.cloud with your Secret Access Key.',termsCookieTitle:"Host Website Telemetry",termsCookieDesc:"The host website where Kiku is embedded may collect cookies and analytics per their own cookie policy, outside Kiku's control.",termsAgreeButton:"Agree & Continue",termsAgreeCounting:"Agree & Continue ({seconds}s)",termsPlaceholder:"Please review and accept our Privacy & Terms above\u2026",whatHaveYouSaved:"What have you saved?"},french:{allSet:"C'est tout bon, {name}.",asWritten:"Tel quel",captureAll:"Tout capturer ({count})",captureAndRemember:"kiku \u2014 capturer et m\xE9moriser",captureCurrentPage:"Capturer la page actuelle",cardClickAnswer:"Le {name}",cardClickQuery:"Dites-m'en plus sur le {name}{price} : ses caract\xE9ristiques principales, \xE0 qui il convient le mieux et ce que je devrais savoir.",clearChat:"Effacer le chat",defaultPlaceholder:"Posez-moi n'importe quelle question\u2026",deleteThis:"Supprimer ceci",detailsTranslated:"D\xE9tails traduits. Les chiffres et les liens restent exactement tels qu'ils sont.",displayCapture:"capturer {name}",displayCaptureAll:"tout capturer ({count} articles)",displayDelete:"supprimer ceci",displayViewHistory:"qu'avez-vous enregistr\xE9 ?",entityLangIntro:"Je r\xE9ponds en {lang}. Les fiches de r\xE9sultats peuvent rester exactement telles que ce site les a \xE9crites, ou \xEAtre \xE9galement traduites.",entityLangPlaceholder:"Choisissez l'une des deux fiches ci-dessus\u2026",errAccessRevoked:"Votre acc\xE8s \xE0 l'assistant a \xE9t\xE9 r\xE9voqu\xE9 par le magasin.",errAccountRequired:"Veuillez cr\xE9er un compte pour continuer \xE0 utiliser l'assistant de chat.",errShopperReplyLimit:"Vous avez atteint la limite de r\xE9ponses de ce site pour votre compte.",errStreamInterrupted:"La r\xE9ponse a \xE9t\xE9 interrompue. Veuillez r\xE9essayer.",errTokenLimit:"Vous avez atteint votre limite d'utilisation. Veuillez mettre \xE0 jour vos limites de facturation dans votre tableau de bord pour continuer.",errTooManyRequests:"L'assistant re\xE7oit actuellement trop de requ\xEAtes. Veuillez r\xE9essayer dans quelques instants.",footerHint:"kiku \xB7 recherche dans tout le catalogue en temps r\xE9el",greetReturning:"Bonjour, {name}.",greetReturningLead:"Que puis-je trouver pour vous aujourd'hui ?",howShouldResultsLook:"Comment les r\xE9sultats doivent-ils s'afficher ?",inLanguage:"En {lang}",keyAutoHide:"Se masque automatiquement dans {seconds}s.",keyCopied:"Copi\xE9",keyCopyId:"Copier l'identifiant",keyCopySecret:"Copier le secret",keyCreateNew:"Je suis nouveau \u2014 cr\xE9ez-en un",keyCreating:"Cr\xE9ation en cours\u2026",keyDismiss:"Ignorer",keyPastePlaceholder:"votre identifiant public\u2026",keyPastePrompt:"Collez votre identifiant public \u2014 ou cr\xE9ez-en un",keyPublicHint:"Collez ceci sur n'importe quel site pour enregistrer dans la m\xEAme m\xE9moire.",keyPublicTitle:"Votre identifiant public",keySecretHint:"Gardez-le priv\xE9 \u2014 utilisez-le pour d\xE9verrouiller votre m\xE9moire.",keySecretTitle:"Votre secret \u2014 affich\xE9 une seule fois",keyUseMine:"Utiliser mon identifiant",kikuActionUnavailable:"D\xE9sol\xE9 \u2014 cette action n'est pas disponible sur ce site.",kikuCaptureDbError:"La capture a \xE9chou\xE9 en raison d'une erreur de base de donn\xE9es.",kikuCaptureNoContext:"La capture a \xE9chou\xE9 car aucun contexte de page ou de produit n'a \xE9t\xE9 fourni par le SDK.",kikuCaptureNoUrl:"Impossible d'enregistrer des articles \u2014 aucun n'avait d'URL valide.",kikuCaptureNoneSelected:"Aucun article n'a \xE9t\xE9 s\xE9lectionn\xE9 pour la capture.",kikuDeleteDbError:"La suppression a \xE9chou\xE9 en raison d'une erreur de base de donn\xE9es.",kikuDeleteDone:"Je l'ai retir\xE9 de vos articles enregistr\xE9s.",kikuDeleteNoContext:"La suppression a \xE9chou\xE9 car aucun contexte de page n'a \xE9t\xE9 fourni pour identifier ce qu'il fallait supprimer.",kikuMemoryIntro:"Tout ce que vous avez captur\xE9 sur les sites se trouve dans votre m\xE9moire priv\xE9e. D\xE9verrouillez-la avec votre secret :",kikuMintNeeded:"Pour enregistrer des articles sur diff\xE9rents sites, vous avez besoin d'une cl\xE9 kiku \u2014 je vais en cr\xE9er une pour vous. Elle n'est affich\xE9e qu'une seule fois, alors enregistrez-la en lieu s\xFBr.",kikuMintOffer:"Je peux garder ceci pour vous et le faire vous suivre sur les sites \u2014 je vais vous cr\xE9er une cl\xE9 kiku. Elle n'est affich\xE9e qu'une seule fois, alors enregistrez-la en lieu s\xFBr.",kikuNeedKeyToUpdate:"Entrez votre cl\xE9 kiku afin que je puisse trouver et mettre \xE0 jour vos articles enregistr\xE9s.",micDenied:"Microphone bloqu\xE9. Autorisez l'acc\xE8s au micro pour ce site, puis r\xE9essayez.",micFailed:"Je n'ai pas entendu. R\xE9essayez.",micInsecure:"La voix n\xE9cessite une connexion s\xE9curis\xE9e (https).",micLangUnsupported:"Ce navigateur ne peut pas encore transcrire cette langue. Veuillez taper \xE0 la place.",micMissing:"Aucun microphone d\xE9tect\xE9.",micNetwork:"La voix n\xE9cessite une connexion en ce moment. V\xE9rifiez la v\xF4tre et r\xE9essayez.",micNoSpeech:"Je n'ai rien entendu. R\xE9essayez, un peu plus pr\xE8s du micro.",namePlaceholder:"Tapez votre nom\u2026",nameStepAsk:"Comment dois-je vous appeler ?",nameStepLead:"Je peux chercher, visualiser ou capturer n'importe quoi pour vous \u2014 sur ce site ou n'importe quel autre.",nameStepTitle:"Enchant\xE9 de vous rencontrer.",namesAsWritten:"Noms et d\xE9tails exactement tels qu'ils sont list\xE9s sur le site.",pillCompareTop2:"Comparer les 2 meilleurs",pillCompareTop2Query:"Comparez le {a} et le {b}",pillFindAlternatives:"Trouver des alternatives",pillFindAlternativesQuery:"Quelles sont de bonnes alternatives au {name} ?",pillMoreOn:"Plus sur {name}",pillMoreOnQuery:"Dites-m'en plus sur le {name}",pillRecommend:"Recommander quelque chose",pillRecommendQuery:"Que me recommandez-vous ?",pillShowPopular:"Afficher les articles populaires",pillShowPopularQuery:"Quels sont vos articles les plus populaires ?",pillSimilarOptions:"Options similaires",pillSimilarOptionsQuery:"Montrez-m'en plus comme le {name}",pillUnder:"Moins de {amount}",pillUnderQuery:"Montrez-moi des options \xE0 moins de {amount}",pillWhichBest:"Lequel est le meilleur ?",pillWhichBestQuery:"Lequel recommanderiez-vous et pourquoi ?",replyingOriginal:"Je r\xE9ponds en {lang}, les r\xE9sultats sont tels que le site les a \xE9crits. Posez-moi n'importe quelle question.",replyingTranslated:"Je r\xE9ponds en {lang}, les r\xE9sultats sont \xE9galement traduits. Posez-moi n'importe quelle question.",statusSent:"Envoy\xE9",statusStopped:"Envoy\xE9 \xB7 r\xE9ponse arr\xEAt\xE9e",thinking:"R\xE9flexion en cours",thoughtForSeconds:"R\xE9flexion pendant {duration}",thoughtProcess:"Processus de r\xE9flexion",vizDisclaimerImage:"G\xE9n\xE9r\xE9 par Intelligence Artificielle \u2014 les couleurs, la taille et le placement peuvent diff\xE9rer du produit r\xE9el.",vizDisclaimerVideo:"G\xE9n\xE9r\xE9 par Intelligence Artificielle \u2014 les couleurs, la taille et le mouvement peuvent diff\xE9rer du produit r\xE9el.",vizUnavailable:"L'aper\xE7u n'a pas pu \xEAtre charg\xE9.",voiceListening:"\xC9coute\u2026 touchez le micro pour arr\xEAter",voiceSending:"Bien re\xE7u \u2014 envoi en cours\u2026",termsStepTitle:"Confidentialit\xE9 et conditions d'utilisation",termsStepSubtitle:"Transparent, anonyme et sans collecte de donn\xE9es personnelles.",termsPiiTitle:"Z\xE9ro collecte de donn\xE9es personnelles",termsPiiDesc:"Nous ne collectons ni ne stockons aucune information d'identification personnelle (ni e-mail, ni num\xE9ro de t\xE9l\xE9phone, ni identit\xE9 r\xE9elle) depuis vos discussions ou sessions vocales.",termsSessionTitle:"Jetons de session anonymes",termsSessionDesc:"Votre session utilise un identifiant anonyme c\xF4t\xE9 client uniquement pour maintenir le contexte, jamais li\xE9 \xE0 votre identit\xE9 r\xE9elle.",termsMemoryTitle:"Discussions \xE9ph\xE9m\xE8res vs Coffre Mimi",termsMemoryDesc:"Les discussions normales sont \xE9ph\xE9m\xE8res \u2014 fermer ou effacer le chat les d\xE9truit pour toujours. Les \xE9l\xE9ments enregistr\xE9s avec \xAB @kiku \xBB sont chiffr\xE9s et accessibles sur mimi.akropolys.cloud avec votre cl\xE9 secr\xE8te.",termsCookieTitle:"T\xE9l\xE9m\xE9trie du site h\xF4te",termsCookieDesc:"Le site h\xF4te sur lequel kiku est int\xE9gr\xE9 peut collecter des cookies et des donn\xE9es d'analyse selon sa propre politique de cookies, hors du contr\xF4le de kiku.",termsAgreeButton:"Accepter et continuer",termsAgreeCounting:"Accepter et continuer ({seconds}s)",termsPlaceholder:"Veuillez examiner et accepter la politique de confidentialit\xE9 et les conditions ci-dessus\u2026",whatHaveYouSaved:"Qu'avez-vous enregistr\xE9 ?",voiceHint:"Parlez simplement \u2014 je r\xE9pondrai d\xE8s que vous ferez une pause.",voiceModeExit:"Quitter le mode mains libres",voiceModeStart:"Conversation mains libres",voiceMuted:"En sourdine",voiceMutedHint:"Appuyez sur le micro pour parler \xE0 nouveau.",voicePhaseListening:"\xC9coute",voicePhaseSpeaking:"Parle",voicePhaseThinking:"R\xE9flexion"},hindi:{allSet:"\u0906\u092A \u0924\u0948\u092F\u093E\u0930 \u0939\u0948\u0902, {name}.",asWritten:"\u091C\u0948\u0938\u093E \u0932\u093F\u0916\u093E \u0939\u0948",captureAll:"\u0938\u092D\u0940 \u0915\u094B \u0915\u0948\u092A\u094D\u091A\u0930 \u0915\u0930\u0947\u0902 ({count})",captureAndRemember:"kiku \u2014 \u0915\u0948\u092A\u094D\u091A\u0930 & \u092F\u093E\u0926 \u0930\u0916\u0947\u0902",captureCurrentPage:"\u0935\u0930\u094D\u0924\u092E\u093E\u0928 \u092A\u0943\u0937\u094D\u0920 \u0915\u094B \u0915\u0948\u092A\u094D\u091A\u0930 \u0915\u0930\u0947\u0902",cardClickAnswer:"{name}",cardClickQuery:"\u0915\u0943\u092A\u092F\u093E {name}{price} \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902 \u0905\u0927\u093F\u0915 \u092C\u0924\u093E\u0907\u090F \u2014 \u0907\u0938\u0915\u0947 \u092E\u0941\u0916\u094D\u092F \u0935\u093F\u0935\u0930\u0923 \u0915\u094D\u092F\u093E \u0939\u0948\u0902, \u092F\u0939 \u0915\u093F\u0938\u0915\u0947 \u0932\u093F\u090F \u0938\u092C\u0938\u0947 \u0909\u092A\u092F\u0941\u0915\u094D\u0924 \u0939\u0948, \u0914\u0930 \u092E\u0941\u091D\u0947 \u0915\u094D\u092F\u093E \u091C\u093E\u0928\u0928\u093E \u091A\u093E\u0939\u093F\u090F?",clearChat:"\u091A\u0948\u091F \u0938\u093E\u092B\u093C \u0915\u0930\u0947\u0902",defaultPlaceholder:"\u092E\u0941\u091D\u0938\u0947 \u0915\u0941\u091B \u092D\u0940 \u092A\u0942\u091B\u0947\u0902\u2026",deleteThis:"\u0907\u0938\u0947 \u0939\u091F\u093E\u090F\u0901",detailsTranslated:"\u0935\u093F\u0935\u0930\u0923 \u0905\u0928\u0941\u0935\u093E\u0926\u093F\u0924\u0964 \u0938\u0902\u0916\u094D\u092F\u093E\u090F\u0901 \u0914\u0930 \u0932\u093F\u0902\u0915 \u0920\u0940\u0915 \u0935\u0948\u0938\u0947 \u0939\u0940 \u0930\u0939\u0947\u0902\u0964",displayCapture:"\u0915\u0948\u092A\u094D\u091A\u0930 {name}",displayCaptureAll:"\u0938\u092D\u0940 \u0915\u094B \u0915\u0948\u092A\u094D\u091A\u0930 \u0915\u0930\u0947\u0902 ({count} \u0906\u0907\u091F\u092E)",displayDelete:"\u0907\u0938\u0947 \u0939\u091F\u093E\u090F\u0901",displayViewHistory:"\u0906\u092A\u0928\u0947 \u0915\u094D\u092F\u093E \u0938\u0939\u0947\u091C\u093E \u0939\u0948?",entityLangIntro:"\u092E\u0948\u0902 {lang} \u092E\u0947\u0902 \u0909\u0924\u094D\u0924\u0930 \u0926\u0942\u0901\u0917\u093E\u0964 \u092A\u0930\u093F\u0923\u093E\u092E \u0915\u093E\u0930\u094D\u0921 \u0907\u0938 \u0938\u093E\u0907\u091F \u0928\u0947 \u091C\u0948\u0938\u093E \u0932\u093F\u0916\u093E \u0939\u0948 \u0935\u0948\u0938\u093E \u0939\u0940 \u0930\u0939 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902, \u092F\u093E \u0905\u0928\u0942\u0926\u093F\u0924 \u092D\u0940 \u0939\u094B \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964",entityLangPlaceholder:"\u090A\u092A\u0930 \u0926\u094B \u0915\u093E\u0930\u094D\u0921\u094B\u0902 \u092E\u0947\u0902 \u0938\u0947 \u090F\u0915 \u091A\u0941\u0928\u0947\u0902\u2026",errAccessRevoked:"\u0938\u094D\u091F\u094B\u0930 \u0926\u094D\u0935\u093E\u0930\u093E \u0906\u092A\u0915\u0947 \u0938\u0939\u093E\u092F\u0915 \u0924\u0915 \u092A\u0939\u0941\u0901\u091A \u0930\u0926\u094D\u0926 \u0915\u0930 \u0926\u0940 \u0917\u0908 \u0939\u0948\u0964",errAccountRequired:"\u091A\u0948\u091F \u0938\u0939\u093E\u092F\u0915 \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u091C\u093E\u0930\u0940 \u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0915\u0943\u092A\u092F\u093E \u090F\u0915 \u0916\u093E\u0924\u093E \u092C\u0928\u093E\u090F\u0901\u0964",errShopperReplyLimit:"\u0906\u092A\u0928\u0947 \u0907\u0938 \u0938\u093E\u0907\u091F \u0915\u0947 \u0932\u093F\u090F \u0905\u092A\u0928\u0947 \u0916\u093E\u0924\u0947 \u0915\u0940 \u0909\u0924\u094D\u0924\u0930 \u0938\u0940\u092E\u093E \u0924\u0915 \u092A\u0939\u0941\u0901\u091A \u092C\u0928\u093E \u0932\u0940 \u0939\u0948\u0964",errStreamInterrupted:"\u0909\u0924\u094D\u0924\u0930 \u092C\u093E\u0927\u093F\u0924 \u0939\u094B \u0917\u092F\u093E\u0964 \u0915\u0943\u092A\u092F\u093E \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964",errTokenLimit:"\u0906\u092A\u0928\u0947 \u0905\u092A\u0928\u0940 \u0909\u092A\u092F\u094B\u0917 \u0938\u0940\u092E\u093E \u0924\u0915 \u092A\u0939\u0941\u0901\u091A \u092C\u0928\u093E \u0932\u0940 \u0939\u0948\u0964 \u091C\u093E\u0930\u0940 \u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0905\u092A\u0928\u0947 \u0921\u0948\u0936\u092C\u094B\u0930\u094D\u0921 \u092E\u0947\u0902 \u092C\u093F\u0932\u093F\u0902\u0917 \u0938\u0940\u092E\u093E \u0905\u092A\u0921\u0947\u091F \u0915\u0930\u0947\u0902\u0964",errTooManyRequests:"\u0938\u0939\u093E\u092F\u0915 \u0935\u0930\u094D\u0924\u092E\u093E\u0928 \u092E\u0947\u0902 \u092C\u0939\u0941\u0924 \u0905\u0927\u093F\u0915 \u0905\u0928\u0941\u0930\u094B\u0927 \u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0915\u0930 \u0930\u0939\u093E \u0939\u0948\u0964 \u0915\u0941\u091B \u0915\u094D\u0937\u0923 \u092C\u093E\u0926 \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964",footerHint:"kiku \xB7 \u0935\u093E\u0938\u094D\u0924\u0935\u093F\u0915 \u0938\u092E\u092F \u092E\u0947\u0902 \u092A\u0942\u0930\u0947 \u0915\u0948\u091F\u0932\u0949\u0917 \u0915\u094B \u0916\u094B\u091C\u0924\u093E \u0939\u0948",greetReturning:"\u0928\u092E\u0938\u094D\u0924\u0947, {name}.",greetReturningLead:"\u0906\u091C \u092E\u0948\u0902 \u0906\u092A\u0915\u0947 \u0932\u093F\u090F \u0915\u094D\u092F\u093E \u0916\u094B\u091C\u0942\u0901?",howShouldResultsLook:"\u092A\u0930\u093F\u0923\u093E\u092E \u0915\u0948\u0938\u0947 \u0926\u093F\u0916\u0947\u0902?",inLanguage:"{lang} \u092E\u0947\u0902",keyAutoHide:"\u0938\u094D\u0935\u0924\u0903 {seconds}s \u092E\u0947\u0902 \u091B\u093F\u092A \u091C\u093E\u090F\u0917\u093E.",keyCopied:"\u0915\u0949\u092A\u0940 \u0915\u093F\u092F\u093E \u0917\u092F\u093E",keyCopyId:"\u0906\u0908\u0921\u0940 \u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902",keyCopySecret:"\u0938\u0940\u0915\u094D\u0930\u0947\u091F \u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902",keyCreateNew:"\u092E\u0948\u0902 \u0928\u092F\u093E \u0939\u0942\u0901 \u2014 \u090F\u0915 \u092C\u0928\u093E\u090F\u0902",keyCreating:"\u092C\u0928\u093E \u0930\u0939\u093E \u0939\u0942\u0901\u2026",keyDismiss:"\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",keyPastePlaceholder:"\u0906\u092A\u0915\u093E \u0938\u093E\u0930\u094D\u0935\u091C\u0928\u093F\u0915 \u0906\u0908\u0921\u0940\u2026",keyPastePrompt:"\u0905\u092A\u0928\u093E \u0938\u093E\u0930\u094D\u0935\u091C\u0928\u093F\u0915 \u0906\u0908\u0921\u0940 \u092A\u0947\u0938\u094D\u091F \u0915\u0930\u0947\u0902 \u2014 \u092F\u093E \u090F\u0915 \u092C\u0928\u093E\u090F\u0902",keyPublicHint:"\u0907\u0938\u0947 \u0915\u093F\u0938\u0940 \u092D\u0940 \u0938\u093E\u0907\u091F \u092A\u0930 \u092A\u0947\u0938\u094D\u091F \u0915\u0930\u0947\u0902 \u0924\u093E\u0915\u093F \u0935\u0939\u0940 \u092E\u0947\u092E\u094B\u0930\u0940 \u092E\u0947\u0902 \u0938\u0939\u0947\u091C\u093E \u091C\u093E \u0938\u0915\u0947\u0964",keyPublicTitle:"\u0906\u092A\u0915\u093E \u0938\u093E\u0930\u094D\u0935\u091C\u0928\u093F\u0915 \u0906\u0908\u0921\u0940",keySecretHint:"\u0907\u0938\u0947 \u0928\u093F\u091C\u0940 \u0930\u0916\u0947\u0902 \u2014 \u0905\u092A\u0928\u0947 \u092E\u0947\u092E\u094B\u0930\u0940 \u0915\u094B \u0905\u0928\u0932\u0949\u0915 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0909\u092A\u092F\u094B\u0917 \u0915\u0930\u0947\u0902\u0964",keySecretTitle:"\u0906\u092A\u0915\u093E \u0938\u0940\u0915\u094D\u0930\u0947\u091F \u2014 \u0915\u0947\u0935\u0932 \u090F\u0915 \u092C\u093E\u0930 \u0926\u093F\u0916\u093E\u092F\u093E \u0917\u092F\u093E",keyUseMine:"\u092E\u0947\u0930\u0940 \u0906\u0908\u0921\u0940 \u0909\u092A\u092F\u094B\u0917 \u0915\u0930\u0947\u0902",kikuActionUnavailable:"\u0915\u094D\u0937\u092E\u093E \u0915\u0930\u0947\u0902 \u2014 \u092F\u0939 \u0915\u093E\u0930\u094D\u0930\u0935\u093E\u0908 \u0907\u0938 \u0938\u093E\u0907\u091F \u092A\u0930 \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902 \u0939\u0948\u0964",kikuCaptureDbError:"\u0921\u0947\u091F\u093E\u092C\u0947\u0938 \u0924\u094D\u0930\u0941\u091F\u093F \u0915\u0947 \u0915\u093E\u0930\u0923 \u0915\u0948\u092A\u094D\u091A\u0930 \u0935\u093F\u092B\u0932 \u0930\u0939\u093E\u0964",kikuCaptureNoContext:"SDK \u0926\u094D\u0935\u093E\u0930\u093E \u0915\u094B\u0908 \u092A\u0947\u091C \u092F\u093E \u092A\u094D\u0930\u094B\u0921\u0915\u094D\u091F \u0915\u0949\u0928\u094D\u091F\u0947\u0915\u094D\u0938\u094D\u091F \u092A\u094D\u0930\u0926\u093E\u0928 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u0917\u092F\u093E, \u0907\u0938\u0932\u093F\u090F \u0915\u0948\u092A\u094D\u091A\u0930 \u0935\u093F\u092B\u0932 \u0930\u0939\u093E\u0964",kikuCaptureNoUrl:"\u0915\u094B\u0908 \u0906\u0907\u091F\u092E \u0938\u0939\u0947\u091C\u093E \u0928\u0939\u0940\u0902 \u091C\u093E \u0938\u0915\u093E \u2014 \u0915\u094B\u0908 \u092D\u0940 \u0935\u0948\u0927 URL \u0928\u0939\u0940\u0902 \u0925\u093E\u0964",kikuCaptureNoneSelected:"\u0915\u0948\u092A\u094D\u091A\u0930 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u0906\u0907\u091F\u092E \u091A\u092F\u0928\u093F\u0924 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u0917\u092F\u093E\u0964",kikuDeleteDbError:"\u0921\u0947\u091F\u093E\u092C\u0947\u0938 \u0924\u094D\u0930\u0941\u091F\u093F \u0915\u0947 \u0915\u093E\u0930\u0923 \u0939\u091F\u093E\u0928\u093E \u0935\u093F\u092B\u0932 \u0930\u0939\u093E\u0964",kikuDeleteDone:"\u0907\u0938\u0947 \u0906\u092A\u0915\u0947 \u0938\u0939\u0947\u091C\u0947 \u0917\u090F \u0906\u0907\u091F\u092E\u094D\u0938 \u0938\u0947 \u0939\u091F\u093E \u0926\u093F\u092F\u093E \u0917\u092F\u093E\u0964",kikuDeleteNoContext:"\u0939\u091F\u093E\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0947\u091C \u0915\u0949\u0928\u094D\u091F\u0947\u0915\u094D\u0938\u094D\u091F \u092A\u094D\u0930\u0926\u093E\u0928 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u0917\u092F\u093E, \u0907\u0938\u0932\u093F\u090F \u0939\u091F\u093E\u0928\u093E \u0935\u093F\u092B\u0932 \u0930\u0939\u093E\u0964",kikuMemoryIntro:"\u0906\u092A\u0928\u0947 \u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u0938\u093E\u0907\u091F\u094B\u0902 \u092A\u0930 \u091C\u094B \u092D\u0940 \u0915\u0948\u092A\u094D\u091A\u0930 \u0915\u093F\u092F\u093E \u0939\u0948, \u0935\u0939 \u0906\u092A\u0915\u0947 \u0928\u093F\u091C\u0940 \u092E\u0947\u092E\u094B\u0930\u0940 \u092E\u0947\u0902 \u0930\u0939\u0924\u093E \u0939\u0948\u0964 \u0907\u0938\u0947 \u0905\u092A\u0928\u0947 \u0938\u0940\u0915\u094D\u0930\u0947\u091F \u0938\u0947 \u0905\u0928\u0932\u0949\u0915 \u0915\u0930\u0947\u0902:",kikuMintNeeded:"\u0938\u093E\u0907\u091F\u094B\u0902 \u0915\u0947 \u092C\u0940\u091A \u0906\u0907\u091F\u092E\u094D\u0938 \u0938\u0939\u0947\u091C\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0906\u092A\u0915\u094B \u090F\u0915 \u0915\u093F\u0915\u0941 \u0915\u0941\u0902\u091C\u0940 \u091A\u093E\u0939\u093F\u090F \u2014 \u092E\u0948\u0902 \u0906\u092A\u0915\u0947 \u0932\u093F\u090F \u090F\u0915 \u092C\u0928\u093E\u090A\u0901\u0917\u093E\u0964 \u092F\u0939 \u0915\u0947\u0935\u0932 \u090F\u0915 \u092C\u093E\u0930 \u0926\u093F\u0916\u093E\u092F\u093E \u091C\u093E\u0924\u093E \u0939\u0948, \u0907\u0938\u0932\u093F\u090F \u0907\u0938\u0947 \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 \u091C\u0917\u0939 \u092A\u0930 \u0930\u0916\u0947\u0902\u0964",kikuMintOffer:"\u092E\u0948\u0902 \u0907\u0938\u0947 \u0906\u092A\u0915\u0947 \u0932\u093F\u090F \u0930\u0916 \u0938\u0915\u0924\u093E \u0939\u0942\u0901 \u0914\u0930 \u0938\u093E\u0907\u091F\u094B\u0902 \u0915\u0947 \u092C\u0940\u091A \u0906\u092A\u0915\u0947 \u0938\u093E\u0925 \u0932\u0947 \u091C\u093E \u0938\u0915\u0924\u093E \u0939\u0942\u0901 \u2014 \u092E\u0948\u0902 \u0906\u092A\u0915\u0947 \u0932\u093F\u090F \u090F\u0915 \u0915\u093F\u0915\u0941 \u0915\u0941\u0902\u091C\u0940 \u092C\u0928\u093E\u090A\u0901\u0917\u093E\u0964 \u092F\u0939 \u0915\u0947\u0935\u0932 \u090F\u0915 \u092C\u093E\u0930 \u0926\u093F\u0916\u093E\u092F\u093E \u091C\u093E\u0924\u093E \u0939\u0948, \u0907\u0938\u0932\u093F\u090F \u0907\u0938\u0947 \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 \u091C\u0917\u0939 \u092A\u0930 \u0930\u0916\u0947\u0902\u0964",kikuNeedKeyToUpdate:"\u0905\u092A\u0928\u0940 \u0915\u093F\u0915\u0941 \u0915\u0941\u0902\u091C\u0940 \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902 \u0924\u093E\u0915\u093F \u092E\u0948\u0902 \u0906\u092A\u0915\u0947 \u0938\u0939\u0947\u091C\u0947 \u0917\u090F \u0906\u0907\u091F\u092E\u094D\u0938 \u0915\u094B \u0916\u094B\u091C \u0914\u0930 \u0905\u092A\u0921\u0947\u091F \u0915\u0930 \u0938\u0915\u0942\u0901\u0964",namePlaceholder:"\u0905\u092A\u0928\u093E \u0928\u093E\u092E \u091F\u093E\u0907\u092A \u0915\u0930\u0947\u0902\u2026",nameStepAsk:"\u092E\u0948\u0902 \u0906\u092A\u0915\u094B \u0915\u094D\u092F\u093E \u0915\u0939\u0942\u0901?",nameStepLead:"\u092E\u0948\u0902 \u0906\u092A\u0915\u0947 \u0932\u093F\u090F \u0915\u0941\u091B \u092D\u0940 \u0916\u094B\u091C, \u0935\u093F\u091C\u093C\u0941\u0905\u0932\u093E\u0907\u091C\u093C \u092F\u093E \u0915\u0948\u092A\u094D\u091A\u0930 \u0915\u0930 \u0938\u0915\u0924\u093E \u0939\u0942\u0901 \u2014 \u0907\u0938 \u0938\u093E\u0907\u091F \u092A\u0930 \u092F\u093E \u0915\u093F\u0938\u0940 \u0905\u0928\u094D\u092F \u092A\u0930\u0964",nameStepTitle:"\u0906\u092A\u0938\u0947 \u092E\u093F\u0932\u0915\u0930 \u0916\u0941\u0936\u0940 \u0939\u0941\u0908\u0964",namesAsWritten:"\u0928\u093E\u092E \u0914\u0930 \u0935\u093F\u0935\u0930\u0923 \u0920\u0940\u0915 \u0909\u0938\u0940 \u0924\u0930\u0939 \u091C\u0948\u0938\u0947 \u0938\u093E\u0907\u091F \u092A\u0930 \u0938\u0942\u091A\u0940\u092C\u0926\u094D\u0927 \u0939\u0948\u0902\u0964",pillCompareTop2:"\u0936\u0940\u0930\u094D\u0937 2 \u0915\u0940 \u0924\u0941\u0932\u0928\u093E \u0915\u0930\u0947\u0902",pillCompareTop2Query:"{a} \u0914\u0930 {b} \u0915\u0940 \u0924\u0941\u0932\u0928\u093E \u0915\u0930\u0947\u0902",pillFindAlternatives:"\u0935\u093F\u0915\u0932\u094D\u092A \u0916\u094B\u091C\u0947\u0902",pillFindAlternativesQuery:"{name} \u0915\u0947 \u0905\u091A\u094D\u091B\u0947 \u0935\u093F\u0915\u0932\u094D\u092A \u0915\u094D\u092F\u093E \u0939\u0948\u0902?",pillMoreOn:"{name} \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902 \u0905\u0927\u093F\u0915",pillMoreOnQuery:"\u0915\u0943\u092A\u092F\u093E {name} \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902 \u0905\u0927\u093F\u0915 \u092C\u0924\u093E\u0907\u090F",pillRecommend:"\u0915\u0941\u091B \u0938\u0941\u091D\u093E\u090F\u0901",pillRecommendQuery:"\u092E\u0947\u0930\u0947 \u0932\u093F\u090F \u0906\u092A \u0915\u094D\u092F\u093E \u0938\u0941\u091D\u093E\u090F\u0902\u0917\u0947?",pillShowPopular:"\u0932\u094B\u0915\u092A\u094D\u0930\u093F\u092F \u0906\u0907\u091F\u092E \u0926\u093F\u0916\u093E\u090F\u0901",pillShowPopularQuery:"\u0906\u092A\u0915\u0947 \u0938\u092C\u0938\u0947 \u0932\u094B\u0915\u092A\u094D\u0930\u093F\u092F \u0906\u0907\u091F\u092E \u0915\u094C\u0928 \u0938\u0947 \u0939\u0948\u0902?",pillSimilarOptions:"\u0938\u092E\u093E\u0928 \u0935\u093F\u0915\u0932\u094D\u092A",pillSimilarOptionsQuery:"{name} \u091C\u0948\u0938\u093E \u0914\u0930 \u0926\u093F\u0916\u093E\u0907\u090F",pillUnder:"{amount} \u0938\u0947 \u0915\u092E",pillUnderQuery:"{amount} \u0938\u0947 \u0915\u092E \u0935\u093F\u0915\u0932\u094D\u092A \u0926\u093F\u0916\u093E\u0907\u090F",pillWhichBest:"\u0915\u094C\u0928 \u0938\u092C\u0938\u0947 \u0905\u091A\u094D\u091B\u093E \u0939\u0948?",pillWhichBestQuery:"\u0906\u092A \u0915\u094C\u0928 \u0938\u093E \u0938\u0941\u091D\u093E\u090F\u0902\u0917\u0947 \u0914\u0930 \u0915\u094D\u092F\u094B\u0902?",replyingOriginal:"{lang} \u092E\u0947\u0902 \u0909\u0924\u094D\u0924\u0930 \u0926\u0947 \u0930\u0939\u093E \u0939\u0942\u0901, \u092A\u0930\u093F\u0923\u093E\u092E \u0938\u093E\u0907\u091F \u0915\u0947 \u0932\u093F\u0916\u0947 \u0905\u0928\u0941\u0938\u093E\u0930\u0964 \u092E\u0941\u091D\u0938\u0947 \u0915\u0941\u091B \u092D\u0940 \u092A\u0942\u091B\u0947\u0902\u0964",replyingTranslated:"{lang} \u092E\u0947\u0902 \u0909\u0924\u094D\u0924\u0930 \u0926\u0947 \u0930\u0939\u093E \u0939\u0942\u0901, \u092A\u0930\u093F\u0923\u093E\u092E \u092D\u0940 \u0905\u0928\u0942\u0926\u093F\u0924 \u0939\u0948\u0902\u0964 \u092E\u0941\u091D\u0938\u0947 \u0915\u0941\u091B \u092D\u0940 \u092A\u0942\u091B\u0947\u0902\u0964",statusSent:"\u092D\u0947\u091C\u093E \u0917\u092F\u093E",statusStopped:"\u092D\u0947\u091C\u093E \u0917\u092F\u093E \xB7 \u0909\u0924\u094D\u0924\u0930 \u0930\u094B\u0915 \u0926\u093F\u092F\u093E \u0917\u092F\u093E",thinking:"\u0938\u094B\u091A \u0930\u0939\u093E \u0939\u0942\u0901",thoughtForSeconds:"{duration} \u0924\u0915 \u0938\u094B\u091A\u093E",thoughtProcess:"\u0935\u093F\u091A\u093E\u0930 \u092A\u094D\u0930\u0915\u094D\u0930\u093F\u092F\u093E",vizUnavailable:"\u092A\u0942\u0930\u094D\u0935\u093E\u0935\u0932\u094B\u0915\u0928 \u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0939\u094B \u0938\u0915\u093E\u0964",termsStepTitle:"\u0917\u094B\u092A\u0928\u0940\u092F\u0924\u093E \u0914\u0930 \u0909\u092A\u092F\u094B\u0917 \u0915\u0940 \u0936\u0930\u094D\u0924\u0947\u0902",termsStepSubtitle:"\u092A\u093E\u0930\u0926\u0930\u094D\u0936\u0940, \u0905\u091C\u094D\u091E\u093E\u0924 \u0914\u0930 \u0936\u0942\u0928\u094D\u092F \u0935\u094D\u092F\u0915\u094D\u0924\u093F\u0917\u0924 \u092A\u0939\u091A\u093E\u0928 \u0921\u0947\u091F\u093E\u0964",termsPiiTitle:"\u0936\u0942\u0928\u094D\u092F \u0935\u094D\u092F\u0915\u094D\u0924\u093F\u0917\u0924 \u0921\u0947\u091F\u093E \u0938\u0902\u0917\u094D\u0930\u0939",termsPiiDesc:"\u0939\u092E \u0906\u092A\u0915\u0940 \u092C\u093E\u0924\u091A\u0940\u0924 \u092F\u093E \u0935\u0949\u092F\u0938 \u0938\u0924\u094D\u0930\u094B\u0902 \u0938\u0947 \u0935\u094D\u092F\u0915\u094D\u0924\u093F\u0917\u0924 \u092A\u0939\u091A\u093E\u0928 \u092F\u094B\u0917\u094D\u092F \u091C\u093E\u0928\u0915\u093E\u0930\u0940 (\u0915\u094B\u0908 \u0908\u092E\u0947\u0932, \u092B\u093C\u094B\u0928 \u0928\u0902\u092C\u0930 \u092F\u093E \u0935\u093E\u0938\u094D\u0924\u0935\u093F\u0915 \u092A\u0939\u091A\u093E\u0928 \u0928\u0939\u0940\u0902) \u090F\u0915\u0924\u094D\u0930 \u092F\u093E \u0938\u0902\u0917\u094D\u0930\u0939\u0940\u0924 \u0928\u0939\u0940\u0902 \u0915\u0930\u0924\u0947 \u0939\u0948\u0902\u0964",termsSessionTitle:"\u0905\u091C\u094D\u091E\u093E\u0924 \u0938\u0924\u094D\u0930 \u091F\u094B\u0915\u0928",termsSessionDesc:"\u0906\u092A\u0915\u093E \u0938\u0924\u094D\u0930 \u0915\u0947\u0935\u0932 \u0938\u0902\u0926\u0930\u094D\u092D \u092C\u0928\u093E\u090F \u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u090F\u0915 \u0905\u0928\u093E\u092E \u0915\u094D\u0932\u093E\u0907\u0902\u091F \u091F\u094B\u0915\u0928 \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0915\u0930\u0924\u093E \u0939\u0948\u0964 \u092F\u0939 \u0906\u092A\u0915\u0940 \u0935\u093E\u0938\u094D\u0924\u0935\u093F\u0915 \u092A\u0939\u091A\u093E\u0928 \u0938\u0947 \u0915\u092D\u0940 \u0928\u0939\u0940\u0902 \u091C\u0941\u0921\u093C\u0924\u093E\u0964",termsMemoryTitle:"\u0905\u0938\u094D\u0925\u093E\u092F\u0940 \u091A\u0948\u091F \u092C\u0928\u093E\u092E \u092E\u093F\u092E\u0940 \u0935\u0949\u0932\u094D\u091F",termsMemoryDesc:'\u0928\u093F\u092F\u092E\u093F\u0924 \u091A\u0948\u091F \u0905\u0938\u094D\u0925\u093E\u092F\u0940 \u0939\u0948\u0902 \u2014 \u091A\u0948\u091F \u092C\u0902\u0926 \u0915\u0930\u0928\u0947 \u092F\u093E \u0938\u093E\u092B\u093C \u0915\u0930\u0928\u0947 \u092A\u0930 \u0935\u0947 \u0939\u092E\u0947\u0936\u093E \u0915\u0947 \u0932\u093F\u090F \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B \u091C\u093E\u0924\u0940 \u0939\u0948\u0902\u0964 "@kiku" \u0938\u0947 \u0938\u0939\u0947\u091C\u0947 \u0917\u090F \u0906\u0907\u091F\u092E \u090F\u0928\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F\u0947\u0921 \u0939\u0948\u0902 \u0914\u0930 mimi.akropolys.cloud \u092A\u0930 \u0906\u092A\u0915\u0940 \u0917\u0941\u092A\u094D\u0924 \u0915\u0941\u0902\u091C\u0940 \u0938\u0947 \u0916\u094B\u0932\u0947 \u091C\u093E \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964',termsCookieTitle:"\u0939\u094B\u0938\u094D\u091F \u0935\u0947\u092C\u0938\u093E\u0907\u091F \u091F\u0947\u0932\u0940\u092E\u0947\u091F\u094D\u0930\u0940",termsCookieDesc:"\u091C\u093F\u0938 \u0935\u0947\u092C\u0938\u093E\u0907\u091F \u092A\u0930 kiku \u090F\u092E\u094D\u092C\u0947\u0921\u0947\u0921 \u0939\u0948, \u0935\u0939 \u0905\u092A\u0928\u0940 \u0938\u094D\u0935\u092F\u0902 \u0915\u0940 \u0915\u0941\u0915\u0940 \u0928\u0940\u0924\u093F \u0915\u0947 \u0905\u0928\u0941\u0938\u093E\u0930 \u0915\u0941\u0915\u0940\u091C\u093C \u0914\u0930 \u090F\u0928\u093E\u0932\u093F\u091F\u093F\u0915\u094D\u0938 \u090F\u0915\u0924\u094D\u0930 \u0915\u0930 \u0938\u0915\u0924\u0940 \u0939\u0948\u0964",termsAgreeButton:"\u0938\u0939\u092E\u0924 \u0939\u094B\u0902 \u0914\u0930 \u0906\u0917\u0947 \u092C\u0922\u093C\u0947\u0902",termsAgreeCounting:"\u0938\u0939\u092E\u0924 \u0939\u094B\u0902 \u0914\u0930 \u0906\u0917\u0947 \u092C\u0922\u093C\u0947\u0902 ({seconds}s)",termsPlaceholder:"\u0915\u0943\u092A\u092F\u093E \u090A\u092A\u0930 \u0926\u0940 \u0917\u0908 \u0917\u094B\u092A\u0928\u0940\u092F\u0924\u093E \u0914\u0930 \u0936\u0930\u094D\u0924\u094B\u0902 \u0915\u0940 \u0938\u092E\u0940\u0915\u094D\u0937\u093E \u0915\u0930\u0947\u0902 \u0914\u0930 \u0938\u094D\u0935\u0940\u0915\u093E\u0930 \u0915\u0930\u0947\u0902\u2026",whatHaveYouSaved:"\u0906\u092A\u0928\u0947 \u0915\u094D\u092F\u093E \u0938\u0939\u0947\u091C\u093E \u0939\u0948?",micDenied:"\u092E\u093E\u0907\u0915\u094D\u0930\u094B\u092B\u093C\u094B\u0928 \u092C\u094D\u0932\u0949\u0915 \u0939\u0948\u0964 \u0907\u0938 \u0938\u093E\u0907\u091F \u0915\u0947 \u0932\u093F\u090F \u092E\u093E\u0907\u0915 \u090F\u0915\u094D\u0938\u0947\u0938 \u0915\u0940 \u0905\u0928\u0941\u092E\u0924\u093F \u0926\u0947\u0902, \u092B\u093F\u0930 \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964",micFailed:"\u0938\u0941\u0928\u093E\u0908 \u0928\u0939\u0940\u0902 \u0926\u093F\u092F\u093E\u0964 \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964",micInsecure:"\u0935\u0949\u092F\u0938 \u0915\u0947 \u0932\u093F\u090F \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 (https) \u0915\u0928\u0947\u0915\u094D\u0936\u0928 \u0906\u0935\u0936\u094D\u092F\u0915 \u0939\u0948\u0964",micLangUnsupported:"\u092F\u0939 \u092C\u094D\u0930\u093E\u0909\u091C\u093C\u0930 \u0905\u092D\u0940 \u0907\u0938 \u092D\u093E\u0937\u093E \u0915\u094B \u091F\u094D\u0930\u093E\u0902\u0938\u0915\u094D\u0930\u093E\u0907\u092C \u0928\u0939\u0940\u0902 \u0915\u0930 \u0938\u0915\u0924\u093E\u0964 \u0907\u0938\u0915\u0947 \u092C\u091C\u093E\u092F \u091F\u093E\u0907\u092A \u0915\u0930\u0947\u0902\u0964",micMissing:"\u0915\u094B\u0908 \u092E\u093E\u0907\u0915\u094D\u0930\u094B\u092B\u093C\u094B\u0928 \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964",micNetwork:"\u0935\u0949\u092F\u0938 \u0915\u0947 \u0932\u093F\u090F \u0907\u0902\u091F\u0930\u0928\u0947\u091F \u0915\u0928\u0947\u0915\u094D\u0936\u0928 \u0906\u0935\u0936\u094D\u092F\u0915 \u0939\u0948\u0964 \u0905\u092A\u0928\u093E \u0915\u0928\u0947\u0915\u094D\u0936\u0928 \u091C\u093E\u0902\u091A\u0947\u0902 \u0914\u0930 \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964",micNoSpeech:"\u0915\u0941\u091B \u0938\u0941\u0928\u093E\u0908 \u0928\u0939\u0940\u0902 \u0926\u093F\u092F\u093E\u0964 \u0915\u0943\u092A\u092F\u093E \u092E\u093E\u0907\u0915 \u0915\u0947 \u092A\u093E\u0938 \u0906\u0915\u0930 \u0926\u094B\u092C\u093E\u0930\u093E \u092C\u094B\u0932\u0947\u0902\u0964",vizDisclaimerImage:"\u0915\u0943\u0924\u094D\u0930\u093F\u092E \u092C\u0941\u0926\u094D\u0927\u093F\u092E\u0924\u094D\u0924\u093E (AI) \u0926\u094D\u0935\u093E\u0930\u093E \u0928\u093F\u0930\u094D\u092E\u093F\u0924 \u2014 \u0930\u0902\u0917, \u0906\u0915\u093E\u0930 \u0914\u0930 \u0938\u094D\u0925\u093F\u0924\u093F \u0935\u093E\u0938\u094D\u0924\u0935\u093F\u0915 \u0909\u0924\u094D\u092A\u093E\u0926 \u0938\u0947 \u092D\u093F\u0928\u094D\u0928 \u0939\u094B \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964",vizDisclaimerVideo:"\u0915\u0943\u0924\u094D\u0930\u093F\u092E \u092C\u0941\u0926\u094D\u0927\u093F\u092E\u0924\u094D\u0924\u093E (AI) \u0926\u094D\u0935\u093E\u0930\u093E \u0928\u093F\u0930\u094D\u092E\u093F\u0924 \u2014 \u0930\u0902\u0917, \u0906\u0915\u093E\u0930 \u0914\u0930 \u0917\u0924\u093F \u0935\u093E\u0938\u094D\u0924\u0935\u093F\u0915 \u0909\u0924\u094D\u092A\u093E\u0926 \u0938\u0947 \u092D\u093F\u0928\u094D\u0928 \u0939\u094B \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964",voiceHint:"\u092C\u0938 \u092C\u094B\u0932\u0947\u0902 \u2014 \u091C\u092C \u0906\u092A \u0930\u0941\u0915\u0947\u0902\u0917\u0947 \u0924\u094B \u092E\u0948\u0902 \u0909\u0924\u094D\u0924\u0930 \u0926\u0942\u0902\u0917\u093E\u0964",voiceListening:"\u0938\u0941\u0928 \u0930\u0939\u093E \u0939\u0948\u2026 \u0930\u094B\u0915\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u092E\u093E\u0907\u0915 \u092A\u0930 \u091F\u0948\u092A \u0915\u0930\u0947\u0902",voiceModeExit:"\u0939\u0948\u0902\u0921\u094D\u0938-\u092B\u094D\u0930\u0940 \u0938\u0947 \u092C\u093E\u0939\u0930 \u0928\u093F\u0915\u0932\u0947\u0902",voiceModeStart:"\u0939\u0948\u0902\u0921\u094D\u0938-\u092B\u094D\u0930\u0940 \u092C\u093E\u0924\u091A\u0940\u0924",voiceMuted:"\u092E\u094D\u092F\u0942\u091F \u0915\u093F\u092F\u093E \u0917\u092F\u093E",voiceMutedHint:"\u0926\u094B\u092C\u093E\u0930\u093E \u092C\u094B\u0932\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u092E\u093E\u0907\u0915\u094D\u0930\u094B\u092B\u093C\u094B\u0928 \u092A\u0930 \u091F\u0948\u092A \u0915\u0930\u0947\u0902\u0964",voicePhaseListening:"\u0938\u0941\u0928 \u0930\u0939\u093E \u0939\u0948",voicePhaseSpeaking:"\u092C\u094B\u0932 \u0930\u0939\u093E \u0939\u0948",voicePhaseThinking:"\u0938\u094B\u091A \u0930\u0939\u093E \u0939\u0948",voiceSending:"\u0938\u092E\u091D \u0917\u092F\u093E \u2014 \u092D\u0947\u091C\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948\u2026"},japanese:{allSet:"\u6E96\u5099\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\u3001{name}\u3055\u3093\u3002",asWritten:"\u30B5\u30A4\u30C8\u306E\u539F\u6587\u901A\u308A",captureAll:"\u3059\u3079\u3066\u4FDD\u5B58 ({count})",captureAndRemember:"kiku \u2014 \u4FDD\u5B58\u3068\u8A18\u61B6",captureCurrentPage:"\u73FE\u5728\u306E\u30DA\u30FC\u30B8\u3092\u4FDD\u5B58",cardClickAnswer:"{name}",cardClickQuery:"{name}{price} \u306B\u3064\u3044\u3066\u8A73\u3057\u304F\u6559\u3048\u3066\u304F\u3060\u3055\u3044 \u2014 \u4E3B\u306A\u7279\u5FB4\u3001\u3069\u3093\u306A\u4EBA\u306B\u5411\u3044\u3066\u3044\u308B\u304B\u3001\u77E5\u3063\u3066\u304A\u304F\u3079\u304D\u3053\u3068\u306F\u4F55\u3067\u3059\u304B\uFF1F",clearChat:"\u30C1\u30E3\u30C3\u30C8\u3092\u6D88\u53BB",defaultPlaceholder:"\u4F55\u3067\u3082\u304A\u805E\u304D\u304F\u3060\u3055\u3044\u2026",deleteThis:"\u3053\u308C\u3092\u524A\u9664",detailsTranslated:"\u8A73\u7D30\u3092\u7FFB\u8A33\u3057\u307E\u3057\u305F\u3002\u4FA1\u683C\u3084\u30EA\u30F3\u30AF\u306F\u30B5\u30A4\u30C8\u306E\u8868\u8A18\u305D\u306E\u307E\u307E\u3067\u3059\u3002",displayCapture:"{name} \u3092\u4FDD\u5B58",displayCaptureAll:"\u3059\u3079\u3066\u4FDD\u5B58\uFF08{count}\u4EF6\uFF09",displayDelete:"\u3053\u308C\u3092\u524A\u9664",displayViewHistory:"\u4F55\u3092\u4FDD\u5B58\u3057\u307E\u3057\u305F\u304B\uFF1F",entityLangIntro:"{lang}\u3067\u8FD4\u7B54\u3057\u307E\u3059\u3002\u691C\u7D22\u7D50\u679C\u306E\u30AB\u30FC\u30C9\u306F\u30B5\u30A4\u30C8\u306E\u539F\u6587\u306E\u307E\u307E\u8868\u793A\u3059\u308B\u3053\u3068\u3082\u3001\u7FFB\u8A33\u3057\u3066\u8868\u793A\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002",entityLangPlaceholder:"\u4E0A\u306E2\u3064\u306E\u30AB\u30FC\u30C9\u304B\u30891\u3064\u9078\u3093\u3067\u304F\u3060\u3055\u3044\u2026",errAccessRevoked:"\u30B9\u30C8\u30A2\u306B\u3088\u3063\u3066\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u6A29\u304C\u53D6\u308A\u6D88\u3055\u308C\u307E\u3057\u305F\u3002",errAccountRequired:"\u30C1\u30E3\u30C3\u30C8\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u3092\u5F15\u304D\u7D9A\u304D\u3054\u5229\u7528\u3044\u305F\u3060\u304F\u306B\u306F\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002",errShopperReplyLimit:"\u3053\u306E\u30B5\u30A4\u30C8\u3067\u306E\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8FD4\u7B54\u4E0A\u9650\u306B\u9054\u3057\u307E\u3057\u305F\u3002",errStreamInterrupted:"\u8FD4\u7B54\u304C\u4E2D\u65AD\u3055\u308C\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",errTokenLimit:"\u5229\u7528\u4E0A\u9650\u306B\u9054\u3057\u307E\u3057\u305F\u3002\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u3067\u5229\u7528\u4E0A\u9650\u3092\u66F4\u65B0\u3057\u3066\u7D9A\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",errTooManyRequests:"\u73FE\u5728\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u96C6\u4E2D\u3057\u3066\u3044\u307E\u3059\u3002\u3057\u3070\u3089\u304F\u3057\u3066\u304B\u3089\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",footerHint:"kiku \xB7 \u30AB\u30BF\u30ED\u30B0\u5168\u4F53\u3092\u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u3067\u691C\u7D22",greetReturning:"\u3053\u3093\u306B\u3061\u306F\u3001{name}\u3055\u3093\u3002",greetReturningLead:"\u4ECA\u65E5\u306F\u4F55\u3092\u304A\u63A2\u3057\u3067\u3059\u304B\uFF1F",howShouldResultsLook:"\u691C\u7D22\u7D50\u679C\u306F\u3069\u306E\u3088\u3046\u306B\u8868\u793A\u3057\u307E\u3059\u304B\uFF1F",inLanguage:"{lang}\u3067",keyAutoHide:"{seconds}\u79D2\u5F8C\u306B\u81EA\u52D5\u3067\u9589\u3058\u307E\u3059\u3002",keyCopied:"\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",keyCopyId:"ID\u3092\u30B3\u30D4\u30FC",keyCopySecret:"\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u3092\u30B3\u30D4\u30FC",keyCreateNew:"\u521D\u3081\u3066\u5229\u7528 \u2014 \u65B0\u898F\u4F5C\u6210",keyCreating:"\u4F5C\u6210\u4E2D\u2026",keyDismiss:"\u9589\u3058\u308B",keyPastePlaceholder:"\u516C\u958BID\u3092\u5165\u529B\u2026",keyPastePrompt:"\u516C\u958BID\u3092\u8CBC\u308A\u4ED8\u3051\u308B\u304B\u3001\u65B0\u898F\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044",keyPublicHint:"\u3069\u306E\u30B5\u30A4\u30C8\u3067\u3082\u3053\u308C\u3092\u8CBC\u308A\u4ED8\u3051\u308B\u3068\u3001\u540C\u3058\u30E1\u30E2\u30EA\u30FC\u306B\u4FDD\u5B58\u3067\u304D\u307E\u3059\u3002",keyPublicTitle:"\u3042\u306A\u305F\u306E\u516C\u958BID",keySecretHint:"\u5927\u5207\u306B\u4FDD\u7BA1\u3057\u3066\u304F\u3060\u3055\u3044 \u2014 \u30E1\u30E2\u30EA\u30FC\u306E\u30ED\u30C3\u30AF\u89E3\u9664\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002",keySecretTitle:"\u3042\u306A\u305F\u306E\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8 \u2014 1\u5EA6\u3060\u3051\u8868\u793A\u3055\u308C\u307E\u3059",keyUseMine:"\u81EA\u5206\u306EID\u3092\u4F7F\u7528",kikuActionUnavailable:"\u7533\u3057\u8A33\u3042\u308A\u307E\u305B\u3093\u3002\u3053\u306E\u30B5\u30A4\u30C8\u3067\u306F\u305D\u306E\u64CD\u4F5C\u306F\u5229\u7528\u3067\u304D\u307E\u305B\u3093\u3002",kikuCaptureDbError:"\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30A8\u30E9\u30FC\u306E\u305F\u3081\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002",kikuCaptureNoContext:"\u30DA\u30FC\u30B8\u60C5\u5831\u304C\u63D0\u4F9B\u3055\u308C\u306A\u304B\u3063\u305F\u305F\u3081\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002",kikuCaptureNoUrl:"\u6709\u52B9\u306AURL\u304C\u306A\u3044\u305F\u3081\u3001\u30A2\u30A4\u30C6\u30E0\u3092\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002",kikuCaptureNoneSelected:"\u4FDD\u5B58\u3059\u308B\u30A2\u30A4\u30C6\u30E0\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",kikuDeleteDbError:"\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30A8\u30E9\u30FC\u306E\u305F\u3081\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002",kikuDeleteDone:"\u4FDD\u5B58\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u304B\u3089\u524A\u9664\u3057\u307E\u3057\u305F\u3002",kikuDeleteNoContext:"\u524A\u9664\u5BFE\u8C61\u3092\u7279\u5B9A\u3059\u308B\u305F\u3081\u306E\u30DA\u30FC\u30B8\u60C5\u5831\u304C\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002",kikuMemoryIntro:"\u8907\u6570\u30B5\u30A4\u30C8\u3067\u4FDD\u5B58\u3057\u305F\u3059\u3079\u3066\u306E\u30A2\u30A4\u30C6\u30E0\u306F\u30D7\u30E9\u30A4\u30D9\u30FC\u30C8\u30E1\u30E2\u30EA\u30FC\u306B\u4FDD\u6301\u3055\u308C\u307E\u3059\u3002\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u3067\u30ED\u30C3\u30AF\u89E3\u9664:",kikuMintNeeded:"\u30B5\u30A4\u30C8\u3092\u307E\u305F\u3044\u3067\u30A2\u30A4\u30C6\u30E0\u3092\u4FDD\u5B58\u3059\u308B\u306B\u306Fkiku\u30AD\u30FC\u304C\u5FC5\u8981\u3067\u3059\u3002\u65B0\u3057\u304F\u767A\u884C\u3057\u307E\u3059\u30021\u5EA6\u3057\u304B\u8868\u793A\u3055\u308C\u306A\u3044\u305F\u3081\u3001\u5B89\u5168\u306A\u5834\u6240\u306B\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044\u3002",kikuMintOffer:"\u30A2\u30A4\u30C6\u30E0\u3092\u4FDD\u6301\u3057\u3066\u4ED6\u306E\u30B5\u30A4\u30C8\u3067\u3082\u5F15\u304D\u7D99\u3050\u3053\u3068\u304C\u3067\u304D\u307E\u3059 \u2014 kiku\u30AD\u30FC\u3092\u767A\u884C\u3057\u307E\u3059\u30021\u5EA6\u3057\u304B\u8868\u793A\u3055\u308C\u306A\u3044\u305F\u3081\u5B89\u5168\u306B\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044\u3002",kikuNeedKeyToUpdate:"\u4FDD\u5B58\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u3092\u66F4\u65B0\u30FB\u691C\u7D22\u3059\u308B\u306B\u306Fkiku\u30AD\u30FC\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",micDenied:"\u30DE\u30A4\u30AF\u304C\u30D6\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u3053\u306E\u30B5\u30A4\u30C8\u3067\u306E\u30DE\u30A4\u30AF\u30A2\u30AF\u30BB\u30B9\u3092\u8A31\u53EF\u3057\u3066\u304B\u3089\u3001\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",micFailed:"\u805E\u304D\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A71\u3057\u304F\u3060\u3055\u3044\u3002",micInsecure:"\u97F3\u58F0\u5165\u529B\u306B\u306F\u4FDD\u8B77\u3055\u308C\u305F\u63A5\u7D9A (HTTPS) \u304C\u5FC5\u8981\u3067\u3059\u3002",micLangUnsupported:"\u304A\u4F7F\u3044\u306E\u30D6\u30E9\u30A6\u30B6\u306F\u3053\u306E\u8A00\u8A9E\u306E\u97F3\u58F0\u8A8D\u8B58\u306B\u307E\u3060\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u6587\u5B57\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",micMissing:"\u30DE\u30A4\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002",micNetwork:"\u97F3\u58F0\u5165\u529B\u306B\u306F\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u63A5\u7D9A\u304C\u5FC5\u8981\u3067\u3059\u3002\u63A5\u7D9A\u3092\u78BA\u8A8D\u3057\u3066\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",micNoSpeech:"\u97F3\u58F0\u304C\u691C\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30DE\u30A4\u30AF\u306B\u8FD1\u3065\u3044\u3066\u3082\u3046\u4E00\u5EA6\u304A\u8A71\u3057\u304F\u3060\u3055\u3044\u3002",namePlaceholder:"\u304A\u540D\u524D\u3092\u5165\u529B\u2026",nameStepAsk:"\u4F55\u3068\u304A\u547C\u3073\u3059\u308C\u3070\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F",nameStepLead:"\u3053\u306E\u30B5\u30A4\u30C8\u3084\u4ED6\u306E\u30B5\u30A4\u30C8\u306E\u60C5\u5831\u3092\u691C\u7D22\u30FB\u8996\u899A\u5316\u30FB\u4FDD\u5B58\u3067\u304D\u307E\u3059\u3002",nameStepTitle:"\u306F\u3058\u3081\u307E\u3057\u3066\u3002",namesAsWritten:"\u5546\u54C1\u540D\u3084\u8A73\u7D30\u306F\u30B5\u30A4\u30C8\u306E\u63B2\u8F09\u901A\u308A\u3002",pillCompareTop2:"\u30C8\u30C3\u30D72\u3092\u6BD4\u8F03",pillCompareTop2Query:"{a} \u3068 {b} \u3092\u6BD4\u8F03\u3057\u3066",pillFindAlternatives:"\u4EE3\u66FF\u54C1\u3092\u63A2\u3059",pillFindAlternativesQuery:"{name} \u306E\u826F\u3044\u4EE3\u66FF\u54C1\u306F\u3042\u308A\u307E\u3059\u304B\uFF1F",pillMoreOn:"{name} \u306B\u3064\u3044\u3066\u3082\u3063\u3068\u77E5\u308B",pillMoreOnQuery:"{name} \u306B\u3064\u3044\u3066\u3082\u3063\u3068\u8A73\u3057\u304F\u6559\u3048\u3066",pillRecommend:"\u304A\u3059\u3059\u3081\u3092\u6559\u3048\u3066",pillRecommendQuery:"\u79C1\u306B\u4F55\u3092\u304A\u3059\u3059\u3081\u3057\u307E\u3059\u304B\uFF1F",pillShowPopular:"\u4EBA\u6C17\u5546\u54C1\u3092\u898B\u308B",pillShowPopularQuery:"\u4E00\u756A\u4EBA\u6C17\u306E\u5546\u54C1\u306F\u3069\u308C\u3067\u3059\u304B\uFF1F",pillSimilarOptions:"\u4F3C\u3066\u3044\u308B\u30AA\u30D7\u30B7\u30E7\u30F3",pillSimilarOptionsQuery:"{name} \u306B\u4F3C\u305F\u5546\u54C1\u3092\u3082\u3063\u3068\u898B\u305B\u3066",pillUnder:"{amount} \u4EE5\u4E0B",pillUnderQuery:"{amount} \u4EE5\u4E0B\u306E\u9078\u629E\u80A2\u3092\u898B\u305B\u3066",pillWhichBest:"\u3069\u308C\u304C\u4E00\u756A\u304A\u3059\u3059\u3081\uFF1F",pillWhichBestQuery:"\u3069\u308C\u304C\u4E00\u756A\u304A\u3059\u3059\u3081\u3067\u3059\u304B\uFF1F\u305D\u306E\u7406\u7531\u3082\u6559\u3048\u3066\u304F\u3060\u3055\u3044\u3002",replyingOriginal:"{lang}\u3067\u8FD4\u7B54\u3057\u307E\u3059\uFF08\u7D50\u679C\u306F\u30B5\u30A4\u30C8\u539F\u6587\u306E\u307E\u307E\uFF09\u3002\u4F55\u3067\u3082\u304A\u805E\u304D\u304F\u3060\u3055\u3044\u3002",replyingTranslated:"{lang}\u3067\u8FD4\u7B54\u3057\u307E\u3059\uFF08\u7D50\u679C\u3082\u7FFB\u8A33\uFF09\u3002\u4F55\u3067\u3082\u304A\u805E\u304D\u304F\u3060\u3055\u3044\u3002",statusSent:"\u9001\u4FE1\u6E08\u307F",statusStopped:"\u9001\u4FE1\u6E08\u307F \xB7 \u8FD4\u7B54\u3092\u505C\u6B62\u3057\u307E\u3057\u305F",thinking:"\u601D\u8003\u4E2D",thoughtForSeconds:"{duration} \u8003\u3048\u307E\u3057\u305F",thoughtProcess:"\u601D\u8003\u30D7\u30ED\u30BB\u30B9",vizDisclaimerImage:"\u4EBA\u5DE5\u77E5\u80FD\u306B\u3088\u3063\u3066\u751F\u6210\u3055\u308C\u307E\u3057\u305F \u2014 \u8272\u3001\u30B5\u30A4\u30BA\u3001\u914D\u7F6E\u306F\u5B9F\u969B\u306E\u5546\u54C1\u3068\u7570\u306A\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002",vizDisclaimerVideo:"\u4EBA\u5DE5\u77E5\u80FD\u306B\u3088\u3063\u3066\u751F\u6210\u3055\u308C\u307E\u3057\u305F \u2014 \u8272\u3001\u30B5\u30A4\u30BA\u3001\u52D5\u304D\u306F\u5B9F\u969B\u306E\u5546\u54C1\u3068\u7570\u306A\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002",vizUnavailable:"\u30D7\u30EC\u30D3\u30E5\u30FC\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002",voiceHint:"\u304A\u8A71\u3057\u304F\u3060\u3055\u3044 \u2014 \u8A71\u3057\u7D42\u3048\u305F\u3089\u304A\u7B54\u3048\u3057\u307E\u3059\u3002",voiceListening:"\u805E\u304D\u53D6\u308A\u4E2D\u2026 \u30BF\u30C3\u30D7\u3057\u3066\u505C\u6B62",voiceModeExit:"\u30CF\u30F3\u30BA\u30D5\u30EA\u30FC\u3092\u7D42\u4E86",voiceModeStart:"\u30CF\u30F3\u30BA\u30D5\u30EA\u30FC\u4F1A\u8A71",voiceMuted:"\u30DF\u30E5\u30FC\u30C8\u4E2D",voiceMutedHint:"\u30DE\u30A4\u30AF\u3092\u30BF\u30C3\u30D7\u3057\u3066\u3082\u3046\u4E00\u5EA6\u304A\u8A71\u3057\u304F\u3060\u3055\u3044\u3002",voicePhaseListening:"\u805E\u304D\u53D6\u308A\u4E2D",voicePhaseSpeaking:"\u767A\u7B54\u4E2D",voicePhaseThinking:"\u8003\u3048\u4E2D",voiceSending:"\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F \u2014 \u9001\u4FE1\u4E2D\u2026",termsStepTitle:"\u30D7\u30E9\u30A4\u30D0\u30B7\u30FC\u3068\u5229\u7528\u898F\u7D04",termsStepSubtitle:"\u900F\u660E\u6027\u3001\u533F\u540D\u6027\u3001\u305D\u3057\u3066\u500B\u4EBA\u3092\u7279\u5B9A\u3057\u306A\u3044\u8A2D\u8A08\u3002",termsPiiTitle:"\u500B\u4EBA\u3092\u7279\u5B9A\u3059\u308B\u60C5\u5831\u306E\u4E0D\u53CE\u96C6",termsPiiDesc:"\u30C1\u30E3\u30C3\u30C8\u3084\u97F3\u58F0\u30BB\u30C3\u30B7\u30E7\u30F3\u304B\u3089\u500B\u4EBA\u3092\u7279\u5B9A\u3067\u304D\u308B\u60C5\u5831\uFF08\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3001\u96FB\u8A71\u756A\u53F7\u3001\u5B9F\u540D\u306A\u3069\uFF09\u3092\u53CE\u96C6\u30FB\u4FDD\u5B58\u3059\u308B\u3053\u3068\u306F\u4E00\u5207\u3042\u308A\u307E\u305B\u3093\u3002",termsSessionTitle:"\u533F\u540D\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u8B58\u5225\u5B50",termsSessionDesc:"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u7DAD\u6301\u3059\u308B\u305F\u3081\u306B\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u5074\u3067\u751F\u6210\u3055\u308C\u305F\u533F\u540D\u30C8\u30FC\u30AF\u30F3\u306E\u307F\u3092\u4F7F\u7528\u3057\u3001\u5B9F\u969B\u306E\u8EAB\u5143\u3068\u7D10\u4ED8\u3051\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002",termsMemoryTitle:"\u4E00\u6642\u7684\u306A\u30C1\u30E3\u30C3\u30C8 vs Mimi Vault",termsMemoryDesc:"\u901A\u5E38\u306E\u30C1\u30E3\u30C3\u30C8\u306F\u4E00\u6642\u7684\u306A\u3082\u306E\u3067\u3059\u3002\u30BF\u30D6\u3092\u9589\u3058\u308B\u304B\u30C1\u30E3\u30C3\u30C8\u3092\u6D88\u53BB\u3059\u308B\u3068\u5B8C\u5168\u306B\u7834\u68C4\u3055\u308C\u307E\u3059\u3002\u300C@kiku\u300D\u3067\u4FDD\u5B58\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u306F\u6697\u53F7\u5316\u3055\u308C\u3001mimi.akropolys.cloud \u3067\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u30AD\u30FC\u3092\u4F7F\u3063\u3066\u30ED\u30C3\u30AF\u89E3\u9664\u3067\u304D\u307E\u3059\u3002",termsCookieTitle:"\u30DB\u30B9\u30C8\u30B5\u30A4\u30C8\u306E\u30C6\u30EC\u30E1\u30C8\u30EA",termsCookieDesc:"kiku\u304C\u57CB\u3081\u8FBC\u307E\u308C\u3066\u3044\u308B\u30DB\u30B9\u30C8\u30B5\u30A4\u30C8\u306F\u3001\u72EC\u81EA\u306E\u30AF\u30C3\u30AD\u30FC\u30DD\u30EA\u30B7\u30FC\u306B\u57FA\u3065\u3044\u3066\u30AF\u30C3\u30AD\u30FC\u3084\u30A2\u30AF\u30BB\u30B9\u89E3\u6790\u3092\u53CE\u96C6\u3059\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\uFF08kiku\u306E\u7BA1\u7406\u5916\uFF09\u3002",termsAgreeButton:"\u540C\u610F\u3057\u3066\u7D9A\u884C",termsAgreeCounting:"\u540C\u610F\u3057\u3066\u7D9A\u884C ({seconds}\u79D2)",termsPlaceholder:"\u4E0A\u8A18\u306E\u30D7\u30E9\u30A4\u30D0\u30B7\u30FC\u3068\u898F\u7D04\u3092\u3054\u78BA\u8A8D\u3044\u305F\u3060\u304D\u3001\u540C\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u2026",whatHaveYouSaved:"\u4F55\u3092\u4FDD\u5B58\u3057\u307E\u3057\u305F\u304B\uFF1F"},portuguese:{allSet:"Tudo pronto, {name}.",asWritten:"Como escrito",captureAll:"Capturar tudo ({count})",captureAndRemember:"kiku \u2014 capturar\u202F&\u202Flembrar",captureCurrentPage:"Capturar p\xE1gina atual",cardClickAnswer:"O {name}",cardClickQuery:"Fale mais sobre o {name}{price} \u2014 quais s\xE3o seus detalhes principais, para quem \xE9 mais indicado e o que devo saber?",clearChat:"Limpar chat",defaultPlaceholder:"Pergunte-me qualquer coisa\u2026",deleteThis:"Excluir isso",detailsTranslated:"Detalhes traduzidos. N\xFAmeros e links permanecem exatamente como listados.",displayCapture:"capturar {name}",displayCaptureAll:"capturar tudo ({count} itens)",displayDelete:"excluir isso",displayViewHistory:"o que voc\xEA salvou?",entityLangIntro:"Eu respondo em {lang}. Os cart\xF5es de resultado podem permanecer exatamente como o site os escreveu ou ser traduzidos tamb\xE9m.",entityLangPlaceholder:"Escolha um dos dois cart\xF5es acima\u2026",errAccessRevoked:"Seu acesso ao assistente foi revogado pela loja.",errAccountRequired:"Por favor, crie uma conta para continuar usando o assistente de chat.",errShopperReplyLimit:"Voc\xEA atingiu o limite de respostas deste site para sua conta.",errStreamInterrupted:"A resposta foi interrompida. Por favor, tente novamente.",errTokenLimit:"Voc\xEA atingiu seu limite de uso. Atualize seus limites de cobran\xE7a no painel para continuar.",errTooManyRequests:"O assistente est\xE1 recebendo muitas solicita\xE7\xF5es no momento. Por favor, tente novamente em alguns instantes.",footerHint:"kiku \xB7 pesquisa todo o cat\xE1logo em tempo real",greetReturning:"Oi, {name}.",greetReturningLead:"O que posso encontrar para voc\xEA hoje?",howShouldResultsLook:"Como os resultados devem aparecer?",inLanguage:"Em {lang}",keyAutoHide:"Esconde automaticamente em {seconds}s.",keyCopied:"Copiado",keyCopyId:"Copiar id",keyCopySecret:"Copiar segredo",keyCreateNew:"Sou novo \u2014 criar um",keyCreating:"Criando\u2026",keyDismiss:"Fechar",keyPastePlaceholder:"seu id p\xFAblico\u2026",keyPastePrompt:"Cole seu id p\xFAblico \u2014 ou crie um",keyPublicHint:"Cole isso em qualquer site para salvar na mesma mem\xF3ria.",keyPublicTitle:"Seu id p\xFAblico",keySecretHint:"Mantenha privado \u2014 use para desbloquear sua mem\xF3ria.",keySecretTitle:"Seu segredo \u2014 mostrado apenas uma vez",keyUseMine:"Usar meu id",kikuActionUnavailable:"Desculpe \u2014 essa a\xE7\xE3o n\xE3o est\xE1 dispon\xEDvel neste site.",kikuCaptureDbError:"Falha ao capturar devido a um erro de banco de dados.",kikuCaptureNoContext:"Falha ao capturar porque nenhum contexto de p\xE1gina ou produto foi fornecido pelo SDK.",kikuCaptureNoUrl:"N\xE3o foi poss\xEDvel salvar nenhum item \u2014 nenhum tinha URL v\xE1lido.",kikuCaptureNoneSelected:"Nenhum item foi selecionado para captura.",kikuDeleteDbError:"Falha ao excluir devido a um erro de banco de dados.",kikuDeleteDone:"Removido dos seus itens salvos.",kikuDeleteNoContext:"Falha ao excluir porque nenhum contexto de p\xE1gina foi fornecido para identificar o que excluir.",kikuMemoryIntro:"Tudo que voc\xEA capturou em sites est\xE1 na sua mem\xF3ria privada. Desbloqueie-a com seu segredo:",kikuMintNeeded:"Para salvar itens entre sites voc\xEA precisa de uma chave kiku \u2014 vou gerar uma para voc\xEA. Ela ser\xE1 mostrada apenas uma vez, ent\xE3o guarde-a em um local seguro.",kikuMintOffer:"Posso guardar isso para voc\xEA e fazer com que siga voc\xEA entre sites \u2014 vou gerar uma chave kiku. Ela ser\xE1 mostrada apenas uma vez, ent\xE3o guarde-a em um local seguro.",kikuNeedKeyToUpdate:"Insira sua chave kiku para que eu possa encontrar e atualizar seus itens salvos.",namePlaceholder:"Digite seu nome\u2026",nameStepAsk:"Como devo chamar voc\xEA?",nameStepLead:"Posso pesquisar, visualizar ou capturar qualquer coisa para voc\xEA \u2014 neste site ou em qualquer outro.",nameStepTitle:"Prazer em conhec\xEA-lo.",namesAsWritten:"Nomes e detalhes exatamente como o site os lista.",pillCompareTop2:"Comparar os 2 melhores",pillCompareTop2Query:"Compare o {a} e o {b}",pillFindAlternatives:"Encontrar alternativas",pillFindAlternativesQuery:"Quais s\xE3o boas alternativas ao {name}?",pillMoreOn:"Mais sobre {name}",pillMoreOnQuery:"Fale mais sobre o {name}",pillRecommend:"Recomendar algo",pillRecommendQuery:"O que voc\xEA recomenda para mim?",pillShowPopular:"Mostrar itens populares",pillShowPopularQuery:"Quais s\xE3o os seus itens mais populares?",pillSimilarOptions:"Op\xE7\xF5es semelhantes",pillSimilarOptionsQuery:"Mostre-me mais op\xE7\xF5es semelhantes ao {name}",pillUnder:"Abaixo de {amount}",pillUnderQuery:"Mostre-me op\xE7\xF5es abaixo de {amount}",pillWhichBest:"Qual \xE9 o melhor?",pillWhichBestQuery:"Qual voc\xEA recomendaria e por qu\xEA?",replyingOriginal:"Respondendo em {lang}, resultados como o site escreveu. Pergunte-me qualquer coisa.",replyingTranslated:"Respondendo em {lang}, resultados tamb\xE9m traduzidos. Pergunte-me qualquer coisa.",statusSent:"Enviado",statusStopped:"Enviado \xB7 resposta interrompida",thinking:"Pensando",thoughtForSeconds:"Pensou por {duration}",thoughtProcess:"Processo de pensamento",vizUnavailable:"A visualiza\xE7\xE3o n\xE3o p\xF4de ser carregada.",termsStepTitle:"Privacidade e Termos de Uso",termsStepSubtitle:"Transparente, an\xF4nimo e sem coleta de dados pessoais.",termsPiiTitle:"Zero Coleta de Dados Pessoais",termsPiiDesc:"Nunca coletamos nem armazenamos informa\xE7\xF5es de identifica\xE7\xE3o pessoal (sem e-mails, telefones ou identidades reais) das suas conversas ou sess\xF5es de voz.",termsSessionTitle:"Tokens de Sess\xE3o An\xF4nimos",termsSessionDesc:"Sua sess\xE3o usa um token an\xF4nimo no cliente apenas para manter o contexto. Nunca \xE9 vinculado \xE0 sua identidade real.",termsMemoryTitle:"Conversas Ef\xEAmeras vs. Cofre Mimi",termsMemoryDesc:'Conversas normais s\xE3o ef\xEAmeras \u2014 fechar ou limpar o chat as apaga para sempre. Itens salvos com "@kiku" s\xE3o criptografados e podem ser desbloqueados em mimi.akropolys.cloud com sua chave secreta.',termsCookieTitle:"Telemetria do Site Hospedeiro",termsCookieDesc:"O site onde o kiku est\xE1 incorporado pode coletar cookies e an\xE1lises de acordo com sua pr\xF3pria pol\xEDtica de cookies, fora do controle do kiku.",termsAgreeButton:"Concordar e Continuar",termsAgreeCounting:"Concordar e Continuar ({seconds}s)",termsPlaceholder:"Por favor, revise e aceite a privacidade e os termos acima\u2026",whatHaveYouSaved:"O que voc\xEA salvou?",micDenied:"Microfone bloqueado. Permita o acesso ao microfone neste site e tente novamente.",micFailed:"N\xE3o foi poss\xEDvel ouvir. Tente novamente.",micInsecure:"A voz precisa de uma conex\xE3o segura (https).",micLangUnsupported:"Este navegador ainda n\xE3o transcreve este idioma. Digite em vez disso.",micMissing:"Nenhum microfone encontrado.",micNetwork:"A voz precisa de uma conex\xE3o no momento. Verifique a sua e tente novamente.",micNoSpeech:"N\xE3o ouvimos nada. Tente novamente, um pouco mais perto do microfone.",vizDisclaimerImage:"Gerado com Intelig\xEAncia Artificial \u2014 cores, tamanho e posi\xE7\xE3o podem diferir do produto real.",vizDisclaimerVideo:"Gerado com Intelig\xEAncia Artificial \u2014 cores, tamanho e movimento podem diferir do produto real.",voiceHint:"Basta falar \u2014 responderei quando voc\xEA fizer uma pausa.",voiceListening:"Ouvindo\u2026 toque no microfone para parar",voiceModeExit:"Sair do modo m\xE3os-livres",voiceModeStart:"Conversa em m\xE3os-livres",voiceMuted:"Silenciado",voiceMutedHint:"Toque no microfone para falar novamente.",voicePhaseListening:"Ouvindo",voicePhaseSpeaking:"Falando",voicePhaseThinking:"Pensando",voiceSending:"Entendido \u2014 enviando\u2026"},spanish:{allSet:"Todo listo, {name}.",asWritten:"Tal como est\xE1 escrito",captureAll:"Capturar todo ({count})",captureAndRemember:"kiku \u2014 capturar y recordar",captureCurrentPage:"Capturar p\xE1gina actual",cardClickAnswer:"El {name}",cardClickQuery:"Cu\xE9ntame m\xE1s sobre {name}{price} \u2014 \xBFcu\xE1les son sus detalles clave, para qui\xE9n es m\xE1s adecuado y qu\xE9 deber\xEDa saber?",clearChat:"Borrar chat",defaultPlaceholder:"Preg\xFAntame lo que quieras\u2026",deleteThis:"Eliminar esto",detailsTranslated:"Detalles traducidos. Los n\xFAmeros y enlaces se mantienen exactamente como se muestran.",displayCapture:"capturar {name}",displayCaptureAll:"capturar todo ({count} elementos)",displayDelete:"eliminar esto",displayViewHistory:"\xBFqu\xE9 has guardado?",entityLangIntro:"Respondo en {lang}. Las tarjetas de resultados pueden mantenerse exactamente como las escribi\xF3 este sitio, o tambi\xE9n pueden traducirse.",entityLangPlaceholder:"Elige una de las dos tarjetas de arriba\u2026",errAccessRevoked:"La tienda ha revocado su acceso al asistente.",errAccountRequired:"Por favor, cree una cuenta para seguir usando el asistente de chat.",errShopperReplyLimit:"Ha alcanzado el l\xEDmite de respuestas de este sitio para su cuenta.",errStreamInterrupted:"La respuesta fue interrumpida. Por favor, int\xE9ntelo de nuevo.",errTokenLimit:"Ha alcanzado su l\xEDmite de uso. Por favor, actualice sus l\xEDmites de facturaci\xF3n en su panel de control para continuar.",errTooManyRequests:"El asistente est\xE1 recibiendo demasiadas solicitudes en este momento. Por favor, int\xE9ntelo de nuevo en unos instantes.",footerHint:"kiku \xB7 busca en todo el cat\xE1logo en tiempo real",greetReturning:"Hola, {name}.",greetReturningLead:"\xBFQu\xE9 puedo encontrar para usted hoy?",howShouldResultsLook:"\xBFC\xF3mo deber\xEDan verse los resultados?",inLanguage:"En {lang}",keyAutoHide:"Se oculta autom\xE1ticamente en {seconds}s.",keyCopied:"Copiado",keyCopyId:"Copiar ID",keyCopySecret:"Copiar secreto",keyCreateNew:"Soy nuevo/a, crear uno",keyCreating:"Creando\u2026",keyDismiss:"Descartar",keyPastePlaceholder:"tu ID p\xFAblico\u2026",keyPastePrompt:"Pega tu ID p\xFAblico \u2014 o crea uno",keyPublicHint:"P\xE9galo en cualquier sitio para guardar en la misma memoria.",keyPublicTitle:"Tu ID p\xFAblico",keySecretHint:"Mantenlo privado \u2014 \xFAsalo para desbloquear tu memoria.",keySecretTitle:"Tu secreto \u2014 mostrado solo una vez",keyUseMine:"Usar mi ID",kikuActionUnavailable:"Lo siento, esa acci\xF3n no est\xE1 disponible en este sitio.",kikuCaptureDbError:"La captura fall\xF3 debido a un error de base de datos.",kikuCaptureNoContext:"La captura fall\xF3 porque el SDK no proporcion\xF3 contexto de p\xE1gina o producto.",kikuCaptureNoUrl:"No se pudieron guardar elementos \u2014 ninguno ten\xEDa una URL v\xE1lida.",kikuCaptureNoneSelected:"No se seleccionaron elementos para capturar.",kikuDeleteDbError:"La eliminaci\xF3n fall\xF3 debido a un error de base de datos.",kikuDeleteDone:"Lo he eliminado de tus elementos guardados.",kikuDeleteNoContext:"La eliminaci\xF3n fall\xF3 porque no se proporcion\xF3 contexto de p\xE1gina para identificar qu\xE9 eliminar.",kikuMemoryIntro:"Todo lo que has capturado en diferentes sitios vive en tu memoria privada. Desbloqu\xE9ala con tu secreto:",kikuMintNeeded:"Para guardar elementos en diferentes sitios necesitas una clave kiku \u2014 te crear\xE9 una. Se muestra solo una vez, as\xED que gu\xE1rdala en un lugar seguro.",kikuMintOffer:"Puedo guardar esto por ti y hacer que te siga en diferentes sitios \u2014 te crear\xE9 una clave kiku. Se muestra solo una vez, as\xED que gu\xE1rdala en un lugar seguro.",kikuNeedKeyToUpdate:"Introduce tu clave kiku para que pueda encontrar y actualizar tus elementos guardados.",micDenied:"Micr\xF3fono bloqueado. Permite el acceso al micr\xF3fono para este sitio e int\xE9ntalo de nuevo.",micFailed:"No pude o\xEDr eso. Int\xE9ntalo de nuevo.",micInsecure:"La voz requiere una conexi\xF3n segura (https).",micLangUnsupported:"Este navegador a\xFAn no puede transcribir ese idioma. Escriba en su lugar.",micMissing:"No se encontr\xF3 ning\xFAn micr\xF3fono.",micNetwork:"La voz necesita una conexi\xF3n en este momento. Revise la suya e int\xE9ntelo de nuevo.",micNoSpeech:"No he captado nada. Int\xE9ntelo de nuevo, un poco m\xE1s cerca del micr\xF3fono.",namePlaceholder:"Escriba su nombre\u2026",nameStepAsk:"\xBFC\xF3mo debo llamarle?",nameStepLead:"Puedo buscar, visualizar o capturar cualquier cosa por usted, en este sitio o en cualquier otro.",nameStepTitle:"Encantado de conocerle.",namesAsWritten:"Nombres y detalles exactamente como los enumera el sitio.",pillCompareTop2:"Comparar los 2 mejores",pillCompareTop2Query:"Compara {a} y {b}",pillFindAlternatives:"Buscar alternativas",pillFindAlternativesQuery:"\xBFQu\xE9 alternativas hay a {name}?",pillMoreOn:"M\xE1s sobre {name}",pillMoreOnQuery:"Cu\xE9ntame m\xE1s sobre {name}",pillRecommend:"Recomendar algo",pillRecommendQuery:"\xBFQu\xE9 me recomiendas?",pillShowPopular:"Mostrar art\xEDculos populares",pillShowPopularQuery:"\xBFCu\xE1les son tus art\xEDculos m\xE1s populares?",pillSimilarOptions:"Opciones similares",pillSimilarOptionsQuery:"Mu\xE9strame m\xE1s opciones como {name}",pillUnder:"Menos de {amount}",pillUnderQuery:"Mu\xE9strame opciones por menos de {amount}",pillWhichBest:"\xBFCu\xE1l es el mejor?",pillWhichBestQuery:"\xBFCu\xE1l me recomendar\xEDas y por qu\xE9?",replyingOriginal:"Respondiendo en {lang}, resultados tal como los escribi\xF3 este sitio. Preg\xFAnteme lo que quiera.",replyingTranslated:"Respondiendo en {lang}, resultados tambi\xE9n traducidos. Preg\xFAnteme lo que quiera.",statusSent:"Enviado",statusStopped:"Enviado \xB7 respuesta detenida",thinking:"Pensando",thoughtForSeconds:"Pensado durante {duration}",thoughtProcess:"Proceso de pensamiento",vizDisclaimerImage:"Generado con Inteligencia Artificial: los colores, el tama\xF1o y la ubicaci\xF3n pueden diferir del producto real.",vizDisclaimerVideo:"Generado con Inteligencia Artificial: los colores, el tama\xF1o y el movimiento pueden diferir del producto real.",vizUnavailable:"No se pudo cargar la vista previa.",voiceListening:"Escuchando\u2026 toque el micr\xF3fono para detener.",voiceSending:"Entendido, enviando\u2026",termsStepTitle:"Privacidad y t\xE9rminos de uso",termsStepSubtitle:"Transparente, an\xF3nimo y sin recolecci\xF3n de datos personales.",termsPiiTitle:"Cero recolecci\xF3n de datos personales",termsPiiDesc:"Nunca recopilamos ni almacenamos informaci\xF3n de identificaci\xF3n personal (sin correos, n\xFAmeros de tel\xE9fono ni identidades reales) de tus conversaciones o sesiones de voz.",termsSessionTitle:"Tokens de sesi\xF3n an\xF3nimos",termsSessionDesc:"Tu sesi\xF3n utiliza un token an\xF3nimo generado en el cliente \xFAnicamente para mantener el contexto. Nunca se vincula a tu identidad real.",termsMemoryTitle:"Chats ef\xEDmeros vs. B\xF3veda Mimi",termsMemoryDesc:"Las conversaciones regulares son ef\xEDmeras: cerrar o borrar el chat las elimina para siempre. Lo que guardas con \xAB@kiku\xBB est\xE1 cifrado y se puede desbloquear en mimi.akropolys.cloud con tu clave secreta.",termsCookieTitle:"Telemetr\xEDa del sitio web anfitri\xF3n",termsCookieDesc:"El sitio web donde est\xE1 integrado kiku puede recopilar cookies y anal\xEDticas seg\xFAn su propia pol\xEDtica de cookies, fuera del control de kiku.",termsAgreeButton:"Aceptar y continuar",termsAgreeCounting:"Aceptar y continuar ({seconds}s)",termsPlaceholder:"Por favor, revisa y acepta nuestra privacidad y t\xE9rminos arriba\u2026",whatHaveYouSaved:"\xBFQu\xE9 ha guardado?",voiceHint:"Solo habla \u2014 responder\xE9 cuando hagas una pausa.",voiceModeExit:"Salir de manos libres",voiceModeStart:"Conversaci\xF3n manos libres",voiceMuted:"Silenciado",voiceMutedHint:"Toca el micr\xF3fono para hablar de nuevo.",voicePhaseListening:"Escuchando",voicePhaseSpeaking:"Hablando",voicePhaseThinking:"Pensando"},swahili:{allSet:"Uko tayari, {name}.",asWritten:"Kama ilivyoandikwa",captureAll:"Chukua zote ({count})",captureAndRemember:"kiku \u2014 chukua & kumbuka",captureCurrentPage:"Chukua ukurasa wa sasa",cardClickAnswer:"{name}",cardClickQuery:"Nisaidie kujua zaidi kuhusu {name}{price} \u2014 ni maelezo yake muhimu, ni kwa nani inafaa zaidi, na ninapaswa kujua nini?",clearChat:"Futa mazungumzo",defaultPlaceholder:"Uliza chochote\u2026",deleteThis:"Futa hii",detailsTranslated:"Maelezo yame tafsiriwa. Nambari na viungo vinabaki kama ilivyo.",displayCapture:"chukua {name}",displayCaptureAll:"chukua zote ({count} items)",displayDelete:"futa hii",displayViewHistory:"ulivyohifadhi?",entityLangIntro:"Nitajibu kwa {lang}. Kadi za matokeo zinaweza kubaki kama ilivyoandikwa kwenye tovuti hii, au kutafsiriwa pia.",entityLangPlaceholder:"Chagua moja ya kadi mbili zilizo juu\u2026",errAccessRevoked:"Ufikiaji wako kwa msaidizi umeondolewa na duka.",errAccountRequired:"Tafadhali unda akaunti ili kuendelea kutumia msaidizi wa mazungumzo.",errShopperReplyLimit:"Umefikia kikomo cha majibu cha tovuti hii kwa akaunti yako.",errStreamInterrupted:"Jibu lilikatizwa. Tafadhali jaribu tena.",errTokenLimit:"Umefikia kikomo cha matumizi yako. Tafadhali sasisha mipaka ya malipo kwenye dashbodi yako ili kuendelea.",errTooManyRequests:"Msaidizi anapokea maombi mengi sana kwa sasa. Tafadhali jaribu tena baada ya muda mfupi.",footerHint:"kiku \xB7 hutafuta katika katalogi nzima kwa wakati halisi",greetReturning:"Habari, {name}.",greetReturningLead:"Nini naweza kukutafuta leo?",howShouldResultsLook:"Matokeo yanapaswa kuonekana vipi?",inLanguage:"Kwa {lang}",keyAutoHide:"Inaficha kiotomatiki baada ya {seconds}s.",keyCopied:"Imekopiwa",keyCopyId:"Nakili kitambulisho",keyCopySecret:"Nakili siri",keyCreateNew:"Mimi mpya \u2014 unda moja",keyCreating:"Inaunda\u2026",keyDismiss:"Ondoa",keyPastePlaceholder:"kitambulisho chako cha umma\u2026",keyPastePrompt:"Bandika kitambulisho chako cha umma \u2014 au unda moja",keyPublicHint:"Bandika hii kwenye tovuti yoyote ili kuihifadhi katika kumbukumbu sawa.",keyPublicTitle:"Kitambulisho chako cha umma",keySecretHint:"Ikeepye kibinafsi \u2014 tumia kufungua kumbukumbu yako.",keySecretTitle:"Siri yako \u2014 inaonyeshwa mara moja tu",keyUseMine:"Tumia kitambulisho changu",kikuActionUnavailable:"Samahani \u2014 kitendo hicho hakipatikani kwenye tovuti hii.",kikuCaptureDbError:"Uchukuaji umeshindwa kutokana na hitilafu ya hifadhidata.",kikuCaptureNoContext:"Uchukuaji umeshindwa kwa sababu hakuna muktadha wa ukurasa au bidhaa uliotolewa na SDK.",kikuCaptureNoUrl:"Haikuweza kuhifadhi vitu vyovyote \u2014 hakuna kilichokuwa na URL halali.",kikuCaptureNoneSelected:"Hakuna vitu vilivyochaguliwa kwa uchukuaji.",kikuDeleteDbError:"Ufutaji umeshindwa kutokana na hitilafu ya hifadhidata.",kikuDeleteDone:"Imeondolewa kutoka vitu vyako vilivyohifadhiwa.",kikuDeleteNoContext:"Ufutaji umeshindwa kwa sababu hakuna muktadha wa ukurasa uliotolewa kutambua kinachofutwa.",kikuMemoryIntro:"Kila kitu ulichukua kwenye tovuti mbalimbali kiko katika kumbukumbu yako ya kibinafsi. Kifungue kwa siri yako:",kikuMintNeeded:"Ili kuhifadhi vitu kwenye tovuti mbalimbali unahitaji ufunguo wa kiku \u2014 nitaunda moja kwa ajili yako. Inaonyeshwa mara moja tu, hivyo uiweke mahali salama.",kikuMintOffer:"Ninaweza kuhifadhi hii kwa ajili yako na iende nawe kwenye tovuti mbalimbali \u2014 nitaunda ufunguo wa kiku. Inaonyeshwa mara moja tu, hivyo uiweke mahali salama.",kikuNeedKeyToUpdate:"Weka ufunguo wako wa kiku ili niweze kupata na kusasisha vitu vyako vilivyohifadhiwa.",micDenied:"Kinanda cha sauti kimezuiwa. Ruhusu ufikiaji wa kinanda kwa tovuti hii, kisha jaribu tena.",micFailed:"Sikuweza kusikia hilo. Jaribu tena.",micInsecure:"Sauti inahitaji muunganisho salama (https).",micLangUnsupported:"Kivinjari hiki hakiwezi kuandika lugha hiyo bado. Andika badala yake.",micMissing:"Hakuna kipaza sauti kilichopatikana.",micNetwork:"Sauti inahitaji muunganisho kwa sasa. Angalia yako na ujaribu tena.",micNoSpeech:"Sijapata chochote. Jaribu tena, karibu zaidi na kipaza sauti.",namePlaceholder:"Andika jina lako\u2026",nameStepAsk:"Ninapaswa kukuita nani?",nameStepLead:"Ninaweza kutafuta, kuonyesha, au kunasa chochote kwa ajili yako \u2014 kwenye tovuti hii au nyingine yoyote.",nameStepTitle:"Nafurahi kukutana nawe.",namesAsWritten:"Majina na maelezo kama ilivyo kwenye tovuti.",pillCompareTop2:"Linganisha bora 2",pillCompareTop2Query:"Linganisha {a} na {b}",pillFindAlternatives:"Tafuta mbadala",pillFindAlternativesQuery:"Ni mbadala gani mazuri kwa {name}?",pillMoreOn:"Zaidi kuhusu {name}",pillMoreOnQuery:"Nisaidie kujua zaidi kuhusu {name}",pillRecommend:"Pendekeza kitu",pillRecommendQuery:"Unaweza kunipendekeza nini?",pillShowPopular:"Onyesha vitu maarufu",pillShowPopularQuery:"Ni bidhaa gani zimekuwa maarufu zaidi?",pillSimilarOptions:"Chaguzi zinazofanana",pillSimilarOptionsQuery:"Nionyeshe zaidi kama {name}",pillUnder:"Chini ya {amount}",pillUnderQuery:"Nionyeshe chaguo chini ya {amount}",pillWhichBest:"Ni ipi bora?",pillWhichBestQuery:"Ni ipi unayopendekeza na kwa nini?",replyingOriginal:"Ninajibu kwa {lang}, matokeo kama ilivyoandikwa kwenye tovuti hii. Uliza chochote.",replyingTranslated:"Ninajibu kwa {lang}, matokeo yamefasiriwa pia. Uliza chochote.",statusSent:"Imetumwa",statusStopped:"Imetumwa \xB7 majibu yametolewa",thinking:"Inafikiri",thoughtForSeconds:"Imefikiri kwa {duration}",thoughtProcess:"Mchakato wa mawazo",vizDisclaimerImage:"Imetengenezwa kwa kutumia Akili Bandia \u2014 rangi, ukubwa na upangaji huenda yakatofautiana na bidhaa halisi.",vizDisclaimerVideo:"Imetengenezwa kwa kutumia Akili Bandia \u2014 rangi, ukubwa na mwendo huenda yakatofautiana na bidhaa halisi.",vizUnavailable:"Hakuna uwezo wa kupakia onyesho la awali.",voiceListening:"Inasikiliza\u2026 gonga kipaza sauti ili kusimama",voiceSending:"Nimepokea \u2014 ninatuma\u2026",termsStepTitle:"Faragha na Masharti ya Matumizi",termsStepSubtitle:"Wazi, bila utambulisho, na bila kukusanya taarifa binafsi.",termsPiiTitle:"Hakuna Ukusanyaji wa Taarifa Binafsi",termsPiiDesc:"Hatukusanyi wala kuhifadhi taarifa za utambulisho binafsi (hakuna barua pepe, nambari za simu, wala majina halisi) kutoka kwa mazungumzo yako au sauti.",termsSessionTitle:"Vitambulisho Visivyojulikana vya Kipindi",termsSessionDesc:"Kipindi chako kinatumia kitambulisho kisichojulikana upande wa mteja ili kuendeleza muktadha tu. Hakihusishwi na utambulisho wako halisi.",termsMemoryTitle:"Mazungumzo ya Muda dhidi ya Hazina ya Mimi",termsMemoryDesc:'Mazungumzo ya kawaida ni ya muda \u2014 kufunga au kufuta mazungumzo kunayaondoa kabisa. Vitu unavyohifadhi kwa "@kiku" vimelindwa na vinaweza kufunguliwa kwenye mimi.akropolys.cloud kwa ufunguo wako wa siri.',termsCookieTitle:"Takwimu za Tovuti Mwenyeji",termsCookieDesc:"Tovuti inayotumia kiku inaweza kukusanya vidakuzi na takwimu kulingana na sera yake ya vidakuzi, nje ya udhibiti wa kiku.",termsAgreeButton:"Kubali na Uendelee",termsAgreeCounting:"Kubali na Uendelee ({seconds}s)",termsPlaceholder:"Tafadhali kagua na ukubali sera ya faragha na masharti hapo juu\u2026",whatHaveYouSaved:"Umehifadhi nini?",voiceHint:"Ongea tu \u2014 nitajibu ukipumzika.",voiceModeExit:"Ondoka kwenye hali ya bila mikono",voiceModeStart:"Mazungumzo ya bila mikono",voiceMuted:"Imezimwa sauti",voiceMutedHint:"Gonga kipaza sauti ili kuongea tena.",voicePhaseListening:"Inasikiliza",voicePhaseSpeaking:"Inazungumza",voicePhaseThinking:"Inafikiri"},urdu:{allSet:"\u0622\u067E \u0628\u0627\u0644\u06A9\u0644 \u062A\u06CC\u0627\u0631 \u06C1\u06CC\u06BA\u060C {name}\u06D4",asWritten:"\u062C\u06CC\u0633\u0627 \u0644\u06A9\u06BE\u0627 \u06C1\u06D2",captureAll:"\u0633\u0628 \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u06CC\u06BA ({count})",captureAndRemember:"kiku \u2014 \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u06CC\u06BA \u0627\u0648\u0631 \u06CC\u0627\u062F \u0631\u06A9\u06BE\u06CC\u06BA",captureCurrentPage:"\u0645\u0648\u062C\u0648\u062F\u06C1 \u0635\u0641\u062D\u06C1 \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u06CC\u06BA",cardClickAnswer:"{name}",cardClickQuery:"\u0645\u062C\u06BE\u06D2 {name}{price} \u06A9\u06D2 \u0628\u0627\u0631\u06D2 \u0645\u06CC\u06BA \u0645\u0632\u06CC\u062F \u0628\u062A\u0627\u0626\u06CC\u06BA \u2014 \u0627\u0633 \u06A9\u06CC \u0627\u06C1\u0645 \u062E\u0635\u0648\u0635\u06CC\u0627\u062A \u06A9\u06CC\u0627 \u06C1\u06CC\u06BA\u060C \u06CC\u06C1 \u06A9\u0633 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0628\u06C1\u062A\u0631\u06CC\u0646 \u06C1\u06D2\u060C \u0627\u0648\u0631 \u0645\u062C\u06BE\u06D2 \u06A9\u06CC\u0627 \u062C\u0627\u0646\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2\u061F",clearChat:"\u0686\u06CC\u0679 \u0635\u0627\u0641 \u06A9\u0631\u06CC\u06BA",defaultPlaceholder:"\u0645\u062C\u06BE \u0633\u06D2 \u06A9\u0686\u06BE \u0628\u06BE\u06CC \u067E\u0648\u0686\u06BE\u06CC\u06BA\u2026",deleteThis:"\u0627\u0633\u06D2 \u062D\u0630\u0641 \u06A9\u0631\u06CC\u06BA",detailsTranslated:"\u062A\u0641\u0635\u06CC\u0644\u0627\u062A \u06A9\u0627 \u062A\u0631\u062C\u0645\u06C1 \u06A9\u0631 \u062F\u06CC\u0627 \u06AF\u06CC\u0627\u06D4 \u0642\u06CC\u0645\u062A\u06CC\u06BA \u0627\u0648\u0631 \u0644\u0646\u06A9\u0633 \u0648\u06CC\u0633\u06D2 \u06C1\u06CC \u0631\u06C1\u06CC\u06BA \u06AF\u06D2\u06D4",displayCapture:"{name} \u06A9\u0648 \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u06CC\u06BA",displayCaptureAll:"\u0633\u0628 \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u06CC\u06BA ({count} \u0627\u0634\u06CC\u0627\u0621)",displayDelete:"\u0627\u0633\u06D2 \u062D\u0630\u0641 \u06A9\u0631\u06CC\u06BA",displayViewHistory:"\u0622\u067E \u0646\u06D2 \u06A9\u06CC\u0627 \u0645\u062D\u0641\u0648\u0638 \u06A9\u06CC\u0627 \u06C1\u06D2\u061F",entityLangIntro:"\u0645\u06CC\u06BA {lang} \u0645\u06CC\u06BA \u062C\u0648\u0627\u0628 \u062F\u06CC\u062A\u0627 \u06C1\u0648\u06BA\u06D4 \u0646\u062A\u0627\u0626\u062C \u06A9\u06D2 \u06A9\u0627\u0631\u0688\u0632 \u0648\u06CC\u0633\u06D2 \u06C1\u06CC \u0631\u06C1 \u0633\u06A9\u062A\u06D2 \u06C1\u06CC\u06BA \u062C\u06CC\u0633\u06D2 \u0633\u0627\u0626\u0679 \u067E\u0631 \u0644\u06A9\u06BE\u06D2 \u06C1\u06CC\u06BA\u060C \u06CC\u0627 \u0627\u0646 \u06A9\u0627 \u062A\u0631\u062C\u0645\u06C1 \u0628\u06BE\u06CC \u06A9\u06CC\u0627 \u062C\u0627 \u0633\u06A9\u062A\u0627 \u06C1\u06D2\u06D4",entityLangPlaceholder:"\u0627\u0648\u067E\u0631 \u062F\u06CC\u06D2 \u06AF\u0626\u06D2 \u062F\u0648 \u06A9\u0627\u0631\u0688\u0632 \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u06CC\u06BA\u2026",errAccessRevoked:"\u0627\u0633\u0679\u0648\u0631 \u06A9\u06CC \u0637\u0631\u0641 \u0633\u06D2 \u0627\u0633\u0633\u0679\u0646\u0679 \u062A\u06A9 \u0622\u067E \u06A9\u06CC \u0631\u0633\u0627\u0626\u06CC \u0645\u0646\u0633\u0648\u062E \u06A9\u0631 \u062F\u06CC \u06AF\u0626\u06CC \u06C1\u06D2\u06D4",errAccountRequired:"\u0686\u06CC\u0679 \u0627\u0633\u0633\u0679\u0646\u0679 \u06A9\u0627 \u0627\u0633\u062A\u0639\u0645\u0627\u0644 \u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0628\u0631\u0627\u0626\u06D2 \u0645\u06C1\u0631\u0628\u0627\u0646\u06CC \u0627\u06A9\u0627\u0624\u0646\u0679 \u0628\u0646\u0627\u0626\u06CC\u06BA\u06D4",errShopperReplyLimit:"\u0622\u067E \u0627\u0633 \u0633\u0627\u0626\u0679 \u067E\u0631 \u0627\u067E\u0646\u06D2 \u0627\u06A9\u0627\u0624\u0646\u0679 \u06A9\u06CC \u062C\u0648\u0627\u0628\u0627\u062A \u06A9\u06CC \u062D\u062F \u062A\u06A9 \u067E\u06C1\u0646\u0686 \u0686\u06A9\u06D2 \u06C1\u06CC\u06BA\u06D4",errStreamInterrupted:"\u062C\u0648\u0627\u0628 \u0645\u06CC\u06BA \u062E\u0644\u0644 \u067E\u0691 \u06AF\u06CC\u0627\u06D4 \u0628\u0631\u0627\u0626\u06D2 \u0645\u06C1\u0631\u0628\u0627\u0646\u06CC \u062F\u0648\u0628\u0627\u0631\u06C1 \u06A9\u0648\u0634\u0634 \u06A9\u0631\u06CC\u06BA\u06D4",errTokenLimit:"\u0622\u067E \u06A9\u06D2 \u0627\u0633\u062A\u0639\u0645\u0627\u0644 \u06A9\u06CC \u062D\u062F \u062E\u062A\u0645 \u06C1\u0648 \u0686\u06A9\u06CC \u06C1\u06D2\u06D4 \u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u067E\u0646\u06D2 \u0688\u06CC\u0634 \u0628\u0648\u0631\u0688 \u0645\u06CC\u06BA \u0628\u0644\u0646\u06AF \u06A9\u06CC \u062D\u062F \u0627\u067E \u0688\u06CC\u0679 \u06A9\u0631\u06CC\u06BA\u06D4",errTooManyRequests:"\u0627\u0633\u0633\u0679\u0646\u0679 \u067E\u0631 \u0627\u0633 \u0648\u0642\u062A \u0628\u06C1\u062A \u0632\u06CC\u0627\u062F\u06C1 \u062F\u0631\u062E\u0648\u0627\u0633\u062A\u06CC\u06BA \u0622\u0631\u06C1\u06CC \u06C1\u06CC\u06BA\u06D4 \u0628\u0631\u0627\u0626\u06D2 \u0645\u06C1\u0631\u0628\u0627\u0646\u06CC \u062A\u06BE\u0648\u0691\u06CC \u062F\u06CC\u0631 \u0628\u0639\u062F \u06A9\u0648\u0634\u0634 \u06A9\u0631\u06CC\u06BA\u06D4",footerHint:"kiku \xB7 \u062D\u0642\u06CC\u0642\u06CC \u0648\u0642\u062A \u0645\u06CC\u06BA \u0645\u06A9\u0645\u0644 \u06A9\u06CC\u0679\u0644\u0627\u06AF \u062A\u0644\u0627\u0634 \u06A9\u0631\u062A\u0627 \u06C1\u06D2",greetReturning:"\u062E\u0648\u0634 \u0622\u0645\u062F\u06CC\u062F\u060C {name}\u06D4",greetReturningLead:"\u0622\u062C \u0645\u06CC\u06BA \u0622\u067E \u06A9\u06D2 \u0644\u06CC\u06D2 \u06A9\u06CC\u0627 \u062A\u0644\u0627\u0634 \u06A9\u0631 \u0633\u06A9\u062A\u0627 \u06C1\u0648\u06BA\u061F",howShouldResultsLook:"\u0646\u062A\u0627\u0626\u062C \u06A9\u06CC\u0633\u06CC \u062F\u06A9\u06BE\u0646\u06CC \u0686\u0627\u06C1\u0626\u06CC\u06BA\u061F",inLanguage:"{lang} \u0645\u06CC\u06BA",keyAutoHide:"{seconds} \u0633\u06CC\u06A9\u0646\u0688 \u0645\u06CC\u06BA \u062E\u0648\u062F \u0628\u062E\u0648\u062F \u0686\u06BE\u067E \u062C\u0627\u0626\u06D2 \u06AF\u0627\u06D4",keyCopied:"\u06A9\u0627\u067E\u06CC \u06C1\u0648 \u06AF\u06CC\u0627",keyCopyId:"\u0622\u0626\u06CC \u0688\u06CC \u06A9\u0627\u067E\u06CC \u06A9\u0631\u06CC\u06BA",keyCopySecret:"\u062E\u0641\u06CC\u06C1 \u06A9\u0644\u06CC\u062F \u06A9\u0627\u067E\u06CC \u06A9\u0631\u06CC\u06BA",keyCreateNew:"\u0645\u06CC\u06BA \u0646\u06CC\u0627 \u06C1\u0648\u06BA \u2014 \u0646\u0626\u06CC \u0628\u0646\u0627\u0626\u06CC\u06BA",keyCreating:"\u0628\u0646\u0627\u06CC\u0627 \u062C\u0627 \u0631\u06C1\u0627 \u06C1\u06D2\u2026",keyDismiss:"\u0631\u062F \u06A9\u0631\u06CC\u06BA",keyPastePlaceholder:"\u0622\u067E \u06A9\u06CC \u067E\u0628\u0644\u06A9 \u0622\u0626\u06CC \u0688\u06CC\u2026",keyPastePrompt:"\u0627\u067E\u0646\u06CC \u067E\u0628\u0644\u06A9 \u0622\u0626\u06CC \u0688\u06CC \u0686\u0633\u067E\u0627\u06BA \u06A9\u0631\u06CC\u06BA \u2014 \u06CC\u0627 \u0646\u0626\u06CC \u0628\u0646\u0627\u0626\u06CC\u06BA",keyPublicHint:"\u0627\u0633\u06CC \u06CC\u0627\u062F\u062F\u0627\u0634\u062A \u0645\u06CC\u06BA \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0633\u06D2 \u06A9\u0633\u06CC \u0628\u06BE\u06CC \u0633\u0627\u0626\u0679 \u067E\u0631 \u0686\u0633\u067E\u0627\u06BA \u06A9\u0631\u06CC\u06BA\u06D4",keyPublicTitle:"\u0622\u067E \u06A9\u06CC \u067E\u0628\u0644\u06A9 \u0622\u0626\u06CC \u0688\u06CC",keySecretHint:"\u0627\u0633\u06D2 \u062E\u0641\u06CC\u06C1 \u0631\u06A9\u06BE\u06CC\u06BA \u2014 \u0627\u067E\u0646\u06CC \u06CC\u0627\u062F\u062F\u0627\u0634\u062A \u06A9\u0648 \u06A9\u06BE\u0648\u0644\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0633\u062A\u0639\u0645\u0627\u0644 \u06A9\u0631\u06CC\u06BA\u06D4",keySecretTitle:"\u0622\u067E \u06A9\u06CC \u062E\u0641\u06CC\u06C1 \u06A9\u0644\u06CC\u062F \u2014 \u0635\u0631\u0641 \u0627\u06CC\u06A9 \u0628\u0627\u0631 \u062F\u06A9\u06BE\u0627\u0626\u06CC \u062C\u0627\u0626\u06D2 \u06AF\u06CC",keyUseMine:"\u0645\u06CC\u0631\u06CC \u0622\u0626\u06CC \u0688\u06CC \u0627\u0633\u062A\u0639\u0645\u0627\u0644 \u06A9\u0631\u06CC\u06BA",kikuActionUnavailable:"\u0645\u0639\u0630\u0631\u062A \u2014 \u06CC\u06C1 \u0639\u0645\u0644 \u0627\u0633 \u0633\u0627\u0626\u0679 \u067E\u0631 \u062F\u0633\u062A\u06CC\u0627\u0628 \u0646\u06C1\u06CC\u06BA \u06C1\u06D2\u06D4",kikuCaptureDbError:"\u0688\u06CC\u0679\u0627 \u0628\u06CC\u0633 \u06A9\u06CC \u062E\u0631\u0627\u0628\u06CC \u06A9\u06CC \u0648\u062C\u06C1 \u0633\u06D2 \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u0646\u06D2 \u0645\u06CC\u06BA \u0646\u0627\u06A9\u0627\u0645\u06CC\u06D4",kikuCaptureNoContext:"\u0635\u0641\u062D\u06D2 \u06A9\u0627 \u0633\u06CC\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0646\u06C1 \u0645\u0644\u0646\u06D2 \u06A9\u06CC \u0648\u062C\u06C1 \u0633\u06D2 \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u0646\u06D2 \u0645\u06CC\u06BA \u0646\u0627\u06A9\u0627\u0645\u06CC\u06D4",kikuCaptureNoUrl:"\u06A9\u0648\u0626\u06CC \u0622\u0626\u0679\u0645 \u0645\u062D\u0641\u0648\u0638 \u0646\u06C1\u06CC\u06BA \u06C1\u0648 \u0633\u06A9\u0627 \u06A9\u06CC\u0648\u0646\u06A9\u06C1 \u06A9\u0633\u06CC \u06A9\u06D2 \u067E\u0627\u0633 \u062F\u0631\u0633\u062A URL \u0646\u06C1\u06CC\u06BA \u062A\u06BE\u0627\u06D4",kikuCaptureNoneSelected:"\u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u06A9\u0648\u0626\u06CC \u0622\u0626\u0679\u0645 \u0645\u0646\u062A\u062E\u0628 \u0646\u06C1\u06CC\u06BA \u06A9\u06CC\u0627 \u06AF\u06CC\u0627\u06D4",kikuDeleteDbError:"\u0688\u06CC\u0679\u0627 \u0628\u06CC\u0633 \u06A9\u06CC \u062E\u0631\u0627\u0628\u06CC \u06A9\u06CC \u0648\u062C\u06C1 \u0633\u06D2 \u062D\u0630\u0641 \u06A9\u0631\u0646\u06D2 \u0645\u06CC\u06BA \u0646\u0627\u06A9\u0627\u0645\u06CC\u06D4",kikuDeleteDone:"\u0622\u067E \u06A9\u06CC \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u062F\u06C1 \u0627\u0634\u06CC\u0627\u0621 \u0633\u06D2 \u06C1\u0679\u0627 \u062F\u06CC\u0627 \u06AF\u06CC\u0627\u06D4",kikuDeleteNoContext:"\u062D\u0630\u0641 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0635\u0641\u062D\u06D2 \u06A9\u0627 \u0633\u06CC\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0641\u0631\u0627\u06C1\u0645 \u0646\u06C1\u06CC\u06BA \u06A9\u06CC\u0627 \u06AF\u06CC\u0627\u06D4",kikuMemoryIntro:"\u0633\u0627\u0626\u0679\u0633 \u0628\u06BE\u0631 \u0645\u06CC\u06BA \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u062F\u06C1 \u062A\u0645\u0627\u0645 \u0686\u06CC\u0632\u06CC\u06BA \u0622\u067E \u06A9\u06CC \u0646\u062C\u06CC \u06CC\u0627\u062F\u062F\u0627\u0634\u062A \u0645\u06CC\u06BA \u06C1\u06CC\u06BA\u06D4 \u0627\u067E\u0646\u06CC \u062E\u0641\u06CC\u06C1 \u06A9\u0644\u06CC\u062F \u0633\u06D2 \u06A9\u06BE\u0648\u0644\u06CC\u06BA:",kikuMintNeeded:"\u0633\u0627\u0626\u0679\u0633 \u067E\u0631 \u0686\u06CC\u0632\u06CC\u06BA \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0622\u067E \u06A9\u0648 kiku \u06A9\u06CC \u0636\u0631\u0648\u0631\u062A \u06C1\u06D2 \u2014 \u0645\u06CC\u06BA \u0622\u067E \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u06CC\u06A9 \u06A9\u0644\u06CC\u062F \u0628\u0646\u0627\u0624\u06BA \u06AF\u0627\u06D4 \u06CC\u06C1 \u0635\u0631\u0641 \u0627\u06CC\u06A9 \u0628\u0627\u0631 \u062F\u06A9\u06BE\u0627\u0626\u06CC \u062C\u0627\u062A\u06CC \u06C1\u06D2\u060C \u0627\u0633\u06D2 \u0645\u062D\u0641\u0648\u0638 \u0631\u06A9\u06BE\u06CC\u06BA\u06D4",kikuMintOffer:"\u0645\u06CC\u06BA \u0627\u0633\u06D2 \u0622\u067E \u06A9\u06D2 \u0644\u06CC\u06D2 \u0645\u062D\u0641\u0648\u0638 \u0631\u06A9\u06BE \u0633\u06A9\u062A\u0627 \u06C1\u0648\u06BA \u2014 \u0645\u06CC\u06BA \u0622\u067E \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u06CC\u06A9 kiku \u06A9\u0644\u06CC\u062F \u0628\u0646\u0627\u0624\u06BA \u06AF\u0627\u06D4 \u06CC\u06C1 \u0635\u0631\u0641 \u0627\u06CC\u06A9 \u0628\u0627\u0631 \u062F\u06A9\u06BE\u0627\u0626\u06CC \u062C\u0627\u062A\u06CC \u06C1\u06D2\u06D4",kikuNeedKeyToUpdate:"\u0627\u067E\u0646\u06CC kiku \u06A9\u0644\u06CC\u062F \u062F\u0631\u062C \u06A9\u0631\u06CC\u06BA \u062A\u0627\u06A9\u06C1 \u0645\u06CC\u06BA \u0622\u067E \u06A9\u06CC \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u062F\u06C1 \u0627\u0634\u06CC\u0627\u0621 \u062A\u0644\u0627\u0634 \u0627\u0648\u0631 \u0627\u067E \u0688\u06CC\u0679 \u06A9\u0631 \u0633\u06A9\u0648\u06BA\u06D4",micDenied:"\u0645\u0627\u0626\u06CC\u06A9\u0631\u0648\u0641\u0648\u0646 \u0628\u0644\u0627\u06A9 \u06C1\u06D2\u06D4 \u0627\u0633 \u0633\u0627\u0626\u0679 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0645\u0627\u0626\u06CC\u06A9 \u06A9\u06CC \u0627\u062C\u0627\u0632\u062A \u062F\u06CC\u06BA \u0627\u0648\u0631 \u062F\u0648\u0628\u0627\u0631\u06C1 \u06A9\u0648\u0634\u0634 \u06A9\u0631\u06CC\u06BA\u06D4",micFailed:"\u0622\u0648\u0627\u0632 \u0633\u0646\u0627\u0626\u06CC \u0646\u06C1\u06CC\u06BA \u062F\u06CC\u06D4 \u062F\u0648\u0628\u0627\u0631\u06C1 \u06A9\u0648\u0634\u0634 \u06A9\u0631\u06CC\u06BA\u06D4",micInsecure:"\u0622\u0648\u0627\u0632 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0645\u062D\u0641\u0648\u0638 (https) \u06A9\u0646\u06A9\u0634\u0646 \u062F\u0631\u06A9\u0627\u0631 \u06C1\u06D2\u06D4",micLangUnsupported:"\u06CC\u06C1 \u0628\u0631\u0627\u0624\u0632\u0631 \u0627\u0628\u06BE\u06CC \u0627\u0633 \u0632\u0628\u0627\u0646 \u06A9\u0648 \u0646\u06C1\u06CC\u06BA \u0633\u0645\u062C\u06BE \u0633\u06A9\u062A\u0627\u06D4 \u0628\u0631\u0627\u06C1 \u06A9\u0631\u0645 \u0679\u0627\u0626\u067E \u06A9\u0631\u06CC\u06BA\u06D4",micMissing:"\u06A9\u0648\u0626\u06CC \u0645\u0627\u0626\u06CC\u06A9\u0631\u0648\u0641\u0648\u0646 \u0646\u06C1\u06CC\u06BA \u0645\u0644\u0627\u06D4",micNetwork:"\u0622\u0648\u0627\u0632 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0646\u0679\u0631\u0646\u06CC\u0679 \u06A9\u0646\u06A9\u0634\u0646 \u062F\u0631\u06A9\u0627\u0631 \u06C1\u06D2\u06D4 \u0627\u067E\u0646\u0627 \u06A9\u0646\u06A9\u0634\u0646 \u0686\u06CC\u06A9 \u06A9\u0631\u06CC\u06BA \u0627\u0648\u0631 \u062F\u0648\u0628\u0627\u0631\u06C1 \u06A9\u0648\u0634\u0634 \u06A9\u0631\u06CC\u06BA\u06D4",micNoSpeech:"\u06A9\u0686\u06BE \u0633\u0646\u0627\u0626\u06CC \u0646\u06C1\u06CC\u06BA \u062F\u06CC\u0627\u06D4 \u0645\u0627\u0626\u06CC\u06A9 \u06A9\u06D2 \u0642\u0631\u06CC\u0628 \u0622 \u06A9\u0631 \u062F\u0648\u0628\u0627\u0631\u06C1 \u0628\u0648\u0644\u06CC\u06BA\u06D4",namePlaceholder:"\u0627\u067E\u0646\u0627 \u0646\u0627\u0645 \u0644\u06A9\u06BE\u06CC\u06BA\u2026",nameStepAsk:"\u0645\u06CC\u06BA \u0622\u067E \u06A9\u0648 \u06A9\u0633 \u0646\u0627\u0645 \u0633\u06D2 \u067E\u06A9\u0627\u0631\u0648\u06BA\u061F",nameStepLead:"\u0645\u06CC\u06BA \u0622\u067E \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0633 \u0633\u0627\u0626\u0679 \u06CC\u0627 \u06A9\u0633\u06CC \u062F\u0648\u0633\u0631\u06CC \u0633\u0627\u0626\u0679 \u067E\u0631 \u06A9\u0686\u06BE \u0628\u06BE\u06CC \u062A\u0644\u0627\u0634\u060C \u062A\u0635\u0648\u0631 \u06CC\u0627 \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631 \u0633\u06A9\u062A\u0627 \u06C1\u0648\u06BA\u06D4",nameStepTitle:"\u0622\u067E \u0633\u06D2 \u0645\u0644 \u06A9\u0631 \u062E\u0648\u0634\u06CC \u06C1\u0648\u0626\u06CC\u06D4",namesAsWritten:"\u0646\u0627\u0645 \u0627\u0648\u0631 \u062A\u0641\u0635\u06CC\u0644\u0627\u062A \u0628\u0627\u0644\u06A9\u0644 \u0648\u06CC\u0633\u06D2 \u062C\u06CC\u0633\u06D2 \u0633\u0627\u0626\u0679 \u067E\u0631 \u062F\u0631\u062C \u06C1\u06CC\u06BA\u06D4",pillCompareTop2:"\u0628\u06C1\u062A\u0631\u06CC\u0646 2 \u06A9\u0627 \u0645\u0648\u0627\u0632\u0646\u06C1 \u06A9\u0631\u06CC\u06BA",pillCompareTop2Query:"{a} \u0627\u0648\u0631 {b} \u06A9\u0627 \u0645\u0648\u0627\u0632\u0646\u06C1 \u06A9\u0631\u06CC\u06BA",pillFindAlternatives:"\u0645\u062A\u0628\u0627\u062F\u0644 \u062A\u0644\u0627\u0634 \u06A9\u0631\u06CC\u06BA",pillFindAlternativesQuery:"{name} \u06A9\u06D2 \u0627\u0686\u06BE\u06D2 \u0645\u062A\u0628\u0627\u062F\u0644 \u06A9\u06CC\u0627 \u06C1\u06CC\u06BA\u061F",pillMoreOn:"{name} \u06A9\u06D2 \u0628\u0627\u0631\u06D2 \u0645\u06CC\u06BA \u0645\u0632\u06CC\u062F",pillMoreOnQuery:"\u0645\u062C\u06BE\u06D2 {name} \u06A9\u06D2 \u0628\u0627\u0631\u06D2 \u0645\u06CC\u06BA \u0645\u0632\u06CC\u062F \u0628\u062A\u0627\u0626\u06CC\u06BA",pillRecommend:"\u06A9\u0686\u06BE \u062A\u062C\u0648\u06CC\u0632 \u06A9\u0631\u06CC\u06BA",pillRecommendQuery:"\u0622\u067E \u0645\u06CC\u0631\u06D2 \u0644\u06CC\u06D2 \u06A9\u06CC\u0627 \u062A\u062C\u0648\u06CC\u0632 \u06A9\u0631\u062A\u06D2 \u06C1\u06CC\u06BA\u061F",pillShowPopular:"\u0645\u0642\u0628\u0648\u0644 \u0627\u0634\u06CC\u0627\u0621 \u062F\u06A9\u06BE\u0627\u0626\u06CC\u06BA",pillShowPopularQuery:"\u0622\u067E \u06A9\u06CC \u0633\u0628 \u0633\u06D2 \u0645\u0642\u0628\u0648\u0644 \u0627\u0634\u06CC\u0627\u0621 \u06A9\u0648\u0646 \u0633\u06CC \u06C1\u06CC\u06BA\u061F",pillSimilarOptions:"\u0645\u0644\u062A\u06D2 \u062C\u0644\u062A\u06D2 \u0627\u062E\u062A\u06CC\u0627\u0631\u0627\u062A",pillSimilarOptionsQuery:"\u0645\u062C\u06BE\u06D2 {name} \u062C\u06CC\u0633\u06CC \u0645\u0632\u06CC\u062F \u0686\u06CC\u0632\u06CC\u06BA \u062F\u06A9\u06BE\u0627\u0626\u06CC\u06BA",pillUnder:"{amount} \u0633\u06D2 \u06A9\u0645",pillUnderQuery:"{amount} \u0633\u06D2 \u06A9\u0645 \u0642\u06CC\u0645\u062A \u0648\u0627\u0644\u06D2 \u0627\u062E\u062A\u06CC\u0627\u0631\u0627\u062A \u062F\u06A9\u06BE\u0627\u0626\u06CC\u06BA",pillWhichBest:"\u06A9\u0648\u0646 \u0633\u0627 \u0628\u06C1\u062A\u0631\u06CC\u0646 \u06C1\u06D2\u061F",pillWhichBestQuery:"\u0622\u067E \u06A9\u0648\u0646 \u0633\u0627 \u062A\u062C\u0648\u06CC\u0632 \u06A9\u0631\u06CC\u06BA \u06AF\u06D2 \u0627\u0648\u0631 \u06A9\u06CC\u0648\u06BA\u061F",replyingOriginal:"\u0645\u06CC\u06BA {lang} \u0645\u06CC\u06BA \u062C\u0648\u0627\u0628 \u062F\u06D2 \u0631\u06C1\u0627 \u06C1\u0648\u06BA\u060C \u0646\u062A\u0627\u0626\u062C \u0633\u0627\u0626\u0679 \u06A9\u06D2 \u0645\u0637\u0627\u0628\u0642 \u06C1\u06CC\u06BA\u06D4 \u0645\u062C\u06BE \u0633\u06D2 \u06A9\u0686\u06BE \u0628\u06BE\u06CC \u067E\u0648\u0686\u06BE\u06CC\u06BA\u06D4",replyingTranslated:"\u0645\u06CC\u06BA {lang} \u0645\u06CC\u06BA \u062C\u0648\u0627\u0628 \u062F\u06D2 \u0631\u06C1\u0627 \u06C1\u0648\u06BA\u060C \u0646\u062A\u0627\u0626\u062C \u06A9\u0627 \u062A\u0631\u062C\u0645\u06C1 \u0628\u06BE\u06CC \u06A9\u06CC\u0627 \u06AF\u06CC\u0627 \u06C1\u06D2\u06D4 \u0645\u062C\u06BE \u0633\u06D2 \u06A9\u0686\u06BE \u0628\u06BE\u06CC \u067E\u0648\u0686\u06BE\u06CC\u06BA\u06D4",statusSent:"\u0628\u06BE\u06CC\u062C \u062F\u06CC\u0627 \u06AF\u06CC\u0627",statusStopped:"\u0628\u06BE\u06CC\u062C \u062F\u06CC\u0627 \u06AF\u06CC\u0627 \xB7 \u062C\u0648\u0627\u0628 \u0631\u0648\u06A9 \u062F\u06CC\u0627 \u06AF\u06CC\u0627",thinking:"\u0633\u0648\u0686 \u0631\u06C1\u0627 \u06C1\u06D2",thoughtForSeconds:"{duration} \u062A\u06A9 \u0633\u0648\u0686\u0627",thoughtProcess:"\u0633\u0648\u0686\u0646\u06D2 \u06A9\u0627 \u0639\u0645\u0644",vizDisclaimerImage:"\u0645\u0635\u0646\u0648\u0639\u06CC \u0630\u06C1\u0627\u0646\u062A \u0633\u06D2 \u062A\u06CC\u0627\u0631 \u06A9\u0631\u062F\u06C1 \u2014 \u0627\u0635\u0644 \u067E\u0631\u0648\u0688\u06A9\u0679 \u0633\u06D2 \u0631\u0646\u06AF\u060C \u0633\u0627\u0626\u0632 \u0627\u0648\u0631 \u062C\u06AF\u06C1 \u0645\u062E\u062A\u0644\u0641 \u06C1\u0648 \u0633\u06A9\u062A\u06CC \u06C1\u06D2\u06D4",vizDisclaimerVideo:"\u0645\u0635\u0646\u0648\u0639\u06CC \u0630\u06C1\u0627\u0646\u062A \u0633\u06D2 \u062A\u06CC\u0627\u0631 \u06A9\u0631\u062F\u06C1 \u2014 \u0627\u0635\u0644 \u067E\u0631\u0648\u0688\u06A9\u0679 \u0633\u06D2 \u0631\u0646\u06AF\u060C \u0633\u0627\u0626\u0632 \u0627\u0648\u0631 \u062D\u0631\u06A9\u062A \u0645\u062E\u062A\u0644\u0641 \u06C1\u0648 \u0633\u06A9\u062A\u06CC \u06C1\u06D2\u06D4",vizUnavailable:"\u067E\u06CC\u0634 \u0646\u0638\u0627\u0631\u06C1 \u0644\u0648\u0688 \u0646\u06C1\u06CC\u06BA \u06C1\u0648 \u0633\u06A9\u0627\u06D4",voiceHint:"\u0628\u0633 \u0628\u0627\u062A \u06A9\u0631\u06CC\u06BA \u2014 \u062C\u0628 \u0622\u067E \u0631\u06A9\u06CC\u06BA \u06AF\u06D2 \u062A\u0648 \u0645\u06CC\u06BA \u062C\u0648\u0627\u0628 \u062F\u0648\u06BA \u06AF\u0627\u06D4",voiceListening:"\u0633\u0646 \u0631\u06C1\u0627 \u06C1\u06D2\u2026 \u0631\u0648\u06A9\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0645\u0627\u0626\u06CC\u06A9 \u067E\u0631 \u0679\u06CC\u067E \u06A9\u0631\u06CC\u06BA",voiceModeExit:"\u06C1\u06CC\u0646\u0688\u0632 \u0641\u0631\u06CC \u0633\u06D2 \u0646\u06A9\u0644\u06CC\u06BA",voiceModeStart:"\u06C1\u06CC\u0646\u0688\u0632 \u0641\u0631\u06CC \u06AF\u0641\u062A\u06AF\u0648",voiceMuted:"\u062E\u0627\u0645\u0648\u0634 (\u0645\u06CC\u0648\u0679)",voiceMutedHint:"\u062F\u0648\u0628\u0627\u0631\u06C1 \u0628\u0648\u0644\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0645\u0627\u0626\u06CC\u06A9\u0631\u0648\u0641\u0648\u0646 \u067E\u0631 \u0679\u06CC\u067E \u06A9\u0631\u06CC\u06BA\u06D4",voicePhaseListening:"\u0633\u0646 \u0631\u06C1\u0627 \u06C1\u06D2",voicePhaseSpeaking:"\u0628\u0648\u0644 \u0631\u06C1\u0627 \u06C1\u06D2",voicePhaseThinking:"\u0633\u0648\u0686 \u0631\u06C1\u0627 \u06C1\u06D2",voiceSending:"\u0633\u0645\u062C\u06BE \u06AF\u06CC\u0627 \u2014 \u0628\u06BE\u06CC\u062C \u0631\u06C1\u0627 \u06C1\u06D2\u2026",termsStepTitle:"\u0631\u0627\u0632\u062F\u0627\u0631\u06CC \u0627\u0648\u0631 \u0627\u0633\u062A\u0639\u0645\u0627\u0644 \u06A9\u06CC \u0634\u0631\u0627\u0626\u0637",termsStepSubtitle:"\u0634\u0641\u0627\u0641\u060C \u06AF\u0645\u0646\u0627\u0645\u060C \u0627\u0648\u0631 \u0628\u063A\u06CC\u0631 \u06A9\u0633\u06CC \u0630\u0627\u062A\u06CC \u0634\u0646\u0627\u062E\u062A\u06CC \u0688\u06CC\u0679\u0627 \u06A9\u06D2\u06D4",termsPiiTitle:"\u06A9\u0648\u0626\u06CC \u0630\u0627\u062A\u06CC \u0634\u0646\u0627\u062E\u062A\u06CC \u0688\u06CC\u0679\u0627 \u0627\u06A9\u0679\u06BE\u0627 \u0646\u06C1\u06CC\u06BA \u06A9\u06CC\u0627 \u062C\u0627\u062A\u0627",termsPiiDesc:"\u06C1\u0645 \u0622\u067E \u06A9\u06CC \u0686\u06CC\u0679\u0633 \u06CC\u0627 \u0635\u0648\u062A\u06CC \u06AF\u0641\u062A\u06AF\u0648 \u0633\u06D2 \u06A9\u0628\u06BE\u06CC \u0628\u06BE\u06CC \u06A9\u0648\u0626\u06CC \u0630\u0627\u062A\u06CC \u0634\u0646\u0627\u062E\u062A\u06CC \u0645\u0639\u0644\u0648\u0645\u0627\u062A (\u06A9\u0648\u0626\u06CC \u0627\u06CC \u0645\u06CC\u0644\u060C \u0641\u0648\u0646 \u0646\u0645\u0628\u0631\u060C \u06CC\u0627 \u062D\u0642\u06CC\u0642\u06CC \u0646\u0627\u0645) \u0627\u06A9\u0679\u06BE\u0627 \u06CC\u0627 \u0645\u062D\u0641\u0648\u0638 \u0646\u06C1\u06CC\u06BA \u06A9\u0631\u062A\u06D2\u06D4",termsSessionTitle:"\u06AF\u0645\u0646\u0627\u0645 \u0633\u06CC\u0634\u0646 \u0679\u0648\u06A9\u0646\u0632",termsSessionDesc:"\u0622\u067E \u06A9\u0627 \u0633\u06CC\u0634\u0646 \u0635\u0631\u0641 \u0633\u06CC\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06A9\u06BE\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u06CC\u06A9 \u06AF\u0645\u0646\u0627\u0645 \u0679\u0648\u06A9\u0646 \u0627\u0633\u062A\u0639\u0645\u0627\u0644 \u06A9\u0631\u062A\u0627 \u06C1\u06D2\u06D4 \u06CC\u06C1 \u06A9\u0628\u06BE\u06CC \u0628\u06BE\u06CC \u0622\u067E \u06A9\u06CC \u062D\u0642\u06CC\u0642\u06CC \u0634\u0646\u0627\u062E\u062A \u0633\u06D2 \u0646\u06C1\u06CC\u06BA \u062C\u0691\u062A\u0627\u06D4",termsMemoryTitle:"\u0639\u0627\u0631\u0636\u06CC \u0686\u06CC\u0679\u0633 \u0628\u0645\u0642\u0627\u0628\u0644\u06C1 \u0645\u06CC\u0645\u06CC \u0648\u0627\u0644\u0679",termsMemoryDesc:'\u0639\u0627\u0645 \u0686\u06CC\u0679\u0633 \u0639\u0627\u0631\u0636\u06CC \u06C1\u06CC\u06BA \u2014 \u0679\u06CC\u0628 \u0628\u0646\u062F \u06A9\u0631\u0646\u06D2 \u06CC\u0627 \u0686\u06CC\u0679 \u0635\u0627\u0641 \u06A9\u0631\u0646\u06D2 \u0633\u06D2 \u0648\u06C1 \u06C1\u0645\u06CC\u0634\u06C1 \u06A9\u06D2 \u0644\u06CC\u06D2 \u062E\u062A\u0645 \u06C1\u0648 \u062C\u0627\u062A\u06CC \u06C1\u06CC\u06BA\u06D4 \u0648\u06C1 \u0686\u06CC\u0632\u06CC\u06BA \u062C\u0648 \u0622\u067E "@kiku" \u0633\u06D2 \u0645\u062D\u0641\u0648\u0638 \u06A9\u0631\u062A\u06D2 \u06C1\u06CC\u06BA \u0627\u0646\u06A9\u0631\u067E\u0679\u0688 \u06C1\u0648\u062A\u06CC \u06C1\u06CC\u06BA \u0627\u0648\u0631 \u0627\u0646\u06C1\u06CC\u06BA \u0627\u067E\u0646\u06CC \u062E\u0641\u06CC\u06C1 \u06A9\u0644\u06CC\u062F \u06A9\u06D2 \u0630\u0631\u06CC\u0639\u06D2 mimi.akropolys.cloud \u067E\u0631 \u06A9\u06BE\u0648\u0644\u0627 \u062C\u0627 \u0633\u06A9\u062A\u0627 \u06C1\u06D2\u06D4',termsCookieTitle:"\u0645\u06CC\u0632\u0628\u0627\u0646 \u0648\u06CC\u0628 \u0633\u0627\u0626\u0679 \u0679\u06CC\u0644\u06CC \u0645\u06CC\u0679\u0631\u06CC",termsCookieDesc:"\u062C\u0633 \u0648\u06CC\u0628 \u0633\u0627\u0626\u0679 \u067E\u0631 kiku \u0634\u0627\u0645\u0644 \u06C1\u06D2 \u0648\u06C1 \u0627\u067E\u0646\u06CC \u06A9\u0648\u06A9\u06CC \u067E\u0627\u0644\u06CC\u0633\u06CC \u06A9\u06D2 \u062A\u062D\u062A \u06A9\u0648\u06A9\u06CC\u0632 \u0627\u0648\u0631 \u0627\u06CC\u0646\u0627\u0644\u06CC\u0679\u06A9\u0633 \u062C\u0645\u0639 \u06A9\u0631 \u0633\u06A9\u062A\u06CC \u06C1\u06D2\u060C \u062C\u0648 kiku \u06A9\u06D2 \u06A9\u0646\u0679\u0631\u0648\u0644 \u0633\u06D2 \u0628\u0627\u06C1\u0631 \u06C1\u06D2\u06D4",termsAgreeButton:"\u0645\u062A\u0641\u0642 \u06C1\u0648\u06BA \u0627\u0648\u0631 \u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u06CC\u06BA",termsAgreeCounting:"\u0645\u062A\u0641\u0642 \u06C1\u0648\u06BA \u0627\u0648\u0631 \u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u06CC\u06BA ({seconds}s)",termsPlaceholder:"\u0628\u0631\u0627\u0626\u06D2 \u0645\u06C1\u0631\u0628\u0627\u0646\u06CC \u0627\u0648\u067E\u0631 \u062F\u06CC \u06AF\u0626\u06CC \u0631\u0627\u0632\u062F\u0627\u0631\u06CC \u0627\u0648\u0631 \u0634\u0631\u0627\u0626\u0637 \u06A9\u0627 \u062C\u0627\u0626\u0632\u06C1 \u0644\u06CC\u06BA \u0627\u0648\u0631 \u0642\u0628\u0648\u0644 \u06A9\u0631\u06CC\u06BA\u2026",whatHaveYouSaved:"\u0622\u067E \u0646\u06D2 \u06A9\u06CC\u0627 \u0645\u062D\u0641\u0648\u0638 \u06A9\u06CC\u0627 \u06C1\u06D2\u061F"}};var mo=require("react/jsx-runtime");function Wa(e){if(!e)return null;let a=e.trim().toLowerCase(),r={english:"english",en:"english",swahili:"swahili",kiswahili:"swahili",sw:"swahili",french:"french",fran\u00E7ais:"french",francais:"french",fr:"french",spanish:"spanish",espa\u00F1ol:"spanish",espanol:"spanish",es:"spanish",arabic:"arabic",\u0627\u0644\u0639\u0631\u0628\u064A\u0629:"arabic",ar:"arabic",portuguese:"portuguese",portugu\u00EAs:"portuguese",pt:"portuguese",hindi:"hindi",\u0939\u093F\u0928\u094D\u0926\u0940:"hindi",hi:"hindi",chinese:"chinese",\u4E2D\u6587:"chinese",zh:"chinese",japanese:"japanese",\u65E5\u672C\u8A9E:"japanese",ja:"japanese",urdu:"urdu",\u0627\u0631\u062F\u0648:"urdu",ur:"urdu"}[a];return!r||!(r in uo)?null:{strings:uo[r],dir:r==="arabic"||r==="urdu"?"rtl":"ltr",bcp47:r==="arabic"?"ar":r==="hindi"?"hi":r==="chinese"?"zh":r==="japanese"?"ja":r==="urdu"?"ur":r==="swahili"?"sw":r==="french"?"fr":r==="spanish"?"es":r==="portuguese"?"pt":"en"}}function Lc(e){let a=/var\(\s*(--[\w-]+)/.exec(e)?.[1];if(!a||typeof document>"u")return"";for(let t of[document.documentElement,document.body]){let r=t?getComputedStyle(t).getPropertyValue(a).trim():"";if(r)return r.split(",")[0].trim()}return""}function On({shopperLanguage:e,theme:a}){let t=(0,Kn.useAkropolysContext)(),[r,o]=(0,Ie.useState)(()=>Wa(e)?.strings||{}),[i,s]=(0,Ie.useState)(!0),[c,n]=(0,Ie.useState)(()=>!e||!!Wa(e)),l=e?`akropolys_ui_dir_${e.toLowerCase()}`:"",[m,p]=(0,Ie.useState)(()=>{let S=Wa(e);if(S)return S.dir==="rtl";if(Oa(e)?.rtl)return!0;if(typeof window>"u"||!l)return!1;try{return localStorage.getItem(l)==="rtl"}catch{return!1}}),[u,d]=(0,Ie.useState)(()=>Wa(e)?.bcp47||""),[b,v]=(0,Ie.useState)(null),[y,w]=(0,Ie.useState)(null);(0,Ie.useEffect)(()=>{if(!e){d(""),v(null),o({}),n(!0),p(!1);return}let S=Wa(e),$=Oa(e);S?(o(S.strings),p(S.dir==="rtl"),d(S.bcp47),n(!0)):($?.rtl&&p(!0),n(!1));let _=!1;return(async()=>{try{let I=await t.getUIStrings?.(e,aa);if(!_&&I?.complete){s(I.curated!==!1),o(K=>({...S?.strings||{},...I.strings})),p(I.dir==="rtl"),d(I.bcp47||S?.bcp47||"");try{localStorage.setItem(l,I.dir)}catch{}I.font&&sn(I.font,250),v(I.font??null)}}catch{}_||n(!0)})(),()=>{_=!0}},[e,l,t]),(0,Ie.useEffect)(()=>{let S=!1;return(async()=>{try{let $=await Qr(t);!S&&$&&w($)}catch{}})(),()=>{S=!0}},[t]),Jr(b),Jr(y);let C=Ie.default.useMemo(()=>{let $=(typeof a=="object"&&a?.fontFamily?a.fontFamily:"").split(",")[0].trim(),_=/^var\(/i.test($),I=$.replace(/^['"]|['"]$/g,""),K=_?Lc($):"",E=_?K?`${K}, `:"":I?`"${I}", `:"";if(b)return`${E}"Geist", "${b.family}", system-ui, sans-serif`;let F=e?e.trim().toLowerCase():"";if(F==="japanese"||F==="ja"||F==="\u65E5\u672C\u8A9E")return`${E}"Geist", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", system-ui, sans-serif`;if(F==="chinese"||F==="zh"||F==="\u4E2D\u6587")return`${E}"Geist", "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", system-ui, sans-serif`;if(F==="urdu"||F==="ur"||F==="\u0627\u0631\u062F\u0648")return`${E}"Noto Nastaliq Urdu", "IBM Plex Sans Arabic", "Geist", system-ui, sans-serif`;if(F==="arabic"||F==="ar"||F==="\u0627\u0644\u0639\u0631\u0628\u064A\u0629")return`${E}"IBM Plex Sans Arabic", "Geist", system-ui, sans-serif`;if(F==="hindi"||F==="hi"||F==="\u0939\u093F\u0928\u094D\u0926\u0940")return`${E}"Hind", "Geist", system-ui, sans-serif`},[b,e,typeof a=="object"&&a?a.fontFamily:void 0]),L=Ie.default.useMemo(()=>{let S=0,$=0;for(let _ of Object.values(r))for(let I of _){let K=I.codePointAt(0)??0;K<192||/\p{L}/u.test(I)&&(K<=591?S++:$++)}return $>S},[r]),[f,N]=(0,Ie.useState)(0);(0,Ie.useEffect)(()=>{if(typeof document>"u"||!document.fonts?.ready)return;let S=!0;return document.fonts.ready.then(()=>{S&&N($=>$+1)}),()=>{S=!1}},[b]);let T=Ie.default.useMemo(()=>{if(!L||typeof document>"u")return!0;let $=(typeof a=="object"&&a?.fontFamily?a.fontFamily:"").split(",")[0].trim();if(!$)return!1;let _="";for(let K of Object.values(r))if(K){_=K;break}if(!_)return!0;let I=_.replace(/\s+/g,"");if(!I)return!0;try{let E=document.createElement("canvas").getContext("2d");if(!E)return!0;let F=$.startsWith("var(")&&getComputedStyle(document.documentElement).getPropertyValue($.slice(4,-1).trim()).trim()||$;E.font=`16px ${F}, __akropolys_nonexistent_font__`;let ee=E.measureText(I).width;E.font="16px __akropolys_nonexistent_font__";let z=E.measureText(I).width;return Math.abs(ee-z)>1}catch{return!0}},[L,r,typeof a=="object"&&a?a.fontFamily:void 0,f]),x=(0,Ie.useCallback)((S,$)=>{let _=r[S]||aa[S]||S;if($)for(let[I,K]of Object.entries($))_=_.split(`{${I}}`).join(K);return _},[r]),Q=(0,Ie.useCallback)((S,$)=>(r[S]||aa[S]||S).split(/(\{[a-zA-Z]+\})/g).map((I,K)=>{let E=I.match(/^\{([a-zA-Z]+)\}$/);return E&&$[E[1]]!==void 0?(0,mo.jsx)("bdi",{children:$[E[1]]},K):(0,mo.jsx)(Ie.default.Fragment,{children:I},K)}),[r]);return{chromeStrings:r,chromeReady:c,chromeCurated:i,isRTL:m,speechLang:u,scriptFont:b,fontStack:C,isNonLatin:L,hostFontCovers:T,t:x,tNode:Q}}var be=require("react");function Wn({messages:e,loading:a,messageRefs:t}){let r=(0,be.useRef)(null),o=(0,be.useRef)(0),[i,s]=(0,be.useState)(!1),[c,n]=(0,be.useState)(1),[l,m]=(0,be.useState)(0),p=(0,be.useRef)(()=>{}),u=(0,be.useRef)(null),d=(0,be.useRef)(!1),b=(0,be.useRef)(!0),[v,y]=(0,be.useState)(0),w=(0,be.useRef)(0),C=(0,be.useRef)(""),L=(0,be.useRef)(()=>{}),f=(0,be.useRef)(()=>{});(0,be.useEffect)(()=>{let h=r.current;if(!h)return;let P,q=()=>{clearTimeout(P),P=setTimeout(()=>{d.current=!1},150)},X=()=>{clearTimeout(P),d.current=!0,L.current()},Y=()=>{d.current&&q()};return h.addEventListener("touchstart",X,{passive:!0}),h.addEventListener("touchend",q,{passive:!0}),h.addEventListener("touchcancel",q,{passive:!0}),h.addEventListener("scroll",Y,{passive:!0}),()=>{clearTimeout(P),h.removeEventListener("touchstart",X),h.removeEventListener("touchend",q),h.removeEventListener("touchcancel",q),h.removeEventListener("scroll",Y)}},[]),(0,be.useEffect)(()=>{let h=r.current;if(!h)return;let P=160,q=8,X=0,Y=()=>{X=0;let Z=h.scrollHeight-h.scrollTop-h.clientHeight;Z<=q&&(b.current||f.current(),b.current=!0,_.current()),s(Z>P&&!b.current);let G=h.scrollHeight-h.clientHeight;n(G>8?Math.min(1,Math.max(0,h.scrollTop/G)):1);let g=h.scrollTop+h.clientHeight*.33,J=0;for(let O=0;O<t.current.length;O++){let W=t.current[O];W&&W.offsetTop-h.offsetTop<=g&&(J=O)}m(J)},A=()=>{X||(X=requestAnimationFrame(Y))};Y(),h.addEventListener("scroll",A,{passive:!0});let M=new ResizeObserver(A);return M.observe(h),()=>{X&&cancelAnimationFrame(X),h.removeEventListener("scroll",A),M.disconnect()}},[e.length,t]);let N=(0,be.useCallback)(h=>{let P=`${h}:${w.current}`;C.current!==P&&(C.current=P,y(q=>q+1))},[]),[T,x]=(0,be.useState)(!1),Q=(0,be.useRef)(!1),S=(0,be.useCallback)(()=>{Q.current||(Q.current=!0,x(!0))},[]),$=(0,be.useCallback)(()=>{Q.current&&(Q.current=!1,x(!1))},[]),_=(0,be.useRef)(()=>{});_.current=$;let[I,K]=(0,be.useState)(!1),E=(0,be.useRef)(!1),F=(0,be.useRef)(0),ee=(0,be.useCallback)(()=>{E.current=!1,K(!1)},[]),z=(0,be.useCallback)(()=>{C.current="",ee(),$()},[ee,$]),B=(0,be.useCallback)(()=>{E.current&&(performance.now()-F.current<700||ee())},[ee]);L.current=B,f.current=z,(0,be.useEffect)(()=>{if(v===0)return;E.current=!0,F.current=performance.now(),K(!0);let h=setTimeout(ee,4200);return()=>clearTimeout(h)},[v,ee]);let ie=(0,be.useCallback)(h=>{let P=r.current,q=t.current[h];if(!P||!q)return;let X=q.offsetTop-P.offsetTop-12;u.current?u.current(X):P.scrollTo({top:X,behavior:"smooth"})},[t]),re=(0,be.useCallback)(()=>{let h=r.current;if(!h)return;b.current=!0,f.current();let P=h.scrollHeight-h.clientHeight;u.current?u.current(P):h.scrollTo({top:P,behavior:"smooth"})},[]);return(0,be.useEffect)(()=>{let h=r.current;if(!h)return;let P=requestAnimationFrame(()=>{let q=h.scrollTop;if(!b.current)S(),N(e.length);else if(!d.current){let X=h.scrollHeight-h.clientHeight;if(u.current){u.current(X);return}h.scrollTop=h.scrollHeight}h.scrollTop!==q&&p.current()});return()=>cancelAnimationFrame(P)},[e,a,t,N,S]),(0,be.useEffect)(()=>{let h=r.current;if(!h||typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return;let P=7,q=16,X=1/(window.devicePixelRatio||1),Y=V=>Math.round(V/X)*X,A=h.scrollTop,M=h.scrollTop,Z=h.scrollTop,G=0,g=null,J=V=>{V!==Z&&(h.scrollTop=V,Z=h.scrollTop)},O=()=>{g!==null&&(cancelAnimationFrame(g),g=null),h.classList.remove("hsk-scrolling"),A=M=Z=h.scrollTop};p.current=O,u.current=V=>{Math.abs(h.scrollTop-Z)>1&&(A=M=Z=h.scrollTop);let ce=Math.round(Math.max(0,Math.min(h.scrollHeight-h.clientHeight,V)));ce!==A&&(A=ce,g===null&&(G=performance.now(),g=requestAnimationFrame(W)))};let W=V=>{let ce=Math.min((V-G)/1e3,.05);if(G=V,M+=(A-M)*(1-Math.exp(-P*ce)),Math.abs(A-M)<X){M=A,J(Math.round(A)),h.classList.remove("hsk-scrolling"),g=null;return}J(Y(M)),g=requestAnimationFrame(W)},te=V=>{if(V.ctrlKey)return;Math.abs(h.scrollTop-Z)>1&&(A=M=Z=h.scrollTop),V.deltaY<0&&(b.current&&(w.current+=1),b.current=!1),L.current();let ce=V.deltaMode===1?q:V.deltaMode===2?h.clientHeight:1,Ne=Math.max(0,h.scrollHeight-h.clientHeight),We=Math.round(Math.max(0,Math.min(Ne,A+V.deltaY*ce)));if(We===A){Ne>0&&V.preventDefault();return}V.preventDefault(),A=We,g===null&&(G=performance.now(),h.classList.add("hsk-scrolling"),g=requestAnimationFrame(W))},oe=h.scrollTop,de=()=>{let V=Math.abs(h.scrollTop-Z)>1;V&&(o.current=performance.now(),h.scrollTop<oe-1&&b.current&&(w.current+=1,b.current=!1)),oe=h.scrollTop,g!==null&&V&&(cancelAnimationFrame(g),g=null,h.classList.remove("hsk-scrolling"),A=M=Z=h.scrollTop)};return h.addEventListener("wheel",te,{passive:!1}),h.addEventListener("scroll",de,{passive:!0}),()=>{h.removeEventListener("scroll",de),h.removeEventListener("wheel",te),g!==null&&cancelAnimationFrame(g),h.classList.remove("hsk-scrolling"),p.current=()=>{},u.current=null}},[]),{msgsContainerRef:r,lastExternalScrollRef:o,showJumpToBottom:i,scrollProgress:c,activeMsgIdx:l,jumpAlert:I,unreadBelow:T,jumpToMessage:ie,jumpToBottom:re,resetAlertArming:z}}var Ze=require("react"),Yn=require("@akropolys/sdk");function Gn(e,a){let t=(0,Yn.useAkropolysContext)(),[r,o]=(0,Ze.useState)(""),[i,s]=(0,Ze.useState)("idle"),[c,n]=(0,Ze.useState)(null),[l,m]=(0,Ze.useState)(null),[p,u]=(0,Ze.useState)(null),[d,b]=(0,Ze.useState)(ro),[v,y]=(0,Ze.useState)(!1),w=(0,Ze.useCallback)(async(f,N)=>{try{await navigator.clipboard.writeText(f),u(N),setTimeout(()=>u(null),2e3)}catch{}},[]);(0,Ze.useEffect)(()=>{e&&e.type==="request_kiku_key"&&(s("prompt_key"),o(""))},[e]),(0,Ze.useEffect)(()=>{if(!c)return;b(ro);let f=setInterval(()=>{b(N=>N<=1?(clearInterval(f),n(null),m(null),0):N-1)},1e3);return()=>clearInterval(f)},[c]);let C=(0,Ze.useCallback)(async()=>{let f=r.trim();f&&(t.setKikuPub(f),o(""),s("idle"),await a())},[t,r,a]),L=(0,Ze.useCallback)(async()=>{if(!v){y(!0);try{let{secret:f,publicId:N}=await t.mintKikuKey();n(f),m(N),s("idle"),await a()}catch{}finally{y(!1)}}},[t,v,a]);return{keyInput:r,setKeyInput:o,keyPhase:i,setKeyPhase:s,mintedKey:c,setMintedKey:n,mintedPub:l,setMintedPub:m,copied:p,keyCountdown:d,minting:v,copyValue:w,handleUseExistingKey:C,handleCreateKey:L}}var Ya=require("react");function Qn({attachments:e,setAttachments:a,setInput:t,send:r,defaultCurrency:o,t:i}){let s=(0,Ya.useCallback)(m=>{let p=m.name||"",u=`@kiku ${i("displayCapture",{name:p}).trim()}`,d=p||"capture current page";t("");let b=e;a([]),r(d,u,b.length>0?b:void 0,"capture")},[e,r,a,t,i]),c=(0,Ya.useCallback)(m=>{let p=m.filter(b=>b.id).map(b=>({name:b.name||"",url:b.url||"",image:b.image||"",price:b.price?String(b.price):"",currency:b.currency||o})),u=m.map(b=>b.name).filter(Boolean).join(", "),d=`@kiku ${i("displayCaptureAll",{count:String(m.length)})}`;t(""),a([]),r(u||"capture all",d,void 0,"capture_all",p)},[o,r,a,t,i]),n=(0,Ya.useCallback)(()=>{let m=`@kiku ${i("displayViewHistory")}`;t(""),a([]),r("show my saved items",m,void 0,"view_history")},[r,a,t,i]),l=(0,Ya.useCallback)(()=>{let m=`@kiku ${i("displayDelete")}`;t(""),a([]),r("delete this",m,void 0,"delete")},[r,a,t,i]);return{handleKikuCapture:s,handleKikuCaptureAll:c,handleKikuViewHistory:n,handleKikuDelete:l}}var st=require("react"),Zn=require("@akropolys/sdk");var ke=require("react"),Xn=16e3,Ac=`
12
+ class KikuCapture extends AudioWorkletProcessor {
13
+ constructor() {
14
+ super();
15
+ this._ratio = sampleRate / ${Xn};
16
+ this._chunk = ${Math.round(Xn*.04)};
17
+ this._acc = new Int16Array(this._chunk);
18
+ this._n = 0;
19
+ this._pos = 0;
20
+ }
21
+ process(inputs) {
22
+ const ch = inputs[0] && inputs[0][0];
23
+ if (!ch) return true;
24
+ while (this._pos < ch.length) {
25
+ const i = this._pos | 0;
26
+ const frac = this._pos - i;
27
+ const a = ch[i];
28
+ const b = i + 1 < ch.length ? ch[i + 1] : a;
29
+ const s = a + (b - a) * frac;
30
+ const c = s < -1 ? -1 : s > 1 ? 1 : s;
31
+ this._acc[this._n++] = c < 0 ? c * 0x8000 : c * 0x7fff;
32
+ if (this._n === this._chunk) {
33
+ this.port.postMessage(this._acc.buffer, [this._acc.buffer]);
34
+ this._acc = new Int16Array(this._chunk);
35
+ this._n = 0;
36
+ }
37
+ this._pos += this._ratio;
38
+ }
39
+ this._pos -= ch.length;
40
+ return true;
41
+ }
42
+ }
43
+ registerProcessor('kiku-capture', KikuCapture);
44
+ `;function Ic(e){let a=new Uint8Array(e),t="";for(let r=0;r<a.length;r+=32768)t+=String.fromCharCode.apply(null,Array.from(a.subarray(r,r+32768)));return btoa(t)}function Ec(e){let a=atob(e),t=new Uint8Array(a.length);for(let r=0;r<a.length;r++)t[r]=a.charCodeAt(r);return new Int16Array(t.buffer,0,t.length>>1)}function Jn(e){let[a,t]=(0,ke.useState)("idle"),[r,o]=(0,ke.useState)(!1),[i,s]=(0,ke.useState)([]),[c,n]=(0,ke.useState)(null),l=(0,ke.useRef)(null),m=(0,ke.useRef)(null),p=(0,ke.useRef)(null),u=(0,ke.useRef)(null),d=(0,ke.useRef)(null),b=(0,ke.useRef)(0),v=(0,ke.useRef)(new Set),y=(0,ke.useRef)(null),w=(0,ke.useRef)(24e3),C=(0,ke.useRef)(e);(0,ke.useEffect)(()=>{C.current=e},[e]);let L=(0,ke.useRef)(!1),f=(0,ke.useRef)(null),N=(0,ke.useRef)(""),T=(0,ke.useRef)(""),x=(0,ke.useCallback)(()=>{let h=N.current.trim(),P=T.current.trim();N.current="",T.current="",!(!h&&!P)&&C.current.onExchange?.({heard:h,said:P})},[]),Q=(0,ke.useCallback)(()=>{},[]),S=(0,ke.useCallback)(()=>{if(!L.current)return;let h=f.current;h&&(f.current=null,h())},[]),$=(0,ke.useCallback)(()=>{let h=d.current;if(!h)return 0;let P=new Uint8Array(h.fftSize);h.getByteTimeDomainData(P);let q=0;for(let X=0;X<P.length;X++){let Y=(P[X]-128)/128;q+=Y*Y}return Math.min(1,Math.sqrt(q/P.length)*4)},[]),_=a==="speaking"||a==="thinking",I=(0,ke.useCallback)(h=>{let P=_?y.current:d.current;return!P||h.length!==P.frequencyBinCount?!1:(P.getByteFrequencyData(h),!0)},[_]),K=(0,ke.useCallback)(()=>(_?y.current:d.current)?.frequencyBinCount??0,[_]),E=(0,ke.useCallback)(()=>{for(let h of v.current)try{h.onended=null,h.stop()}catch{}v.current.clear(),b.current=0},[]),F=(0,ke.useCallback)(h=>{let P=m.current,q=y.current;if(!P||!q||h.length===0)return;let X=w.current,Y=P.createBuffer(1,h.length,X),A=Y.getChannelData(0),M=h.length,Z=Math.min(32,Math.floor(M/4));for(let O=0;O<M;O++){let W=h[O]/32768;O<Z?W*=O/Z:O>=M-Z&&(W*=(M-1-O)/Z),A[O]=W}let G=P.createBufferSource();G.buffer=Y,G.connect(q);let g=P.currentTime,J=Math.max(g+.02,b.current||g+.02);G.start(J),b.current=J+Y.duration,v.current.add(G),G.onended=()=>{v.current.delete(G),v.current.size===0&&t(O=>O==="speaking"?"listening":O)},t(O=>O==="speaking"||O==="idle"||O==="ended"?O:"speaking")},[]),ee=(0,ke.useCallback)(()=>{},[]),z=(0,ke.useCallback)(()=>{},[]),B=(0,ke.useCallback)(h=>{x(),l.current=null,L.current=!1,f.current=null,ee(),E(),u.current?.disconnect(),u.current=null,p.current?.getTracks().forEach(P=>P.stop()),p.current=null,d.current=null,y.current=null,m.current?.close().catch(()=>{}),m.current=null,t(h),o(!1),s([])},[x,E,ee]),ie=(0,ke.useCallback)(()=>{try{l.current?.send(JSON.stringify({type:"close"}))}catch{}try{l.current?.close()}catch{}B("idle")},[B]),re=(0,ke.useCallback)(async()=>{if(l.current)return;t("connecting");let h=C.current,P=h.apiUrl.replace(/\/+$/,""),q=new URL(P+"/voice/live",window.location.href);q.protocol=q.protocol==="https:"?"wss:":"ws:",q.searchParams.set("siteId",h.siteId),h.kikuId&&q.searchParams.set("kikuId",h.kikuId),h.language&&q.searchParams.set("language",h.language),h.voice&&q.searchParams.set("voice",h.voice);let X=new WebSocket(q.toString(),["akropolys.token."+h.token]);l.current=X,X.onmessage=J=>{let O;try{O=JSON.parse(J.data)}catch{return}switch(O.type){case"ready":O.sampleRate&&(w.current=O.sampleRate),typeof O.secondsLeft=="number"&&n(O.secondsLeft),L.current=!0,t("listening"),S();break;case"audio":ee(),O.audio&&F(Ec(O.audio));break;case"hearing":o(!0);break;case"thinking":o(!1),t("thinking"),z();break;case"heard":N.current+=O.text;break;case"said":T.current+=O.text;break;case"interrupted":ee(),E(),o(!1),t("listening");break;case"turn_complete":ee(),o(!1),x();break;case"sources":Array.isArray(O.sources)&&O.sources.length&&s(O.sources);break;case"seconds":typeof O.secondsLeft=="number"&&n(O.secondsLeft);break;case"refused":C.current.onRefused?.(O.code||"guest"),ie();break;case"error":C.current.onError?.(O.code||"unavailable"),ie();break}},X.onclose=J=>{l.current===X&&(J.code===4402&&(Y=!0,C.current.onError?.(J.reason==="site"?"siteLimit":"limit")),B("ended"))};let Y=!1;X.onerror=()=>{Y||C.current.onError?.("connection")};let A;try{if(!navigator.mediaDevices?.getUserMedia)throw{name:"NotAllowedError"};A=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0}})}catch(J){Y=!0;try{X.close()}catch{}l.current=null,t("idle"),h.onError?.(J?.name==="NotAllowedError"?"not-allowed":"audio-capture");return}if(l.current!==X){A.getTracks().forEach(J=>J.stop());return}p.current=A;let M=window.AudioContext||window.webkitAudioContext,Z=new M;m.current=Z;let G=Z.createAnalyser();G.fftSize=1024,G.smoothingTimeConstant=.25,d.current=G;let g=Z.createAnalyser();g.fftSize=1024,g.smoothingTimeConstant=.25,g.connect(Z.destination),y.current=g;try{let J=URL.createObjectURL(new Blob([Ac],{type:"application/javascript"}));if(await Z.audioWorklet.addModule(J),URL.revokeObjectURL(J),l.current!==X){A.getTracks().forEach(te=>te.stop()),Z.close().catch(()=>{});return}let O=new AudioWorkletNode(Z,"kiku-capture");u.current=O,O.port.onmessage=te=>{X.readyState===WebSocket.OPEN&&X.send(JSON.stringify({type:"audio",audio:Ic(te.data)}))};let W=Z.createMediaStreamSource(A);f.current=()=>{W.connect(G),W.connect(O)},S()}catch{C.current.onError?.("audio-worklet"),ie()}},[S,F,x,E,z,ee,ie,B]);return(0,ke.useEffect)(()=>()=>{ie()},[ie]),(0,ke.useEffect)(()=>{let h=p.current;if(h)for(let P of h.getAudioTracks())P.enabled=!e.muted},[e.muted,a]),{state:a,phase:a,hearing:r,sources:i,secondsLeft:c,micLevel:$,micSpectrum:I,spectrumBins:K,start:re,stop:ie}}var Dc=e=>e==="connecting"||e==="ended"?"idle":e;function ei({voiceLang:e,speechLang:a,shopperLanguage:t,ttsVoice:r="Puck",handleSendUtterance:o,appendSpokenExchange:i}){let s=(0,Zn.useAkropolysContext)(),[c,n]=(0,st.useState)("off"),[l,m]=(0,st.useState)("idle"),[p,u]=(0,st.useState)(""),[d,b]=(0,st.useState)(!1),[v,y]=(0,st.useState)(null),[w,C]=(0,st.useState)(!1),[L,f]=(0,st.useState)(()=>{try{let z=localStorage.getItem(to);if(z&&gr.some(B=>B.name===z))return z}catch{}return r||"Puck"}),N=(0,st.useCallback)(z=>{f(z);try{localStorage.setItem(to,z)}catch{}},[]),T=dr({lang:e||a,onUtterance:z=>{m("thinking"),o(z)},onError:z=>{n("off"),m("idle"),u(z==="not-allowed"?"micDenied":z==="language-not-supported"?"micLangUnsupported":z==="audio-capture"?"micMissing":z==="network"?"micNetwork":"micFailed")},onBargeIn:()=>{At()}}),x=s?.api?.apiUrl||s?.apiUrl||"",Q=s?.api?.siteId||s?.siteId||"",S=s?.api?.apiToken||s?.apiToken||"",$=s?.getShopperId?.()||s?.getKikuPub?.()||void 0,_=Jn({apiUrl:x,siteId:Q,token:S,kikuId:$,language:t,voice:L,muted:d,onExchange:z=>{i(z.heard,z.said)},onError:z=>{if(z==="shopper_reply_limit"||z==="access_revoked"||z==="account_required"){C(!0),_.stop(),n("off");return}n("off"),u(z==="not-allowed"?"micDenied":z==="audio-capture"?"micMissing":z==="limit"?"voiceLimitReached":z==="siteLimit"?"voiceSiteLimit":z==="connection"||z==="network"?"micNetwork":"voiceUnavailable")},onRefused:z=>{(z==="shopper_reply_limit"||z==="access_revoked"||z==="account_required")&&C(!0),n("off"),u("voiceUnavailable")}}),I=typeof window<"u"&&!!window.WebSocket,K=(0,st.useCallback)(async z=>{if(!un()){u("micInsecure");return}u(""),n(z),z==="dictate"?(m("listening"),await T.start()):_.start()},[_,T]),E=(0,st.useCallback)(()=>{n("off"),m("idle"),T.stop(),_.stop()},[_,T]),F=c==="converse"?Dc(_.state):c==="dictate"?l==="listening"?T.hearing?"speaking":"listening":l:"idle",ee=c==="converse"&&(_.phase==="connecting"||_.state==="connecting");return{voiceMode:c,voicePhase:F,voiceConnecting:ee,voiceError:p,setVoiceError:u,voiceMuted:d,setVoiceMuted:b,voiceSecondsLeft:v,voiceBlocked:w,liveVoiceName:L,chooseVoice:N,canConverse:I,startVoice:K,stopVoice:E,voice:T,live:_}}var ot=ft(require("react"));var ze=require("react"),pe=require("react/jsx-runtime"),ko={idle:{bw:50,bh:60,tr:1,br:.42,bow:3},thinking:{bw:46,bh:46,tr:1,br:1,bow:2},visualizing:{bw:64,bh:42,tr:.42,br:.42,bow:2},speaking:{bw:44,bh:54,tr:.9,br:.9,bow:3},failed:{bw:53,bh:45,tr:.95,br:.55,bow:4},curious:{bw:48,bh:52,tr:.9,br:.7,bow:3},welcoming:{bw:50,bh:58,tr:1,br:.5,bow:2},guiding:{bw:46,bh:50,tr:.8,br:.8,bow:2},happy:{bw:52,bh:56,tr:1,br:.4,bow:4},focused:{bw:48,bh:52,tr:.9,br:.7,bow:2}},bo={idle:{lid:1,warm:0,breath:2100,wob:1},thinking:{lid:1,warm:.2,breath:1700,wob:1.6},visualizing:{lid:1,warm:.9,breath:1200,wob:2.2},speaking:{lid:1,warm:.35,breath:900,wob:1.8},failed:{lid:.28,warm:0,breath:3e3,wob:.6},curious:{lid:1,warm:.15,breath:1800,wob:1.4},welcoming:{lid:1,warm:.25,breath:1600,wob:1.2},guiding:{lid:1,warm:.2,breath:1500,wob:1.3},happy:{lid:1,warm:.4,breath:1200,wob:1.5},focused:{lid:1,warm:.2,breath:1500,wob:1.2}},Mr=[[0,0,0],[.09,.54,0],[.19,-.36,32],[.31,-.22,58],[.42,-.12,68],[.54,.04,28],[.63,.96,0],[.71,.18,0],[.79,-.16,20],[.88,.34,0],[.95,-.05,4],[1,0,0]];function Fc(e){let a=1;for(;a<Mr.length-1&&Mr[a][0]<e;)a++;let[t,r,o]=Mr[a-1],[i,s,c]=Mr[a],n=i===t?0:(e-t)/(i-t),l=n*n*(3-2*n);return[r+(s-r)*l,o+(c-o)*l]}var Ga=6,ti=["bw","bh","tr","br","bow","lid","warm","wob","gx","gy"],Wt=(e,a,t)=>Math.max(a,Math.min(t,e));function ai(e,a,t,r){let o=l=>l.toFixed(2),i=(a+t)/2,s=e+r,c=(i-a)*.55,n=(t-i)*.55;return`C${o(e)} ${o(a+c)} ${o(s)} ${o(i-c)} ${o(s)} ${o(i)}C${o(s)} ${o(i+n)} ${o(e)} ${o(t-n)} ${o(e)} ${o(t)}`}function _c(e,a,t,r,o){let i=Wt(e*t,8,a*.96),s=Wt(e*r,8,a*.96),c=(p,u)=>`${p.toFixed(2)} ${u.toFixed(2)}`,n=.46,l=Wt((e-i)/e,0,1),m=Wt((e-s)/e,0,1);return`M${c(-e,-a+i)}C${c(-e,-a+i*n)} ${c(-e+i*n,-a)} ${c(-e+i,-a)}C${c(-e*.3*l,-a-2*l)} ${c(e*.3*l,-a-2*l)} ${c(e-i,-a)}C${c(e-i*n,-a)} ${c(e,-a+i*n)} ${c(e,-a+i)}`+ai(e,-a+i,a-s,o)+`C${c(e,a-s*n)} ${c(e-s*n,a)} ${c(e-s,a)}C${c(e*.3*m,a+2*m)} ${c(-e*.3*m,a+2*m)} ${c(-e+s,a)}C${c(-e+s*n,a)} ${c(-e,a-s*n)} ${c(-e,a-s)}`+ai(-e,a-s,-a+i,-o)+"Z"}var xa=[{name:"Graphite",color:"#4B5058",light:"#A8AEB6",glow:"rgba(75, 80, 88, 0.26)"},{name:"Mist",color:"#78868F",light:"#BFC9CF",glow:"rgba(120, 134, 143, 0.26)"},{name:"Sandstone",color:"#8A7E71",light:"#CBC1B5",glow:"rgba(138, 126, 113, 0.26)"},{name:"Pewter",color:"#5F6670",light:"#B3BAC3",glow:"rgba(95, 102, 112, 0.26)"}],vo=[{name:"Aegean",color:"#2E6FB7",light:"#9CC1E6",glow:"rgba(46, 111, 183, 0.30)"},{name:"Fern",color:"#3C8C60",light:"#A2CFB4",glow:"rgba(60, 140, 96, 0.30)"},{name:"Marigold",color:"#C48A22",light:"#EBD095",glow:"rgba(196, 138, 34, 0.30)"},{name:"Coral",color:"#C15A4E",light:"#E9AEA3",glow:"rgba(193, 90, 78, 0.30)"},{name:"Iris",color:"#5F5CC4",light:"#B6B4E8",glow:"rgba(95, 92, 196, 0.30)"}],pd=[...xa,...vo];function fo(e){let r=(!vo.includes(e)&&Math.random()<.26?vo:xa).filter(o=>o!==e);return r[Math.floor(Math.random()*r.length)]}function St(e){let a=parseInt(e.slice(1),16);return[a>>16&255,a>>8&255,a&255]}function go(e){return`rgb(${Math.round(e[0])}, ${Math.round(e[1])}, ${Math.round(e[2])})`}function qc(e,a,t){return[e[0]+(a[0]-e[0])*t,e[1]+(a[1]-e[1])*t,e[2]+(a[2]-e[2])*t]}var Uc=[[255,253,248],[247,240,231],[231,218,202],[198,178,156]],ri=[.05,.15,.42,.74],Bc=[.52,.72,.9,1],oi={color:"#E2581D",light:"#FFBE96",glow:"rgba(226, 88, 29, 0.34)"};function ni({state:e="idle",size:a=40,alert:t=!1,theme:r,feminine:o,accessories:i,onImpact:s,triggerRef:c}){let n=(0,ze.useRef)(e);n.current=e;let l=(0,ze.useRef)(t);l.current=t;let m=r==="blush"||o===!0||!!(i?.flower||i?.eyelashes||i?.blush),p=i?.flower??m,u=i?.eyelashes??m,d=i?.blush??m,b=(0,ze.useRef)(null),v=(0,ze.useRef)(null),y=(0,ze.useRef)(null),w=(0,ze.useRef)(null),C=(0,ze.useRef)(null),L=(0,ze.useRef)(null),f=(0,ze.useRef)(null),N=(0,ze.useRef)(null),T=(0,ze.useRef)(null),x=(0,ze.useRef)(null),Q=(0,ze.useRef)(null),S=(0,ze.useRef)(null),$=(0,ze.useRef)(null),_=(0,ze.useRef)(null),I=(0,ze.useRef)([]),K=(0,ze.useRef)([]),E=(0,ze.useRef)(null),F=(0,ze.useRef)(`kiku-${Math.random().toString(36).slice(2,8)}`).current,ee=(0,ze.useRef)(s);return ee.current=s,(0,ze.useEffect)(()=>{let z=window.matchMedia("(prefers-reduced-motion: reduce)").matches,B={},ie={};ti.forEach(me=>{B[me]=ko.idle[me]??bo.idle[me]??0,ie[me]=0});let re=Array.from({length:Ga},()=>({x:0,y:0,w:0,h:0,rx:0,a:0})),h=Array.from({length:Ga},()=>({x:0,y:0,w:0,h:0,rx:0,a:0})),P=1800,q=-1,X=0,Y=2600,A=0,M=!1,Z=9e3+Math.random()*8e3,G=-1,g=0,J=0,O=0,W=4200,te=0,oe=0,de=0,V=12e3,ce=xa[0],Ne=St(ce.color),We=St(ce.light),De=[...Ne],Fe=[...We],Qt=2600,Je=-1/0,Mt=!1,Re=0,nt=!1,lt=0,_t=0,Ta=0,Za=!1,Xt=0,Jt=me=>{me-Je<Qt?(ce=fo(ce),De=St(ce.color),Fe=St(ce.light),Je=-1/0):Je=me},er=(me,Ye,at,et)=>{let Ge=n.current,it=Array.from({length:Ga},()=>({x:0,y:0,w:0,h:0,rx:0,a:0})),Nt=(dt,Be,rt=0)=>{let Ae=Math.max(4,54*Math.max(.06,Ye));it[dt]={x:Be+at,y:-4+et+rt,w:21,h:Ae,rx:10.5,a:1}};if(Ge==="thinking"){let Be=me%2800/2800,rt=Math.pow(Math.sin(Be*Math.PI*2)*.5+.5,3);for(let Ae=0;Ae<4;Ae++){let Tt=me/700+Ae/4*Math.PI*2,ha=(26-Ae%2*5)*(1-.94*rt),qt=16+rt*6+Math.sin(me/420+Ae)*1.4;it[Ae]={x:Math.cos(Tt)*ha,y:Math.sin(Tt)*ha*.86+2,w:qt,h:qt,rx:qt/2,a:1}}}else if(Ge==="visualizing")it[0]={x:0,y:-2,w:78,h:26,rx:13,a:1};else if(Ge==="speaking")for(let Be=0;Be<5;Be++){let rt=12+Math.abs(Math.sin(me/150+Be*.9))*26;it[Be]={x:(Be-4/2)*15,y:-2,w:9,h:rt,rx:4.5,a:1}}else Ge==="failed"?(Nt(0,-22,8),Nt(1,22,8)):(Nt(0,-22),Nt(1,22));return it};c&&(c.current=()=>{if(G>=0){nt=!0,ce=fo(ce),De=St(ce.color),Fe=St(ce.light),Je=-1/0;return}G=0,Jt(lt),Z=lt+4e3});let la=me=>{lt=me;let Ye=n.current,at=ko[Ye]??ko.idle,et=bo[Ye]??bo.idle,Ge=Ye==="idle"||Ye==="failed";Ge&&!z&&(me>Y&&(X=(Math.random()-.5)*2,Y=me+1800+Math.random()*3600),B.wantGx=X*5);let it=l.current?1:0;Ta=(Ta+(it-_t)*.1)*.88,_t+=Ta;let Nt=l.current&&!z?Math.sin(me/480)*.055*_t:0,dt={bw:at.bw*(1+_t*.34+Nt),bh:at.bh*(1+_t*.2+Nt),tr:at.tr,br:at.br,bow:at.bow,warm:et.warm,wob:et.wob,lid:et.lid,gx:Ge&&!z?X*5:0,gy:Ge&&!z?Math.sin(me/2600)*2:0};!z&&Ge&&(q<0&&me>P&&(q=0),q>=0&&(q+=1/7,dt.lid=et.lid*Math.abs(q-.5)*2,q>=1&&(q=-1,dt.lid=et.lid,P=me+(Math.random()<.22?340:2600+Math.random()*4200)))),ti.forEach(fe=>{let Le=fe;if(z){B[Le]=dt[Le];return}let Ce=Le==="lid"?.42:.11,ht=Le==="lid"?.55:.78;ie[Le]=(ie[Le]+(dt[Le]-B[Le])*Ce)*ht,B[Le]+=ie[Le]});let Be=0,rt=0;!z&&l.current&&G<0&&me>Xt&&(G=0,Xt=me+2100,Z=me+4e3),!z&&Ye==="idle"?G<0&&me>Z&&(G=0,Mt?(Mt=!1,Re=0,ce=fo(ce),De=St(ce.color),Fe=St(ce.light),Je=-1/0):(Re++,Jt(me))):G<0&&(Z=me+3e3+Math.random()*3e3),G>=0&&(G+=1/96,[Be,rt]=Fc(G),G>=1&&(G=-1,Be=0,rt=0,nt?(nt=!1,Re=0,Z=me+150):!Mt&&Re>=2?(Mt=!0,Z=me+240):Z=me+5e3+Math.random()*5e3));let Ae=Math.max(0,Be);if(l.current!==Za){Za=l.current;let fe=l.current?oi:ce;De=St(fe.color),Fe=St(fe.light),l.current&&!z&&(G<0&&(G=0),Xt=me+2600)}let Tt=l.current?oi:ce;if(z)Ne=[...De],We=[...Fe];else for(let fe=0;fe<3;fe++)Ne[fe]+=(De[fe]-Ne[fe])*.055,We[fe]+=(Fe[fe]-We[fe])*.055;let ha=go(Ne),qt=go(We);S.current?.setAttribute("stop-color",ha),$.current?.setAttribute("stop-color",qt),_.current?.setAttribute("stop-color",qt);for(let fe=0;fe<4;fe++){let Le=ri[fe]+(Bc[fe]-ri[fe])*_t;I.current[fe]?.style.setProperty("stop-color",go(qc(Uc[fe],Ne,Le)))}let tr=.34+Math.sin(me/1200)*.06,Lr=Ae>.02?Math.min(.72,tr+Ae*.34):tr;Q.current?.setAttribute("opacity",Lr.toFixed(3)),Ae>.04?ee.current?.(Ae,Tt.color,Tt.glow):da>.04&&ee.current?.(0,Tt.color,Tt.glow),da=Ae;let ar=z?0:Math.sin(me/1900)*.9*B.wob,Ut=B.bw*(1+Be*.55)+ar*.4,Ra=B.bh*(1-Be*.62),za=_c(Ut,Ra,Wt(B.tr+Ae*.5,0,1.2),Wt(B.br+Ae*.9,0,1),B.bow+ar+Ae*5);b.current?.setAttribute("d",za),v.current?.setAttribute("d",za);let Pa=Ye==="thinking";Pa!==M&&(M=Pa,E.current?.setAttribute("filter",Pa?`url(#${F}-goo)`:"none"));let La=er(me,B.lid*(1-Ae*.85),B.gx,B.gy);for(let fe=0;fe<Ga;fe++){let Le=La[fe],Ce=re[fe],ht=h[fe];for(let tt of["x","y","w","h","rx","a"]){if(z){Ce[tt]=Le[tt];continue}ht[tt]=(ht[tt]+(Le[tt]-Ce[tt])*.16)*.74,Ce[tt]+=ht[tt]}let He=K.current[fe];He&&(He.setAttribute("x",(Ce.x-Ce.w/2).toFixed(2)),He.setAttribute("y",(Ce.y-Ce.h/2).toFixed(2)),He.setAttribute("width",Math.max(0,Ce.w).toFixed(2)),He.setAttribute("height",Math.max(0,Ce.h).toFixed(2)),He.setAttribute("rx",Math.max(0,Math.min(Ce.rx,Ce.w/2,Ce.h/2)).toFixed(2)),He.setAttribute("opacity",Wt(Ce.a,0,1).toFixed(2)))}let Aa=z?0:Math.sin(me/et.breath)*1.5;!z&&Ge&&G<0?(me>W&&(O=(Math.random()<.5?-1:1)*(.35+Math.random()*.65),W=me+2600+Math.random()*4200),me>V&&(de=de>.1?0:1,V=me+(de>.1?900:9e3+Math.random()*11e3))):(O=0,de=0),J=(J+(O-g)*.028)*.9,g+=J,oe=(oe+(de-te)*.06)*.82,te+=oe;let bt=B.bh-Ra,Ia=g*3.4+te*4.5,rr=g*2.2+te*3,or=te*2.4;if(y.current?.setAttribute("transform",`translate(${rr.toFixed(2)} ${(Aa+bt-rt+or).toFixed(2)}) rotate(${Ia.toFixed(2)} 0 60)`),w.current&&w.current.setAttribute("transform",`translate(${rr.toFixed(2)} ${(Aa+bt-rt+or).toFixed(2)}) rotate(${Ia.toFixed(2)} 0 60)`),p&&C.current){let fe=-Ut*.62,Le=-Ra*.7,Ce=-16+(z?0:Math.sin(me/1400)*3)+Ia*.4;C.current.setAttribute("transform",`translate(${fe.toFixed(2)}, ${Le.toFixed(2)}) rotate(${Ce.toFixed(2)})`)}if(d&&L.current){let fe=12+B.gy*.5;L.current.setAttribute("transform",`translate(0, ${fe.toFixed(2)})`)}if(u&&f.current){let fe=Ye!=="thinking"&&Ye!=="visualizing"&&Ye!=="speaking";f.current.setAttribute("opacity",fe?Wt(B.lid*1.3,0,1).toFixed(2):"0");let Le=(Ce,ht)=>{let He=Math.max(1,Math.min(Ce.w,Ce.h)/2),tt=Ce.y-Ce.h/2+He,Ea="";for(let[Ar,pa]of[[20,7],[48,8],[76,6.5]]){let Rt=Ar*Math.PI/180,Ir=Ce.x+ht*Math.sin(Rt)*He,Er=tt-Math.cos(Rt)*He,Dr=Ce.x+ht*Math.sin(Rt)*(He+pa),Da=tt-Math.cos(Rt)*(He+pa)-1.5,Fr=Ce.x+ht*Math.sin(Rt-.22)*(He+pa*.65),_r=tt-Math.cos(Rt-.22)*(He+pa*.65);Ea+=` M ${Ir.toFixed(2)} ${Er.toFixed(2)} Q ${Fr.toFixed(2)} ${_r.toFixed(2)} ${Dr.toFixed(2)} ${Da.toFixed(2)}`}return Ea.trim()};N.current?.setAttribute("d",Le(re[0],-1)),T.current?.setAttribute("d",Le(re[1],1))}A=requestAnimationFrame(la)},da=0;return A=requestAnimationFrame(la),()=>cancelAnimationFrame(A)},[p,u,d,m]),(0,pe.jsxs)("svg",{className:"hsk-kiku-avatar",width:a,height:a,viewBox:"-100 -100 200 200","aria-hidden":"true",style:{display:"block",overflow:"visible"},children:[(0,pe.jsxs)("defs",{children:[(0,pe.jsx)("linearGradient",{id:`${F}-marble`,x1:".2",y1:"0",x2:".42",y2:"1",children:[0,40,82,100].map((z,B)=>(0,pe.jsx)("stop",{ref:ie=>{I.current[B]=ie},offset:`${z}%`,style:{stopColor:`var(--hsk-marble-${B+1}, #FAF7F2)`}},z))}),(0,pe.jsxs)("linearGradient",{id:`${F}-contact`,x1:"0",y1:"1",x2:"0",y2:"0",children:[(0,pe.jsx)("stop",{ref:S,offset:"0%",stopColor:xa[0].color,stopOpacity:"0.9"}),(0,pe.jsx)("stop",{ref:$,offset:"45%",stopColor:xa[0].light,stopOpacity:"0.5"}),(0,pe.jsx)("stop",{ref:_,offset:"100%",stopColor:xa[0].light,stopOpacity:"0"})]}),(0,pe.jsxs)("radialGradient",{id:`${F}-sheen`,cx:".34",cy:".2",r:".55",children:[(0,pe.jsx)("stop",{offset:"0%",stopColor:"#FFFFFF",style:{stopOpacity:"var(--hsk-marble-sheen, .9)"}}),(0,pe.jsx)("stop",{offset:"100%",stopColor:"#FFFFFF",stopOpacity:"0"})]}),(0,pe.jsxs)("linearGradient",{id:`${F}-hibiscus-petal`,x1:"0",y1:"1",x2:"0",y2:"0",children:[(0,pe.jsx)("stop",{offset:"0%",stopColor:"#FF3366"}),(0,pe.jsx)("stop",{offset:"65%",stopColor:"#FF758F"}),(0,pe.jsx)("stop",{offset:"100%",stopColor:"#FFAAA6"})]}),(0,pe.jsxs)("radialGradient",{id:`${F}-blush-cheek`,cx:"50%",cy:"50%",r:"50%",children:[(0,pe.jsx)("stop",{offset:"0%",stopColor:"#FB7185",stopOpacity:"0.48"}),(0,pe.jsx)("stop",{offset:"100%",stopColor:"#FB7185",stopOpacity:"0"})]}),(0,pe.jsx)("clipPath",{id:`${F}-skin`,children:(0,pe.jsx)("use",{href:`#${F}-body`})}),(0,pe.jsxs)("filter",{id:`${F}-goo`,x:"-50%",y:"-50%",width:"200%",height:"200%",children:[(0,pe.jsx)("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"4",result:"b"}),(0,pe.jsx)("feColorMatrix",{in:"b",values:"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -7"})]}),(0,pe.jsxs)("mask",{id:`${F}-cut`,children:[(0,pe.jsx)("path",{ref:v,d:"",fill:"#FFFFFF"}),(0,pe.jsx)("g",{ref:E,children:Array.from({length:Ga},(z,B)=>(0,pe.jsx)("rect",{ref:ie=>{K.current[B]=ie},fill:"#000000"},B))})]})]}),(0,pe.jsxs)("g",{ref:y,mask:`url(#${F}-cut)`,children:[(0,pe.jsx)("path",{id:`${F}-body`,ref:b,d:"",fill:`url(#${F}-marble)`}),(0,pe.jsxs)("g",{clipPath:`url(#${F}-skin)`,children:[(0,pe.jsx)("ellipse",{cx:"-14",cy:"-40",rx:"46",ry:"34",fill:`url(#${F}-sheen)`}),(0,pe.jsx)("rect",{ref:Q,x:"-100",y:"-20",width:"200",height:"100",fill:`url(#${F}-contact)`,opacity:"0.45"})]})]}),(0,pe.jsxs)("g",{ref:w,style:{pointerEvents:"none"},children:[d&&(0,pe.jsxs)("g",{ref:L,children:[(0,pe.jsx)("ellipse",{cx:"-28",cy:"0",rx:"10",ry:"5.5",fill:`url(#${F}-blush-cheek)`}),(0,pe.jsx)("ellipse",{cx:"28",cy:"0",rx:"10",ry:"5.5",fill:`url(#${F}-blush-cheek)`})]}),u&&(0,pe.jsxs)("g",{ref:f,children:[(0,pe.jsx)("path",{ref:N,stroke:"#3D1424",strokeWidth:"1.7",strokeLinecap:"round",fill:"none"}),(0,pe.jsx)("path",{ref:T,stroke:"#3D1424",strokeWidth:"1.7",strokeLinecap:"round",fill:"none"})]}),p&&(0,pe.jsxs)("g",{ref:C,className:"hsk-avatar-flower",children:[(0,pe.jsx)("path",{d:"M 0 0 C -12 -7 -15 5 0 0 Z",fill:"#10B981",transform:"translate(6, 4) rotate(-35)"}),[0,72,144,216,288].map(z=>(0,pe.jsx)("path",{d:"M 0 0 C -6 -13 6 -13 0 0 Z",fill:`url(#${F}-hibiscus-petal)`,stroke:"#FF2A5F",strokeWidth:"0.6",transform:`rotate(${z-18})`},z)),(0,pe.jsx)("path",{d:"M 0 0 Q 3 -10 9 -14",stroke:"#F59E0B",strokeWidth:"1.6",strokeLinecap:"round",fill:"none"}),(0,pe.jsx)("circle",{cx:"9",cy:"-14",r:"1.3",fill:"#FDE047"}),(0,pe.jsx)("circle",{cx:"7",cy:"-12",r:"1.1",fill:"#FDE047"}),(0,pe.jsx)("circle",{cx:"6.5",cy:"-15",r:"1.1",fill:"#FDE047"}),(0,pe.jsx)("circle",{cx:"0",cy:"0",r:"2.2",fill:"#881337"})]})]})]})}var Ve=require("react/jsx-runtime");function ii({title:e,hasMessages:a,avatarState:t="idle",unread:r=!1,awayFromBottom:o=!1,themeMenuOpen:i=!1,themeMenuClosing:s=!1,isNarrow:c=!1,currentTheme:n="dark",onJumpToLatest:l,onReset:m,onClose:p,onToggleThemeMenu:u,onSelectTheme:d}){let b=Ot(),[v,y]=ot.default.useState(!1),[w,C]=ot.default.useState("#134e3d"),[L,f]=ot.default.useState("rgba(19, 78, 61, 0.45)"),N=ot.default.useRef(void 0),T=ot.default.useRef(null),x=ot.default.useRef(!1),Q=ot.default.useRef(0),S=ot.default.useCallback(()=>{x.current=!1,Q.current=Date.now(),T.current=setTimeout(()=>{if(x.current=!0,typeof navigator<"u"&&navigator.vibrate)try{navigator.vibrate(25)}catch{}u?.()},350)},[u]),$=ot.default.useCallback(()=>{T.current&&(clearTimeout(T.current),T.current=null)},[]),_=ot.default.useCallback(()=>{T.current&&(clearTimeout(T.current),T.current=null)},[]),I=ot.default.useCallback(E=>{if(x.current){x.current=!1,E.preventDefault(),E.stopPropagation();return}o?l?.():N.current?.()},[o,l]),K=ot.default.useCallback((E,F,ee)=>{E>.04?(y(!0),C(F),f(ee)):y(!1)},[]);return(0,Ve.jsxs)("div",{className:"hsk-cb-topbar",children:[(0,Ve.jsx)("div",{className:"hsk-cb-topbar-left",children:(0,Ve.jsx)("button",{className:"hsk-cb-back",onClick:p,"aria-label":"Close",children:(0,Ve.jsx)("span",{className:"hsk-cb-back-icon",children:(0,Ve.jsx)(yr,{})})})}),(0,Ve.jsxs)("div",{className:ae("hsk-cb-topbar-mark",c&&i&&"is-oozing"),"data-impacting":v?"true":"false",style:{"--hsk-contact-color":w,"--hsk-contact-glow":L},"data-unread":r?"true":"false",onTouchStart:S,onTouchEnd:$,onTouchMove:_,onTouchCancel:_,onClick:I,role:"button",tabIndex:0,"aria-label":o?b("jumpToLatest"):"kiku (long press for themes)",children:[(0,Ve.jsx)(ni,{state:t,size:34,theme:n,alert:r,onImpact:K,triggerRef:N}),(0,Ve.jsx)("span",{className:"hsk-cb-topbar-name",children:e})]}),(0,Ve.jsx)("div",{className:"hsk-cb-topbar-actions",children:a&&(0,Ve.jsx)("button",{className:"hsk-cb-topbar-btn",onClick:m,children:b("clearChat")})}),c&&i&&(0,Ve.jsx)("div",{className:ae("hsk-cb-topbar-ooze-menu",s&&"is-closing"),role:"dialog","aria-label":"Theme selector",style:{position:"absolute",top:"100%",marginTop:"8px",left:"50%",transform:"translateX(-50%)",zIndex:1e3},onPointerDown:E=>E.stopPropagation(),onClick:E=>E.stopPropagation(),onMouseDown:E=>E.stopPropagation(),children:(0,Ve.jsx)("div",{className:"hsk-cb-theme-2x2-grid",style:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:6},children:ra.map(({id:E,label:F,Icon:ee})=>(0,Ve.jsxs)("button",{type:"button",className:ae("hsk-cb-theme-grid-item",n===E&&"is-active"),onClick:z=>{z.stopPropagation(),d?.(E)},children:[(0,Ve.jsx)(ee,{}),(0,Ve.jsx)("span",{children:F})]},E))})})]})}var oa=ft(require("react"));var si=require("react");var Nr=ft(require("react")),Yt=require("react/jsx-runtime"),Hc=12;function yo(e){return e==null||typeof e=="boolean"?"":typeof e=="string"||typeof e=="number"?String(e):Array.isArray(e)?e.map(yo).join(""):Nr.default.isValidElement(e)?yo(e.props.children):""}function xo(e,a,t,r){if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number")return String(e).split(/(\s+)/).filter(Boolean).map((o,i)=>{if(/^\s+$/.test(o))return o;let s=t+a.i*Hc;return a.i+=1,(0,Yt.jsx)("span",{className:"hsk-cascade__w",style:{animationDelay:`${s}ms`},children:o},`${r}-w${i}`)});if(Array.isArray(e))return e.map((o,i)=>xo(o,a,t,`${r}-${i}`));if(Nr.default.isValidElement(e)){let o=e;return Nr.default.cloneElement(o,{key:`${r}-el`},xo(o.props.children,a,t,`${r}-c`))}return e}function Ke({children:e,baseMs:a=0}){let t=yo(e),r=0;for(let i=0;i<t.length;i++)r=(r<<5)-r+t.charCodeAt(i)|0;let o=`c${Math.abs(r)}`;return(0,Yt.jsxs)(Yt.Fragment,{children:[(0,Yt.jsx)("span",{className:"hsk-sr-only",children:t}),(0,Yt.jsx)("span",{"aria-hidden":"true",children:xo(e,{i:0},a,o)})]})}var Xe=require("react/jsx-runtime");function ci({language:e,onBack:a}){let t=Oa(e);return(0,Xe.jsxs)("div",{className:"hsk-cb-chrome-loading",dir:t.rtl?"rtl":"ltr","aria-busy":"true",children:[(0,Xe.jsx)("div",{className:"hsk-cb-chrome-loading-header",children:(0,Xe.jsx)("h2",{className:"hsk-cb-hello hsk-cascade",children:(0,Xe.jsx)(Ke,{baseMs:60,children:t.preparing})})}),(0,Xe.jsx)("div",{className:"hsk-cb-chrome-progress",role:"progressbar","aria-label":t.preparing,children:(0,Xe.jsx)("div",{className:"hsk-cb-chrome-progress-track"})}),a&&(0,Xe.jsxs)("button",{type:"button",className:"hsk-cb-chrome-back-btn",onClick:a,children:[(0,Xe.jsx)("span",{"aria-hidden":"true",children:t.rtl?"\u2192":"\u2190"})," ",t.changeLang]}),!t.known&&(0,Xe.jsxs)("div",{className:"hsk-cb-chrome-notice",dir:"ltr",lang:"en",children:[(0,Xe.jsxs)("div",{className:"hsk-cb-chrome-notice-header",children:[(0,Xe.jsx)("span",{className:"hsk-cb-chrome-notice-pill",children:"Preview / Low-Resource"}),(0,Xe.jsx)("span",{className:"hsk-cb-chrome-notice-title",children:"Live Machine Translation"})]}),(0,Xe.jsxs)("span",{className:"hsk-cb-chrome-notice-body",children:[(0,Xe.jsx)("b",{children:t.nativeName})," is translated in real time as you browse. Some phrasing may read differently than human-reviewed copy, but names, prices, and figures are always strictly preserved."]})]})]})}var wo=require("react/jsx-runtime"),Tr=16,$c=110,jc=/[؀-ۿ܀-ݏ߀-߿ࡠ-ࣿﭐ-﷿ﹰ-]/;function wa(e){if(!e)return[];if(jc.test(e))return e.split(/(\s+)/).filter(Boolean);let a=typeof Intl<"u"?Intl:void 0;if(a?.Segmenter){let t=new a.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e),r=>r.segment)}return e.split(/(\s+)/).filter(Boolean)}function li({text:e,placeholder:a,visible:t=!0,replay:r=0,replaySeed:o,staggerMs:i=Tr}){if(!t)return null;let s=e||a||"";if(!s)return null;let c=o!==void 0?o:r,n=wa(s),l=Math.max(n.length-1,1);return(0,wo.jsx)("div",{className:"hsk-animated-placeholder",dir:"auto","aria-hidden":"true",children:n.map((m,p)=>(0,wo.jsx)("span",{className:"hsk-animated-placeholder__char",style:{animationDelay:`${$c+p*i}ms`,"--hsk-ph-hue":`${Math.round(p/l*300)}`},children:m},`${s}|${c}|${p}`))})}var D=require("react/jsx-runtime");function So(e){return typeof e=="string"?wa(e).length:Array.isArray(e)?e.reduce((a,t)=>a+So(t),0):oa.default.isValidElement(e)?So(e.props?.children):0}function Co(e,a,t,r){return typeof e=="string"?wa(e).map(o=>{let i=a.i++;return(0,D.jsx)("span",{className:"hsk-cb-shimmer-char",style:{"--hsk-char-idx":r+i,"--hsk-ph-hue":`${Math.round(i/t*300)}`},children:o},i)}):Array.isArray(e)?e.map((o,i)=>(0,D.jsx)(oa.default.Fragment,{children:Co(o,a,t,r)},i)):oa.default.isValidElement(e)?oa.default.cloneElement(e,{children:Co(e.props?.children,a,t,r)}):e}function di({text:e,baseIdx:a=0}){let t=Math.max(So(e)-1,1);return(0,D.jsx)(D.Fragment,{children:Co(e,{i:0},t,a)})}function hi({inOnboarding:e,justCompleted:a,onboardingMood:t,awaitingLang:r,awaitingName:o,awaitingEntityLang:i,awaitingConsent:s,termsAgreed:c,shopperLanguage:n,shopperName:l,entityLangPref:m,chromeReady:p,activeChips:u,t:d,tNode:b,chooseLanguage:v,chooseEntityLang:y,agreeTerms:w,handleSend:C}){let L=r?"1":o?"2":i?"3":s?"4":null,[f,N]=oa.default.useState(30);return oa.default.useEffect(()=>{if(!s){N(30);return}let T=setInterval(()=>{N(x=>x<=1?(clearInterval(T),0):x-1)},1e3);return()=>clearInterval(T)},[s]),(0,D.jsx)("div",{className:"hsk-cb-empty",children:(0,D.jsxs)("div",{className:"hsk-cb-onboarding-card",children:[L&&(0,D.jsx)("div",{className:"hsk-cb-onboarding-head",children:(0,D.jsxs)("span",{className:"hsk-cb-step-badge",dir:"ltr",children:[L," / 4"]})}),r?(0,D.jsxs)("div",{className:"hsk-cb-hello-wrap",children:[(0,D.jsx)("h2",{className:"hsk-cb-hello hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:0,children:"What language should we chat in?"})}),(0,D.jsxs)("div",{className:"hsk-cb-lang-chips",children:[fr.map((T,x)=>(0,D.jsx)("button",{type:"button",className:"hsk-cb-lang-chip",style:{"--hsk-pill-idx":x},lang:T.tag,dir:T.rtl?"rtl":"ltr",onClick:()=>v(T.value),children:T.native},T.value)),(0,D.jsx)("span",{className:"hsk-cb-lang-chips-hint",style:{"--hsk-pill-idx":fr.length},children:"or type any other"})]})]},"step-lang"):o?(0,D.jsx)("div",{className:"hsk-cb-hello-wrap",children:p?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)("h2",{className:"hsk-cb-hello hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:0,children:d("nameStepTitle")})}),(0,D.jsx)("p",{className:"hsk-cb-hello-lead hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:30,children:d("nameStepLead")})}),(0,D.jsx)("p",{className:"hsk-cb-hello-ask hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:60,children:d("nameStepAsk")})})]}):(0,D.jsx)(ci,{language:n,onBack:()=>v("")})},"step-name"):i?(0,D.jsxs)("div",{className:"hsk-cb-hello-wrap",children:[p&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)("h2",{className:"hsk-cb-hello hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:0,children:d("howShouldResultsLook")})}),(0,D.jsx)("p",{className:"hsk-cb-hello-lead hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:30,children:b("entityLangIntro",{lang:n})})})]}),p&&(0,D.jsx)("div",{className:"hsk-cb-entlang-opts",role:"radiogroup","aria-label":d("howShouldResultsLook"),children:["translated","original"].map((T,x)=>(0,D.jsxs)("button",{type:"button",role:"radio","aria-checked":m===T,className:ae("hsk-cb-entlang-opt",m===T&&"is-selected"),style:{"--hsk-opt-idx":x},onClick:()=>y(T),children:[(0,D.jsx)("span",{className:"hsk-cb-entlang-radio","aria-hidden":"true",children:(0,D.jsx)("span",{className:"hsk-cb-entlang-radio-dot"})}),(0,D.jsxs)("span",{className:"hsk-cb-entlang-opt-text",children:[(0,D.jsx)("span",{className:"hsk-cb-entlang-opt-title",children:(0,D.jsx)(di,{text:T==="translated"?b("inLanguage",{lang:n}):d("asWritten"),baseIdx:0})}),(0,D.jsx)("span",{className:"hsk-cb-entlang-opt-note",children:(0,D.jsx)(di,{text:d(T==="translated"?"detailsTranslated":"namesAsWritten"),baseIdx:15})})]})]},T))})]},"step-entity-lang"):s?(0,D.jsx)("div",{className:"hsk-cb-hello-wrap",children:p&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)("h2",{className:"hsk-cb-hello hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:0,children:d("termsStepTitle")})}),(0,D.jsx)("p",{className:"hsk-cb-hello-lead hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:30,children:d("termsStepSubtitle")})}),(0,D.jsxs)("div",{className:"hsk-cb-terms-sanctuary",children:[(0,D.jsxs)("div",{className:"hsk-cb-terms-item",style:{"--hsk-row-idx":0},children:[(0,D.jsxs)("div",{className:"hsk-cb-terms-head",children:[(0,D.jsx)("span",{className:"hsk-cb-terms-numeral",children:"I"}),(0,D.jsx)("h3",{className:"hsk-cb-terms-title",children:d("termsPiiTitle")})]}),(0,D.jsx)("p",{className:"hsk-cb-terms-desc",children:d("termsPiiDesc")})]}),(0,D.jsx)("div",{className:"hsk-cb-terms-divider"}),(0,D.jsxs)("div",{className:"hsk-cb-terms-item",style:{"--hsk-row-idx":1},children:[(0,D.jsxs)("div",{className:"hsk-cb-terms-head",children:[(0,D.jsx)("span",{className:"hsk-cb-terms-numeral",children:"II"}),(0,D.jsx)("h3",{className:"hsk-cb-terms-title",children:d("termsSessionTitle")})]}),(0,D.jsx)("p",{className:"hsk-cb-terms-desc",children:d("termsSessionDesc")})]}),(0,D.jsx)("div",{className:"hsk-cb-terms-divider"}),(0,D.jsxs)("div",{className:"hsk-cb-terms-item",style:{"--hsk-row-idx":2},children:[(0,D.jsxs)("div",{className:"hsk-cb-terms-head",children:[(0,D.jsx)("span",{className:"hsk-cb-terms-numeral",children:"III"}),(0,D.jsx)("h3",{className:"hsk-cb-terms-title",children:d("termsMemoryTitle")})]}),(0,D.jsx)("p",{className:"hsk-cb-terms-desc",children:d("termsMemoryDesc")})]}),(0,D.jsx)("div",{className:"hsk-cb-terms-divider"}),(0,D.jsxs)("div",{className:"hsk-cb-terms-item",style:{"--hsk-row-idx":3},children:[(0,D.jsxs)("div",{className:"hsk-cb-terms-head",children:[(0,D.jsx)("span",{className:"hsk-cb-terms-numeral",children:"IV"}),(0,D.jsx)("h3",{className:"hsk-cb-terms-title",children:d("termsCookieTitle")})]}),(0,D.jsx)("p",{className:"hsk-cb-terms-desc",children:d("termsCookieDesc")})]})]}),(0,D.jsx)("div",{className:"hsk-cb-terms-action-wrap",children:(0,D.jsx)("button",{type:"button",className:ae("hsk-cb-terms-agree-btn",f===0&&"is-active"),disabled:f>0,onClick:w,children:f>0?d("termsAgreeCounting",{seconds:String(f)}):d("termsAgreeButton")})})]})},"step-terms"):a?(0,D.jsx)("div",{className:"hsk-cb-hello-wrap",children:p&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)("h2",{className:"hsk-cb-hello hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:0,children:b("allSet",{name:l})})}),(0,D.jsx)("p",{className:"hsk-cb-hello-lead hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:30,children:m==="translated"?b("replyingTranslated",{lang:n}):b("replyingOriginal",{lang:n})})})]})},"step-completed"):l?(0,D.jsxs)("div",{className:"hsk-cb-hello-wrap",children:[(0,D.jsx)("h2",{className:"hsk-cb-hello hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:0,children:b("greetReturning",{name:l})})}),(0,D.jsx)("p",{className:"hsk-cb-hello-lead hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:30,children:d("greetReturningLead")})})]},"step-returning"):(0,D.jsxs)("div",{className:"hsk-cb-hello-wrap",children:[(0,D.jsx)("h2",{className:"hsk-cb-hello hsk-cascade",children:(0,D.jsxs)(Ke,{baseMs:0,children:["Hi, I'm ",(0,D.jsx)("b",{children:"kiku"}),"."]})}),(0,D.jsx)("p",{className:"hsk-cb-hello-lead hsk-cascade",children:(0,D.jsx)(Ke,{baseMs:30,children:"Ask me to search, visualize, or capture anything \u2014 I look across the whole site in real time."})})]},"step-initial"),!e&&(u?.length??0)>0&&(0,D.jsx)("div",{className:"hsk-cb-chips",children:u.map((T,x)=>(0,D.jsx)("button",{className:"hsk-cb-chip",style:{"--hsk-pill-idx":x},onClick:()=>C(T),children:T},T))})]})})}var gi=ft(require("react"));var Qa=require("react"),Me=require("@akropolys/sdk"),Oe=require("react/jsx-runtime");function Vc(e){let[,a]=(0,Qa.useState)(0),t=JSON.stringify(e);return(0,Qa.useEffect)(()=>(0,Me.subscribeLiveValues)(r=>{e.includes(r)&&a(o=>o+1)}),[t]),(0,Qa.useEffect)(()=>{let r=setInterval(()=>a(o=>o+1),1e3);return()=>clearInterval(r)},[]),e.map(Me.getLiveValue)}function Kc({record:e,now:a}){let t=(0,Me.isStale)(e,a),r=e.fields,o=r.event||r.question||r.title||e.key,i=o.length>38?o.slice(0,36)+"\u2026":o,s=!!r.yes_price||!!r.yesPrice,c=!!r.no_price||!!r.noPrice,n=[];s?n.push({label:"Yes",value:(0,Me.formatLiveValue)("yes_price",r.yes_price||r.yesPrice),rawKey:"yes_price"}):(r.yes_pct||r.yesPct)&&n.push({label:"Yes",value:(0,Me.formatLiveValue)("yes_pct",r.yes_pct||r.yesPct),rawKey:"yes_pct"}),c?n.push({label:"No",value:(0,Me.formatLiveValue)("no_price",r.no_price||r.noPrice),rawKey:"no_price"}):(r.no_pct||r.noPct)&&n.push({label:"No",value:(0,Me.formatLiveValue)("no_pct",r.no_pct||r.noPct),rawKey:"no_pct"}),r.bid&&n.push({label:"Bid",value:(0,Me.formatLiveValue)("bid",r.bid),rawKey:"bid"}),r.ask&&n.push({label:"Ask",value:(0,Me.formatLiveValue)("ask",r.ask),rawKey:"ask"}),r.spread&&n.push({label:"Spread",value:(0,Me.formatLiveValue)("spread",r.spread),rawKey:"spread"}),!s&&!c&&!r.bid&&r.price&&n.push({label:"Price",value:(0,Me.formatLiveValue)("price",r.price),rawKey:"price"}),(r.home_spread||r.spread_line)&&n.push({label:"Spread",value:(0,Me.formatLiveValue)("spread",r.home_spread||r.spread_line),rawKey:"spread"}),(r.moneyline||r.ml)&&n.push({label:"ML",value:(0,Me.formatLiveValue)("ml",r.moneyline||r.ml),rawKey:"moneyline"}),(r.over_under||r.total)&&n.push({label:"O/U",value:(0,Me.formatLiveValue)("total",r.over_under||r.total),rawKey:"over_under"});let l=r.volume||r.vol||r["24h_volume"]||r.turnover;l&&n.push({label:"Vol",value:(0,Me.formatLiveValue)("volume",l),rawKey:"volume"});let m=r.close_date||r.expiry||r.expires_at||r.settle_date,p=m?(0,Me.formatLiveValue)("close_date",m):null;return(0,Oe.jsxs)("div",{className:`hsk-live-card${t?" is-stale":""}`,role:"region","aria-label":"Live quote",children:[(0,Oe.jsxs)("div",{className:"hsk-live-card__header",children:[(0,Oe.jsxs)("div",{className:"hsk-live-card__status",children:[(0,Oe.jsx)("span",{className:`hsk-live-dot${t?" is-stale":""}`,"aria-hidden":"true"}),(0,Oe.jsx)("span",{className:"hsk-live-card__title",title:o,children:i})]}),(0,Oe.jsxs)("div",{className:"hsk-live-card__meta",children:[p&&(0,Oe.jsxs)("span",{className:"hsk-live-card__close",children:["Closes ",p]}),(0,Oe.jsx)("span",{className:"hsk-live-card__age",children:t?`Paused \xB7 ${(0,Me.describeAge)(a-e.at)}`:`Live \xB7 ${(0,Me.describeAge)(a-e.at)}`})]})]}),(0,Oe.jsx)("div",{className:"hsk-live-card__pills",children:n.map(u=>{let d=(0,Me.isFresh)(e,u.rawKey,a);return(0,Oe.jsxs)("div",{className:`hsk-live-pill${d?" is-changed":""}`,style:d?{animationDuration:`${Me.LIVE_FLASH_MS}ms`}:void 0,children:[(0,Oe.jsx)("span",{className:"hsk-live-pill__label",children:u.label}),(0,Oe.jsx)("span",{className:"hsk-live-pill__value",children:u.value})]},u.rawKey)})})]})}function pi({keys:e}){let a=new Set,t=(e??[]).filter(c=>a.has(c)?!1:(a.add(c),!0)),r=Vc(t);if(t.filter((c,n)=>r[n]).length===0)return null;let i=r.filter(c=>!!c),s=Date.now();return(0,Oe.jsx)("div",{className:"hsk-live-wrap",role:"group","aria-label":"Live market data",children:(0,Oe.jsx)("div",{className:"hsk-live-carousel",children:i.map(c=>(0,Oe.jsx)(Kc,{record:c,now:s},c.key))})})}var ia=require("react");var na=require("react/jsx-runtime");function ui(e){let a=e.match(/<\s*thinking\s*>/i);if(!a)return{thinking:"",content:e,isComplete:!0};let t=a.index??0,r=a[0].length,o=t+r,i=e.slice(0,t),s=e.slice(o),c=s.match(/<\/\s*thinking\s*>/i);if(!c)return{thinking:s,content:i,isComplete:!1};let n=c.index??0,l=c[0].length;return{thinking:s.slice(0,n),content:i+s.slice(n+l),isComplete:!0}}function mi({text:e,isComplete:a,seconds:t}){let r=Ot(),o=(0,ia.useRef)(Date.now()),[i,s]=(0,ia.useState)(()=>a?null:0),[c,n]=(0,ia.useState)(!a);(0,ia.useEffect)(()=>{if(a){i!==null&&(s(Math.max(1,Math.round((Date.now()-o.current)/1e3))),n(!1));return}n(!0);let u=setInterval(()=>{s(Math.round((Date.now()-o.current)/1e3))},1e3);return()=>clearInterval(u)},[a]);let l=t??i,m=a?l!=null?r("thoughtForSeconds",{duration:`${l}s`}):r("thoughtProcess"):`${r("thinking")}${i?` \xB7 ${i}s`:"\u2026"}`,p=!!e;return(0,na.jsxs)("div",{className:ae("hsk-cb-think",!a&&"hsk-cb-think--live"),children:[(0,na.jsxs)("button",{type:"button",className:ae("hsk-cb-think-head",!p&&"hsk-cb-think-head--static"),onClick:p?()=>n(u=>!u):void 0,"aria-expanded":p?c:void 0,children:[(0,na.jsx)("span",{children:m}),p&&(0,na.jsx)("span",{className:ae("hsk-cb-think-chevron",c&&"hsk-cb-think-chevron--open"),children:"\u25B6"})]}),p&&c&&(0,na.jsx)("div",{className:"hsk-cb-think-body",children:e})]})}var mt=require("react"),ki=require("@akropolys/sdk");var we=require("react/jsx-runtime");function Oc({src:e,alt:a,onImageClick:t}){let[r,o]=(0,mt.useState)(!1);return r?(0,we.jsx)("div",{style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--hsk-chat-source-bg, rgba(0,0,0,.04))",color:"var(--hsk-chat-muted, #888)"},children:(0,we.jsx)(ut,{})}):(0,we.jsx)("img",{src:e,alt:a??"",onError:()=>o(!0),onClick:t?i=>{i.stopPropagation(),t(e)}:void 0})}function bi({sources:e,defaultCurrency:a,onSelectSource:t,onImageClick:r,referencedIds:o=[],compact:i=!1}){let c=(0,ki.useAkropolysContext)()?.vertical==="property",n=(0,mt.useRef)(null),[l,m]=(0,mt.useState)(!1),[p,u]=(0,mt.useState)(!1),[d,b]=(0,mt.useState)(0),v=e.filter(f=>f.id&&o.includes(f.id)),y=(0,mt.useCallback)(()=>{let f=n.current;if(!f||v.length===0)return;let N=Math.abs(f.scrollLeft),T=f.scrollWidth-f.clientWidth;m(N>10),u(T>4&&N<T-12);let Q=Math.round(N/190);b(Math.min(Math.max(0,Q),v.length-1))},[v.length]);(0,mt.useEffect)(()=>{y();let f=n.current;if(!f)return;let N=new ResizeObserver(y);return N.observe(f),f.addEventListener("scroll",y,{passive:!0}),()=>{N.disconnect(),f.removeEventListener("scroll",y)}},[y,e]);let w=f=>{let N=n.current;if(!N)return;let T=getComputedStyle(N).direction==="rtl";N.scrollBy({left:190*f*(T?-1:1),behavior:"smooth"})},C=()=>w(1),L=()=>w(-1);return v.length===0?null:(0,we.jsxs)("div",{className:ae("hsk-cb-sources-wrap",i&&"hsk-cb-sources-wrap--compact"),children:[l&&(0,we.jsxs)(we.Fragment,{children:[(0,we.jsx)("div",{className:"hsk-cb-sources-fade-left"}),(0,we.jsx)("button",{className:"hsk-cb-sources-prev",onClick:L,"aria-label":"Previous",children:(0,we.jsx)(yr,{})})]}),(0,we.jsx)("div",{className:"hsk-cb-sources",ref:n,children:v.map((f,N)=>{let T=!!(f.id&&o.includes(f.id));return(0,we.jsxs)("div",{className:ae("hsk-cb-source",T&&"hsk-cb-source--referenced"),style:{animationDelay:`${N*50}ms`},onClick:()=>t?.(f),children:[f.image?(0,we.jsxs)("div",{className:"hsk-cb-src-imgwrap",style:{position:"relative"},children:[(0,we.jsx)(Oc,{src:f.image,alt:f.name,onImageClick:r}),c&&(0,we.jsx)("div",{style:{position:"absolute",top:"6px",right:"6px",background:"rgba(14, 14, 15, 0.75)",backdropFilter:"blur(4px)",borderRadius:"50%",width:"24px",height:"24px",display:"flex",alignItems:"center",justifyContent:"center",color:"#fbbf24",boxShadow:"0 2px 4px rgba(0,0,0,0.2)"},children:(0,we.jsx)(ut,{size:12})})]}):(0,we.jsx)("div",{className:"hsk-cb-src-imgwrap-empty",style:{position:"relative"},children:(0,we.jsx)(ut,{})}),(0,we.jsxs)("div",{className:"hsk-cb-src-info",children:[(0,we.jsx)("div",{className:"hsk-cb-src-name",children:f.name}),f.price&&(0,we.jsxs)("div",{className:"hsk-cb-src-price",children:[f.currency||a?`${f.currency||a} `:"$",parseFloat(String(f.price).replace(/[^0-9.]/g,"")||"0").toLocaleString()]})]})]},f.id??N)})}),p&&(0,we.jsxs)(we.Fragment,{children:[(0,we.jsx)("div",{className:"hsk-cb-sources-fade-right"}),(0,we.jsx)("button",{className:"hsk-cb-sources-next",onClick:C,"aria-label":"See more",children:(0,we.jsx)(fn,{})})]}),v.length>1&&(0,we.jsx)("div",{className:"hsk-cb-carousel-dots",children:v.map((f,N)=>(0,we.jsx)("div",{className:ae("hsk-cb-dot-item",N===d&&"hsk-cb-dot-item--active"),onClick:()=>{let T=n.current;if(T){let x=getComputedStyle(T).direction==="rtl";T.scrollTo({left:N*190*(x?-1:1),behavior:"smooth"})}}},N))})]})}var Xa=require("react/jsx-runtime");function fi({intent:e,sources:a,onSend:t,loading:r,defaultCurrency:o=""}){let i=Ot();if(!e)return null;let s=[],c=a.length>0?a.reduce((p,u)=>{let d=parseFloat(String(u.price??"").replace(/[^0-9.]/g,"")),b=parseFloat(String(p.price??"").replace(/[^0-9.]/g,""));return!isNaN(d)&&(isNaN(b)||d<b)?u:p},a[0]):null,n=a[0]?.name??"",l=a.slice(0,2).map(p=>p.name),m=()=>{let p=a.map(w=>parseFloat(String(w.price??"").replace(/[^0-9.]/g,""))).filter(w=>!isNaN(w)&&w>0);if(p.length===0)return null;let u=Math.max(...p),d=Math.pow(10,Math.floor(Math.log10(u))),b=Math.ceil(u/d)*d;return`${String(a.find(w=>w.price)?.price??"").replace(/[0-9.,\s]/g,"")||o} ${b.toLocaleString()}`.trim()};if(e==="search"&&a.length>0){if(l.length>=2&&s.push({emoji:"\u2696\uFE0F",label:i("pillCompareTop2"),query:i("pillCompareTop2Query",{a:l[0],b:l[1]})}),c?.name){let u=c.name.split(" ").slice(0,3).join(" ");s.push({emoji:"\u{1F4A1}",label:i("pillMoreOn",{name:u}),query:i("pillMoreOnQuery",{name:c.name})})}let p=m();p&&s.push({emoji:"\u{1F4B0}",label:i("pillUnder",{amount:p}),query:i("pillUnderQuery",{amount:p})})}else e==="compare"&&a.length>0?(n&&s.push({emoji:"\u{1F50D}",label:i("pillSimilarOptions"),query:i("pillSimilarOptionsQuery",{name:n})}),s.push({emoji:"\u{1F4A1}",label:i("pillWhichBest"),query:i("pillWhichBestQuery")})):e==="specs"&&a.length>0?n&&s.push({emoji:"\u{1F504}",label:i("pillFindAlternatives"),query:i("pillFindAlternativesQuery",{name:n})}):e==="general"&&(s.push({emoji:"\u{1F50D}",label:i("pillShowPopular"),query:i("pillShowPopularQuery")}),s.push({emoji:"\u{1F4A1}",label:i("pillRecommend"),query:i("pillRecommendQuery")}));return s.length===0?null:(0,Xa.jsx)("div",{className:"hsk-action-pills",children:s.map(p=>(0,Xa.jsxs)("button",{className:"hsk-action-pill",onClick:()=>t(p.query),disabled:r,children:[(0,Xa.jsx)("span",{className:"hsk-pill-emoji",children:p.emoji}),p.label]},p.query))})}var le=require("react/jsx-runtime"),vi=gi.default.memo(({content:e,streaming:a})=>(0,le.jsx)(le.Fragment,{children:ta(e,a)}),(e,a)=>e.content===a.content&&e.streaming===a.streaming);vi.displayName="MarkdownBlock";function yi({msg:e,idx:a,isLast:t,isLastUser:r,isRunEnd:o,runMid:i,runCont:s,isNarrow:c,loading:n,streaming:l,stopped:m,interrupted:p,sources:u,referencedIds:d,discussedSources:b,lastIntent:v,lastAction:y,defaultCurrency:w,vizState:C,setVizState:L,setLightboxSrc:f,setMarkupSrc:N,handleSend:T,handleSourceClick:x,t:Q,messageRef:S}){let $=e.role==="user",_=e.content;return(0,le.jsx)("div",{className:ae("hsk-cb-msg-group",i&&"hsk-cb-msg-group--run-mid",s&&"hsk-cb-msg-group--run-cont"),ref:S,children:$?(0,le.jsxs)("div",{className:`hsk-cb-user-msg${r?" hsk-sent":""}`,children:[e.images&&e.images.length>0&&(0,le.jsx)("div",{className:"hsk-cb-user-imgs","data-count":Math.min(e.images.length,4),children:e.images.slice(0,4).map((I,K)=>(0,le.jsxs)("button",{type:"button",className:"hsk-cb-user-img-cell",onClick:()=>f(I),children:[(0,le.jsx)("img",{src:I,alt:`attachment ${K+1}`,className:"hsk-cb-user-img-thumb"}),K===3&&e.images.length>4&&(0,le.jsxs)("span",{className:"hsk-cb-user-img-more",children:["+",e.images.length-3]})]},K))}),e.content&&(0,le.jsxs)("div",{className:ae("hsk-cb-user-bubble",o&&"hsk-cb-user-bubble--tail",e.spoken&&"hsk-cb-user-bubble--spoken"),children:[e.spoken&&(0,le.jsx)(va,{className:"hsk-cb-spoken-mark",size:10}),/^@kiku\b/i.test(e.content)?(0,le.jsxs)(le.Fragment,{children:[(0,le.jsx)("span",{className:"hsk-kiku-badge",children:"@kiku"}),e.content.replace(/^@kiku\s*/i,"")]}):e.content]}),r&&(0,le.jsx)("span",{className:"hsk-cb-sent-status",children:Q(m||p?"statusStopped":"statusSent")})]}):(0,le.jsx)("div",{className:ae("hsk-cb-ai-msg",c&&"hsk-cb-ai-msg--inline"),children:(0,le.jsxs)("div",{className:"hsk-cb-ai-body",children:[(()=>{let I=ui(_),K=e.thinking||I.thinking,E=I.content,F=/(?:^|\n+)(?:[>*_~`\s]*)(?:This is a calculation from live figures,?\s*not a guarantee\s*[—–-]\s*the market can move against it\.?)(?:[>*_~`\s]*)/gi,ee=F.test(E),z=ee?E.replace(F,"").trimEnd():E,B=e.thoughtForSeconds!=null||E.length>0||!(t&&(l||n));return(0,le.jsxs)(le.Fragment,{children:[!e.spoken&&(K||e.thoughtForSeconds!=null||t&&(l||n))&&(0,le.jsx)(mi,{text:K,isComplete:B,seconds:e.thoughtForSeconds}),z&&(0,le.jsx)("div",{className:"hsk-cb-ai-content",children:(0,le.jsx)(vi,{content:z,streaming:t&&l})}),ee&&(0,le.jsx)("div",{className:"hsk-cb-calc-disclaimer",children:Q("calcDisclaimer")})]})})(),e.visualizing&&(0,le.jsxs)("div",{className:"hsk-cb-viz hsk-cb-viz--loading",children:[(0,le.jsx)("span",{className:"hsk-cb-viz-spinner"}),(0,le.jsx)("span",{children:e.visualizingText||Q("vizWorking")})]}),e.visualization&&(0,le.jsxs)("div",{className:"hsk-cb-viz",children:[(0,le.jsxs)("div",{className:"hsk-cb-viz-imgwrap",children:[e.visualizationType==="video"||e.visualization.includes("/videos/")?(0,le.jsx)("video",{src:e.visualization,controls:!0,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,className:"hsk-markdown-video",style:{display:"block",maxHeight:"400px",objectFit:"contain",width:"100%"}}):(0,le.jsx)("img",{src:e.visualization,alt:"Product visualized in your photo",className:"hsk-markdown-img",style:C[e.visualization]==="err"?{display:"none"}:void 0,onLoad:()=>L(I=>({...I,[e.visualization]:"ok"})),onError:()=>L(I=>({...I,[e.visualization]:"err"}))}),C[e.visualization]==="err"&&(0,le.jsx)("div",{className:"hsk-cb-viz-broken",children:Q("vizUnavailable")}),t&&!l&&C[e.visualization]==="ok"&&e.visualizationType!=="video"&&!e.visualization.includes("/videos/")&&(0,le.jsxs)("button",{className:"hsk-cb-viz-mark",onClick:()=>N(e.visualization),children:[(0,le.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,le.jsx)("path",{d:"M12 20h9"}),(0,le.jsx)("path",{d:"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4Z"})]}),Q("vizMarkEdit")]})]}),(0,le.jsx)("div",{className:"hsk-cb-viz-disclaimer",children:e.visualizationType==="video"||e.visualization.includes("/videos/")?Q("vizDisclaimerVideo"):Q("vizDisclaimerImage")})]}),!$&&(e.knowledgeImages?.length??0)>0&&(0,le.jsx)("div",{className:"hsk-cb-kimgs",children:e.knowledgeImages.map(I=>(0,le.jsxs)("div",{className:"hsk-cb-kimg-group",children:[(0,le.jsx)("div",{className:"hsk-cb-kimg-grid",children:I.images.map((K,E)=>(0,le.jsx)("img",{src:K.url,alt:K.note||I.title||"Reference image",className:"hsk-cb-kimg",loading:"lazy",onClick:()=>f(K.url),onError:F=>{F.target.style.display="none"}},E))}),(I.title||I.images[0]?.note)&&(0,le.jsx)("div",{className:"hsk-cb-kimg-caption",children:I.title||I.images[0]?.note})]},I.entryId))}),!$&&(0,le.jsx)(pi,{keys:e.liveKeys}),!$&&(e.staleNotices?.length??0)>0&&(0,le.jsxs)("div",{className:"hsk-cb-stale",role:"status",children:[(0,le.jsx)("div",{className:"hsk-cb-stale-title",children:Q("staleTitle")}),e.staleNotices.map((I,K)=>(0,le.jsxs)("div",{className:"hsk-cb-stale-item",children:[I.state==="removed"?Q("staleRemoved",{title:I.title}):Q("staleUnavailable",{title:I.title}),I.reason&&(0,le.jsxs)("span",{className:"hsk-cb-stale-reason",children:[" ",I.reason]})]},K))]}),(()=>{let I=t?d:e.referencedIds??[],K=t?u:e.sources??[],E=t?v:e.intent,F=E==="compare"||E==="capture"||E==="capture_all"||E==="delete"||E==="view_history";return I.length>0&&!F&&(!t||y?.type!=="request_kiku_key")&&(0,le.jsx)(bi,{sources:K,defaultCurrency:w,onSelectSource:x,onImageClick:f,referencedIds:I,compact:!!e.visualization})})(),t&&!n&&!l&&y?.type==="open_memory"&&y.url&&(0,le.jsxs)("a",{className:"hsk-cb-memory-pill",href:String(y.url),target:"_blank",rel:"noopener noreferrer",children:[Q("openMemory"),(0,le.jsx)(kn,{})]}),t&&!n&&y?.url&&y.type!=="open_memory"&&(0,le.jsx)("div",{className:"hsk-action-pills",children:(0,le.jsxs)("a",{className:"hsk-action-pill",href:y.url,children:[String(y.type||"continue").replace(/_/g," ")," \u2192"]})}),t&&!n&&(0,le.jsx)(fi,{intent:v,sources:b,onSend:T,loading:n,defaultCurrency:w})]})})})}var ve=require("react/jsx-runtime");function xi({keyInput:e,setKeyInput:a,minting:t,handleUseExistingKey:r,handleCreateKey:o,t:i}){return(0,ve.jsxs)("div",{className:"hsk-cb-ai-msg",children:[(0,ve.jsx)("div",{className:"hsk-cb-ai-icon",style:{display:"flex",alignItems:"center"},children:(0,ve.jsx)(ut,{})}),(0,ve.jsx)("div",{className:"hsk-cb-ai-body",children:(0,ve.jsx)("div",{className:"hsk-cb-ai-text",children:(0,ve.jsxs)("div",{className:"hsk-cb-phone-form",children:[(0,ve.jsx)("label",{className:"hsk-cb-phone-label",children:i("keyPastePrompt")}),(0,ve.jsx)("input",{type:"text",className:"hsk-cb-phone-input",placeholder:i("keyPastePlaceholder"),value:e,onChange:s=>a(s.target.value),onKeyDown:s=>s.key==="Enter"&&r(),autoFocus:!0}),(0,ve.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,ve.jsx)("button",{className:"hsk-cb-phone-submit",onClick:r,disabled:!e.trim(),children:i("keyUseMine")}),(0,ve.jsx)("button",{className:"hsk-cb-phone-submit",onClick:o,disabled:t,children:i(t?"keyCreating":"keyCreateNew")})]})]})})})]})}function wi({mintedKey:e,mintedPub:a,copied:t,keyCountdown:r,onDismiss:o,copyValue:i,t:s}){return(0,ve.jsxs)("div",{className:"hsk-cb-ai-msg",children:[(0,ve.jsx)("div",{className:"hsk-cb-ai-icon",style:{display:"flex",alignItems:"center"},children:(0,ve.jsx)(ut,{})}),(0,ve.jsx)("div",{className:"hsk-cb-ai-body",children:(0,ve.jsx)("div",{className:"hsk-cb-ai-text",children:(0,ve.jsxs)("div",{style:{padding:"4px 0",display:"flex",flexDirection:"column",gap:12},children:[(0,ve.jsxs)("div",{children:[(0,ve.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:4},children:[(0,ve.jsx)("span",{style:{fontSize:12,fontWeight:600},children:s("keySecretTitle")}),(0,ve.jsxs)("button",{className:"hsk-cb-phone-submit",style:{padding:"2px 8px",fontSize:11,background:"transparent",border:0},onClick:o,children:[s("keyDismiss")," \u2715"]})]}),(0,ve.jsx)("code",{style:{display:"block",fontSize:13,fontWeight:700,marginBottom:8,wordBreak:"break-all"},children:e}),(0,ve.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,ve.jsx)("button",{className:"hsk-cb-phone-submit",style:{padding:"4px 10px",border:0},onClick:()=>i(e,"secret"),children:s(t==="secret"?"keyCopied":"keyCopySecret")}),(0,ve.jsx)("span",{style:{fontSize:11,opacity:.7,flex:"1 1 180px"},children:s("keySecretHint")})]})]}),a&&(0,ve.jsxs)("div",{children:[(0,ve.jsx)("div",{style:{fontSize:12,fontWeight:600,marginBottom:4},children:s("keyPublicTitle")}),(0,ve.jsx)("code",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:6,wordBreak:"break-all",opacity:.85},children:a}),(0,ve.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,ve.jsx)("button",{className:"hsk-cb-phone-submit",style:{padding:"4px 10px",border:0},onClick:()=>i(a,"pub"),children:s(t==="pub"?"keyCopied":"keyCopyId")}),(0,ve.jsx)("span",{style:{fontSize:11,opacity:.7,flex:"1 1 180px"},children:s("keyPublicHint")})]})]}),(0,ve.jsx)("div",{style:{fontSize:11,opacity:.6},children:s("keyAutoHide",{seconds:String(r)})})]})})})]})}var Pe=require("react/jsx-runtime");function Si({displayMessages:e,messageRefs:a,isNarrow:t,loading:r,streaming:o,sources:i,referencedIds:s,discussedSources:c,lastIntent:n,lastAction:l,defaultCurrency:m,stopped:p,interrupted:u,halted:d,haltedEmpty:b,error:v,errorCode:y,keyPhase:w,keyInput:C,setKeyInput:L,mintedKey:f,setMintedKey:N,mintedPub:T,setMintedPub:x,minting:Q,copied:S,keyCountdown:$,handleUseExistingKey:_,handleCreateKey:I,copyValue:K,queuedMessage:E,sendQueuedNow:F,setLightboxSrc:ee,setMarkupSrc:z,handleSend:B,handleSourceClick:ie,continueGenerating:re,t:h,bottomRef:P,vizState:q,setVizState:X,messages:Y}){return(0,Pe.jsxs)(Pe.Fragment,{children:[(()=>{let A=-1;for(let M=e.length-1;M>=0;M--)if(e[M]?.role==="user"){A=M;break}return e.map((M,Z)=>{let G=Z===e.length-1,g=M.role==="user",J=g&&Z===A,O=g&&e[Z+1]?.role!=="user",W=g&&!O,te=g&&e[Z-1]?.role==="user",oe=M.id||`${M.role}-${Z}`;return(0,Pe.jsx)(yi,{msg:M,idx:Z,isLast:G,isLastUser:J,isRunEnd:O,runMid:W,runCont:te,isNarrow:t,loading:r,streaming:o,stopped:p,interrupted:u,sources:i,referencedIds:s,discussedSources:c,lastIntent:n,lastAction:l,defaultCurrency:m,vizState:q,setVizState:X,setLightboxSrc:ee,setMarkupSrc:z,handleSend:B,handleSourceClick:ie,t:h,messageRef:de=>{a.current[Z]=de}},oe)})})(),d&&Y.length>0&&(0,Pe.jsxs)("div",{className:ae("hsk-cb-stopped",b&&"hsk-cb-stopped--empty"),children:[b&&(0,Pe.jsxs)("span",{className:"hsk-cb-stopped-dots","aria-hidden":"true",children:[(0,Pe.jsx)("i",{}),(0,Pe.jsx)("i",{}),(0,Pe.jsx)("i",{})]}),(0,Pe.jsx)("span",{className:"hsk-cb-stopped-label",children:h(p?"stoppedByYou":"stoppedInterrupted")}),(0,Pe.jsxs)("button",{className:"hsk-cb-continue",onClick:re,children:[(0,Pe.jsx)(bn,{}),h(Y[Y.length-1]?.role==="assistant"?"continueGenerating":"generateResponse")]})]}),v&&(0,Pe.jsx)("div",{className:"hsk-cb-error",children:pn({code:y??void 0,message:v},h)}),w==="prompt_key"&&(0,Pe.jsx)(xi,{keyInput:C,setKeyInput:L,minting:Q,handleUseExistingKey:_,handleCreateKey:I,t:h}),f&&(0,Pe.jsx)(wi,{mintedKey:f,mintedPub:T,copied:S,keyCountdown:$,onDismiss:()=>{N(null),x(null)},copyValue:K,t:h}),E&&(0,Pe.jsx)("div",{className:ae("hsk-cb-msg-group",e[e.length-1]?.role==="user"&&"hsk-cb-msg-group--run-cont"),children:(0,Pe.jsxs)("div",{className:"hsk-cb-user-msg",children:[(0,Pe.jsx)("div",{className:"hsk-cb-user-bubble hsk-cb-user-bubble--tail hsk-cb-user-bubble--queued",children:E.content}),(0,Pe.jsxs)("button",{type:"button",className:"hsk-cb-queued-status",onClick:F,children:[(0,Pe.jsx)("span",{className:"hsk-cb-queued-dot"}),h("queuedWaiting"),(0,Pe.jsx)("span",{className:"hsk-cb-queued-now",children:h("queuedSendNow")})]})]})}),(0,Pe.jsx)("div",{ref:P,style:{height:1}})]})}var kt=ft(require("react"));var j=require("react/jsx-runtime");function Ci({gooId:e,input:a,setInput:t,showKikuPicker:r,setShowKikuPicker:o,showAtPicker:i,setShowAtPicker:s,captureAllowed:c,discussedSources:n,defaultCurrency:l,handleSelectExtension:m,handleKikuCapture:p,handleKikuCaptureAll:u,handleKikuViewHistory:d,handleKikuDelete:b,attachments:v,removeAttachment:y,chromeLoading:w,imageInputRef:C,handleImageFiles:L,enableVision:f,enableVoice:N,canConverse:T,voiceMode:x,startVoice:Q,stopVoice:S,voiceBlocked:$,textareaRef:_,classNames:I={},handleInput:K,handleKeyDown:E,voice:F,voicePhase:ee,activePlaceholder:z,loading:B,streaming:ie,stop:re,handleSend:h,voiceError:P,setVoiceError:q,shopperLanguage:X,t:Y,rail:A}){let[M,Z]=kt.default.useState(0),[G,g]=kt.default.useState(!1);kt.default.useEffect(()=>{if(!P)return;let V=setTimeout(()=>{q?.("")},6e3);return()=>clearTimeout(V)},[P,q]),kt.default.useEffect(()=>{if(!G)return;let V=ce=>{ce.key==="Escape"&&g(!1)};return window.addEventListener("keydown",V),()=>window.removeEventListener("keydown",V)},[G]);let O=Math.max(wa(z||"Ask me anything\u2026").length-1,0)*Tr,[W,te]=(0,kt.useState)(!1),oe=(0,kt.useRef)(null),de=()=>{oe.current&&clearTimeout(oe.current),te(!0),oe.current=setTimeout(()=>{te(!1),oe.current=null},550)};return(0,kt.useEffect)(()=>()=>{oe.current&&clearTimeout(oe.current)},[]),(0,j.jsxs)("div",{className:"hsk-cb-input-wrap",children:[G&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("div",{className:"hsk-cb-toolsheet-scrim",onClick:()=>g(!1)}),(0,j.jsx)("div",{className:"hsk-cb-toolsheet-wrap",children:(0,j.jsxs)("div",{className:"hsk-cb-toolsheet",role:"menu",children:[f&&(0,j.jsxs)("button",{className:"hsk-cb-toolsheet-item",role:"menuitem",onClick:()=>{g(!1),C.current?.click()},disabled:B,children:[(0,j.jsx)(oo,{}),(0,j.jsx)("span",{children:Y("attachImage")})]}),N&&T&&(0,j.jsxs)("button",{className:"hsk-cb-toolsheet-item",role:"menuitem",onClick:()=>{g(!1),x==="converse"?S():Q("converse")},disabled:B||w||$,children:[(0,j.jsx)(no,{active:x==="converse"}),(0,j.jsx)("span",{children:Y(x==="converse"?"voiceModeExit":"voiceModeStart")})]})]})})]}),(0,j.jsxs)("div",{className:"hsk-cb-input-card",children:[(/^@kiku\b/i.test(a)||r||i)&&(0,j.jsxs)("div",{className:"hsk-cb-docked-header",children:[(0,j.jsx)("span",{className:"hsk-cb-docked-sub",children:Y("captureAndRemember")}),(0,j.jsx)("button",{type:"button",className:"hsk-cb-docked-close",onClick:()=>{t(V=>V.replace(/^@kiku\s*/i,"")),o(!1),s(!1)},"aria-label":"Close mode",children:"\xD7"})]}),(r||i)&&(0,j.jsxs)("div",{className:"hsk-cb-docked-options",onMouseDown:V=>V.preventDefault(),children:[i&&c&&(0,j.jsxs)("button",{type:"button",className:"hsk-cb-docked-option",onClick:()=>m("@kiku"),children:[(0,j.jsx)("span",{className:"hsk-cb-docked-option-icon",children:(0,j.jsx)(ut,{})}),(0,j.jsx)("span",{className:"hsk-cb-docked-option-title",children:"kiku"}),(0,j.jsx)("span",{className:"hsk-cb-docked-option-desc",children:"capture & remember"})]}),r&&c&&(0,j.jsxs)(j.Fragment,{children:[n.map((V,ce)=>(0,j.jsxs)("button",{type:"button",className:"hsk-cb-docked-option",onClick:()=>{p(V),o(!1)},children:[(0,j.jsx)("span",{className:"hsk-cb-docked-option-icon",children:V.image?(0,j.jsx)("img",{src:V.image,alt:""}):(0,j.jsx)(xr,{})}),(0,j.jsx)("span",{className:"hsk-cb-docked-option-title",children:V.name}),V.price&&(0,j.jsxs)("span",{className:"hsk-cb-docked-option-price",children:[V.currency??l," ",parseFloat(String(V.price).replace(/[^0-9.]/g,"")||"0").toLocaleString()]})]},V.id??ce)),n.length>1&&(0,j.jsxs)("button",{type:"button",className:"hsk-cb-docked-option",onClick:()=>{u(n),o(!1)},children:[(0,j.jsx)("span",{className:"hsk-cb-docked-option-icon",children:(0,j.jsx)(xr,{})}),(0,j.jsx)("span",{className:"hsk-cb-docked-option-title",children:Y("captureAll",{count:String(n.length)})})]}),n.length===0&&(0,j.jsxs)("button",{type:"button",className:"hsk-cb-docked-option",onClick:()=>{p({name:"current page",id:void 0}),o(!1)},children:[(0,j.jsx)("span",{className:"hsk-cb-docked-option-icon",children:(0,j.jsx)(xr,{})}),(0,j.jsx)("span",{className:"hsk-cb-docked-option-title",children:Y("captureCurrentPage")})]}),(0,j.jsxs)("button",{type:"button",className:"hsk-cb-docked-option",onClick:()=>{d(),o(!1)},children:[(0,j.jsx)("span",{className:"hsk-cb-docked-option-icon",children:(0,j.jsx)(gn,{})}),(0,j.jsx)("span",{className:"hsk-cb-docked-option-title",children:Y("whatHaveYouSaved")})]}),(0,j.jsxs)("button",{type:"button",className:"hsk-cb-docked-option",onClick:()=>{b(),o(!1)},children:[(0,j.jsx)("span",{className:"hsk-cb-docked-option-icon",children:(0,j.jsx)(vn,{})}),(0,j.jsx)("span",{className:"hsk-cb-docked-option-title",children:Y("deleteThis")})]})]})]}),v.length>0&&(0,j.jsx)("div",{className:"hsk-cb-img-strip",children:v.map((V,ce)=>(0,j.jsxs)("div",{className:"hsk-cb-img-thumb-wrap",children:[(0,j.jsx)("img",{src:V.data,alt:`attachment ${ce+1}`,className:"hsk-cb-img-thumb"}),(0,j.jsx)("button",{type:"button",className:"hsk-cb-img-thumb-remove",onClick:()=>y(ce),"aria-label":"Remove image",children:(0,j.jsx)(Pn,{size:10})})]},ce))}),(0,j.jsxs)("div",{className:ae("hsk-cb-input-box",w&&"hsk-cb-input-box--waiting"),"data-cascade":M%2?"b":"a","data-tools":G?"open":"closed",style:{"--hsk-text-sweep":`${O}ms`},children:[(0,j.jsx)("input",{ref:C,type:"file",accept:"image/*",className:"hsk-sr-only",onChange:V=>{L(V.target.files),V.target.value=""}}),(f||N&&T)&&(0,j.jsx)("button",{className:ae("hsk-cb-tools-toggle",G&&"hsk-cb-tools-toggle--open"),onClick:()=>g(V=>!V),disabled:B||w,"aria-label":G?"Close options":"More options","aria-expanded":G,children:(0,j.jsx)(yn,{})}),(0,j.jsxs)(j.Fragment,{children:[f&&(0,j.jsx)("button",{className:"hsk-cb-attach-btn",onClick:()=>C.current?.click(),disabled:B,"aria-label":"Attach image",title:"Attach image",children:(0,j.jsx)(oo,{})}),N&&T&&(0,j.jsx)("button",{className:ae("hsk-cb-voice-mode-btn",$&&"hsk-cb-voice-mode-btn--blocked"),onClick:()=>$?q?.(Y("errAccountRequired")):Q("converse"),disabled:B||w,"aria-label":"Voice conversation",title:"Voice conversation",children:(0,j.jsx)(no,{})})]}),(0,j.jsxs)("div",{className:"hsk-cb-field",children:[(0,j.jsx)("textarea",{ref:_,value:a,onChange:K,onKeyDown:E,rows:1,placeholder:"",className:ae("hsk-cb-textarea",I.input),"aria-label":z,disabled:B&&!ie}),(0,j.jsx)(li,{placeholder:z,visible:!a,staggerMs:Tr,replaySeed:M})]}),N&&(0,j.jsx)("button",{className:ae("hsk-cb-mic-btn",x==="dictate"&&"hsk-cb-mic-btn--active",$&&"hsk-cb-mic-btn--blocked"),onClick:()=>x==="off"?Q("dictate"):S(),disabled:B||w,"aria-label":x==="off"?"Start voice input":"Stop recording",title:x==="off"?"Voice input":"Stop",children:x==="off"?(0,j.jsx)(va,{}):(0,j.jsx)(wr,{})}),(B||ie)&&!W?(0,j.jsx)("button",{className:ae("hsk-cb-send","hsk-cb-send--stop",I.sendButton),onClick:re,"aria-label":"Stop generating",title:"Stop generating",children:(0,j.jsx)(mn,{})}):(0,j.jsxs)("button",{className:ae("hsk-cb-send",W&&"is-launching",I.sendButton),onClick:()=>{de(),h()},disabled:w||!a.trim()&&v.length===0,"aria-label":"Send message",children:[(0,j.jsx)("svg",{width:"0",height:"0","aria-hidden":"true",focusable:"false",style:{position:"absolute"},children:(0,j.jsx)("defs",{children:(0,j.jsxs)("filter",{id:e,children:[(0,j.jsx)("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"1.6",result:"blur"}),(0,j.jsx)("feColorMatrix",{in:"blur",type:"matrix",values:"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 16 -7",result:"goo"}),(0,j.jsx)("feBlend",{in:"SourceGraphic",in2:"goo"})]})})}),(0,j.jsx)("span",{className:"hsk-cb-send-sheath","aria-hidden":"true"}),(0,j.jsxs)("span",{className:"hsk-cb-send-stage",style:{filter:`url(#${e})`},children:[(0,j.jsx)("span",{className:"hsk-cb-send-seam","aria-hidden":"true"}),(0,j.jsx)("span",{className:"hsk-cb-send-kite",children:(0,j.jsx)(Sn,{})})]})]})]})]}),$?(0,j.jsxs)("div",{className:"hsk-cb-voice-error",role:"status",onClick:()=>q?.(""),children:[(0,j.jsx)("span",{children:Y("errAccountRequired")}),(0,j.jsx)("button",{type:"button",className:"hsk-cb-voice-error-dismiss",onClick:V=>{V.stopPropagation(),q?.("")},"aria-label":"Dismiss error",children:"\xD7"})]}):P&&(0,j.jsxs)("div",{className:"hsk-cb-voice-error",role:"status",onClick:()=>q?.(""),children:[(0,j.jsx)("span",{children:Y(P)}),(0,j.jsx)("button",{type:"button",className:"hsk-cb-voice-error-dismiss",onClick:V=>{V.stopPropagation(),q?.("")},"aria-label":"Dismiss error",children:"\xD7"})]}),(0,j.jsx)("div",{className:"hsk-cb-hint",children:X?Y("footerHint"):"kiku \xB7 searches the whole catalogue in real time"})]})}var ct=require("react"),Ti=require("react/jsx-runtime");function Mi(e,a){let t=e.match(/-?[\d.]+/g);return!t||t.length<3?a:[Number(t[0]),Number(t[1]),Number(t[2])]}function Wc(e,a,t){return[e[0]+(a[0]-e[0])*t,e[1]+(a[1]-e[1])*t,e[2]+(a[2]-e[2])*t]}function Sa(e,a){return`rgba(${e[0]|0}, ${e[1]|0}, ${e[2]|0}, ${a})`}var Et=24,Yc=.42;function Ni({phase:e,level:a,spectrum:t,bins:r,className:o}){let i=(0,ct.useRef)(null),s=(0,ct.useRef)(e),c=(0,ct.useRef)(a),n=(0,ct.useRef)(t),l=(0,ct.useRef)(r);return(0,ct.useEffect)(()=>{s.current=e},[e]),(0,ct.useEffect)(()=>{c.current=a},[a]),(0,ct.useEffect)(()=>{n.current=t},[t]),(0,ct.useEffect)(()=>{l.current=r},[r]),(0,ct.useEffect)(()=>{let m=i.current;if(!m)return;let p=m.getContext("2d");if(!p)return;let u=getComputedStyle(m),d=Mi(u.getPropertyValue("--hsk-primary")||"",[255,106,51]),b=Mi(u.getPropertyValue("--hsk-chat-text")||"",[31,31,31]),v=0,y=0,w=0,C=()=>{let B=Math.min(window.devicePixelRatio||1,3),ie=m.getBoundingClientRect();y=Math.max(1,ie.width),w=Math.max(1,ie.height),m.width=Math.round(y*B),m.height=Math.round(w*B),p.setTransform(B,0,0,B,0,0)};C();let L=typeof ResizeObserver<"u"?new ResizeObserver(C):null;L?.observe(m),window.addEventListener("resize",C);let f=window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches??!1,N=new Float32Array(Et),T=[],x=null,Q=-1,S=null,$=0,_=0,I=performance.now(),K=(B,ie,re,h)=>B+(ie-B)*(ie>B?re:h),E=()=>{let B=n.current,ie=l.current?.()??0;if(!B||!ie||((!S||S.length!==ie)&&(S=new Uint8Array(ie)),!B(S)))return!1;let h=Math.max(Et,Math.floor(ie*Yc))/Et;for(let P=0;P<Et;P++){let q=Math.floor(P*h),X=Math.max(q+1,Math.floor((P+1)*h)),Y=0;for(let M=q;M<X;M++)Y+=S[M];let A=Y/(X-q)/255;N[P]=K(N[P],A,f?.2:.55,f?.06:.14)}return!0},F=(B,ie)=>{for(let re=0;re<Et;re++){let h=re/(Et-1),P=Math.pow(1-h,1.6)*(.75+.25*Math.sin(B*3.1+re*.7));N[re]=K(N[re],P*ie,.3,.12)}},ee=B=>{let ie=Math.min(Et-1,Math.max(0,B*(Et-1))),re=Math.floor(ie),h=ie-re,P=N[re],q=N[Math.min(Et-1,re+1)];return P+(q-P)*h*h*(3-2*h)},z=B=>{v=requestAnimationFrame(z);let ie=(B-I)/1e3,re=s.current,h=Math.min(1,c.current());$=K($,Math.max(re==="speaking"?.42:re==="listening"?.3:re==="thinking"?.28:.12,h),f?.1:.5,f?.05:.11),E()||F(ie,Math.max(.25,$)),p.clearRect(0,0,y,w);let q=w/2;_=re==="thinking"?(_+.012)%1.6:0;let X=3;if(Q!==y){T=[];for(let M=0;M<X;M++){let Z=M/(X-1||1),G=Wc(d,b,Z*.5),g=p.createLinearGradient(0,0,y,0);g.addColorStop(0,Sa(G,0)),g.addColorStop(.5,Sa(G,.9-Z*.35)),g.addColorStop(1,Sa(G,0)),T.push(g)}x=p.createLinearGradient(0,0,y,0),x.addColorStop(0,Sa(d,0)),x.addColorStop(.5,Sa(d,.14)),x.addColorStop(1,Sa(d,0)),Q=y}let Y=w*.32,A=Math.max(4,y/130);for(let M=0;M<X;M++){let Z=M/(X-1||1),G=M*.055,g=1-Z*.22;p.beginPath();let J=0,O=q;for(let te=0;te<=y;te+=A){let oe=te/y,de=Math.pow(Math.sin(Math.PI*oe),.85),V=re==="thinking"?Math.exp(-Math.pow((oe-(_-.3))*4.5,2)):1,ce=ee(Math.abs(oe-.5)*2),Ne=ie-G,We=Math.sin(oe*Math.PI*2*2.1+Ne*7.4)*.66+Math.sin(oe*Math.PI*2*3.7-Ne*5.6)*.26+Math.sin(oe*Math.PI*2*5.9+Ne*9.1)*.08,De=q+de*V*g*Y*$*(.6+ce*1.1)*We+Math.sin(oe*Math.PI*2*.6+(ie-G)*2.2)*de*w*.01;te===0?p.moveTo(te,De):p.quadraticCurveTo(J,O,(J+te)/2,(O+De)/2),J=te,O=De}p.quadraticCurveTo(J,O,y,O),p.lineCap="round",p.lineJoin="round";let W=(M===0?3:1.6)*(1+$*.6);M===0&&(p.strokeStyle=x,p.lineWidth=W*5,p.stroke()),p.strokeStyle=T[M],p.lineWidth=W,p.stroke()}};return v=requestAnimationFrame(z),()=>{cancelAnimationFrame(v),L?.disconnect(),window.removeEventListener("resize",C)}},[]),(0,Ti.jsx)("canvas",{ref:i,className:o,"aria-hidden":"true"})}var ye=require("react/jsx-runtime");function Ri({siteId:e,themeAttr:a,stopVoice:t,chooseVoice:r,liveVoiceName:o,voiceSecondsLeft:i,voiceConnecting:s,voicePhase:c,live:n,voiceMuted:l,setVoiceMuted:m,shownSources:p,onSelectSource:u,defaultCurrency:d,voiceError:b,t:v}){return(0,ye.jsxs)("div",{className:"hsk-voice-overlay",role:"dialog","aria-label":v("voiceModeStart"),children:[(0,ye.jsx)(Cr,{seed:e,theme:a}),(0,ye.jsx)("button",{className:"hsk-voice-exit",onClick:t,"aria-label":v("voiceModeExit"),title:v("voiceModeExit"),children:(0,ye.jsx)(vr,{})}),(0,ye.jsx)("div",{className:"hsk-voice-picker",role:"radiogroup","aria-label":v("voicePickerLabel"),children:gr.map((y,w)=>(0,ye.jsx)("button",{type:"button",role:"radio","aria-checked":o===y.name,className:ae("hsk-voice-pill",o===y.name&&"hsk-voice-pill--on"),style:{animationDelay:`${w*60}ms`},onClick:()=>r(y.name),"aria-label":`${y.label}, ${y.gender}`,children:y.label},y.name))}),i!==null&&(0,ye.jsxs)("div",{className:ae("hsk-voice-allowance",i<=5&&"hsk-voice-allowance--low"),role:"timer","aria-live":"off",children:[Math.max(0,Math.ceil(i)),"s"]}),(0,ye.jsx)("div",{className:ae("hsk-voice-stage",s&&"hsk-voice-stage--connecting"),children:(0,ye.jsx)(Ni,{className:"hsk-voice-canvas",phase:c,level:n.micLevel,spectrum:n.micSpectrum,bins:n.spectrumBins})}),s?(0,ye.jsxs)("div",{className:"hsk-voice-connecting",role:"status",children:[(0,ye.jsx)("span",{className:"hsk-voice-connecting-dot"}),(0,ye.jsx)("span",{children:v("voiceConnecting")})]}):(0,ye.jsxs)("div",{className:"hsk-voice-caption","aria-live":"polite",children:[(0,ye.jsx)("span",{className:ae("hsk-voice-phase",`hsk-voice-phase--${c}`),children:v(l?"voiceMuted":c==="speaking"?"voicePhaseSpeaking":c==="thinking"?"voicePhaseThinking":"voicePhaseListening")}),l&&(0,ye.jsx)("span",{className:"hsk-voice-heard",children:v("voiceMutedHint")}),!l&&c==="listening"&&(0,ye.jsx)("span",{className:"hsk-voice-hint-sub",children:v("voiceHint")})]}),p.length>0&&(0,ye.jsx)("div",{className:"hsk-voice-items",children:p.slice(0,4).map((y,w)=>(0,ye.jsxs)("button",{type:"button",className:"hsk-voice-item",style:{animationDelay:`${w*70}ms`},onClick:()=>u?.(y),children:[y.image?(0,ye.jsx)("img",{src:y.image,alt:"",className:"hsk-voice-item-img",loading:"lazy"}):(0,ye.jsx)("span",{className:"hsk-voice-item-img hsk-voice-item-img--empty",children:(0,ye.jsx)(ut,{})}),(0,ye.jsx)("span",{className:"hsk-voice-item-name",children:y.name}),y.price&&(0,ye.jsxs)("span",{className:"hsk-voice-item-price",children:[y.currency??d," ",parseFloat(String(y.price).replace(/[^0-9.]/g,"")||"0").toLocaleString()]})]},y.id??w))}),b&&(0,ye.jsx)("div",{className:"hsk-voice-error",children:v(b)}),(0,ye.jsx)("div",{className:"hsk-voice-controls",children:(0,ye.jsx)("button",{className:ae("hsk-voice-control",l&&"hsk-voice-control--muted"),onClick:()=>m(y=>!y),"aria-label":v(l?"voicePhaseListening":"voiceModeExit"),title:v(l?"voicePhaseListening":"voiceModeExit"),children:(0,ye.jsx)("span",{className:"hsk-voice-control-icon",children:l?(0,ye.jsx)(wr,{}):(0,ye.jsx)(va,{})},l?"off":"on")})})]})}var Ca=require("react/jsx-runtime");function zi({src:e,onClose:a}){return e?(0,Ca.jsxs)("div",{className:"hsk-lightbox",onClick:a,children:[(0,Ca.jsx)("button",{className:"hsk-lightbox-close",onClick:a,"aria-label":"Close image",children:(0,Ca.jsx)(vr,{})}),(0,Ca.jsx)("img",{src:e,alt:"",className:"hsk-lightbox-img",onClick:t=>t.stopPropagation()})]}):null}var Ja=require("react");var Gt=require("react/jsx-runtime");function Pi({items:e,activeIdx:a,progress:t,onJump:r,side:o="right"}){let i=Ot(),s=(0,Ja.useRef)([]),c=(0,Ja.useRef)(null),n=0;for(let l=0;l<e.length;l++)e[l].idx<=a&&(n=l);return(0,Ja.useEffect)(()=>{let l=s.current[n],m=c.current;!l||!m||(m.style.transform=`translateY(${l.offsetTop+l.offsetHeight/2}px)`)},[n,e.length]),e.length<2?null:(0,Gt.jsx)("nav",{className:ae("hsk-cb-timeline",o==="left"?"hsk-cb-timeline--left":"hsk-cb-timeline--right"),"aria-label":i("timelineLabel"),children:(0,Gt.jsxs)("div",{className:"hsk-cb-timeline-track",style:{"--hsk-tl-progress":t},children:[(0,Gt.jsx)("span",{className:"hsk-cb-tl-cursor",ref:c,"aria-hidden":"true"}),e.map((l,m)=>(0,Gt.jsxs)("button",{ref:p=>{s.current[m]=p},type:"button",className:ae("hsk-cb-tl-item",m===n&&"hsk-cb-tl-item--on"),style:{"--hsk-tl-d":Math.min(Math.abs(m-n),4)},onClick:()=>r(l.idx),title:l.text,children:[(0,Gt.jsx)("span",{className:"hsk-cb-tl-dot"}),(0,Gt.jsx)("span",{className:"hsk-cb-tl-label",children:l.text})]},l.idx))]})})}var Se=require("react/jsx-runtime");function Mo({title:e="kiku",placeholder:a="Ask me anything\u2026",backdropColor:t,backdropBlur:r,onClose:o,onSelectSource:i,defaultCurrency:s="",chips:c=Ka,theme:n,classNames:l={},enableVoice:m=!1,voiceLang:p,enableVision:u=!1,visionCategoryHint:d,enableAudioResponse:b=!0,ttsVoice:v="Puck",autoSpeakResponses:y=!0,origin:w}){let C=(0,Li.useAkropolysContext)(),{messages:L,sources:f,loading:N,streaming:T,error:x,errorCode:Q,lastAction:S,lastIntent:$,allowedActions:_,send:I,queuedMessage:K,sendQueuedNow:E,appendSpokenExchange:F,stop:ee,stopped:z,interrupted:B,continueGenerating:ie,reset:re,referencedIds:h}=(0,Rr.useKiku)(),[P,q]=(0,se.useState)(()=>{try{return C.getShopperName?.()??""}catch{return""}}),[X,Y]=(0,se.useState)(()=>{try{return C.getShopperLanguage?.()??""}catch{return""}}),[A,M]=(0,se.useState)(()=>{try{return C.getEntityLanguageMode?.()??""}catch{return""}}),[Z,G]=(0,se.useState)(!1),{chromeReady:g,isRTL:J,speechLang:O,scriptFont:W,fontStack:te,isNonLatin:oe,hostFontCovers:de,t:V,tNode:ce}=On({shopperLanguage:X,theme:n}),Ne=se.default.useMemo(()=>{let R=f.filter(_e=>_e.id&&h.includes(_e.id)),ne=[...L].reverse().find(_e=>_e.role==="assistant")?.content??"";if(!ne)return R;let ue=new Set(R.map(_e=>_e.id)),$e=ne.toLowerCase().replace(/\s+/g," "),je=_e=>{let Bt=String(_e??"").toLowerCase().replace(/\s+/g," ").trim(),Ht=Bt.split(" "),Zt=[Bt];return Ht.length>3&&Zt.push(Ht.slice(0,3).join(" ")),Ht.length>4&&Zt.push(Ht.slice(0,4).join(" ")),Zt.filter(sr=>sr.length>=5)},zt=f.filter(_e=>_e.id&&!ue.has(_e.id)&&je(_e.name).some(Bt=>$e.includes(Bt)));return[...R,...zt]},[f,h,L]),We=_===null||_.includes("capture"),[De,Fe]=(0,se.useState)(""),[Qt,Je]=(0,se.useState)(!1),[Mt,Re]=(0,se.useState)(!1),[nt,lt]=(0,se.useState)([]),_t=(0,se.useRef)(null),[Ta,Za]=(0,se.useState)({}),[Xt,Jt]=(0,se.useState)(null),[er,la]=(0,se.useState)(null),[da,me]=(0,se.useState)(()=>{if(typeof window>"u")return!1;try{return localStorage.getItem("akropolys_terms_agreed")==="true"}catch{return!1}}),Ye=L.length===0,at=Ye&&!X,et=Ye&&!!X&&!P,Ge=Ye&&!!X&&!!P&&!A,it=Ye&&!!X&&!!P&&!!A&&!da,Nt=at||et||Ge||it,dt=se.default.useMemo(()=>L.some(R=>R.liveKeys?.length>0),[L]);(0,se.useEffect)(()=>{if(dt)return(0,Rr.subscribeLiveStream)({client:C})},[dt,C]);let[Be,rt]=(0,se.useState)(!1);(0,se.useEffect)(()=>{let R=window.matchMedia?.("(max-width: 768px)");if(!R)return;let ne=()=>rt(R.matches);return ne(),R.addEventListener?.("change",ne),()=>R.removeEventListener?.("change",ne)},[]);let Ae=R=>{let ne=R.trim();if(!ne){try{C.setShopperLanguage?.("")}catch{}Y("");return}try{C.setShopperLanguage?.(ne)}catch{}Y(ne),G(!1)},Tt=R=>{try{C.setEntityLanguageMode?.(R)}catch{}M(R),da&&G(!0)},ha=()=>{try{localStorage.setItem("akropolys_terms_agreed","true")}catch{}me(!0),G(!0)},qt=e==="kiku"&&V("nameStepTitle")?"kiku":e,tr=at?V("langPlaceholder"):et?V("namePlaceholder"):Ge?V("entityLangPlaceholder"):it?V("termsPlaceholder"):a==="Ask me anything\u2026"?V("defaultPlaceholder"):a,Lr=!c||c===Ka?[]:Array.isArray(c)?c:[],ar=at?"curious":et?"welcoming":Ge?"guiding":it?"focused":"happy",[Ut,Ra]=(0,se.useState)(()=>{if(so(n))return n;if(typeof window<"u"){let R=localStorage.getItem("akropolys_theme");return so(R)?R:window.matchMedia?.("(prefers-color-scheme: light)").matches?Ln:io}return io}),za=(R,ne=!1)=>{Ra(R),ne&&(nr(!1),Br(!1));try{localStorage.setItem("akropolys_theme",R)}catch{}},{vars:Pa}=ka(n),La=Ut;br(n);let Aa=(0,se.useRef)(()=>{}),bt=async(R,ne,ue,$e)=>{let je=(R??De).trim();if(!je||!g||K)return;if(et){let _e=hn(je)||je.slice(0,40);try{C.setShopperName?.(_e)}catch{}q(_e),Fe("");return}if(at){Ae(je),Fe("");return}if(Ge){Fe("");return}Je(!1),Re(!1),Fe("");let zt=ne??nt;lt([]),await I(je,je,zt.length>0?zt:void 0,ue,$e)},Ia=(0,se.useCallback)(async()=>{let R=[...L].reverse().find(ne=>ne.role==="user");R&&await bt(R.content)},[L]),{keyInput:rr,setKeyInput:or,keyPhase:fe,setKeyPhase:Le,mintedKey:Ce,setMintedKey:ht,mintedPub:He,setMintedPub:tt,copied:Ea,keyCountdown:Ar,minting:pa,copyValue:Rt,handleUseExistingKey:Ir,handleCreateKey:Er}=Gn(S,Ia),Dr=(0,se.useCallback)(()=>{if(typeof window>"u")return"N/A";try{let R=sessionStorage.getItem("akropolys_kiku_pub")||sessionStorage.getItem("kiku_pub");if(R)return R;let ne=localStorage.getItem("akropolys_kiku_pub")||localStorage.getItem("kiku_pub")||localStorage.getItem("kiku_id");if(ne)return ne;let ue=document.cookie.match(/(?:^|;\s*)(?:akropolys_kiku_pub|kiku_pub|kiku_id)=([^;]+)/);if(ue)return decodeURIComponent(ue[1])}catch{}return"N/A"},[]),Da=He??C?.getKikuPub?.()??Dr(),{handleKikuCapture:Fr,handleKikuCaptureAll:_r,handleKikuViewHistory:Ui,handleKikuDelete:Bi}=Qn({attachments:nt,setAttachments:lt,setInput:Fe,send:I,defaultCurrency:s,t:V}),{voiceMode:zo,voicePhase:Po,voiceConnecting:Hi,voiceError:qr,setVoiceError:Lo,voiceMuted:$i,setVoiceMuted:ji,voiceSecondsLeft:Vi,voiceBlocked:Ki,liveVoiceName:Oi,chooseVoice:Wi,canConverse:Yi,startVoice:Gi,stopVoice:Ao,voice:Qi,live:Ur}=ei({voiceLang:p,speechLang:O,shopperLanguage:X,ttsVoice:v,handleSendUtterance:R=>Aa.current(R),appendSpokenExchange:F}),Io=(0,se.useRef)(null),[ua,nr]=(0,se.useState)(!1),[Eo,Br]=(0,se.useState)(!1),Fa=(0,se.useRef)(null),ir=(0,se.useRef)(null),Hr=(0,se.useRef)(null),Do=(0,se.useRef)([]),_a=(0,se.useRef)(null),Xi=(0,se.useRef)(null),qa=(0,se.useRef)(null),Ji=`hsk-goo-${(0,se.useId)()}`,Fo=(0,se.useCallback)(()=>{Fa.current||(Br(!0),Fa.current=setTimeout(()=>{nr(!1),Br(!1),Fa.current=null},200))},[]);(0,se.useEffect)(()=>()=>{Fa.current&&clearTimeout(Fa.current)},[]),(0,se.useEffect)(()=>{if(!ua)return;let R=ne=>{let ue=ne.composedPath?ne.composedPath():[],$e=ir.current&&(ue.includes(ir.current)||ir.current.contains(ne.target)),je=Hr.current&&(ue.includes(Hr.current)||Hr.current.contains(ne.target)),zt=ne.target,_e=zt?.closest?.(".hsk-cb-topbar-mark"),Bt=zt?.closest?.(".hsk-cb-topbar-ooze-menu")||ue.some(Ht=>Ht?.classList?.contains?.("hsk-cb-topbar-ooze-menu"));$e||je||_e||Bt||Fo()};return document.addEventListener("mousedown",R),document.addEventListener("touchstart",R,{passive:!0}),()=>{document.removeEventListener("mousedown",R),document.removeEventListener("touchstart",R)}},[ua]);let{msgsContainerRef:_o,lastExternalScrollRef:Zi,showJumpToBottom:es,scrollProgress:ts,activeMsgIdx:as,unreadBelow:rs,jumpToMessage:os,jumpToBottom:ns}=Wn({messages:L,loading:N,messageRefs:Do});An({panel:(0,se.useCallback)(()=>Io.current,[]),scroller:(0,se.useCallback)(()=>_o.current,[]),onDismiss:o,quiescent:(0,se.useCallback)(()=>performance.now()-Zi.current>90,[])}),(0,se.useEffect)(()=>{let R=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=R}},[]),(0,se.useEffect)(()=>{let R=window.visualViewport;if(!R)return;let ne=document.documentElement,ue=()=>{ne.style.setProperty("--hsk-vvh",`${R.height}px`)};return ue(),R.addEventListener("resize",ue),R.addEventListener("scroll",ue),()=>{R.removeEventListener("resize",ue),R.removeEventListener("scroll",ue),ne.style.removeProperty("--hsk-vvh")}},[]),(0,se.useEffect)(()=>{let R=ne=>{if(ne.key==="Escape"){if(Xt){Jt(null);return}o()}};return document.addEventListener("keydown",R),()=>document.removeEventListener("keydown",R)},[Xt,o]);let is=(0,se.useCallback)(()=>{re(),Le("idle")},[re,Le]),ss=R=>{i?.(R);let ne=[...L].reverse().find($e=>$e.role==="assistant");if(ne&&ne.content.trim().endsWith("?")){I(V("cardClickAnswer",{name:R.name}));return}let ue=R.price?` (${R.currency??s} ${R.price})`:"";I(V("cardClickQuery",{name:R.name,price:ue}))},cs=R=>{Fe(R+" "),Re(!1),Je(!0),_a.current&&_a.current.focus()},ls=R=>{if(R.key==="Escape"&&Qt){R.preventDefault(),Je(!1);return}if(R.key==="Escape"&&Mt){R.preventDefault(),Re(!1);return}R.key==="Enter"&&!R.shiftKey&&!R.nativeEvent.isComposing&&(R.preventDefault(),bt())},$r=(0,se.useRef)(28),qo=(0,se.useRef)(280),jr=(0,se.useRef)(null),ds=(R,ne)=>{try{!jr.current&&typeof document<"u"&&(jr.current=document.createElement("canvas"));let ue=jr.current?.getContext("2d");return ue?(ue.font=ne,ue.measureText(R).width):R.length*8.5}catch{return R.length*8.5}},hs=R=>{let ne=R.closest(".hsk-cb-input-box");if(!ne)return;let ue=R.value;!(ne.dataset.expanded==="true")&&R.clientWidth>50&&(qo.current=R.clientWidth);let je=window.getComputedStyle(R),zt=je.font||`${je.fontSize||"16px"} ${je.fontFamily||"Geist, sans-serif"}`,_e=ds(ue,zt),Bt=Math.max(120,qo.current-14),Ht=ue.includes(`
45
+ `),Zt=!!(ue&&(Ht||_e>Bt));if(ne.dataset.expanded!==(Zt?"true":"false")&&(ne.dataset.expanded=Zt?"true":"false"),!ue){$r.current=28,R.style.height="";return}if(!Zt){$r.current=28,R.style.height="";return}R.style.height="auto";let sr=Math.max(28,Math.min(R.scrollHeight,140));$r.current=sr,R.style.height=`${sr}px`};(0,se.useEffect)(()=>{_a.current&&hs(_a.current)},[De]);let ps=R=>{let ne=R.target.value;Fe(ne),qr&&Lo("");let ue=ne.trim();Re(ue==="@"),Je(/^@kiku\s*$/i.test(ue))};(0,se.useEffect)(()=>{Aa.current=R=>{bt(R)}});let us=async R=>{if(!R||R.length===0)return;let ne=Array.from(R);for(let ue of ne)if(ue.type.startsWith("image/"))try{let $e=await pr(ue);lt(je=>[...je,{type:"image",data:$e}])}catch{}},ms=R=>{lt(ne=>ne.filter((ue,$e)=>$e!==R))},ks=(Ur.sources?.length??0)>0?Ur.sources:Ne,bs=t&&(t.includes("rgba")||t.includes("hsla")||t==="transparent"),fs=r||bs?{backdropFilter:`blur(${typeof r=="number"?`${r}px`:r||"20px"})`,WebkitBackdropFilter:`blur(${typeof r=="number"?`${r}px`:r||"20px"})`}:{},Uo=(z||B)&&!N&&!T,ma=se.default.useMemo(()=>{let R=N||T;return L.filter((ne,ue)=>ne.role!=="assistant"||ue===L.length-1&&R?!0:!!ne.content||!!ne.visualization||ne.visualizing||(ne.knowledgeImages?.length??0)>0||(ne.referencedIds?.length??0)>0)},[L,N,T]),gs=se.default.useMemo(()=>ma.map((R,ne)=>({m:R,idx:ne})).filter(({m:R})=>R.role==="user"&&!!R.content.trim()).map(({m:R,idx:ne})=>{let ue=R.content.replace(/^@kiku\s*/i,"").replace(/\s+/g," ").trim();return{idx:ne,text:ue.length>30?ue.slice(0,29).trimEnd()+"\u2026":ue}}),[ma]),vs=Uo&&ma[ma.length-1]?.role!=="assistant",Bo=(0,se.useRef)(Date.now());return(0,se.useEffect)(()=>{Bo.current=Date.now()},[]),(0,Se.jsx)(ao.Provider,{value:V,children:(0,Se.jsx)("div",{ref:qa,className:ae("hsk-cb-overlay",w&&"hsk-cb-overlay--grows",l.overlay),onPointerDown:R=>{R.target===R.currentTarget&&(qa.current._ptrDown=!0)},onClick:R=>{R.target===R.currentTarget&&qa.current?._ptrDown&&Date.now()-Bo.current>200&&o(),qa.current&&(qa.current._ptrDown=!1)},"data-hsk-theme":La,style:{...fs,...t?{background:t}:{},...w?{"--hsk-ox":`${w.x}px`,"--hsk-oy":`${w.y}px`,"--hsk-or":`${Math.ceil(w.r)}px`,"--hsk-bt":`${Math.round(w.top??w.y)}px`,"--hsk-bl":`${Math.round(w.left??w.x)}px`,"--hsk-bw":`${Math.round(w.width??0)}px`,"--hsk-bh":`${Math.round(w.height??0)}px`,"--hsk-bbr":`${Math.round(w.borderRadius??12)}px`}:{},...Pa},children:(0,Se.jsxs)("div",{ref:Io,className:ae("hsk-cb-panel",l.panel),dir:J?"rtl":"ltr","data-script":oe?"nonlatin":"latin","data-host-font":de?"covers":"gap","data-nastaliq":W?.family==="Noto Nastaliq Urdu"||X?.toLowerCase()==="urdu"||X?.toLowerCase()==="ur"||X==="\u0627\u0631\u062F\u0648"?"true":void 0,style:te?{"--hsk-font":te}:void 0,onClick:R=>{R.stopPropagation();let ne=R.target;if(ne.tagName==="IMG"&&(ne.classList.contains("hsk-markdown-img")||ne.classList.contains("hsk-cb-user-img-thumb"))){let ue=ne.src;ue&&Jt(ue)}},children:[(0,Se.jsx)(zi,{src:Xt,onClose:()=>Jt(null)}),er&&(0,Se.jsx)("div",{className:"hsk-markup-overlay",children:(0,Se.jsx)(qn,{src:er,t:V,onCancel:()=>la(null),onSend:(R,ne,ue,$e)=>{la(null),bt(ne||V("markupApplyMarks"),[{type:"image",data:R,annotated:!0,marks:ue,instructed:!!ne,preview:$e}])}})}),(0,Se.jsxs)("div",{className:"hsk-cb-main",children:[(0,Se.jsx)(Cr,{seed:C?.api?.siteId??"",theme:La,dir:J?"rtl":"ltr"}),(0,Se.jsx)(ii,{title:qt,hasMessages:L.length>0,avatarState:T?"speaking":N?"thinking":"idle",unread:rs,awayFromBottom:es,themeMenuOpen:ua,themeMenuClosing:Eo,isNarrow:Be,currentTheme:Ut,onJumpToLatest:ns,onReset:is,onClose:o,onToggleThemeMenu:()=>ua?Fo():nr(!0),onSelectTheme:R=>{za(R,!0)}}),(0,Se.jsx)("div",{className:"hsk-cb-msgs",ref:_o,children:ma.length===0?(0,Se.jsx)(hi,{inOnboarding:Nt,justCompleted:Z,onboardingMood:ar,awaitingLang:at,awaitingName:et,awaitingEntityLang:Ge,awaitingConsent:it,termsAgreed:da,shopperLanguage:X,shopperName:P,entityLangPref:A,chromeReady:g,activeChips:Lr,t:V,tNode:ce,chooseLanguage:Ae,chooseEntityLang:Tt,agreeTerms:ha,handleSend:bt}):(0,Se.jsx)(Si,{displayMessages:ma,messageRefs:Do,isNarrow:Be,loading:N,streaming:T,sources:f,referencedIds:h,discussedSources:Ne,lastIntent:$,lastAction:S,defaultCurrency:s,stopped:z,interrupted:B,halted:Uo,haltedEmpty:vs,error:x,errorCode:Q,keyPhase:fe,keyInput:rr,setKeyInput:or,mintedKey:Ce,setMintedKey:ht,mintedPub:He,setMintedPub:tt,minting:pa,copied:Ea,keyCountdown:Ar,handleUseExistingKey:Ir,handleCreateKey:Er,copyValue:Rt,queuedMessage:K,sendQueuedNow:E,setLightboxSrc:Jt,setMarkupSrc:la,handleSend:bt,handleSourceClick:ss,continueGenerating:ie,t:V,bottomRef:Xi,vizState:Ta,setVizState:Za,messages:L})}),(0,Se.jsx)(Ci,{gooId:Ji,input:De,setInput:Fe,showKikuPicker:Qt,setShowKikuPicker:Je,showAtPicker:Mt,setShowAtPicker:Re,captureAllowed:We,discussedSources:Ne,defaultCurrency:s,handleSelectExtension:cs,handleKikuCapture:Fr,handleKikuCaptureAll:_r,handleKikuViewHistory:Ui,handleKikuDelete:Bi,attachments:nt,removeAttachment:ms,chromeLoading:!g,imageInputRef:_t,handleImageFiles:us,enableVision:u,enableVoice:m,canConverse:Yi,voiceMode:zo,startVoice:Gi,stopVoice:Ao,voiceBlocked:Ki,textareaRef:_a,classNames:l,handleInput:ps,handleKeyDown:ls,voice:Qi,voicePhase:Po,activePlaceholder:tr,loading:N,streaming:T,stop:ee,handleSend:bt,voiceError:qr,setVoiceError:Lo,shopperLanguage:X,t:V})]}),(0,Se.jsx)(Pi,{items:gs,activeIdx:as,progress:ts,onJump:os,side:J?"left":"right"}),(0,Se.jsxs)("div",{className:ae("hsk-cb-kiku-id-rail",J?"hsk-cb-kiku-id-rail--right":"hsk-cb-kiku-id-rail--left"),children:[(0,Se.jsxs)("button",{type:"button",className:"hsk-cb-kiku-id-pill",onClick:()=>Da!=="N/A"&&Rt(Da,"pub"),title:V("keyCopyId"),children:[(0,Se.jsx)("span",{className:"hsk-cb-kiku-id-rail-val",children:Da}),Ea==="pub"?(0,Se.jsx)(wn,{}):(0,Se.jsx)(xn,{})]}),(0,Se.jsx)("div",{className:ae("hsk-cb-theme-squircle-wrap",ua&&"is-open",Eo&&"is-closing"),ref:ir,children:ua?(0,Se.jsx)("div",{className:"hsk-cb-theme-2x2-grid",role:"dialog","aria-label":"Theme selector",children:ra.map(({id:R,label:ne,Icon:ue})=>(0,Se.jsxs)("button",{type:"button",className:ae("hsk-cb-theme-grid-item",Ut===R&&"is-active"),onClick:$e=>{$e.stopPropagation(),za(R,!0)},children:[(0,Se.jsx)(ue,{}),(0,Se.jsx)("span",{children:ne})]},R))}):(0,Se.jsxs)("button",{type:"button",className:"hsk-cb-theme-squircle-trigger",onClick:()=>nr(!0),"aria-label":"Themes","aria-expanded":"false",children:[(0,Se.jsx)("span",{className:"hsk-cb-theme-trigger-icon",children:se.default.createElement(co(Ut).Icon)}),(0,Se.jsx)("span",{className:"hsk-cb-theme-trigger-label",children:co(Ut).label})]})})]}),zo==="converse"&&(0,Se.jsx)(Ri,{siteId:C?.api?.siteId??"",themeAttr:La,stopVoice:Ao,chooseVoice:Wi,liveVoiceName:Oi,voiceSecondsLeft:Vi,voiceConnecting:Hi,voicePhase:Po,live:Ur,voiceMuted:$i,setVoiceMuted:ji,shownSources:ks,onSelectSource:i,defaultCurrency:s,voiceError:qr,t:V})]})})})}var Ct=require("react/jsx-runtime");function zr({label:e="Ask AI",children:a,icon:t,title:r,placeholder:o,backdropColor:i,backdropBlur:s,className:c,onSelectSource:n,defaultCurrency:l="$",chips:m=Ka,theme:p,classNames:u={},enableVoice:d=!1,voiceLang:b,enableVision:v=!1,visionCategoryHint:y,enableAudioResponse:w,ttsVoice:C,autoSpeakResponses:L}){let f=(0,Ii.useAkropolysContext)(),[N,T]=(0,Dt.useState)(!1),[x,Q]=(0,Dt.useState)(!1),[S,$]=(0,Dt.useState)(null),_=(0,Dt.useCallback)(()=>{Va();try{an(f,f?.getShopperLanguage?.()??"",aa)}catch{}},[f]),I=(0,Dt.useCallback)(F=>{let ee=F.getBoundingClientRect(),z=window.getComputedStyle(F),B=parseFloat(z.borderRadius)||12,ie=ee.left+ee.width/2,re=ee.top+ee.height/2,h=window.innerWidth,P=window.innerHeight,q=Math.max(Math.hypot(ie,re),Math.hypot(h-ie,re),Math.hypot(ie,P-re),Math.hypot(h-ie,P-re));$({x:ie,y:re,r:q,top:ee.top,left:ee.left,width:ee.width,height:ee.height,borderRadius:B}),T(!0)},[]);(0,Dt.useEffect)(()=>{Q(!0);let F=window.requestIdleCallback,ee=F?F(_,{timeout:2e3}):setTimeout(_,600);if(typeof window<"u"&&!window.__akropolys_nav_patched){window.__akropolys_nav_patched=!0;let B=window.location.pathname,ie=window.history.pushState,re=window.history.replaceState;window.history.pushState=function(...h){ie.apply(this,h),window.location.pathname!==B&&(B=window.location.pathname,window.dispatchEvent(new CustomEvent("akropolys:navigation")))},window.history.replaceState=function(...h){re.apply(this,h),window.location.pathname!==B&&(B=window.location.pathname,window.dispatchEvent(new CustomEvent("akropolys:navigation")))}}let z=()=>{T(!1)};return window.addEventListener("popstate",z),window.addEventListener("akropolys:navigation",z),()=>{let B=window.cancelIdleCallback;F&&B?B(ee):clearTimeout(ee),window.removeEventListener("popstate",z),window.removeEventListener("akropolys:navigation",z)}},[_]);let{themeAttr:K,vars:E}=ka(p);return br(p),(0,Ct.jsxs)(Ct.Fragment,{children:[(0,Ct.jsx)("button",{className:ae("hsk-cb-btn",u.button,c),onClick:F=>I(F.currentTarget),onPointerEnter:_,onPointerDown:_,style:E,"data-hsk-theme":K,"aria-label":"Open AI chat",children:a!==void 0?a:(0,Ct.jsxs)(Ct.Fragment,{children:[t?(0,Ct.jsx)("span",{className:"hsk-cb-btn-icon",style:{display:"flex",alignItems:"center"},children:t}):null,e]})}),N&&x&&(0,Ai.createPortal)((0,Ct.jsx)(Mo,{title:r,placeholder:o,backdropColor:i,backdropBlur:s,origin:S,onClose:()=>T(!1),onSelectSource:n,defaultCurrency:l,chips:m,theme:p,classNames:u,enableVoice:d,voiceLang:b,enableVision:v,visionCategoryHint:y,enableAudioResponse:w,ttsVoice:C,autoSpeakResponses:L}),Va()??document.body)]})}var Ee=require("react"),Fi=require("react-dom");var Ma=require("@akropolys/sdk");var k=require("react/jsx-runtime"),sa=({className:e,size:a=16})=>(0,k.jsx)("svg",{className:ae("hsk-brand-mark",e),width:a,height:a,viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg","aria-label":"kiku",children:(0,k.jsxs)("g",{transform:"translate(22.7 19) scale(0.62)",fill:"currentColor",fillRule:"evenodd",children:[(0,k.jsx)("path",{d:"M39.4 10.4 Q44 0 48.6 10.4 L86.1 95.8 Q88 100 83.4 100 L4.6 100 Q0 100 1.9 95.8 Z M24 100 L24 65 Q24 60 27.4 56.3 Q44 38 60.6 56.3 Q64 60 64 65 L64 100 Z"}),(0,k.jsx)("circle",{cx:"55",cy:"82",r:"3.4"})]})}),Ei=()=>(0,k.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,k.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,k.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),Di=e=>{let a="";if(typeof e=="string")a=e;else if(e&&typeof e=="object"&&e.message)a=e.message;else try{a=JSON.stringify(e)}catch{a=String(e)}if(a.toLowerCase().includes("token limit"))return"You've reached your usage limit. Please update your billing limits in your dashboard to continue.";try{let t=JSON.parse(a);return t.error||t.message||a}catch{return a}};function Gc({productName:e,limit:a,backdropColor:t,backdropBlur:r,onClose:o,onNavigate:i,onResult:s,theme:c,classNames:n={},product:l}){let m=(0,Ma.useAkropolysContext)(),[p,u]=(0,Ee.useState)(null),d=l||p,{results:b,loading:v,search:y}=(0,Ma.useSearch)({type:"vector"}),{messages:w,sources:C,loading:L,error:f,send:N}=(0,Ma.useKiku)(),[T,x]=(0,Ee.useState)(""),[Q,S]=(0,Ee.useState)(!1),[$,_]=(0,Ee.useState)(!1),[I,K]=(0,Ee.useState)(!1),E=(0,Ee.useRef)(null),F=(0,Ee.useRef)(null);(0,Ee.useEffect)(()=>{!l&&!p&&m.api.searchVector(e,1).then(A=>{A.results&&A.results.length>0&&u(A.results[0].entity)}).catch(A=>console.error("[Akropolys] Failed to fetch product details",A)),y(e,a)},[e,l,p,m,a,y]),(0,Ee.useEffect)(()=>{let A=()=>S(window.innerWidth<=768);if(A(),typeof window<"u")return window.addEventListener("resize",A),()=>window.removeEventListener("resize",A)},[]),(0,Ee.useEffect)(()=>{b.length>0&&s?.(b)},[b,s]),(0,Ee.useEffect)(()=>{let A=M=>{M.key==="Escape"&&o()};return document.addEventListener("keydown",A),()=>document.removeEventListener("keydown",A)},[o]);let ee=(0,Ee.useRef)(null);(0,Ee.useEffect)(()=>{let A=document.body.style.overflow,M=document.body.style.position,Z=document.body.style.width;document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%";let G=()=>{window.scrollTo(0,0),ee.current&&(ee.current.scrollTop=0)};return window.addEventListener("scroll",G,{passive:!0}),()=>{document.body.style.overflow=A,document.body.style.position=M,document.body.style.width=Z,window.removeEventListener("scroll",G)}},[]);let z=(0,Ee.useRef)(null);(0,Ee.useEffect)(()=>{z.current&&(z.current.scrollTop=z.current.scrollHeight)},[w,L]);let B=typeof r=="number"?`${r}px`:r??"16px",ie=t??void 0,re=A=>{i?.(A)!==!1&&(o(),A.entity.url&&(window.location.href=A.entity.url))},h=async A=>{let M=(A??T).trim();if(!(!M||L))if(x(""),F.current&&(F.current.style.height="auto"),w.length===0&&d){let Z=`[Context: Shopper is viewing "${d.name}". Price: ${d.price}. Description: ${d.description||""}]
46
+
47
+ Question: ${M}`;await N(Z,M)}else await N(M)},P=A=>{A.key==="Enter"&&!A.shiftKey&&!A.nativeEvent.isComposing&&(A.preventDefault(),h())},q=A=>{x(A.target.value);let M=A.target;M.style.height="auto",M.style.height=`${Math.min(M.scrollHeight,140)}px`},X={...c?.primaryColor&&{"--hsk-primary":c.primaryColor},...c?.backgroundColor&&{"--hsk-bg":c.backgroundColor},...c?.textColor&&{"--hsk-text":c.textColor},...c?.fontFamily&&{"--hsk-font":c.fontFamily},...c?.borderRadius&&{"--hsk-border-radius":c.borderRadius}},Y=w.length===0&&d?[{role:"assistant",content:`Hi! I can help you with **${d.name}**. Ask me about its specifications, features, compare it with other options, or find alternatives!`}]:w;return Q?(0,k.jsx)("div",{ref:ee,className:ae("hsk-sp-backdrop hsk-sp-mobile-view",n.backdrop),onClick:o,style:{backdropFilter:`blur(${B})`,WebkitBackdropFilter:`blur(${B})`,background:ie??void 0,...X},children:(0,k.jsxs)("div",{className:ae("hsk-sp-card hsk-sp-fullscreen hsk-sp-mobile-card",n.card),onClick:A=>A.stopPropagation(),children:[(0,k.jsxs)("div",{className:"hsk-sp-header",children:[(0,k.jsx)("span",{className:"hsk-sp-header-icon",style:{display:"flex",alignItems:"center"},children:(0,k.jsx)(sa,{})}),(0,k.jsxs)("div",{className:"hsk-sp-header-body",children:[(0,k.jsxs)("div",{className:"hsk-sp-header-title-row",children:[(0,k.jsx)("div",{className:"hsk-sp-header-title",children:d?.name||e}),d&&(0,k.jsx)("button",{type:"button",className:"hsk-sp-header-specs-btn",onClick:()=>_(!0),children:"Specs"})]}),(0,k.jsx)("div",{className:"hsk-sp-header-sub",children:"kiku"})]}),(0,k.jsx)("button",{className:"hsk-sp-close",onClick:o,"aria-label":"Close",children:(0,k.jsx)(Ei,{})})]}),v&&(0,k.jsx)("div",{className:"hsk-sp-bar"}),(0,k.jsxs)("div",{className:"hsk-sp-mobile-chat-container",children:[(0,k.jsxs)("div",{className:"hsk-cb-msgs",children:[Y.map((A,M)=>{let Z=A.role==="user";return(0,k.jsx)("div",{className:"hsk-cb-msg-group",children:Z?(0,k.jsx)("div",{className:"hsk-cb-user-msg",children:(0,k.jsx)("div",{className:"hsk-cb-user-bubble",children:A.content})}):(0,k.jsxs)("div",{className:"hsk-cb-ai-msg",children:[(0,k.jsx)("div",{className:"hsk-cb-ai-icon",style:{display:"flex",alignItems:"center"},children:(0,k.jsx)(sa,{})}),(0,k.jsxs)("div",{className:"hsk-cb-ai-body",children:[(0,k.jsx)("div",{className:"hsk-cb-ai-text",children:ta(A.content)}),M===0&&d&&(0,k.jsxs)("div",{className:"hsk-sp-mobile-attachment-deck",children:[(0,k.jsxs)("div",{className:"hsk-sp-mobile-main-card",children:[(0,k.jsx)("div",{className:"hsk-sp-mobile-main-card-img",children:d.images?.[0]?(0,k.jsx)("img",{src:d.images[0],alt:d.name}):(0,k.jsx)("span",{children:"\xF0\u0178\u203A\x8D"})}),(0,k.jsxs)("div",{className:"hsk-sp-mobile-main-card-info",children:[(0,k.jsx)("div",{className:"hsk-sp-mobile-main-card-brand",children:d.brand||d.category||"Product"}),(0,k.jsx)("div",{className:"hsk-sp-mobile-main-card-name",children:d.name}),(0,k.jsxs)("div",{className:"hsk-sp-mobile-main-card-price",children:[d.currency??"KES"," ",parseFloat(d.price?.replace(/[^0-9.]/g,"")||"0").toLocaleString()]})]}),(d.specs&&Object.keys(d.specs).length>0||d.description)&&(0,k.jsx)("button",{type:"button",className:"hsk-sp-mobile-main-card-specs-btn",onClick:()=>_(!0),children:"Specs"})]}),(()=>{let G=b.filter(g=>{let J=!!(g.entity.name&&d?.name&&g.entity.name.toLowerCase()===d.name.toLowerCase()),O=g.entity.slug&&d?.slug&&g.entity.slug.toLowerCase()===d.slug.toLowerCase();return!J&&!O});return G.length===0?null:(0,k.jsxs)("div",{className:"hsk-sp-mobile-similar-carousel-inline",children:[(0,k.jsx)("div",{className:"hsk-sp-mobile-similar-carousel-title",children:"Similar Products"}),(0,k.jsx)("div",{className:"hsk-sp-mobile-similar-carousel-list",children:G.map(g=>{let J=parseFloat(g.entity.price?.replace(/[^0-9.]/g,"")||"0"),O=g.entity.currency??"KES";return(0,k.jsxs)("div",{className:"hsk-sp-mobile-similar-carousel-item",onClick:()=>re(g),children:[(0,k.jsx)("div",{className:"hsk-sp-mobile-similar-carousel-img",children:g.entity.images?.[0]?(0,k.jsx)("img",{src:g.entity.images[0],alt:g.entity.name}):(0,k.jsx)("span",{children:"\xF0\u0178\u203A\x8D"})}),(0,k.jsxs)("div",{className:"hsk-sp-mobile-similar-carousel-meta",children:[(0,k.jsx)("div",{className:"hsk-sp-mobile-similar-carousel-name",title:g.entity.name,children:g.entity.name}),(0,k.jsxs)("div",{className:"hsk-sp-mobile-similar-carousel-price",children:[O," ",J.toLocaleString()]})]})]},g.id)})})]})})()]})]})]})},M)}),L&&(0,k.jsxs)("div",{className:"hsk-cb-typing-row",children:[(0,k.jsx)("div",{className:"hsk-cb-ai-icon",style:{display:"flex",alignItems:"center"},children:(0,k.jsx)(sa,{})}),(0,k.jsxs)("div",{className:"hsk-cb-typing",children:[(0,k.jsx)("div",{className:"hsk-cb-dot"}),(0,k.jsx)("div",{className:"hsk-cb-dot"}),(0,k.jsx)("div",{className:"hsk-cb-dot"})]})]}),f&&(0,k.jsx)("div",{className:"hsk-cb-error",children:Di(f)}),(0,k.jsx)("div",{ref:E,style:{height:1}})]}),(0,k.jsx)("div",{className:"hsk-cb-input-wrap",children:(0,k.jsxs)("div",{className:"hsk-cb-input-box",children:[(0,k.jsx)("textarea",{ref:F,className:"hsk-cb-textarea",value:T,onChange:q,onKeyDown:P,placeholder:"Ask about this product, specs, or comparison...",rows:1,disabled:L}),(0,k.jsx)("button",{className:"hsk-cb-send",onClick:()=>h(),disabled:!T.trim()||L,"aria-label":"Send message",children:(0,k.jsx)(Ba,{})})]})})]}),$&&d&&(0,k.jsx)("div",{className:"hsk-sp-mobile-specs-overlay",onClick:()=>_(!1),children:(0,k.jsxs)("div",{className:"hsk-sp-mobile-specs-drawer",onClick:A=>A.stopPropagation(),children:[(0,k.jsxs)("div",{className:"hsk-sp-mobile-specs-header",children:[(0,k.jsx)("h3",{children:"Specifications"}),(0,k.jsx)("button",{type:"button",onClick:()=>_(!1),children:"Close"})]}),(0,k.jsxs)("div",{className:"hsk-sp-mobile-specs-body",children:[(0,k.jsx)("h4",{className:"hsk-sp-mobile-specs-title",children:d.name}),d.description&&(0,k.jsxs)("div",{className:"hsk-sp-mobile-specs-desc",children:[(0,k.jsx)("h5",{children:"Description"}),(0,k.jsx)("p",{children:d.description})]}),d.specs&&Object.keys(d.specs).length>0&&(0,k.jsxs)("div",{className:"hsk-sp-mobile-specs-list",children:[(0,k.jsx)("h5",{children:"Details"}),Object.entries(d.specs).map(([A,M])=>(0,k.jsxs)("div",{className:"hsk-sp-mobile-spec-row",children:[(0,k.jsx)("span",{className:"hsk-sp-mobile-spec-label",children:A}),(0,k.jsx)("span",{className:"hsk-sp-mobile-spec-value",children:M})]},A))]})]})]})})]})}):(0,k.jsx)("div",{className:ae("hsk-sp-backdrop",n.backdrop),onClick:o,style:{backdropFilter:`blur(${B})`,WebkitBackdropFilter:`blur(${B})`,background:ie??void 0,...X},children:(0,k.jsxs)("div",{className:ae("hsk-sp-card hsk-sp-fullscreen",n.card),onClick:A=>A.stopPropagation(),children:[(0,k.jsxs)("div",{className:"hsk-sp-header",children:[(0,k.jsx)("span",{className:"hsk-sp-header-icon",style:{display:"flex",alignItems:"center"},children:(0,k.jsx)(sa,{})}),(0,k.jsxs)("div",{className:"hsk-sp-header-body",children:[(0,k.jsx)("div",{className:"hsk-sp-header-title",children:d?.name||e}),(0,k.jsx)("div",{className:"hsk-sp-header-sub",children:"Ask questions, compare specs, or check similar products"})]}),(0,k.jsx)("button",{className:"hsk-sp-close",onClick:o,"aria-label":"Close",children:(0,k.jsx)(Ei,{})})]}),v&&(0,k.jsx)("div",{className:"hsk-sp-bar"}),(0,k.jsxs)("div",{className:"hsk-sp-body",children:[(0,k.jsxs)("div",{className:"hsk-sp-details-pane",children:[d&&(0,k.jsxs)("div",{className:"hsk-sp-product-profile-container",children:[(0,k.jsxs)("div",{className:"hsk-sp-product-profile",children:[(0,k.jsx)("div",{className:"hsk-sp-details-imgwrap",children:d.images?.[0]?(0,k.jsx)("img",{src:d.images[0],alt:d.name}):(0,k.jsx)("span",{className:"hsk-sp-img-placeholder",children:"\xF0\u0178\u203A\x8D"})}),(0,k.jsxs)("div",{className:"hsk-sp-details-meta",children:[d.brand&&(0,k.jsx)("span",{className:"hsk-sp-item-brand",children:d.brand}),d.category&&(0,k.jsx)("span",{className:"hsk-sp-item-cat",children:d.category}),(0,k.jsx)("h2",{className:"hsk-sp-details-name",children:d.name}),(0,k.jsxs)("div",{className:"hsk-sp-item-price-row",children:[(0,k.jsx)("span",{className:"hsk-sp-item-currency",children:d.currency??"KES"}),(0,k.jsx)("span",{className:"hsk-sp-item-price",children:parseFloat(d.price?.replace(/[^0-9.]/g,"")||"0").toLocaleString()}),d.originalPrice&&(0,k.jsx)("span",{className:"hsk-sp-item-original-price",children:parseFloat(d.originalPrice.replace(/[^0-9.]/g,"")||"0").toLocaleString()}),d.discount&&(0,k.jsxs)("span",{className:"hsk-sp-item-discount",children:["(",d.discount,")"]})]}),(0,k.jsxs)("div",{className:"hsk-sp-item-meta-badges",children:[d.rating&&(0,k.jsxs)("span",{className:"hsk-sp-meta-badge hsk-sp-meta-badge-rating",children:["\xE2\u02DC\u2026 ",parseFloat(d.rating.toString()).toFixed(1)," ",d.reviewCount?`(${d.reviewCount})`:""]}),d.availability&&(0,k.jsx)("span",{className:`hsk-sp-meta-badge hsk-sp-meta-badge-avail ${d.availability.toLowerCase().includes("in")?"in-stock":"out-stock"}`,children:d.availability}),d.stock&&!d.availability&&(0,k.jsxs)("span",{className:"hsk-sp-meta-badge hsk-sp-meta-badge-stock",children:["Stock: ",d.stock]})]})]})]}),d.specs&&Object.keys(d.specs).length>0&&(0,k.jsx)("div",{className:"hsk-sp-specs-horizontal",children:Object.entries(d.specs).map(([A,M])=>(0,k.jsxs)("div",{className:"hsk-sp-spec-item-horizontal",children:[(0,k.jsxs)("span",{className:"hsk-sp-spec-label-horizontal",children:[A,":"]}),(0,k.jsx)("span",{className:"hsk-sp-spec-value-horizontal",title:M,children:M})]},A))}),d.description&&(0,k.jsxs)("div",{className:"hsk-sp-details-desc",children:[(0,k.jsx)("h4",{children:"Description"}),(0,k.jsx)("p",{children:d.description})]})]}),(0,k.jsxs)("div",{className:"hsk-sp-similar-section",children:[(0,k.jsx)("h3",{children:"Similar Products"}),(0,k.jsx)("div",{className:"hsk-sp-results",children:(()=>{let A=b.filter(M=>{let Z=!!(M.entity.name&&d?.name&&M.entity.name.toLowerCase()===d.name.toLowerCase()),G=M.entity.slug&&d?.slug&&M.entity.slug.toLowerCase()===d.slug.toLowerCase();return!Z&&!G});return!v&&A.length===0?(0,k.jsx)("div",{className:"hsk-sp-empty",children:"No similar products found."}):A.map((M,Z)=>{let G=parseFloat(M.entity.price?.replace(/[^0-9.]/g,"")||"0"),g=M.entity.currency??"KES";return(0,k.jsxs)("div",{className:ae("hsk-sp-item",n.item),style:{animationDelay:`${Z*55}ms`,cursor:"pointer"},onClick:()=>re(M),children:[(0,k.jsx)("div",{className:"hsk-sp-img-wrap",children:M.entity.images?.[0]?(0,k.jsx)("img",{src:M.entity.images[0],alt:M.entity.name}):(0,k.jsx)("span",{className:"hsk-sp-img-placeholder",children:"\xF0\u0178\u203A\x8D"})}),(0,k.jsxs)("div",{className:"hsk-sp-item-body",children:[(0,k.jsxs)("div",{children:[M.entity.category&&(0,k.jsx)("div",{className:"hsk-sp-item-cat",children:M.entity.category}),(0,k.jsx)("div",{className:"hsk-sp-item-name",title:M.entity.name,children:M.entity.name})]}),(0,k.jsxs)("div",{className:"hsk-sp-item-price-row",children:[(0,k.jsx)("span",{className:"hsk-sp-item-currency",children:g}),(0,k.jsx)("span",{className:"hsk-sp-item-price",children:G.toLocaleString()})]}),(0,k.jsx)("div",{className:"hsk-sp-actions",children:(0,k.jsx)("button",{className:"hsk-sp-action hsk-sp-action-primary",onClick:J=>{J.stopPropagation(),re(M)},children:"View"})})]})]},M.id)})})()})]})]}),(0,k.jsxs)("div",{className:"hsk-sp-chat-pane",children:[(0,k.jsxs)("div",{className:"hsk-cb-msgs",children:[Y.map((A,M)=>{let Z=A.role==="user";return(0,k.jsx)("div",{className:"hsk-cb-msg-group",children:Z?(0,k.jsx)("div",{className:"hsk-cb-user-msg",children:(0,k.jsx)("div",{className:"hsk-cb-user-bubble",children:A.content})}):(0,k.jsxs)("div",{className:"hsk-cb-ai-msg",children:[(0,k.jsx)("div",{className:"hsk-cb-ai-icon",style:{display:"flex",alignItems:"center"},children:(0,k.jsx)(sa,{})}),(0,k.jsx)("div",{className:"hsk-cb-ai-body",children:(0,k.jsx)("div",{className:"hsk-cb-ai-text",children:ta(A.content)})})]})},M)}),L&&(0,k.jsxs)("div",{className:"hsk-cb-typing-row",children:[(0,k.jsx)("div",{className:"hsk-cb-ai-icon",style:{display:"flex",alignItems:"center"},children:(0,k.jsx)(sa,{})}),(0,k.jsxs)("div",{className:"hsk-cb-typing",children:[(0,k.jsx)("div",{className:"hsk-cb-dot"}),(0,k.jsx)("div",{className:"hsk-cb-dot"}),(0,k.jsx)("div",{className:"hsk-cb-dot"})]})]}),f&&(0,k.jsx)("div",{className:"hsk-cb-error",children:Di(f)}),(0,k.jsx)("div",{ref:E,style:{height:1}})]}),(0,k.jsxs)("div",{className:"hsk-cb-input-wrap",children:[(0,k.jsxs)("div",{className:"hsk-cb-input-box",children:[(0,k.jsx)("textarea",{ref:F,className:"hsk-cb-textarea",value:T,onChange:q,onKeyDown:P,placeholder:"Ask about this product, specs, or comparison...",rows:1,disabled:L}),(0,k.jsx)("button",{className:"hsk-cb-send",onClick:()=>h(),disabled:!T.trim()||L,"aria-label":"Send message",children:(0,k.jsx)(Ba,{})})]}),(0,k.jsx)("div",{className:"hsk-cb-hint",children:"Akropolys \xB7 instant product knowledge"})]})]})]}),(0,k.jsx)("div",{className:"hsk-sp-footer",children:(0,k.jsx)("span",{className:"hsk-sp-esc",children:"Esc to close"})})]})})}function _i({productName:e,limit:a=8,onResult:t,backdropColor:r,backdropBlur:o,className:i,onNavigate:s,theme:c,classNames:n={},product:l,children:m}){let[p,u]=(0,Ee.useState)(!1),[d,b]=(0,Ee.useState)(!1);(0,Ee.useEffect)(()=>{b(!0)},[]);let v={...c?.primaryColor&&{"--hsk-primary":c.primaryColor},...c?.backgroundColor&&{"--hsk-bg":c.backgroundColor},...c?.textColor&&{"--hsk-text":c.textColor},...c?.fontFamily&&{"--hsk-font":c.fontFamily},...c?.borderRadius&&{"--hsk-border-radius":c.borderRadius}};return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)("button",{className:ae("hsk-sp-btn",n.button,i),onClick:()=>u(!0),style:v,title:"Find similar products","aria-label":"Find similar products",children:m||(0,k.jsx)(sa,{})}),p&&d&&(0,Fi.createPortal)((0,k.jsx)(Gc,{productName:e,limit:a,onResult:t,backdropColor:r,backdropBlur:o,onClose:()=>u(!1),onNavigate:s,theme:c,classNames:n,product:l}),Va()??document.body)]})}var Ft=require("react"),qi=require("react-dom/client"),Na=require("@akropolys/sdk");var ca=require("react/jsx-runtime");function Pr(e){if(!e||typeof e!="object")return{};let a=String(e.id??e.handle??e.url??""),t=e.title||e.name||"",r;typeof e.price=="number"?r=e.price>=100&&Number.isInteger(e.price)?(e.price/100).toFixed(2):e.price.toString():typeof e.price=="string"&&(r=e.price);let o=e.featured_image||e.image;if(!o&&Array.isArray(e.images)&&e.images.length>0){let d=e.images[0];o=typeof d=="string"?d:d?.src}typeof o=="string"&&o.startsWith("//")&&(o="https:"+o);let i=e.url||"";if(!i&&e.handle&&(i=`/products/${e.handle}`),i&&typeof window<"u"&&!i.startsWith("http"))try{i=new URL(i,window.location.origin).href}catch{}let s=e.type||e.product_type||e.category||"",c=e.vendor||e.brand||"",n=Array.isArray(e.tags)?e.tags:typeof e.tags=="string"?e.tags.split(",").map(d=>d.trim()).filter(Boolean):[],l=e.description||e.body_html||"",m=typeof l=="string"?l.replace(/<[^>]*>?/gm,"").trim():"",p=Array.isArray(e.variants)&&e.variants.length>0?e.variants[0]:null,u=p?p.id:void 0;return{id:a,name:t,title:t,price:r,image:o,url:i||(typeof window<"u"?window.location.href:""),category:s,brand:c,tags:n,description:m,availability:e.available!==!1?"in_stock":"out_of_stock",variant_id:u?String(u):void 0,shopify_product_id:e.id?String(e.id):void 0,handle:e.handle||void 0}}function No(e){if(!e||e.length===0)return Promise.resolve();let a=e.map(t=>({id:t.fields?.variant_id||t.fields?.shopify_variant_id||t.id,quantity:1}));return fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({items:a})}).then(async t=>{t.ok||console.warn("[Akropolys Shopify] /cart/add.js returned error status:",t.status);let r=await t.json().catch(()=>null);return typeof document<"u"&&(document.dispatchEvent(new CustomEvent("cart:updated",{bubbles:!0,detail:{items:r}})),document.dispatchEvent(new CustomEvent("cart:refresh",{bubbles:!0,detail:{items:r}})),document.dispatchEvent(new CustomEvent("cart:build",{bubbles:!0})),window.dispatchEvent(new CustomEvent("cart:updated",{detail:{items:r}}))),r}).catch(t=>{console.warn("[Akropolys Shopify] Add to cart network error:",t)})}function To(){return fetch("/cart.js",{headers:{Accept:"application/json"}}).then(e=>e.ok?e.json():null).catch(()=>null)}function Qc({children:e,position:a="bottom-right",dockable:t=!0,isInline:r=!1}){if(r||a==="inline"||a==="custom"||a==="hidden"||t===!1)return(0,ca.jsx)("div",{className:"akropolys-kiku-inline-wrapper",style:{display:"inline-flex",alignItems:"center"},children:e});let[o,i]=(0,Ft.useState)(null),[s,c]=(0,Ft.useState)(!1),n=(0,Ft.useRef)(null),l=(0,Ft.useRef)(null);(0,Ft.useEffect)(()=>{if(typeof window>"u")return;let d=()=>{let C=window.innerWidth-140-20,L=window.innerHeight-44-20;a==="bottom-left"?(C=20,L=window.innerHeight-44-20):a==="top-right"?(C=window.innerWidth-140-20,L=20):a==="top-left"&&(C=20,L=20);try{let f=localStorage.getItem("akropolys_dock_pos");if(f){let N=JSON.parse(f);if(typeof N.x=="number"&&typeof N.y=="number"){let T=Math.max(10,Math.min(window.innerWidth-60,N.x)),x=Math.max(10,Math.min(window.innerHeight-60,N.y));return{x:T,y:x}}}}catch{}return{x:Math.max(10,C),y:Math.max(10,L)}};i(d());let b=()=>{i(v=>{if(!v)return d();let y=Math.max(10,Math.min(window.innerWidth-60,v.x)),w=Math.max(10,Math.min(window.innerHeight-60,v.y));return{x:y,y:w}})};return window.addEventListener("resize",b),()=>window.removeEventListener("resize",b)},[a]);let m=d=>{if(!l.current)return;let b=l.current.getBoundingClientRect();n.current={startX:d.clientX,startY:d.clientY,initX:b.left,initY:b.top,moved:!1};try{d.target.setPointerCapture?.(d.pointerId)}catch{}},p=d=>{if(!n.current)return;let b=d.clientX-n.current.startX,v=d.clientY-n.current.startY;if(!n.current.moved&&Math.hypot(b,v)>6&&(n.current.moved=!0,c(!0)),n.current.moved){let y=l.current?.offsetWidth||140,w=l.current?.offsetHeight||44,C=Math.max(8,Math.min(window.innerWidth-y-8,n.current.initX+b)),L=Math.max(8,Math.min(window.innerHeight-w-8,n.current.initY+v));i({x:C,y:L})}},u=()=>{if(!n.current)return;let d=n.current.moved;if(n.current=null,c(!1),d&&o){try{localStorage.setItem("akropolys_dock_pos",JSON.stringify(o))}catch{}let b=v=>{v.stopPropagation(),v.preventDefault(),window.removeEventListener("click",b,!0)};window.addEventListener("click",b,!0),setTimeout(()=>window.removeEventListener("click",b,!0),120)}};return o?(0,ca.jsx)("div",{ref:l,className:"akropolys-kiku-dock-wrapper",onPointerDown:m,onPointerMove:p,onPointerUp:u,onPointerCancel:u,title:"Drag to dock anywhere",style:{position:"fixed",left:`${o.x}px`,top:`${o.y}px`,zIndex:2147483640,touchAction:"none",cursor:s?"grabbing":"grab",transition:s?"none":"transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.2s ease",transform:s?"scale(1.05)":"scale(1)",userSelect:"none",WebkitUserSelect:"none"},children:e}):null}function Xc({config:e,isInline:a}){(0,Ft.useEffect)(()=>{let r=(0,Na.getAkropolysClient)();if(!r)return;let o=e.product;if(!o&&typeof window.meta?.product=="object"&&(o=window.meta.product),o){let i=Pr(o);(i.id||i.url)&&r.ingest(i).catch(s=>{console.debug("[Akropolys Shopify] Auto-ingest notice:",s)})}},[e.product]);let t=r=>{if(e.onAddToCart){e.onAddToCart(r);return}No(r)};return(0,ca.jsx)(Na.AkropolysProvider,{siteId:e.siteId,apiUrl:e.apiUrl,apiToken:e.apiToken,vertical:e.vertical||"commerce",shopperId:e.shopperId,onAddToCart:t,onAction:e.onAction,getCart:To,children:(0,ca.jsx)(Qc,{position:e.position,dockable:e.dockable!==!1,isInline:a,children:(0,ca.jsx)(zr,{label:e.buttonLabel||"Ask Kiku",title:e.title||"kiku",placeholder:e.placeholder,defaultCurrency:e.defaultCurrency||"$",chips:e.chips,theme:e.theme||"dark",enableVoice:e.enableVoice!==!1,voiceLang:e.voiceLang,enableVision:e.enableVision!==!1,visionCategoryHint:e.visionCategoryHint,enableAudioResponse:e.enableAudioResponse!==!1,ttsVoice:e.ttsVoice||"Puck",autoSpeakResponses:e.autoSpeakResponses!==!1})})})}function Jc(){typeof document>"u"||document.addEventListener("click",e=>{e.target?.closest("[data-kiku-open], [data-kiku-toggle], .kiku-trigger")&&(e.preventDefault(),window.Kiku?.open())})}function Ro(e){if(typeof window>"u"||typeof document>"u")return;let a={},t=document.getElementById("akropolys-kiku-script");if(t){let c=t.dataset;a={siteId:c.siteId,apiToken:c.apiToken,apiUrl:c.apiUrl,theme:c.theme,buttonLabel:c.buttonLabel,position:c.position,containerId:c.containerId,containerSelector:c.containerSelector,dockable:c.dockable!=="false",enableVoice:c.enableVoice==="true"||c.enableVoice==="1",enableVision:c.enableVision==="true"||c.enableVision==="1"}}let r={...a,...window.AkropolysConfig||{},...e||{}};(!r.siteId||!r.apiToken)&&console.warn('[Akropolys] Missing siteId or apiToken. Configure window.AkropolysConfig = { siteId: "...", apiToken: "..." }');let o=null,i=!1;r.containerSelector&&(o=document.querySelector(r.containerSelector),o&&(i=!0)),!o&&r.containerId&&(o=document.getElementById(r.containerId),o&&(i=!0)),o||(o=document.getElementById("kiku-mount")||document.querySelector("[data-kiku-mount]"),o&&(i=!0)),o||(o=document.createElement("div"),o.id="akropolys-kiku-host",document.body.appendChild(o)),(0,qi.createRoot)(o).render((0,ca.jsx)(Xc,{config:r,isInline:i})),Jc(),window.Kiku={version:"1.7.19",open:()=>{document.querySelector(".hsk-cb-btn")?.click()},close:()=>{document.querySelector('.hsk-cb-topbar-btn[aria-label="Close"]')?.click()},toggle:()=>{document.querySelector(".hsk-cb-overlay")?window.Kiku?.close():window.Kiku?.open()},resetPosition:()=>{try{localStorage.removeItem("akropolys_dock_pos"),window.location.reload()}catch{}},ingest:async c=>{let n=(0,Na.getAkropolysClient)();if(n&&c){let l=Pr(c);await n.ingest(l)}},getClient:()=>(0,Na.getAkropolysClient)(),config:r}}if(typeof window<"u"){let e=()=>!!(window.AkropolysConfig||document.getElementById("akropolys-kiku-script")||document.getElementById("kiku-mount")||document.querySelector("[data-kiku-mount]")),a=()=>{e()&&Ro()};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",a):setTimeout(a,0)}0&&(module.exports={ChatWidget,KikuButton,KikuChat,SearchBar,Sparkle,VisualSearch,VoiceButton,initKiku,normalizeShopifyProduct,shopifyAddToCart,shopifyGetCart});
3314
48
  //# sourceMappingURL=index.js.map