@gengage/assistant-fe 0.6.49 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat/api.d.ts +1 -1
- package/dist/chat/components/ChatDrawer.d.ts +3 -1
- package/dist/chat/features/beauty-consulting/mode-controller.d.ts +1 -1
- package/dist/chat/features/beauty-consulting/stream-handler.d.ts +7 -1
- package/dist/chat/history-storage.d.ts +36 -4
- package/dist/chat/runtime.d.ts +73 -3
- package/dist/chat/utils/chat-presentation-debug.d.ts +0 -14
- package/dist/chat-runtime.js +1 -1
- package/dist/chat.iife.js +72 -72
- package/dist/chat.js +1 -1
- package/dist/common/connection-warning.d.ts +10 -0
- package/dist/common/indexed-db.d.ts +35 -2
- package/dist/common/native-webview.d.ts +1 -1
- package/dist/common/streaming.d.ts +6 -1
- package/dist/common/transport.d.ts +2 -1
- package/dist/common/types.d.ts +16 -0
- package/dist/{common-nAeMxZrn.js → common-CeuGSwJL.js} +61 -65
- package/dist/common.js +30 -30
- package/dist/{connection-warning-CDtUX-ol.js → connection-warning-C0e2byq5.js} +31 -25
- package/dist/{fastIntent-D45C2rEO.js → fastIntent-BI7l1oDv.js} +2 -2
- package/dist/global-error-toast-DvaKvPNA.js +798 -0
- package/dist/index.js +29 -29
- package/dist/native-webview-CHKpwixw.js +303 -0
- package/dist/native.iife.js +30 -30
- package/dist/native.js +1 -1
- package/dist/{overlay-BPZEIyo_.js → overlay-C3XzoSKd.js} +51 -32
- package/dist/overlay.js +6 -6
- package/dist/{price-formatter-CHUmYq8I.js → price-formatter-Q3wUKrl1.js} +2 -1
- package/dist/qna/runtime.d.ts +1 -0
- package/dist/qna-runtime.js +1 -1
- package/dist/qna.iife.js +32 -32
- package/dist/qna.js +1 -1
- package/dist/{request-response-cache-CGxwN0CV.js → request-response-cache-BLQy7llq.js} +478 -454
- package/dist/{runtime-CNlICVeC.js → runtime-BC8-a6Ql.js} +231 -219
- package/dist/runtime-BSIrZhF2.js +8889 -0
- package/dist/{runtime-Cg-6aUps.js → runtime-DiONTdBz.js} +230 -212
- package/dist/{simbut-BtaGMLLn.js → simbut-BDbb3nMH.js} +5 -5
- package/dist/simbut.iife.js +2 -2
- package/dist/simbut.js +1 -1
- package/dist/simrel/components/GroupTabs.d.ts +6 -0
- package/dist/simrel/runtime.d.ts +8 -0
- package/dist/{simrel-iGl2aXiY.js → simrel-CdxDIKu3.js} +15 -15
- package/dist/simrel-runtime.js +1 -1
- package/dist/simrel.iife.js +22 -22
- package/dist/simrel.js +2 -2
- package/dist/widget-base-Cvxdrqqt.js +141 -0
- package/package.json +1 -1
- package/dist/context-UTzCGyR9.js +0 -543
- package/dist/native-webview-CYX30O3Q.js +0 -273
- package/dist/runtime-COLQGOkl.js +0 -8708
- package/dist/widget-base-AuwRxs2X.js +0 -365
package/dist/chat.iife.js
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
(function(Le){Object.defineProperty(Le,Symbol.toStringTag,{value:"Module"});var Mi=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const a=document.createElement("div");for(const n of e.children){const r=t(n);r&&a.appendChild(r)}return a};function Bi(e){const t=document.createElement("div");if(t.className=e.containerClassName,!e.spec.elements[e.spec.root])return t;const a=e.unknownRenderer??Mi,n=i=>{const o=e.spec.elements[i];if(!o)return null;const s=e.registry[o.type];return s?s({elementId:i,element:o,spec:e.spec,context:e.context,renderElement:n}):a({elementId:i,element:o,spec:e.spec,context:e.context,renderElement:n})},r=n(e.spec.root);return r&&t.appendChild(r),t}function Ri(e,t){if(!t)return e;const a={...e};for(const[n,r]of Object.entries(t))r&&(a[n]=r);return a}var Oi=new Set(["p","br","a","strong","b","em","i","u","ul","ol","li","h1","h2","h3","h4","h5","h6","span","div","table","thead","tbody","tr","th","td","hr","code","pre","blockquote","img","sup","sub","button"]),$i=new Set(["script","iframe","object","embed","form","input","textarea","select","style","link","meta","template","noscript"]),an={"*":new Set(["class"]),a:new Set(["href","target","rel"]),img:new Set(["src","alt","width","height"]),button:new Set(["type","disabled","aria-label","aria-hidden","title"]),div:new Set(["style"]),span:new Set(["style"]),p:new Set(["style"])};function Fi(e){return/^\s*javascript\s*:/i.test(e)}var Di=new Set(["color","background-color","font-size","font-weight","font-style","font-family","text-align","text-decoration","line-height","letter-spacing","margin","margin-top","margin-right","margin-bottom","margin-left","padding","padding-top","padding-right","padding-bottom","padding-left","border","border-top","border-right","border-bottom","border-left","border-radius","border-color","border-width","border-style","width","max-width","min-width","height","max-height","min-height","display","vertical-align","white-space","word-break","overflow","opacity","visibility","list-style","list-style-type","text-transform","text-indent","text-overflow","box-sizing","flex","flex-direction","flex-wrap","justify-content","align-items","gap"]),Hi=/url\s*\(|expression\s*\(|javascript\s*:|\bimport\b|-moz-binding|behavior\s*:/i;function Ui(e){const t=[];for(const a of e.split(";")){const n=a.trim();if(!n)continue;const r=n.indexOf(":");if(r===-1)continue;const i=n.slice(0,r).trim().toLowerCase(),o=n.slice(r+1).trim();Di.has(i)&&(Hi.test(o)||t.push(n))}return t.join("; ")}function ba(e,t){if(e.nodeType===Node.TEXT_NODE)return;if(e.nodeType!==Node.ELEMENT_NODE){e.parentNode?.removeChild(e);return}const a=e,n=a.tagName.toLowerCase();if($i.has(n)){a.parentNode?.removeChild(a);return}if(!Oi.has(n)){const c=Array.from(a.childNodes);for(const l of c)t.insertBefore(l,a);t.removeChild(a);for(const l of c)ba(l,t);return}const r=an["*"]??new Set,i=an[n]??new Set,o=Array.from(a.attributes);for(const c of o){const l=c.name.toLowerCase();if(!r.has(l)&&!i.has(l)){a.removeAttribute(c.name);continue}if(Fi(c.value)){a.removeAttribute(c.name);continue}if(l==="style"){const g=Ui(c.value);g?a.setAttribute("style",g):a.removeAttribute("style");continue}}if(n==="a"){const c=a.getAttribute("href");if(c!==null){const l=c.trim().toLowerCase();!l.startsWith("http://")&&!l.startsWith("https://")&&!l.startsWith("mailto:")&&a.removeAttribute("href")}a.setAttribute("target","_blank"),a.setAttribute("rel","noopener noreferrer")}if(n==="img"){const c=a.getAttribute("src");c!==null&&(c.trim().toLowerCase().startsWith("https://")||a.removeAttribute("src"))}if(n==="button"){const c=a.getAttribute("type")?.trim().toLowerCase();(!c||c!=="button")&&a.setAttribute("type","button")}const s=Array.from(a.childNodes);for(const c of s)ba(c,a)}var nn=["http:","https:"];function Fe(e){const t=e.trim();if(!t)return!1;if(t.startsWith("/")&&!t.startsWith("//"))return!0;try{return nn.includes(new URL(t).protocol)}catch{return!1}}function ve(e){if(e.startsWith("/")&&!e.startsWith("//"))return!0;try{const t=new URL(e);return nn.includes(t.protocol)}catch{return!1}}function Se(e,t,a){(t==="href"||t==="src")&&!ve(a)||e.setAttribute(t,a)}function Ie(e){if(!e)return"";const t=new DOMParser().parseFromString(e,"text/html").body,a=Array.from(t.childNodes);for(const n of a)ba(n,t);return t.innerHTML}function ji(){return typeof window<"u"&&Array.isArray(window.dataLayer)}function Ce(e,t){const a={event:e,...t};ji()&&window.dataLayer.push(a)}function qi(e){Ce("gengage-on-init",{gengage_widget:e})}function Zi(e){Ce("gengage-show",{gengage_widget:e})}function Vi(e,t){Ce("gengage-suggested-question",{gengage_question_title:e,gengage_action_type:t})}function Gi(e){Ce("gengage-find-similars",{gengage_sku:e})}function Wi(e){Ce("gengage-compare-preselection",{gengage_sku:e})}function Ki(e){Ce("gengage-compare-selected",{gengage_skus:e,gengage_product_count:e.length})}function Yi(){Ce("gengage-compare-clear")}function Ji(e){Ce("gengage-compare-received",{gengage_product_count:e})}function Xi(e){Ce("gengage-like-product",{gengage_sku:e})}function Qi(){Ce("gengage-like-list")}function eo(e,t){Ce("gengage-search",{gengage_search_query:e,gengage_result_count:t})}function va(e,t){Ce("gengage-product-detail",{gengage_sku:e,gengage_product_name:t})}function to(e){Ce("gengage-compare-product",{gengage_skus:e,gengage_product_count:e.length})}function ao(){Ce("gengage-chatbot-maximized")}function no(e,t){Ce("gengage-cart-add",{gengage_sku:e,gengage_quantity:t})}function ro(){Ce("gengage-message-sent")}function rn(){Ce("gengage-message-received")}function io(){Ce("gengage-conversation-start")}function oo(){Ce("gengage-voice-input")}function De(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!1}))}function on(e,t){const a=n=>{t(n.detail)};return window.addEventListener(e,a),()=>window.removeEventListener(e,a)}function so(){const e=window.__gengageSessionId??sessionStorage.getItem("gengage_session_id")??null??crypto.randomUUID();return window.__gengageSessionId=e,sessionStorage.setItem("gengage_session_id",e),window.gengage||(window.gengage={}),window.gengage.sessionId=e,e}function co(e){return{sessionId:e?.sessionId??so(),...e}}var sn={"--gengage-chat-offset":"20px","--gengage-chat-launcher-width":"56px","--gengage-chat-launcher-height":"56px","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"1rem","--gengage-chat-header-height":"72px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"1200px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"12px","--gengage-simrel-card-radius":"0.75rem","--radius-control":"12px","--radius-card":"16px","--radius-panel":"24px","--radius-pill":"999px","--surface-card-muted":"#f8fafc","--text-secondary":"#4b5563","--text-muted":"#6b7280","--border-default":"rgba(17, 24, 39, 0.10)"};function lo(e){if(!e)return{...sn};const t={...sn,...e},a=e["--gengage-chat-launcher-size"];return a!==void 0&&(e["--gengage-chat-launcher-width"]===void 0&&(t["--gengage-chat-launcher-width"]=a),e["--gengage-chat-launcher-height"]===void 0&&(t["--gengage-chat-launcher-height"]=a)),t}var Ve={primaryColor:"#b7102a",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#111827",borderRadius:"0.75rem",fontFamily:'"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"14px",zIndex:"1000","--glov-chatbot-width":"420px","--glov-left-spacing":"260px","--chatbot-padding":"16px","--root-wrapper-background-color":"#f8f9fa","--root-wrapper-border-color":"#edeeef","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"1rem","--gengage-chat-header-height":"72px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"1200px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"0.75rem","--gengage-simrel-card-radius":"0.75rem","--client-primary":"#b7102a","--client-primary-hover":"color-mix(in srgb, #b7102a 88%, black 12%)","--client-primary-active":"color-mix(in srgb, #b7102a 78%, black 22%)","--client-primary-subtle":"color-mix(in srgb, #b7102a 12%, white)","--client-primary-soft":"color-mix(in srgb, #b7102a 20%, white)","--client-on-primary":"#ffffff","--client-focus-ring":"color-mix(in srgb, #b7102a 32%, transparent)","--surface-page":"#f6f7fb","--surface-shell":"#10131a","--surface-card":"#ffffff","--surface-card-muted":"#f8fafc","--surface-card-soft":"#f8fafc","--surface-elevated":"#ffffff","--surface-input":"#ffffff","--surface-overlay":"rgba(16, 19, 26, 0.52)","--text-primary":"#111827","--text-secondary":"#4b5563","--text-muted":"#6b7280","--text-inverse":"#f9fafb","--border-subtle":"rgba(17, 24, 39, 0.06)","--border-default":"rgba(17, 24, 39, 0.10)","--border-strong":"rgba(17, 24, 39, 0.18)","--shadow-1":"0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.06)","--shadow-2":"0 4px 12px rgba(16, 24, 40, 0.08)","--shadow-3":"0 10px 24px rgba(16, 24, 40, 0.12)","--radius-control":"12px","--radius-card":"16px","--radius-panel":"24px","--radius-pill":"999px","--success":"#16a34a","--warning":"#d97706","--error":"#dc2626","--info":"#2563eb","--rating":"#f5b301","--gengage-brand-accent-start":"#0b24d6","--gengage-brand-accent-mid":"#f768f2","--gengage-brand-accent-end":"#ffed74","--ai-accent-start":"#0b24d6","--ai-accent-end":"#f768f2","--ai-accent-soft":"linear-gradient(135deg, rgba(11, 36, 214, 0.08), rgba(247, 104, 242, 0.08))"},tt="gengage-global-toast-root",cn="gengage-global-toast-style",ya="gengage-global-toast-root--visible",go=4200,po=1500,ho=15e3,uo=["--gengage-font-family","--surface-card","--text-primary","--text-muted","--border-default","--radius-card","--shadow-3","--error","--ds-toast-error-bg","--ds-toast-error-border","--ds-toast-error-accent","--ds-toast-error-fg","--ds-toast-error-shadow"],ln=!1,st=null,mo=[/failed to fetch/i,/networkerror/i,/network request failed/i,/load failed/i,/err_network/i,/fetch failed/i,/network error/i];function gn(e){if(typeof navigator<"u"&&navigator.onLine===!1)return!0;const t=e instanceof Error?e.message.trim():"";return t?mo.some(a=>a.test(t)):!1}function fo(){ln||typeof window>"u"||typeof document>"u"||(ln=!0,on("gengage:global:error",e=>{bo(e)}))}function bo(e){if(typeof document>"u")return;const t=e.message.trim();if(!t)return;ko();const a=xo();_o(a),a.innerHTML="";const n=document.createElement("section");n.className="gengage-global-toast gengage-global-toast--error",n.setAttribute("role","status"),n.setAttribute("aria-live","polite");const r=document.createElement("div");r.className="gengage-global-toast-title",r.textContent=yo(e.source);const i=document.createElement("div");i.className="gengage-global-toast-message",i.textContent=t,n.appendChild(r),n.appendChild(i),a.appendChild(n),a.classList.add(ya),st&&(clearTimeout(st),st=null),e.sticky!==!0&&(st=setTimeout(()=>{vo()},wo(e.durationMs)))}function vo(){if(typeof document>"u")return;const e=document.getElementById(tt);e&&(e.classList.remove(ya),e.innerHTML="",st&&(clearTimeout(st),st=null))}function yo(e){switch(e){case"chat":return"Chat warning";case"qna":return"QnA warning";case"simrel":return"Widget warning";default:return"Connection warning"}}function xo(){const e=document.getElementById(tt);if(e instanceof HTMLElement)return e;const t=document.createElement("div");return t.id=tt,t.className="gengage-global-toast-root",document.body.appendChild(t),t}function _o(e){if(typeof document>"u"||typeof window>"u")return;const t=document.querySelector(".gengage-chat-root, .gengage-qna-container, .gengage-simrel-container, .gengage-simbut-root");if(!t)return;const a=window.getComputedStyle(t);for(const n of uo){const r=a.getPropertyValue(n).trim();r?e.style.setProperty(n,r):e.style.removeProperty(n)}}function wo(e){return typeof e!="number"||!Number.isFinite(e)?go:Math.min(ho,Math.max(po,Math.round(e)))}function ko(){if(document.getElementById(cn))return;const e=document.createElement("style");e.id=cn;const t=Ve["--surface-card"]??Ve.backgroundColor??"#ffffff",a=Ve["--text-primary"]??Ve.foregroundColor??"#111827",n=Ve["--border-default"]??"rgba(17, 24, 39, 0.10)",r=Ve["--error"]??"#dc2626",i=Ve["--shadow-3"]??"0 10px 24px rgba(16, 24, 40, 0.12)",o=Ve["--radius-card"]??"16px",s=Ve["--text-muted"]??"#6b7280";e.textContent=`
|
|
2
|
-
#${
|
|
1
|
+
(function(Me){Object.defineProperty(Me,Symbol.toStringTag,{value:"Module"});var Di=({element:t,renderElement:e})=>{if(!t.children||t.children.length===0)return null;const a=document.createElement("div");for(const n of t.children){const r=e(n);r&&a.appendChild(r)}return a};function Hi(t){const e=document.createElement("div");if(e.className=t.containerClassName,!t.spec.elements[t.spec.root])return e;const a=t.unknownRenderer??Di,n=i=>{const o=t.spec.elements[i];if(!o)return null;const s=t.registry[o.type];return s?s({elementId:i,element:o,spec:t.spec,context:t.context,renderElement:n}):a({elementId:i,element:o,spec:t.spec,context:t.context,renderElement:n})},r=n(t.spec.root);return r&&e.appendChild(r),e}function Ui(t,e){if(!e)return t;const a={...t};for(const[n,r]of Object.entries(e))r&&(a[n]=r);return a}var ji=new Set(["p","br","a","strong","b","em","i","u","ul","ol","li","h1","h2","h3","h4","h5","h6","span","div","table","thead","tbody","tr","th","td","hr","code","pre","blockquote","img","sup","sub","button"]),qi=new Set(["script","iframe","object","embed","form","input","textarea","select","style","link","meta","template","noscript"]),on={"*":new Set(["class"]),a:new Set(["href","target","rel"]),img:new Set(["src","alt","width","height"]),button:new Set(["type","disabled","aria-label","aria-hidden","title"]),div:new Set(["style"]),span:new Set(["style"]),p:new Set(["style"])};function Zi(t){return/^\s*javascript\s*:/i.test(t)}var Vi=new Set(["color","background-color","font-size","font-weight","font-style","font-family","text-align","text-decoration","line-height","letter-spacing","margin","margin-top","margin-right","margin-bottom","margin-left","padding","padding-top","padding-right","padding-bottom","padding-left","border","border-top","border-right","border-bottom","border-left","border-radius","border-color","border-width","border-style","width","max-width","min-width","height","max-height","min-height","display","vertical-align","white-space","word-break","overflow","opacity","visibility","list-style","list-style-type","text-transform","text-indent","text-overflow","box-sizing","flex","flex-direction","flex-wrap","justify-content","align-items","gap"]),Gi=/url\s*\(|expression\s*\(|javascript\s*:|\bimport\b|-moz-binding|behavior\s*:/i,Wi=new Set(["color","background-color","border","border-top","border-right","border-bottom","border-left","border-color","width","max-width","min-width","height","max-height","min-height","margin","margin-top","margin-right","margin-bottom","margin-left","padding","padding-top","padding-right","padding-bottom","padding-left","line-height","letter-spacing","gap","font-size"]);function Ki(t){const e=[];for(const a of t.split(";")){const n=a.trim();if(!n)continue;const r=n.indexOf(":");if(r===-1)continue;const i=n.slice(0,r).trim().toLowerCase(),o=n.slice(r+1).trim();if(!Vi.has(i))continue;const s=o.replace(/\/\*[\s\S]*?\*\//g,"");Gi.test(s)||s.includes("\\")&&!Wi.has(i)||(i==="list-style"||i==="list-style-type")&&/url/i.test(s)||e.push(n)}return e.join("; ")}function ya(t,e){if(t.nodeType===Node.TEXT_NODE)return;if(t.nodeType!==Node.ELEMENT_NODE){t.parentNode?.removeChild(t);return}const a=t,n=a.tagName.toLowerCase();if(qi.has(n)){a.parentNode?.removeChild(a);return}if(!ji.has(n)){const c=Array.from(a.childNodes);for(const l of c)e.insertBefore(l,a);e.removeChild(a);for(const l of c)ya(l,e);return}const r=on["*"]??new Set,i=on[n]??new Set,o=Array.from(a.attributes);for(const c of o){const l=c.name.toLowerCase();if(!r.has(l)&&!i.has(l)){a.removeAttribute(c.name);continue}if(Zi(c.value)){a.removeAttribute(c.name);continue}if(l==="style"){const d=Ki(c.value);d?a.setAttribute("style",d):a.removeAttribute("style");continue}}if(n==="a"){const c=a.getAttribute("href");if(c!==null){const l=c.trim().toLowerCase();!l.startsWith("http://")&&!l.startsWith("https://")&&!l.startsWith("mailto:")&&a.removeAttribute("href")}a.setAttribute("target","_blank"),a.setAttribute("rel","noopener noreferrer")}if(n==="img"){const c=a.getAttribute("src");c!==null&&(c.trim().toLowerCase().startsWith("https://")||a.removeAttribute("src"))}if(n==="button"){const c=a.getAttribute("type")?.trim().toLowerCase();(!c||c!=="button")&&a.setAttribute("type","button")}const s=Array.from(a.childNodes);for(const c of s)ya(c,a)}var sn=["http:","https:"];function je(t){const e=t.trim();if(!e)return!1;if(e.startsWith("/")&&!e.startsWith("//"))return!0;try{return sn.includes(new URL(e).protocol)}catch{return!1}}function ye(t){if(t.startsWith("/")&&!t.startsWith("//"))return!0;try{const e=new URL(t);return sn.includes(e.protocol)}catch{return!1}}function Se(t,e,a){(e==="href"||e==="src")&&!ye(a)||t.setAttribute(e,a)}function Ie(t){if(!t)return"";const e=new DOMParser().parseFromString(t,"text/html").body,a=Array.from(e.childNodes);for(const n of a)ya(n,e);return e.innerHTML}function Yi(){return typeof window<"u"&&Array.isArray(window.dataLayer)}function Ce(t,e){const a={event:t,...e};Yi()&&window.dataLayer.push(a)}function Ji(t){Ce("gengage-on-init",{gengage_widget:t})}function Xi(t){Ce("gengage-show",{gengage_widget:t})}function Qi(t,e){Ce("gengage-suggested-question",{gengage_question_title:t,gengage_action_type:e})}function eo(t){Ce("gengage-find-similars",{gengage_sku:t})}function to(t){Ce("gengage-compare-preselection",{gengage_sku:t})}function ao(t){Ce("gengage-compare-selected",{gengage_skus:t,gengage_product_count:t.length})}function no(){Ce("gengage-compare-clear")}function ro(t){Ce("gengage-compare-received",{gengage_product_count:t})}function io(t){Ce("gengage-like-product",{gengage_sku:t})}function oo(){Ce("gengage-like-list")}function so(t,e){Ce("gengage-search",{gengage_search_query:t,gengage_result_count:e})}function xa(t,e){Ce("gengage-product-detail",{gengage_sku:t,gengage_product_name:e})}function co(t){Ce("gengage-compare-product",{gengage_skus:t,gengage_product_count:t.length})}function lo(){Ce("gengage-chatbot-maximized")}function go(t,e){Ce("gengage-cart-add",{gengage_sku:t,gengage_quantity:e})}function po(){Ce("gengage-message-sent")}function cn(){Ce("gengage-message-received")}function ho(){Ce("gengage-conversation-start")}function uo(){Ce("gengage-voice-input")}function qe(t,e){window.dispatchEvent(new CustomEvent(t,{detail:e,bubbles:!1}))}function ln(t,e){const a=n=>{e(n.detail)};return window.addEventListener(t,a),()=>window.removeEventListener(t,a)}function mo(){const t=window.__gengageSessionId??sessionStorage.getItem("gengage_session_id")??null??crypto.randomUUID();return window.__gengageSessionId=t,sessionStorage.setItem("gengage_session_id",t),window.gengage||(window.gengage={}),window.gengage.sessionId=t,t}function fo(t){return{sessionId:t?.sessionId??mo(),...t}}var dn={"--gengage-chat-offset":"20px","--gengage-chat-launcher-width":"56px","--gengage-chat-launcher-height":"56px","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"1rem","--gengage-chat-header-height":"72px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"1200px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"12px","--gengage-simrel-card-radius":"0.75rem","--radius-control":"12px","--radius-card":"16px","--radius-panel":"24px","--radius-pill":"999px","--surface-card-muted":"#f8fafc","--text-secondary":"#4b5563","--text-muted":"#6b7280","--border-default":"rgba(17, 24, 39, 0.10)"};function bo(t){if(!t)return{...dn};const e={...dn,...t},a=t["--gengage-chat-launcher-size"];return a!==void 0&&(t["--gengage-chat-launcher-width"]===void 0&&(e["--gengage-chat-launcher-width"]=a),t["--gengage-chat-launcher-height"]===void 0&&(e["--gengage-chat-launcher-height"]=a)),e}var Ye={primaryColor:"#b7102a",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#111827",borderRadius:"0.75rem",fontFamily:'"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"14px",zIndex:"1000","--glov-chatbot-width":"420px","--glov-left-spacing":"260px","--chatbot-padding":"16px","--root-wrapper-background-color":"#f8f9fa","--root-wrapper-border-color":"#edeeef","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"1rem","--gengage-chat-header-height":"72px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"1200px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"0.75rem","--gengage-simrel-card-radius":"0.75rem","--client-primary":"#b7102a","--client-primary-hover":"color-mix(in srgb, #b7102a 88%, black 12%)","--client-primary-active":"color-mix(in srgb, #b7102a 78%, black 22%)","--client-primary-subtle":"color-mix(in srgb, #b7102a 12%, white)","--client-primary-soft":"color-mix(in srgb, #b7102a 20%, white)","--client-on-primary":"#ffffff","--client-focus-ring":"color-mix(in srgb, #b7102a 32%, transparent)","--surface-page":"#f6f7fb","--surface-shell":"#10131a","--surface-card":"#ffffff","--surface-card-muted":"#f8fafc","--surface-card-soft":"#f8fafc","--surface-elevated":"#ffffff","--surface-input":"#ffffff","--surface-overlay":"rgba(16, 19, 26, 0.52)","--text-primary":"#111827","--text-secondary":"#4b5563","--text-muted":"#6b7280","--text-inverse":"#f9fafb","--border-subtle":"rgba(17, 24, 39, 0.06)","--border-default":"rgba(17, 24, 39, 0.10)","--border-strong":"rgba(17, 24, 39, 0.18)","--shadow-1":"0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.06)","--shadow-2":"0 4px 12px rgba(16, 24, 40, 0.08)","--shadow-3":"0 10px 24px rgba(16, 24, 40, 0.12)","--radius-control":"12px","--radius-card":"16px","--radius-panel":"24px","--radius-pill":"999px","--success":"#16a34a","--warning":"#d97706","--error":"#dc2626","--info":"#2563eb","--rating":"#f5b301","--gengage-brand-accent-start":"#0b24d6","--gengage-brand-accent-mid":"#f768f2","--gengage-brand-accent-end":"#ffed74","--ai-accent-start":"#0b24d6","--ai-accent-end":"#f768f2","--ai-accent-soft":"linear-gradient(135deg, rgba(11, 36, 214, 0.08), rgba(247, 104, 242, 0.08))"},ot="gengage-global-toast-root",gn="gengage-global-toast-style",_a="gengage-global-toast-root--visible",vo=4200,yo=1500,xo=15e3,_o=["--gengage-font-family","--surface-card","--text-primary","--text-muted","--border-default","--radius-card","--shadow-3","--error","--ds-toast-error-bg","--ds-toast-error-border","--ds-toast-error-accent","--ds-toast-error-fg","--ds-toast-error-shadow"],pn=!1,pt=null,wo=[/failed to fetch/i,/networkerror/i,/network request failed/i,/load failed/i,/err_network/i,/fetch failed/i,/network error/i];function hn(t){if(typeof navigator<"u"&&navigator.onLine===!1)return!0;const e=(t instanceof Error?t.message:typeof t=="string"?t:"").trim();return e?wo.some(a=>a.test(e)):!1}function ko(){pn||typeof window>"u"||typeof document>"u"||(pn=!0,ln("gengage:global:error",t=>{So(t)}))}function So(t){if(typeof document>"u")return;const e=t.message.trim();if(!e)return;Lo();const a=Po();To(a),a.innerHTML="";const n=document.createElement("section");n.className="gengage-global-toast gengage-global-toast--error",n.setAttribute("role","status"),n.setAttribute("aria-live","polite");const r=document.createElement("div");r.className="gengage-global-toast-title",r.textContent=Eo(t.source);const i=document.createElement("div");i.className="gengage-global-toast-message",i.textContent=e,n.appendChild(r),n.appendChild(i),a.appendChild(n),a.classList.add(_a),pt&&(clearTimeout(pt),pt=null),t.sticky!==!0&&(pt=setTimeout(()=>{Co()},Ao(t.durationMs)))}function Co(){if(typeof document>"u")return;const t=document.getElementById(ot);t&&(t.classList.remove(_a),t.innerHTML="",pt&&(clearTimeout(pt),pt=null))}function Eo(t){switch(t){case"chat":return"Chat warning";case"qna":return"QnA warning";case"simrel":return"Widget warning";default:return"Connection warning"}}function Po(){const t=document.getElementById(ot);if(t instanceof HTMLElement)return t;const e=document.createElement("div");return e.id=ot,e.className="gengage-global-toast-root",document.body.appendChild(e),e}function To(t){if(typeof document>"u"||typeof window>"u")return;const e=document.querySelector(".gengage-chat-root, .gengage-qna-container, .gengage-simrel-container, .gengage-simbut-root");if(!e)return;const a=window.getComputedStyle(e);for(const n of _o){const r=a.getPropertyValue(n).trim();r?t.style.setProperty(n,r):t.style.removeProperty(n)}}function Ao(t){return typeof t!="number"||!Number.isFinite(t)?vo:Math.min(xo,Math.max(yo,Math.round(t)))}function Lo(){if(document.getElementById(gn))return;const t=document.createElement("style");t.id=gn;const e=Ye["--surface-card"]??Ye.backgroundColor??"#ffffff",a=Ye["--text-primary"]??Ye.foregroundColor??"#111827",n=Ye["--border-default"]??"rgba(17, 24, 39, 0.10)",r=Ye["--error"]??"#dc2626",i=Ye["--shadow-3"]??"0 10px 24px rgba(16, 24, 40, 0.12)",o=Ye["--radius-card"]??"16px",s=Ye["--text-muted"]??"#6b7280";t.textContent=`
|
|
2
|
+
#${ot} {
|
|
3
3
|
position: fixed;
|
|
4
4
|
top: 16px;
|
|
5
5
|
right: 16px;
|
|
6
6
|
z-index: 2147483646;
|
|
7
7
|
pointer-events: none;
|
|
8
8
|
}
|
|
9
|
-
#${
|
|
9
|
+
#${ot}.${_a} {
|
|
10
10
|
pointer-events: auto;
|
|
11
11
|
}
|
|
12
|
-
#${
|
|
12
|
+
#${ot} .gengage-global-toast {
|
|
13
13
|
min-width: 260px;
|
|
14
14
|
max-width: min(92vw, 420px);
|
|
15
15
|
border-radius: var(--radius-card, ${o});
|
|
16
16
|
border: 1px solid var(--ds-toast-error-border, color-mix(in srgb, var(--error, ${r}) 18%, var(--border-default, ${n})));
|
|
17
17
|
border-left: 4px solid var(--ds-toast-error-accent, var(--error, ${r}));
|
|
18
|
-
background: var(--ds-toast-error-bg, color-mix(in srgb, var(--error, ${r}) 5%, var(--surface-card, ${
|
|
18
|
+
background: var(--ds-toast-error-bg, color-mix(in srgb, var(--error, ${r}) 5%, var(--surface-card, ${e})));
|
|
19
19
|
color: var(--ds-toast-error-fg, color-mix(in srgb, var(--error, ${r}) 22%, var(--text-primary, ${a})));
|
|
20
20
|
box-shadow: var(--ds-toast-error-shadow, var(--shadow-3, ${i}));
|
|
21
21
|
padding: 10px 12px;
|
|
22
|
-
font-family: var(--gengage-font-family, ${JSON.stringify(
|
|
22
|
+
font-family: var(--gengage-font-family, ${JSON.stringify(Ye.fontFamily??'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif')});
|
|
23
23
|
font-size: 13px;
|
|
24
24
|
line-height: 1.4;
|
|
25
25
|
animation: gengage-global-toast-in 180ms ease-out forwards;
|
|
26
26
|
}
|
|
27
|
-
#${
|
|
27
|
+
#${ot} .gengage-global-toast-title {
|
|
28
28
|
margin: 0 0 4px;
|
|
29
29
|
font-size: 12px;
|
|
30
30
|
font-weight: 700;
|
|
31
31
|
color: var(--text-muted, ${s});
|
|
32
32
|
}
|
|
33
|
-
#${
|
|
33
|
+
#${ot} .gengage-global-toast-message {
|
|
34
34
|
margin: 0;
|
|
35
35
|
font-weight: 500;
|
|
36
36
|
}
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
transform: translateY(0);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
`,document.head.appendChild(
|
|
48
|
-
`);r=u.pop()??"";for(const f of u)if(un(f,t))return}if(r.trim()&&un(r,t))return}catch(c){if(c instanceof DOMException&&c.name==="AbortError")return;t.onError?.(c instanceof Error?c:new Error(String(c)))}finally{s||a.releaseLock()}t.onDone?.()}var mn=3,Ho=(e,t)=>{const a=e.replace(/\s+/g," ").trim().replace(/^[,.;:!?•-]+|[,.;:!?•-]+$/g,"");if(!a)return"";const n=t?.stripLeadingStopWords?a.replace(/^(?:daha|için)\s+/i,"").trim():a;return n?n.split(/\s+/).slice(0,3).join(" ").trim():""},xa=(e,t)=>e?e.split(/[•,;:/()]|(?:\sve\s)|(?:\sand\s)|(?:\sile\s)|(?:\sfor\s)|(?:\swith\s)/i).map(a=>Ho(a,t)).filter(Boolean):[];function Uo(e){const t=(e.display_keywords??[]).flatMap(r=>xa(r,{stripLeadingStopWords:!0})),a=t.filter((r,i)=>t.indexOf(r)===i);if(a.length>0)return a.slice(0,mn);const n=[...xa(e.chosen_attribute,{stripLeadingStopWords:!0}),...xa(e.short_name)];return n.filter((r,i)=>n.indexOf(r)===i).slice(0,mn)}function jo(e){return Uo(e).join(" • ")}function fn(e){return e==="beauty_consulting"||e==="account_expert"}function Lt(...e){for(const t of e){if(typeof t!="string")continue;const a=t.trim();if(a.length>0)return a}}function It(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0).map(t=>t.trim()):[]}function ft(e){const t={...e},a=Lt(t.sku),n=It(t.group_skus);if(a?t.sku=a:delete t.sku,n.length>0?t.group_skus=n:delete t.group_skus,a||n.length>0)delete t.image_url;else{const r=Lt(t.image_url);r?t.image_url=r:delete t.image_url}return t}function qo(e){if(typeof e.type!="string")return null;if(Zo(e))return e;const t=e;switch(t.type){case"outputText":return Vo(t);case"suggestedActions":return Go(t);case"productList":return Wo(t);case"productDetails":return Ko(t);case"productDetailsSimilars":return Yo(t);case"comparisonTable":return Jo(t);case"context":return ts(t);case"chatStreamEnd":return as();case"loading":return ns(t);case"panelLoading":return rs(t);case"similarLoading":return is(t);case"redirect":return os(t);case"error":return ss(t);case"dummy":return cs(t);case"launcherAction":return ls(t);case"text":return _a(t);case"productItem":return gs(t);case"text_image":return bn(t);case"quick_qna":return vn(t);case"reviewHighlights":return ds(t);case"aiProductSuggestions":return ps(t);case"aiProductGroupings":return hs(t);case"aiSuggestedSearches":return fs(t);case"getGroundingReview":return bs(t);case"voice":return vs(t);case"uiSpec":return Es(t);default:return null}}function Zo(e){const t=e.type;if(typeof t!="string")return!1;switch(t){case"metadata":return typeof e.sessionId=="string"&&typeof e.model=="string";case"text_chunk":return typeof e.content=="string";case"ui_spec":{const a=e.widget;if(a!=="chat"&&a!=="qna"&&a!=="simrel")return!1;const n=Te(e.spec);return n?typeof n.root=="string"&&Te(n.elements)!==null:!1}case"action":{const a=Te(e.action);return a!==null&&typeof a.kind=="string"}case"error":return typeof e.code=="string"&&typeof e.message=="string";case"done":return!0;default:return!1}}function Vo(e){const t=re(e.payload.text,e.payload.plain_text)??"",a=re(e.payload.plain_text,e.payload.text)??t;if(e.payload.is_error)return{type:"error",code:"BACKEND_ERROR",message:a||"Backend returned an error"};const n={type:"text_chunk",content:t,final:!0},r=e.payload.sku_to_product_item;r&&typeof r=="object"&&!Array.isArray(r)&&(n.skuToProductItem=r);const i=e.payload.product_mentions;Array.isArray(i)&&i.length>0&&(n.productMentions=i.map(c=>{if(typeof c!="object"||c===null||typeof c.sku!="string")return null;const l=typeof c.short_name=="string"?c.short_name:"";if(!l)return null;const g=(typeof c.url=="string"&&c.url.trim()?c.url.trim():void 0)??(()=>{const d=n.skuToProductItem?.[c.sku];return typeof d?.url=="string"&&d.url.trim()?d.url.trim():void 0})();return g?{sku:c.sku,short_name:l,url:g}:{sku:c.sku,short_name:l}}).filter(c=>c!==null));const o=e.payload.conversation_mode;typeof o=="string"&&o&&(n.conversationMode=o);const s=e.payload.render_hint;return typeof s=="string"&&s&&(n.renderHint=s),e.payload.kvkk===!0&&(n.kvkk=!0),n}function Go(e){return yn((e.payload.actions??[]).map(t=>{const a=re(t.title)??"",n=He(t.requestDetails,a),r=n?{label:a,action:n}:null;return r?(typeof t.icon=="string"&&(r.icon=t.icon),typeof t.image=="string"&&(r.image=t.image),r):null}).filter(Nt),"chat")}function Wo(e){const t=Array.isArray(e.payload.grouped_assignment)?e.payload.grouped_assignment:[],a=(Array.isArray(e.payload.style_variations)?e.payload.style_variations:[]).map(s=>{const c=re(s.style_label);if(!c)return null;const l=re(s.style_mood),g=re(s.image_url??void 0),d=(Array.isArray(s.product_list)?s.product_list:[]).map(u=>{const f=Te(u);return f?Sa(Te(f.product_detail)??Te(f.product)??f):null}).filter(Nt),p=Array.isArray(s.recommendation_groups)?s.recommendation_groups.map(u=>({label:re(u.label)??"",reason:re(u.reason)??"",skus:Array.isArray(u.skus)?u.skus.filter(f=>typeof f=="string"&&f.trim().length>0):[]})):[];return{style_label:c,style_mood:l??"",...g?{image_url:g}:{},...typeof s.status=="string"?{status:s.status}:{},product_list:d,recommendation_groups:p}}).filter(Nt),n=e.payload.product_list??[],r=fn(e.payload.source)&&a.length>0?a[0].product_list:null,i=r?xs(r,"chat"):t.length>0?ys(t,n,"chat")??ka(n,"chat"):ka(n,"chat");i.panelHint="panel";const o=i.spec.elements[i.spec.root];if(o){const s={};typeof e.payload.offset=="number"&&(s.offset=e.payload.offset),typeof e.payload.end_of_list=="boolean"&&(s.endOfList=e.payload.end_of_list),typeof e.payload.title=="string"&&(s.panelTitle=e.payload.title),typeof e.payload.source=="string"&&(s.source=e.payload.source),a.length>0&&(s.styleVariations=a),e.payload.replace_panel===!0&&(s.replacePanel=!0),(e.payload.ranking_state==="pending"||e.payload.ranking_state==="final")&&(s.rankingState=e.payload.ranking_state);const c=e.payload.sequence_id??e.payload.search_id;typeof c=="string"&&c.length>0&&(s.sequenceId=c),Object.keys(s).length>0&&(o.props={...o.props,...s})}return i}function Ko(e){const t=e.payload.productDetails;if(!t)return ws("chat");const a=bt(t);return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:{...t,...a}}}}},panelHint:"panel"}}function Yo(e){const t=ka(e.payload.similarProducts??[],"chat"),a=t.spec.elements[t.spec.root];return a&&(a.props={...a.props,similarsAppend:!0}),{...t,panelHint:"panel"}}function Jo(e){const t=e.payload.multiple_product_details??[],a=e.payload,n={key_differences:a.key_differences,recommended_choice:a.recommended_choice,recommended_choice_sku:a.recommended_choice_sku,special_considerations:a.special_considerations,criteria_view:a.criteria_view,criteria_view_short:a.criteria_view_short,compared_field_names:a.compared_field_names,winner_product:a.winner_product,winner_hits:a.winner_hits,...e.payload.product_comparison_framework??{}},r=e.payload.table,i=e.payload.features_list,o=[];for(const m of t){const h=bt(m);o.push(h)}const s=Xo(r,o,n,i);let c;n?.recommended_choice_sku?c=n.recommended_choice_sku:n?.winner_product&&n.winner_product.length>0&&(c=n.winner_product[0]?.product_detail?.sku??n.winner_product[0]?.sku);const l=c?o.find(m=>m.sku===c)??o[0]:o[0],g=[];if(Array.isArray(n?.key_differences))for(const m of n.key_differences)typeof m=="string"&&g.push(m);const d=xn(n?.special_considerations),p=n?.recommended_choice,u=n?.winner_hits,f={};for(const m of o){const h=m.sku;h&&(f[h]={title:m.name??h,type:"launchSingleProduct",payload:{sku:h}})}const b={products:o,attributes:s,highlights:g,productActions:f};return l&&(b.recommended=l),d.length>0&&(b.specialCases=d),p&&(b.recommendedText=p),u&&(b.winnerHits=u),typeof n?.key_differences=="string"&&(b.keyDifferencesHtml=n.key_differences),n?.special_considerations&&(b.specialConsiderations=n.special_considerations),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ComparisonTable",props:b}}},panelHint:"panel"}}function Xo(e,t,a,n){if(!e)return[];const r=Object.entries(e);if(r.length===0)return[];const i=r[0]?.[1];if(Array.isArray(i)){const d=a.criteria_view??a.criteria_view_short??{},p=a.compared_field_names??Object.keys(e),u=[];for(const f of p){const b=e[f];if(!b||!Array.isArray(b))continue;const m=d[f]??f;u.push({label:m,values:b.map(h=>typeof h=="string"?h:String(h??""))})}return u}const o=e,s=t.map(d=>String(d.sku??"")).filter(d=>d.length>0),c=a.criteria_view??a.criteria_view_short??{},l=(n&&n.length>0?n:a.compared_field_names&&a.compared_field_names.length>0?a.compared_field_names:Qo(o)).filter(d=>d!=="name"&&d!=="name_short"&&!d.endsWith("_short")),g=[];for(const d of l){const p=s.map(f=>{const b=o[f];if(!b||typeof b!="object")return"";const m=b[`${d}_short`],h=b[d];return es(m??h)});if(p.every(f=>f.length===0))continue;const u=c[d]??d;g.push({label:u,values:p})}return g}function Qo(e){const t=[],a=new Set;for(const n of Object.values(e))if(!(!n||typeof n!="object"))for(const r of Object.keys(n))a.has(r)||(a.add(r),t.push(r));return t}function es(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function ts(e){return{type:"metadata",sessionId:"",model:"",meta:{panel:e.payload.panel,messages:e.payload.messages,message_id:e.payload.message_id}}}function as(){return{type:"done"}}function ns(e){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,loadingText:e.payload.text,thinkingMessages:e.payload.thinking_messages,dynamicLoading:e.payload.is_dynamic===!0}}}function rs(e){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,panelLoading:!0,panelPendingType:e.payload?.pending_type,loadingText:e.payload?.text}}}function is(e){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,similarPanelLoading:!0,panelPendingType:e.payload?.pending_type,loadingText:e.payload?.text}}}function os(e){const t=re(e.payload.url);return t?{type:"action",action:{kind:"navigate",url:t,newTab:e.payload.new_tab===!0}}:{type:"metadata",sessionId:"",model:"",meta:{redirect:e.payload,redirectTarget:re(e.payload.to)}}}function ss(e){return{type:"error",code:"BACKEND_ERROR",message:re(e.payload?.text,e.payload?.message,e.payload?.error)??"Backend returned an error"}}function cs(e){return{type:"metadata",sessionId:"",model:"",meta:{noop:!0}}}function ls(e){const t=e.payload??{};if(Array.isArray(t.action_list)){const r={action_list:t.action_list},i=typeof t.type=="string"?t.type:void 0,o=typeof t.theme=="string"?t.theme:void 0;return i!==void 0&&(r.type=i),o!==void 0&&(r.theme=o),vn({type:"quick_qna",payload:r})}const a=Te(t.action);if(a){const r={action:a},i=typeof t.text=="string"?t.text:void 0,o=typeof t.image_url=="string"?t.image_url:void 0,s=typeof t.theme=="string"?t.theme:void 0;return i!==void 0&&(r.text=i),o!==void 0&&(r.image_url=o),s!==void 0&&(r.theme=s),bn({type:"text_image",payload:r})}const n=typeof t.text=="string"?t.text:"";if(n){const r={text:n},i=typeof t.type=="string"?t.type:void 0,o=typeof t.theme=="string"?t.theme:void 0,s=Te(t.payload)??void 0;return i!==void 0&&(r.type=i),s!==void 0&&(r.payload=s),o!==void 0&&(r.theme=o),_a({type:"text",payload:r})}return{type:"metadata",sessionId:"",model:"",meta:{launcherAction:t}}}function _a(e){const t={text:re(e.payload.text)??""};return typeof e.payload.theme=="string"&&(t.theme=e.payload.theme),e.payload.payload!==void 0&&(t.payload=e.payload.payload),{type:"ui_spec",widget:"qna",spec:{root:"root",elements:{root:{type:"QuestionHeading",props:t}}}}}function gs(e){return _s(e.payload,"qna")}function bn(e){const t=re(e.payload.text)??"",a=He(e.payload.action,t);if(a){const r={label:t||a.title,action:a};return typeof e.payload.image_url=="string"&&(r.image=e.payload.image_url),typeof e.payload.theme=="string"&&(r.theme=e.payload.theme),{type:"ui_spec",widget:"qna",spec:{root:"root",elements:{root:{type:"ActionButton",props:r}}}}}const n={text:t};return typeof e.payload.theme=="string"&&(n.theme=e.payload.theme),_a({type:"text",payload:n})}function vn(e){return yn((e.payload.action_list??[]).map(t=>{const a=re(t.title)??"",n=He(t.requestDetails,a),r=n?{label:a,action:n}:null;return r?(typeof t.icon=="string"&&(r.icon=t.icon),typeof t.image=="string"&&(r.image=t.image),r):null}).filter(Nt),"qna")}function ds(e){const t={reviews:(e.payload.reviews??[]).map(a=>{const n={};return typeof a.review_class=="string"&&(n.review_class=a.review_class),typeof a.review_text=="string"&&(n.review_text=a.review_text),(typeof a.review_rating=="string"||typeof a.review_rating=="number")&&(n.review_rating=a.review_rating),typeof a.review_tag=="string"&&(n.review_tag=a.review_tag),n})};return typeof e.payload.sku=="string"&&(t.sku=e.payload.sku),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ReviewHighlights",props:t}}}}}function ps(e){const t=e.payload.product_suggestions??[],a=[];for(let n=0;n<t.length;n++){const r=t[n];if(!r)continue;const i=ks(r);if(!i)continue;const o={product:i},s=He(r.requestDetails,i.name);s&&(o.action=s),typeof r.role=="string"&&(o.role=r.role),typeof r.reason=="string"&&(o.reason=r.reason),typeof r.review_highlight=="string"&&(o.reviewHighlight=r.review_highlight),Array.isArray(r.labels)&&(o.labels=r.labels),typeof r.expert_quality_score=="number"&&(o.expertQualityScore=r.expert_quality_score),a.push(o)}return a.length===0?{type:"metadata",sessionId:"",model:"",meta:{aiProductSuggestions:e.payload.product_suggestions??[]}}:{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"AITopPicks",props:{suggestions:a}}}}}}function hs(e){const t=e.payload.product_groupings??[],a=[],n=[];for(let r=0;r<t.length;r++){const i=t[r];if(!i)continue;const o=re(i.name)??"",s=re(i.description),c=re(i.highlight),l=Array.isArray(i.labels)?xn(i.labels):[],g=re(i.sku,i.repr_sku),d=re(i.image,i.repr_image),p=us(i,o,g),u=(Array.isArray(i.group_products)?i.group_products:[]).map(m=>{const h=Te(m);return h?Sa(h):null}).filter(Nt),f=d??re(...u.map(m=>m.imageUrl));if(o&&u.length>0){const m={groupName:o,products:u};f&&(m.image=f),s&&(m.description=s),c&&(m.highlight=c),l.length>0&&(m.labels=l),a.push(m)}if(!p)continue;const b={name:o,action:p};l.length>0&&(b.labels=l),d!==void 0&&(b.image=d),n.push(b)}return a.length>0?{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"CategoriesContainer",props:{groups:a}}}},panelHint:"panel"}:n.length===0?{type:"metadata",sessionId:"",model:"",meta:{aiProductGroupings:e.payload.product_groupings??[]}}:{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"AIGroupingCards",props:{entries:n}}}}}}function us(e,t,a){const n=Te(e.requestDetails);if(n){if(n.type!=="findSimilar")return He(n,t);const o={...Te(n.payload)??{}};a&&!Lt(o.sku)&&(o.sku=a);const s=It(e.group_skus);return s.length>0&&(o.group_skus=s),He({...n,payload:ft(o)},t)}const r={};a&&(r.sku=a);const i=It(e.group_skus);return i.length>0&&(r.group_skus=i),Object.keys(r).length===0?null:He({type:"findSimilar",payload:ft(r)},t)}function ms(e,t){const a=Te(e.requestDetails),n=Te(a?.payload),r=re(e.detailed_user_message),i=e.group_skus&&Array.isArray(e.group_skus)?It(e.group_skus):It(n?.group_skus),o=re(e.sku,e.representative_product_sku,n?.sku);if(a?.type==="findSimilar"){const c={...n??{}};return o&&(c.sku=o),i.length>0&&(c.group_skus=i),r&&(c.input=r,Lt(c.text)||(c.text=r)),c.is_search_suggestion=1,He({...a,payload:ft(c)},t)}if(o){const c={sku:o,is_search_suggestion:1};return i.length>0&&(c.group_skus=i),r&&(c.input=r,c.text=r),He({type:"findSimilar",payload:ft(c)},t)}const s={...n??{},is_suggested_text:1,is_search_suggestion:1};return r&&!Lt(s.text)&&(s.text=r),i.length>0&&(s.group_skus=i),He(a?.type==="inputText"?{...a,payload:s}:{type:"inputText",payload:s},t)}function fs(e){const t=e.payload.suggested_searches??[],a=[];for(let n=0;n<t.length;n++){const r=t[n];if(!r)continue;const i=re(r.short_name,r.chosen_attribute,r.detailed_user_message)??`Search ${n+1}`,o=ms(r,i);if(!o)continue;const s={shortName:i,action:o},c=re(r.detailed_user_message);c&&c!==i&&(s.detailedMessage=c);const l=jo(r);l&&l!==i&&l!==(c??"")&&(s.whyDifferent=l),typeof r.image=="string"&&(s.image=r.image),a.push(s)}return a.length===0?{type:"metadata",sessionId:"",model:"",meta:{aiSuggestedSearches:e.payload.suggested_searches??[]}}:{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"AISuggestedSearchCards",props:{entries:a}}}}}}function bs(e){const t=e.payload,a=He(t.requestDetails??t.request_details,re(t.review_count,t.reviewCount,t.text,t.title)??"Show product reviews");if(!a)return{type:"metadata",sessionId:"",model:"",meta:{groundingReview:t}};const n={action:a};return t.title&&(n.title=t.title),t.text&&(n.text=t.text),t.review_count?n.reviewCount=t.review_count:typeof t.reviewCount=="string"&&t.reviewCount.trim()&&(n.reviewCount=t.reviewCount),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"GroundingReviewCard",props:n}}}}}function vs(e){return{type:"metadata",sessionId:"",model:"",meta:{voice:e.payload}}}function wa(e,t){const a={product:e,index:t},n=e,r=typeof n.sku=="string"?n.sku:void 0;return r&&(a.action={title:typeof n.name=="string"?n.name:"",type:"launchSingleProduct",payload:{sku:r}}),{type:"ProductCard",props:a}}function yn(e,t){const a={},n=[];for(let r=0;r<e.length;r++){const i=e[r];if(!i)continue;const o=`action-${r}`;n.push(o);const s={label:i.label,action:i.action};i.icon!==void 0&&(s.icon=i.icon),i.image!==void 0&&(s.image=i.image),i.description!==void 0&&(s.description=i.description),a[o]={type:"ActionButton",props:s}}return a.root={type:"ActionButtons",props:{buttons:e.map(r=>{const i={label:r.label,action:r.action};return r.image!==void 0&&(i.image=r.image),r.description!==void 0&&(i.description=r.description),r.icon!==void 0&&(i.icon=r.icon),i})},children:n},{type:"ui_spec",widget:t,spec:{root:"root",elements:a}}}function ka(e,t){const a={},n=[];for(let r=0;r<e.length;r++){const i=e[r];if(!i)continue;const o=bt(i),s=`product-${r}`;n.push(s),a[s]=wa(o,r)}return a.root={type:"ProductGrid",props:{layout:"grid"},children:n},{type:"ui_spec",widget:t,spec:{root:"root",elements:a}}}function ys(e,t,a){const n=new Map;for(const l of t)l?.sku&&n.set(l.sku,l);if(n.size===0)return null;const r=new Set,i={},o=[],s=[];let c=0;for(let l=0;l<e.length;l++){const g=e[l],d=re(g?.title)??"",p=Array.isArray(g?.skus)?g.skus:[],u=[];for(let f=0;f<p.length;f++){const b=typeof p[f]=="string"?p[f].trim():"";if(!b||r.has(b))continue;const m=n.get(b);if(!m)continue;r.add(b);const h=`product-${l}-${f}`,C=bt(m);o.push(h),u.push(h),i[h]=wa(C,c),c+=1}u.length>0&&s.push({title:d,children:u})}return s.length===0||r.size<n.size?null:(i.root={type:"ProductGrid",props:{layout:"grouped",productSections:s},children:o},{type:"ui_spec",widget:a,spec:{root:"root",elements:i}})}function xs(e,t){const a={},n=[];for(let r=0;r<e.length;r++){const i=e[r];if(!i)continue;const o=`product-${r}`;n.push(o),a[o]=wa(i,r)}return a.root={type:"ProductGrid",props:{layout:"grid"},children:n},{type:"ui_spec",widget:t,spec:{root:"root",elements:a}}}function _s(e,t){return{type:"ui_spec",widget:t,spec:{root:"root",elements:{root:{type:"ProductCard",props:{product:bt(e),index:0}}}}}}function ws(e){return{type:"ui_spec",widget:e,spec:{root:"root",elements:{root:{type:"ActionButtons",props:{buttons:[]},children:[]}}}}}function ks(e){const t=re(e.sku),a=re(e.short_name),n={...Te(e.product_item)??e},r=re(e.discount_reason,e.discountReason);return r&&!re(n.discount_reason,n.discountReason)&&(n.discount_reason=r),Sa(n,t,a)}function Sa(e,t,a){const n=re(e.sku,t),r=re(e.name,a);if(!n||!r)return null;const i={sku:n,name:r},o=re(e.brand);o&&(i.brand=o);const s=re(e.url);s&&(i.url=s);const c=Ss(e.images);if(c.length>0)i.images=c;else{const b=re(e.image,e.image_url,e.imageUrl);b&&(i.images=[b])}const l=zt(e.price_discounted);l!==void 0&&(i.price_discounted=l);const g=zt(e.price);g!==void 0&&(i.price=g);const d=zt(e.rating);d!==void 0&&(i.rating=d);const p=zt(e.review_count)??zt(e.reviewCount);p!==void 0&&(i.review_count=p);const u=re(e.cart_code,e.cartCode);u&&(i.cart_code=u),typeof e.in_stock=="boolean"&&(i.in_stock=e.in_stock),typeof e.inStock=="boolean"&&(i.in_stock=e.inStock);const f=re(e.discount_reason,e.discountReason);return f&&(i.discount_reason=f),bt(i)}function He(e,t){const a=Te(e);if(!a)return null;const n=a.type;if(typeof n!="string"||n.length===0)return null;const r={title:t||n,type:n};return a.payload!==void 0&&(r.payload=a.payload),r}function Te(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function re(...e){for(const t of e)if(typeof t=="string"){const a=t.trim();if(a.length>0)return a}}function Ss(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function xn(e){if(typeof e=="string"){const t=e.trim();return t?[t]:[]}return Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(t=>t.length>0):[]}function zt(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){let t;e.includes(".")&&e.includes(",")?t=e.replace(/\./g,"").replace(",","."):t=e.replace(",",".");const a=Number(t);if(Number.isFinite(a))return a}}function Nt(e){return e!=null}var Cs=new Set(["sku","name","brand","images","price","price_discounted","price_discount_rate","price_currency","discount_reason","url","rating","review_count","cart_code","in_stock","description","description_html","features","specifications","short_name","category_ids","category_names","variants","facet_hits","promotions"]);function bt(e){const t=e.price_discounted!=null&&e.price_discounted>0,a=t?e.price_discounted:e.price,n=t&&e.price!=null?e.price:void 0;let r;n!=null&&a!=null&&n>0?r=Math.round((n-a)/n*100):e.price_discount_rate!=null&&e.price_discount_rate>0&&(r=e.price_discount_rate);const i=re(e.brand),o=re(e.name)??e.sku,s=i&&!o.toLowerCase().startsWith(i.toLowerCase())?`${i} ${o}`:o,c={sku:e.sku,name:s,url:re(e.url)??""},l=e.images?.[0];l&&(c.imageUrl=l),e.images&&e.images.length>1&&(c.images=e.images),a!=null&&a>0&&(c.price=String(a)),n!=null&&n>0&&(c.originalPrice=String(n)),r!==void 0&&(c.discountPercent=r),i!==void 0&&(c.brand=i),e.rating!==void 0&&(c.rating=e.rating),e.review_count!==void 0&&(c.reviewCount=e.review_count),e.cart_code!==void 0&&(c.cartCode=e.cart_code),e.in_stock!==void 0&&(c.inStock=e.in_stock),e.variants&&e.variants.length>0&&(c.variants=e.variants),e.discount_reason!==void 0&&(c.discountReason=e.discount_reason),e.promotions&&e.promotions.length>0&&(c.promotions=e.promotions),e.description!==void 0&&(c.description=e.description),e.description_html!==void 0&&(c.descriptionHtml=e.description_html),e.features&&e.features.length>0&&(c.features=e.features),e.specifications!==void 0&&(c.specifications=e.specifications),e.facet_hits&&(c.facetHits=e.facet_hits),e.category_names&&e.category_names.length>0&&(c.categoryNames=e.category_names),e.short_name!==void 0&&(c.shortName=e.short_name);const g=e,d={};let p=!1;for(const u of Object.keys(g))Cs.has(u)||(d[u]=g[u],p=!0);return p&&(c.extras=d),c}function Es(e){const t=e.payload.type,{type:a,...n}=e.payload;return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:t,props:n}}}}}var Ps={process_action:"/process_action",launcher_action:"/launcher_action",similar_products:"/similar_products",product_groupings:"/product_groupings"};function Ts(e){if(e===void 0)throw new Error("[gengage] middlewareUrl is required. Pass your Gengage backend URL in widget config.");const t=e.trim();return t===""?"":t.replace(/\/+$/,"")}function As(e,t){return`${Ts(t?.middlewareUrl)}/chat${Ps[e]}`}function Ls(e){if(!(typeof window>"u"||!e))try{const t=window.GengageAssistantInjector?.[e]?.streamTransport;return typeof t=="function"?t:void 0}catch{return}}var Is=7200*1e3,_n=200,zs=5*1024*1024,Ns="gengage_request_response_cache",Ms=1,We="responses",Bs=new Set(["addToCart","like"]),Ke=new Map,wn=null;async function Rs(e,t={},a={}){const n=Os(e,t);if(!n)return fetch(e,t);const r=Date.now(),i=await Hs(n,r);if(i)return qs(i);const o=await fetch(e,t);return o.ok&&Us(n,o.clone(),r,{ttlMs:a.ttlMs??Is,maxEntries:a.maxEntries??_n,maxBodyBytes:a.maxBodyBytes??zs}),o}function Os(e,t={}){if(typeof Request<"u"&&e instanceof Request)return null;const a=String(t.method||"GET").toUpperCase();if(a!=="POST"||typeof t.body!="string")return null;const n=$s(t.body);if(Fs(n))return null;const r=Ds(n);if(r){const i=Mt(n?.action);return`rr:${En(Cn({url:String(e),method:a,headers:kn(t.headers),type:n?.type??i?.type??"",account_id:n?.account_id??n?.accountId??"",locale:n?.locale??"",outputLanguage:Mt(n?.meta)?.outputLanguage??"",cache_key:r}))}`}return`rr:${En(Cn({url:String(e),method:a,headers:kn(t.headers),body:t.body}))}`}function $s(e){try{const t=JSON.parse(e);return!t||typeof t!="object"||Array.isArray(t)?null:t}catch{return null}}function Fs(e){const t=e?.type;return typeof t=="string"&&Bs.has(t)}function Ds(e){const t=(Mt(e?.payload)??Mt(Mt(e?.action)?.payload))?.cache_key;return typeof t=="string"&&t.trim().length>0?t.trim():null}async function Hs(e,t){const a=Ke.get(e);if(a)if(a.expiresAt<=t)Ke.delete(e);else return a.lastAccessedAt=t,Ke.delete(e),Ke.set(e,a),Ca(a),a;const n=await Vs(e);return n?n.expiresAt<=t?(Ke.delete(e),Gs(e),null):(n.lastAccessedAt=t,Ke.set(e,n),Ca(n),Sn(_n),n):null}async function Us(e,t,a,n){try{const r=await t.text();if(Ks(r)>n.maxBodyBytes||js(r))return;const i={key:e,status:t.status,statusText:t.statusText,headers:Zs(t.headers),body:r,createdAt:a,expiresAt:a+n.ttlMs,lastAccessedAt:a};Ke.set(e,i),Sn(n.maxEntries),await Ca(i),await Ws(n.maxEntries,a)}catch{}}function js(e){return/"_error"\s*:/u.test(e)||/"type"\s*:\s*"error"/u.test(e)}function qs(e){return new Response(e.body,{status:e.status,statusText:e.statusText,headers:new Headers(e.headers)})}function kn(e){const t=new Headers(e),a=[];return t.forEach((n,r)=>{const i=r.toLowerCase();i!=="authorization"&&i!=="cookie"&&a.push([i,n])}),a.sort(([n],[r])=>n.localeCompare(r))}function Zs(e){const t=[];return e.forEach((a,n)=>{const r=n.toLowerCase();r!=="set-cookie"&&t.push([r,a])}),t.sort(([a],[n])=>a.localeCompare(n))}function Sn(e){for(;Ke.size>e;){const t=[...Ke.values()].sort((a,n)=>a.lastAccessedAt-n.lastAccessedAt)[0];if(!t)break;Ke.delete(t.key)}}async function Zt(){return typeof indexedDB>"u"?null:(wn??=new Promise(e=>{const t=indexedDB.open(Ns,Ms);t.onupgradeneeded=()=>{const a=t.result;a.objectStoreNames.contains(We)||a.createObjectStore(We,{keyPath:"key"}).createIndex("lastAccessedAt","lastAccessedAt",{unique:!1})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null),t.onblocked=()=>e(null)}),wn)}async function Vs(e){const t=await Zt();return t?new Promise(a=>{const n=t.transaction(We,"readonly"),r=n.objectStore(We).get(e);r.onsuccess=()=>a(r.result??null),r.onerror=()=>a(null),n.onerror=()=>a(null)}):null}async function Ca(e){const t=await Zt();t&&await new Promise(a=>{const n=t.transaction(We,"readwrite");n.objectStore(We).put(e),n.oncomplete=()=>a(),n.onerror=()=>a(),n.onabort=()=>a()})}async function Gs(e){const t=await Zt();t&&await new Promise(a=>{const n=t.transaction(We,"readwrite");n.objectStore(We).delete(e),n.oncomplete=()=>a(),n.onerror=()=>a(),n.onabort=()=>a()})}async function Ws(e,t){const a=await Zt();a&&await new Promise(n=>{const r=a.transaction(We,"readwrite"),i=r.objectStore(We),o=[],s=i.openCursor();s.onsuccess=()=>{const c=s.result;if(!c){const l=o.filter(d=>d.expiresAt<=t),g=o.filter(d=>d.expiresAt>t).sort((d,p)=>d.lastAccessedAt-p.lastAccessedAt).slice(0,Math.max(0,o.length-l.length-e));for(const d of[...l,...g])i.delete(d.key);return}o.push(c.value),c.continue()},s.onerror=()=>n(),r.oncomplete=()=>n(),r.onerror=()=>n(),r.onabort=()=>n()})}function Cn(e){return JSON.stringify(Ea(e))}function Mt(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Ea(e){return Array.isArray(e)?e.map(Ea):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([t],[a])=>t.localeCompare(a)).map(([t,a])=>[t,Ea(a)]))}function En(e){let t=14695981039346656037n;const a=1099511628211n;for(let n=0;n<e.length;n+=1)t^=BigInt(e.charCodeAt(n)),t=BigInt.asUintN(64,t*a);return t.toString(16).padStart(16,"0")}function Ks(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e).byteLength:e.length}function Ys(e,t){const a=e.type,n=e.payload!=null&&typeof e.payload=="object"&&!Array.isArray(e.payload)?e.payload:{},r=i=>{const o={...n};for(const[s,c]of Object.entries(i))s in o||(o[s]=c);return o};switch(a){case"user_message":case"inputText":{const i=typeof e.payload=="string",o=i?{text:e.payload}:e.payload!=null&&typeof e.payload=="object"&&!Array.isArray(e.payload)?e.payload:n,s=t.genericNonPdpLaunch===!0&&t.pageContext?.pageType!=="pdp"&&(o.is_entry_question===1||o.is_entry_question===!0),c=o.is_search_suggestion===1||o.is_search_suggestion===!0,l={is_launcher:0};if(!s&&t.pageContext?.extra&&(l.page_details=t.pageContext.extra),!s&&!c&&!i&&!("sku_list"in o)){const d=t.pageContext?.skuList&&t.pageContext.skuList.length>0?t.pageContext.skuList:t.pageContext?.sku?[t.pageContext.sku]:void 0;d&&d.length>0&&(l.sku_list=d)}"is_suggested_text"in o||(l.is_suggested_text=0);const g={...o};for(const[d,p]of Object.entries(l))d in g||(g[d]=p);return{...e,payload:g}}case"findSimilar":{const i={is_launcher:0};return e.title&&(i.text=e.title,i.input=e.title),{...e,payload:ft(r(i))}}case"getComparisonTable":{const i=e.payload;if(i&&typeof i=="object"&&!Array.isArray(i)&&"gengage_analytics_source"in i){const o={...i};return delete o.gengage_analytics_source,{...e,payload:o}}return e}case"launchProductList":return e;case"launchHomepage":return e;case"addToCart":{const i={};return"error_message"in n||(i.error_message=""),{...e,payload:r(i)}}case"reviewSummary":{const i={};return t.pageContext?.sku&&!("sku"in n)&&(i.sku=t.pageContext.sku),Object.keys(i).length===0?e:{...e,payload:r(i)}}default:return e}}var Js={user_message:"inputText"};function Pn(e){const{action:t,type:a,payload:n,...r}=e,i=a??t?.type??"inputText",o=n??t?.payload,s=Js[i]??i,c={...r,type:s};return o!==void 0&&(c.payload=typeof o=="string"?{text:o}:o),JSON.stringify(c)}function Xs(e){return JSON.parse(Pn(e))}function Qs(e){return e!==null&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"}function Tn(e,t){let a=!1;const n=()=>t?.aborted===!0,r=()=>a||n(),i=()=>{r()||(a=!0,e.onDone())};return{fireDone:i,callbacks:{onTextChunk:(...o)=>{r()||e.onTextChunk(...o)},onUISpec:(...o)=>{r()||e.onUISpec(...o)},onAction:o=>{r()||e.onAction(o)},onMetadata:o=>{r()||e.onMetadata(o)},onError:o=>{n()||e.onError(o)},onDone:i}}}function ec(e,t,a){const n=new AbortController,r=a.injectorAdapter??Ls(a.accountId);return r?((async()=>{const o=Tn(t,n.signal);try{if(await Promise.resolve(),n.signal.aborted)return;const s=r(Xs(e),o.callbacks,n.signal,a.attachment);Qs(s)&&(await s,o.fireDone())}catch(s){if(n.signal.aborted||s instanceof DOMException&&s.name==="AbortError")return;o.callbacks.onError(s instanceof Error?s:new Error(String(s)))}})(),n):((async()=>{try{const o=As("process_action",a),s=Pn(e),c=a.attachment!==void 0;let l;if(c){const p=new FormData;p.append("request",s),a.attachment!==void 0&&p.append("attachment",a.attachment),l={method:"POST",body:p,signal:n.signal}}else l={method:"POST",headers:{"Content-Type":"application/json"},body:s,signal:n.signal};const g=c?await fetch(o,l):await Rs(o,l);if(!g.ok){let p=g.statusText;try{const u=await g.json(),f=u.detail??u.message??u.error;typeof f=="string"&&(p=f)}catch{}t.onError(new Error(`HTTP ${g.status}: ${p}`));return}const d=Tn(t);await Do(g,{onEvent:p=>{const u=qo(p);if(u)switch(u.type){case"text_chunk":d.callbacks.onTextChunk(u.content,u.final===!0,{productMentions:u.productMentions,skuToProductItem:u.skuToProductItem,conversationMode:u.conversationMode,renderHint:u.renderHint,kvkk:u.kvkk});break;case"ui_spec":d.callbacks.onUISpec(u.spec,u.widget,u.panelHint,u.clearPanel===!0);break;case"action":d.callbacks.onAction(u);break;case"metadata":d.callbacks.onMetadata(u);break;case"error":d.callbacks.onError(new Error(u.message));break;case"done":d.fireDone();break}},onError:t.onError,signal:n.signal}),d.fireDone()}catch(o){if(o instanceof DOMException&&o.name==="AbortError")return;t.onError(o instanceof Error?o:new Error(String(o)))}})(),n)}var tc=["chat_debug","presentation_debug"],ac=["gengage_chat_debug","gengage_presentation_debug"];function nc(){if(typeof window>"u")return!1;const e=new URLSearchParams(window.location.search);if(tc.some(t=>e.get(t)==="1"))return!0;try{return ac.some(t=>window.localStorage.getItem(t)==="1")}catch{return!1}}function rc(e,t,a){if(!nc())return;const n=(window.__gengageChatPresentationDebugSeq??0)+1;window.__gengageChatPresentationDebugSeq=n;const r={seq:n,time:new Date().toISOString(),scope:e,message:t,payload:a};window.__gengageChatPresentationDebugLog||(window.__gengageChatPresentationDebugLog=[]),window.__gengageChatPresentationDebugLog.push(r),window.__gengageChatPresentationDebugLog.length>400&&window.__gengageChatPresentationDebugLog.shift();const i=`[gengage-chat-debug #${n}][${e}] ${t}`;a===void 0?console.debug(i):console.debug(i,a)}var Vt="gengage-chat-scroll",vt=null;function An(e){vt=e}function ic(){if(vt&&vt.isConnected)return vt;vt=null;const e=document.getElementById(Vt);return e||(rc("chat-scroll","failed to resolve scroll container (not registered)",{id:Vt}),null)}function Ln(){vt=null}var yt={headerTitle:"Ürün Uzmanı",inputPlaceholder:"Ürün ara, soru sor",inputAriaLabel:"Mesajınızı yazın",sendButton:"Gönder",closeButton:"Kapat",openButton:"Sohbeti aç",newChatButton:"Yeni sohbet",poweredBy:"Gengage ile",errorMessage:"Bir hata oluştu. Lütfen tekrar deneyin.",retryButton:"Tekrar Dene",loadingMessage:"İsteğinizi inceliyorum...",loadingSequenceGeneric:["İsteğinizi inceliyorum...","Ürün detaylarını inceliyorum...","Kontrol ediyorum...","Bulduklarımı değerlendiriyorum...","Detayları inceliyorum..."],loadingSequencePanel:["En ilgili detayları inceliyorum","En güçlü sinyalleri kontrol ediyorum","Bu görünümü sizin için hazırlıyorum"],loadingSequenceComparison:["Ürün farklarını inceliyorum","En güçlü farkları ve ödünleşimleri kontrol ediyorum","Karşılaştırmayı sizin için hazırlıyorum"],productCtaLabel:"Satın Al",viewOnSiteLabel:"Sitede Gör",attachImageButton:"Resim ekle",attachMenuSelectPhoto:"Fotoğraf Seç",attachMenuPaste:"Yapıştır",clipboardNoImageMessage:"Panoda görsel bulunamadı. Önce bir görsel kopyalayın veya dosya seçin.",removeAttachmentButton:"Resmi kaldır",invalidFileType:"Sadece JPEG, PNG ve WebP dosyaları destekleniyor.",fileTooLarge:"Dosya boyutu 5 MB'dan küçük olmalıdır.",aiTopPicksTitle:"Sizin İçin En İyiler",roleWinner:"Size Özel Seçimim",roleBestValue:"En Uygun Fiyatlı",roleBestAlternative:"En İyi Alternatif",viewDetails:"Detayları Gör",groundingReviewCta:"Yorumları Oku",groundingReviewSubtitle:"{count} yorum mevcut",variantsLabel:"Varyantlar",sortRelated:"Önerilen",sortPriceAsc:"Fiyat düşükten yükseğe",sortPriceDesc:"Fiyat yüksekten düşüğe",sortToolbarAriaLabel:"Ürünleri sırala",compareSelected:"Karşılaştır",productGridSectionCountLabel:"{count} ürün",compareMinHint:"En az 2 ürün seçin",compareMaxHint:"En fazla 5 ürün seçebilirsiniz",comparisonSelectLabel:"Karşılaştırmak için seç",comparisonSelectedLabel:"Seçildi",comparisonSelectCardHint:"Karşılaştırmaya eklemek veya çıkarmak için kartın herhangi bir yerine dokunun.",comparisonPreparingLabel:"Karşılaştırma tablosu hazırlanıyor…",panelTitleProductDetails:"Ürün Detayı",panelTitleSimilarProducts:"Benzer Ürünler",panelTitleComparisonResults:"Karşılaştırma Sonuçları",panelTitleCategories:"Kategoriler",panelTitleSearchResults:"Arama Sonuçları",inStockLabel:"Stokta",outOfStockLabel:"Tükendi",findSimilarLabel:"Benzerlerini Bul",galleryPrevAriaLabel:"Önceki görsel",galleryNextAriaLabel:"Sonraki görsel",beautyStylesPreparedTitle:"Sizin için {count} farklı öneri yönü hazırladım",consultingOtherCompatibleProductsLabel:"Diğer Uyumlu Ürünler",consultingFallbackGroupLabel:"Öneri",consultingFallbackStyleLabel:"Stil {index}",consultingStyleLoadingDescription:"Bu stil için ürünleri toplamaya devam ediyorum. Panel kısa süre içinde yenilenir.",consultingStyleUnavailableDescription:"Bu stil için şu anda yeterli ürün eşleşmesi çıkaramadım. Diğer stilleri inceleyebilirsiniz.",consultingStyleLoadingBadge:"Yükleniyor",consultingStyleUnavailableBadge:"Hazır değil",choicePrompterHeading:"Kararsız mı kaldın?",choicePrompterSuggestion:"Ürünleri seçip karşılaştırabilirsin",choicePrompterCta:"Seç ve Karşılaştır",viewMoreLabel:"Daha Fazla Göster",similarProductsLabel:"Benzer Ürünler",addToCartButton:"Sepete Ekle",addingToCartToast:"Sepete ekleniyor...",addedToCartToast:"Sepete eklendi",shareButton:"Paylaş",productInfoTab:"Ürün Bilgileri",specificationsTab:"Teknik Özellikler",recommendedChoiceLabel:"Önerilen Seçim",highlightsLabel:"Öne Çıkan Özellikler",keyDifferencesLabel:"Temel Farklar",specialCasesLabel:"Özel Durumlar İçin",emptyReviewsMessage:"Yorum özeti bulunamadı.",closeAriaLabel:"Kapat",startChatLabel:"Sohbete Başla",voiceButton:"Sesli giriş",voiceListening:"Dinleniyor...",voiceNotSupported:"Sesli giriş bu tarayıcıda desteklenmiyor.",voicePermissionDenied:"Mikrofon erişimi reddedildi.",voiceError:"Sesli giriş hatası.",handoffHeading:"Destek temsilcisine aktarılıyor",productNotFoundMessage:"Bu ürün bilgisi şu an kullanılamıyor. Başka bir konuda yardımcı olabilirim.",stopGenerating:"Yanıtı Durdur",offlineMessage:"Çevrimdışısınız — bağlantı kurulduğunda mesajlar gönderilecek.",cartAriaLabel:"Sepetim",favoritesAriaLabel:"Favorilerim",historyAriaLabel:"Sohbet geçmişi",historyPageTitle:"Sohbet Geçmişi",historyImageAttachmentLabel:"Görsel eklendi",emptyHistoryMessage:"Henüz kaydedilmiş sohbet yok.",historyDeleteLabel:"Sohbeti sil",historyDeleteConfirmMessage:"Bu sohbet geçmişten silinsin mi? Bu işlem geri alınamaz.",showPanelAriaLabel:"Sonuçları Göster",addToFavoritesLabel:"Favorilere ekle",customerReviewsTitle:"Müşteri Yorumları",togglePanelAriaLabel:"Paneli aç/kapat",chatMessagesAriaLabel:"Sohbet mesajları",suggestionsAriaLabel:"Öneriler",moreSuggestionsAriaLabel:"Daha fazla öneri",rollbackAriaLabel:"Bu mesaja geri dön",backAriaLabel:"Geri",forwardAriaLabel:"İleri",closePanelAriaLabel:"Paneli kapat",dismissAriaLabel:"Kapat",cartAddErrorMessage:"Üzgünüm sepete ekleyemedim, bir sorunla karşılaştım.",favoriteToggleErrorMessage:"Favoriler güncellenemedi. Lütfen tekrar deneyin.",reviewFilterPositive:"Olumlu",reviewFilterNegative:"Olumsuz",decreaseLabel:"Azalt",increaseLabel:"Artır",reviewCustomersMentionSingular:"1 müşteri bahsediyor",reviewCustomersMentionPlural:"müşteri bahsediyor",reviewSubjectsHeading:"İncelemek için seçin",tryAgainButton:"Tekrar dene",askSomethingElseButton:"Başka bir şey sor",accountInactiveMessage:"Bu hesap şu an aktif değil. Lütfen daha sonra tekrar deneyin.",favoritesPageTitle:"Favorilerim",emptyFavoritesMessage:"Henüz favori ürün yok. Bir ürünü kalp ikonuna tıklayarak favorilere ekleyebilirsin.",showFormerMessagesButton:"↑ Önceki mesajları göster",aiAnalysisAnalyzingLabel:"Ürünler analiz ediliyor...",aiBrowseCategoriesTitle:"Kategorilere Göz At",photoAnalysisBadge:"Cilt Analizi",photoAnalysisStrengthsLabel:"Öne Çıkanlar",photoAnalysisFocusLabel:"Odak Noktaları",photoAnalysisCelebStyleLabel:"Celeb Vibe Eşleşmesi",beautyPhotoStepTitle:"Selfie ile kişiselleştir",beautyPhotoStepDescription:"İstersen net bir profil fotoğrafı yükle, sana özel önerilerde bulunayım.",beautyPhotoStepUpload:"Fotoğraf Yükle",beautyPhotoStepProcessing:"Fotoğraf işleniyor...",beautyPhotoStepSkip:"Geç",beautyPhotoStepSkipMessage:"Fotoğraf adımını geçiyorum"},oc={headerTitle:"Product Expert",inputPlaceholder:"Search products, ask questions",inputAriaLabel:"Type your message",sendButton:"Send",closeButton:"Close",openButton:"Open chat",newChatButton:"New chat",poweredBy:"Powered by Gengage",errorMessage:"Something went wrong. Please try again.",retryButton:"Retry",loadingMessage:"Reviewing your request...",loadingSequenceGeneric:["Reviewing your request...","Reviewing product details...","Checking the strongest signals...","Evaluating what I found...","Reviewing the details..."],loadingSequencePanel:["Reviewing the most relevant details","Checking the strongest signals","Preparing this view for you"],loadingSequenceComparison:["Reviewing the product differences","Checking the strongest tradeoffs","Preparing your comparison"],productCtaLabel:"Buy",viewOnSiteLabel:"View on Site",attachImageButton:"Attach image",attachMenuSelectPhoto:"Choose photo",attachMenuPaste:"Paste",clipboardNoImageMessage:"No image found in clipboard. Copy an image first or choose a file.",removeAttachmentButton:"Remove image",invalidFileType:"Only JPEG, PNG and WebP files are supported.",fileTooLarge:"File must be smaller than 5 MB.",aiTopPicksTitle:"Top Picks for You",roleWinner:"Top Pick",roleBestValue:"Best Value",roleBestAlternative:"Best Alternative",viewDetails:"View Details",groundingReviewCta:"Read Reviews",groundingReviewSubtitle:"{count} reviews available",variantsLabel:"Variants",sortRelated:"Recommended",sortPriceAsc:"Price low to high",sortPriceDesc:"Price high to low",sortToolbarAriaLabel:"Sort products",compareSelected:"Compare",productGridSectionCountLabel:"{count} product(s)",compareMinHint:"Select at least 2 products",compareMaxHint:"You can select up to 5 products",comparisonSelectLabel:"Select to compare",comparisonSelectedLabel:"Selected",comparisonSelectCardHint:"Tap anywhere on the card to add or remove it from comparison.",comparisonPreparingLabel:"Preparing your comparison…",panelTitleProductDetails:"Product Details",panelTitleSimilarProducts:"Similar Products",panelTitleComparisonResults:"Comparison Results",panelTitleCategories:"Categories",panelTitleSearchResults:"Search Results",inStockLabel:"In Stock",outOfStockLabel:"Out of Stock",findSimilarLabel:"Find Similar",galleryPrevAriaLabel:"Previous image",galleryNextAriaLabel:"Next image",beautyStylesPreparedTitle:"Prepared {count} recommendation directions for you",consultingOtherCompatibleProductsLabel:"Other compatible products",consultingFallbackGroupLabel:"Recommendation",consultingFallbackStyleLabel:"Style {index}",consultingStyleLoadingDescription:"I am still collecting products for this style. The panel will refresh shortly.",consultingStyleUnavailableDescription:"I could not find enough product matches for this style yet. You can review the other styles.",consultingStyleLoadingBadge:"Loading",consultingStyleUnavailableBadge:"Not ready",choicePrompterHeading:"Can't decide?",choicePrompterSuggestion:"Select products to compare them",choicePrompterCta:"Select & Compare",viewMoreLabel:"Show More",similarProductsLabel:"Similar Products",addToCartButton:"Add to Cart",addingToCartToast:"Adding to cart...",addedToCartToast:"Added to cart",shareButton:"Share",productInfoTab:"Product Info",specificationsTab:"Specifications",recommendedChoiceLabel:"Recommended Choice",highlightsLabel:"Key Highlights",keyDifferencesLabel:"Key Differences",specialCasesLabel:"For Special Cases",emptyReviewsMessage:"No review summary found.",closeAriaLabel:"Close",startChatLabel:"Start Chat",voiceButton:"Voice input",voiceListening:"Listening...",voiceNotSupported:"Voice input is not supported in this browser.",voicePermissionDenied:"Microphone access denied.",voiceError:"Voice input error.",handoffHeading:"Transferring to a support agent",productNotFoundMessage:"Product information is currently unavailable. I can help with something else.",stopGenerating:"Stop generating",offlineMessage:"You're offline — messages will send when you reconnect.",cartAriaLabel:"My cart",favoritesAriaLabel:"My favorites",historyAriaLabel:"Chat history",historyPageTitle:"Chat History",historyImageAttachmentLabel:"Image attachment",emptyHistoryMessage:"You don't have any saved chats yet.",historyDeleteLabel:"Delete chat",historyDeleteConfirmMessage:"Delete this chat from history? This cannot be undone.",showPanelAriaLabel:"Show Results",addToFavoritesLabel:"Add to favorites",customerReviewsTitle:"Customer Reviews",togglePanelAriaLabel:"Toggle panel",chatMessagesAriaLabel:"Chat messages",suggestionsAriaLabel:"Suggestions",moreSuggestionsAriaLabel:"More suggestions",rollbackAriaLabel:"Rollback to this message",backAriaLabel:"Back",forwardAriaLabel:"Forward",closePanelAriaLabel:"Close panel",dismissAriaLabel:"Dismiss",cartAddErrorMessage:"Sorry, I couldn't add that to your cart. Something went wrong.",favoriteToggleErrorMessage:"We couldn't update favorites. Please try again.",reviewFilterPositive:"Positive",reviewFilterNegative:"Negative",decreaseLabel:"Decrease",increaseLabel:"Increase",reviewCustomersMentionSingular:"1 customer mentions",reviewCustomersMentionPlural:"customers mention",reviewSubjectsHeading:"Select to learn more",tryAgainButton:"Try again",askSomethingElseButton:"Ask something else",accountInactiveMessage:"This account is currently inactive. Please try again later.",favoritesPageTitle:"My Favorites",emptyFavoritesMessage:"No favorites yet. Heart a product to save it here.",showFormerMessagesButton:"↑ Show earlier messages",aiAnalysisAnalyzingLabel:"Analyzing products...",aiBrowseCategoriesTitle:"Browse categories",photoAnalysisBadge:"Skin Analysis",photoAnalysisStrengthsLabel:"Your strengths",photoAnalysisFocusLabel:"Focus points",photoAnalysisCelebStyleLabel:"Celeb style match",beautyPhotoStepTitle:"Personalize with a selfie",beautyPhotoStepDescription:"Upload a clear profile photo so I can give you personalized recommendations.",beautyPhotoStepUpload:"Upload Photo",beautyPhotoStepProcessing:"Processing photo...",beautyPhotoStepSkip:"Skip",beautyPhotoStepSkipMessage:"Skip the photo step"};function sc(e){return e?e.toLowerCase().split("-")[0]??"tr":"tr"}function cc(e){return sc(e)==="en"?oc:yt}function lc(){return In()!==null}function In(){const e=globalThis;return e.SpeechRecognition??e.webkitSpeechRecognition??null}var gc=class{constructor(e,t){this.recognition=null,this._state="idle",this.silenceTimer=null,this.accumulatedTranscript="",this.intentionalStop=!1,this._lastRestartAt=0,this.callbacks=e,this.lang=t?.lang??"tr-TR",this.silenceTimeoutMs=t?.silenceTimeoutMs??1500,this.autoSubmit=t?.autoSubmit??!0}get state(){return this._state}start(){if(this._state==="listening")return;const e=In();if(!e){this.setState("error"),this.callbacks.onError?.("not-supported","Web Speech API is not supported in this browser.");return}if(typeof globalThis.isSecureContext<"u"&&!globalThis.isSecureContext){this.setState("error"),this.callbacks.onError?.("not-allowed","Voice input requires HTTPS.");return}this.accumulatedTranscript="",this.intentionalStop=!1;const t=new e;t.continuous=!0,t.interimResults=!0,t.lang=this.lang,t.maxAlternatives=1,t.onstart=()=>{this.setState("listening")},t.onresult=a=>{this.clearSilenceTimer();let n="",r="";for(let i=a.resultIndex;i<a.results.length;i++){const o=a.results[i];if(!o)continue;const s=o[0];s&&(o.isFinal?r+=s.transcript:n+=s.transcript)}r&&(this.accumulatedTranscript+=r,this.callbacks.onFinal?.(this.accumulatedTranscript)),n&&this.callbacks.onInterim?.(this.accumulatedTranscript+n),this.autoSubmit&&this.accumulatedTranscript&&this.startSilenceTimer()},t.onerror=a=>{const n=dc(a.error);this.intentionalStop&&(a.error==="no-speech"||a.error==="aborted")||(this.setState("error"),this.callbacks.onError?.(n,a.message||a.error))},t.onend=()=>{if(this.clearSilenceTimer(),this._state==="listening"&&!this.intentionalStop){const a=Date.now();if(a-this._lastRestartAt<500){this.setState("idle");return}this._lastRestartAt=a;try{t.start()}catch{this.setState("idle")}return}this.setState("idle")},this.recognition=t;try{t.start()}catch{this.setState("error"),this.callbacks.onError?.("unknown","Failed to start speech recognition.")}}stop(){if(this.intentionalStop=!0,this.clearSilenceTimer(),this.recognition){try{this.recognition.stop()}catch{}this.recognition=null}return this.setState("idle"),this.accumulatedTranscript}abort(){if(this.intentionalStop=!0,this.clearSilenceTimer(),this.accumulatedTranscript="",this.recognition){try{this.recognition.abort()}catch{}this.recognition=null}this.setState("idle")}destroy(){this.abort()}setState(e){this._state!==e&&(this._state=e,this.callbacks.onStateChange?.(e))}startSilenceTimer(){this.clearSilenceTimer(),this.silenceTimer=setTimeout(()=>{const e=this.stop();e.trim()&&this.callbacks.onAutoSubmit?.(e.trim())},this.silenceTimeoutMs)}clearSilenceTimer(){this.silenceTimer!==null&&(clearTimeout(this.silenceTimer),this.silenceTimer=null)}};function dc(e){switch(e){case"not-allowed":return"not-allowed";case"no-speech":return"no-speech";case"audio-capture":return"no-microphone";case"network":return"network";case"aborted":return"aborted";default:return"unknown"}}function pc(e){const t=document.createElement("div");t.className="gengage-chat-kvkk-banner",t.dataset.gengagePart="kvkk-banner",t.setAttribute("role","note");const a=document.createElement("div");return a.className="gengage-chat-kvkk-content",a.dataset.gengagePart="kvkk-content",a.innerHTML=Ie(e.htmlContent),t.appendChild(a),t}var hc=class{constructor(e){this._el=document.createElement("div"),this._el.className="gengage-chat-panel-topbar gds-toolbar",this._el.dataset.gengagePart="panel-topbar",this._backBtn=document.createElement("button"),this._backBtn.className="gengage-chat-panel-topbar-back gds-btn gds-btn-ghost gds-icon-btn",this._backBtn.dataset.gengagePart="panel-topbar-back",this._backBtn.type="button",this._backBtn.disabled=!0,this._backBtn.setAttribute("aria-label",e.backAriaLabel??"Back"),this._backBtn.title=e.backAriaLabel??"Back",this._backBtn.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m15 18-6-6 6-6"/><path d="M21 12H9"/></svg>',this._backBtn.addEventListener("click",()=>e.onBack());const t=document.createElement("div");t.className="gengage-chat-panel-topbar-title-wrap",this._titleEl=document.createElement("span"),this._titleEl.className="gengage-chat-panel-topbar-title",this._titleEl.dataset.gengagePart="panel-topbar-title",t.appendChild(this._titleEl),this._forwardBtn=document.createElement("button"),this._forwardBtn.className="gengage-chat-panel-topbar-forward gds-btn gds-btn-ghost gds-icon-btn",this._forwardBtn.dataset.gengagePart="panel-topbar-forward",this._forwardBtn.type="button",this._forwardBtn.disabled=!0,this._forwardBtn.setAttribute("aria-label",e.forwardAriaLabel??"Forward"),this._forwardBtn.title=e.forwardAriaLabel??"Forward",this._forwardBtn.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 18 6-6-6-6"/><path d="M3 12h12"/></svg>',this._forwardBtn.addEventListener("click",()=>e.onForward()),this._actionsEl=document.createElement("div"),this._actionsEl.className="gengage-chat-panel-topbar-actions",this._actionsEl.dataset.gengagePart="panel-topbar-actions",this._closeBtn=document.createElement("button"),this._closeBtn.className="gengage-chat-panel-topbar-close gds-btn gds-btn-ghost gds-icon-btn",this._closeBtn.dataset.gengagePart="panel-topbar-close",this._closeBtn.type="button",this._closeBtn.setAttribute("aria-label",e.closePanelAriaLabel??"Close panel"),this._closeBtn.title=e.closePanelAriaLabel??"Close panel",this._closeBtn.innerHTML='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',this._closeBtn.addEventListener("click",()=>e.onClose?.()),this._el.appendChild(this._backBtn),this._el.appendChild(t),this._el.appendChild(this._actionsEl),this._el.appendChild(this._forwardBtn),this._el.appendChild(this._closeBtn)}update(e,t,a){this._backBtn.disabled=!e,this._forwardBtn.disabled=!t,this._backBtn.hidden=!e,this._forwardBtn.hidden=!t,this._titleEl.textContent=a,this._titleEl.title=a}getElement(){return this._el}setTitle(e){this._titleEl.textContent=e}setActions(e){this._actionsEl.replaceChildren(),e&&this._actionsEl.appendChild(e)}getTitle(){return this._titleEl.textContent??""}};function uc(e){return{processing:e.processing===!0,title:typeof e.title=="string"?e.title:void 0,description:typeof e.description=="string"?e.description:void 0,uploadLabel:typeof e.upload_label=="string"?e.upload_label:void 0,skipLabel:typeof e.skip_label=="string"?e.skip_label:void 0}}function zn(e,t,a){const n=e.props??{},r=n.processing===!0,i={...yt,...t.i18n??{}},o=document.createElement("div");o.className="gengage-chat-beauty-photo-step-card";const s=document.createElement("span");s.className="gengage-chat-beauty-photo-step-icon",s.setAttribute("aria-hidden","true"),s.textContent="✦";const c=document.createElement("div");c.className="gengage-chat-beauty-photo-step-content";const l=document.createElement("div");l.className="gengage-chat-beauty-photo-step-title",l.textContent=(typeof n.title=="string"?n.title:void 0)??i.beautyPhotoStepTitle;const g=document.createElement("p");g.className="gengage-chat-beauty-photo-step-desc",g.textContent=(typeof n.description=="string"?n.description:void 0)??i.beautyPhotoStepDescription;const d=document.createElement("div");d.className="gengage-chat-beauty-photo-step-actions";const p=document.createElement("button");p.type="button",p.className="gengage-chat-beauty-photo-step-upload gds-btn gds-btn-primary",p.textContent=r?i.beautyPhotoStepProcessing:(typeof n.upload_label=="string"?n.upload_label:void 0)??i.beautyPhotoStepUpload,p.disabled=r,a?.onUpload&&p.addEventListener("click",()=>a.onUpload());const u=document.createElement("button");return u.type="button",u.className="gengage-chat-beauty-photo-step-skip gds-btn gds-btn-ghost",u.textContent=(typeof n.skip_label=="string"?n.skip_label:void 0)??i.beautyPhotoStepSkip,a?.onSkip&&u.addEventListener("click",()=>a.onSkip()),d.appendChild(p),d.appendChild(u),c.appendChild(l),c.appendChild(g),c.appendChild(d),o.appendChild(s),o.appendChild(c),o}function mc(e,t){if(e)return e;const a=document.createElement("section");a.className="gengage-chat-beauty-photo-step",a.dataset.gengagePart="chat-beauty-photo-step",a.hidden=!0;const n=t?.querySelector(".gengage-chat-input-area");return n?n.parentElement?.insertBefore(a,n):t?.appendChild(a),a}function fc(e,t,a,n,r){if(!a.visible)return e&&(e.hidden=!0,e.innerHTML=""),e;const i=mc(e,t);i.hidden=!1,i.innerHTML="";const o=zn({type:"BeautyPhotoStep",props:{processing:a.processing??!1,title:a.title,description:a.description,upload_label:a.uploadLabel,skip_label:a.skipLabel}},{i18n:n,onAction:()=>{}},{onUpload:r,onSkip:a.onSkip});return i.appendChild(o),i}function Nn(e){const t=typeof e.summary=="string"?e.summary:"",a=Array.isArray(e.strengths)?e.strengths.filter(c=>typeof c=="string"):[],n=Array.isArray(e.focus_points)?e.focus_points.filter(c=>typeof c=="string"):[];if(!t&&a.length===0&&n.length===0)return null;const r={summary:t},i=typeof e.celeb_style=="string"?e.celeb_style:void 0,o=typeof e.celeb_style_reason=="string"?e.celeb_style_reason:void 0,s=typeof e.next_question=="string"?e.next_question:void 0;return a.length>0&&(r.strengths=a),n.length>0&&(r.focusPoints=n),i&&(r.celebStyle=i),o&&(r.celebStyleReason=o),s&&(r.nextQuestion=s),r}function Mn(e,t,a){if(t.length===0)return null;const n=document.createElement("section");n.className=`gengage-chat-photo-analysis-section ${a}`;const r=document.createElement("h4");r.className="gengage-chat-photo-analysis-section-title",r.textContent=e;const i=document.createElement("ul");i.className="gengage-chat-photo-analysis-section-list";for(const o of t){const s=document.createElement("li");s.className="gengage-chat-photo-analysis-section-item",s.textContent=o,i.appendChild(s)}return n.appendChild(r),n.appendChild(i),n}function Bn(e,t){const a=document.createElement("div");a.className="gengage-chat-photo-analysis-card";const n=document.createElement("div");n.className="gengage-chat-photo-analysis-badge",n.textContent=e.badge;const r=document.createElement("div");if(r.className="gengage-chat-photo-analysis-body",t.summary){const c=document.createElement("p");c.className="gengage-chat-photo-analysis-summary",c.textContent=t.summary,r.appendChild(c)}const i=document.createElement("div");i.className="gengage-chat-photo-analysis-highlights";const o=Mn(e.strengths,t.strengths??[],"gengage-chat-photo-analysis-section--strengths"),s=Mn(e.focus,t.focusPoints??[],"gengage-chat-photo-analysis-section--focus");if(o&&i.appendChild(o),s&&i.appendChild(s),i.childElementCount>0&&r.appendChild(i),t.celebStyle){const c=document.createElement("section");c.className="gengage-chat-photo-analysis-section gengage-chat-photo-analysis-section--celeb";const l=document.createElement("h4");l.className="gengage-chat-photo-analysis-section-title",l.textContent=e.celebStyle;const g=document.createElement("p");if(g.className="gengage-chat-photo-analysis-celeb-name",g.textContent=t.celebStyle,c.appendChild(l),c.appendChild(g),t.celebStyleReason){const d=document.createElement("p");d.className="gengage-chat-photo-analysis-celeb-reason",d.textContent=t.celebStyleReason,c.appendChild(d)}r.appendChild(c)}if(t.nextQuestion){const c=document.createElement("p");c.className="gengage-chat-photo-analysis-next",c.textContent=t.nextQuestion,r.appendChild(c)}return a.appendChild(n),a.appendChild(r),a}function bc(e){const t={...yt,...e?.i18n??{}};return{badge:t.photoAnalysisBadge,strengths:t.photoAnalysisStrengthsLabel,focus:t.photoAnalysisFocusLabel,celebStyle:t.photoAnalysisCelebStyleLabel}}function vc(e,t){const a=Nn(e.props??{})??{summary:""};return Bn(bc(t),a)}function yc(e,t,a){e.innerHTML="",a&&e.appendChild(Bn(t,a))}var Rn='<svg viewBox="0 0 16 16" class="gengage-chat-icon"><path d="M3 8h10M9 4l4 4-4 4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',On={search:'<svg viewBox="0 0 16 16" class="gengage-chat-icon"><circle cx="6.5" cy="6.5" r="5" fill="none" stroke="currentColor" stroke-width="1.5"/><line x1="10" y1="10" x2="15" y2="15" stroke="currentColor" stroke-width="1.5"/></svg>',review:'<svg viewBox="0 0 16 16" class="gengage-chat-icon"><polygon points="8,1 10,6 15,6 11,9 12.5,14 8,11 3.5,14 5,9 1,6 6,6" fill="none" stroke="currentColor" stroke-width="1.5"/></svg>',info:'<svg viewBox="0 0 16 16" class="gengage-chat-icon"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.5"/><line x1="8" y1="7" x2="8" y2="12" stroke="currentColor" stroke-width="1.5"/><circle cx="8" cy="4.5" r="0.8" fill="currentColor"/></svg>',similar:'<svg viewBox="0 0 16 16" class="gengage-chat-icon"><rect x="1" y="3" width="6" height="6" rx="1" fill="none" stroke="currentColor" stroke-width="1.5"/><rect x="9" y="3" width="6" height="6" rx="1" fill="none" stroke="currentColor" stroke-width="1.5"/></svg>'},xc=yt,_c=3e3,$n=1500,wc=/data:image\/(png|jpeg|jpg|webp);base64,[A-Za-z0-9+/=]+/gi;async function kc(e){for(const t of e)for(const a of t.types)if(a.startsWith("image/"))try{const n=await t.getType(a);if(!n||n.size===0)continue;const r=a||n.type||"image/png",i=r==="image/png"?"png":r==="image/webp"?"webp":"jpg",o=`paste-${Date.now()}.${i}`;return new File([n],o,{type:r})}catch{continue}for(const t of e)if(t.types.includes("text/html"))try{const a=(await(await t.getType("text/html")).text()).match(wc)?.[0];if(!a||a.length>5e6)continue;const n=await(await fetch(a)).blob();if(!n||n.size===0)continue;const r=n.type||"image/png";if(!["image/jpeg","image/png","image/webp"].includes(r))continue;const i=r==="image/png"?"png":r==="image/webp"?"webp":"jpg";return new File([n],`paste-${Date.now()}.${i}`,{type:r})}catch{continue}return null}async function Sc(e){try{const t=e??(typeof navigator.clipboard?.read=="function"?navigator.clipboard.read():null);return t?kc(await t):null}catch{}return null}var Cc=class{_renderPhotoAnalysisCard(e,t){yc(e,{badge:this.i18n.photoAnalysisBadge,strengths:this.i18n.photoAnalysisStrengthsLabel,focus:this.i18n.photoAnalysisFocusLabel,celebStyle:this.i18n.photoAnalysisCelebStyleLabel},t)}_createLegacyHeaderPoweredBy(){const e=typeof this.i18n.poweredBy=="string"?this.i18n.poweredBy.trim():"";if(!e)return null;const t=document.createElement("a");return t.className="gengage-chat-header-powered",t.dataset.gengagePart="chat-header-powered-by",t.href="https://gengage.ai/",t.target="_blank",t.rel="noopener noreferrer",t.innerHTML=`<svg viewBox="0 0 15 15" fill="none" aria-hidden="true"><path d="M15 5.88941C12.2201 5.88941 9.72762 7.14107 8.05571 9.11059H0C2.77991 9.11059 5.27238 7.85893 6.94429 5.88941H15Z" fill="currentColor"/><path d="M9.10964 0C9.10964 2.24394 8.29524 4.30038 6.94429 5.88941C5.27238 7.85962 2.77922 9.11059 0 9.11059V5.88941C3.24802 5.88941 5.89036 3.2465 5.89036 0H9.10964Z" fill="currentColor" fill-opacity="0.68"/><path d="M15 5.88941V9.11059C11.752 9.11059 9.10964 11.7535 9.10964 15H5.89036C5.89036 12.7561 6.70476 10.6996 8.05571 9.11059C9.72762 7.14038 12.2208 5.88941 15 5.88941Z" fill="currentColor" fill-opacity="0.68"/></svg>${e}`,t}_createFooterAttribution(){const e=document.createElement("div");e.className="gengage-chat-footer",e.dataset.gengagePart="chat-footer";const t=this._options.footerAttribution,a=typeof t?.label=="string"?t.label.trim():"",n=typeof t?.href=="string"?t.href.trim():"",r=typeof this.i18n.poweredBy=="string"?this.i18n.poweredBy.trim():"",i=a||r;if(!i)return null;if(n&&ve(n)){const o=document.createElement("a");return o.className="gengage-chat-footer-link",o.dataset.gengagePart="chat-footer-link",o.href=n,o.target=t?.target||"_blank",o.rel=t?.rel||"noopener noreferrer",o.textContent=i,typeof t?.ariaLabel=="string"&&t.ariaLabel.trim()&&o.setAttribute("aria-label",t.ariaLabel.trim()),e.appendChild(o),e}return e.textContent=i,e}constructor(e,t){this._sendStopHandler=null,this._panelVisible=!1,this._panelCollapsed=!1,this._onPanelToggle=void 0,this._onHostShellSync=void 0,this._pendingAttachment=null,this._onAttachment=void 0,this._onRollback=void 0,this._onLinkClick=void 0,this._userScrolledUp=!1,this._scrollLockedUntil=0,this._favBadgeEl=null,this._thinkingSteps=[],this._firstBotMessageIds=new Set,this._voiceInput=null,this._micBtn=null,this._voiceEnabled=!1,this._voiceLang="tr-TR",this._ignoreNextDividerClick=!1,this._cleanups=[],this._focusTrapHandler=null,this._previouslyFocusedElement=null,this._conversationEl=null,this._reopenPanelBtn=null,this._presentationFocusThreadId=null,this._formerMessagesBtn=null,this._programmaticScrollUntil=0,this._userInteractionUntil=0,this._touchStartY=null,this._presentationPinned=!0,this._presentationUserInteracting=!1,this._resizeRafId=null,this._cartBtn=null,this._attachWrapEl=null,this._attachMenuEl=null,this._attachBtn=null,this._attachMenuCleanup=null,this._attachMenuClickTimerId=null,this._typingLoadingBinding=null,this._panelLoadingBinding=null,this._panelAiZoneLoadingBinding=null,this._beautyPhotoStepEl=null,this._cartToastEl=null,this._cartToastTimerId=null,this._options=t,this.i18n={...xc,...t.i18n},this.onSend=t.onSend,t.onPanelToggle!==void 0&&(this._onPanelToggle=t.onPanelToggle),t.onHostShellSync!==void 0&&(this._onHostShellSync=t.onHostShellSync),t.onAttachment!==void 0&&(this._onAttachment=t.onAttachment),t.onRollback!==void 0&&(this._onRollback=t.onRollback),t.onLinkClick!==void 0&&(this._onLinkClick=t.onLinkClick),t.voiceEnabled&&(this._voiceEnabled=!0),t.voiceLang!==void 0&&(this._voiceLang=t.voiceLang),this.root=document.createElement("div"),this.root.className="gengage-chat-drawer gds-panel",this.root.dataset.gengagePart="chat-drawer",this.root.setAttribute("role","dialog"),this.root.setAttribute("aria-label",this.i18n.headerTitle??"Chat"),this.root.setAttribute("aria-modal","true");const a="gengage-chat-dialog-desc",n=document.createElement("span");n.id=a,n.className="gengage-sr-only",n.textContent=this.i18n.headerTitle??"AI shopping assistant",this.root.appendChild(n),this.root.setAttribute("aria-describedby",a);let r=null;{const _=document.createElement("div");_.className="gengage-chat-drawer-handle",_.dataset.gengagePart="chat-drawer-handle",_.setAttribute("aria-hidden","true"),_.style.pointerEvents="none",r=_}const i=document.createElement("div");i.className="gengage-chat-header gds-shell-header",i.dataset.gengagePart="chat-header";const o=document.createElement("div");o.className="gengage-chat-header-left",o.dataset.gengagePart="chat-header-left";const s=t.headerAvatarUrl??t.launcherImageUrl,c=typeof t.headerAvatarUrl=="string"&&t.headerAvatarUrl.length>0&&t.headerAvatarUrl!==t.launcherImageUrl;if(s){const _=document.createElement("img");_.className="gengage-chat-header-avatar",c&&_.classList.add("gengage-chat-header-avatar--logo"),_.dataset.gengagePart="chat-header-avatar",_.src=s,_.alt=t.headerTitle??"Assistant",o.appendChild(_)}const l=document.createElement("div");l.className="gengage-chat-header-info",l.dataset.gengagePart="chat-header-info";const g=document.createElement("div");g.className="gengage-chat-header-title-row",g.dataset.gengagePart="chat-header-title-row";const d=document.createElement("span");if(d.className="gengage-chat-header-title",d.dataset.gengagePart="chat-header-title",d.textContent=t.headerTitle??this.i18n.headerTitle??"Product Expert",g.appendChild(d),t.headerBadge){const _=document.createElement("span");_.className="gengage-chat-header-badge gds-badge gds-badge-brand",_.dataset.gengagePart="chat-header-badge",_.textContent=t.headerBadge,g.appendChild(_)}if(l.appendChild(g),t.footerAttribution===void 0){const _=this._createLegacyHeaderPoweredBy();_&&l.appendChild(_)}o.appendChild(l),i.appendChild(o);const p=document.createElement("div");p.className="gengage-chat-header-right",p.dataset.gengagePart="chat-header-actions";{const _=document.createElement("button");_.type="button",_.className="gengage-chat-header-btn gengage-chat-header-btn--reopen-panel gds-btn gds-btn-ghost gds-icon-btn",_.dataset.gengagePart="chat-header-reopen-panel",_.setAttribute("aria-label",this.i18n.showPanelAriaLabel),_.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="9" y1="3" x2="9" y2="21"/></svg>',_.addEventListener("click",()=>this._showMobilePanelFromBtn()),p.appendChild(_),this._reopenPanelBtn=_}if(t.headerCartUrl||t.onCartClick){const _=document.createElement("button");_.type="button",_.className="gengage-chat-header-btn gengage-chat-header-btn--cart gds-btn gds-btn-ghost gds-icon-btn",_.dataset.gengagePart="chat-header-cart",_.setAttribute("aria-label",this.i18n.cartAriaLabel),_.title=this.i18n.cartAriaLabel,_.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/></svg>',_.addEventListener("click",()=>t.onCartClick?.()),p.appendChild(_),this._cartBtn=_}if(t.onHistoryClick){const _=document.createElement("button");_.type="button",_.className="gengage-chat-header-btn gengage-chat-header-btn--history gds-btn gds-btn-ghost gds-icon-btn",_.dataset.gengagePart="chat-header-history",_.setAttribute("aria-label",this.i18n.historyAriaLabel),_.title=this.i18n.historyAriaLabel,_.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 8v5l3 2"/><path d="M3.05 11A9 9 0 1 1 5 17.5"/><path d="M3 8v4h4"/></svg>',_.addEventListener("click",()=>t.onHistoryClick?.()),p.appendChild(_)}if(t.onNewChat){const _=document.createElement("button");_.className="gengage-chat-header-btn gengage-chat-new-chat gds-btn gds-btn-ghost gds-icon-btn",_.dataset.gengagePart="chat-header-new-chat",_.type="button",_.setAttribute("aria-label",this.i18n.newChatButton),_.title=this.i18n.newChatButton,_.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>',_.addEventListener("click",()=>t.onNewChat?.()),p.appendChild(_)}const u=document.createElement("button");if(u.className="gengage-chat-close gds-btn gds-btn-ghost gds-icon-btn",u.dataset.gengagePart="chat-header-close",u.type="button",u.setAttribute("aria-label",this.i18n.closeButton),u.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',u.addEventListener("click",t.onClose),t.showHeaderFavorites){const _=document.createElement("button");_.className="gengage-chat-header-btn gengage-chat-header-btn--fav gds-btn gds-btn-ghost gds-icon-btn",_.dataset.gengagePart="chat-header-favorites",_.type="button",_.setAttribute("aria-label",this.i18n.favoritesAriaLabel),_.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>';const K=document.createElement("span");K.className="gengage-chat-header-fav-badge",K.dataset.gengagePart="chat-header-favorites-badge",K.setAttribute("aria-hidden","true"),K.style.display="none",_.appendChild(K),this._favBadgeEl=K,_.addEventListener("click",()=>{t.onFavoritesClick?.()}),p.appendChild(_)}p.appendChild(u),r&&i.insertBefore(r,i.firstChild),i.appendChild(p);{let K=0,me=0,he=!1;const N=V=>{if(!(this._options.getMobileViewport?.()??window.innerWidth<=768)||V.target.closest('button, a, input, [role="button"]'))return;const G=V.changedTouches?.[0];G&&(K=G.clientY,me=0,he=!0,this.root.style.transition="none")},H=V=>{if(!he)return;const G=V.changedTouches?.[0];if(!G)return;me=G.clientY-K;const te=(t.getMobileState?.()??"full")==="full"?Math.max(0,me):me;V.preventDefault(),this.root.style.transform=`translateY(${te}px)`},ie=()=>{if(!he)return;he=!1;const V=t.getMobileState?.()??"full";let G;me>72?G=V==="full"?"half":"close":me<-72&&V==="half"?G="full":G=V,this.root.style.transition="",G==="close"?(this.root.style.transform="translateY(100%)",setTimeout(()=>{this.root.style.transform="",t.onMobileSnap?.("close")},280)):(this.root.style.transform="",t.onMobileSnap?.(G)),me=0},Ee=()=>{he&&(he=!1,me=0,this.root.style.transition="",this.root.style.transform="")};i.addEventListener("touchstart",N,{passive:!0}),i.addEventListener("touchmove",H,{passive:!1}),i.addEventListener("touchend",ie,{passive:!0}),i.addEventListener("touchcancel",Ee,{passive:!0}),this._cleanups.push(()=>{i.removeEventListener("touchstart",N),i.removeEventListener("touchmove",H),i.removeEventListener("touchend",ie),i.removeEventListener("touchcancel",Ee)})}const f=document.createElement("div");f.className="gengage-chat-body",f.dataset.gengagePart="chat-body",this._panelEl=document.createElement("div"),this._panelEl.className="gengage-chat-panel gds-panel",this._panelEl.dataset.gengagePart="chat-panel",this._panelTopBar=new hc({onBack:()=>t.onPanelBack?.(),onForward:()=>t.onPanelForward?.(),onClose:()=>{t.getMobileViewport?.()??!1?this.hideMobilePanel():this.clearPanel(),t.onPanelClose?.()},backAriaLabel:this.i18n.backAriaLabel,forwardAriaLabel:this.i18n.forwardAriaLabel,closePanelAriaLabel:this.i18n.closePanelAriaLabel}),this._panelEl.appendChild(this._panelTopBar.getElement());const b=()=>this._updateScrollAffordance();this._panelEl.addEventListener("scroll",b,{passive:!0}),this._cleanups.push(()=>this._panelEl.removeEventListener("scroll",b)),f.appendChild(this._panelEl),this._dividerEl=document.createElement("div"),this._dividerEl.className="gengage-chat-panel-divider gengage-chat-panel-divider--hidden",this._dividerEl.dataset.gengagePart="chat-panel-divider",this._dividerEl.setAttribute("role","separator"),this._dividerEl.setAttribute("aria-label",this.i18n.togglePanelAriaLabel),this._dividerEl.setAttribute("title",this.i18n.togglePanelAriaLabel);const m=document.createElement("button");m.className="gengage-chat-panel-divider-toggle gds-btn gds-btn-ghost",m.dataset.gengagePart="chat-panel-divider-toggle",m.type="button",m.setAttribute("aria-label",this.i18n.togglePanelAriaLabel),m.setAttribute("title",this.i18n.togglePanelAriaLabel),m.textContent="»",m.addEventListener("click",()=>{if(this._ignoreNextDividerClick){this._ignoreNextDividerClick=!1;return}this.togglePanel(),this._onPanelToggle?.()});let h=null,C=null;const x=24,v=_=>{if(!(this._options.getMobileViewport?.()??window.innerWidth<=768))return;const K=_.changedTouches?.[0];K&&(h=K.clientX,C=K.clientY)},S=_=>{if(!(this._options.getMobileViewport?.()??window.innerWidth<=768)||h===null||C===null)return;const K=_.changedTouches?.[0];if(!K)return;const me=K.clientX-h,he=K.clientY-C;if(h=null,C=null,Math.abs(he)<x||Math.abs(he)<Math.abs(me))return;const N=he<0;N!==this._panelCollapsed&&(this._ignoreNextDividerClick=!0,this.setPanelCollapsed(N),this._onPanelToggle?.())};this._dividerEl.addEventListener("touchstart",v,{passive:!0}),this._dividerEl.addEventListener("touchend",S,{passive:!0}),this._cleanups.push(()=>{this._dividerEl.removeEventListener("touchstart",v),this._dividerEl.removeEventListener("touchend",S)}),this._dividerEl.appendChild(m),f.appendChild(this._dividerEl);const E=document.createElement("div");E.className="gengage-chat-conversation",E.dataset.gengagePart="chat-conversation",this._conversationEl=E,E.appendChild(i);const P=document.createElement("div");P.className="gengage-chat-offline-bar gds-evidence-card gds-evidence-card-warning",P.dataset.gengagePart="chat-offline-bar",P.setAttribute("role","status"),P.setAttribute("aria-live","polite"),P.textContent=this.i18n.offlineMessage,typeof navigator<"u"&&!navigator.onLine&&P.classList.add("gengage-chat-offline-bar--visible"),E.appendChild(P);const A=()=>P.classList.add("gengage-chat-offline-bar--visible"),M=()=>P.classList.remove("gengage-chat-offline-bar--visible");window.addEventListener("offline",A),window.addEventListener("online",M),this._cleanups.push(()=>{window.removeEventListener("offline",A),window.removeEventListener("online",M)}),this._kvkkSlot=document.createElement("div"),this._kvkkSlot.className="gengage-chat-kvkk-slot",this._kvkkSlot.dataset.gengagePart="chat-kvkk-slot",E.appendChild(this._kvkkSlot),this.messagesEl=document.createElement("div"),this.messagesEl.id=Vt,this.messagesEl.className="gengage-chat-messages",this.messagesEl.dataset.gengagePart="chat-messages",this.messagesEl.setAttribute("role","log"),this.messagesEl.setAttribute("aria-live","polite"),this.messagesEl.setAttribute("aria-atomic","false"),this.messagesEl.setAttribute("aria-label",this.i18n.chatMessagesAriaLabel),An(this.messagesEl);const j=document.createElement("button");j.type="button",j.className="gengage-chat-former-messages-btn gds-chip",j.dataset.gengagePart="chat-former-messages-button",j.textContent=this.i18n.showFormerMessagesButton,j.setAttribute("aria-label",this.i18n.showFormerMessagesButton),j.style.display="none",j.addEventListener("click",()=>{this._options.presentation?.onReleasePresentationFocus?.()}),this.messagesEl.appendChild(j),this._formerMessagesBtn=j;const X=()=>{this._userInteractionUntil=Date.now()+2e3};let oe=!1;const pe=()=>this._options.presentation,L=()=>{oe||(oe=!0,requestAnimationFrame(()=>{oe=!1;const{scrollTop:_,scrollHeight:K,clientHeight:me}=this.messagesEl,he=K-_-me;this._userScrolledUp=he>10;const N=this._presentationPinned?he<96:he<32,H=Date.now(),ie=H<this._programmaticScrollUntil,Ee=!N&&H<this._userInteractionUntil,V=ie?!1:Ee;N!==this._presentationPinned&&(this._presentationPinned=N,pe()?.onPinnedToBottomChange?.(N)),V!==this._presentationUserInteracting&&(this._presentationUserInteracting=V,pe()?.onUserInteractingChange?.(V))}))};this.messagesEl.addEventListener("scroll",L,{passive:!0}),this._cleanups.push(()=>{this.messagesEl.removeEventListener("scroll",L)});const F=_=>{X(),_.deltaY<-6&&this._presentationFocusThreadId&&this._options.presentation?.onFormerMessagesHint?.()};this.messagesEl.addEventListener("wheel",F,{passive:!0}),this._cleanups.push(()=>this.messagesEl.removeEventListener("wheel",F));const k=_=>{X(),this._touchStartY=_.touches[0]?.clientY??null},B=_=>{X();const K=_.touches[0]?.clientY,me=this._touchStartY;typeof K=="number"&&typeof me=="number"&&K-me>10&&this._presentationFocusThreadId&&this._options.presentation?.onFormerMessagesHint?.()};this.messagesEl.addEventListener("touchstart",k,{passive:!0}),this.messagesEl.addEventListener("touchmove",B,{passive:!0}),this._cleanups.push(()=>{this.messagesEl.removeEventListener("touchstart",k),this.messagesEl.removeEventListener("touchmove",B)}),E.appendChild(this.messagesEl),this._panelFloatingEl=document.createElement("div"),this._panelFloatingEl.className="gengage-chat-panel-float",this._panelFloatingEl.dataset.gengagePart="chat-panel-floating-layer",this._panelEl.appendChild(this._panelFloatingEl),this._resetPanelAiZoneElement(),this._pillsEl=document.createElement("div"),this._pillsEl.className="gengage-chat-pills",this._pillsEl.dataset.gengagePart="chat-suggestion-pills",this._pillsEl.setAttribute("role","toolbar"),this._pillsEl.setAttribute("aria-label",this.i18n.suggestionsAriaLabel),this._pillsEl.style.display="none";const R=document.createElement("div");R.className="gengage-chat-pills-scroll",R.dataset.gengagePart="chat-suggestion-pills-scroll",this._pillsEl.appendChild(R);const D=document.createElement("button");D.className="gengage-chat-pills-arrow gds-btn gds-btn-ghost",D.dataset.gengagePart="chat-suggestion-pills-more",D.type="button",D.setAttribute("aria-label",this.i18n.moreSuggestionsAriaLabel),D.textContent="›",D.addEventListener("click",()=>{R.scrollBy({left:150,behavior:"smooth"})}),this._pillsEl.appendChild(D);let $=!1;const ce=()=>{$||($=!0,requestAnimationFrame(()=>{$=!1;const _=R.scrollLeft+R.clientWidth>=R.scrollWidth-4;D.style.display=_?"none":""}))};R.addEventListener("scroll",ce,{passive:!0}),this._cleanups.push(()=>{R.removeEventListener("scroll",ce)}),E.appendChild(this._pillsEl),this._inputChipsEl=document.createElement("div"),this._inputChipsEl.className="gengage-chat-input-chips",this._inputChipsEl.dataset.gengagePart="chat-input-chips",this._inputChipsEl.style.display="none",E.appendChild(this._inputChipsEl);const ee=document.createElement("div");ee.className="gengage-chat-input-area",ee.dataset.gengagePart="chat-input-area",this.inputEl=document.createElement("textarea"),this.inputEl.className="gengage-chat-input",this.inputEl.dataset.gengagePart="chat-input",this.inputEl.rows=1,this.inputEl.placeholder=this.i18n.inputPlaceholder,this.inputEl.setAttribute("aria-label",this.i18n.inputAriaLabel??this.i18n.inputPlaceholder),this.inputEl.addEventListener("input",()=>{this._resizeRafId!==null&&cancelAnimationFrame(this._resizeRafId),this._resizeRafId=requestAnimationFrame(()=>{this._resizeRafId=null,this.inputEl.style.height="auto",this.inputEl.style.height=`${Math.min(this.inputEl.scrollHeight,120)}px`}),this._updateSendEnabled()}),this.inputEl.addEventListener("keydown",_=>{_.key==="Enter"&&!_.isComposing&&((this._options.getMobileViewport?.()??window.innerWidth<=768)||!_.shiftKey)&&(_.preventDefault(),this._submit())}),this.inputEl.addEventListener("paste",_=>{const K=_.clipboardData;if(!K)return;let me=null;const he=K.files?.[0];if(he&&he.type.startsWith("image/"))me=he;else if(K.items?.length)for(let N=0;N<K.items.length;N++){const H=K.items[N];if(H?.kind==="file"&&H.type.startsWith("image/")){const ie=H.getAsFile();if(ie){me=ie;break}}}me&&(_.preventDefault(),this._routeAttachmentFile(me))}),this._fileInput=document.createElement("input"),this._fileInput.type="file",this._fileInput.accept="image/jpeg,image/png,image/webp",this._fileInput.style.display="none",this._fileInput.addEventListener("change",()=>{const _=this._fileInput.files?.[0];_&&this._routeAttachmentFile(_),this._fileInput.value=""});const Y=document.createElement("div");Y.className="gengage-chat-attach-wrap",Y.dataset.gengagePart="chat-attach-wrap",this._attachWrapEl=Y;const y=document.createElement("button");this._attachBtn=y,y.className="gengage-chat-attach-btn gds-btn gds-btn-ghost",y.dataset.gengagePart="chat-attach-button",y.type="button",y.setAttribute("aria-label",this.i18n.attachImageButton),y.setAttribute("aria-haspopup","menu"),y.setAttribute("aria-expanded","false"),y.innerHTML='<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg>',y.addEventListener("click",_=>{_.stopPropagation(),this._toggleAttachMenu()});const z=document.createElement("div");this._attachMenuEl=z,z.className="gengage-chat-attach-menu gds-menu",z.dataset.gengagePart="chat-attach-menu",z.setAttribute("role","menu"),z.setAttribute("hidden","");const I=document.createElement("button");I.type="button",I.className="gengage-chat-attach-menu-item gds-btn gds-btn-ghost",I.dataset.gengagePart="chat-attach-menu-select-photo",I.setAttribute("role","menuitem"),I.innerHTML=`<span class="gengage-chat-attach-menu-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg></span><span class="gengage-chat-attach-menu-label">${this.i18n.attachMenuSelectPhoto}</span>`,I.addEventListener("click",_=>{_.stopPropagation(),this._closeAttachMenu(),this._fileInput.click()});const O=document.createElement("div");O.className="gengage-chat-attach-menu-sep",O.dataset.gengagePart="chat-attach-menu-separator",O.setAttribute("aria-hidden","true");const U=document.createElement("button");U.type="button",U.className="gengage-chat-attach-menu-item gds-btn gds-btn-ghost",U.dataset.gengagePart="chat-attach-menu-paste",U.setAttribute("role","menuitem"),U.innerHTML=`<span class="gengage-chat-attach-menu-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 2H9a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1Z"/><path d="M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/><path d="M16 4h2a2 2 0 0 1 2 2v4"/><path d="M21 14H11"/><path d="m15 10-4 4 4 4"/></svg></span><span class="gengage-chat-attach-menu-label">${this.i18n.attachMenuPaste}</span>`,U.addEventListener("click",_=>{_.stopPropagation();const K=typeof navigator.clipboard?.read=="function"?navigator.clipboard.read():void 0;this._pasteImageFromClipboardMenu(K)}),z.appendChild(I),z.appendChild(O),z.appendChild(U),Y.appendChild(y),Y.appendChild(z),this._previewStrip=document.createElement("div"),this._previewStrip.className="gengage-chat-attachment-preview gengage-chat-attachment-preview--hidden gds-card-soft",this._previewStrip.dataset.gengagePart="chat-attachment-preview";const q=document.createElement("img");q.className="gengage-chat-attachment-preview-thumb",q.dataset.gengagePart="chat-attachment-preview-thumb",q.alt="",this._previewName=document.createElement("span"),this._previewName.className="gengage-chat-attachment-name",this._previewName.dataset.gengagePart="chat-attachment-preview-name";const Z=document.createElement("button");Z.className="gengage-chat-attachment-remove gds-btn gds-btn-ghost",Z.dataset.gengagePart="chat-attachment-preview-remove",Z.type="button",Z.setAttribute("aria-label",this.i18n.removeAttachmentButton),Z.textContent="×",Z.addEventListener("click",()=>this.clearAttachment()),this._previewStrip.appendChild(q),this._previewStrip.appendChild(this._previewName),this._previewStrip.appendChild(Z),this.sendBtn=document.createElement("button"),this.sendBtn.className="gengage-chat-send gds-btn gds-btn-primary",this.sendBtn.dataset.gengagePart="chat-send",this.sendBtn.type="button",this.sendBtn.disabled=!0,this.sendBtn.setAttribute("aria-label",this.i18n.sendButton),this.sendBtn.dataset.tooltip=this.i18n.sendButton,this._renderSendButtonIcon("send"),this.sendBtn.addEventListener("click",()=>{if(this._sendStopHandler){const _=this._sendStopHandler;this.hideStopButton(),_();return}this._submit()}),ee.addEventListener("dragover",_=>{_.preventDefault(),ee.classList.add("gengage-chat-input-area--dragover")}),ee.addEventListener("dragleave",()=>{ee.classList.remove("gengage-chat-input-area--dragover")}),ee.addEventListener("drop",_=>{_.preventDefault(),ee.classList.remove("gengage-chat-input-area--dragover");const K=_.dataTransfer?.files[0];K&&this._routeAttachmentFile(K)});const ne=document.createElement("div");ne.className="gengage-chat-input-pill gds-input-shell",ne.dataset.gengagePart="chat-input-shell",ne.appendChild(Y),ne.appendChild(this.inputEl),this._voiceEnabled&&lc()&&(this._micBtn=document.createElement("button"),this._micBtn.className="gengage-chat-mic-btn gds-btn gds-btn-ghost",this._micBtn.dataset.gengagePart="chat-mic-button",this._micBtn.type="button",this._micBtn.setAttribute("aria-label",this.i18n.voiceButton),this._micBtn.innerHTML='<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" y1="19" x2="12" y2="23"/><line x1="8" y1="23" x2="16" y2="23"/></svg>',this._micBtn.addEventListener("click",()=>this._toggleVoice()),ne.appendChild(this._micBtn),this._voiceInput=new gc({onInterim:_=>{this._resizeRafId!==null&&(cancelAnimationFrame(this._resizeRafId),this._resizeRafId=null),this.inputEl.value=_,this.inputEl.style.height="auto",this.inputEl.style.height=`${Math.min(this.inputEl.scrollHeight,120)}px`},onFinal:_=>{this.inputEl.value=_},onAutoSubmit:_=>{this.inputEl.value=_,this._micBtn?.classList.remove("gengage-chat-mic-btn--active"),this._submit()},onStateChange:_=>{_==="listening"?this._micBtn?.classList.add("gengage-chat-mic-btn--active"):this._micBtn?.classList.remove("gengage-chat-mic-btn--active")},onError:(_,K)=>{this._micBtn?.classList.remove("gengage-chat-mic-btn--active")}},{lang:this._voiceLang})),ne.appendChild(this.sendBtn),ee.appendChild(this._previewStrip),ee.appendChild(this._fileInput),ee.appendChild(ne),E.appendChild(ee),f.appendChild(E),this._comparisonDockSlotEl=document.createElement("div"),this._comparisonDockSlotEl.className="gengage-chat-comparison-dock-slot",this._comparisonDockSlotEl.dataset.gengagePart="comparison-dock-slot",f.appendChild(this._comparisonDockSlotEl),this.root.appendChild(f),this._setupHorizontalSwipe(E);const Q=this._createFooterAttribution();Q&&this.root.appendChild(Q);const ge=_=>{_.key==="Escape"&&t.onClose()};this.root.addEventListener("keydown",ge),this._cleanups.push(()=>this.root.removeEventListener("keydown",ge)),e.appendChild(this.root)}addMessage(e){const t=this._options.renderMessageUISpec?.(e)??null;if(!(e.content||e.attachment||t||e.role==="user"&&this._onRollback))return;const a=document.createElement("div");if(a.className=`gengage-chat-bubble gds-message ${e.role==="assistant"?"gds-message-assistant":"gds-message-user"} gengage-chat-bubble--${e.role}`,a.dataset.gengagePart=e.role==="assistant"?"chat-message-assistant":"chat-message-user",a.setAttribute("role","listitem"),a.dataset.messageId=e.id,e.threadId&&(a.dataset.threadId=e.threadId),this._firstBotMessageIds.has(e.id)&&a.classList.add("gengage-chat-bubble--first"),e.attachment){const n=document.createElement("img");n.className="gengage-chat-attachment-thumb";const r=URL.createObjectURL(e.attachment);n.src=r,n.alt=e.attachment.name,n.addEventListener("load",()=>URL.revokeObjectURL(r),{once:!0}),n.addEventListener("error",()=>URL.revokeObjectURL(r),{once:!0}),a.insertBefore(n,a.firstChild)}if(e.content){const n=document.createElement("div");if(n.className="gengage-chat-bubble-text",n.dataset.gengagePart="chat-message-text",e.role==="assistant"){if(e.renderHint==="photo_analysis"?(a.classList.add("gengage-chat-bubble--photo-analysis"),this._renderPhotoAnalysisCard(n,e.photoAnalysis)):n.innerHTML=Ie(e.content),this._onLinkClick){const r=n.querySelectorAll("a[href]");for(const i of r)i.addEventListener("click",o=>{o.preventDefault();const s=i.getAttribute("href");s&&this._onLinkClick?.(s)})}}else n.textContent=e.content;a.appendChild(n)}if(t&&(a.classList.add("gengage-chat-bubble--ui-spec"),e.content||a.classList.add("gengage-chat-bubble--ui-spec-only"),t.classList.add("gengage-chat-bubble-ui-spec"),(t.classList.contains("gengage-chat-panel-restore-card")||t.querySelector(".gengage-chat-panel-restore-card")!==null)&&a.classList.add("gengage-chat-bubble--panel-restore"),a.appendChild(t)),e.role==="user"&&this._onRollback){const n=document.createElement("button");n.className="gengage-chat-rollback-btn gds-btn gds-btn-ghost",n.dataset.gengagePart="chat-message-rollback",n.type="button",n.setAttribute("aria-label",this.i18n.rollbackAriaLabel),n.title=this.i18n.rollbackAriaLabel,n.innerHTML='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="1 4 1 10 7 10"/><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"/></svg>',n.addEventListener("click",r=>{r.stopPropagation(),this._onRollback?.(e.id)}),a.appendChild(n)}this.messagesEl.appendChild(a),this._presentationFocusThreadId&&this._applyPresentationCollapsed(),this._scrollToBottom(e.role==="user")}removeMessageBubble(e){this._firstBotMessageIds.delete(e),this.messagesEl.querySelector(`[data-message-id="${Pe(e)}"]`)?.remove(),this._presentationFocusThreadId&&this._applyPresentationCollapsed()}showTypingIndicator(e,t="auto"){this.removeTypingIndicator();const a=this._thinkingSteps.length>0,n=a?this._thinkingSteps.slice(-3):e?[e]:this.i18n.loadingSequenceGeneric,{root:r,binding:i}=this._createLoadingSequence("chat",n,"chat-typing-indicator","gengage-chat-typing");r.dataset.typing="true",this._typingLoadingBinding=i,this.messagesEl.appendChild(r),a&&this._applyLoadingSteps(i,this._thinkingSteps,!0),this.setTypingIndicatorMode(t),this._scrollToBottom(!0)}resumeTypingIndicator(){if(this._typingLoadingBinding)return;const e=this._thinkingSteps.length>0,t=e?this._thinkingSteps.slice(-3):this.i18n.loadingSequenceGeneric,{root:a,binding:n}=this._createLoadingSequence("chat",t,"chat-typing-indicator","gengage-chat-typing");a.dataset.typing="true",this._typingLoadingBinding=n,this.messagesEl.appendChild(a),e&&this._applyLoadingSteps(n,this._thinkingSteps,!0),this.setTypingIndicatorMode("auto"),this._scrollToBottom(!0)}addThinkingStep(e){const t=e.trim();t&&this._thinkingSteps[this._thinkingSteps.length-1]!==t&&(this._thinkingSteps.push(t),this._thinkingSteps=this._thinkingSteps.slice(-3),this._typingLoadingBinding&&this._applyLoadingSteps(this._typingLoadingBinding,this._thinkingSteps,!0),this._panelLoadingBinding&&this._applyLoadingSteps(this._panelLoadingBinding,this._thinkingSteps,!0),this._panelAiZoneLoadingBinding&&this._applyLoadingSteps(this._panelAiZoneLoadingBinding,this._thinkingSteps,!0))}setThinkingSteps(e){const t=e.map(a=>a.trim()).filter(Boolean).slice(-3);t.length!==0&&(this._thinkingSteps=t,this._typingLoadingBinding&&this._applyLoadingSteps(this._typingLoadingBinding,this._thinkingSteps,!0),this._panelLoadingBinding&&this._applyLoadingSteps(this._panelLoadingBinding,this._thinkingSteps,!0),this._panelAiZoneLoadingBinding&&this._applyLoadingSteps(this._panelAiZoneLoadingBinding,this._thinkingSteps,!0))}removeTypingIndicator(){this._destroyLoadingBinding(this._typingLoadingBinding),this._typingLoadingBinding=null,this.messagesEl.querySelector(".gengage-chat-typing")?.remove(),this._thinkingSteps=[],this.hideStopButton()}setTypingIndicatorMode(e){const t=this.messagesEl.querySelector(".gengage-chat-typing"),a=this._typingLoadingBinding;if(!t||!a)return;const n=e==="auto"?this._panelOwnsProgressSurface()?"presence":"full":e;t.dataset.progressMode!==n&&(t.classList.toggle("gengage-chat-typing--presence",n==="presence"),t.dataset.progressMode=n,n==="presence"?(a.labelEl.setAttribute("aria-hidden","true"),a.labelEl.classList.add("gengage-sr-only"),t.setAttribute("aria-label",this.i18n.loadingMessage)):(a.labelEl.removeAttribute("aria-hidden"),a.labelEl.classList.remove("gengage-sr-only"),t.removeAttribute("aria-label")))}_panelOwnsProgressSurface(){return(this._options.getMobileViewport?.()??window.innerWidth<=768)||!this._panelVisible||this._panelCollapsed?!1:this._panelLoadingBinding!==null||this._panelAiZoneLoadingBinding!==null}showStopButton(e){this._sendStopHandler=e,this.sendBtn.disabled=!1,this.sendBtn.classList.add("gengage-chat-send--stop","gds-btn-secondary"),this.sendBtn.classList.remove("gds-btn-primary"),this.sendBtn.setAttribute("aria-label",this.i18n.stopGenerating),this.sendBtn.dataset.tooltip=this.i18n.stopGenerating,this._renderSendButtonIcon("stop")}hideStopButton(){this._sendStopHandler=null,this.sendBtn.classList.remove("gengage-chat-send--stop","gds-btn-secondary"),this.sendBtn.classList.add("gds-btn-primary"),this.sendBtn.setAttribute("aria-label",this.i18n.sendButton),this.sendBtn.dataset.tooltip=this.i18n.sendButton,this._renderSendButtonIcon("send"),this._updateSendEnabled()}showError(e,t){const a=document.createElement("div");a.className="gengage-chat-error",a.setAttribute("role","alert");const n=document.createElement("span");if(n.textContent=e??this.i18n.errorMessage,a.appendChild(n),t){const r=document.createElement("button");r.className="gengage-chat-error-retry",r.textContent=this.i18n.retryButton??"Retry",r.addEventListener("click",()=>{a.remove(),t()}),a.appendChild(r)}this.messagesEl.appendChild(a),this._scrollToBottom(!0)}showErrorWithRecovery(e,t){this.showError(e),this.setRecoveryPills(t)}showRecoveryPillsOnly(e){this.setRecoveryPills(e)}setRecoveryPills(e){this.setPills([{label:this.i18n.tryAgainButton,onAction:e.onRetry},{label:this.i18n.askSomethingElseButton,onAction:e.onNewQuestion}])}clearMessages(){const e=this._formerMessagesBtn;for(const t of[...this.messagesEl.children])t!==e&&t.remove()}setPills(e){const t=this._pillsEl.querySelector(".gengage-chat-pills-scroll");if(!t)return;for(;t.firstChild;)t.removeChild(t.firstChild);if(e.length===0){this._pillsEl.style.display="none";return}this._pillsEl.style.display="";for(const n of e){const r=document.createElement("button");if(r.className=n.image?"gengage-chat-pill gds-chip gds-chip-active gengage-chat-pill--rich":"gengage-chat-pill gds-chip gds-chip-active",r.type="button",n.icon){const o=On[n.icon]??Rn,s=document.createElement("span");s.className="gengage-chat-pill-icon",s.innerHTML=o,r.appendChild(s)}if(n.image&&Fe(n.image)){const o=document.createElement("img");o.className="gengage-chat-pill-img",o.src=n.image,o.alt="",r.appendChild(o)}const i=document.createElement("span");if(i.className="gengage-chat-pill-text",i.textContent=n.label,r.appendChild(i),n.description){const o=document.createElement("span");o.className="gengage-chat-pill-desc";const s=`pill-desc-${Math.random().toString(36).slice(2,9)}`;o.id=s,o.textContent=n.description,r.appendChild(o),r.setAttribute("aria-describedby",s)}r.addEventListener("click",()=>n.onAction()),t.appendChild(r)}const a=this._pillsEl.querySelector(".gengage-chat-pills-arrow");a&&requestAnimationFrame(()=>{a.style.display=t.scrollWidth>t.clientWidth?"":"none"})}focusInput(){this.inputEl.focus()}showKvkkBanner(e){this._kvkkSlot.innerHTML="";const t=pc({htmlContent:e});this._kvkkSlot.appendChild(t)}hideKvkkBanner(){this._kvkkSlot.innerHTML=""}isKvkkBannerVisible(){return this._kvkkSlot.childNodes.length>0}getElement(){return this.root}openAttachmentPicker(){this._fileInput.click()}setAttachmentControlsVisible(e){this._attachWrapEl&&(this._attachWrapEl.style.display=e?"":"none",e||this._closeAttachMenu())}setBeautyPhotoStepCard(e){this._beautyPhotoStepEl=fc(this._beautyPhotoStepEl,this._conversationEl??null,e,this.i18n,()=>this.openAttachmentPicker())}stageAttachment(e){this._pendingAttachment=e,this._previewName.textContent=e.name;const t=this._previewStrip.querySelector(".gengage-chat-attachment-preview-thumb");t&&(t.src&&t.src.startsWith("blob:")&&URL.revokeObjectURL(t.src),t.src=URL.createObjectURL(e)),this._previewStrip.classList.remove("gengage-chat-attachment-preview--hidden"),this._updateSendEnabled()}clearAttachment(){const e=this._previewStrip.querySelector(".gengage-chat-attachment-preview-thumb");e?.src&&(URL.revokeObjectURL(e.src),e.src=""),this._pendingAttachment=null,this._previewStrip.classList.add("gengage-chat-attachment-preview--hidden"),this._updateSendEnabled()}_routeAttachmentFile(e){if(this._onAttachment)try{this._onAttachment(e)}catch(t){console.error("[gengage:chat] Attachment callback error:",t)}else this.stageAttachment(e)}_closeAttachMenu(){this._attachMenuEl&&(this._attachMenuEl.setAttribute("hidden",""),this._attachBtn?.setAttribute("aria-expanded","false"),this._attachMenuClickTimerId!==null&&(clearTimeout(this._attachMenuClickTimerId),this._attachMenuClickTimerId=null),this._attachMenuCleanup&&(this._attachMenuCleanup(),this._attachMenuCleanup=null))}_openAttachMenu(){if(!this._attachMenuEl)return;this._attachMenuEl.removeAttribute("hidden"),this._attachBtn?.setAttribute("aria-expanded","true");const e=a=>{this._attachWrapEl?.contains(a.target)||this._closeAttachMenu()},t=a=>{a.key==="Escape"&&(a.stopPropagation(),this._closeAttachMenu())};this._attachMenuClickTimerId=window.setTimeout(()=>{this._attachMenuClickTimerId=null,document.addEventListener("click",e,!0)},0),document.addEventListener("keydown",t,!0),this._attachMenuCleanup=()=>{document.removeEventListener("click",e,!0),document.removeEventListener("keydown",t,!0)}}_toggleAttachMenu(){this._attachMenuEl&&(this._attachMenuEl.hasAttribute("hidden")?this._openAttachMenu():this._closeAttachMenu())}async _pasteImageFromClipboardMenu(e){const t=await Sc(e);if(t){this._routeAttachmentFile(t),this._closeAttachMenu();return}De("gengage:global:error",{message:this.i18n.clipboardNoImageMessage,source:"chat"}),this._closeAttachMenu()}getPendingAttachment(){return this._pendingAttachment}setPanelAiZoneState(e,t){if(this._panelAiZoneEl.isConnected&&(this._clearPanelAiZoneState(),e!=="hidden")){if(this._panelAiZoneEl.removeAttribute("hidden"),e==="analyzing"){this._panelAiZoneEl.innerHTML="";const a=[t?.analyzingLabel??this.i18n.aiAnalysisAnalyzingLabel,...this.i18n.loadingSequencePanel],n=this._thinkingSteps.length>0,{root:r,binding:i}=this._createLoadingSequence("panel",n?this._thinkingSteps.slice(-3):a,"panel-ai-zone-loading","gengage-chat-panel-ai-zone-inner");this._panelAiZoneLoadingBinding=i,n&&this._applyLoadingSteps(i,this._thinkingSteps,!0),this._panelAiZoneEl.appendChild(r)}else e==="results"&&t?.resultEl&&(this._panelAiZoneEl.innerHTML="",this._panelAiZoneEl.appendChild(t.resultEl));this.setTypingIndicatorMode("auto")}}_clearPanelAiZoneState(){this._destroyLoadingBinding(this._panelAiZoneLoadingBinding),this._panelAiZoneLoadingBinding=null,this._panelAiZoneEl.innerHTML="",this._panelAiZoneEl.setAttribute("hidden",""),this.setTypingIndicatorMode("auto")}_resetPanelAiZoneElement(){this._panelAiZoneEl=document.createElement("div"),this._panelAiZoneEl.className="gengage-chat-panel-ai-zone",this._panelAiZoneEl.setAttribute("hidden","")}_emitHostShellSync(){this.setTypingIndicatorMode("auto"),this._onHostShellSync?.()}_applyPanelCollapsedState(){this._panelEl.classList.toggle("gengage-chat-panel--collapsed",this._panelCollapsed);const e=this._dividerEl.querySelector(".gengage-chat-panel-divider-toggle");e&&(e.textContent=this._panelCollapsed?"«":"»")}_syncPanelTopBarFromContent(e){const t=e.querySelector(".gengage-chat-product-grid-head");if(t){const a=t.querySelector(".gengage-chat-product-grid-head-title"),n=t.querySelector(".gengage-chat-product-grid-head-actions");if(a?.textContent?.trim()){const r=a.textContent.trim();e.dataset.gengagePanelDerivedTitle=r,this._panelTopBar.setTitle(r)}n?(n.classList.add("gengage-chat-panel-topbar-toolbar-host"),this._panelTopBar.setActions(n)):this._panelTopBar.setActions(null),t.remove();return}this._syncPanelTopBarTitleFromContent(e)}_syncPanelTopBarTitleFromContent(e){const t=e.dataset.gengagePanelDerivedTitle;if(t?.trim()){this._panelTopBar.setTitle(t.trim());return}const a=e.querySelector(".gengage-chat-product-details-title, .gengage-chat-product-details-similars-heading, .gengage-chat-ai-top-picks-title")?.textContent?.trim();a&&this._panelTopBar.setTitle(a)}setPanelContent(e,t){this._destroyLoadingBinding(this._panelLoadingBinding),this._panelLoadingBinding=null,t?.preserveAiZone!==!0&&this._clearPanelAiZoneState(),this._panelVisible?this._swapPanelContent(e):(this._panelEl.innerHTML="",this._resetPanelAiZoneElement(),this._panelEl.appendChild(this._panelTopBar.getElement()),this._panelEl.appendChild(this._panelAiZoneEl),this._panelTopBar.setActions(null),this._panelEl.appendChild(e),this._panelEl.appendChild(this._panelFloatingEl)),this._syncPanelTopBarFromContent(e),this._dividerEl.classList.remove("gengage-chat-panel-divider--hidden"),this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this.root.classList.add("gengage-chat-drawer--with-panel"),this._panelCollapsed&&this.setPanelCollapsed(!1),this._syncComparisonDockVisibility(),requestAnimationFrame(()=>{this._updateScrollAffordance(),this._smoothScrollPanelListToTop()}),this._reopenPanelBtn&&(this._reopenPanelBtn.style.display="none"),this._emitHostShellSync()}_swapPanelContent(e){this._panelTopBar.setActions(null);const t=this._panelEl.querySelector(".gengage-chat-panel-skeleton");if(t){t.replaceWith(e);return}const a=this.getPanelContentElement();if(a){a.replaceWith(e);return}this._panelEl.insertBefore(e,this._panelFloatingEl)}appendPanelContent(e){this._panelEl.insertBefore(e,this._panelFloatingEl),this._syncPanelTopBarFromContent(this.getPanelContentElement()??e),this._dividerEl.classList.remove("gengage-chat-panel-divider--hidden"),this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this.root.classList.add("gengage-chat-drawer--with-panel"),this.setPanelCollapsed(this._panelCollapsed),this._syncComparisonDockVisibility(),this._emitHostShellSync()}getPanelContentElement(){const e=this._panelEl.children;for(let t=0;t<e.length;t++){const a=e[t];if(!(a.classList.contains("gengage-chat-panel-topbar")||a.classList.contains("gengage-chat-panel-ai-zone")||a.classList.contains("gengage-chat-panel-float")))return a}return null}resyncPanelTopBarFromCurrentContent(){const e=this.getPanelContentElement();e&&this._syncPanelTopBarFromContent(e)}isPanelVisible(){return this._panelVisible}hasPanelContent(){return this._panelVisible&&this.getPanelContentElement()!==null}isPanelLoading(){return this._panelEl.querySelector(".gengage-chat-panel-skeleton")!==null}showPanelLoading(e){this._destroyLoadingBinding(this._panelLoadingBinding),this._panelLoadingBinding=null,this._dividerEl.classList.remove("gengage-chat-panel-divider--hidden"),this._panelEl.innerHTML="",this._resetPanelAiZoneElement(),this._panelEl.appendChild(this._panelTopBar.getElement()),this._panelEl.appendChild(this._panelAiZoneEl);const t=document.createElement("div");t.className="gengage-chat-panel-skeleton";const a=e==="comparisonTable"?this.i18n.loadingSequenceComparison:this.i18n.loadingSequencePanel,n=this._thinkingSteps.length>0,{root:r,binding:i}=this._createLoadingSequence("panel",n?this._thinkingSteps.slice(-3):a,"panel-loading-status","gengage-chat-panel-loading-status");switch(this._panelLoadingBinding=i,n&&this._applyLoadingSteps(i,this._thinkingSteps,!0),e){case"productDetails":{t.appendChild(r);const o=document.createElement("div");o.className="gengage-chat-panel-skeleton-block gengage-chat-panel-skeleton-block--image",t.appendChild(o);for(let s=0;s<3;s++){const c=document.createElement("div");c.className="gengage-chat-panel-skeleton-block gengage-chat-panel-skeleton-block--text",t.appendChild(c)}break}case"productList":case"groupList":{t.appendChild(r);const o=document.createElement("div");o.className="gengage-chat-panel-skeleton-grid";for(let s=0;s<6;s++){const c=document.createElement("div");c.className="gengage-chat-panel-skeleton-block gengage-chat-panel-skeleton-block--card",o.appendChild(c)}t.appendChild(o);break}case"comparisonTable":{t.classList.add("gengage-chat-panel-skeleton--comparison"),t.appendChild(r);const o=document.createElement("div");o.className="gengage-chat-comparison gengage-chat-comparison--skeleton",o.setAttribute("aria-busy","true");const s=document.createElement("div");s.className="gengage-chat-comparison-recommended";const c=document.createElement("div");c.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-rec-label",s.appendChild(c);const l=document.createElement("div");l.className="gengage-chat-comparison-recommended-body";const g=document.createElement("div");g.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-rec-img",g.setAttribute("aria-hidden","true");const d=document.createElement("div");d.className="gengage-chat-comparison-recommended-info";for(let A=0;A<2;A++){const M=document.createElement("div");M.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-rec-title",A===1&&M.classList.add("gengage-chat-comparison-skeleton-rec-title--short"),d.appendChild(M)}const p=document.createElement("div");p.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-rec-price",d.appendChild(p),l.appendChild(g),l.appendChild(d),s.appendChild(l);const u=document.createElement("div");u.className="gengage-chat-comparison-highlights";const f=document.createElement("div");f.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-hl-label",u.appendChild(f);const b=document.createElement("ul");b.className="gengage-chat-comparison-skeleton-hl-list";for(let A=0;A<3;A++){const M=document.createElement("li"),j=document.createElement("div");j.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-hl-line",A===1&&j.classList.add("gengage-chat-comparison-skeleton-hl-line--medium"),A===2&&j.classList.add("gengage-chat-comparison-skeleton-hl-line--short"),M.appendChild(j),b.appendChild(M)}u.appendChild(b),s.appendChild(u),o.appendChild(s);const m=document.createElement("div");m.className="gengage-chat-comparison-key-differences";const h=document.createElement("div");h.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-kd-heading",m.appendChild(h);const C=document.createElement("div");C.className="gengage-chat-comparison-key-differences-content";for(let A=0;A<4;A++){const M=document.createElement("div");M.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-kd-line",C.appendChild(M)}m.appendChild(C),o.appendChild(m);const x=document.createElement("div");x.className="gengage-chat-comparison-special gengage-chat-comparison-special--skeleton";const v=document.createElement("div");v.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-special-line",x.appendChild(v),o.appendChild(x);const S=document.createElement("div");S.className="gengage-chat-comparison-skeleton-table-wrap";const E=document.createElement("div");E.className="gengage-chat-comparison-skeleton-table-head";const P=document.createElement("div");P.className="gengage-chat-comparison-skeleton-table-corner",E.appendChild(P);for(let A=0;A<3;A++){const M=document.createElement("div");M.className="gengage-chat-comparison-skeleton-table-col";const j=document.createElement("div");j.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-table-th-img";const X=document.createElement("div");X.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-table-th-name";const oe=document.createElement("div");oe.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-table-th-price",M.appendChild(j),M.appendChild(X),M.appendChild(oe),E.appendChild(M)}S.appendChild(E);for(let A=0;A<3;A++){const M=document.createElement("div");M.className="gengage-chat-comparison-skeleton-table-row";const j=document.createElement("div");j.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-table-label",M.appendChild(j);for(let X=0;X<3;X++){const oe=document.createElement("div");oe.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-table-cell",M.appendChild(oe)}S.appendChild(M)}o.appendChild(S),t.appendChild(o);break}default:t.appendChild(r);for(let o=0;o<3;o++){const s=document.createElement("div");s.className="gengage-chat-panel-skeleton-block",t.appendChild(s)}break}this._panelEl.appendChild(t),this._panelEl.appendChild(this._panelFloatingEl),this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this.root.classList.add("gengage-chat-drawer--with-panel"),this._applyPanelCollapsedState(),this._syncComparisonDockVisibility(),this._emitHostShellSync()}updatePanelTopBar(e,t,a){const n=this._options.getMobileViewport?.()??!1;this._panelTopBar.update(n?!0:e,t,a);const r=this.getPanelContentElement();r&&this._syncPanelTopBarTitleFromContent(r)}getPanelTopBarTitle(){return this._panelTopBar.getTitle()}updateFavoritesBadge(e){this._favBadgeEl&&(e>0?(this._favBadgeEl.textContent=e>99?"99+":String(e),this._favBadgeEl.style.display=""):this._favBadgeEl.style.display="none")}clearPanel(){this._destroyLoadingBinding(this._panelLoadingBinding),this._panelLoadingBinding=null,this._destroyLoadingBinding(this._panelAiZoneLoadingBinding),this._panelAiZoneLoadingBinding=null,this._panelEl.innerHTML="",this._resetPanelAiZoneElement(),this._panelEl.appendChild(this._panelTopBar.getElement()),this._panelEl.appendChild(this._panelAiZoneEl),this._panelEl.appendChild(this._panelFloatingEl),this._panelTopBar.setActions(null),this._panelVisible=!1,this._panelEl.classList.remove("gengage-chat-panel--visible","gengage-chat-panel--collapsed"),this.root.classList.remove("gengage-chat-drawer--with-panel"),this._dividerEl.classList.add("gengage-chat-panel-divider--hidden"),this._reopenPanelBtn&&(this._reopenPanelBtn.style.display="none"),this.setComparisonDockContent(null),this._emitHostShellSync()}_syncComparisonDockVisibility(){const e=this._panelVisible&&this._comparisonDockSlotEl.children.length>0;this._comparisonDockSlotEl.classList.toggle("gengage-chat-comparison-dock-slot--panel-visible",e),this._comparisonDockSlotEl.style.display=e?"":"none",this._comparisonDockSlotEl.setAttribute("aria-hidden",e?"false":"true")}setComparisonDockContent(e){this._comparisonDockSlotEl.replaceChildren(),e&&this._comparisonDockSlotEl.appendChild(e),this._syncComparisonDockVisibility()}hideMobilePanel(){this._panelVisible&&(this._panelVisible=!1,this._panelEl.classList.remove("gengage-chat-panel--visible"),this._reopenPanelBtn&&(this._reopenPanelBtn.style.display="flex"),this._syncComparisonDockVisibility(),this._emitHostShellSync())}_showMobilePanelFromBtn(){this._panelVisible||(this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this._reopenPanelBtn&&(this._reopenPanelBtn.style.display="none"),this._syncComparisonDockVisibility(),this._emitHostShellSync())}showMobilePanel(){this._showMobilePanelFromBtn()}expandPanel(){this._panelCollapsed=!1,this._panelEl.classList.remove("gengage-chat-panel--collapsed"),this._panelVisible||(this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this.root.classList.add("gengage-chat-drawer--with-panel")),this._syncComparisonDockVisibility(),this._emitHostShellSync()}setForceExpanded(){this._panelCollapsed=!1,this._panelEl.classList.remove("gengage-chat-panel--collapsed"),this._panelVisible||(this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this.root.classList.add("gengage-chat-drawer--with-panel")),this._dividerEl.classList.remove("gengage-chat-panel-divider--hidden"),this._syncComparisonDockVisibility(),this._emitHostShellSync()}_smoothScrollPanelListToTop(){this._panelEl.scrollTop=0}_getChoicePrompterRevealScrollThreshold(){if(!(this._options.getMobileViewport?.()??window.innerWidth<=768))return 88;const e=this._panelEl.querySelector(".gengage-chat-product-grid--mobile .gengage-chat-product-card, .gengage-chat-product-grid .gengage-chat-product-card"),t=this._panelEl.querySelector(".gengage-chat-product-card"),a=e??t;if(!a)return 88;const n=Math.round(a.getBoundingClientRect().height);return!Number.isFinite(n)||n<=0?88:n}_updateScrollAffordance(){const e=this._panelEl,t=e.scrollTop+e.clientHeight>=e.scrollHeight-10,a=this._getChoicePrompterRevealScrollThreshold();e.classList.toggle("gengage-chat-panel--has-scroll",!t&&e.scrollHeight>e.clientHeight),e.classList.toggle("gengage-chat-panel--scrolled",e.scrollTop>a)}_setupHorizontalSwipe(e){let t=0,a=0;const n=i=>{if(!(this._options.getMobileViewport?.()??window.innerWidth<=768))return;const o=i.touches[0];o&&(t=o.clientX,a=o.clientY)},r=i=>{if(!(this._options.getMobileViewport?.()??window.innerWidth<=768))return;const o=i.changedTouches[0];if(!o)return;const s=o.clientX-t,c=o.clientY-a;Math.abs(s)>50&&Math.abs(s)>Math.abs(c)*2&&(this.togglePanel(),this._onPanelToggle?.())};e.addEventListener("touchstart",n,{passive:!0}),e.addEventListener("touchend",r,{passive:!0}),this._cleanups.push(()=>{e.removeEventListener("touchstart",n),e.removeEventListener("touchend",r)})}togglePanel(){this.setPanelCollapsed(!this._panelCollapsed)}isPanelCollapsed(){return this._panelCollapsed}setPanelCollapsed(e){this._panelCollapsed=e,this._applyPanelCollapsedState(),this._emitHostShellSync()}persistPanelState(e){try{const t=`gengage:panel:${e}`;this._panelCollapsed?sessionStorage.setItem(t,"collapsed"):sessionStorage.removeItem(t)}catch{}}restorePanelState(e){try{const t=`gengage:panel:${e}`;if(sessionStorage.getItem(t)==="collapsed")return this._panelCollapsed=!0,!0}catch{}return!1}_createLoadingSequence(e,t,a,n){const r=document.createElement("div");r.className=`${n} gds-progress-loader ${e==="chat"?"gds-progress-loader-chat":"gds-progress-loader-panel"}`,r.dataset.gengagePart=a,r.setAttribute("role","status"),r.setAttribute("aria-live","polite");const i=document.createElement("span");i.className=e==="chat"?"gengage-chat-typing-text gds-progress-label":"gengage-chat-panel-loading-label gds-progress-label",r.appendChild(i);const o=document.createElement("span");o.className=e==="chat"?"gengage-chat-typing-dots gds-progress-dots":"gds-progress-dots",o.setAttribute("aria-hidden","true");for(let c=0;c<3;c++){const l=document.createElement("span");l.className="gds-progress-dot",o.appendChild(l)}r.appendChild(o);const s={labelEl:i,steps:[],index:0,intervalId:null};return this._applyLoadingSteps(s,t),{root:r,binding:s}}_applyLoadingSteps(e,t,a=!1){const n=this._normalizeLoadingSteps(t),r=n[n.length-1],i=this._normalizeLoadingSteps(this.i18n.loadingSequenceGeneric);e.steps=a&&r?[r]:n.length>0?n:i.length>0?i:[this.i18n.loadingMessage],this._clearLoadingBindingInterval(e),e.index=0;const o=e.steps[e.index];e.labelEl.textContent!==o&&(e.labelEl.textContent=o),e.steps.length>1&&(e.intervalId=setInterval(()=>{e.index=(e.index+1)%e.steps.length,e.labelEl.textContent=e.steps[e.index]},_c))}_normalizeLoadingSteps(e){return e.map(t=>t.trim()).filter(Boolean)}_uniqueLoadingSteps(e){const t=new Set,a=[];for(const n of e){const r=n.trim();!r||t.has(r)||(t.add(r),a.push(r))}return a}_clearLoadingBindingInterval(e){e?.intervalId&&(clearInterval(e.intervalId),e.intervalId=null)}_destroyLoadingBinding(e){this._clearLoadingBindingInterval(e)}_updateSendEnabled(){if(this._sendStopHandler){this.sendBtn.disabled=!1;return}const e=this.inputEl.value.trim().length>0||this._pendingAttachment!==null;this.sendBtn.disabled=!e}_renderSendButtonIcon(e){this.sendBtn.innerHTML=e==="stop"?'<span class="gengage-chat-send-stop-icon" aria-hidden="true"></span>':'<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"/></svg>'}_submit(){const e=this.inputEl.value.trim(),t=this._pendingAttachment;if(this._sendStopHandler){const a=this._sendStopHandler;if(this.hideStopButton(),a(),!e&&!t)return}else if(!e&&!t)return;this.onSend(e,t??void 0),this.inputEl.value="",this.inputEl.style.height="auto",this.clearAttachment(),this._updateSendEnabled()}_toggleVoice(){if(this._voiceInput)if(this._voiceInput.state==="listening"){const e=this._voiceInput.stop();e.trim()&&(this.inputEl.value=e,this._submit())}else this.inputEl.value="",this._voiceInput.start()}lockScrollForRestore(){this._scrollLockedUntil=Date.now()+500}_scrollToBottom(e=!1){!e&&this._userScrolledUp||!e&&this._options.presentation?.shouldBlockSoftAutoScroll?.()||!e&&Date.now()<this._scrollLockedUntil||requestAnimationFrame(()=>{this.messagesEl.scrollTop=this.messagesEl.scrollHeight,this._userScrolledUp=!1})}scrollToBottomIfNeeded(){this._scrollToBottom(!1)}updateBotMessage(e,t,a,n){const r=this.messagesEl.querySelector(`[data-message-id="${Pe(e)}"]`);if(!r)return;let i=r.querySelector(".gengage-chat-bubble-text");i||(i=document.createElement("div"),i.className="gengage-chat-bubble-text",r.appendChild(i)),a==="photo_analysis"?(r.classList.add("gengage-chat-bubble--photo-analysis"),this._renderPhotoAnalysisCard(i,n)):(r.classList.remove("gengage-chat-bubble--photo-analysis"),i.innerHTML=Ie(t)),this._scrollToBottom(!1)}markFirstBotMessage(e){this._firstBotMessageIds.add(e);const t=this.messagesEl.querySelector(`[data-message-id="${Pe(e)}"]`);t&&t.classList.add("gengage-chat-bubble--first")}scrollToLastThread(){const e=this.messagesEl.querySelectorAll("[data-thread-id]");if(e.length===0){this._scrollToBottom(!0);return}const t=e[e.length-1].getAttribute("data-thread-id");if(!t){this._scrollToBottom(!0);return}this._programmaticScrollUntil=Date.now()+700;const a=this.messagesEl.querySelector(`[data-thread-id="${Pe(t)}"]`);a?requestAnimationFrame(()=>{a.scrollIntoView({block:"start",behavior:"auto"}),this._userScrolledUp=!1}):this._scrollToBottom(!0)}scrollThreadIntoView(e,t="smooth"){const a=this.messagesEl.querySelectorAll(`[data-thread-id="${Pe(e)}"]`),n=this.messagesEl.ownerDocument.defaultView?.HTMLElement;if(!n)return!1;let r=null,i=null;for(let c=0;c<a.length;c++){const l=a[c];if(l instanceof n&&(i||(i=l),!l.classList.contains("gengage-chat-bubble--presentation-collapsed")&&!l.classList.contains("gengage-chat-bubble--hidden")&&l.offsetHeight!==0&&!(l.classList.contains("gengage-chat-bubble--assistant")&&(l.textContent?.trim().length??0)===0))){r=l;break}}if(r||(r=i),!r)return!1;const o=Date.now();this._programmaticScrollUntil=o+$n,this._scrollLockedUntil=Math.max(this._scrollLockedUntil,o+$n),this._userScrolledUp=!0;const s=()=>{this._scrollMessagesTo(Math.max(r.offsetTop-20,0),t)};return s(),requestAnimationFrame(s),!0}scrollToBottomPresentation(e="smooth"){this._programmaticScrollUntil=Date.now()+700,requestAnimationFrame(()=>{this._scrollMessagesTo(this.messagesEl.scrollHeight,e),this._userScrolledUp=!1})}_scrollMessagesTo(e,t){if(typeof this.messagesEl.scrollTo=="function"){this.messagesEl.scrollTo({top:e,behavior:t});return}this.messagesEl.scrollTop=e}setPresentationFocus(e){this._presentationFocusThreadId=e,this._applyPresentationCollapsed()}setFormerMessagesButtonVisible(e){this._formerMessagesBtn&&(this._formerMessagesBtn.style.display=e?"":"none")}setInputPlaceholder(e){this.inputEl.placeholder=e}_applyPresentationCollapsed(){const e=this._presentationFocusThreadId;this.messagesEl.querySelectorAll("[data-thread-id]").forEach(t=>{const a=t.dataset.threadId;a&&(e&&a!==e?t.classList.add("gengage-chat-bubble--presentation-collapsed"):t.classList.remove("gengage-chat-bubble--presentation-collapsed"))})}refreshPresentationCollapsed(){this._presentationFocusThreadId&&this._applyPresentationCollapsed()}setInputAreaChips(e){if(this._inputChipsEl.innerHTML="",e.length===0){this._inputChipsEl.style.display="none";return}this._inputChipsEl.style.display="";for(const t of e){const a=document.createElement("button");if(a.className="gengage-chat-input-chip gds-chip",a.type="button",t.icon){const r=On[t.icon]??Rn,i=document.createElement("span");i.className="gengage-chat-input-chip-icon",i.innerHTML=r,a.appendChild(i)}const n=document.createElement("span");n.textContent=t.label,a.appendChild(n),a.addEventListener("click",()=>t.onAction()),this._inputChipsEl.appendChild(a)}}clearInputAreaChips(){this._inputChipsEl.innerHTML="",this._inputChipsEl.style.display="none"}trapFocus(){this._previouslyFocusedElement=document.activeElement,this.releaseFocus();const e=t=>{if(t.key!=="Tab")return;const a=Array.from(this.root.querySelectorAll('a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])')).filter(l=>{const g=getComputedStyle(l);return l.hidden||l.getAttribute("aria-hidden")==="true"||g.display==="none"||g.visibility==="hidden"?!1:l.getClientRects().length>0});if(a.length===0)return;const n=a[0],r=a[a.length-1],i=t.composedPath().find(l=>l instanceof HTMLElement&&this.root.contains(l))??null,o=this.root.getRootNode(),s=i??(o instanceof ShadowRoot&&o.activeElement instanceof HTMLElement?o.activeElement:document.activeElement instanceof HTMLElement?document.activeElement:null),c=s&&this.root.contains(s)?s:null;t.shiftKey?(c===n||!this.root.contains(c))&&(t.preventDefault(),r.focus()):(c===r||!this.root.contains(c))&&(t.preventDefault(),n.focus())};this._focusTrapHandler=e,this.root.addEventListener("keydown",e)}releaseFocus(){if(this._focusTrapHandler&&(this.root.removeEventListener("keydown",this._focusTrapHandler),this._focusTrapHandler=null),this._previouslyFocusedElement){try{this._previouslyFocusedElement.focus()}catch{}this._previouslyFocusedElement=null}}flashCartBadge(){this._cartBtn&&(this._cartBtn.classList.remove("gengage-chat-header-btn--cart-flash"),this._cartBtn.offsetWidth,this._cartBtn.classList.add("gengage-chat-header-btn--cart-flash"),this._cartBtn.addEventListener("animationend",()=>{this._cartBtn?.classList.remove("gengage-chat-header-btn--cart-flash")},{once:!0}))}hideCartToast(){this._cartToastTimerId!==null&&(window.clearTimeout(this._cartToastTimerId),this._cartToastTimerId=null);const e=this._cartToastEl;e&&(this._cartToastEl=null,e.classList.remove("gengage-chat-cart-toast--visible"),window.setTimeout(()=>{e.remove()},300))}showCartToast(e,t){const a=t?.tone??"success",n=t?.autoHideMs??2500;let r=this._cartToastEl;(!r||!r.isConnected)&&(r=document.createElement("div"),r.className="gengage-chat-cart-toast",r.setAttribute("role","status"),r.setAttribute("aria-live","polite"),this.root.appendChild(r),this._cartToastEl=r),this._cartToastTimerId!==null&&(window.clearTimeout(this._cartToastTimerId),this._cartToastTimerId=null),r.classList.toggle("gengage-chat-cart-toast--neutral",a==="neutral"),r.textContent=e,r.classList.remove("gengage-chat-cart-toast--visible"),r.offsetWidth,r.classList.add("gengage-chat-cart-toast--visible"),n!==null&&(this._cartToastTimerId=window.setTimeout(()=>{this.hideCartToast()},n))}destroy(){An(null),this.releaseFocus(),this._resizeRafId!==null&&(cancelAnimationFrame(this._resizeRafId),this._resizeRafId=null),this._destroyLoadingBinding(this._typingLoadingBinding),this._typingLoadingBinding=null,this._destroyLoadingBinding(this._panelLoadingBinding),this._panelLoadingBinding=null,this._destroyLoadingBinding(this._panelAiZoneLoadingBinding),this._panelAiZoneLoadingBinding=null,this.hideCartToast(),this._closeAttachMenu();for(const e of this._cleanups)e();this._cleanups.length=0,this._voiceInput?.destroy(),this._voiceInput=null}},Ec=["shopping","beauty_consulting","account_expert"];function Fn(e){return e==="watch_expert"?"account_expert":Ec.includes(e)?e:null}function Pc(e){return typeof e=="string"?Fn(e):null}function ze(e){return e==null||typeof e!="object"||Array.isArray(e)?null:e}function Tc(...e){for(const t of e)if(typeof t=="string"){const a=t.trim();if(a.length>0)return a}}function Ac(e){const t=ze(e);if(!t)return null;const a=Tc(t.assistant_mode,t.assistantMode);if(!a)return null;const n=Fn(a);return!n||n==="shopping"?null:n}function Lc(e){return e==="beauty_consulting"?"user_message":"findSimilar"}var Ic=class{constructor(){this._mode="shopping",this._uiHints=null}get mode(){return this._mode}set mode(e){this._mode=e}get uiHints(){return this._uiHints}set uiHints(e){this._uiHints=e}get isShopping(){return this._mode==="shopping"}get isBeautyConsulting(){return this._mode==="beauty_consulting"}get isChoicePrompterHidden(){return this._uiHints?.hide_choice_prompter===!0}applyUiHints(e,t,a){const n=i=>this._uiHints?.[i]===!0;e?.setAttachmentControlsVisible(!n("hide_attachment_controls")),n("hide_choice_prompter")&&a?.();const r=typeof this._uiHints?.input_placeholder=="string"?this._uiHints.input_placeholder:void 0;r?e?.setInputPlaceholder(r):e?.setInputPlaceholder(t)}handleRedirect(e){Ge("mode","redirect metadata received",e);const t=Ac(e);return t?(this.switchMode(t),!0):!1}switchMode(e){const t=this._mode;this._mode=e,Ge("mode","assistant mode switched",{from:t,to:e})}updateFromContext(e){const t=e.assistant_mode;if(typeof t=="string"&&t){const a=Pc(t);a?this._mode=a:Ge("mode","ignoring unrecognised assistant_mode from context",t)}else t===null&&(this._mode="shopping");this._uiHints=ze(e.ui_hints)??null}reset(){const e=this._mode!=="shopping";return this._mode="shopping",this._uiHints=null,e}resolveAttachmentActionType(){return Lc(this._mode)}shouldCondenseThinking(){return this._mode!=="shopping"}};function zc(){return{streamIncludedBeautyPhotoStep:!1,pendingPhotoStepSkip:!1}}function Nc(e,t,a,n,r){if(e==="PhotoAnalysisCard"){const i=Nn(t);return i?(r.photoAnalysis=i,r.renderHint="photo_analysis",n.ensureRendered(),n.cancelTypewriter(),n.drawer?.updateBotMessage(r.id,r.content??"","photo_analysis",r.photoAnalysis),!0):(Ge("beauty","PhotoAnalysisCard parse failed, falling through to generic renderer",t),!1)}if(e==="BeautyPhotoStep"){a.streamIncludedBeautyPhotoStep=!0;const i=uc(t);return n.drawer?.setBeautyPhotoStepCard({visible:!0,...i,onSkip:()=>{n.drawer?.setBeautyPhotoStepCard({visible:!1}),n.streamDone?n.sendSkipMessage():a.pendingPhotoStepSkip=!0}}),!0}return!1}function Mc(e){return e.renderHint==="photo_analysis"}function Bc(e,t){e.streamIncludedBeautyPhotoStep||t.drawer?.setBeautyPhotoStepCard({visible:!1}),e.pendingPhotoStepSkip&&(e.pendingPhotoStepSkip=!1,t.sendSkipMessage())}function Rc(e,t){e.pendingPhotoStepSkip&&(e.pendingPhotoStepSkip=!1,t.sendSkipMessage())}function Pa(e){return Number.isFinite(e)?Math.max(0,Math.min(5,e)):0}function Dn(e){return Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function Hn(e){const t=Pa(e),a=Math.floor(t),n=t-a>=.5,r=5-a-(n?1:0),i=document.createElement("span");if(i.className="gengage-star-rating",i.setAttribute("role","img"),i.setAttribute("aria-label",`${t.toFixed(1)} out of 5 stars`),a>0&&i.appendChild(document.createTextNode("★".repeat(a))),n){const o=document.createElement("span");o.className="gengage-star-half",o.textContent="☆";const s=document.createElement("span");s.textContent="★",o.appendChild(s),i.appendChild(o)}return r>0&&i.appendChild(document.createTextNode("☆".repeat(r))),i}function Re(e){e.addEventListener("error",()=>{e.style.display="none"},{once:!0})}var Oc={currencyCode:"TRY",currencySymbol:"TL",currencyPosition:"suffix",thousandsSeparator:".",decimalSeparator:",",alwaysShowDecimals:!1};function se(e,t){const a=Number(e);if(!Number.isFinite(a)||a<0)return e;const n={...Oc,...t},r=Math.abs(a%1)<Number.EPSILON,i=n.alwaysShowDecimals||!r?a.toFixed(2):a.toFixed(0),o=i.indexOf("."),s=o===-1?i:i.slice(0,o),c=o===-1?void 0:i.slice(o+1),l=s.replace(/\B(?=(\d{3})+(?!\d))/g,n.thousandsSeparator);let g;return c!==void 0?g=`${l}${n.decimalSeparator}${c}`:g=l,n.currencySymbol?n.currencyPosition==="prefix"?`${n.currencySymbol}${g}`:`${g} ${n.currencySymbol}`:g}var $c={screen_size:"Screen Size",weight:"Weight",battery_capacity:"Battery Capacity",battery_life:"Battery Life",storage:"Storage",memory:"Memory",ram:"RAM",processor:"Processor",camera:"Camera",resolution:"Resolution",display_type:"Display Type",refresh_rate:"Refresh Rate",color:"Color",material:"Material",dimensions:"Dimensions",warranty:"Warranty",connectivity:"Connectivity",water_resistance:"Water Resistance",operating_system:"Operating System",brand:"Brand",model:"Model",price:"Price",energy_class:"Energy Class",noise_level:"Noise Level",capacity:"Capacity",power:"Power",voltage:"Voltage",width:"Width",height:"Height",depth:"Depth"};function Fc(e,t,a){return t?.[e]??$c[e]??e.replace(/_/g," ").replace(/^./u,n=>Dc(n,a))}function Dc(e,t){try{return e.toLocaleUpperCase(At(t))}catch{return e.toLocaleUpperCase("tr")}}function Un(e){if(typeof e!="string")return!1;const t=Number(e);return Number.isFinite(t)&&t>0}function Hc(e){const t=typeof e=="number"?e:typeof e=="string"?Number(e):NaN;return Number.isFinite(t)&&t>0}function Uc(e){const t=typeof e=="number"?e:Number(e),a=document.createElement("div");a.className="gengage-chat-comparison-recommended-rating",a.innerHTML='<span class="gengage-chat-comparison-recommended-rating-icon" aria-hidden="true"><svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><path d="M12 3.6l2.58 5.23 5.77.84-4.17 4.07.98 5.75L12 16.78l-5.16 2.71.99-5.75L3.66 9.67l5.76-.84L12 3.6z"/></svg></span>';const n=document.createElement("span");return n.className="gengage-chat-comparison-recommended-rating-value",n.textContent=t.toFixed(1),a.appendChild(n),a}function jc(e){const{recommended:t,products:a,attributes:n,highlights:r,specialCases:i,onProductClick:o,i18n:s}=e,c=document.createElement("div");if(c.className="gengage-chat-comparison",c.dataset.gengagePart="comparison-dialog",c.setAttribute("role","dialog"),c.setAttribute("aria-label",s?.comparisonHeading??"Comparison Results"),t){const l=document.createElement("article");l.className="gengage-chat-comparison-recommended gds-card",l.dataset.gengagePart="comparison-recommended-card";const g=document.createElement("div");g.className="gengage-chat-comparison-recommended-label",g.textContent=s?.recommendedChoiceLabel??"Recommended Choice",l.appendChild(g);const d=document.createElement("div");d.className="gengage-chat-comparison-recommended-body",d.classList.add("gds-clickable"),d.tabIndex=0,d.setAttribute("role","button"),d.setAttribute("aria-label",t.name);const p=document.createElement("div");if(p.className="gengage-chat-comparison-recommended-media",t.imageUrl&&Fe(t.imageUrl)){const h=document.createElement("img");h.src=t.imageUrl,h.alt=t.name,h.loading="lazy",h.addEventListener("error",()=>{h.style.display="none"},{once:!0}),p.appendChild(h)}else{const h=document.createElement("div");h.className="gengage-chat-comparison-recommended-placeholder",h.setAttribute("aria-hidden","true"),p.appendChild(h)}d.appendChild(p);const u=document.createElement("div");u.className="gengage-chat-comparison-recommended-info";const f=document.createElement("div");f.className="gengage-chat-comparison-recommended-title",f.textContent=t.name,u.appendChild(f);const b=document.createElement("div");if(b.className="gengage-chat-comparison-recommended-meta",Hc(t.rating)&&b.appendChild(Uc(t.rating)),Un(t.price)){const h=document.createElement("div");h.className="gengage-chat-comparison-recommended-price",h.textContent=se(t.price,e.pricing),b.appendChild(h)}if(b.childElementCount>0&&u.appendChild(b),e.recommendedText){const h=document.createElement("p");h.className="gengage-chat-comparison-recommended-text",h.innerHTML=Ie(e.recommendedText),u.appendChild(h)}d.appendChild(u);const m=()=>{o({sku:t.sku,name:t.name})};if(d.addEventListener("click",m),d.addEventListener("keydown",h=>{h.key!=="Enter"&&h.key!==" "||(h.preventDefault(),m())}),l.appendChild(d),r.length>0){const h=document.createElement("div");h.className="gengage-chat-comparison-highlights",h.dataset.gengagePart="comparison-highlights";const C=document.createElement("div");C.className="gengage-chat-comparison-highlights-label",C.textContent=s?.highlightsLabel??"Key Highlights",h.appendChild(C);const x=document.createElement("ul");for(const v of r){const S=document.createElement("li");S.textContent=v,x.appendChild(S)}h.appendChild(x),l.appendChild(h)}c.appendChild(l)}if(e.keyDifferencesHtml){const l=document.createElement("details");l.className="gengage-chat-comparison-key-differences",l.dataset.gengagePart="comparison-key-differences";const g=document.createElement("summary");g.className="gengage-chat-comparison-key-differences-summary";const d=document.createElement("span");d.className="gengage-chat-comparison-key-differences-summary-label",d.textContent=s?.keyDifferencesLabel??"Key Differences";const p=document.createElement("span");p.className="gengage-chat-comparison-key-differences-summary-meta",p.textContent=s?.viewMoreLabel??"Show More",g.appendChild(d),g.appendChild(p),l.appendChild(g);const u=document.createElement("div");u.className="gengage-chat-comparison-key-differences-content",u.innerHTML=Ie(qc(e.keyDifferencesHtml)),l.appendChild(u),c.appendChild(l)}if(i&&i.length>0){const l=document.createElement("details");l.className="gengage-chat-comparison-special gds-evidence-card gds-evidence-card-warning",l.dataset.gengagePart="comparison-special-cases";const g=document.createElement("summary");g.textContent=s?.specialCasesLabel??"For Special Cases",l.appendChild(g);const d=document.createElement("ul");for(const p of i)Zc(d,p);d.childElementCount>0&&l.appendChild(d),c.appendChild(l)}if(a.length>0&&n.length>0){const l=document.createElement("table");l.className="gengage-chat-comparison-table gds-comparison-table";const g=document.createElement("thead"),d=document.createElement("tr"),p=document.createElement("th");d.appendChild(p);for(const b of a){const m=document.createElement("th");b.sku===t?.sku&&(m.className="gengage-chat-comparison-selected gds-comparison-table-winner-cell");const h=document.createElement("div");h.className="gengage-chat-comparison-table-header-cell gengage-chat-comparison-table-header-cell--clickable gds-clickable",h.tabIndex=0,h.setAttribute("role","button"),h.setAttribute("aria-label",b.name),h.title=b.name;const C=()=>{o({sku:b.sku,name:b.name})};if(h.addEventListener("click",C),h.addEventListener("keydown",v=>{v.key!=="Enter"&&v.key!==" "||(v.preventDefault(),C())}),b.imageUrl&&Fe(b.imageUrl)){const v=document.createElement("img");v.src=b.imageUrl,v.alt=b.name,v.loading="lazy",v.addEventListener("error",()=>{v.style.display="none"},{once:!0}),h.appendChild(v)}else{const v=document.createElement("div");v.className="gengage-chat-comparison-table-header-img-placeholder",v.setAttribute("aria-hidden","true"),h.appendChild(v)}const x=document.createElement("div");if(x.className="gengage-chat-comparison-table-product-name",x.textContent=b.name,h.appendChild(x),Un(b.price)){const v=document.createElement("div");v.className="gengage-chat-comparison-table-price",v.textContent=se(b.price,e.pricing),h.appendChild(v)}m.appendChild(h),d.appendChild(m)}g.appendChild(d),l.appendChild(g);const u=document.createElement("tbody");for(const b of n){const m=document.createElement("tr"),h=document.createElement("td");h.className="gengage-chat-comparison-label",h.textContent=Fc(b.label,s?.criteriaLabels,e.locale),m.appendChild(h);for(let C=0;C<b.values.length;C++){const x=document.createElement("td");a[C]?.sku===t?.sku&&(x.className="gengage-chat-comparison-selected gds-comparison-table-winner-cell");const v=b.values[C]??"";jn(v)?x.innerHTML=Ie(v):x.textContent=v,m.appendChild(x)}u.appendChild(m)}l.appendChild(u);const f=document.createElement("div");f.className="gengage-chat-comparison-table-wrapper",f.dataset.gengagePart="comparison-table-wrapper",f.appendChild(l),c.appendChild(f)}return c.addEventListener("keydown",l=>{if(l.key!=="Tab")return;const g=c.querySelectorAll('button, [href], input, [tabindex]:not([tabindex="-1"])');if(g.length===0)return;const d=g[0],p=g[g.length-1];l.shiftKey&&document.activeElement===d?(l.preventDefault(),p.focus()):!l.shiftKey&&document.activeElement===p&&(l.preventDefault(),d.focus())}),c}function qc(e){if(/<[uo]l[\s>]/i.test(e)||/<li[\s>]/i.test(e))return e;const t=e.split(`
|
|
49
|
-
`).filter(a=>a.trim());return t.length<=1?e:"<ul>"+t.map(a=>`<li>${a.trim()}</li>`).join("")+"</ul>"}function Zc(e,t){const a=Ie(t);if(!a)return;const n=document.createElement("template");n.innerHTML=a;const r=Array.from(n.content.querySelectorAll("li"));if(r.length>0){for(const o of r){const s=document.createElement("li");s.innerHTML=Ie(o.innerHTML),e.appendChild(s)}return}const i=document.createElement("li");jn(t)?i.innerHTML=a:i.textContent=t,e.appendChild(i)}function jn(e){return/<\/?[a-z][\s\S]*>/i.test(e)}function Bt(e,t=18){const a="http://www.w3.org/2000/svg",n=document.createElementNS(a,"svg");n.setAttribute("width",String(t)),n.setAttribute("height",String(t)),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("fill","none"),n.setAttribute("stroke","currentColor"),n.setAttribute("stroke-width","2"),n.setAttribute("stroke-linecap","round"),n.setAttribute("stroke-linejoin","round"),n.setAttribute("aria-hidden","true");for(const r of e){const i=document.createElementNS(a,"path");i.setAttribute("d",r),n.appendChild(i)}return n}var Ta="General",qn=220,Vc=6;function Gc(e){if(typeof e!="string")return[Ta];const t=e.split(/[,;|/]+/).map(a=>a.trim().replace(/\s+/g," ")).filter(a=>a.length>0);return t.length===0?[Ta]:Array.from(new Set(t.map(a=>a.toLocaleLowerCase()))).map(a=>t.find(n=>n.toLocaleLowerCase()===a)??Ta)}function Wc(e){return e==="positive"||e==="negative"||e==="neutral"?e:"neutral"}function Kc(e){if(typeof e!="string")return"";const t=e.trim().replace(/\s+/g," ");return t.length<=qn?t:`${t.slice(0,qn-3).trimEnd()}...`}function Yc(e){return e.positive>e.negative?"positive":e.negative>e.positive?"negative":"neutral"}function Jc(e){return Bt(e==="positive"?["M7 17 17 7","M7 7h10v10"]:e==="negative"?["M7 7 17 17","M17 7v10H7"]:["M5 12h14"],14)}function Xc(e,t="1 customer mentions",a="customers mention"){return e===1?t:`${e} ${a}`}function Qc(e,t){const a=document.createElement("div");a.className="gengage-chat-review-highlights";const n=e.props?.reviews;if(!Array.isArray(n)||n.length===0){const b=document.createElement("div");return b.className="gengage-chat-review-empty",b.textContent=t?.emptyReviewsMessage??"No review summary found.",a.appendChild(b),a}const r=n.filter(b=>b!==null&&typeof b=="object"),i=new Map;for(const b of r){const m=Wc(b.review_class),h=Kc(b.review_text),C=Gc(b.review_tag);for(const x of C){const v=x.toLocaleLowerCase();let S=i.get(v);if(S||(S={key:v,label:x,mentions:0,positive:0,negative:0,neutral:0,snippets:[]},i.set(v,S)),S.mentions+=1,m==="positive"?S.positive+=1:m==="negative"?S.negative+=1:S.neutral+=1,h.length>0&&S.snippets.length<Vc&&!S.snippets.some(E=>E.text===h)){const E={text:h,tone:m};b.review_rating!==void 0&&String(b.review_rating).length>0&&(E.rating=b.review_rating),S.snippets.push(E)}}}const o=Array.from(i.values()).sort((b,m)=>m.mentions!==b.mentions?m.mentions-b.mentions:b.label.localeCompare(m.label));if(o.length===0){const b=document.createElement("div");return b.className="gengage-chat-review-empty",b.textContent=t?.emptyReviewsMessage??"No review summary found.",a.appendChild(b),a}const s=(t?.reviewFilterPositive??"positive").toLowerCase(),c=(t?.reviewFilterNegative??"negative").toLowerCase(),l=document.createElement("div");l.className="gengage-chat-review-subjects-heading",l.textContent=t?.reviewSubjectsHeading??"Select to learn more",a.appendChild(l);let g=o[0]?.key??null;const d=document.createElement("div");d.className="gengage-chat-review-subjects gds-toolbar gds-toolbar-compact";const p=document.createElement("section");p.className="gengage-chat-review-detail gds-evidence-card";const u=()=>{for(;p.firstChild;)p.removeChild(p.firstChild);if(!g)return;const b=o.find(x=>x.key===g);if(!b)return;const m=document.createElement("div");m.className="gengage-chat-review-detail-meta";const h=document.createElement("span");if(h.className="gengage-chat-review-detail-mentions",h.textContent=`${Xc(b.mentions,t?.reviewCustomersMentionSingular,t?.reviewCustomersMentionPlural)} "${b.label}"`,m.appendChild(h),b.positive>0){const x=document.createElement("span");x.className="gengage-chat-review-detail-positive",x.textContent=`${b.positive} ${s}`,m.appendChild(x)}if(b.negative>0){const x=document.createElement("span");x.className="gengage-chat-review-detail-negative",x.textContent=`${b.negative} ${c}`,m.appendChild(x)}p.appendChild(m);const C=document.createElement("div");C.className="gengage-chat-review-snippets";for(const x of b.snippets){const v=document.createElement("article");v.className="gengage-chat-review-snippet",v.dataset.tone=x.tone;const S=document.createElement("div");if(S.className="gengage-chat-review-snippet-text",S.textContent=`"${x.text}"`,v.appendChild(S),x.rating!==void 0&&String(x.rating).length>0){const E=document.createElement("div");E.className="gengage-chat-review-snippet-rating",E.textContent=`★ ${String(x.rating)}`,v.appendChild(E)}C.appendChild(v)}p.appendChild(C)},f=()=>{for(const b of d.querySelectorAll(".gengage-chat-review-subject")){const m=b.dataset.subjectKey===g;b.classList.toggle("gengage-chat-review-subject--active",m),b.classList.toggle("gds-chip-active",m),b.setAttribute("aria-pressed",String(m))}};for(const b of o){const m=Yc(b),h=document.createElement("button");h.type="button",h.className="gengage-chat-review-subject gds-chip",h.dataset.subjectKey=b.key,h.dataset.tone=m;const C=document.createElement("span");C.className="gengage-chat-review-subject-icon",C.appendChild(Jc(m)),h.appendChild(C);const x=document.createElement("span");x.className="gengage-chat-review-subject-label",x.textContent=b.label,h.appendChild(x);const v=document.createElement("span");v.className="gengage-chat-review-subject-count",v.textContent=`(${b.mentions})`,h.appendChild(v),h.addEventListener("click",()=>{g=b.key,f(),u()}),d.appendChild(h)}return a.appendChild(d),f(),u(),a.appendChild(p),a}function el(e){if(!e)return;const t=e.discountReason??e.discount_reason??e.campaignReason??e.campaign_reason;if(typeof t!="string")return;const a=t.trim();return a.length>0?a:void 0}function xt(e,t){if(e.productPriceUi?.showCampaignReason===!0)return el(t)}function Rt(e,t){const a=t?.originalPriceStyle??t?.price_original_style;if(a==="inline"||a==="strikethrough")return a;const n=e.productPriceUi?.originalPriceStyle;return n==="inline"||n==="strikethrough"?n:"strikethrough"}function Gt(e){const t=document.createElement("div");return t.className="gengage-chat-campaign-reason",t.textContent=e,t}function Wt(e,t){for(const n of["campaignReasonLogoUrl","campaign_reason_logo_url","discountBadgeLogoUrl","discount_badge_logo_url"]){const r=t?.[n];if(typeof r=="string"&&r.trim()){const i=r.trim();if(Fe(i))return i}}const a=e.productPriceUi?.campaignBadgeLogoUrl;if(typeof a=="string"&&a.trim()){const n=a.trim();if(Fe(n))return n}}function Kt(e){const t=document.createElement("div");if(t.className="gengage-chat-campaign-price-badge",t.dataset.gengagePart="campaign-price-badge",e.logoUrl){const i=document.createElement("div");i.className="gengage-chat-campaign-price-badge__logo";const o=document.createElement("img");o.alt="",o.loading="lazy",o.src=e.logoUrl,Re(o),i.appendChild(o),t.appendChild(i)}const a=document.createElement("div");a.className="gengage-chat-campaign-price-badge__body";const n=document.createElement("div");n.className="gengage-chat-campaign-price-badge__reason",n.textContent=e.reasonText;const r=document.createElement("span");return r.className="gengage-chat-campaign-price-badge__sale",r.textContent=e.salePriceFormatted,a.appendChild(n),a.appendChild(r),t.appendChild(a),t}function tl(){try{return globalThis.GENGAGE_TOPPICKS_MOBILE_LAYOUT==="uniform"}catch{return!1}}function Zn(e){const t=e.product.sku;if(typeof t=="string"&&t.length>0)return t;const a=e.action?.payload;return a&&typeof a=="object"&&"sku"in a&&typeof a.sku=="string"?a.sku:null}var al={winner:"roleWinner",best_value:"roleBestValue",best_alternative:"roleBestAlternative"};function Vn(e,t){if(!e||!t)return null;const a=al[e];return a?t[a]??e:e}function nl(e){const t=e.rating,a=typeof t=="number"?t:typeof t=="string"?parseFloat(t):NaN;if(Number.isNaN(a)||a<=0)return null;const n=document.createElement("div");n.className="gengage-chat-ai-toppick-rating",n.dataset.gengagePart="ai-top-pick-rating";const r=document.createElement("span");r.className="gengage-chat-ai-toppick-rating-icon",r.setAttribute("aria-hidden","true"),r.innerHTML='<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><path d="M12 3.6l2.58 5.23 5.77.84-4.17 4.07.98 5.75L12 16.78l-5.16 2.71.99-5.75L3.66 9.67l5.76-.84L12 3.6z"/></svg>';const i=document.createElement("span");return i.className="gengage-chat-ai-toppick-rating-value",i.textContent=a.toFixed(1),n.appendChild(r),n.appendChild(i),n}function rl(e,t,a,n,r){const i=document.createElement("div");i.className="gengage-chat-ai-toppick-media",i.dataset.gengagePart="ai-top-pick-media";const o=e.product,s=o.imageUrl;if(s&&Fe(s)){const l=document.createElement("img");l.className="gengage-chat-ai-toppick-img",l.dataset.gengagePart="ai-top-pick-image",Se(l,"src",s),l.loading="lazy",l.alt=t,Re(l),i.appendChild(l)}const c=Zn(e);if(c&&!r?.skipOverlayActions){const l=document.createElement("div");if(l.className="gengage-chat-product-card-img-actions",n.onFavoriteToggle){const u=document.createElement("button");u.className="gengage-chat-favorite-btn",u.type="button",u.dataset.gengageFavoriteSku=c,u.setAttribute("aria-label",n.i18n?.addToFavoritesLabel??"Add to favorites");const f=n.favoritedSkus?.has(c)??!1;f&&u.classList.add("gengage-chat-favorite-btn--active"),u.innerHTML=`<svg width="14" height="14" viewBox="0 0 24 24" fill="${f?"currentColor":"none"}" stroke="currentColor" stroke-width="2"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>`,u.addEventListener("click",b=>{b.stopPropagation(),u.classList.toggle("gengage-chat-favorite-btn--active"),u.querySelector("svg")?.setAttribute("fill",u.classList.contains("gengage-chat-favorite-btn--active")?"currentColor":"none"),n.onFavoriteToggle?.(c,o)}),l.appendChild(u)}const g=n.i18n?.findSimilarLabel??"Find Similar",d=document.createElement("button");d.className="gengage-chat-find-similar-pill",d.type="button",d.setAttribute("aria-label",g),d.dataset.tooltip=g,d.innerHTML='<span class="gengage-chat-find-similar-pill-icon" aria-hidden="true"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"><circle cx="10.5" cy="10.5" r="6.5"/><path d="M16 16l5.5 5.5"/></svg></span>';const p=document.createElement("span");p.className="gengage-chat-find-similar-pill-text",p.textContent=g,d.appendChild(p),d.addEventListener("click",u=>{u.stopPropagation(),n.onAction({title:g,type:"findSimilar",payload:{sku:c}})}),l.appendChild(d),i.appendChild(l)}a.appendChild(i)}function il(e,t,a){const n=e.price,r=e.originalPrice;if(!n)return;const i=xt(a,e),o=Rt(a,e),s=!!(r&&r!==n),c=!!(i&&s),l=Wt(a,e),g=document.createElement("div");if(g.className="gengage-chat-ai-toppick-price",g.dataset.gengagePart="ai-top-pick-price",c){const d=Kt({reasonText:i,salePriceFormatted:se(n,a.pricing),...l!==void 0?{logoUrl:l}:{}});if(s&&o==="inline"){g.classList.add("gengage-chat-ai-toppick-price--inline"),g.appendChild(d);const p=document.createElement("span");p.className="gengage-chat-ai-toppick-price-sep",p.setAttribute("aria-hidden","true");const u=document.createElement("span");u.className="gengage-chat-ai-toppick-original-price",u.textContent=se(r,a.pricing),g.appendChild(p),g.appendChild(u)}else{const p=document.createElement("span");p.className="gengage-chat-ai-toppick-original-price",p.textContent=se(r,a.pricing),g.appendChild(p),g.appendChild(document.createTextNode(" ")),g.appendChild(d)}t.appendChild(g);return}if(s&&o==="inline"){g.classList.add("gengage-chat-ai-toppick-price--inline");const d=document.createElement("span");d.className="gengage-chat-ai-toppick-price-current",d.textContent=se(n,a.pricing);const p=document.createElement("span");p.className="gengage-chat-ai-toppick-price-sep",p.setAttribute("aria-hidden","true");const u=document.createElement("span");u.className="gengage-chat-ai-toppick-original-price",u.textContent=se(r,a.pricing),g.appendChild(d),g.appendChild(p),g.appendChild(u)}else if(s){const d=document.createElement("span");d.className="gengage-chat-ai-toppick-original-price",d.textContent=se(r,a.pricing),g.appendChild(d),g.appendChild(document.createTextNode(" "));const p=document.createElement("span");p.className="gengage-chat-ai-toppick-price-current",p.textContent=se(n,a.pricing),g.appendChild(p)}else{const d=document.createElement("span");d.className="gengage-chat-ai-toppick-price-current",d.textContent=se(n,a.pricing),g.appendChild(d)}if(i){const d=document.createElement("div");d.className="gengage-chat-ai-toppick-price-stack",d.appendChild(Gt(i)),d.appendChild(g),t.appendChild(d)}else t.appendChild(g)}function ol(e,t,a){const n=typeof e.reason=="string"?e.reason.trim():"",r=a.hideUserReviews!==!0&&typeof e.reviewHighlight=="string"?e.reviewHighlight.trim():"";if(!(!n&&!r)){if(n){const i=document.createElement("p");i.className="gengage-chat-ai-toppick-reason",i.dataset.gengagePart="ai-top-pick-reason",i.textContent=n,t.appendChild(i)}if(r){const i=document.createElement("div");i.className="gengage-chat-ai-toppick-review",i.dataset.gengagePart="ai-top-pick-review",i.textContent=r,t.appendChild(i)}}}function Gn(e,t,a,n){const r=document.createElement("div");r.className=a?"gengage-chat-ai-toppick-card gengage-chat-ai-toppick-card--winner gds-card":"gengage-chat-ai-toppick-card gengage-chat-ai-toppick-card--compact gds-card";const i=n?.uniformMobileLayout===!0;!a&&i&&r.classList.add("gengage-chat-ai-toppick-card--mobile-uniform"),r.dataset.gengagePart=a?"ai-top-pick-card-winner":"ai-top-pick-card";const o=e.product,s=Zn(e),c=o.url??"",l=o.cartCode,g=o.inStock,d=!!(s&&l&&g!==!1),p=e.action;s&&t.onProductClick?(r.classList.add("gds-clickable"),r.addEventListener("click",P=>{if(P.target.closest(".gengage-chat-ai-toppick-cta")||P.target.closest(".gengage-chat-favorite-btn")||P.target.closest(".gengage-chat-find-similar-pill"))return;const A=o.name;t.onProductClick?.({sku:s,url:c,...A?{name:A}:{}})})):p&&(r.classList.add("gds-clickable"),r.addEventListener("click",P=>{P.target.closest(".gengage-chat-ai-toppick-cta")||P.target.closest(".gengage-chat-favorite-btn")||P.target.closest(".gengage-chat-find-similar-pill")||t.onAction(p)}));const u=o.name||"Product image",f=!a&&t.isMobile===!0&&!i,b=a?Vn(e.role,t.i18n)??t.i18n?.roleWinner??"TOP MATCH":Vn(e.role,t.i18n);if(b&&!f){const P=document.createElement("span");P.className="gengage-chat-ai-toppick-badge gds-badge",P.dataset.gengagePart="ai-top-pick-role-badge",P.textContent=b,r.appendChild(P)}const m=document.createElement("div");m.className="gengage-chat-ai-toppick-top-row",m.dataset.gengagePart="ai-top-pick-top-row",rl(e,u,m,t,{skipOverlayActions:f});const h=document.createElement("div");if(h.className="gengage-chat-ai-toppick-body",h.dataset.gengagePart="ai-top-pick-body",b&&f){const P=document.createElement("div");P.className="gengage-chat-ai-toppick-role-line",P.dataset.gengagePart="ai-top-pick-role-line",P.textContent=b,h.appendChild(P)}const C=o.name;if(C){const P=document.createElement("div");P.className="gengage-chat-ai-toppick-name",P.dataset.gengagePart="ai-top-pick-name",P.textContent=C,h.appendChild(P)}const x=nl(o);x&&h.appendChild(x),il(o,h,t),e.labels&&e.labels.length>0&&h.appendChild(cl(e.labels)),m.appendChild(h),r.appendChild(m);const v=document.createElement("div");if(v.className="gengage-chat-ai-toppick-detail",v.dataset.gengagePart="ai-top-pick-detail",a)ol(e,v,t);else{const P=typeof e.reason=="string"?e.reason.trim():"";if(P){const A=document.createElement("p");A.className="gengage-chat-ai-toppick-snippet",A.dataset.gengagePart="ai-top-pick-snippet",A.textContent=P,v.appendChild(A)}}v.childNodes.length>0&&r.appendChild(v);const S=!!(s&&t.topPicksLoadingSku===s),E=(d||p)&&!f;if(S||d||p){const P=document.createElement("div");if(P.className="gengage-chat-ai-toppick-spinner",P.dataset.gengagePart="ai-top-pick-spinner",P.style.display=S?"":"none",r.appendChild(P),E){const A=document.createElement("button");A.className="gengage-chat-ai-toppick-cta gds-btn gds-btn-primary",A.dataset.gengagePart="ai-top-pick-cta",A.type="button",A.textContent=d?t.i18n?.addToCartButton??"Add to Cart":t.i18n?.viewDetails??"View Details",A.addEventListener("click",M=>{if(M.stopPropagation(),d){t.onAction({title:t.i18n?.addToCartButton??"Add to Cart",type:"addToCart",payload:{sku:s,cartCode:l,quantity:1}});return}if(p){if(p.type==="findSimilar"&&s&&t.onProductClick){const j=o.name;t.onProductClick({sku:s,url:c,...j?{name:j}:{}});return}t.onAction(p)}}),r.appendChild(A)}}return r}function sl(e,t){const a=document.createElement("div");a.className="gengage-chat-ai-top-picks",a.dataset.gengagePart="ai-top-picks";const n=e.props?.suggestions??[];if(n.length===0)return a;const r=document.createElement("div");r.className="gengage-chat-ai-top-picks-scroll",r.dataset.gengagePart="ai-top-picks-scroll";const i=t.isMobile===!0&&tl(),o=n[0];if(r.appendChild(Gn(o,t,!0,{uniformMobileLayout:i})),n.length>1){const s=document.createElement("div");s.className="gengage-chat-ai-top-picks-rest",i&&s.classList.add("gengage-chat-ai-top-picks-rest--uniform-mobile"),s.dataset.gengagePart="ai-top-picks-rest";for(let c=1;c<n.length;c++){const l=n[c],g=l.role==="winner";s.appendChild(Gn(l,t,g,{uniformMobileLayout:i}))}r.appendChild(s)}return a.appendChild(r),a}function cl(e){const t=document.createElement("div");t.className="gengage-chat-ai-toppick-labels",t.dataset.gengagePart="ai-top-pick-labels";for(const a of e){const n=document.createElement("span");n.className="gengage-chat-ai-toppick-label gds-chip",n.dataset.gengagePart="ai-top-pick-label",n.dataset.sentiment=a.sentiment??"neutral",n.textContent=a.label,t.appendChild(n)}return t}function ll(e,t){const a=document.createElement("div");a.className="gengage-chat-grounding-review gds-evidence-card",a.dataset.gengagePart="grounding-review-card";const n=e.props??{},r=n.title,i=n.reviewCount,o=n.action,s=t.i18n?.groundingReviewCta??"Read Reviews",c=document.createElement("span");c.className="gengage-chat-grounding-review-icon",c.appendChild(Bt(["M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z","M8 9h8","M8 13h6"])),a.appendChild(c);const l=document.createElement("div");l.className="gengage-chat-grounding-review-body",l.dataset.gengagePart="grounding-review-body";const g=document.createElement("div");if(g.className="gengage-chat-grounding-review-title",g.dataset.gengagePart="grounding-review-title",g.textContent=r??t.i18n?.customerReviewsTitle??"Customer Reviews",l.appendChild(g),i){const f=document.createElement("div");f.className="gengage-chat-grounding-review-subtitle",f.dataset.gengagePart="grounding-review-subtitle",f.textContent=(t.i18n?.groundingReviewSubtitle??"{count} yorum mevcut").replace("{count}",i),l.appendChild(f)}a.appendChild(l);const d=document.createElement("span");d.className="gengage-chat-grounding-review-cta",d.dataset.gengagePart="grounding-review-cta";const p=document.createElement("span");p.textContent=s,d.appendChild(p);const u=document.createElement("span");return u.className="gengage-chat-grounding-review-cta-icon",u.appendChild(Bt(["M5 12h14","M15 8l4 4-4 4"],14)),d.appendChild(u),a.appendChild(d),o&&(a.classList.add("gds-clickable"),a.setAttribute("role","button"),a.setAttribute("tabindex","0"),a.addEventListener("click",()=>t.onAction(o)),a.addEventListener("keydown",f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),t.onAction(o))})),a}function gl(e){const t=e.action.type;if(t!=="findSimilar")return e.action;const a=e.action.payload&&typeof e.action.payload=="object"?e.action.payload:null,n=typeof a?.input=="string"&&a.input.trim()||typeof a?.text=="string"&&a.text.trim()||e.name.trim();if(!n)return e.action;const r={...a??{},text:n,is_suggested_text:1};return typeof a?.input=="string"&&a.input.trim()?r.input=a.input:delete r.input,{title:e.action.title,type:t,payload:ft(r)}}function dl(e,t){const a=document.createElement("div");a.className="gengage-chat-grouping-cards",a.dataset.gengagePart="ai-grouping-cards";const n=e.props?.entries??[];if(n.length===0)return a;const r=e.props?.sectionTitle,i=typeof r=="string"&&r.trim().length>0?r.trim():t.i18n?.aiBrowseCategoriesTitle;if(i){const s=document.createElement("h3");s.className="gengage-chat-grouping-section-title",s.textContent=i,a.appendChild(s)}const o=document.createElement("div");o.className="gengage-chat-grouping-cards-scroll",o.dataset.gengagePart="ai-grouping-cards-scroll";for(const s of n){const c=document.createElement("div");if(c.className="gengage-chat-grouping-card gds-card",c.dataset.gengagePart="ai-grouping-card",c.classList.add("gds-clickable"),c.addEventListener("click",()=>t.onAction(gl(s))),s.image&&Fe(s.image)){const p=document.createElement("img");p.className="gengage-chat-grouping-card-img",p.dataset.gengagePart="ai-grouping-card-image",p.draggable=!1,p.src=s.image,p.alt=s.name,p.width=64,p.height=64,c.appendChild(p)}const l=document.createElement("div");l.className="gengage-chat-grouping-card-body",l.dataset.gengagePart="ai-grouping-card-body";const g=document.createElement("span");if(g.className="gengage-chat-grouping-card-name",g.dataset.gengagePart="ai-grouping-card-name",g.textContent=s.name,l.appendChild(g),s.labels&&s.labels.length>0){const p=document.createElement("div");p.className="gengage-chat-grouping-card-labels",p.dataset.gengagePart="ai-grouping-card-labels";for(const u of s.labels.slice(0,2)){const f=document.createElement("span");f.className="gengage-chat-grouping-card-label gds-chip",f.textContent=u,p.appendChild(f)}l.appendChild(p)}c.appendChild(l);const d=document.createElement("span");d.className="gengage-chat-grouping-card-arrow",d.textContent="↳",c.insertBefore(d,c.firstChild),o.appendChild(c)}return a.appendChild(o),a}function pl(e,t){const a=document.createElement("div");a.className="gengage-chat-suggested-search-cards",a.dataset.gengagePart="ai-suggested-search-cards";const n=e.props?.entries??[];if(n.length===0)return a;for(const r of n){const i=document.createElement("div");if(i.className="gengage-chat-suggested-search-card gds-card",i.dataset.gengagePart="ai-suggested-search-card",i.classList.add("gds-clickable"),i.addEventListener("click",()=>t.onAction(r.action)),r.image&&Fe(r.image)){const c=document.createElement("img");c.className="gengage-chat-suggested-search-card-img",c.dataset.gengagePart="ai-suggested-search-card-image",c.src=r.image,c.alt=r.shortName,c.width=64,c.height=64,i.appendChild(c)}const o=document.createElement("div");o.className="gengage-chat-suggested-search-card-body",o.dataset.gengagePart="ai-suggested-search-card-body";const s=document.createElement("div");s.className="gengage-chat-suggested-search-card-name",s.dataset.gengagePart="ai-suggested-search-card-name",s.textContent=r.shortName,o.appendChild(s),i.appendChild(o),a.appendChild(i)}return a}function hl(e,t){const a=document.createElement("div");a.className="gengage-chat-inline-question-buttons",a.dataset.gengagePart="inline-question-buttons";const n=e.props?.buttons??[];for(const r of n){if(typeof r?.label!="string"||!r.label.trim())continue;const i=document.createElement("button");i.className="gengage-chat-inline-question-btn gds-chip",i.dataset.gengagePart="inline-question-button",i.type="button";const o=document.createElement("span");o.className="gengage-chat-inline-question-icon",o.setAttribute("aria-hidden","true"),o.textContent="✦";const s=document.createElement("span");s.className="gengage-chat-inline-question-label",s.textContent=r.label,i.append(o,s),i.addEventListener("click",()=>t.onAction(r.action)),a.appendChild(i)}return a}function Wn(e,t){const a=e.length>=2,n=t.i18n?.compareSelected??"Compare",r=t.comparisonSelectionWarning,i=document.createElement("div");i.className="gengage-chat-comparison-floating-btn",i.dataset.gengagePart="comparison-dock";const o=document.createElement("div");o.className="gengage-chat-comparison-floating-summary";const s=document.createElement("span");s.className="gengage-chat-comparison-floating-count",s.textContent=String(e.length),o.appendChild(s);const c=document.createElement("div");c.className="gengage-chat-comparison-floating-copy";const l=document.createElement("div");if(l.className="gengage-chat-comparison-floating-title",l.textContent=a?`${n} (${e.length})`:t.i18n?.compareMinHint??"Select at least 2 products",c.appendChild(l),r){const d=document.createElement("div");d.className="gengage-chat-comparison-floating-warning",d.setAttribute("role","status"),d.setAttribute("aria-live","polite"),d.textContent=r,c.appendChild(d)}o.appendChild(c),i.appendChild(o);const g=document.createElement("button");if(g.className="gengage-chat-comparison-floating-action gds-btn gds-btn-primary",g.type="button",g.textContent=n,g.disabled=!a,a||g.classList.add("gengage-chat-comparison-floating-action--disabled"),g.addEventListener("click",()=>{a&&t.onAction({title:n,type:"getComparisonTable",payload:{sku_list:[...e],gengage_analytics_source:"floating_compare_dock"}})}),i.appendChild(g),t.onToggleComparisonSku){const d=document.createElement("button");d.className="gengage-chat-comparison-floating-close gds-btn gds-btn-ghost gds-icon-btn",d.dataset.gengagePart="comparison-dock-close",d.type="button",d.setAttribute("aria-label",t.i18n?.closeAriaLabel??"Close"),d.innerHTML='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" aria-hidden="true"><path d="M18 6L6 18"/><path d="M6 6l12 12"/></svg>',d.addEventListener("click",p=>{p.preventDefault(),p.stopPropagation(),t.onToggleComparisonSku?.("")}),i.appendChild(d)}return i}var ul=4,ml=0;function fl(e){const t=[],a=new Set,n=(r,i)=>{if(typeof r!="string")return;const o=r.trim();if(!o)return;const s=o.toLowerCase();a.has(s)||(a.add(s),t.push({text:o,accent:i}))};n(e.highlight,!0);for(const r of e.labels??[])n(r,!1);return t.slice(0,ul)}function bl(e){const t=fl(e),a=typeof e.description=="string"?e.description.trim():"";if(!a&&t.length===0)return null;const n=document.createElement("div");if(n.className="gengage-chat-categories-group-summary",n.dataset.gengagePart="categories-group-summary",n.appendChild(vl(e)),t.length>0&&n.appendChild(yl(t)),a){const r=document.createElement("p");r.className="gengage-chat-categories-group-reason",r.dataset.gengagePart="categories-group-reason",r.textContent=a,n.appendChild(r)}return n}function vl(e){const t=document.createElement("div");if(t.className="gengage-chat-categories-group-selection",t.dataset.gengagePart="categories-group-selection",e.image&&Fe(e.image)){const n=document.createElement("img");n.className="gengage-chat-categories-group-selection-image",n.draggable=!1,n.src=e.image,n.alt=e.groupName,n.loading="lazy",Re(n),t.appendChild(n)}const a=document.createElement("div");return a.className="gengage-chat-categories-group-selection-title",a.textContent=e.groupName,t.appendChild(a),t}function yl(e){const t=document.createElement("div");t.className="gengage-chat-categories-group-chips",t.dataset.gengagePart="categories-group-chips";for(const a of e){const n=document.createElement("span");n.className=a.accent?"gengage-chat-categories-group-chip gengage-chat-categories-group-chip--accent gds-chip gds-chip-active":"gengage-chat-categories-group-chip gds-chip",n.textContent=a.text,t.appendChild(n)}return t}function xl(e,t){const a=e.props?.groups??[],n=e.props?.filterTags??[],r=`gengage-cat-${ml++}`,i=document.createElement("div");if(i.className="gengage-chat-categories",i.dataset.gengagePart="categories-container",a.length===0)return i;const o=document.createElement("div");o.className="gengage-chat-categories-tabs gds-toolbar",o.dataset.gengagePart="categories-tab-bar",o.setAttribute("role","tablist");const s=[],c=[],l=g=>{for(let d=0;d<s.length;d++){const p=d===g;s[d].classList.toggle("gengage-chat-categories-tab--active",p),s[d].classList.toggle("is-active",p),s[d].setAttribute("aria-selected",String(p)),s[d].tabIndex=p?0:-1,c[d].style.display=p?"":"none"}};for(let g=0;g<a.length;g++){const d=a[g],p=`${r}-tab-${g}`,u=`${r}-panel-${g}`,f=document.createElement("button");if(f.className="gengage-chat-categories-tab gds-tab",f.type="button",f.dataset.gengagePart="categories-tab",f.id=p,f.setAttribute("role","tab"),f.setAttribute("aria-controls",u),f.setAttribute("aria-selected",String(g===0)),f.tabIndex=g===0?0:-1,g===0&&f.classList.add("gengage-chat-categories-tab--active","is-active"),d.image&&Fe(d.image)){const x=document.createElement("img");x.className="gengage-chat-categories-tab-image",x.draggable=!1,x.src=d.image,x.alt=d.groupName,x.loading="lazy",Re(x),f.appendChild(x)}const b=document.createElement("span");b.className="gengage-chat-categories-tab-text",b.textContent=d.groupName,f.appendChild(b),f.addEventListener("click",()=>l(g)),f.addEventListener("keydown",x=>{let v=-1;x.key==="ArrowRight"||x.key==="ArrowDown"?v=(g+1)%a.length:x.key==="ArrowLeft"||x.key==="ArrowUp"?v=(g-1+a.length)%a.length:x.key==="Home"?v=0:x.key==="End"&&(v=a.length-1),v>=0&&(x.preventDefault(),l(v),s[v].focus())}),s.push(f),o.appendChild(f);const m=document.createElement("div");m.className="gengage-chat-categories-panel",m.dataset.gengagePart="categories-panel",m.id=u,m.setAttribute("role","tabpanel"),m.setAttribute("aria-labelledby",p),g!==0&&(m.style.display="none");const h=bl(d);h&&m.appendChild(h);const C=document.createElement("div");C.className="gengage-chat-categories-grid",C.dataset.gengagePart="categories-grid";for(const x of d.products){const v=_l(x,t);C.appendChild(v)}m.appendChild(C),c.push(m)}i.appendChild(o);for(const g of c)i.appendChild(g);if(n.length>0){const g=document.createElement("div");g.className="gengage-chat-categories-filter-tags gds-toolbar",g.dataset.gengagePart="categories-filter-tags";for(const d of n){const p=document.createElement("button");p.className="gengage-chat-categories-filter-tag gds-chip",p.type="button",p.dataset.gengagePart="categories-filter-tag",p.textContent=d.title,d.action&&p.addEventListener("click",()=>{t.onAction(d.action)}),g.appendChild(p)}i.appendChild(g)}return i}function _l(e,t){const a=document.createElement("div");if(a.className="gengage-chat-product-card gds-card gds-product-card gds-card-interactive",a.dataset.gengagePart="categories-product-card",e.imageUrl&&Fe(e.imageUrl)){const i=document.createElement("img");i.className="gengage-chat-product-card-img",i.draggable=!1,i.src=e.imageUrl,i.alt=e.name,i.loading="lazy",Re(i),a.appendChild(i)}const n=document.createElement("div");n.className="gengage-chat-product-card-body";const r=document.createElement("div");if(r.className="gengage-chat-product-card-name",r.textContent=e.name,n.appendChild(r),e.price){const i=document.createElement("div");i.className="gengage-chat-product-card-price",i.textContent=se(e.price,t.pricing),n.appendChild(i)}return a.appendChild(n),(t.onProductSelect||t.onAction)&&(a.classList.add("gds-clickable"),a.addEventListener("click",()=>{if(e.sku){t.onAction({title:e.name,type:"launchSingleProduct",payload:{sku:e.sku}});return}t.onProductSelect?.(e)})),a}var wl="frontend_restore_panel_message";function at(e){return typeof e=="string"?e:""}function kl(e){return Array.isArray(e)?e.map(t=>{if(!t||typeof t!="object")return null;const a=t;return{imageUrl:at(a.imageUrl)||void 0,name:at(a.name)||void 0}}).filter(t=>t!==null):[]}function Sl(e,t){const a=e.props??{},n=at(a.eyebrow),r=at(a.title),i=a.showTitle!==!1,o=at(a.ctaLabel)||t.i18n?.showPanelAriaLabel||"Show Results",s=at(a.panelMessageId),c=at(a.highlightMessageId),l=at(a.threadId),g=kl(a.products).slice(0,3),d=document.createElement("button");d.type="button",d.className="gengage-chat-panel-restore-card gds-card",!n&&!i&&d.classList.add("gengage-chat-panel-restore-card--minimal"),d.dataset.gengagePart="panel-restore-card";const p=r||n||o;d.setAttribute("aria-label",r?`${p} - ${o}`:p);const u={title:r,type:wl,payload:{panelMessageId:s,highlightMessageId:c,threadId:l}};if(d.addEventListener("click",()=>t.onAction(u)),n){const b=document.createElement("div");b.className="gengage-chat-panel-restore-card__eyebrow",b.textContent=n,d.appendChild(b)}if(g.length>0){const b=document.createElement("div");b.className="gengage-chat-panel-restore-card__previews";for(const m of g){const h=document.createElement("div");h.className="gengage-chat-panel-restore-card__thumb";const C=m.imageUrl;if(C&&ve(C)){const x=document.createElement("img");x.loading="lazy",x.alt=m.name||r,Se(x,"src",C),Re(x),h.appendChild(x)}b.appendChild(h)}d.appendChild(b)}if(i&&r){const b=document.createElement("div");b.className="gengage-chat-panel-restore-card__title",b.textContent=r,b.title=r,d.appendChild(b)}const f=document.createElement("div");return f.className="gengage-chat-panel-restore-card__cta",f.textContent=o,d.appendChild(f),d}function Cl(e,t){const a=e.props?.product??e.props,n=document.createElement("div");if(n.className="gengage-chat-product-summary gds-card",n.dataset.gengagePart="product-summary-card",!a)return n;n.classList.add("gds-clickable"),n.addEventListener("click",h=>{h.target.closest("a")||t.onProductSelect?.(a)});const r=a.imageUrl;if(r&&ve(r)){const h=document.createElement("div");h.className="gengage-chat-product-summary__image",h.dataset.gengagePart="product-summary-image";const C=document.createElement("img");C.loading="lazy",Se(C,"src",r),C.alt=a.name||"Product image",Re(C),h.appendChild(C),n.appendChild(h)}const i=document.createElement("div");i.className="gengage-chat-product-summary__content",i.dataset.gengagePart="product-summary-content";const o=a.brand,s=a.name;if(s){const h=document.createElement("div");h.className="gengage-chat-product-summary__name",h.dataset.gengagePart="product-summary-name";const C=o&&!s.toLowerCase().startsWith(o.toLowerCase())?`${o} ${s}`:s;h.textContent=C,h.title=C,i.appendChild(h)}const c=a.rating,l=a.reviewCount;if(t.hideUserReviews!==!0&&typeof c=="number"&&Number.isFinite(c)&&c>0){const h=document.createElement("div");if(h.className="gengage-chat-product-summary__rating",h.dataset.gengagePart="product-summary-rating",h.appendChild(Hn(c)),typeof l=="number"&&Number.isFinite(l)){const C=document.createElement("span");C.className="gengage-chat-product-summary__review-count",C.textContent=` (${l})`,h.appendChild(C)}i.appendChild(h)}const g=a.price,d=a.originalPrice;if(g){const h=xt(t,a),C=Rt(t,a),x=!!(d&&d!==g),v=document.createElement("div");v.className="gengage-chat-product-summary__price",v.dataset.gengagePart="product-summary-price";const S=!!(h&&x),E=Wt(t,a);if(S){const P=Kt({reasonText:h,salePriceFormatted:se(g,t.pricing),...E!==void 0?{logoUrl:E}:{}});if(x&&C==="inline"){v.classList.add("gengage-chat-product-summary__price--inline"),v.appendChild(P);const A=document.createElement("span");A.className="gengage-chat-product-summary__price-sep",A.setAttribute("aria-hidden","true");const M=document.createElement("span");M.className="gengage-chat-product-summary__price-original",M.textContent=se(d,t.pricing),v.appendChild(A),v.appendChild(M)}else{const A=document.createElement("span");A.className="gengage-chat-product-summary__price-original",A.textContent=se(d,t.pricing),v.appendChild(A),v.appendChild(document.createTextNode(" ")),v.appendChild(P)}i.appendChild(v)}else{if(x&&C==="inline"){v.classList.add("gengage-chat-product-summary__price--inline");const P=document.createElement("span");P.className="gengage-chat-product-summary__price-current",P.textContent=se(g,t.pricing);const A=document.createElement("span");A.className="gengage-chat-product-summary__price-sep",A.setAttribute("aria-hidden","true");const M=document.createElement("span");M.className="gengage-chat-product-summary__price-original",M.textContent=se(d,t.pricing),v.appendChild(P),v.appendChild(A),v.appendChild(M)}else if(x){const P=document.createElement("span");P.className="gengage-chat-product-summary__price-original",P.textContent=se(d,t.pricing),v.appendChild(P),v.appendChild(document.createTextNode(" "));const A=document.createElement("span");A.className="gengage-chat-product-summary__price-current",A.textContent=se(g,t.pricing),v.appendChild(A)}else{const P=document.createElement("span");P.className="gengage-chat-product-summary__price-current",P.textContent=se(g,t.pricing),v.appendChild(P)}if(h){const P=document.createElement("div");P.className="gengage-chat-product-summary__price-stack",P.appendChild(Gt(h)),P.appendChild(v),i.appendChild(P)}else i.appendChild(v)}}n.appendChild(i);const p=a.url,u=a.sku,f=a.cartCode??a.cart_code,b=typeof f=="string"&&f.trim()?f.trim():void 0,m=a.inStock;if(u&&b&&m!==!1){const h=document.createElement("button");h.type="button",h.className="gengage-chat-product-summary__cta gds-chip gds-chip-active",h.dataset.gengagePart="product-summary-cta",h.textContent=t.i18n?.addToCartButton??"Add to Cart",h.addEventListener("click",C=>{C.stopPropagation(),t.onAction({title:t.i18n?.addToCartButton??"Add to Cart",type:"addToCart",payload:{sku:u,cartCode:b,quantity:1}})}),n.appendChild(h)}else if(p&&ve(p)){const h=document.createElement("a");h.className="gengage-chat-product-summary__cta gds-chip gds-chip-active",h.dataset.gengagePart="product-summary-cta",Se(h,"href",p),Se(h,"target","_blank"),Se(h,"rel","noopener noreferrer"),h.textContent=t.i18n?.productCtaLabel??"View",n.appendChild(h)}return n}var El={PhotoAnalysisCard:({element:e,context:t})=>vc(e,t),BeautyPhotoStep:({element:e,context:t})=>zn(e,t)};function Yt(){return window.innerWidth<768}var Kn={ActionButtons:({element:e,context:t})=>Pl(e,t),ActionButton:({element:e,context:t})=>Tl(e,t),InlineQuestionButtons:({element:e,context:t})=>hl(e,t),ProductCard:({element:e,context:t})=>La(e,t),ProductDetailsPanel:({element:e,context:t})=>Kl(e,t),ProductGrid:({element:e,spec:t,renderElement:a,context:n})=>ng(e,t,a,n),ReviewHighlights:({element:e,context:t})=>t.hideUserReviews===!0?null:Qc(e,{emptyReviewsMessage:t.i18n?.emptyReviewsMessage,reviewFilterPositive:t.i18n?.reviewFilterPositive,reviewFilterNegative:t.i18n?.reviewFilterNegative,reviewCustomersMentionSingular:t.i18n?.reviewCustomersMentionSingular,reviewCustomersMentionPlural:t.i18n?.reviewCustomersMentionPlural,reviewSubjectsHeading:t.i18n?.reviewSubjectsHeading}),ComparisonTable:({element:e,context:t})=>og(e,t),AITopPicks:({element:e,context:t})=>sl(e,t),GroundingReviewCard:({element:e,context:t})=>t.hideUserReviews===!0?null:ll(e,t),AIGroupingCards:({element:e,context:t})=>dl(e,t),AISuggestedSearchCards:({element:e,context:t})=>pl(e,t),CategoriesContainer:({element:e,context:t})=>xl(e,t),PanelRestoreCard:({element:e,context:t})=>Sl(e,t),ProductSummaryCard:({element:e,context:t})=>Cl(e,t),Divider:({element:e})=>sg(e),...El},Aa=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const a=document.createElement("div");for(const n of e.children){const r=t(n);r&&a.appendChild(r)}return a};function Yn(){return{...Kn}}function Jn(e,t,a=Kn,n=Aa){return Bi({spec:e,context:t,registry:a,containerClassName:"gengage-chat-uispec",unknownRenderer:n})}function Pl(e,t){const a=document.createElement("div");a.className="gengage-chat-action-buttons";const n=e.props?.buttons;if(n)for(const r of n){const i=document.createElement("button");i.className="gengage-chat-action-btn",i.textContent=r.label,i.addEventListener("click",()=>t.onAction(r.action)),a.appendChild(i)}return a}function Tl(e,t){const a=document.createElement("button");a.className="gengage-chat-action-btn";const n=e.props?.label;typeof n=="string"&&(a.textContent=n);const r=e.props?.action;return r&&a.addEventListener("click",()=>t.onAction(r)),a}function Xn(e,t,a,n,r){e.replaceChildren();const i=Rt(t,a),o=!!(r&&n&&r!==n),s=xt(t,a),c=!!(s&&o),l=Wt(t,a);if(!n||parseFloat(n)<=0)return;if(c){const d=Kt({reasonText:s,salePriceFormatted:se(n,t.pricing),...l!==void 0?{logoUrl:l}:{}});if(o&&i==="inline"){e.classList.add("gengage-chat-product-card-price-block--inline");const p=document.createElement("div");p.className="gengage-chat-product-card-price-row",p.appendChild(d);const u=document.createElement("span");u.className="gengage-chat-product-card-price-sep",u.setAttribute("aria-hidden","true");const f=document.createElement("span");f.className="gengage-chat-product-card-original-price",f.textContent=se(r,t.pricing),p.appendChild(u),p.appendChild(f),e.appendChild(p);return}if(e.classList.remove("gengage-chat-product-card-price-block--inline"),e.appendChild(d),o){e.appendChild(document.createTextNode(" "));const p=document.createElement("span");p.className="gengage-chat-product-card-original-price",p.textContent=se(r,t.pricing),e.appendChild(p)}return}if(o&&i==="inline"){e.classList.add("gengage-chat-product-card-price-block--inline");const d=document.createElement("div");d.className="gengage-chat-product-card-price-row";const p=document.createElement("span");p.className="gengage-chat-product-card-current-price",p.textContent=se(n,t.pricing);const u=document.createElement("span");u.className="gengage-chat-product-card-price-sep",u.setAttribute("aria-hidden","true");const f=document.createElement("span");f.className="gengage-chat-product-card-original-price",f.textContent=se(r,t.pricing),d.appendChild(p),d.appendChild(u),d.appendChild(f),e.appendChild(d);return}e.classList.remove("gengage-chat-product-card-price-block--inline");const g=document.createElement("span");if(g.className="gengage-chat-product-card-current-price",g.textContent=se(n,t.pricing),e.appendChild(g),o){e.appendChild(document.createTextNode(" "));const d=document.createElement("span");d.className="gengage-chat-product-card-original-price",d.textContent=se(r,t.pricing),e.appendChild(d)}}function Qn(e,t,a,n,r,i,o){e.classList.remove("gengage-chat-product-details-price--inline"),e.replaceChildren(),e.className="gengage-chat-product-details-price";const s=xt(t,a),c=!!(s&&o),l=Wt(t,a);if(c){const d=Kt({reasonText:s,salePriceFormatted:se(n,t.pricing),...l!==void 0?{logoUrl:l}:{}});if(o&&i==="inline"){e.classList.add("gengage-chat-product-details-price--inline"),e.appendChild(d);const p=document.createElement("span");p.className="gengage-chat-product-details-price-sep",p.setAttribute("aria-hidden","true");const u=document.createElement("span");u.className="gengage-chat-product-details-original-price",u.textContent=se(r,t.pricing),e.appendChild(p),e.appendChild(u)}else{if(o){const p=document.createElement("span");p.className="gengage-chat-product-details-original-price",p.textContent=se(r,t.pricing),e.appendChild(p),e.appendChild(document.createTextNode(" "))}e.appendChild(d)}}else if(o&&i==="inline"){e.classList.add("gengage-chat-product-details-price--inline");const d=document.createElement("span");d.className="gengage-chat-product-details-current-price",d.textContent=se(n,t.pricing);const p=document.createElement("span");p.className="gengage-chat-product-details-price-sep",p.setAttribute("aria-hidden","true");const u=document.createElement("span");u.className="gengage-chat-product-details-original-price",u.textContent=se(r,t.pricing),e.appendChild(d),e.appendChild(p),e.appendChild(u)}else{if(o){const p=document.createElement("span");p.className="gengage-chat-product-details-original-price",p.textContent=se(r,t.pricing),e.appendChild(p),e.appendChild(document.createTextNode(" "))}const d=document.createElement("span");d.className="gengage-chat-product-details-current-price",d.textContent=se(n,t.pricing),e.appendChild(d)}const g=Jt(a,"discountPercent","price_discount_rate");if(!t.hideProductDiscountBadge&&typeof g=="number"&&g>0){const d=document.createElement("span");d.className="gengage-chat-product-details-discount-badge",d.textContent=`%${Dn(g)}`,e.appendChild(d)}}function La(e,t){const a=document.createElement("div");a.className="gengage-chat-product-card gds-card gds-product-card gds-card-interactive";const n=e.props?.product??e.props;if(!n)return a;const r=n.sku;r&&(a.dataset.sku=r);const i=e.props?.action,o=n.name,s=n.url,c=n.sku,l=s&&ve(s)?s:void 0,g=()=>i?.type!=="launchSingleProduct"||l===void 0||c===void 0||t.onProductClick===void 0?!1:(t.onProductClick({sku:c,url:l,...typeof o=="string"?{name:o}:{}}),!0);(t.onProductSelect||i)&&(a.classList.add("gds-clickable"),a.addEventListener("click",k=>{if(!a.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")&&!k.target.closest(".gengage-chat-product-card-atc")&&!k.target.closest(".gengage-chat-product-card-cta")){if(i){g()||t.onAction(i);return}t.onProductSelect?.(n)}}));const d=n.imageUrl;if(d&&ve(d)){const k=document.createElement("div");k.className="gengage-chat-product-card-img-wrapper";const B=document.createElement("img");B.className="gengage-chat-product-card-img",B.loading="lazy",Se(B,"src",d);const R=n.name;R&&(B.alt=R),Re(B),k.appendChild(B);const D=n.discountPercent;if(!t.hideProductDiscountBadge&&typeof D=="number"&&D>0){const y=document.createElement("span");y.className="gengage-chat-product-card-discount-badge",y.textContent=`%${Dn(D)}`,k.appendChild(y)}const $=document.createElement("div");$.className="gengage-chat-product-card-img-actions";const ce=n.sku;if(ce&&t.onFavoriteToggle){const y=document.createElement("button");y.className="gengage-chat-favorite-btn",y.type="button",y.dataset.gengageFavoriteSku=ce,y.setAttribute("aria-label",t.i18n?.addToFavoritesLabel??"Add to favorites");const z=t.favoritedSkus?.has(ce)??!1;z&&y.classList.add("gengage-chat-favorite-btn--active"),y.innerHTML=`<svg width="14" height="14" viewBox="0 0 24 24" fill="${z?"currentColor":"none"}" stroke="currentColor" stroke-width="2"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>`,y.addEventListener("click",I=>{I.stopPropagation(),y.classList.toggle("gengage-chat-favorite-btn--active");const O=y.querySelector("svg");O&&O.setAttribute("fill",y.classList.contains("gengage-chat-favorite-btn--active")?"currentColor":"none"),t.onFavoriteToggle(ce,n)}),$.appendChild(y)}const ee=n.sku,Y=t.i18n?.findSimilarLabel??"Find Similar";if(ee){const y=document.createElement("button");y.className="gengage-chat-find-similar-pill",y.type="button",y.setAttribute("aria-label",Y),y.dataset.tooltip=Y,y.innerHTML='<span class="gengage-chat-find-similar-pill-icon" aria-hidden="true"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"><circle cx="10.5" cy="10.5" r="6.5"/><path d="M16 16l5.5 5.5"/></svg></span>';const z=document.createElement("span");z.className="gengage-chat-find-similar-pill-text",z.textContent=Y,y.appendChild(z),y.addEventListener("click",I=>{I.stopPropagation(),t.onAction({title:Y,type:"findSimilar",payload:{sku:ee}})}),$.appendChild(y)}$.childElementCount>0&&k.appendChild($),a.appendChild(k)}const p=document.createElement("div");p.className="gengage-chat-product-card-body";const u=n.brand;if(u){const k=document.createElement("div");k.className="gengage-chat-product-card-brand",k.textContent=u,p.appendChild(k)}const f=n.rating,b=n.reviewCount,m=n.price,h=n.originalPrice,C=n.price_async,x=xt(t,n),v=Rt(t,n),S=!!(h&&m&&h!==m&&parseFloat(m)>0),E=!!(x&&S),P=!!(x&&!E||S&&v==="inline"),A=typeof f=="number"&&Number.isFinite(f)&&f>0,M=document.createElement("div");M.className="gengage-chat-product-card-meta-row";const j=document.createElement("div");j.className="gengage-chat-product-card-price gengage-chat-product-card-price-block";const X=P?(()=>{const k=document.createElement("div");return k.className="gengage-chat-product-card-price-stack",x&&!E&&k.appendChild(Gt(x)),k.appendChild(j),k})():j;if(C===!0){const k=document.createElement("span");k.className="gengage-chat-price-skeleton",j.appendChild(k),setTimeout(()=>{k.parentElement&&(m&&parseFloat(m)>0?Xn(j,t,n,m,n.originalPrice):k.remove())},300)}else m&&parseFloat(m)>0&&Xn(j,t,n,m,h);if((j.childElementCount>0||C===!0)&&M.appendChild(X),A){const k=document.createElement("div");k.className="gengage-chat-product-card-rating gengage-chat-product-card-rating-compact";const B=Pa(f),R=[`${B.toFixed(1)}`,"out of 5 stars"];typeof b=="number"&&Number.isFinite(b)&&R.push(`(${b} reviews)`),k.setAttribute("aria-label",R.join(" "));const D=document.createElement("span");D.className="gengage-chat-product-card-rating-compact-star",D.setAttribute("aria-hidden","true"),D.innerHTML='<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><path d="M12 3.6l2.58 5.23 5.77.84-4.17 4.07.98 5.75L12 16.78l-5.16 2.71.99-5.75L3.66 9.67l5.76-.84L12 3.6z"/></svg>';const $=document.createElement("span");$.className="gengage-chat-product-card-rating-compact-value",$.textContent=B.toFixed(1),k.appendChild(D),k.appendChild($),M.appendChild(k)}if(M.childElementCount===0&&(M.classList.add("gengage-chat-product-card-meta-row--empty"),M.setAttribute("aria-hidden","true")),p.appendChild(M),o){const k=document.createElement("div");k.className="gengage-chat-product-card-name",k.textContent=o,k.title=o,p.appendChild(k)}const oe=n.inStock;if(t.hideStockStatus!==!0&&typeof oe=="boolean"){const k=document.createElement("div");k.className=`gengage-chat-product-card-stock ${oe?"is-in-stock":"is-out-of-stock"}`,k.textContent=oe?t.i18n?.inStockLabel??"In Stock":t.i18n?.outOfStockLabel??"Out of Stock",p.appendChild(k)}a.appendChild(p);const pe=n.cartCode,L=!!(pe&&c&&oe!==!1),F=t.i18n?.productCtaLabel??"View";if(L){const k=document.createElement("div");k.className="gengage-chat-product-card-buy-footer";const B=document.createElement("button");B.type="button",B.className="gengage-chat-product-card-buy-trigger",B.textContent=F,B.addEventListener("click",R=>{R.stopPropagation(),t.onAction({title:t.i18n?.addToCartButton??F,type:"addToCart",payload:{sku:c,cartCode:pe,quantity:1}})}),k.appendChild(B),a.appendChild(k)}else if(i){const k=document.createElement("button");k.className="gengage-chat-product-card-cta",k.type="button",k.textContent=i.type==="launchSingleProduct"?F:i.title||F,k.addEventListener("click",B=>{if(a.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")){B.stopPropagation();return}g()||t.onAction(i)}),a.appendChild(k)}else if(l){const k=document.createElement("a");k.className="gengage-chat-product-card-cta",Se(k,"href",l),Se(k,"target","_blank"),Se(k,"rel","noopener noreferrer"),k.textContent=F,k.addEventListener("click",B=>{if(a.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")){B.preventDefault(),B.stopPropagation();return}t.onProductClick&&c&&(B.preventDefault(),t.onProductClick({sku:c,url:l,...o?{name:o}:{}}))}),a.appendChild(k)}if(t.comparisonSelectMode&&c&&t.onToggleComparisonSku){const k=document.createElement("div");k.className="gengage-chat-comparison-select-wrapper";const B=t.comparisonSelectedSkus?.includes(c)??!1;B&&k.classList.add("gengage-chat-comparison-select-wrapper--selected");const R=n.name??c,D=t.i18n?.comparisonSelectCardHint??"Tap anywhere on the card to add or remove it from comparison.";k.setAttribute("role","group"),k.setAttribute("aria-label",`${String(R)}. ${D}`);const $=document.createElement("button");$.type="button",$.className="gengage-chat-comparison-checkbox",$.dataset.selected=B?"true":"false",$.setAttribute("aria-pressed",B?"true":"false");const ce=document.createElement("span");ce.className="gengage-chat-comparison-checkbox-icon",ce.innerHTML=B?'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>':'<span class="gengage-chat-comparison-checkbox-dot"></span>';const ee=document.createElement("span");ee.className="gengage-chat-comparison-checkbox-label",ee.textContent=B?t.i18n?.comparisonSelectedLabel??"Selected":t.i18n?.comparisonSelectLabel??"Select to compare",$.appendChild(ce),$.appendChild(ee),$.addEventListener("click",y=>{y.stopPropagation(),t.onToggleComparisonSku?.(c)});const Y=document.createElement("div");return Y.className="gengage-chat-comparison-card-hint",Y.setAttribute("aria-hidden","true"),Y.textContent=D,k.addEventListener("click",y=>{y.target.closest(".gengage-chat-comparison-checkbox")||(y.stopPropagation(),t.onToggleComparisonSku?.(c))}),k.appendChild($),k.appendChild(Y),k.appendChild(a),k}return a}var er=new Set(["color","colour","renk","renk kodu","color code"]),Al=new Set(["size","beden","boyut"]),Ll=new Set(["finish","bitiş","bitişi"]),Il=["variants","variantOptions","variant_options","productVariants","product_variants","options"],zl=new Set(["H2","H3","H4","P","BR","UL","OL","LI","STRONG","B","EM","I"]),Nl=new Set(["SCRIPT","STYLE","NOSCRIPT","IFRAME","OBJECT","EMBED"]);function Ne(e,...t){for(const a of t){const n=e[a];if(typeof n=="string"){const r=n.trim();if(r.length>0)return r}}}function Jt(e,...t){for(const a of t){const n=e[a];if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"){const r=Number(n.replace(",","."));if(Number.isFinite(r))return r}}}function Xt(e,...t){for(const a of t){const n=e[a];if(typeof n=="boolean")return n}}function Ml(e,...t){for(const a of t){const n=e[a];if(n&&typeof n=="object"&&!Array.isArray(n))return n}}function Bl(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}function Rl(e){const t=[...Bl(e.images),Ne(e,"imageUrl","image_url","image")].filter(a=>!!a&&ve(a));return Array.from(new Set(t))}function Ol(e){return typeof DOMParser<"u"?(new DOMParser().parseFromString(e,"text/html").body.textContent??"").replace(/\s+/g," ").trim():e.replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim()}function $l(e){const t=Ne(e,"description_html","descriptionHtml");if(t){const n=Ol(t);if(n)return{text:n,html:t}}const a=Ne(e,"description");return a?{text:a}:void 0}function Qt(e){return Array.isArray(e)?e.map(t=>{if(!t||typeof t!="object")return null;const a=t,n=Ne(a,"key","name","label","title"),r=a.value,i=typeof r=="string"||typeof r=="number"||typeof r=="boolean"?String(r).trim():void 0;return!n||!i?null:{key:n,value:i}}).filter(t=>t!==null):e&&typeof e=="object"?Object.entries(e).map(([t,a])=>{const n=typeof a=="string"||typeof a=="number"||typeof a=="boolean"?String(a).trim():void 0;return!t||!n?null:{key:t,value:n}}).filter(t=>t!==null):[]}function tr(e){const t=Qt(e.features);return t.length>0?t:Qt(e.specifications)}function Fl(e){const t=e.specifications,a=Qt(t);if(a.length>0)return Array.isArray(t)?a:Object.fromEntries(a.map(r=>[r.key,r.value]));const n=Qt(e.features);return n.length>0?n:void 0}function Je(e,...t){return Ne(e,...t)}function ar(e,...t){return Jt(e,...t)}function nr(e){return Je(e,"value","option_value","attribute_value","label","title","name","variant_name","sku")}function rr(e){const t=Je(e,"type","attribute","option_name","attribute_name");return t||(Je(e,"value")?Je(e,"name","variant_name"):void 0)}function Dl(e){const t=rr(e)?.toLowerCase();return!!(Ne(e,"color","colour","color_hex","hex","swatch","swatchColor")||t&&er.has(t))}function ir(e){if(!e)return;const t=e.trim();if(!(!t||t.includes(";"))&&(typeof CSS<"u"&&CSS.supports?.("color",t)||/^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t)))return t}function Hl(e){const t=ir(Je(e,"swatchColor","swatch","color_hex","hex","color","colour"));if(t)return t;if(Dl(e))return ir(nr(e))}function Ul(e){return Je(e,"image","imageUrl","image_url","swatchImage","swatch_image")}function jl(e){return ar(e,"price_discounted","priceDiscounted")??Je(e,"price_discounted","priceDiscounted")??ar(e,"price")??Je(e,"price")}function ql(e){const t=e.trim().toLowerCase();return er.has(t)||Al.has(t)||Ll.has(t)}function Zl(e){const t=e.trim().toLowerCase();return t==="renk kodu"?"Renk":t==="color code"?"Color":e.trim()}function Vl(e){for(const t of Il){const a=e[t];if(!Array.isArray(a))continue;const n=a.filter(r=>!!r&&typeof r=="object"&&!Array.isArray(r));if(n.length>0)return n}}function Gl(e){const t=Vl(e);if(t)return t;const a=Ne(e,"sku"),n=Xt(e,"inStock","in_stock"),r=[],i=new Set,o=(c,l)=>{if(!ql(c)||typeof l!="string"&&typeof l!="number"&&typeof l!="boolean")return;const g=String(l).trim();if(!g)return;const d=Zl(c),p=`${d.toLowerCase()}:${g.toLowerCase()}`;i.has(p)||(i.add(p),r.push({name:d,value:g,sku:a,inStock:n}))},s=Ml(e,"facetHits","facet_hits");if(s)for(const[c,l]of Object.entries(s))o(c,l);for(const c of tr(e))o(c.key,c.value);return r}function Wl(e,t){const a=Array.from(new Set(e.map(rr).filter(n=>!!n)));return a.length===1?`${e.length} ${a[0]}`:t.i18n?.variantsLabel??"Variants"}function Kl(e,t){const a=document.createElement("article");a.className="gengage-chat-product-details-panel";const n=e.props?.product??e.props;if(!n)return a;const r=Ne(n,"name"),i=Ne(n,"brand"),o=Ne(n,"sku"),s=Ne(n,"cartCode","cart_code"),c=Ne(n,"price"),l=Ne(n,"originalPrice","price_original"),g=Xt(n,"price_async"),d=xt(t,n),p=Rt(t,n),u=!!(l&&c&&l!==c),f=Xt(n,"inStock","in_stock"),b=Jt(n,"reviewCount","review_count"),m=Jt(n,"rating"),h=Rl(n),C=tr(n).slice(0,4);if(h.length>1){const L=document.createElement("div");L.className="gengage-chat-product-details-media gengage-chat-product-details-gallery gengage-chat-product-details-img-wrap";const F=document.createElement("img");F.className="gengage-chat-product-details-img",Se(F,"src",h[0]),F.alt=r??"Product image",Re(F),L.appendChild(F);const k=document.createElement("div");k.className="gengage-chat-product-gallery-thumbs";const B=6;let R=null,D=0;const $=t.i18n,ce=$?.galleryPrevAriaLabel??"Previous image",ee=$?.galleryNextAriaLabel??"Next image",Y=Z=>Z==="prev"?'<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="15 18 9 12 15 6"/></svg>':'<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg>',y=document.createElement("button");y.type="button",y.className="gengage-chat-product-gallery-nav gengage-chat-product-gallery-nav--prev gds-btn gds-btn-ghost gds-icon-btn",y.setAttribute("aria-label",ce),y.innerHTML=Y("prev");const z=document.createElement("button");z.type="button",z.className="gengage-chat-product-gallery-nav gengage-chat-product-gallery-nav--next gds-btn gds-btn-ghost gds-icon-btn",z.setAttribute("aria-label",ee),z.innerHTML=Y("next");const I=()=>{y.disabled=D<=0,z.disabled=D>=h.length-1},O=Z=>{if(Z<0||Z>=h.length||Z===D)return;const ne=h[Z];if(!ne)return;Se(F,"src",ne);const Q=k.querySelectorAll(".gengage-chat-product-gallery-thumb");R&&R.classList.remove("gengage-chat-product-gallery-thumb--active"),Z<B&&Q[Z]?(Q[Z].classList.add("gengage-chat-product-gallery-thumb--active"),R=Q[Z]):R=null,D=Z,I()};for(let Z=0;Z<h.length;Z++){const ne=h[Z];if(Z>=B)break;const Q=document.createElement("img");Q.className="gengage-chat-product-gallery-thumb",Z===0&&(Q.classList.add("gengage-chat-product-gallery-thumb--active"),R=Q),Se(Q,"src",ne),Q.alt=`${r??"Product"} ${Z+1}`,Q.width=48,Q.height=48,Re(Q),Q.addEventListener("click",()=>{O(Z)}),k.appendChild(Q)}if(h.length>B){const Z=document.createElement("span");Z.className="gengage-chat-product-gallery-thumb-more",Z.textContent=`+${h.length-B}`,k.appendChild(Z)}y.addEventListener("click",Z=>{Z.stopPropagation(),O(D-1)}),z.addEventListener("click",Z=>{Z.stopPropagation(),O(D+1)}),I();let U=0;const q=50;F.addEventListener("touchstart",Z=>{U=Z.changedTouches[0].clientX},{passive:!0}),F.addEventListener("touchend",Z=>{const ne=Z.changedTouches[0].clientX,Q=U-ne;Math.abs(Q)<q||O(Q>0?Math.min(D+1,h.length-1):Math.max(D-1,0))}),L.appendChild(y),L.appendChild(z),L.appendChild(k),a.appendChild(L)}else if(h.length===1){const L=document.createElement("div");L.className="gengage-chat-product-details-media gengage-chat-product-details-img-wrap";const F=document.createElement("img");F.className="gengage-chat-product-details-img",F.loading="lazy",Se(F,"src",h[0]),Re(F),F.alt=r??"Product image",L.appendChild(F),a.appendChild(L)}const x=document.createElement("div");if(x.className="gengage-chat-product-details-content",i&&(!r||!r.toLowerCase().startsWith(i.toLowerCase()))){const L=document.createElement("div");L.className="gengage-chat-product-details-brand",L.textContent=i,x.appendChild(L)}if(r){const L=document.createElement("h3");L.className="gengage-chat-product-details-title",L.textContent=r,L.title=r,x.appendChild(L)}if(t.hideUserReviews!==!0&&typeof m=="number"&&Number.isFinite(m)&&m>0){const L=document.createElement(o?"button":"div");L.className="gengage-chat-product-details-rating",o&&(L.type="button",L.classList.add("gengage-chat-product-details-rating--clickable"),L.setAttribute("aria-label",t.i18n?.groundingReviewCta??"Read Reviews"),L.addEventListener("click",()=>{t.onAction({title:t.i18n?.customerReviewsTitle??"Customer Reviews",type:"reviewSummary",payload:{sku:o}})})),L.appendChild(Hn(m));const F=document.createElement("span");if(F.className="gengage-chat-product-details-rating-value",F.textContent=Pa(m).toFixed(1),L.appendChild(F),typeof b=="number"&&Number.isFinite(b)){const k=document.createElement("span");k.className="gengage-chat-product-details-review-count",k.textContent=` (${b})`,L.appendChild(k)}x.appendChild(L)}{const L=!!(d&&u);let F=x;if(d&&!L){const B=document.createElement("div");B.className="gengage-chat-product-details-price-stack",B.appendChild(Gt(d)),x.appendChild(B),F=B}const k=document.createElement("div");if(k.className="gengage-chat-product-details-price",g===!0){const B=document.createElement("span");B.className="gengage-chat-price-skeleton",k.appendChild(B),F.appendChild(k),setTimeout(()=>{if(B.parentElement)if(c&&parseFloat(c)>0)Qn(k,t,n,c,l,p,u);else{const R=k.parentElement;k.remove(),R?.classList.contains("gengage-chat-product-details-price-stack")&&R.remove()}},300)}else if(c&&parseFloat(c)>0)Qn(k,t,n,c,l,p,u),F.appendChild(k);else if(d){const B=F;B.classList.contains("gengage-chat-product-details-price-stack")&&B.remove()}}if(t.hideStockStatus!==!0&&typeof f=="boolean"){const L=document.createElement("div");L.className=`gengage-chat-product-details-stock ${f?"is-in-stock":"is-out-of-stock"}`,L.textContent=f?t.i18n?.inStockLabel??"In Stock":t.i18n?.outOfStockLabel??"Out of Stock",x.appendChild(L)}const v=n.promotions;if(v&&v.length>0){const L=document.createElement("div");L.className="gengage-chat-product-details-promos";for(const F of v.slice(0,3)){if(!F||/%(0(\.0+)?)\s/.test(F))continue;const k=document.createElement("span");k.className="gengage-chat-product-details-promo-badge",k.textContent=F,k.title=F,L.appendChild(k)}L.childElementCount>0&&x.appendChild(L)}if(C.length>0){const L=document.createElement("dl");L.className="gengage-chat-product-details-facts";for(const F of C){const k=document.createElement("div");k.className="gengage-chat-product-details-fact";const B=document.createElement("dt");B.textContent=F.key;const R=document.createElement("dd");R.textContent=F.value,k.appendChild(B),k.appendChild(R),L.appendChild(k)}x.appendChild(L)}const S=Gl(n);if(S.length>0){const L=document.createElement("div");L.className="gengage-chat-product-variants";const F=document.createElement("div");F.className="gengage-chat-product-variants-label",F.textContent=Wl(S,t),L.appendChild(F);const k=document.createElement("div");k.className="gengage-chat-product-variants-list";for(const B of S){const R=nr(B),D=Je(B,"sku");if(!R&&!D)continue;const $=document.createElement("button");$.className="gengage-chat-product-variant-btn gds-chip",$.type="button";const ce=R??D??"";$.title=ce;const ee=Xt(B,"in_stock","inStock");D&&o&&D===o?($.classList.add("gengage-chat-product-variant-btn--active"),$.setAttribute("aria-pressed","true")):$.setAttribute("aria-pressed","false"),ee===!1&&($.classList.add("gengage-chat-product-variant-btn--out"),$.disabled=!0);const Y=Ul(B),y=Hl(B);if(Y&&ve(Y)){const O=document.createElement("img");O.className="gengage-chat-product-variant-swatch gengage-chat-product-variant-swatch--image",Se(O,"src",Y),O.alt="",O.setAttribute("aria-hidden","true"),Re(O),$.appendChild(O)}else if(y){const O=document.createElement("span");O.className="gengage-chat-product-variant-swatch",O.setAttribute("aria-hidden","true"),O.style.backgroundColor=y,$.appendChild(O)}const z=document.createElement("span");z.className="gengage-chat-product-variant-label",z.textContent=ce,$.appendChild(z);const I=jl(B);if(I&&String(I)!==String(c)){const O=document.createElement("span");O.className="gengage-chat-product-variant-price",O.textContent=se(String(I),t.pricing),$.appendChild(O)}if(D&&D!==o){const O=r??"",U=(typeof B.value=="string"?B.value.trim():"")||(typeof B.name=="string"?B.name.trim():"")||(typeof B.variant_name=="string"?B.variant_name.trim():"")||"",q=O.length>0?U.length>0&&U!==O?`${O} (${U})`:O:ce;$.addEventListener("click",()=>{t.onAction({title:q,type:"launchVariant",payload:{sku:D}})})}k.appendChild($)}k.childElementCount>0&&(L.appendChild(k),x.appendChild(L))}const E=document.createElement("div");E.className="gengage-chat-product-details-actions";const P=e.props?.action;if(P){const L=document.createElement("button");L.className="gengage-chat-product-details-cta gds-btn gds-btn-primary",L.type="button",L.textContent=P.title||t.i18n?.productCtaLabel||"View",L.addEventListener("click",()=>t.onAction(P)),E.appendChild(L)}if(s&&o&&f!==!1){const L=document.createElement("button");L.className="gengage-chat-product-details-atc gds-btn gds-btn-primary",L.type="button",L.textContent=t.i18n?.addToCartButton??"Add to Cart",L.addEventListener("click",()=>{t.onAction({title:t.i18n?.addToCartButton??"Add to Cart",type:"addToCart",payload:{sku:o,cartCode:s,quantity:1}})}),E.appendChild(L)}const A=Ne(n,"url");if(!P&&A&&ve(A)){const L=document.createElement("a");L.className="gengage-chat-product-details-cta gds-btn gds-btn-secondary",Se(L,"href",A),Se(L,"target","_blank"),Se(L,"rel","noopener noreferrer"),L.textContent=t.i18n?.viewOnSiteLabel??t.i18n?.productCtaLabel??"View on Site",L.addEventListener("click",F=>{t.onProductClick&&o&&(F.preventDefault(),t.onProductClick({sku:o,url:A,...r?{name:r}:{}}))}),E.appendChild(L)}const M=A;if(M&&ve(M)){let R=function($,ce){const ee=document.createElementNS(k,"circle");ee.setAttribute("cx",$),ee.setAttribute("cy",ce),ee.setAttribute("r","3"),B.appendChild(ee)},D=function($,ce,ee,Y){const y=document.createElementNS(k,"line");y.setAttribute("x1",$),y.setAttribute("y1",ce),y.setAttribute("x2",ee),y.setAttribute("y2",Y),B.appendChild(y)};var oe=R,pe=D;const L=document.createElement("button");L.className="gengage-chat-product-details-share gds-btn gds-btn-ghost gds-icon-btn",L.type="button";const F=t.i18n?.shareButton??"Share";L.title=F,L.setAttribute("aria-label",F);const k="http://www.w3.org/2000/svg",B=document.createElementNS(k,"svg");B.setAttribute("width","18"),B.setAttribute("height","18"),B.setAttribute("viewBox","0 0 24 24"),B.setAttribute("fill","none"),B.setAttribute("stroke","currentColor"),B.setAttribute("stroke-width","2"),B.setAttribute("stroke-linecap","round"),B.setAttribute("stroke-linejoin","round"),R("18","5"),R("6","12"),R("18","19"),D("8.59","13.51","15.42","17.49"),D("15.41","6.51","8.59","10.49"),L.appendChild(B),L.addEventListener("click",async()=>{try{navigator.share?await navigator.share({title:r??"",url:M}):navigator.clipboard&&(await navigator.clipboard.writeText(M),L.classList.add("gengage-chat-product-details-share--copied"),setTimeout(()=>L.classList.remove("gengage-chat-product-details-share--copied"),1500))}catch{}}),E.appendChild(L)}E.childElementCount>0&&x.appendChild(E),a.appendChild(x);const j=$l(n),X=Fl(n);return(j||X)&&a.appendChild(Xl(j,X,t)),a}function Ia(e){if(e.nodeType===Node.TEXT_NODE)return document.createTextNode(e.textContent??"");if(e.nodeType!==Node.ELEMENT_NODE)return null;const t=e,a=t.tagName.toUpperCase();if(Nl.has(a))return null;if(!zl.has(a)){const r=document.createDocumentFragment();for(const i of Array.from(t.childNodes)){const o=Ia(i);o&&r.appendChild(o)}return r}const n=document.createElement(a.toLowerCase());for(const r of Array.from(t.childNodes)){const i=Ia(r);i&&n.appendChild(i)}return n}function Yl(e,t){const a=t.split(/\n{2,}/).map(n=>n.replace(/\s+/g," ").trim()).filter(Boolean);if(a.length!==0)for(const n of a){const r=document.createElement("p");r.textContent=n,e.appendChild(r)}}function Jl(e,t){if(e.classList.add("gengage-chat-product-description"),t.html&&typeof DOMParser<"u"){const a=new DOMParser().parseFromString(t.html,"text/html"),n=Array.from(a.body.childNodes).map(r=>Ia(r)).filter(r=>!!r&&(r.nodeType===Node.ELEMENT_NODE||!!r.textContent?.trim()));if(n.length>0){for(const r of n)e.appendChild(r);return}}Yl(e,t.text)}function Xl(e,t,a){const n=document.createElement("div");n.className="gengage-chat-product-detail-tabs";const r=document.createElement("div");r.className="gengage-chat-product-detail-tab-bar gds-toolbar";const i=[];if(e){const s=document.createElement("button");s.className="gengage-chat-product-detail-tab gds-tab gengage-chat-product-detail-tab--active is-active",s.type="button",s.setAttribute("aria-selected","true"),s.textContent=a.i18n?.productInfoTab??"Product Info",r.appendChild(s);const c=document.createElement("div");c.className="gengage-chat-product-detail-tab-panel",Jl(c,e),i.push(c)}if(t){const s=document.createElement("button");s.className=`gengage-chat-product-detail-tab gds-tab${e?"":" gengage-chat-product-detail-tab--active is-active"}`,s.type="button",s.setAttribute("aria-selected",e?"false":"true"),s.textContent=a.i18n?.specificationsTab??"Specifications",r.appendChild(s);const c=document.createElement("div");c.className="gengage-chat-product-detail-tab-panel",e&&(c.style.display="none");const l=document.createElement("table");l.className="gengage-chat-product-specs-table";const g=Array.isArray(t)?t:Object.entries(t).map(([d,p])=>({key:d,value:p}));for(const d of g){const p=document.createElement("tr"),u=document.createElement("td");u.className="gengage-chat-product-specs-key",u.textContent=d.key;const f=document.createElement("td");f.className="gengage-chat-product-specs-value",f.textContent=d.value,p.appendChild(u),p.appendChild(f),l.appendChild(p)}c.appendChild(l),i.push(c)}const o=r.querySelectorAll(".gengage-chat-product-detail-tab");o.forEach((s,c)=>{s.addEventListener("click",()=>{o.forEach(l=>{l.classList.remove("gengage-chat-product-detail-tab--active","is-active"),l.setAttribute("aria-selected","false")}),s.classList.add("gengage-chat-product-detail-tab--active","is-active"),s.setAttribute("aria-selected","true"),i.forEach((l,g)=>{l.style.display=g===c?"":"none"})})}),n.appendChild(r);for(const s of i)n.appendChild(s);return n}function or(e){const t='width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"';switch(e){case"related":return`<svg ${t} aria-hidden="true"><path d="M13 2 3 14h9l-1 8 10-12h-9l1-8z"/></svg>`;case"priceAsc":return`<svg ${t} aria-hidden="true"><polyline points="22 7 13.5 15.5 8.5 10.5 2 17"/><polyline points="16 7 22 7 22 13"/></svg>`;case"priceDesc":return`<svg ${t} aria-hidden="true"><polyline points="22 17 13.5 8.5 8.5 13.5 2 7"/><polyline points="16 17 22 17 22 11"/></svg>`;default:return""}}function Ql(){return'<svg class="gengage-chat-product-sort-chevron" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>'}function eg(){return'<svg class="gengage-chat-product-sort-check" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg>'}function tg(){return'<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3 4 7l4 4"/><path d="M16 21l4-4-4-4"/><path d="M4 7h16"/><path d="M20 17H4"/></svg>'}function sr(e,t){return e.type===t.type&&e.direction===t.direction}function cr(e,t,a){if(!a||a.type==="related")return e;const n=e.map(r=>{const i=t.elements[r]?.props?.product,o=i?Number(i.price):NaN;return{id:r,price:Number.isFinite(o)?o:1/0}});return n.sort((r,i)=>r.price===1/0&&i.price===1/0?0:r.price===1/0?1:i.price===1/0?-1:a.direction==="desc"?i.price-r.price:r.price-i.price),n.map(r=>r.id)}function ag(e,t,a,n){const r=cr(t,a,n),i=new Map;for(const o of Array.from(e.children)){const s=o.dataset.elementId;s&&i.set(s,o)}for(const o of r){const s=i.get(o);s&&e.appendChild(s)}}function ng(e,t,a,n){const r=document.createElement("div");r.className="gengage-chat-product-grid-wrapper";const i=Ba(e),o=i.isConsulting,s=e.children??[],c=document.createElement("div");c.className="gengage-chat-product-grid";const l=Array.isArray(e.props?.productSections)?e.props.productSections.map(h=>({title:typeof h.title=="string"?h.title:"",children:Array.isArray(h.children)?h.children.filter(C=>typeof C=="string"&&!!t.elements[C]):[]})).filter(h=>h.children.length>0):[],g=l.length>1,d=!g&&l.length===1&&l[0]?.title?l[0].title:"",p=n?.panelProductListHeading??(d||void 0),u=!o&&!g&&s.length>1&&n?.onSortChange,f=h=>{if(!n?.onToggleComparisonSku)return;const C=document.createElement("button");C.className="gengage-chat-comparison-toggle-btn gds-btn gds-btn-ghost",C.type="button",n.comparisonSelectMode&&C.classList.add("gengage-chat-comparison-toggle-btn--active"),n.isStreaming&&C.classList.add("gengage-chat-comparison-toggle-btn--hidden");const x=document.createElement("span");x.className="gengage-chat-comparison-toggle-icon",x.innerHTML=tg();const v=document.createElement("span");v.className="gengage-chat-comparison-toggle-label";const S=n.i18n?.compareSelected??"Compare";v.textContent=S,C.setAttribute("aria-label",S),C.title=S,C.appendChild(x),C.appendChild(v),C.addEventListener("click",()=>{n.onToggleComparisonSku?.("")}),h.appendChild(C)},b=(h,C=s.length)=>{const x=e.props?.endOfList;if(o||!(g?x===!1:x!==!0)||C===0)return;const v=n?.i18n?.viewMoreLabel??"Show More",S=document.createElement("button");S.className="gengage-chat-product-grid-view-more",S.type="button",S.textContent=v,S.addEventListener("click",()=>{n?.onAction({title:v,type:"moreProductList",payload:{}})}),h.appendChild(S)},m=()=>{const h=n?.isMobile??Yt();n?.comparisonSelectMode&&n.comparisonSelectedSkus&&!h&&r.appendChild(Wn(n.comparisonSelectedSkus,n))};if(u){const h=document.createElement("div");h.className="gengage-chat-product-sort-toolbar",h.setAttribute("role","toolbar"),h.setAttribute("aria-label",n.i18n?.sortToolbarAriaLabel??"Sort products");let C=n.productSort??{type:"related"};const x=[{label:n.i18n?.sortRelated??"Related",sortState:{type:"related"},icon:"related"},{label:n.i18n?.sortPriceAsc??"Price ↑",sortState:{type:"price",direction:"asc"},icon:"priceAsc"},{label:n.i18n?.sortPriceDesc??"Price ↓",sortState:{type:"price",direction:"desc"},icon:"priceDesc"}],v=document.createElement("div");v.className="gengage-chat-product-sort-dropdown";const S=document.createElement("button");S.type="button",S.className="gengage-chat-product-sort-trigger gds-btn gds-btn-ghost",S.setAttribute("aria-haspopup","listbox"),S.setAttribute("aria-expanded","false");const E=n.i18n?.sortToolbarAriaLabel??"Sort products",P=document.createElement("span");P.className="gengage-chat-product-sort-trigger-icon";const A=document.createElement("span");A.className="gengage-chat-product-sort-trigger-label";const M=R=>{const D=x.find($=>sr($.sortState,R))??x[0];A.textContent=D.label,P.innerHTML=or(D.icon),v.dataset.sortIcon=D.icon,S.setAttribute("aria-label",`${E}: ${D.label}`),S.title=D.label};M(C);const j=document.createElement("span");j.className="gengage-chat-product-sort-trigger-chevron",j.innerHTML=Ql(),S.appendChild(P),S.appendChild(A),S.appendChild(j);const X=document.createElement("div");X.className="gengage-chat-product-sort-menu gds-menu",X.hidden=!0,X.setAttribute("role","listbox"),X.setAttribute("aria-label",E);const oe=h.ownerDocument;let pe=null;const L=()=>{X.hidden=!0,v.classList.remove("gengage-chat-product-sort-dropdown--open"),S.setAttribute("aria-expanded","false"),pe?.abort(),pe=null},F=R=>{v.classList.contains("gengage-chat-product-sort-dropdown--open")&&(v.contains(R.target)||L())},k=R=>{R.key==="Escape"&&(R.preventDefault(),L())},B=()=>{X.hidden=!1,v.classList.add("gengage-chat-product-sort-dropdown--open"),S.setAttribute("aria-expanded","true"),pe=new AbortController;const{signal:R}=pe;oe.addEventListener("click",F,{signal:R}),oe.addEventListener("keydown",k,{capture:!0,signal:R})};S.addEventListener("click",R=>{R.stopPropagation(),v.classList.contains("gengage-chat-product-sort-dropdown--open")?L():B()});for(const R of x){const D=document.createElement("button");D.type="button",D.className="gengage-chat-product-sort-option gds-menu-option",D.setAttribute("role","option");const $=sr(C,R.sortState);D.setAttribute("aria-selected",$?"true":"false"),$&&D.classList.add("gengage-chat-product-sort-option--active","gds-menu-option-active");const ce=R.sortState.type==="related"?"related":`price-${R.sortState.direction??""}`;D.dataset.sortKey=ce;const ee=document.createElement("span");ee.className="gengage-chat-product-sort-option-icon",ee.innerHTML=or(R.icon);const Y=document.createElement("span");Y.className="gengage-chat-product-sort-option-label",Y.textContent=R.label;const y=document.createElement("span");y.className="gengage-chat-product-sort-option-check",y.innerHTML=eg(),y.setAttribute("aria-hidden","true"),$||y.classList.add("gengage-chat-product-sort-option-check--hidden"),D.appendChild(ee),D.appendChild(Y),D.appendChild(y),D.addEventListener("click",()=>{C=R.sortState,n.onSortChange?.(R.sortState),ag(c,s,t,R.sortState),X.querySelectorAll(".gengage-chat-product-sort-option").forEach(z=>{const I=z,O=I.dataset.sortKey===ce;I.classList.toggle("gengage-chat-product-sort-option--active",O),I.classList.toggle("gds-menu-option-active",O),I.setAttribute("aria-selected",O?"true":"false"),I.querySelector(".gengage-chat-product-sort-option-check")?.classList.toggle("gengage-chat-product-sort-option-check--hidden",!O)}),M(R.sortState),L()}),X.appendChild(D)}if(v.appendChild(S),v.appendChild(X),h.appendChild(v),f(h),p){h.classList.add("gengage-chat-product-sort-toolbar--inline");const R=document.createElement("div");R.className="gengage-chat-product-grid-head";const D=document.createElement("span");D.className="gengage-chat-product-grid-head-title",D.textContent=p,R.appendChild(D);const $=document.createElement("div");$.className="gengage-chat-product-grid-head-actions",$.appendChild(h),R.appendChild($),r.appendChild(R)}else r.appendChild(h)}else if(p){const h=document.createElement("div");h.className="gengage-chat-product-grid-head";const C=document.createElement("span");C.className="gengage-chat-product-grid-head-title",C.textContent=p,h.appendChild(C),r.appendChild(h)}if(g&&!o){if(r.classList.add("gengage-chat-product-grid-wrapper--grouped"),n?.onToggleComparisonSku){const v=document.createElement("div");v.className="gengage-chat-product-sort-toolbar gengage-chat-product-sort-toolbar--compare-only",v.setAttribute("role","toolbar"),v.setAttribute("aria-label",n.i18n?.compareSelected??"Compare"),f(v),r.appendChild(v)}const h=document.createElement("div");h.className="gengage-chat-product-grid-sections",h.setAttribute("role","list");const C=e.props?.rankingState;let x=0;for(const v of l){x+=v.children.length;const S=rg(v.children.length,n),E=document.createElement("section");E.className="gengage-chat-product-grid-section",E.setAttribute("role","listitem");const P=document.createElement("div");if(P.className="gengage-chat-product-grid-section-head",v.title){const j=document.createElement("h3");j.className="gengage-chat-product-grid-section-title",j.textContent=v.title,P.appendChild(j)}const A=document.createElement("span");A.className="gengage-chat-product-grid-section-count",A.textContent=S,P.appendChild(A),E.appendChild(P);const M=document.createElement("div");M.className="gengage-chat-product-grid gengage-chat-product-grid--section";for(const j of v.children){const X=a(j);X&&(X.dataset.elementId=j,M.appendChild(X))}(n?.isMobile??Yt())&&M.classList.add("gengage-chat-product-grid--mobile"),C==="pending"&&(M.classList.add("gengage-chat-product-grid--pending"),M.inert=!0,M.setAttribute("aria-busy","true")),E.appendChild(M),h.appendChild(E)}return r.appendChild(h),b(r,x),m(),r}if(o)pg(r,c,i,n);else{const h=cr(s,t,n?.productSort);for(const C of h){if(!t.elements[C])continue;const x=a(C);x&&(x.dataset.elementId=C,c.appendChild(x))}}return(n?.isMobile??Yt())&&c.classList.add("gengage-chat-product-grid--mobile"),e.props?.rankingState==="pending"&&(c.classList.add("gengage-chat-product-grid--pending"),c.inert=!0,c.setAttribute("aria-busy","true")),r.appendChild(c),b(r),m(),r}function rg(e,t){return(t?.i18n?.productGridSectionCountLabel??"{count} product(s)").replace(/\{count\}/g,String(e))}function ig(e,t,a){const n=r=>{const i=r?.url;return typeof i=="string"?i.trim():""};if(t.sku===e){const r=n(t);if(r.length>0)return r}return n(a.find(r=>r.sku===e))}function og(e,t){const a=e.props??{},n=a.keyDifferencesHtml,r=a.recommended,i=a.products??[],o=a.attributes??[],s=a.highlights??[],c=a.specialCases,l=a.recommendedText,g=a.winnerHits,d=a.productActions;if(!r)return document.createElement("div");const p={recommended:r,products:i,attributes:o,highlights:s,specialCases:c,locale:t.locale,onProductClick:({sku:f,name:b})=>{const m=ig(f,r,i);t.onProductClick?.({sku:f,url:m,...b!==void 0&&b!==""?{name:b}:{}})},pricing:t.pricing};l!==void 0&&(p.recommendedText=l),g!==void 0&&(p.winnerHits=g),d!==void 0&&(p.productActions=d),n!==void 0&&(p.keyDifferencesHtml=n),t.i18n&&(p.i18n={comparisonHeading:t.i18n.panelTitleComparisonResults,recommendedChoiceLabel:t.i18n.recommendedChoiceLabel,highlightsLabel:t.i18n.highlightsLabel,keyDifferencesLabel:t.i18n.keyDifferencesLabel,viewMoreLabel:t.i18n.viewMoreLabel,specialCasesLabel:t.i18n.specialCasesLabel,addToCartButton:t.i18n.addToCartButton});const u=jc(p);return(t.isMobile??Yt())&&u.classList.add("gengage-chat-comparison--mobile"),u}function sg(e){const t=document.createElement("hr");t.className="gengage-chat-divider";const a=e.props?.label;if(a){const n=document.createElement("div");n.className="gengage-chat-divider-wrapper";const r=document.createElement("span");r.className="gengage-chat-divider-label",r.textContent=a,n.appendChild(t),n.appendChild(r);const i=document.createElement("hr");return i.className="gengage-chat-divider",n.appendChild(i),n}return t}var ea=new WeakMap;function lr(e){return{...yt,...e?.i18n??{}}}function gr(e){return e.watchStylesPreparedTitle??e.beautyStylesPreparedTitle}function ta(e){return typeof e.status=="string"?e.status:"ready"}function za(e){const t=e.findIndex(a=>ta(a)!=="loading");return t<0?0:t}function cg(e){if(typeof e!="string")return;const t=e.trim();if(!t)return;if(/^https?:\/\//i.test(t))return t;let a=t.split(/[?#]/)[0];if(a&&(a=a.replace(/^\/+/,""),a.startsWith("remoteConfig/")&&(a=a.slice(13)),!!a))return`https://configs.gengage.ai/assets/${a}`}function dr(e,t,a,n){const{grid:r,i18n:i}=e;r.innerHTML="",r.classList.remove("gengage-chat-product-grid--consulting-groups");const o=document.createElement("section");o.className="gengage-chat-consulting-loading-panel";const s=document.createElement("h4");s.className="gengage-chat-consulting-loading-panel-title",s.textContent=aa(t,n,i),o.appendChild(s);const c=document.createElement("p");if(c.className="gengage-chat-consulting-loading-panel-copy",c.textContent=a==="loading"?i.consultingStyleLoadingDescription:i.consultingStyleUnavailableDescription,o.appendChild(c),a==="loading"){const l=document.createElement("div");l.className="gengage-chat-consulting-loading-grid";for(let g=0;g<3;g+=1){const d=document.createElement("div");d.className="gengage-chat-consulting-loading-card",l.appendChild(d)}o.appendChild(l)}r.appendChild(o)}function aa(e,t,a){const n=r=>a.consultingFallbackStyleLabel.replace("{index}",String(r));return e.style_label??n(t)}function Na(e,t){const a=e.variations[t];if(!a)return;const{grid:n,ctx:r,i18n:i}=e;n.innerHTML="",n.classList.remove("gengage-chat-product-grid--consulting-groups");const o=ta(a),s=t+1;if(o==="loading"){dr(e,a,"loading",s);return}if(o!=="ready"&&(!Array.isArray(a.product_list)||a.product_list.length===0)){dr(e,a,"unavailable",s);return}const c=Array.isArray(a.product_list)?a.product_list:[],l=Array.isArray(a.recommendation_groups)?a.recommendation_groups:[];if(l.length>0){n.classList.add("gengage-chat-product-grid--consulting-groups");const g=new Map;for(const m of c){const h=typeof m?.sku=="string"?m.sku:void 0;h&&g.set(h,m)}const d=(m,h,C,x)=>{if(h.length===0)return;const v=document.createElement("section");v.className="gengage-chat-consulting-group";const S=document.createElement("div");S.className="gengage-chat-consulting-group-header";const E=document.createElement("h4");if(E.className="gengage-chat-consulting-group-label",E.textContent=`${m} (${h.length})`,S.appendChild(E),typeof x=="string"&&x.trim().length>0){const A=document.createElement("p");A.className="gengage-chat-consulting-group-reason",A.textContent=x,S.appendChild(A)}v.appendChild(S);const P=document.createElement("div");P.className="gengage-chat-product-grid gengage-chat-consulting-group-grid",C&&P.classList.add("gengage-chat-consulting-group-grid--single-group"),P.style.setProperty("--consulting-group-columns",String(Math.max(1,Math.min(4,h.length))));for(const A of h){const M=La({type:"ProductCard",props:{product:A}},r??{onAction:()=>{}});P.appendChild(M)}v.appendChild(P),n.appendChild(v)},p=new Set,u=[];for(const m of l){const h=(Array.isArray(m.skus)?m.skus.filter(v=>typeof v=="string"&&v.trim().length>0):[]).map(v=>(p.add(v),g.get(v))).filter(v=>!!v);if(h.length===0)continue;const C=typeof m.label=="string"&&m.label.trim().length>0?m.label:i.consultingFallbackGroupLabel,x=typeof m.reason=="string"?m.reason:void 0;u.push({labelText:C,products:h,...x!==void 0?{reasonText:x}:{}})}const f=c.filter(m=>{const h=typeof m?.sku=="string"?m.sku:"";return h.length>0&&!p.has(h)});f.length>0&&u.push({labelText:i.consultingOtherCompatibleProductsLabel,products:f});const b=u.length===1;for(const m of u)d(m.labelText,m.products,b,m.reasonText);return}for(const g of c){const d=La({type:"ProductCard",props:{product:g}},r??{onAction:()=>{}});n.appendChild(d)}}function Ma(e,t,a,n){const r=ta(t),i=n.consultingStyleLoadingBadge,o=n.consultingStyleUnavailableBadge;e.classList.remove("gengage-chat-consulting-style-btn--loading","gengage-chat-consulting-style-btn--muted"),r==="loading"?e.classList.add("gengage-chat-consulting-style-btn--loading"):r!=="ready"&&e.classList.add("gengage-chat-consulting-style-btn--muted"),e.setAttribute("aria-label",aa(t,a+1,n));let s=e.querySelector(".gengage-chat-consulting-style-media");s?s.innerHTML="":(s=document.createElement("div"),s.className="gengage-chat-consulting-style-media",e.appendChild(s));const c=cg(t.image_url);if(c&&ve(c)){const g=document.createElement("img");g.className="gengage-chat-consulting-style-image",g.draggable=!1,Se(g,"src",c),g.alt=aa(t,a+1,n),g.loading="lazy",Re(g),s.appendChild(g)}const l=document.createElement("span");if(l.className="gengage-chat-consulting-style-caption",l.textContent=aa(t,a+1,n),s.appendChild(l),r==="loading"||r!=="ready"){const g=document.createElement("span");g.className="gengage-chat-consulting-style-status",g.textContent=r==="loading"?i:o,s.appendChild(g)}}function pr(e,t,a,n){e.addEventListener("click",()=>{const r=ea.get(t);r&&r.selectedIndex!==n&&(r.selectedIndex=n,a.querySelectorAll(".gengage-chat-consulting-style-btn").forEach((i,o)=>{i.classList.toggle("gengage-chat-consulting-style-btn--active",o===n)}),Na(r,n))})}function lg(e,t,a,n){const r=lr(n),i=za(a),o=document.createElement("div");o.className="gengage-chat-consulting-style-picker";const s={grid:t,ctx:n,variations:a,i18n:r,selectedIndex:i};ea.set(o,s);const c=document.createElement("div");c.className="gengage-chat-consulting-style-picker-title",c.textContent=gr(r).replace("{count}",String(a.length)),o.appendChild(c);const l=document.createElement("div");l.className="gengage-chat-consulting-style-grid",o.appendChild(l),a.forEach((g,d)=>{const p=document.createElement("button");p.type="button",p.className="gengage-chat-consulting-style-btn gds-card",d===i&&p.classList.add("gengage-chat-consulting-style-btn--active"),Ma(p,g,d,r),pr(p,o,l,d),l.appendChild(p)}),e.appendChild(o),Na(s,i)}function gg(e,t,a){const n=e.querySelector(".gengage-chat-consulting-style-picker"),r=dg(e);if(!n||!r)return!1;const i=n.querySelector(".gengage-chat-consulting-style-grid");if(!i)return!1;const o=lr(a);let s=ea.get(n);if(s)s.grid=r,s.ctx=a,s.variations=t,s.i18n=o;else{const p={grid:r,ctx:a,variations:t,i18n:o,selectedIndex:za(t)};ea.set(n,p),s=p}const c=n.querySelector(".gengage-chat-consulting-style-picker-title");c&&(c.textContent=gr(o).replace("{count}",String(t.length)));const l=s;let g=l.selectedIndex;g>=t.length&&(g=Math.max(0,t.length-1)),g<0&&(g=0),t.length>0&&ta(t[g]??{})==="loading"&&(g=za(t)),l.selectedIndex=g;const d=[...i.querySelectorAll(".gengage-chat-consulting-style-btn")];if(d.length===0)return!1;for(let p=0;p<t.length;p+=1){const u=t[p];let f=d[p];f?Ma(f,u,p,o):(f=document.createElement("button"),f.type="button",f.className="gengage-chat-consulting-style-btn gds-card",Ma(f,u,p,o),pr(f,n,i,p),i.appendChild(f),d[p]=f)}for(;i.querySelectorAll(".gengage-chat-consulting-style-btn").length>t.length;)i.lastElementChild?.remove();return i.querySelectorAll(".gengage-chat-consulting-style-btn").forEach((p,u)=>{p.classList.toggle("gengage-chat-consulting-style-btn--active",u===l.selectedIndex)}),Na(l,l.selectedIndex),!0}function dg(e){const t=[...e.children];for(let a=t.length-1;a>=0;a-=1){const n=t[a];if(n.classList.contains("gengage-chat-product-grid"))return n}return e.querySelector(":scope > .gengage-chat-product-grid")}function Ba(e){const t=typeof e.props?.source=="string"?e.props.source:void 0,a=(Array.isArray(e.props?.styleVariations)?e.props.styleVariations:[]).filter(n=>typeof n.style_label=="string"&&n.style_label.trim().length>0);return{isConsulting:fn(t)&&a.length>0,source:t,styleVariations:a}}function pg(e,t,a,n){lg(e,t,a.styleVariations,n)}function hg(e){return!e.isConsulting||e.styleVariations.length===0?!0:e.styleVariations.some(t=>(typeof t.status=="string"?t.status:"ready")!=="loading")}function ug(e,t,a){return!t.isConsulting||!t.source?!1:gg(e,t.styleVariations,a)}var mg=`<svg width="28" height="28" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
47
|
+
`,document.head.appendChild(t)}var zt=null;function Io(){if(zt!==null)return zt;try{zt=localStorage.getItem("gengage:debug")==="1"}catch{zt=!1}return zt}function Je(t,e,a){if(!Io())return;const n=[`[gengage:${t}]`,e];a!==void 0&&n.push(a),console.debug(...n)}var No=("0.7.0".trim(),"0.7.0".trim()),zo=("iife-build".trim(),"iife-build".trim());function Mo(){typeof window>"u"||(window.gengage||(window.gengage={}),window.gengage.__internal||(window.gengage.__internal={}),!window.gengage.__internal.sdkRuntimeInfoLogged&&(window.gengage.__internal.sdkRuntimeInfoLogged=!0,console.info(`[gengage] @gengage/assistant-fe v${No} (${zo})`)))}var Bo=class{constructor(){this.isVisible=!1,this.isInitialised=!1,this._handlers=new Map,this._cleanups=[],this._ownsRoot=!1,this._destroying=!1}async init(t){if(this.isInitialised){console.warn("[gengage] Widget already initialised. Call update() instead.");return}const e=bo(t.theme);Mo(),this.config={...t,theme:e,session:fo(t.session)},this.root=this._resolveMount(t.mountTarget),this._applyTheme(e),ko();const a=ln("gengage:context:update",n=>this.update(n));this._cleanups.push(a),Je("lifecycle",`${this.constructor.name}.init`,{accountId:t.accountId,sku:t.pageContext?.sku});try{await this.onInit(this.config)}catch(n){throw this.destroy(),n}this._destroying||(this.isInitialised=!0,Je("lifecycle",`${this.constructor.name} ready`),this.emit("ready"))}update(t){this.isInitialised&&(this.config.pageContext?this.config={...this.config,pageContext:{...this.config.pageContext,...t}}:t.pageType!==void 0&&(this.config={...this.config,pageContext:t}),this.onUpdate(t),this.emit("context-update",this.config.pageContext))}show(){this.isVisible||(this.isVisible=!0,this.root.style.display="",this.onShow(),this.emit("show"))}hide(){this.isVisible&&(this.isVisible=!1,this.root.style.display="none",this.onHide(),this.emit("hide"))}destroy(){this._destroying||(this._destroying=!0,this.emit("destroy"),this._cleanups.forEach(t=>t()),this._cleanups.length=0,this._handlers.clear(),this.onDestroy(),this._cleanupRoot(),this.isInitialised=!1)}_cleanupRoot(){this._ownsRoot?this.root.remove():this.root.innerHTML=""}on(t,e){return this._handlers.has(t)||this._handlers.set(t,new Set),this._handlers.get(t).add(e),()=>this._handlers.get(t)?.delete(e)}emit(t,...e){this._handlers.get(t)?.forEach(a=>a(...e))}addCleanup(t){this._cleanups.push(t)}_resolveMount(t){if(t instanceof HTMLElement)return t;if(typeof t=="string"){const a=document.querySelector(t);if(!a)throw new Error(`[gengage] Mount target not found: "${t}"`);return a}const e=document.createElement("div");return e.dataset.gengageWidget=this.constructor.name.toLowerCase(),document.body.insertBefore(e,document.body.firstChild),this._ownsRoot=!0,e}_applyTheme(t){if(t){for(const[e,a]of Object.entries(t))if(a!==void 0){const n=e.startsWith("--")?e:`--gengage-${Ro(e)}`;this.root.style.setProperty(n,a)}}}};function Ro(t){return t.replace(/([A-Z])/g,"-$1").toLowerCase()}function un(){const t=Date.now(),e=new Uint8Array(16);crypto.getRandomValues(e),e[0]=t/2**40&255,e[1]=t/2**32&255,e[2]=t/2**24&255,e[3]=t/2**16&255,e[4]=t/2**8&255,e[5]=t&255,e[6]=e[6]&15|112,e[8]=e[8]&63|128;const a=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return`${a.slice(0,8)}-${a.slice(8,12)}-${a.slice(12,16)}-${a.slice(16,20)}-${a.slice(20)}`}var Oo=class{constructor(t){this._handlers=new Map,this._destroyed=!1,this._namespace=t.namespace,this._allowedOrigins=t.allowedOrigins??[location.origin],this._onMessage=t.onMessage,this._allowedOrigins.includes("*")&&wa()&&console.warn("[gengage] postMessage bridge using wildcard origin. Set allowedOrigins for production security."),this._messageListener=e=>this._handlePostMessage(e),window.addEventListener("message",this._messageListener)}send(t,e){if(this._destroyed)return;const a={namespace:this._namespace,type:t};e!==void 0&&(a.payload=e),window.dispatchEvent(new CustomEvent("gengage:bridge:message",{detail:a,bubbles:!1}))}on(t,e){this._handlers.has(t)||this._handlers.set(t,new Set);const a=this._handlers.get(t);return a.add(e),()=>{a.delete(e),a.size===0&&this._handlers.delete(t)}}destroy(){this._destroyed||(this._destroyed=!0,window.removeEventListener("message",this._messageListener),this._handlers.clear())}_handlePostMessage(t){if(this._destroyed||!this._isOriginAllowed(t.origin))return;const e=t.data;if(!Fo(e)||e.gengage!==this._namespace)return;const a={type:e.type};if(e.payload!==void 0&&(a.payload=e.payload),this._onMessage)try{this._onMessage(a)}catch(r){wa()&&console.warn("[gengage] postMessage onMessage handler threw:",r)}const n=this._handlers.get(a.type);if(n)for(const r of n)try{r(a.payload)}catch(i){wa()&&console.warn(`[gengage] postMessage handler for "${a.type}" threw:`,i)}}_isOriginAllowed(t){return this._allowedOrigins.includes("*")?!0:this._allowedOrigins.includes(t)}};function Fo(t){if(typeof t!="object"||t===null)return!1;const e=t;return typeof e.gengage=="string"&&typeof e.type=="string"}function wa(){try{return typeof process<"u"&&process.env.NODE_ENV!=="production"}catch{return!1}}function ka(t,e){if(typeof window>"u"||!ye(t))return!1;const a=new CustomEvent("gengage:navigate",{detail:e===void 0?{url:t}:{url:t,newTab:e},cancelable:!0});return window.dispatchEvent(a)?(e?window.open(t,"_blank","noopener,noreferrer"):window.location.href=t,!0):!1}var $o=console;function Do(t,e,a={}){const n=t.action,r=a.logger??$o;switch(Je("action",`routing action: ${n.kind}`,n),n.kind){case"open_chat":e.openChat?.(n.payload);return;case"navigate":{if(typeof n.url!="string"){_t(n,e,a,r);return}if(!ye(n.url)){r.warn("[gengage] Blocked navigation to unsafe URL:",n.url);return}const i=typeof n.newTab=="boolean"?n.newTab:void 0;if(e.navigate){e.navigate({url:n.url,...i!==void 0&&{newTab:i}});return}(a.defaultNavigate??Ho)(n.url,i);return}case"save_session":if(typeof n.sessionId!="string"||typeof n.sku!="string"){_t(n,e,a,r);return}e.saveSession?.({sessionId:n.sessionId,sku:n.sku});return;case"add_to_cart":if(typeof n.sku!="string"||typeof n.quantity!="number"||typeof n.cartCode!="string"){_t(n,e,a,r);return}e.addToCart?.({sku:n.sku,quantity:n.quantity,cartCode:n.cartCode});return;case"script_call":{if(a.allowScriptCall===!1){_t(n,e,a,r);return}if(typeof n.name!="string"){_t(n,e,a,r);return}const i=Uo(n.payload)?n.payload:void 0;e.scriptCall?.({name:n.name,...i!==void 0&&{payload:i}});return}default:_t(n,e,a,r)}}function _t(t,e,a,n){const r=a.unknownActionPolicy??"log-and-ignore";if(r==="delegate"){e.unknown?.(t),e.unknown||n.warn("[gengage] Unknown action received without delegate handler",t);return}if(r==="throw")throw new Error(`[gengage] Unknown action kind: ${t.kind}`);n.warn("[gengage] Unknown action ignored",t)}function Ho(t,e){if(!(typeof window>"u")){if(!ye(t)){console.warn("[gengage] Blocked navigation to unsafe URL:",t);return}ka(t,e)}}function Uo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Mt(t){const e=t?.trim();return e||"tr"}function Ae(t){const e=globalThis.CSS?.escape;if(typeof e=="function")return e(t);const a=Array.from(t);return a.map((n,r)=>{const i=n.codePointAt(0);return i===void 0?"":i===0?"�":i>=1&&i<=31||i===127||r===0&&i>=48&&i<=57||r===1&&a[0]==="-"&&i>=48&&i<=57?`\\${i.toString(16)} `:r===0&&n==="-"&&a.length===1?"\\-":i>=128||/[A-Za-z0-9_-]/.test(n)?n:`\\${n}`}).join("")}var jo=["image/jpeg","image/png","image/webp"],qf=5*1024*1024;function qo(t){return jo.includes(t.type)?t.size>5242880?{ok:!1,reason:"too_large"}:{ok:!0}:{ok:!1,reason:"invalid_type"}}function mn(t){return typeof t=="object"&&t!==null&&typeof t.type=="string"}function Zo(t){const e=[];let a=0,n=!1,r=!1,i=0;for(let o=0;o<t.length;o++){const s=t[o];if(r){r=!1;continue}if(s==="\\"&&n){r=!0;continue}if(s==='"'){n=!n;continue}n||(s==="{"&&a++,s==="}"&&(a--,a===0&&(e.push(t.slice(i,o+1)),i=o+1)))}return e.length>0?e:[t]}function fn(t,e){const a=t.trim();if(!a||a.startsWith(":"))return!1;const n=a.startsWith("data: ")?a.slice(6):a;if(n==="[DONE]")return e.onDone?.(),!0;try{const r=JSON.parse(n);return mn(r)?(Je("stream",`event: ${r.type}`,r),e.onEvent(r),r.type==="done"?(e.onDone?.(),!0):!1):!1}catch{const r=Zo(n);if(r.length>=1){let i=!1;for(const o of r)try{const s=JSON.parse(o);if(!mn(s))continue;if(i=!0,e.onEvent(s),s.type==="done")return e.onDone?.(),!0}catch{r.length>1}if(i)return!1}return!1}}async function Vo(t,e){if(!t.ok){e.onError?.(new Error(`HTTP ${t.status}: ${t.statusText}`));return}if(!t.body){e.onError?.(new Error("Response body is null — streaming not supported"));return}const a=t.body.getReader(),n=new TextDecoder("utf-8");let r="";const i=e.idleTimeoutMs??12e4,o=Symbol("idle-timeout");let s=!1;try{for(;;){const c=a.read();let l;const d=await(i>0?Promise.race([c.finally(()=>clearTimeout(l)),new Promise(m=>{l=setTimeout(()=>m(o),i)})]):c);if(d===o){s=!0,await a.cancel();break}const{done:g,value:p}=d;if(g)break;r+=n.decode(p,{stream:!0});const u=r.split(`
|
|
48
|
+
`);r=u.pop()??"";for(const m of u)if(fn(m,e))return}if(r+=n.decode(),r.trim()&&fn(r,e))return}catch(c){if(c instanceof DOMException&&c.name==="AbortError")return;e.onError?.(c instanceof Error?c:new Error(String(c)))}finally{s||a.releaseLock()}e.onDone?.()}var bn=3,Go=(t,e)=>{const a=t.replace(/\s+/g," ").trim().replace(/^[,.;:!?•-]+|[,.;:!?•-]+$/g,"");if(!a)return"";const n=e?.stripLeadingStopWords?a.replace(/^(?:daha|için)\s+/i,"").trim():a;return n?n.split(/\s+/).slice(0,3).join(" ").trim():""},Sa=(t,e)=>t?t.split(/[•,;:/()]|(?:\sve\s)|(?:\sand\s)|(?:\sile\s)|(?:\sfor\s)|(?:\swith\s)/i).map(a=>Go(a,e)).filter(Boolean):[];function Wo(t){const e=(t.display_keywords??[]).flatMap(r=>Sa(r,{stripLeadingStopWords:!0})),a=e.filter((r,i)=>e.indexOf(r)===i);if(a.length>0)return a.slice(0,bn);const n=[...Sa(t.chosen_attribute,{stripLeadingStopWords:!0}),...Sa(t.short_name)];return n.filter((r,i)=>n.indexOf(r)===i).slice(0,bn)}function Ko(t){return Wo(t).join(" • ")}function vn(t){return t==="beauty_consulting"||t==="account_expert"}function Bt(...t){for(const e of t){if(typeof e!="string")continue;const a=e.trim();if(a.length>0)return a}}function Rt(t){return Array.isArray(t)?t.filter(e=>typeof e=="string"&&e.trim().length>0).map(e=>e.trim()):[]}function wt(t){const e={...t},a=Bt(e.sku),n=Rt(e.group_skus);if(a?e.sku=a:delete e.sku,n.length>0?e.group_skus=n:delete e.group_skus,a||n.length>0)delete e.image_url;else{const r=Bt(e.image_url);r?e.image_url=r:delete e.image_url}return e}function Yo(t){if(typeof t.type!="string")return null;if(t.payload==null&&(t.payload={}),Jo(t))return t;const e=t;switch(e.type){case"outputText":return Xo(e);case"suggestedActions":return Qo(e);case"productList":return es(e);case"productDetails":return ts(e);case"productDetailsSimilars":return as(e);case"comparisonTable":return ns(e);case"context":return ss(e);case"chatStreamEnd":return cs();case"loading":return ls(e);case"panelLoading":return ds(e);case"similarLoading":return gs(e);case"redirect":return ps(e);case"error":return hs(e);case"dummy":return us(e);case"launcherAction":return ms(e);case"text":return Ca(e);case"productItem":return fs(e);case"text_image":return yn(e);case"quick_qna":return xn(e);case"reviewHighlights":return bs(e);case"aiProductSuggestions":return vs(e);case"aiProductGroupings":return ys(e);case"aiSuggestedSearches":return ws(e);case"getGroundingReview":return ks(e);case"voice":return Ss(e);case"uiSpec":return Ns(e);default:return null}}function Jo(t){const e=t.type;if(typeof e!="string")return!1;switch(e){case"metadata":return typeof t.sessionId=="string"&&typeof t.model=="string";case"text_chunk":return typeof t.content=="string";case"ui_spec":{const a=t.widget;if(a!=="chat"&&a!=="qna"&&a!=="simrel")return!1;const n=me(t.spec);return n?typeof n.root=="string"&&me(n.elements)!==null:!1}case"action":{const a=me(t.action);return a!==null&&typeof a.kind=="string"}case"error":return typeof t.code=="string"&&typeof t.message=="string";case"done":return!0;default:return!1}}function Xo(t){const e=ne(t.payload.text,t.payload.plain_text)??"",a=ne(t.payload.plain_text,t.payload.text)??e;if(t.payload.is_error)return{type:"error",code:"BACKEND_ERROR",message:a||"Backend returned an error"};const n={type:"text_chunk",content:e,final:!0},r=t.payload.sku_to_product_item;r&&typeof r=="object"&&!Array.isArray(r)&&(n.skuToProductItem=r);const i=t.payload.product_mentions;Array.isArray(i)&&i.length>0&&(n.productMentions=i.map(c=>{if(typeof c!="object"||c===null||typeof c.sku!="string")return null;const l=typeof c.short_name=="string"?c.short_name:"";if(!l)return null;const d=(typeof c.url=="string"&&c.url.trim()?c.url.trim():void 0)??(()=>{const g=n.skuToProductItem?.[c.sku];return typeof g?.url=="string"&&g.url.trim()?g.url.trim():void 0})();return d?{sku:c.sku,short_name:l,url:d}:{sku:c.sku,short_name:l}}).filter(c=>c!==null));const o=t.payload.conversation_mode;typeof o=="string"&&o&&(n.conversationMode=o);const s=t.payload.render_hint;return typeof s=="string"&&s&&(n.renderHint=s),t.payload.kvkk===!0&&(n.kvkk=!0),n}function Qo(t){return _n((t.payload.actions??[]).map(e=>{if(!me(e))return null;const a=ne(e.title)??"",n=Ze(e.requestDetails,a),r=n?{label:a,action:n}:null;return r?(typeof e.icon=="string"&&(r.icon=e.icon),typeof e.image=="string"&&(r.image=e.image),r):null}).filter(ht),"chat")}function es(t){const e=Array.isArray(t.payload.grouped_assignment)?t.payload.grouped_assignment:[],a=(Array.isArray(t.payload.style_variations)?t.payload.style_variations:[]).map(s=>{if(!me(s))return null;const c=ne(s.style_label);if(!c)return null;const l=ne(s.style_mood),d=ne(s.image_url??void 0),g=(Array.isArray(s.product_list)?s.product_list:[]).map(u=>{const m=me(u);return m?Ta(me(m.product_detail)??me(m.product)??m):null}).filter(ht),p=Array.isArray(s.recommendation_groups)?s.recommendation_groups.map(u=>me(u)?{label:ne(u.label)??"",reason:ne(u.reason)??"",skus:Array.isArray(u.skus)?u.skus.filter(m=>typeof m=="string"&&m.trim().length>0):[]}:null).filter(ht):[];return{style_label:c,style_mood:l??"",...d?{image_url:d}:{},...typeof s.status=="string"?{status:s.status}:{},product_list:g,recommendation_groups:p}}).filter(ht),n=t.payload.product_list??[],r=vn(t.payload.source)&&a.length>0?a[0].product_list:null,i=r?Es(r,"chat"):e.length>0?Cs(e,n,"chat")??Pa(n,"chat"):Pa(n,"chat");i.panelHint="panel";const o=i.spec.elements[i.spec.root];if(o){const s={};typeof t.payload.offset=="number"&&(s.offset=t.payload.offset),typeof t.payload.end_of_list=="boolean"&&(s.endOfList=t.payload.end_of_list),typeof t.payload.title=="string"&&(s.panelTitle=t.payload.title),typeof t.payload.source=="string"&&(s.source=t.payload.source),a.length>0&&(s.styleVariations=a),t.payload.replace_panel===!0&&(s.replacePanel=!0),(t.payload.ranking_state==="pending"||t.payload.ranking_state==="final")&&(s.rankingState=t.payload.ranking_state);const c=t.payload.sequence_id??t.payload.search_id;typeof c=="string"&&c.length>0&&(s.sequenceId=c),Object.keys(s).length>0&&(o.props={...o.props,...s})}return i}function ts(t){const e=t.payload.productDetails;if(!e)return Ts("chat");const a=kt(e);return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:{...e,...a}}}}},panelHint:"panel"}}function as(t){const e=Pa(t.payload.similarProducts??[],"chat"),a=e.spec.elements[e.spec.root];return a&&(a.props={...a.props,similarsAppend:!0}),{...e,panelHint:"panel"}}function ns(t){const e=t.payload.multiple_product_details??[],a=t.payload,n={key_differences:a.key_differences,recommended_choice:a.recommended_choice,recommended_choice_sku:a.recommended_choice_sku,special_considerations:a.special_considerations,criteria_view:a.criteria_view,criteria_view_short:a.criteria_view_short,compared_field_names:a.compared_field_names,winner_product:a.winner_product,winner_hits:a.winner_hits,...t.payload.product_comparison_framework??{}},r=t.payload.table,i=t.payload.features_list,o=[];for(const b of e){const h=kt(b);o.push(h)}const s=rs(r,o,n,i);let c;n?.recommended_choice_sku?c=n.recommended_choice_sku:n?.winner_product&&n.winner_product.length>0&&(c=n.winner_product[0]?.product_detail?.sku??n.winner_product[0]?.sku);const l=c?o.find(b=>b.sku===c)??o[0]:o[0],d=[];if(Array.isArray(n?.key_differences))for(const b of n.key_differences)typeof b=="string"&&d.push(b);const g=wn(n?.special_considerations),p=n?.recommended_choice,u=n?.winner_hits,m={};for(const b of o){const h=b.sku;h&&(m[h]={title:b.name??h,type:"launchSingleProduct",payload:{sku:h}})}const f={products:o,attributes:s,highlights:d,productActions:m};return l&&(f.recommended=l),g.length>0&&(f.specialCases=g),p&&(f.recommendedText=p),u&&(f.winnerHits=u),typeof n?.key_differences=="string"&&(f.keyDifferencesHtml=n.key_differences),n?.special_considerations&&(f.specialConsiderations=n.special_considerations),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ComparisonTable",props:f}}},panelHint:"panel"}}function rs(t,e,a,n){if(!t)return[];const r=Object.entries(t);if(r.length===0)return[];const i=r[0]?.[1];if(Array.isArray(i)){const p=me(a.criteria_view)??me(a.criteria_view_short)??{},u=(Array.isArray(a.compared_field_names)?a.compared_field_names:[]).filter(b=>typeof b=="string"),m=u.length>0?u:Object.keys(t),f=[];for(const b of m){const h=t[b];if(!h||!Array.isArray(h))continue;const y=p[b],x=typeof y=="string"&&y?y:b;f.push({label:x,values:h.map(v=>typeof v=="string"?v:String(v??""))})}return f}const o=t,s=e.map(p=>String(p.sku??"")).filter(p=>p.length>0),c=me(a.criteria_view)??me(a.criteria_view_short)??{},l=(Array.isArray(a.compared_field_names)?a.compared_field_names:[]).filter(p=>typeof p=="string"),d=(n&&n.length>0?n:l.length>0?l:is(o)).filter(p=>p!=="name"&&p!=="name_short"&&!p.endsWith("_short")),g=[];for(const p of d){const u=s.map(b=>{const h=o[b];if(!h||typeof h!="object")return"";const y=h[`${p}_short`],x=h[p];return os(y??x)});if(u.every(b=>b.length===0))continue;const m=c[p],f=typeof m=="string"&&m?m:p;g.push({label:f,values:u})}return g}function is(t){const e=[],a=new Set;for(const n of Object.values(t))if(!(!n||typeof n!="object"))for(const r of Object.keys(n))a.has(r)||(a.add(r),e.push(r));return e}function os(t){return typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):""}function ss(t){return{type:"metadata",sessionId:"",model:"",meta:{panel:t.payload.panel,messages:t.payload.messages,message_id:t.payload.message_id}}}function cs(){return{type:"done"}}function ls(t){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,loadingText:t.payload.text,thinkingMessages:t.payload.thinking_messages,dynamicLoading:t.payload.is_dynamic===!0}}}function ds(t){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,panelLoading:!0,panelPendingType:t.payload?.pending_type,loadingText:t.payload?.text}}}function gs(t){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,similarPanelLoading:!0,panelPendingType:t.payload?.pending_type,loadingText:t.payload?.text}}}function ps(t){const e=ne(t.payload.url);return e?{type:"action",action:{kind:"navigate",url:e,newTab:t.payload.new_tab===!0}}:{type:"metadata",sessionId:"",model:"",meta:{redirect:t.payload,redirectTarget:ne(t.payload.to)}}}function hs(t){return{type:"error",code:"BACKEND_ERROR",message:ne(t.payload?.text,t.payload?.message,t.payload?.error)??"Backend returned an error"}}function us(t){return{type:"metadata",sessionId:"",model:"",meta:{noop:!0}}}function ms(t){const e=t.payload??{};if(Array.isArray(e.action_list)){const r={action_list:e.action_list},i=typeof e.type=="string"?e.type:void 0,o=typeof e.theme=="string"?e.theme:void 0;return i!==void 0&&(r.type=i),o!==void 0&&(r.theme=o),xn({type:"quick_qna",payload:r})}const a=me(e.action);if(a){const r={action:a},i=typeof e.text=="string"?e.text:void 0,o=typeof e.image_url=="string"?e.image_url:void 0,s=typeof e.theme=="string"?e.theme:void 0;return i!==void 0&&(r.text=i),o!==void 0&&(r.image_url=o),s!==void 0&&(r.theme=s),yn({type:"text_image",payload:r})}const n=typeof e.text=="string"?e.text:"";if(n){const r={text:n},i=typeof e.type=="string"?e.type:void 0,o=typeof e.theme=="string"?e.theme:void 0,s=me(e.payload)??void 0;return i!==void 0&&(r.type=i),s!==void 0&&(r.payload=s),o!==void 0&&(r.theme=o),Ca({type:"text",payload:r})}return{type:"metadata",sessionId:"",model:"",meta:{launcherAction:e}}}function Ca(t){const e={text:ne(t.payload.text)??""};return typeof t.payload.theme=="string"&&(e.theme=t.payload.theme),t.payload.payload!==void 0&&(e.payload=t.payload.payload),{type:"ui_spec",widget:"qna",spec:{root:"root",elements:{root:{type:"QuestionHeading",props:e}}}}}function fs(t){return Ps(t.payload,"qna")}function yn(t){const e=ne(t.payload.text)??"",a=Ze(t.payload.action,e);if(a){const r={label:e||a.title,action:a};return typeof t.payload.image_url=="string"&&(r.image=t.payload.image_url),typeof t.payload.theme=="string"&&(r.theme=t.payload.theme),{type:"ui_spec",widget:"qna",spec:{root:"root",elements:{root:{type:"ActionButton",props:r}}}}}const n={text:e};return typeof t.payload.theme=="string"&&(n.theme=t.payload.theme),Ca({type:"text",payload:n})}function xn(t){return _n((t.payload.action_list??[]).map(e=>{if(!me(e))return null;const a=ne(e.title)??"",n=Ze(e.requestDetails,a),r=n?{label:a,action:n}:null;return r?(typeof e.icon=="string"&&(r.icon=e.icon),typeof e.image=="string"&&(r.image=e.image),r):null}).filter(ht),"qna")}function bs(t){const e={reviews:(t.payload.reviews??[]).map(a=>{if(!me(a))return null;const n={};return typeof a.review_class=="string"&&(n.review_class=a.review_class),typeof a.review_text=="string"&&(n.review_text=a.review_text),(typeof a.review_rating=="string"||typeof a.review_rating=="number")&&(n.review_rating=a.review_rating),typeof a.review_tag=="string"&&(n.review_tag=a.review_tag),n}).filter(ht)};return typeof t.payload.sku=="string"&&(e.sku=t.payload.sku),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ReviewHighlights",props:e}}}}}function vs(t){const e=t.payload.product_suggestions??[],a=[];for(let n=0;n<e.length;n++){const r=e[n];if(!r)continue;const i=As(r);if(!i)continue;const o={product:i},s=Ze(r.requestDetails,i.name);s&&(o.action=s),typeof r.role=="string"&&(o.role=r.role),typeof r.reason=="string"&&(o.reason=r.reason),typeof r.review_highlight=="string"&&(o.reviewHighlight=r.review_highlight),Array.isArray(r.labels)&&(o.labels=r.labels),typeof r.expert_quality_score=="number"&&(o.expertQualityScore=r.expert_quality_score),a.push(o)}return a.length===0?{type:"metadata",sessionId:"",model:"",meta:{aiProductSuggestions:t.payload.product_suggestions??[]}}:{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"AITopPicks",props:{suggestions:a}}}}}}function ys(t){const e=t.payload.product_groupings??[],a=[],n=[];for(let r=0;r<e.length;r++){const i=e[r];if(!i)continue;const o=ne(i.name)??"",s=ne(i.description),c=ne(i.highlight),l=Array.isArray(i.labels)?wn(i.labels):[],d=ne(i.sku,i.repr_sku),g=ne(i.image,i.repr_image),p=xs(i,o,d),u=(Array.isArray(i.group_products)?i.group_products:[]).map(b=>{const h=me(b);return h?Ta(h):null}).filter(ht),m=g??ne(...u.map(b=>b.imageUrl));if(o&&u.length>0){const b={groupName:o,products:u};m&&(b.image=m),s&&(b.description=s),c&&(b.highlight=c),l.length>0&&(b.labels=l),a.push(b)}if(!p)continue;const f={name:o,action:p};l.length>0&&(f.labels=l),g!==void 0&&(f.image=g),n.push(f)}return a.length>0?{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"CategoriesContainer",props:{groups:a}}}},panelHint:"panel"}:n.length===0?{type:"metadata",sessionId:"",model:"",meta:{aiProductGroupings:t.payload.product_groupings??[]}}:{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"AIGroupingCards",props:{entries:n}}}}}}function xs(t,e,a){const n=me(t.requestDetails);if(n){if(n.type!=="findSimilar")return Ze(n,e);const o={...me(n.payload)??{}};a&&!Bt(o.sku)&&(o.sku=a);const s=Rt(t.group_skus);return s.length>0&&(o.group_skus=s),Ze({...n,payload:wt(o)},e)}const r={};a&&(r.sku=a);const i=Rt(t.group_skus);return i.length>0&&(r.group_skus=i),Object.keys(r).length===0?null:Ze({type:"findSimilar",payload:wt(r)},e)}function _s(t,e){const a=me(t.requestDetails),n=me(a?.payload),r=ne(t.detailed_user_message),i=t.group_skus&&Array.isArray(t.group_skus)?Rt(t.group_skus):Rt(n?.group_skus),o=ne(t.sku,t.representative_product_sku,n?.sku);if(a?.type==="findSimilar"){const c={...n??{}};return o&&(c.sku=o),i.length>0&&(c.group_skus=i),r&&(c.input=r,Bt(c.text)||(c.text=r)),c.is_search_suggestion=1,Ze({...a,payload:wt(c)},e)}if(o){const c={sku:o,is_search_suggestion:1};return i.length>0&&(c.group_skus=i),r&&(c.input=r,c.text=r),Ze({type:"findSimilar",payload:wt(c)},e)}const s={...n??{},is_suggested_text:1,is_search_suggestion:1};return r&&!Bt(s.text)&&(s.text=r),i.length>0&&(s.group_skus=i),Ze(a?.type==="inputText"?{...a,payload:s}:{type:"inputText",payload:s},e)}function ws(t){const e=t.payload.suggested_searches??[],a=[];for(let n=0;n<e.length;n++){const r=e[n];if(!r)continue;const i=ne(r.short_name,r.chosen_attribute,r.detailed_user_message)??`Search ${n+1}`,o=_s(r,i);if(!o)continue;const s={shortName:i,action:o},c=ne(r.detailed_user_message);c&&c!==i&&(s.detailedMessage=c);const l=Ko(r);l&&l!==i&&l!==(c??"")&&(s.whyDifferent=l),typeof r.image=="string"&&(s.image=r.image),a.push(s)}return a.length===0?{type:"metadata",sessionId:"",model:"",meta:{aiSuggestedSearches:t.payload.suggested_searches??[]}}:{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"AISuggestedSearchCards",props:{entries:a}}}}}}function ks(t){const e=t.payload,a=Ze(e.requestDetails??e.request_details,ne(e.review_count,e.reviewCount,e.text,e.title)??"Show product reviews");if(!a)return{type:"metadata",sessionId:"",model:"",meta:{groundingReview:e}};const n={action:a};return e.title&&(n.title=e.title),e.text&&(n.text=e.text),e.review_count?n.reviewCount=e.review_count:typeof e.reviewCount=="string"&&e.reviewCount.trim()&&(n.reviewCount=e.reviewCount),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"GroundingReviewCard",props:n}}}}}function Ss(t){return{type:"metadata",sessionId:"",model:"",meta:{voice:t.payload}}}function Ea(t,e){const a={product:t,index:e},n=t,r=typeof n.sku=="string"?n.sku:void 0;return r&&(a.action={title:typeof n.name=="string"?n.name:"",type:"launchSingleProduct",payload:{sku:r}}),{type:"ProductCard",props:a}}function _n(t,e){const a={},n=[];for(let r=0;r<t.length;r++){const i=t[r];if(!i)continue;const o=`action-${r}`;n.push(o);const s={label:i.label,action:i.action};i.icon!==void 0&&(s.icon=i.icon),i.image!==void 0&&(s.image=i.image),i.description!==void 0&&(s.description=i.description),a[o]={type:"ActionButton",props:s}}return a.root={type:"ActionButtons",props:{buttons:t.map(r=>{const i={label:r.label,action:r.action};return r.image!==void 0&&(i.image=r.image),r.description!==void 0&&(i.description=r.description),r.icon!==void 0&&(i.icon=r.icon),i})},children:n},{type:"ui_spec",widget:e,spec:{root:"root",elements:a}}}function Pa(t,e){const a={},n=[];for(let r=0;r<t.length;r++){const i=t[r];if(!i)continue;const o=kt(i),s=`product-${r}`;n.push(s),a[s]=Ea(o,r)}return a.root={type:"ProductGrid",props:{layout:"grid"},children:n},{type:"ui_spec",widget:e,spec:{root:"root",elements:a}}}function Cs(t,e,a){const n=new Map;for(const l of e)l?.sku&&n.set(l.sku,l);if(n.size===0)return null;const r=new Set,i={},o=[],s=[];let c=0;for(let l=0;l<t.length;l++){const d=t[l],g=ne(d?.title)??"",p=Array.isArray(d?.skus)?d.skus:[],u=[];for(let m=0;m<p.length;m++){const f=typeof p[m]=="string"?p[m].trim():"";if(!f||r.has(f))continue;const b=n.get(f);if(!b)continue;r.add(f);const h=`product-${l}-${m}`,y=kt(b);o.push(h),u.push(h),i[h]=Ea(y,c),c+=1}u.length>0&&s.push({title:g,children:u})}return s.length===0||r.size<n.size?null:(i.root={type:"ProductGrid",props:{layout:"grouped",productSections:s},children:o},{type:"ui_spec",widget:a,spec:{root:"root",elements:i}})}function Es(t,e){const a={},n=[];for(let r=0;r<t.length;r++){const i=t[r];if(!i)continue;const o=`product-${r}`;n.push(o),a[o]=Ea(i,r)}return a.root={type:"ProductGrid",props:{layout:"grid"},children:n},{type:"ui_spec",widget:e,spec:{root:"root",elements:a}}}function Ps(t,e){return{type:"ui_spec",widget:e,spec:{root:"root",elements:{root:{type:"ProductCard",props:{product:kt(t),index:0}}}}}}function Ts(t){return{type:"ui_spec",widget:t,spec:{root:"root",elements:{root:{type:"ActionButtons",props:{buttons:[]},children:[]}}}}}function As(t){const e=ne(t.sku),a=ne(t.short_name),n={...me(t.product_item)??t},r=ne(t.discount_reason,t.discountReason);return r&&!ne(n.discount_reason,n.discountReason)&&(n.discount_reason=r),Ta(n,e,a)}function Ta(t,e,a){const n=ne(t.sku,e),r=ne(t.name,a);if(!n||!r)return null;const i={sku:n,name:r},o=ne(t.brand);o&&(i.brand=o);const s=ne(t.url);s&&(i.url=s);const c=Ls(t.images);if(c.length>0)i.images=c;else{const f=ne(t.image,t.image_url,t.imageUrl);f&&(i.images=[f])}const l=Ot(t.price_discounted);l!==void 0&&(i.price_discounted=l);const d=Ot(t.price);d!==void 0&&(i.price=d);const g=Ot(t.rating);g!==void 0&&(i.rating=g);const p=Ot(t.review_count)??Ot(t.reviewCount);p!==void 0&&(i.review_count=p);const u=ne(t.cart_code,t.cartCode);u&&(i.cart_code=u),typeof t.in_stock=="boolean"&&(i.in_stock=t.in_stock),typeof t.inStock=="boolean"&&(i.in_stock=t.inStock);const m=ne(t.discount_reason,t.discountReason);return m&&(i.discount_reason=m),kt(i)}function Ze(t,e){const a=me(t);if(!a)return null;const n=a.type;if(typeof n!="string"||n.length===0)return null;const r={title:e||n,type:n};return a.payload!==void 0&&(r.payload=a.payload),r}function me(t){return!t||typeof t!="object"||Array.isArray(t)?null:t}function ne(...t){for(const e of t)if(typeof e=="string"){const a=e.trim();if(a.length>0)return a}}function Ls(t){return Array.isArray(t)?t.filter(e=>typeof e=="string"&&e.length>0):[]}function wn(t){if(typeof t=="string"){const e=t.trim();return e?[e]:[]}return Array.isArray(t)?t.filter(e=>typeof e=="string").map(e=>e.trim()).filter(e=>e.length>0):[]}function Ot(t){if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"){if(!t.trim())return;let e;t.includes(".")&&t.includes(",")?e=t.replace(/\./g,"").replace(",","."):e=t.replace(",",".");const a=Number(e);if(Number.isFinite(a))return a}}function ht(t){return t!=null}var Is=new Set(["sku","name","brand","images","price","price_discounted","price_discount_rate","price_currency","discount_reason","url","rating","review_count","cart_code","in_stock","description","description_html","features","specifications","short_name","category_ids","category_names","variants","facet_hits","promotions"]);function kt(t){const e=t.price_discounted!=null&&t.price_discounted>0,a=e?t.price_discounted:t.price,n=e&&t.price!=null?t.price:void 0;let r;n!=null&&a!=null&&n>0?r=Math.round((n-a)/n*100):t.price_discount_rate!=null&&t.price_discount_rate>0&&(r=t.price_discount_rate);const i=ne(t.brand),o=ne(t.name)??t.sku,s=i&&!o.toLowerCase().startsWith(i.toLowerCase())?`${i} ${o}`:o,c={sku:t.sku,name:s,url:ne(t.url)??""},l=t.images?.[0];l&&(c.imageUrl=l),t.images&&t.images.length>1&&(c.images=t.images),a!=null&&a>0&&(c.price=String(a)),r!==void 0&&r>0&&(c.discountPercent=r,n!=null&&n>0&&(c.originalPrice=String(n))),i!==void 0&&(c.brand=i),t.rating!==void 0&&(c.rating=t.rating),t.review_count!==void 0&&(c.reviewCount=t.review_count),t.cart_code!==void 0&&(c.cartCode=t.cart_code),t.in_stock!==void 0&&(c.inStock=t.in_stock),t.variants&&t.variants.length>0&&(c.variants=t.variants),t.discount_reason!==void 0&&(c.discountReason=t.discount_reason),t.promotions&&t.promotions.length>0&&(c.promotions=t.promotions),t.description!==void 0&&(c.description=t.description),t.description_html!==void 0&&(c.descriptionHtml=t.description_html),t.features&&t.features.length>0&&(c.features=t.features),t.specifications!==void 0&&(c.specifications=t.specifications),t.facet_hits&&(c.facetHits=t.facet_hits),t.category_names&&t.category_names.length>0&&(c.categoryNames=t.category_names),t.short_name!==void 0&&(c.shortName=t.short_name);const d=t,g={};let p=!1;for(const u of Object.keys(d))Is.has(u)||(g[u]=d[u],p=!0);return p&&(c.extras=g),c}function Ns(t){const e=me(t.payload)??{},a=typeof e.type=="string"?e.type:"",{type:n,...r}=e;return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:a,props:r}}}}}var zs={process_action:"/process_action",launcher_action:"/launcher_action",similar_products:"/similar_products",product_groupings:"/product_groupings"};function Ms(t){if(t===void 0)throw new Error("[gengage] middlewareUrl is required. Pass your Gengage backend URL in widget config.");const e=t.trim();return e===""?"":e.replace(/\/+$/,"")}function Bs(t,e){return`${Ms(e?.middlewareUrl)}/chat${zs[t]}`}function Rs(t){if(!(typeof window>"u"||!t))try{const e=window.GengageAssistantInjector?.[t]?.streamTransport;return typeof e=="function"?e:void 0}catch{return}}var Os=7200*1e3,kn=200,Fs=5*1024*1024,$s="gengage_request_response_cache",Ds=1,Xe="responses",Hs=new Set(["addToCart","like"]),Qe=new Map,Sn=null;async function Us(t,e={},a={}){const n=js(t,e);if(!n)return fetch(t,e);const r=Date.now(),i=await Gs(n,r);if(i)return Ys(i);const o=await fetch(t,e);return o.ok&&Ws(n,o.clone(),r,{ttlMs:a.ttlMs??Os,maxEntries:a.maxEntries??kn,maxBodyBytes:a.maxBodyBytes??Fs}),o}function js(t,e={}){if(typeof Request<"u"&&t instanceof Request)return null;const a=String(e.method||"GET").toUpperCase();if(a!=="POST"||typeof e.body!="string")return null;const n=qs(e.body);if(Zs(n))return null;const r=Vs(n);if(r){const i=Ft(n?.action);return`rr:${Tn(Pn({url:String(t),method:a,headers:Cn(e.headers),type:n?.type??i?.type??"",account_id:n?.account_id??n?.accountId??"",locale:n?.locale??"",outputLanguage:Ft(n?.meta)?.outputLanguage??"",cache_key:r}))}`}return`rr:${Tn(Pn({url:String(t),method:a,headers:Cn(e.headers),body:e.body}))}`}function qs(t){try{const e=JSON.parse(t);return!e||typeof e!="object"||Array.isArray(e)?null:e}catch{return null}}function Zs(t){const e=t?.type;return typeof e=="string"&&Hs.has(e)}function Vs(t){const e=(Ft(t?.payload)??Ft(Ft(t?.action)?.payload))?.cache_key;return typeof e=="string"&&e.trim().length>0?e.trim():null}async function Gs(t,e){const a=Qe.get(t);if(a)if(a.expiresAt<=e)Qe.delete(t);else return a.lastAccessedAt=e,Qe.delete(t),Qe.set(t,a),Aa(a),a;const n=await Xs(t);return n?n.expiresAt<=e?(Qe.delete(t),Qs(t),null):(n.lastAccessedAt=e,Qe.set(t,n),Aa(n),En(kn),n):null}async function Ws(t,e,a,n){try{const r=await e.text();if(tc(r)>n.maxBodyBytes||Ks(r))return;const i={key:t,status:e.status,statusText:e.statusText,headers:Js(e.headers),body:r,createdAt:a,expiresAt:a+n.ttlMs,lastAccessedAt:a};Qe.set(t,i),En(n.maxEntries),await Aa(i),await ec(n.maxEntries,a)}catch{}}function Ks(t){return/"_error"\s*:/u.test(t)||/"type"\s*:\s*"error"/u.test(t)}function Ys(t){return new Response(t.body,{status:t.status,statusText:t.statusText,headers:new Headers(t.headers)})}function Cn(t){const e=new Headers(t),a=[];return e.forEach((n,r)=>{const i=r.toLowerCase();i!=="authorization"&&i!=="cookie"&&a.push([i,n])}),a.sort(([n],[r])=>n.localeCompare(r))}function Js(t){const e=[];return t.forEach((a,n)=>{const r=n.toLowerCase();r!=="set-cookie"&&e.push([r,a])}),e.sort(([a],[n])=>a.localeCompare(n))}function En(t){for(;Qe.size>t;){const e=[...Qe.values()].sort((a,n)=>a.lastAccessedAt-n.lastAccessedAt)[0];if(!e)break;Qe.delete(e.key)}}async function Gt(){return typeof indexedDB>"u"?null:(Sn??=new Promise(t=>{const e=indexedDB.open($s,Ds);e.onupgradeneeded=()=>{const a=e.result;a.objectStoreNames.contains(Xe)||a.createObjectStore(Xe,{keyPath:"key"}).createIndex("lastAccessedAt","lastAccessedAt",{unique:!1})},e.onsuccess=()=>t(e.result),e.onerror=()=>t(null),e.onblocked=()=>t(null)}),Sn)}async function Xs(t){const e=await Gt();return e?new Promise(a=>{const n=e.transaction(Xe,"readonly"),r=n.objectStore(Xe).get(t);r.onsuccess=()=>a(r.result??null),r.onerror=()=>a(null),n.onerror=()=>a(null)}):null}async function Aa(t){const e=await Gt();e&&await new Promise(a=>{const n=e.transaction(Xe,"readwrite");n.objectStore(Xe).put(t),n.oncomplete=()=>a(),n.onerror=()=>a(),n.onabort=()=>a()})}async function Qs(t){const e=await Gt();e&&await new Promise(a=>{const n=e.transaction(Xe,"readwrite");n.objectStore(Xe).delete(t),n.oncomplete=()=>a(),n.onerror=()=>a(),n.onabort=()=>a()})}async function ec(t,e){const a=await Gt();a&&await new Promise(n=>{const r=a.transaction(Xe,"readwrite"),i=r.objectStore(Xe),o=[],s=i.openCursor();s.onsuccess=()=>{const c=s.result;if(!c){const l=o.filter(g=>g.expiresAt<=e),d=o.filter(g=>g.expiresAt>e).sort((g,p)=>g.lastAccessedAt-p.lastAccessedAt).slice(0,Math.max(0,o.length-l.length-t));for(const g of[...l,...d])i.delete(g.key);return}o.push(c.value),c.continue()},s.onerror=()=>n(),r.oncomplete=()=>n(),r.onerror=()=>n(),r.onabort=()=>n()})}function Pn(t){return JSON.stringify(La(t))}function Ft(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function La(t){return Array.isArray(t)?t.map(La):!t||typeof t!="object"?t:Object.fromEntries(Object.entries(t).sort(([e],[a])=>e.localeCompare(a)).map(([e,a])=>[e,La(a)]))}function Tn(t){let e=14695981039346656037n;const a=1099511628211n;for(let n=0;n<t.length;n+=1)e^=BigInt(t.charCodeAt(n)),e=BigInt.asUintN(64,e*a);return e.toString(16).padStart(16,"0")}function tc(t){return typeof TextEncoder<"u"?new TextEncoder().encode(t).byteLength:t.length}function ac(t,e){const a=t.type,n=t.payload!=null&&typeof t.payload=="object"&&!Array.isArray(t.payload)?t.payload:{},r=i=>{const o={...n};for(const[s,c]of Object.entries(i))s in o||(o[s]=c);return o};switch(a){case"user_message":case"inputText":{const i=typeof t.payload=="string",o=i?{text:t.payload}:t.payload!=null&&typeof t.payload=="object"&&!Array.isArray(t.payload)?t.payload:n,s=e.genericNonPdpLaunch===!0&&e.pageContext?.pageType!=="pdp"&&(o.is_entry_question===1||o.is_entry_question===!0),c=o.is_search_suggestion===1||o.is_search_suggestion===!0,l={is_launcher:0};if(!s&&e.pageContext?.extra&&(l.page_details=e.pageContext.extra),!s&&!c&&!i&&!("sku_list"in o)){const g=e.pageContext?.skuList&&e.pageContext.skuList.length>0?e.pageContext.skuList:e.pageContext?.sku?[e.pageContext.sku]:void 0;g&&g.length>0&&(l.sku_list=g)}"is_suggested_text"in o||(l.is_suggested_text=0);const d={...o};for(const[g,p]of Object.entries(l))g in d||(d[g]=p);return{...t,payload:d}}case"findSimilar":{const i={is_launcher:0};return t.title&&(i.text=t.title,i.input=t.title),{...t,payload:wt(r(i))}}case"getComparisonTable":{const i=t.payload;if(i&&typeof i=="object"&&!Array.isArray(i)&&"gengage_analytics_source"in i){const o={...i};return delete o.gengage_analytics_source,{...t,payload:o}}return t}case"launchProductList":return t;case"launchHomepage":return t;case"addToCart":{const i={};return"error_message"in n||(i.error_message=""),{...t,payload:r(i)}}case"reviewSummary":{const i={};return e.pageContext?.sku&&!("sku"in n)&&(i.sku=e.pageContext.sku),Object.keys(i).length===0?t:{...t,payload:r(i)}}default:return t}}var nc={user_message:"inputText"};function An(t){const{action:e,type:a,payload:n,...r}=t,i=a??e?.type??"inputText",o=n??e?.payload,s=nc[i]??i,c={...r,type:s};return o!==void 0&&(c.payload=typeof o=="string"?{text:o}:o),JSON.stringify(c)}function rc(t){return JSON.parse(An(t))}function ic(t){return t!==null&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function"}function Ln(t,e){let a=!1;const n=()=>e?.aborted===!0,r=()=>a||n(),i=()=>{r()||(a=!0,t.onDone())};return{fireDone:i,callbacks:{onTextChunk:(...o)=>{r()||t.onTextChunk(...o)},onUISpec:(...o)=>{r()||t.onUISpec(...o)},onAction:o=>{r()||t.onAction(o)},onMetadata:o=>{r()||t.onMetadata(o)},onError:o=>{n()||t.onError(o)},onDone:i}}}function oc(t,e,a){const n=new AbortController,r=a.injectorAdapter??Rs(a.accountId);return r?((async()=>{const o=Ln(e,n.signal);try{if(await Promise.resolve(),n.signal.aborted)return;const s=r(rc(t),o.callbacks,n.signal,a.attachment);ic(s)&&(await s,o.fireDone())}catch(s){if(n.signal.aborted||s instanceof DOMException&&s.name==="AbortError")return;o.callbacks.onError(s instanceof Error?s:new Error(String(s)))}})(),n):((async()=>{try{const o=Bs("process_action",a),s=An(t),c=a.attachment!==void 0;let l;if(c){const p=new FormData;p.append("request",s),a.attachment!==void 0&&p.append("attachment",a.attachment),l={method:"POST",body:p,signal:n.signal}}else l={method:"POST",headers:{"Content-Type":"application/json"},body:s,signal:n.signal};const d=c?await fetch(o,l):await Us(o,l);if(!d.ok){let p=d.statusText;try{const u=await d.json(),m=u.detail??u.message??u.error;typeof m=="string"&&(p=m)}catch{}e.onError(new Error(`HTTP ${d.status}: ${p}`));return}const g=Ln(e,n.signal);await Vo(d,{onEvent:p=>{const u=Yo(p);if(u)switch(u.type){case"text_chunk":g.callbacks.onTextChunk(u.content,u.final===!0,{productMentions:u.productMentions,skuToProductItem:u.skuToProductItem,conversationMode:u.conversationMode,renderHint:u.renderHint,kvkk:u.kvkk});break;case"ui_spec":g.callbacks.onUISpec(u.spec,u.widget,u.panelHint,u.clearPanel===!0);break;case"action":g.callbacks.onAction(u);break;case"metadata":g.callbacks.onMetadata(u);break;case"error":g.callbacks.onError(new Error(u.message));break;case"done":g.fireDone();break}},onError:g.callbacks.onError,signal:n.signal}),g.fireDone()}catch(o){if(o instanceof DOMException&&o.name==="AbortError")return;e.onError(o instanceof Error?o:new Error(String(o)))}})(),n)}var sc=["chat_debug","presentation_debug"],cc=["gengage_chat_debug","gengage_presentation_debug"];function lc(){return window.gengage||(window.gengage={}),window.gengage.__internal||(window.gengage.__internal={}),window.gengage.__internal}function dc(){if(typeof window>"u")return!1;const t=new URLSearchParams(window.location.search);if(sc.some(e=>t.get(e)==="1"))return!0;try{return cc.some(e=>window.localStorage.getItem(e)==="1")}catch{return!1}}function gc(t,e,a){if(!dc())return;const n=lc(),r=(n.cpDebugSeq??0)+1;n.cpDebugSeq=r;const i={seq:r,time:new Date().toISOString(),scope:t,message:e,payload:a};n.cpDebugLog||(n.cpDebugLog=[]),n.cpDebugLog.push(i),n.cpDebugLog.length>400&&n.cpDebugLog.shift();const o=`[gengage-chat-debug #${r}][${t}] ${e}`;a===void 0?console.debug(o):console.debug(o,a)}var Wt="gengage-chat-scroll",St=null;function In(t){St=t}function pc(){if(St&&St.isConnected)return St;St=null;const t=document.getElementById(Wt);return t||(gc("chat-scroll","failed to resolve scroll container (not registered)",{id:Wt}),null)}function Nn(){St=null}var Ct={headerTitle:"Ürün Uzmanı",inputPlaceholder:"Ürün ara, soru sor",inputAriaLabel:"Mesajınızı yazın",sendButton:"Gönder",closeButton:"Kapat",openButton:"Sohbeti aç",newChatButton:"Yeni sohbet",poweredBy:"Gengage ile",errorMessage:"Bir hata oluştu. Lütfen tekrar deneyin.",retryButton:"Tekrar Dene",loadingMessage:"İsteğinizi inceliyorum...",loadingSequenceGeneric:["İsteğinizi inceliyorum...","Ürün detaylarını inceliyorum...","Kontrol ediyorum...","Bulduklarımı değerlendiriyorum...","Detayları inceliyorum..."],loadingSequencePanel:["En ilgili detayları inceliyorum","En güçlü sinyalleri kontrol ediyorum","Bu görünümü sizin için hazırlıyorum"],loadingSequenceComparison:["Ürün farklarını inceliyorum","En güçlü farkları ve ödünleşimleri kontrol ediyorum","Karşılaştırmayı sizin için hazırlıyorum"],productCtaLabel:"Satın Al",viewOnSiteLabel:"Sitede Gör",attachImageButton:"Resim ekle",attachMenuSelectPhoto:"Fotoğraf Seç",attachMenuPaste:"Yapıştır",clipboardNoImageMessage:"Panoda görsel bulunamadı. Önce bir görsel kopyalayın veya dosya seçin.",removeAttachmentButton:"Resmi kaldır",invalidFileType:"Sadece JPEG, PNG ve WebP dosyaları destekleniyor.",fileTooLarge:"Dosya boyutu 5 MB'dan küçük olmalıdır.",aiTopPicksTitle:"Sizin İçin En İyiler",roleWinner:"Size Özel Seçimim",roleBestValue:"En Uygun Fiyatlı",roleBestAlternative:"En İyi Alternatif",viewDetails:"Detayları Gör",groundingReviewCta:"Yorumları Oku",groundingReviewSubtitle:"{count} yorum mevcut",variantsLabel:"Varyantlar",sortRelated:"Önerilen",sortPriceAsc:"Fiyat düşükten yükseğe",sortPriceDesc:"Fiyat yüksekten düşüğe",sortToolbarAriaLabel:"Ürünleri sırala",compareSelected:"Karşılaştır",productGridSectionCountLabel:"{count} ürün",compareMinHint:"En az 2 ürün seçin",compareMaxHint:"En fazla 5 ürün seçebilirsiniz",comparisonSelectLabel:"Karşılaştırmak için seç",comparisonSelectedLabel:"Seçildi",comparisonSelectCardHint:"Karşılaştırmaya eklemek veya çıkarmak için kartın herhangi bir yerine dokunun.",comparisonPreparingLabel:"Karşılaştırma tablosu hazırlanıyor…",panelTitleProductDetails:"Ürün Detayı",panelTitleSimilarProducts:"Benzer Ürünler",panelTitleComparisonResults:"Karşılaştırma Sonuçları",panelTitleCategories:"Kategoriler",panelTitleSearchResults:"Arama Sonuçları",inStockLabel:"Stokta",outOfStockLabel:"Tükendi",findSimilarLabel:"Benzerlerini Bul",galleryPrevAriaLabel:"Önceki görsel",galleryNextAriaLabel:"Sonraki görsel",beautyStylesPreparedTitle:"Sizin için {count} farklı öneri yönü hazırladım",consultingOtherCompatibleProductsLabel:"Diğer Uyumlu Ürünler",consultingFallbackGroupLabel:"Öneri",consultingFallbackStyleLabel:"Stil {index}",consultingStyleLoadingDescription:"Bu stil için ürünleri toplamaya devam ediyorum. Panel kısa süre içinde yenilenir.",consultingStyleUnavailableDescription:"Bu stil için şu anda yeterli ürün eşleşmesi çıkaramadım. Diğer stilleri inceleyebilirsiniz.",consultingStyleLoadingBadge:"Yükleniyor",consultingStyleUnavailableBadge:"Hazır değil",choicePrompterHeading:"Kararsız mı kaldın?",choicePrompterSuggestion:"Ürünleri seçip karşılaştırabilirsin",choicePrompterCta:"Seç ve Karşılaştır",viewMoreLabel:"Daha Fazla Göster",similarProductsLabel:"Benzer Ürünler",addToCartButton:"Sepete Ekle",addingToCartToast:"Sepete ekleniyor...",addedToCartToast:"Sepete eklendi",shareButton:"Paylaş",productInfoTab:"Ürün Bilgileri",specificationsTab:"Teknik Özellikler",recommendedChoiceLabel:"Önerilen Seçim",highlightsLabel:"Öne Çıkan Özellikler",keyDifferencesLabel:"Temel Farklar",specialCasesLabel:"Özel Durumlar İçin",emptyReviewsMessage:"Yorum özeti bulunamadı.",closeAriaLabel:"Kapat",startChatLabel:"Sohbete Başla",voiceButton:"Sesli giriş",voiceListening:"Dinleniyor...",voiceNotSupported:"Sesli giriş bu tarayıcıda desteklenmiyor.",voicePermissionDenied:"Mikrofon erişimi reddedildi.",voiceError:"Sesli giriş hatası.",handoffHeading:"Destek temsilcisine aktarılıyor",productNotFoundMessage:"Bu ürün bilgisi şu an kullanılamıyor. Başka bir konuda yardımcı olabilirim.",stopGenerating:"Yanıtı Durdur",offlineMessage:"Çevrimdışısınız — bağlantı kurulduğunda mesajlar gönderilecek.",cartAriaLabel:"Sepetim",favoritesAriaLabel:"Favorilerim",historyAriaLabel:"Sohbet geçmişi",historyPageTitle:"Sohbet Geçmişi",historyImageAttachmentLabel:"Görsel eklendi",emptyHistoryMessage:"Henüz kaydedilmiş sohbet yok.",historyDeleteLabel:"Sohbeti sil",historyDeleteConfirmMessage:"Bu sohbet geçmişten silinsin mi? Bu işlem geri alınamaz.",showPanelAriaLabel:"Sonuçları Göster",addToFavoritesLabel:"Favorilere ekle",customerReviewsTitle:"Müşteri Yorumları",togglePanelAriaLabel:"Paneli aç/kapat",chatMessagesAriaLabel:"Sohbet mesajları",suggestionsAriaLabel:"Öneriler",moreSuggestionsAriaLabel:"Daha fazla öneri",rollbackAriaLabel:"Bu mesaja geri dön",backAriaLabel:"Geri",forwardAriaLabel:"İleri",closePanelAriaLabel:"Paneli kapat",dismissAriaLabel:"Kapat",cartAddErrorMessage:"Üzgünüm sepete ekleyemedim, bir sorunla karşılaştım.",favoriteToggleErrorMessage:"Favoriler güncellenemedi. Lütfen tekrar deneyin.",reviewFilterPositive:"Olumlu",reviewFilterNegative:"Olumsuz",decreaseLabel:"Azalt",increaseLabel:"Artır",reviewCustomersMentionSingular:"1 müşteri bahsediyor",reviewCustomersMentionPlural:"müşteri bahsediyor",reviewSubjectsHeading:"İncelemek için seçin",tryAgainButton:"Tekrar dene",askSomethingElseButton:"Başka bir şey sor",accountInactiveMessage:"Bu hesap şu an aktif değil. Lütfen daha sonra tekrar deneyin.",favoritesPageTitle:"Favorilerim",emptyFavoritesMessage:"Henüz favori ürün yok. Bir ürünü kalp ikonuna tıklayarak favorilere ekleyebilirsin.",showFormerMessagesButton:"↑ Önceki mesajları göster",aiAnalysisAnalyzingLabel:"Ürünler analiz ediliyor...",aiBrowseCategoriesTitle:"Kategorilere Göz At",photoAnalysisBadge:"Cilt Analizi",photoAnalysisStrengthsLabel:"Öne Çıkanlar",photoAnalysisFocusLabel:"Odak Noktaları",photoAnalysisCelebStyleLabel:"Celeb Vibe Eşleşmesi",beautyPhotoStepTitle:"Selfie ile kişiselleştir",beautyPhotoStepDescription:"İstersen net bir profil fotoğrafı yükle, sana özel önerilerde bulunayım.",beautyPhotoStepUpload:"Fotoğraf Yükle",beautyPhotoStepProcessing:"Fotoğraf işleniyor...",beautyPhotoStepSkip:"Geç",beautyPhotoStepSkipMessage:"Fotoğraf adımını geçiyorum"},hc={headerTitle:"Product Expert",inputPlaceholder:"Search products, ask questions",inputAriaLabel:"Type your message",sendButton:"Send",closeButton:"Close",openButton:"Open chat",newChatButton:"New chat",poweredBy:"Powered by Gengage",errorMessage:"Something went wrong. Please try again.",retryButton:"Retry",loadingMessage:"Reviewing your request...",loadingSequenceGeneric:["Reviewing your request...","Reviewing product details...","Checking the strongest signals...","Evaluating what I found...","Reviewing the details..."],loadingSequencePanel:["Reviewing the most relevant details","Checking the strongest signals","Preparing this view for you"],loadingSequenceComparison:["Reviewing the product differences","Checking the strongest tradeoffs","Preparing your comparison"],productCtaLabel:"Buy",viewOnSiteLabel:"View on Site",attachImageButton:"Attach image",attachMenuSelectPhoto:"Choose photo",attachMenuPaste:"Paste",clipboardNoImageMessage:"No image found in clipboard. Copy an image first or choose a file.",removeAttachmentButton:"Remove image",invalidFileType:"Only JPEG, PNG and WebP files are supported.",fileTooLarge:"File must be smaller than 5 MB.",aiTopPicksTitle:"Top Picks for You",roleWinner:"Top Pick",roleBestValue:"Best Value",roleBestAlternative:"Best Alternative",viewDetails:"View Details",groundingReviewCta:"Read Reviews",groundingReviewSubtitle:"{count} reviews available",variantsLabel:"Variants",sortRelated:"Recommended",sortPriceAsc:"Price low to high",sortPriceDesc:"Price high to low",sortToolbarAriaLabel:"Sort products",compareSelected:"Compare",productGridSectionCountLabel:"{count} product(s)",compareMinHint:"Select at least 2 products",compareMaxHint:"You can select up to 5 products",comparisonSelectLabel:"Select to compare",comparisonSelectedLabel:"Selected",comparisonSelectCardHint:"Tap anywhere on the card to add or remove it from comparison.",comparisonPreparingLabel:"Preparing your comparison…",panelTitleProductDetails:"Product Details",panelTitleSimilarProducts:"Similar Products",panelTitleComparisonResults:"Comparison Results",panelTitleCategories:"Categories",panelTitleSearchResults:"Search Results",inStockLabel:"In Stock",outOfStockLabel:"Out of Stock",findSimilarLabel:"Find Similar",galleryPrevAriaLabel:"Previous image",galleryNextAriaLabel:"Next image",beautyStylesPreparedTitle:"Prepared {count} recommendation directions for you",consultingOtherCompatibleProductsLabel:"Other compatible products",consultingFallbackGroupLabel:"Recommendation",consultingFallbackStyleLabel:"Style {index}",consultingStyleLoadingDescription:"I am still collecting products for this style. The panel will refresh shortly.",consultingStyleUnavailableDescription:"I could not find enough product matches for this style yet. You can review the other styles.",consultingStyleLoadingBadge:"Loading",consultingStyleUnavailableBadge:"Not ready",choicePrompterHeading:"Can't decide?",choicePrompterSuggestion:"Select products to compare them",choicePrompterCta:"Select & Compare",viewMoreLabel:"Show More",similarProductsLabel:"Similar Products",addToCartButton:"Add to Cart",addingToCartToast:"Adding to cart...",addedToCartToast:"Added to cart",shareButton:"Share",productInfoTab:"Product Info",specificationsTab:"Specifications",recommendedChoiceLabel:"Recommended Choice",highlightsLabel:"Key Highlights",keyDifferencesLabel:"Key Differences",specialCasesLabel:"For Special Cases",emptyReviewsMessage:"No review summary found.",closeAriaLabel:"Close",startChatLabel:"Start Chat",voiceButton:"Voice input",voiceListening:"Listening...",voiceNotSupported:"Voice input is not supported in this browser.",voicePermissionDenied:"Microphone access denied.",voiceError:"Voice input error.",handoffHeading:"Transferring to a support agent",productNotFoundMessage:"Product information is currently unavailable. I can help with something else.",stopGenerating:"Stop generating",offlineMessage:"You're offline — messages will send when you reconnect.",cartAriaLabel:"My cart",favoritesAriaLabel:"My favorites",historyAriaLabel:"Chat history",historyPageTitle:"Chat History",historyImageAttachmentLabel:"Image attachment",emptyHistoryMessage:"You don't have any saved chats yet.",historyDeleteLabel:"Delete chat",historyDeleteConfirmMessage:"Delete this chat from history? This cannot be undone.",showPanelAriaLabel:"Show Results",addToFavoritesLabel:"Add to favorites",customerReviewsTitle:"Customer Reviews",togglePanelAriaLabel:"Toggle panel",chatMessagesAriaLabel:"Chat messages",suggestionsAriaLabel:"Suggestions",moreSuggestionsAriaLabel:"More suggestions",rollbackAriaLabel:"Rollback to this message",backAriaLabel:"Back",forwardAriaLabel:"Forward",closePanelAriaLabel:"Close panel",dismissAriaLabel:"Dismiss",cartAddErrorMessage:"Sorry, I couldn't add that to your cart. Something went wrong.",favoriteToggleErrorMessage:"We couldn't update favorites. Please try again.",reviewFilterPositive:"Positive",reviewFilterNegative:"Negative",decreaseLabel:"Decrease",increaseLabel:"Increase",reviewCustomersMentionSingular:"1 customer mentions",reviewCustomersMentionPlural:"customers mention",reviewSubjectsHeading:"Select to learn more",tryAgainButton:"Try again",askSomethingElseButton:"Ask something else",accountInactiveMessage:"This account is currently inactive. Please try again later.",favoritesPageTitle:"My Favorites",emptyFavoritesMessage:"No favorites yet. Heart a product to save it here.",showFormerMessagesButton:"↑ Show earlier messages",aiAnalysisAnalyzingLabel:"Analyzing products...",aiBrowseCategoriesTitle:"Browse categories",photoAnalysisBadge:"Skin Analysis",photoAnalysisStrengthsLabel:"Your strengths",photoAnalysisFocusLabel:"Focus points",photoAnalysisCelebStyleLabel:"Celeb style match",beautyPhotoStepTitle:"Personalize with a selfie",beautyPhotoStepDescription:"Upload a clear profile photo so I can give you personalized recommendations.",beautyPhotoStepUpload:"Upload Photo",beautyPhotoStepProcessing:"Processing photo...",beautyPhotoStepSkip:"Skip",beautyPhotoStepSkipMessage:"Skip the photo step"};function uc(t){return t?t.toLowerCase().split("-")[0]??"tr":"tr"}function mc(t){return uc(t)==="en"?hc:Ct}function fc(){return zn()!==null}function zn(){const t=globalThis;return t.SpeechRecognition??t.webkitSpeechRecognition??null}var bc=class{constructor(t,e){this.recognition=null,this._state="idle",this.silenceTimer=null,this.accumulatedTranscript="",this.intentionalStop=!1,this._lastRestartAt=0,this.callbacks=t,this.lang=e?.lang??"tr-TR",this.silenceTimeoutMs=e?.silenceTimeoutMs??1500,this.autoSubmit=e?.autoSubmit??!0}get state(){return this._state}start(){if(this._state==="listening")return;const t=zn();if(!t){this.setState("error"),this.callbacks.onError?.("not-supported","Web Speech API is not supported in this browser.");return}if(typeof globalThis.isSecureContext<"u"&&!globalThis.isSecureContext){this.setState("error"),this.callbacks.onError?.("not-allowed","Voice input requires HTTPS.");return}this.accumulatedTranscript="",this.intentionalStop=!1;const e=new t;e.continuous=!0,e.interimResults=!0,e.lang=this.lang,e.maxAlternatives=1,e.onstart=()=>{this.setState("listening")},e.onresult=a=>{this.clearSilenceTimer();let n="",r="";for(let i=a.resultIndex;i<a.results.length;i++){const o=a.results[i];if(!o)continue;const s=o[0];s&&(o.isFinal?r+=s.transcript:n+=s.transcript)}r&&(this.accumulatedTranscript+=r,this.callbacks.onFinal?.(this.accumulatedTranscript)),n&&this.callbacks.onInterim?.(this.accumulatedTranscript+n),this.autoSubmit&&this.accumulatedTranscript&&this.startSilenceTimer()},e.onerror=a=>{const n=vc(a.error);this.intentionalStop&&(a.error==="no-speech"||a.error==="aborted")||(this.setState("error"),this.callbacks.onError?.(n,a.message||a.error))},e.onend=()=>{if(this.clearSilenceTimer(),this._state==="listening"&&!this.intentionalStop){const a=Date.now();if(a-this._lastRestartAt<500){this.setState("idle");return}this._lastRestartAt=a;try{e.start()}catch{this.setState("idle")}return}this.setState("idle")},this.recognition=e;try{e.start()}catch{this.setState("error"),this.callbacks.onError?.("unknown","Failed to start speech recognition.")}}stop(){if(this.intentionalStop=!0,this.clearSilenceTimer(),this.recognition){try{this.recognition.stop()}catch{}this.recognition=null}return this.setState("idle"),this.accumulatedTranscript}abort(){if(this.intentionalStop=!0,this.clearSilenceTimer(),this.accumulatedTranscript="",this.recognition){try{this.recognition.abort()}catch{}this.recognition=null}this.setState("idle")}destroy(){this.abort()}setState(t){this._state!==t&&(this._state=t,this.callbacks.onStateChange?.(t))}startSilenceTimer(){this.clearSilenceTimer(),this.silenceTimer=setTimeout(()=>{const t=this.stop();t.trim()&&this.callbacks.onAutoSubmit?.(t.trim())},this.silenceTimeoutMs)}clearSilenceTimer(){this.silenceTimer!==null&&(clearTimeout(this.silenceTimer),this.silenceTimer=null)}};function vc(t){switch(t){case"not-allowed":return"not-allowed";case"no-speech":return"no-speech";case"audio-capture":return"no-microphone";case"network":return"network";case"aborted":return"aborted";default:return"unknown"}}function yc(t){const e=document.createElement("div");e.className="gengage-chat-kvkk-banner",e.dataset.gengagePart="kvkk-banner",e.setAttribute("role","note");const a=document.createElement("div");return a.className="gengage-chat-kvkk-content",a.dataset.gengagePart="kvkk-content",a.innerHTML=Ie(t.htmlContent),e.appendChild(a),e}var xc=class{constructor(t){this._el=document.createElement("div"),this._el.className="gengage-chat-panel-topbar gds-toolbar",this._el.dataset.gengagePart="panel-topbar",this._backBtn=document.createElement("button"),this._backBtn.className="gengage-chat-panel-topbar-back gds-btn gds-btn-ghost gds-icon-btn",this._backBtn.dataset.gengagePart="panel-topbar-back",this._backBtn.type="button",this._backBtn.disabled=!0,this._backBtn.setAttribute("aria-label",t.backAriaLabel??"Back"),this._backBtn.title=t.backAriaLabel??"Back",this._backBtn.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m15 18-6-6 6-6"/><path d="M21 12H9"/></svg>',this._backBtn.addEventListener("click",()=>t.onBack());const e=document.createElement("div");e.className="gengage-chat-panel-topbar-title-wrap",this._titleEl=document.createElement("span"),this._titleEl.className="gengage-chat-panel-topbar-title",this._titleEl.dataset.gengagePart="panel-topbar-title",e.appendChild(this._titleEl),this._forwardBtn=document.createElement("button"),this._forwardBtn.className="gengage-chat-panel-topbar-forward gds-btn gds-btn-ghost gds-icon-btn",this._forwardBtn.dataset.gengagePart="panel-topbar-forward",this._forwardBtn.type="button",this._forwardBtn.disabled=!0,this._forwardBtn.setAttribute("aria-label",t.forwardAriaLabel??"Forward"),this._forwardBtn.title=t.forwardAriaLabel??"Forward",this._forwardBtn.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 18 6-6-6-6"/><path d="M3 12h12"/></svg>',this._forwardBtn.addEventListener("click",()=>t.onForward()),this._actionsEl=document.createElement("div"),this._actionsEl.className="gengage-chat-panel-topbar-actions",this._actionsEl.dataset.gengagePart="panel-topbar-actions",this._closeBtn=document.createElement("button"),this._closeBtn.className="gengage-chat-panel-topbar-close gds-btn gds-btn-ghost gds-icon-btn",this._closeBtn.dataset.gengagePart="panel-topbar-close",this._closeBtn.type="button",this._closeBtn.setAttribute("aria-label",t.closePanelAriaLabel??"Close panel"),this._closeBtn.title=t.closePanelAriaLabel??"Close panel",this._closeBtn.innerHTML='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',this._closeBtn.addEventListener("click",()=>t.onClose?.()),this._el.appendChild(this._backBtn),this._el.appendChild(e),this._el.appendChild(this._actionsEl),this._el.appendChild(this._forwardBtn),this._el.appendChild(this._closeBtn)}update(t,e,a){this._backBtn.disabled=!t,this._forwardBtn.disabled=!e,this._backBtn.hidden=!t,this._forwardBtn.hidden=!e,this._titleEl.textContent=a,this._titleEl.title=a}getElement(){return this._el}setTitle(t){this._titleEl.textContent=t}setActions(t){this._actionsEl.replaceChildren(),t&&this._actionsEl.appendChild(t)}getTitle(){return this._titleEl.textContent??""}};function _c(t){return{processing:t.processing===!0,title:typeof t.title=="string"?t.title:void 0,description:typeof t.description=="string"?t.description:void 0,uploadLabel:typeof t.upload_label=="string"?t.upload_label:void 0,skipLabel:typeof t.skip_label=="string"?t.skip_label:void 0}}function Mn(t,e,a){const n=t.props??{},r=n.processing===!0,i={...Ct,...e.i18n??{}},o=document.createElement("div");o.className="gengage-chat-beauty-photo-step-card";const s=document.createElement("span");s.className="gengage-chat-beauty-photo-step-icon",s.setAttribute("aria-hidden","true"),s.textContent="✦";const c=document.createElement("div");c.className="gengage-chat-beauty-photo-step-content";const l=document.createElement("div");l.className="gengage-chat-beauty-photo-step-title",l.textContent=(typeof n.title=="string"?n.title:void 0)??i.beautyPhotoStepTitle;const d=document.createElement("p");d.className="gengage-chat-beauty-photo-step-desc",d.textContent=(typeof n.description=="string"?n.description:void 0)??i.beautyPhotoStepDescription;const g=document.createElement("div");g.className="gengage-chat-beauty-photo-step-actions";const p=document.createElement("button");p.type="button",p.className="gengage-chat-beauty-photo-step-upload gds-btn gds-btn-primary",p.textContent=r?i.beautyPhotoStepProcessing:(typeof n.upload_label=="string"?n.upload_label:void 0)??i.beautyPhotoStepUpload,p.disabled=r,a?.onUpload&&p.addEventListener("click",()=>a.onUpload());const u=document.createElement("button");return u.type="button",u.className="gengage-chat-beauty-photo-step-skip gds-btn gds-btn-ghost",u.textContent=(typeof n.skip_label=="string"?n.skip_label:void 0)??i.beautyPhotoStepSkip,a?.onSkip&&u.addEventListener("click",()=>a.onSkip()),g.appendChild(p),g.appendChild(u),c.appendChild(l),c.appendChild(d),c.appendChild(g),o.appendChild(s),o.appendChild(c),o}function wc(t,e){if(t)return t;const a=document.createElement("section");a.className="gengage-chat-beauty-photo-step",a.dataset.gengagePart="chat-beauty-photo-step",a.hidden=!0;const n=e?.querySelector(".gengage-chat-input-area");return n?n.parentElement?.insertBefore(a,n):e?.appendChild(a),a}function kc(t,e,a,n,r){if(!a.visible)return t&&(t.hidden=!0,t.innerHTML=""),t;const i=wc(t,e);i.hidden=!1,i.innerHTML="";const o=Mn({type:"BeautyPhotoStep",props:{processing:a.processing??!1,title:a.title,description:a.description,upload_label:a.uploadLabel,skip_label:a.skipLabel}},{i18n:n,onAction:()=>{}},{onUpload:r,onSkip:a.onSkip});return i.appendChild(o),i}function Bn(t){const e=typeof t.summary=="string"?t.summary:"",a=Array.isArray(t.strengths)?t.strengths.filter(c=>typeof c=="string"):[],n=Array.isArray(t.focus_points)?t.focus_points.filter(c=>typeof c=="string"):[];if(!e&&a.length===0&&n.length===0)return null;const r={summary:e},i=typeof t.celeb_style=="string"?t.celeb_style:void 0,o=typeof t.celeb_style_reason=="string"?t.celeb_style_reason:void 0,s=typeof t.next_question=="string"?t.next_question:void 0;return a.length>0&&(r.strengths=a),n.length>0&&(r.focusPoints=n),i&&(r.celebStyle=i),o&&(r.celebStyleReason=o),s&&(r.nextQuestion=s),r}function Rn(t,e,a){if(e.length===0)return null;const n=document.createElement("section");n.className=`gengage-chat-photo-analysis-section ${a}`;const r=document.createElement("h4");r.className="gengage-chat-photo-analysis-section-title",r.textContent=t;const i=document.createElement("ul");i.className="gengage-chat-photo-analysis-section-list";for(const o of e){const s=document.createElement("li");s.className="gengage-chat-photo-analysis-section-item",s.textContent=o,i.appendChild(s)}return n.appendChild(r),n.appendChild(i),n}function On(t,e){const a=document.createElement("div");a.className="gengage-chat-photo-analysis-card";const n=document.createElement("div");n.className="gengage-chat-photo-analysis-badge",n.textContent=t.badge;const r=document.createElement("div");if(r.className="gengage-chat-photo-analysis-body",e.summary){const c=document.createElement("p");c.className="gengage-chat-photo-analysis-summary",c.textContent=e.summary,r.appendChild(c)}const i=document.createElement("div");i.className="gengage-chat-photo-analysis-highlights";const o=Rn(t.strengths,e.strengths??[],"gengage-chat-photo-analysis-section--strengths"),s=Rn(t.focus,e.focusPoints??[],"gengage-chat-photo-analysis-section--focus");if(o&&i.appendChild(o),s&&i.appendChild(s),i.childElementCount>0&&r.appendChild(i),e.celebStyle){const c=document.createElement("section");c.className="gengage-chat-photo-analysis-section gengage-chat-photo-analysis-section--celeb";const l=document.createElement("h4");l.className="gengage-chat-photo-analysis-section-title",l.textContent=t.celebStyle;const d=document.createElement("p");if(d.className="gengage-chat-photo-analysis-celeb-name",d.textContent=e.celebStyle,c.appendChild(l),c.appendChild(d),e.celebStyleReason){const g=document.createElement("p");g.className="gengage-chat-photo-analysis-celeb-reason",g.textContent=e.celebStyleReason,c.appendChild(g)}r.appendChild(c)}if(e.nextQuestion){const c=document.createElement("p");c.className="gengage-chat-photo-analysis-next",c.textContent=e.nextQuestion,r.appendChild(c)}return a.appendChild(n),a.appendChild(r),a}function Sc(t){const e={...Ct,...t?.i18n??{}};return{badge:e.photoAnalysisBadge,strengths:e.photoAnalysisStrengthsLabel,focus:e.photoAnalysisFocusLabel,celebStyle:e.photoAnalysisCelebStyleLabel}}function Cc(t,e){const a=Bn(t.props??{})??{summary:""};return On(Sc(e),a)}function Ec(t,e,a){t.innerHTML="",a&&t.appendChild(On(e,a))}var Fn='<svg viewBox="0 0 16 16" class="gengage-chat-icon"><path d="M3 8h10M9 4l4 4-4 4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',$n={search:'<svg viewBox="0 0 16 16" class="gengage-chat-icon"><circle cx="6.5" cy="6.5" r="5" fill="none" stroke="currentColor" stroke-width="1.5"/><line x1="10" y1="10" x2="15" y2="15" stroke="currentColor" stroke-width="1.5"/></svg>',review:'<svg viewBox="0 0 16 16" class="gengage-chat-icon"><polygon points="8,1 10,6 15,6 11,9 12.5,14 8,11 3.5,14 5,9 1,6 6,6" fill="none" stroke="currentColor" stroke-width="1.5"/></svg>',info:'<svg viewBox="0 0 16 16" class="gengage-chat-icon"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.5"/><line x1="8" y1="7" x2="8" y2="12" stroke="currentColor" stroke-width="1.5"/><circle cx="8" cy="4.5" r="0.8" fill="currentColor"/></svg>',similar:'<svg viewBox="0 0 16 16" class="gengage-chat-icon"><rect x="1" y="3" width="6" height="6" rx="1" fill="none" stroke="currentColor" stroke-width="1.5"/><rect x="9" y="3" width="6" height="6" rx="1" fill="none" stroke="currentColor" stroke-width="1.5"/></svg>'},Pc=Ct,Tc=3e3,Dn=1500,Ac=/data:image\/(png|jpeg|jpg|webp);base64,[A-Za-z0-9+/=]+/gi;async function Lc(t){for(const e of t)for(const a of e.types)if(a.startsWith("image/"))try{const n=await e.getType(a);if(!n||n.size===0)continue;const r=a||n.type||"image/png",i=r==="image/png"?"png":r==="image/webp"?"webp":"jpg",o=`paste-${Date.now()}.${i}`;return new File([n],o,{type:r})}catch{continue}for(const e of t)if(e.types.includes("text/html"))try{const a=(await(await e.getType("text/html")).text()).match(Ac)?.[0];if(!a||a.length>5e6)continue;const n=await(await fetch(a)).blob();if(!n||n.size===0)continue;const r=n.type||"image/png";if(!["image/jpeg","image/png","image/webp"].includes(r))continue;const i=r==="image/png"?"png":r==="image/webp"?"webp":"jpg";return new File([n],`paste-${Date.now()}.${i}`,{type:r})}catch{continue}return null}async function Ic(t){try{const e=t??(typeof navigator.clipboard?.read=="function"?navigator.clipboard.read():null);return e?Lc(await e):null}catch{}return null}var Nc=class{_renderPhotoAnalysisCard(t,e){Ec(t,{badge:this.i18n.photoAnalysisBadge,strengths:this.i18n.photoAnalysisStrengthsLabel,focus:this.i18n.photoAnalysisFocusLabel,celebStyle:this.i18n.photoAnalysisCelebStyleLabel},e)}_createLegacyHeaderPoweredBy(){const t=typeof this.i18n.poweredBy=="string"?this.i18n.poweredBy.trim():"";if(!t)return null;const e=document.createElement("a");return e.className="gengage-chat-header-powered",e.dataset.gengagePart="chat-header-powered-by",e.href="https://gengage.ai/",e.target="_blank",e.rel="noopener noreferrer",e.innerHTML=`<svg viewBox="0 0 15 15" fill="none" aria-hidden="true"><path d="M15 5.88941C12.2201 5.88941 9.72762 7.14107 8.05571 9.11059H0C2.77991 9.11059 5.27238 7.85893 6.94429 5.88941H15Z" fill="currentColor"/><path d="M9.10964 0C9.10964 2.24394 8.29524 4.30038 6.94429 5.88941C5.27238 7.85962 2.77922 9.11059 0 9.11059V5.88941C3.24802 5.88941 5.89036 3.2465 5.89036 0H9.10964Z" fill="currentColor" fill-opacity="0.68"/><path d="M15 5.88941V9.11059C11.752 9.11059 9.10964 11.7535 9.10964 15H5.89036C5.89036 12.7561 6.70476 10.6996 8.05571 9.11059C9.72762 7.14038 12.2208 5.88941 15 5.88941Z" fill="currentColor" fill-opacity="0.68"/></svg>${t}`,e}_createFooterAttribution(){const t=document.createElement("div");t.className="gengage-chat-footer",t.dataset.gengagePart="chat-footer";const e=this._options.footerAttribution,a=typeof e?.label=="string"?e.label.trim():"",n=typeof e?.href=="string"?e.href.trim():"",r=typeof this.i18n.poweredBy=="string"?this.i18n.poweredBy.trim():"",i=a||r;if(!i)return null;if(n&&ye(n)){const o=document.createElement("a");return o.className="gengage-chat-footer-link",o.dataset.gengagePart="chat-footer-link",o.href=n,o.target=e?.target||"_blank",o.rel=e?.rel||"noopener noreferrer",o.textContent=i,typeof e?.ariaLabel=="string"&&e.ariaLabel.trim()&&o.setAttribute("aria-label",e.ariaLabel.trim()),t.appendChild(o),t}return t.textContent=i,t}constructor(t,e){this._sendStopHandler=null,this._panelVisible=!1,this._panelCollapsed=!1,this._onPanelToggle=void 0,this._onHostShellSync=void 0,this._pendingAttachment=null,this._onAttachment=void 0,this._onRollback=void 0,this._onLinkClick=void 0,this._userScrolledUp=!1,this._scrollLockedUntil=0,this._favBadgeEl=null,this._thinkingSteps=[],this._firstBotMessageIds=new Set,this._voiceInput=null,this._micBtn=null,this._voiceEnabled=!1,this._voiceLang="tr-TR",this._ignoreNextDividerClick=!1,this._cleanups=[],this._focusTrapHandler=null,this._previouslyFocusedElement=null,this._conversationEl=null,this._reopenPanelBtn=null,this._presentationFocusThreadId=null,this._formerMessagesBtn=null,this._programmaticScrollUntil=0,this._userInteractionUntil=0,this._touchStartY=null,this._presentationPinned=!0,this._presentationUserInteracting=!1,this._resizeRafId=null,this._cartBtn=null,this._attachWrapEl=null,this._attachMenuEl=null,this._attachBtn=null,this._attachMenuCleanup=null,this._attachMenuClickTimerId=null,this._typingLoadingBinding=null,this._panelLoadingBinding=null,this._panelAiZoneLoadingBinding=null,this._beautyPhotoStepEl=null,this._cartToastEl=null,this._cartToastTimerId=null,this._dragCloseTimerId=null,this._options=e,this.i18n={...Pc,...e.i18n},this.onSend=e.onSend,e.onPanelToggle!==void 0&&(this._onPanelToggle=e.onPanelToggle),e.onHostShellSync!==void 0&&(this._onHostShellSync=e.onHostShellSync),e.onAttachment!==void 0&&(this._onAttachment=e.onAttachment),e.onRollback!==void 0&&(this._onRollback=e.onRollback),e.onLinkClick!==void 0&&(this._onLinkClick=e.onLinkClick),e.voiceEnabled&&(this._voiceEnabled=!0),e.voiceLang!==void 0&&(this._voiceLang=e.voiceLang),this.root=document.createElement("div"),this.root.className="gengage-chat-drawer gds-panel",this.root.dataset.gengagePart="chat-drawer",this.root.setAttribute("role","dialog"),this.root.setAttribute("aria-label",this.i18n.headerTitle??"Chat"),this.root.setAttribute("aria-modal","true");const a="gengage-chat-dialog-desc",n=document.createElement("span");n.id=a,n.className="gengage-sr-only",n.textContent=this.i18n.headerTitle??"AI shopping assistant",this.root.appendChild(n),this.root.setAttribute("aria-describedby",a);let r=null;{const k=document.createElement("div");k.className="gengage-chat-drawer-handle",k.dataset.gengagePart="chat-drawer-handle",k.setAttribute("aria-hidden","true"),k.style.pointerEvents="none",r=k}const i=document.createElement("div");i.className="gengage-chat-header gds-shell-header",i.dataset.gengagePart="chat-header";const o=document.createElement("div");o.className="gengage-chat-header-left",o.dataset.gengagePart="chat-header-left";const s=e.headerAvatarUrl??e.launcherImageUrl,c=typeof e.headerAvatarUrl=="string"&&e.headerAvatarUrl.length>0&&e.headerAvatarUrl!==e.launcherImageUrl;if(s){const k=document.createElement("img");k.className="gengage-chat-header-avatar",c&&k.classList.add("gengage-chat-header-avatar--logo"),k.dataset.gengagePart="chat-header-avatar",k.src=s,k.alt=e.headerTitle??"Assistant",o.appendChild(k)}const l=document.createElement("div");l.className="gengage-chat-header-info",l.dataset.gengagePart="chat-header-info";const d=document.createElement("div");d.className="gengage-chat-header-title-row",d.dataset.gengagePart="chat-header-title-row";const g=document.createElement("span");if(g.className="gengage-chat-header-title",g.dataset.gengagePart="chat-header-title",g.textContent=e.headerTitle??this.i18n.headerTitle??"Product Expert",d.appendChild(g),e.headerBadge){const k=document.createElement("span");k.className="gengage-chat-header-badge gds-badge gds-badge-brand",k.dataset.gengagePart="chat-header-badge",k.textContent=e.headerBadge,d.appendChild(k)}if(l.appendChild(d),e.footerAttribution===void 0){const k=this._createLegacyHeaderPoweredBy();k&&l.appendChild(k)}o.appendChild(l),i.appendChild(o);const p=document.createElement("div");p.className="gengage-chat-header-right",p.dataset.gengagePart="chat-header-actions";{const k=document.createElement("button");k.type="button",k.className="gengage-chat-header-btn gengage-chat-header-btn--reopen-panel gds-btn gds-btn-ghost gds-icon-btn",k.dataset.gengagePart="chat-header-reopen-panel",k.setAttribute("aria-label",this.i18n.showPanelAriaLabel),k.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="9" y1="3" x2="9" y2="21"/></svg>',k.addEventListener("click",()=>this._showMobilePanelFromBtn()),p.appendChild(k),this._reopenPanelBtn=k}if(e.headerCartUrl||e.onCartClick){const k=document.createElement("button");k.type="button",k.className="gengage-chat-header-btn gengage-chat-header-btn--cart gds-btn gds-btn-ghost gds-icon-btn",k.dataset.gengagePart="chat-header-cart",k.setAttribute("aria-label",this.i18n.cartAriaLabel),k.title=this.i18n.cartAriaLabel,k.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/></svg>',k.addEventListener("click",()=>e.onCartClick?.()),p.appendChild(k),this._cartBtn=k}if(e.onHistoryClick){const k=document.createElement("button");k.type="button",k.className="gengage-chat-header-btn gengage-chat-header-btn--history gds-btn gds-btn-ghost gds-icon-btn",k.dataset.gengagePart="chat-header-history",k.setAttribute("aria-label",this.i18n.historyAriaLabel),k.title=this.i18n.historyAriaLabel,k.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 8v5l3 2"/><path d="M3.05 11A9 9 0 1 1 5 17.5"/><path d="M3 8v4h4"/></svg>',k.addEventListener("click",()=>e.onHistoryClick?.()),p.appendChild(k)}if(e.onNewChat){const k=document.createElement("button");k.className="gengage-chat-header-btn gengage-chat-new-chat gds-btn gds-btn-ghost gds-icon-btn",k.dataset.gengagePart="chat-header-new-chat",k.type="button",k.setAttribute("aria-label",this.i18n.newChatButton),k.title=this.i18n.newChatButton,k.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>',k.addEventListener("click",()=>e.onNewChat?.()),p.appendChild(k)}const u=document.createElement("button");if(u.className="gengage-chat-close gds-btn gds-btn-ghost gds-icon-btn",u.dataset.gengagePart="chat-header-close",u.type="button",u.setAttribute("aria-label",this.i18n.closeButton),u.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',u.addEventListener("click",e.onClose),e.showHeaderFavorites){const k=document.createElement("button");k.className="gengage-chat-header-btn gengage-chat-header-btn--fav gds-btn gds-btn-ghost gds-icon-btn",k.dataset.gengagePart="chat-header-favorites",k.type="button",k.setAttribute("aria-label",this.i18n.favoritesAriaLabel),k.innerHTML='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>';const J=document.createElement("span");J.className="gengage-chat-header-fav-badge",J.dataset.gengagePart="chat-header-favorites-badge",J.setAttribute("aria-hidden","true"),J.style.display="none",k.appendChild(J),this._favBadgeEl=J,k.addEventListener("click",()=>{e.onFavoritesClick?.()}),p.appendChild(k)}p.appendChild(u),r&&i.insertBefore(r,i.firstChild),i.appendChild(p);{let J=0,oe=0,ge=!1;const fe=U=>{if(!(this._options.getMobileViewport?.()??window.innerWidth<=768)||U.target.closest('button, a, input, [role="button"]'))return;const N=U.changedTouches?.[0];N&&(J=N.clientY,oe=0,ge=!0,this.root.style.transition="none")},Le=U=>{if(!ge)return;const N=U.changedTouches?.[0];if(!N)return;oe=N.clientY-J;const re=(e.getMobileState?.()??"full")==="full"?Math.max(0,oe):oe;U.preventDefault(),this.root.style.transform=`translateY(${re}px)`},Ee=()=>{if(!ge)return;ge=!1;const U=e.getMobileState?.()??"full";let N;oe>72?N=U==="full"?"half":"close":oe<-72&&U==="half"?N="full":N=U,this.root.style.transition="",N==="close"?(this.root.style.transform="translateY(100%)",this._dragCloseTimerId!==null&&window.clearTimeout(this._dragCloseTimerId),this._dragCloseTimerId=window.setTimeout(()=>{this._dragCloseTimerId=null,this.root.style.transform="",e.onMobileSnap?.("close")},280)):(this.root.style.transform="",e.onMobileSnap?.(N)),oe=0},F=()=>{ge&&(ge=!1,oe=0,this.root.style.transition="",this.root.style.transform="")};i.addEventListener("touchstart",fe,{passive:!0}),i.addEventListener("touchmove",Le,{passive:!1}),i.addEventListener("touchend",Ee,{passive:!0}),i.addEventListener("touchcancel",F,{passive:!0}),this._cleanups.push(()=>{i.removeEventListener("touchstart",fe),i.removeEventListener("touchmove",Le),i.removeEventListener("touchend",Ee),i.removeEventListener("touchcancel",F)})}const m=document.createElement("div");m.className="gengage-chat-body",m.dataset.gengagePart="chat-body",this._panelEl=document.createElement("div"),this._panelEl.className="gengage-chat-panel gds-panel",this._panelEl.dataset.gengagePart="chat-panel",this._panelTopBar=new xc({onBack:()=>e.onPanelBack?.(),onForward:()=>e.onPanelForward?.(),onClose:()=>{e.getMobileViewport?.()??!1?this.hideMobilePanel():this.clearPanel(),e.onPanelClose?.()},backAriaLabel:this.i18n.backAriaLabel,forwardAriaLabel:this.i18n.forwardAriaLabel,closePanelAriaLabel:this.i18n.closePanelAriaLabel}),this._panelEl.appendChild(this._panelTopBar.getElement());const f=()=>this._updateScrollAffordance();this._panelEl.addEventListener("scroll",f,{passive:!0}),this._cleanups.push(()=>this._panelEl.removeEventListener("scroll",f)),m.appendChild(this._panelEl),this._dividerEl=document.createElement("div"),this._dividerEl.className="gengage-chat-panel-divider gengage-chat-panel-divider--hidden",this._dividerEl.dataset.gengagePart="chat-panel-divider",this._dividerEl.setAttribute("role","separator"),this._dividerEl.setAttribute("aria-label",this.i18n.togglePanelAriaLabel),this._dividerEl.setAttribute("title",this.i18n.togglePanelAriaLabel);const b=document.createElement("button");b.className="gengage-chat-panel-divider-toggle gds-btn gds-btn-ghost",b.dataset.gengagePart="chat-panel-divider-toggle",b.type="button",b.setAttribute("aria-label",this.i18n.togglePanelAriaLabel),b.setAttribute("title",this.i18n.togglePanelAriaLabel),b.textContent="»",b.addEventListener("click",()=>{if(this._ignoreNextDividerClick){this._ignoreNextDividerClick=!1;return}this.togglePanel(),this._onPanelToggle?.()});let h=null,y=null;const x=24,v=k=>{if(!(this._options.getMobileViewport?.()??window.innerWidth<=768))return;const J=k.changedTouches?.[0];J&&(h=J.clientX,y=J.clientY)},w=k=>{if(!(this._options.getMobileViewport?.()??window.innerWidth<=768)||h===null||y===null)return;const J=k.changedTouches?.[0];if(!J)return;const oe=J.clientX-h,ge=J.clientY-y;if(h=null,y=null,Math.abs(ge)<x||Math.abs(ge)<Math.abs(oe))return;const fe=ge<0;fe!==this._panelCollapsed&&(this._ignoreNextDividerClick=!0,this.setPanelCollapsed(fe),this._onPanelToggle?.())};this._dividerEl.addEventListener("touchstart",v,{passive:!0}),this._dividerEl.addEventListener("touchend",w,{passive:!0}),this._cleanups.push(()=>{this._dividerEl.removeEventListener("touchstart",v),this._dividerEl.removeEventListener("touchend",w)}),this._dividerEl.appendChild(b),m.appendChild(this._dividerEl);const P=document.createElement("div");P.className="gengage-chat-conversation",P.dataset.gengagePart="chat-conversation",this._conversationEl=P,P.appendChild(i);const E=document.createElement("div");E.className="gengage-chat-offline-bar gds-evidence-card gds-evidence-card-warning",E.dataset.gengagePart="chat-offline-bar",E.setAttribute("role","status"),E.setAttribute("aria-live","polite"),E.textContent=this.i18n.offlineMessage,typeof navigator<"u"&&!navigator.onLine&&E.classList.add("gengage-chat-offline-bar--visible"),P.appendChild(E);const A=()=>E.classList.add("gengage-chat-offline-bar--visible"),R=()=>E.classList.remove("gengage-chat-offline-bar--visible");window.addEventListener("offline",A),window.addEventListener("online",R),this._cleanups.push(()=>{window.removeEventListener("offline",A),window.removeEventListener("online",R)}),this._kvkkSlot=document.createElement("div"),this._kvkkSlot.className="gengage-chat-kvkk-slot",this._kvkkSlot.dataset.gengagePart="chat-kvkk-slot",P.appendChild(this._kvkkSlot),this.messagesEl=document.createElement("div"),this.messagesEl.id=Wt,this.messagesEl.className="gengage-chat-messages",this.messagesEl.dataset.gengagePart="chat-messages",this.messagesEl.setAttribute("role","log"),this.messagesEl.setAttribute("aria-live","polite"),this.messagesEl.setAttribute("aria-atomic","false"),this.messagesEl.setAttribute("aria-label",this.i18n.chatMessagesAriaLabel),In(this.messagesEl);const j=document.createElement("button");j.type="button",j.className="gengage-chat-former-messages-btn gds-chip",j.dataset.gengagePart="chat-former-messages-button",j.textContent=this.i18n.showFormerMessagesButton,j.setAttribute("aria-label",this.i18n.showFormerMessagesButton),j.style.display="none",j.addEventListener("click",()=>{this._options.presentation?.onReleasePresentationFocus?.()}),this.messagesEl.appendChild(j),this._formerMessagesBtn=j;const Y=()=>{this._userInteractionUntil=Date.now()+2e3};let ie=!1;const de=()=>this._options.presentation,I=()=>{ie||(ie=!0,requestAnimationFrame(()=>{ie=!1;const{scrollTop:k,scrollHeight:J,clientHeight:oe}=this.messagesEl,ge=J-k-oe;this._userScrolledUp=ge>10;const fe=this._presentationPinned?ge<96:ge<32,Le=Date.now(),Ee=Le<this._programmaticScrollUntil,F=!fe&&Le<this._userInteractionUntil,U=Ee?!1:F;fe!==this._presentationPinned&&(this._presentationPinned=fe,de()?.onPinnedToBottomChange?.(fe)),U!==this._presentationUserInteracting&&(this._presentationUserInteracting=U,de()?.onUserInteractingChange?.(U))}))};this.messagesEl.addEventListener("scroll",I,{passive:!0}),this._cleanups.push(()=>{this.messagesEl.removeEventListener("scroll",I)});const H=k=>{Y(),k.deltaY<-6&&this._presentationFocusThreadId&&this._options.presentation?.onFormerMessagesHint?.()};this.messagesEl.addEventListener("wheel",H,{passive:!0}),this._cleanups.push(()=>this.messagesEl.removeEventListener("wheel",H));const C=k=>{Y(),this._touchStartY=k.touches?.[0]?.clientY??null},M=k=>{Y();const J=k.touches?.[0]?.clientY,oe=this._touchStartY;typeof J=="number"&&typeof oe=="number"&&J-oe>10&&this._presentationFocusThreadId&&this._options.presentation?.onFormerMessagesHint?.()};this.messagesEl.addEventListener("touchstart",C,{passive:!0}),this.messagesEl.addEventListener("touchmove",M,{passive:!0}),this._cleanups.push(()=>{this.messagesEl.removeEventListener("touchstart",C),this.messagesEl.removeEventListener("touchmove",M)}),P.appendChild(this.messagesEl),this._panelFloatingEl=document.createElement("div"),this._panelFloatingEl.className="gengage-chat-panel-float",this._panelFloatingEl.dataset.gengagePart="chat-panel-floating-layer",this._panelEl.appendChild(this._panelFloatingEl),this._resetPanelAiZoneElement(),this._pillsEl=document.createElement("div"),this._pillsEl.className="gengage-chat-pills",this._pillsEl.dataset.gengagePart="chat-suggestion-pills",this._pillsEl.setAttribute("role","toolbar"),this._pillsEl.setAttribute("aria-label",this.i18n.suggestionsAriaLabel),this._pillsEl.style.display="none";const G=document.createElement("div");G.className="gengage-chat-pills-scroll",G.dataset.gengagePart="chat-suggestion-pills-scroll",this._pillsEl.appendChild(G);const D=document.createElement("button");D.className="gengage-chat-pills-arrow gds-btn gds-btn-ghost",D.dataset.gengagePart="chat-suggestion-pills-more",D.type="button",D.setAttribute("aria-label",this.i18n.moreSuggestionsAriaLabel),D.textContent="›",D.addEventListener("click",()=>{G.scrollBy({left:150,behavior:"smooth"})}),this._pillsEl.appendChild(D);let B=!1;const ee=()=>{B||(B=!0,requestAnimationFrame(()=>{B=!1;const k=G.scrollLeft+G.clientWidth>=G.scrollWidth-4;D.style.display=k?"none":""}))};G.addEventListener("scroll",ee,{passive:!0}),this._cleanups.push(()=>{G.removeEventListener("scroll",ee)}),P.appendChild(this._pillsEl),this._inputChipsEl=document.createElement("div"),this._inputChipsEl.className="gengage-chat-input-chips",this._inputChipsEl.dataset.gengagePart="chat-input-chips",this._inputChipsEl.style.display="none",P.appendChild(this._inputChipsEl);const Q=document.createElement("div");Q.className="gengage-chat-input-area",Q.dataset.gengagePart="chat-input-area",this.inputEl=document.createElement("textarea"),this.inputEl.className="gengage-chat-input",this.inputEl.dataset.gengagePart="chat-input",this.inputEl.rows=1,this.inputEl.placeholder=this.i18n.inputPlaceholder,this.inputEl.setAttribute("aria-label",this.i18n.inputAriaLabel??this.i18n.inputPlaceholder),this.inputEl.addEventListener("input",()=>{this._resizeRafId!==null&&cancelAnimationFrame(this._resizeRafId),this._resizeRafId=requestAnimationFrame(()=>{this._resizeRafId=null,this.inputEl.style.height="auto",this.inputEl.style.height=`${Math.min(this.inputEl.scrollHeight,120)}px`}),this._updateSendEnabled()}),this.inputEl.addEventListener("keydown",k=>{k.key==="Enter"&&!k.isComposing&&((this._options.getMobileViewport?.()??window.innerWidth<=768)||!k.shiftKey)&&(k.preventDefault(),this._submit())}),this.inputEl.addEventListener("paste",k=>{const J=k.clipboardData;if(!J)return;let oe=null;const ge=J.files?.[0];if(ge&&ge.type.startsWith("image/"))oe=ge;else if(J.items?.length)for(let fe=0;fe<J.items.length;fe++){const Le=J.items[fe];if(Le?.kind==="file"&&Le.type.startsWith("image/")){const Ee=Le.getAsFile();if(Ee){oe=Ee;break}}}oe&&(k.preventDefault(),this._routeAttachmentFile(oe))}),this._fileInput=document.createElement("input"),this._fileInput.type="file",this._fileInput.accept="image/jpeg,image/png,image/webp",this._fileInput.style.display="none",this._fileInput.addEventListener("change",()=>{const k=this._fileInput.files?.[0];k&&this._routeAttachmentFile(k),this._fileInput.value=""});const K=document.createElement("div");K.className="gengage-chat-attach-wrap",K.dataset.gengagePart="chat-attach-wrap",this._attachWrapEl=K;const _=document.createElement("button");this._attachBtn=_,_.className="gengage-chat-attach-btn gds-btn gds-btn-ghost",_.dataset.gengagePart="chat-attach-button",_.type="button",_.setAttribute("aria-label",this.i18n.attachImageButton),_.setAttribute("aria-haspopup","menu"),_.setAttribute("aria-expanded","false"),_.innerHTML='<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg>',_.addEventListener("click",k=>{k.stopPropagation(),this._toggleAttachMenu()});const z=document.createElement("div");this._attachMenuEl=z,z.className="gengage-chat-attach-menu gds-menu",z.dataset.gengagePart="chat-attach-menu",z.setAttribute("role","menu"),z.setAttribute("hidden","");const L=document.createElement("button");L.type="button",L.className="gengage-chat-attach-menu-item gds-btn gds-btn-ghost",L.dataset.gengagePart="chat-attach-menu-select-photo",L.setAttribute("role","menuitem"),L.innerHTML=`<span class="gengage-chat-attach-menu-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg></span><span class="gengage-chat-attach-menu-label">${this.i18n.attachMenuSelectPhoto}</span>`,L.addEventListener("click",k=>{k.stopPropagation(),this._closeAttachMenu(),this._fileInput.click()});const O=document.createElement("div");O.className="gengage-chat-attach-menu-sep",O.dataset.gengagePart="chat-attach-menu-separator",O.setAttribute("aria-hidden","true");const $=document.createElement("button");$.type="button",$.className="gengage-chat-attach-menu-item gds-btn gds-btn-ghost",$.dataset.gengagePart="chat-attach-menu-paste",$.setAttribute("role","menuitem"),$.innerHTML=`<span class="gengage-chat-attach-menu-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 2H9a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1Z"/><path d="M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/><path d="M16 4h2a2 2 0 0 1 2 2v4"/><path d="M21 14H11"/><path d="m15 10-4 4 4 4"/></svg></span><span class="gengage-chat-attach-menu-label">${this.i18n.attachMenuPaste}</span>`,$.addEventListener("click",k=>{k.stopPropagation();const J=typeof navigator.clipboard?.read=="function"?navigator.clipboard.read():void 0;this._pasteImageFromClipboardMenu(J)}),z.appendChild(L),z.appendChild(O),z.appendChild($),K.appendChild(_),K.appendChild(z),this._previewStrip=document.createElement("div"),this._previewStrip.className="gengage-chat-attachment-preview gengage-chat-attachment-preview--hidden gds-card-soft",this._previewStrip.dataset.gengagePart="chat-attachment-preview";const Z=document.createElement("img");Z.className="gengage-chat-attachment-preview-thumb",Z.dataset.gengagePart="chat-attachment-preview-thumb",Z.alt="",this._previewName=document.createElement("span"),this._previewName.className="gengage-chat-attachment-name",this._previewName.dataset.gengagePart="chat-attachment-preview-name";const he=document.createElement("button");he.className="gengage-chat-attachment-remove gds-btn gds-btn-ghost",he.dataset.gengagePart="chat-attachment-preview-remove",he.type="button",he.setAttribute("aria-label",this.i18n.removeAttachmentButton),he.textContent="×",he.addEventListener("click",()=>this.clearAttachment()),this._previewStrip.appendChild(Z),this._previewStrip.appendChild(this._previewName),this._previewStrip.appendChild(he),this.sendBtn=document.createElement("button"),this.sendBtn.className="gengage-chat-send gds-btn gds-btn-primary",this.sendBtn.dataset.gengagePart="chat-send",this.sendBtn.type="button",this.sendBtn.disabled=!0,this.sendBtn.setAttribute("aria-label",this.i18n.sendButton),this.sendBtn.dataset.tooltip=this.i18n.sendButton,this._renderSendButtonIcon("send"),this.sendBtn.addEventListener("click",()=>{if(this._sendStopHandler){const k=this._sendStopHandler;this.hideStopButton(),k();return}this._submit()}),Q.addEventListener("dragover",k=>{k.preventDefault(),Q.classList.add("gengage-chat-input-area--dragover")}),Q.addEventListener("dragleave",()=>{Q.classList.remove("gengage-chat-input-area--dragover")}),Q.addEventListener("drop",k=>{k.preventDefault(),Q.classList.remove("gengage-chat-input-area--dragover");const J=k.dataTransfer?.files[0];J&&this._routeAttachmentFile(J)});const q=document.createElement("div");q.className="gengage-chat-input-pill gds-input-shell",q.dataset.gengagePart="chat-input-shell",q.appendChild(K),q.appendChild(this.inputEl),this._voiceEnabled&&fc()&&(this._micBtn=document.createElement("button"),this._micBtn.className="gengage-chat-mic-btn gds-btn gds-btn-ghost",this._micBtn.dataset.gengagePart="chat-mic-button",this._micBtn.type="button",this._micBtn.setAttribute("aria-label",this.i18n.voiceButton),this._micBtn.innerHTML='<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" y1="19" x2="12" y2="23"/><line x1="8" y1="23" x2="16" y2="23"/></svg>',this._micBtn.addEventListener("click",()=>this._toggleVoice()),q.appendChild(this._micBtn),this._voiceInput=new bc({onInterim:k=>{this._resizeRafId!==null&&(cancelAnimationFrame(this._resizeRafId),this._resizeRafId=null),this.inputEl.value=k,this.inputEl.style.height="auto",this.inputEl.style.height=`${Math.min(this.inputEl.scrollHeight,120)}px`},onFinal:k=>{this.inputEl.value=k},onAutoSubmit:k=>{this.inputEl.value=k,this._micBtn?.classList.remove("gengage-chat-mic-btn--active"),this._submit()},onStateChange:k=>{k==="listening"?this._micBtn?.classList.add("gengage-chat-mic-btn--active"):this._micBtn?.classList.remove("gengage-chat-mic-btn--active")},onError:(k,J)=>{this._micBtn?.classList.remove("gengage-chat-mic-btn--active")}},{lang:this._voiceLang})),q.appendChild(this.sendBtn),Q.appendChild(this._previewStrip),Q.appendChild(this._fileInput),Q.appendChild(q),P.appendChild(Q),m.appendChild(P),this._comparisonDockSlotEl=document.createElement("div"),this._comparisonDockSlotEl.className="gengage-chat-comparison-dock-slot",this._comparisonDockSlotEl.dataset.gengagePart="comparison-dock-slot",m.appendChild(this._comparisonDockSlotEl),this.root.appendChild(m),this._setupHorizontalSwipe(P);const te=this._createFooterAttribution();te&&this.root.appendChild(te);const X=k=>{k.key==="Escape"&&e.onClose()};this.root.addEventListener("keydown",X),this._cleanups.push(()=>this.root.removeEventListener("keydown",X)),t.appendChild(this.root)}addMessage(t){const e=this._options.renderMessageUISpec?.(t)??null;if(!(t.content||t.attachment||e||t.role==="user"&&this._onRollback))return;const a=document.createElement("div");if(a.className=`gengage-chat-bubble gds-message ${t.role==="assistant"?"gds-message-assistant":"gds-message-user"} gengage-chat-bubble--${t.role}`,a.dataset.gengagePart=t.role==="assistant"?"chat-message-assistant":"chat-message-user",a.setAttribute("role","listitem"),a.dataset.messageId=t.id,t.threadId&&(a.dataset.threadId=t.threadId),this._firstBotMessageIds.has(t.id)&&a.classList.add("gengage-chat-bubble--first"),t.attachment){const n=document.createElement("img");n.className="gengage-chat-attachment-thumb";const r=URL.createObjectURL(t.attachment);n.src=r,n.alt=t.attachment.name,n.addEventListener("load",()=>URL.revokeObjectURL(r),{once:!0}),n.addEventListener("error",()=>URL.revokeObjectURL(r),{once:!0}),a.insertBefore(n,a.firstChild)}if(t.content){const n=document.createElement("div");if(n.className="gengage-chat-bubble-text",n.dataset.gengagePart="chat-message-text",t.role==="assistant"){if(t.renderHint==="photo_analysis"?(a.classList.add("gengage-chat-bubble--photo-analysis"),this._renderPhotoAnalysisCard(n,t.photoAnalysis)):n.innerHTML=Ie(t.content),this._onLinkClick){const r=n.querySelectorAll("a[href]");for(const i of r)i.addEventListener("click",o=>{o.preventDefault();const s=i.getAttribute("href");s&&this._onLinkClick?.(s)})}}else n.textContent=t.content;a.appendChild(n)}if(e&&(a.classList.add("gengage-chat-bubble--ui-spec"),t.content||a.classList.add("gengage-chat-bubble--ui-spec-only"),e.classList.add("gengage-chat-bubble-ui-spec"),(e.classList.contains("gengage-chat-panel-restore-card")||e.querySelector(".gengage-chat-panel-restore-card")!==null)&&a.classList.add("gengage-chat-bubble--panel-restore"),a.appendChild(e)),t.role==="user"&&this._onRollback){const n=document.createElement("button");n.className="gengage-chat-rollback-btn gds-btn gds-btn-ghost",n.dataset.gengagePart="chat-message-rollback",n.type="button",n.setAttribute("aria-label",this.i18n.rollbackAriaLabel),n.title=this.i18n.rollbackAriaLabel,n.innerHTML='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="1 4 1 10 7 10"/><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"/></svg>',n.addEventListener("click",r=>{r.stopPropagation(),this._onRollback?.(t.id)}),a.appendChild(n)}this.messagesEl.appendChild(a),this._presentationFocusThreadId&&this._applyPresentationCollapsed(),this._scrollToBottom(t.role==="user")}removeMessageBubble(t){this._firstBotMessageIds.delete(t),this.messagesEl.querySelector(`[data-message-id="${Ae(t)}"]`)?.remove(),this._presentationFocusThreadId&&this._applyPresentationCollapsed()}showTypingIndicator(t,e="auto"){this.removeTypingIndicator();const a=this._thinkingSteps.length>0,n=a?this._thinkingSteps.slice(-3):t?[t]:this.i18n.loadingSequenceGeneric,{root:r,binding:i}=this._createLoadingSequence("chat",n,"chat-typing-indicator","gengage-chat-typing");r.dataset.typing="true",this._typingLoadingBinding=i,this.messagesEl.appendChild(r),a&&this._applyLoadingSteps(i,this._thinkingSteps,!0),this.setTypingIndicatorMode(e),this._scrollToBottom(!0)}resumeTypingIndicator(){if(this._typingLoadingBinding)return;const t=this._thinkingSteps.length>0,e=t?this._thinkingSteps.slice(-3):this.i18n.loadingSequenceGeneric,{root:a,binding:n}=this._createLoadingSequence("chat",e,"chat-typing-indicator","gengage-chat-typing");a.dataset.typing="true",this._typingLoadingBinding=n,this.messagesEl.appendChild(a),t&&this._applyLoadingSteps(n,this._thinkingSteps,!0),this.setTypingIndicatorMode("auto"),this._scrollToBottom(!0)}addThinkingStep(t){const e=t.trim();e&&this._thinkingSteps[this._thinkingSteps.length-1]!==e&&(this._thinkingSteps.push(e),this._thinkingSteps=this._thinkingSteps.slice(-3),this._typingLoadingBinding&&this._applyLoadingSteps(this._typingLoadingBinding,this._thinkingSteps,!0),this._panelLoadingBinding&&this._applyLoadingSteps(this._panelLoadingBinding,this._thinkingSteps,!0),this._panelAiZoneLoadingBinding&&this._applyLoadingSteps(this._panelAiZoneLoadingBinding,this._thinkingSteps,!0))}setThinkingSteps(t){const e=t.map(a=>a.trim()).filter(Boolean).slice(-3);e.length!==0&&(this._thinkingSteps=e,this._typingLoadingBinding&&this._applyLoadingSteps(this._typingLoadingBinding,this._thinkingSteps,!0),this._panelLoadingBinding&&this._applyLoadingSteps(this._panelLoadingBinding,this._thinkingSteps,!0),this._panelAiZoneLoadingBinding&&this._applyLoadingSteps(this._panelAiZoneLoadingBinding,this._thinkingSteps,!0))}removeTypingIndicator(){this._destroyLoadingBinding(this._typingLoadingBinding),this._typingLoadingBinding=null,this.messagesEl.querySelector(".gengage-chat-typing")?.remove(),this._thinkingSteps=[],this.hideStopButton()}setTypingIndicatorMode(t){const e=this.messagesEl.querySelector(".gengage-chat-typing"),a=this._typingLoadingBinding;if(!e||!a)return;const n=t==="auto"?this._panelOwnsProgressSurface()?"presence":"full":t;e.dataset.progressMode!==n&&(e.classList.toggle("gengage-chat-typing--presence",n==="presence"),e.dataset.progressMode=n,n==="presence"?(a.labelEl.setAttribute("aria-hidden","true"),a.labelEl.classList.add("gengage-sr-only"),e.setAttribute("aria-label",this.i18n.loadingMessage)):(a.labelEl.removeAttribute("aria-hidden"),a.labelEl.classList.remove("gengage-sr-only"),e.removeAttribute("aria-label")))}_panelOwnsProgressSurface(){return(this._options.getMobileViewport?.()??window.innerWidth<=768)||!this._panelVisible||this._panelCollapsed?!1:this._panelLoadingBinding!==null||this._panelAiZoneLoadingBinding!==null}showStopButton(t){this._sendStopHandler=t,this.sendBtn.disabled=!1,this.sendBtn.classList.add("gengage-chat-send--stop","gds-btn-secondary"),this.sendBtn.classList.remove("gds-btn-primary"),this.sendBtn.setAttribute("aria-label",this.i18n.stopGenerating),this.sendBtn.dataset.tooltip=this.i18n.stopGenerating,this._renderSendButtonIcon("stop")}hideStopButton(){this._sendStopHandler=null,this.sendBtn.classList.remove("gengage-chat-send--stop","gds-btn-secondary"),this.sendBtn.classList.add("gds-btn-primary"),this.sendBtn.setAttribute("aria-label",this.i18n.sendButton),this.sendBtn.dataset.tooltip=this.i18n.sendButton,this._renderSendButtonIcon("send"),this._updateSendEnabled()}showError(t,e){const a=document.createElement("div");a.className="gengage-chat-error",a.setAttribute("role","alert");const n=document.createElement("span");if(n.textContent=t??this.i18n.errorMessage,a.appendChild(n),e){const r=document.createElement("button");r.className="gengage-chat-error-retry",r.textContent=this.i18n.retryButton??"Retry",r.addEventListener("click",()=>{a.remove(),e()}),a.appendChild(r)}this.messagesEl.appendChild(a),this._scrollToBottom(!0)}showErrorWithRecovery(t,e){this.showError(t),this.setRecoveryPills(e)}showRecoveryPillsOnly(t){this.setRecoveryPills(t)}setRecoveryPills(t){this.setPills([{label:this.i18n.tryAgainButton,onAction:t.onRetry},{label:this.i18n.askSomethingElseButton,onAction:t.onNewQuestion}])}clearMessages(){this._firstBotMessageIds.clear();const t=this._formerMessagesBtn;for(const e of[...this.messagesEl.children])e!==t&&e.remove()}setPills(t){const e=this._pillsEl.querySelector(".gengage-chat-pills-scroll");if(!e)return;for(;e.firstChild;)e.removeChild(e.firstChild);if(t.length===0){this._pillsEl.style.display="none";return}this._pillsEl.style.display="";for(const n of t){const r=document.createElement("button");if(r.className=n.image?"gengage-chat-pill gds-chip gds-chip-active gengage-chat-pill--rich":"gengage-chat-pill gds-chip gds-chip-active",r.type="button",n.icon){const o=$n[n.icon]??Fn,s=document.createElement("span");s.className="gengage-chat-pill-icon",s.innerHTML=o,r.appendChild(s)}if(n.image&&je(n.image)){const o=document.createElement("img");o.className="gengage-chat-pill-img",o.src=n.image,o.alt="",r.appendChild(o)}const i=document.createElement("span");if(i.className="gengage-chat-pill-text",i.textContent=n.label,r.appendChild(i),n.description){const o=document.createElement("span");o.className="gengage-chat-pill-desc";const s=`pill-desc-${Math.random().toString(36).slice(2,9)}`;o.id=s,o.textContent=n.description,r.appendChild(o),r.setAttribute("aria-describedby",s)}r.addEventListener("click",()=>n.onAction()),e.appendChild(r)}const a=this._pillsEl.querySelector(".gengage-chat-pills-arrow");a&&requestAnimationFrame(()=>{a.style.display=e.scrollWidth>e.clientWidth?"":"none"})}focusInput(){this.inputEl.focus()}showKvkkBanner(t){this._kvkkSlot.innerHTML="";const e=yc({htmlContent:t});this._kvkkSlot.appendChild(e)}hideKvkkBanner(){this._kvkkSlot.innerHTML=""}isKvkkBannerVisible(){return this._kvkkSlot.childNodes.length>0}getElement(){return this.root}openAttachmentPicker(){this._fileInput.click()}setAttachmentControlsVisible(t){this._attachWrapEl&&(this._attachWrapEl.style.display=t?"":"none",t||this._closeAttachMenu())}setBeautyPhotoStepCard(t){this._beautyPhotoStepEl=kc(this._beautyPhotoStepEl,this._conversationEl??null,t,this.i18n,()=>this.openAttachmentPicker())}stageAttachment(t){this._pendingAttachment=t,this._previewName.textContent=t.name;const e=this._previewStrip.querySelector(".gengage-chat-attachment-preview-thumb");e&&(e.src&&e.src.startsWith("blob:")&&URL.revokeObjectURL(e.src),e.src=URL.createObjectURL(t)),this._previewStrip.classList.remove("gengage-chat-attachment-preview--hidden"),this._updateSendEnabled()}clearAttachment(){const t=this._previewStrip.querySelector(".gengage-chat-attachment-preview-thumb");t?.src&&(URL.revokeObjectURL(t.src),t.src=""),this._pendingAttachment=null,this._previewStrip.classList.add("gengage-chat-attachment-preview--hidden"),this._updateSendEnabled()}_routeAttachmentFile(t){if(this._onAttachment)try{this._onAttachment(t)}catch(e){console.error("[gengage:chat] Attachment callback error:",e)}else this.stageAttachment(t)}_closeAttachMenu(){this._attachMenuEl&&(this._attachMenuEl.setAttribute("hidden",""),this._attachBtn?.setAttribute("aria-expanded","false"),this._attachMenuClickTimerId!==null&&(clearTimeout(this._attachMenuClickTimerId),this._attachMenuClickTimerId=null),this._attachMenuCleanup&&(this._attachMenuCleanup(),this._attachMenuCleanup=null))}_openAttachMenu(){if(!this._attachMenuEl)return;this._attachMenuEl.removeAttribute("hidden"),this._attachBtn?.setAttribute("aria-expanded","true");const t=a=>{this._attachWrapEl?.contains(a.target)||this._closeAttachMenu()},e=a=>{a.key==="Escape"&&(a.stopPropagation(),this._closeAttachMenu())};this._attachMenuClickTimerId=window.setTimeout(()=>{this._attachMenuClickTimerId=null,document.addEventListener("click",t,!0)},0),document.addEventListener("keydown",e,!0),this._attachMenuCleanup=()=>{document.removeEventListener("click",t,!0),document.removeEventListener("keydown",e,!0)}}_toggleAttachMenu(){this._attachMenuEl&&(this._attachMenuEl.hasAttribute("hidden")?this._openAttachMenu():this._closeAttachMenu())}async _pasteImageFromClipboardMenu(t){const e=await Ic(t);if(e){this._routeAttachmentFile(e),this._closeAttachMenu();return}qe("gengage:global:error",{message:this.i18n.clipboardNoImageMessage,source:"chat"}),this._closeAttachMenu()}getPendingAttachment(){return this._pendingAttachment}setPanelAiZoneState(t,e){if(this._panelAiZoneEl.isConnected&&(this._clearPanelAiZoneState(),t!=="hidden")){if(this._panelAiZoneEl.removeAttribute("hidden"),t==="analyzing"){this._panelAiZoneEl.innerHTML="";const a=[e?.analyzingLabel??this.i18n.aiAnalysisAnalyzingLabel,...this.i18n.loadingSequencePanel],n=this._thinkingSteps.length>0,{root:r,binding:i}=this._createLoadingSequence("panel",n?this._thinkingSteps.slice(-3):a,"panel-ai-zone-loading","gengage-chat-panel-ai-zone-inner");this._panelAiZoneLoadingBinding=i,n&&this._applyLoadingSteps(i,this._thinkingSteps,!0),this._panelAiZoneEl.appendChild(r)}else t==="results"&&e?.resultEl&&(this._panelAiZoneEl.innerHTML="",this._panelAiZoneEl.appendChild(e.resultEl));this.setTypingIndicatorMode("auto")}}_clearPanelAiZoneState(){this._destroyLoadingBinding(this._panelAiZoneLoadingBinding),this._panelAiZoneLoadingBinding=null,this._panelAiZoneEl.innerHTML="",this._panelAiZoneEl.setAttribute("hidden",""),this.setTypingIndicatorMode("auto")}_resetPanelAiZoneElement(){this._panelAiZoneEl=document.createElement("div"),this._panelAiZoneEl.className="gengage-chat-panel-ai-zone",this._panelAiZoneEl.setAttribute("hidden","")}_emitHostShellSync(){this.setTypingIndicatorMode("auto"),this._onHostShellSync?.()}_applyPanelCollapsedState(){this._panelEl.classList.toggle("gengage-chat-panel--collapsed",this._panelCollapsed);const t=this._dividerEl.querySelector(".gengage-chat-panel-divider-toggle");t&&(t.textContent=this._panelCollapsed?"«":"»")}_syncPanelTopBarFromContent(t){const e=t.querySelector(".gengage-chat-product-grid-head");if(e){const a=e.querySelector(".gengage-chat-product-grid-head-title"),n=e.querySelector(".gengage-chat-product-grid-head-actions");if(a?.textContent?.trim()){const r=a.textContent.trim();t.dataset.gengagePanelDerivedTitle=r,this._panelTopBar.setTitle(r)}n?(n.classList.add("gengage-chat-panel-topbar-toolbar-host"),this._panelTopBar.setActions(n)):this._panelTopBar.setActions(null),e.remove();return}this._syncPanelTopBarTitleFromContent(t)}_syncPanelTopBarTitleFromContent(t){const e=t.dataset.gengagePanelDerivedTitle;if(e?.trim()){this._panelTopBar.setTitle(e.trim());return}const a=t.querySelector(".gengage-chat-product-details-title, .gengage-chat-product-details-similars-heading, .gengage-chat-ai-top-picks-title")?.textContent?.trim();a&&this._panelTopBar.setTitle(a)}setPanelContent(t,e){this._destroyLoadingBinding(this._panelLoadingBinding),this._panelLoadingBinding=null,e?.preserveAiZone!==!0&&this._clearPanelAiZoneState(),this._panelVisible?this._swapPanelContent(t):(this._panelEl.innerHTML="",this._destroyLoadingBinding(this._panelAiZoneLoadingBinding),this._panelAiZoneLoadingBinding=null,this._resetPanelAiZoneElement(),this._panelEl.appendChild(this._panelTopBar.getElement()),this._panelEl.appendChild(this._panelAiZoneEl),this._panelTopBar.setActions(null),this._panelEl.appendChild(t),this._panelEl.appendChild(this._panelFloatingEl)),this._syncPanelTopBarFromContent(t),this._dividerEl.classList.remove("gengage-chat-panel-divider--hidden"),this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this.root.classList.add("gengage-chat-drawer--with-panel"),this._panelCollapsed&&this.setPanelCollapsed(!1),this._syncComparisonDockVisibility(),requestAnimationFrame(()=>{this._updateScrollAffordance(),this._smoothScrollPanelListToTop()}),this._reopenPanelBtn&&(this._reopenPanelBtn.style.display="none"),this._emitHostShellSync()}_swapPanelContent(t){this._panelTopBar.setActions(null);const e=this._panelEl.querySelector(".gengage-chat-panel-skeleton");if(e){e.replaceWith(t);return}const a=this.getPanelContentElement();if(a){a.replaceWith(t);return}this._panelEl.insertBefore(t,this._panelFloatingEl)}appendPanelContent(t){this._panelEl.insertBefore(t,this._panelFloatingEl),this._syncPanelTopBarFromContent(this.getPanelContentElement()??t),this._dividerEl.classList.remove("gengage-chat-panel-divider--hidden"),this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this.root.classList.add("gengage-chat-drawer--with-panel"),this.setPanelCollapsed(this._panelCollapsed),this._syncComparisonDockVisibility(),this._emitHostShellSync()}getPanelContentElement(){const t=this._panelEl.children;for(let e=0;e<t.length;e++){const a=t[e];if(!(a.classList.contains("gengage-chat-panel-topbar")||a.classList.contains("gengage-chat-panel-ai-zone")||a.classList.contains("gengage-chat-panel-float")))return a}return null}resyncPanelTopBarFromCurrentContent(){const t=this.getPanelContentElement();t&&this._syncPanelTopBarFromContent(t)}isPanelVisible(){return this._panelVisible}hasPanelContent(){return this._panelVisible&&this.getPanelContentElement()!==null}isPanelLoading(){return this._panelEl.querySelector(".gengage-chat-panel-skeleton")!==null}showPanelLoading(t){this._destroyLoadingBinding(this._panelLoadingBinding),this._panelLoadingBinding=null,this._dividerEl.classList.remove("gengage-chat-panel-divider--hidden"),this._panelEl.innerHTML="",this._resetPanelAiZoneElement(),this._panelEl.appendChild(this._panelTopBar.getElement()),this._panelEl.appendChild(this._panelAiZoneEl);const e=document.createElement("div");e.className="gengage-chat-panel-skeleton";const a=t==="comparisonTable"?this.i18n.loadingSequenceComparison:this.i18n.loadingSequencePanel,n=this._thinkingSteps.length>0,{root:r,binding:i}=this._createLoadingSequence("panel",n?this._thinkingSteps.slice(-3):a,"panel-loading-status","gengage-chat-panel-loading-status");switch(this._panelLoadingBinding=i,n&&this._applyLoadingSteps(i,this._thinkingSteps,!0),t){case"productDetails":{e.appendChild(r);const o=document.createElement("div");o.className="gengage-chat-panel-skeleton-block gengage-chat-panel-skeleton-block--image",e.appendChild(o);for(let s=0;s<3;s++){const c=document.createElement("div");c.className="gengage-chat-panel-skeleton-block gengage-chat-panel-skeleton-block--text",e.appendChild(c)}break}case"productList":case"groupList":{e.appendChild(r);const o=document.createElement("div");o.className="gengage-chat-panel-skeleton-grid";for(let s=0;s<6;s++){const c=document.createElement("div");c.className="gengage-chat-panel-skeleton-block gengage-chat-panel-skeleton-block--card",o.appendChild(c)}e.appendChild(o);break}case"comparisonTable":{e.classList.add("gengage-chat-panel-skeleton--comparison"),e.appendChild(r);const o=document.createElement("div");o.className="gengage-chat-comparison gengage-chat-comparison--skeleton",o.setAttribute("aria-busy","true");const s=document.createElement("div");s.className="gengage-chat-comparison-recommended";const c=document.createElement("div");c.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-rec-label",s.appendChild(c);const l=document.createElement("div");l.className="gengage-chat-comparison-recommended-body";const d=document.createElement("div");d.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-rec-img",d.setAttribute("aria-hidden","true");const g=document.createElement("div");g.className="gengage-chat-comparison-recommended-info";for(let A=0;A<2;A++){const R=document.createElement("div");R.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-rec-title",A===1&&R.classList.add("gengage-chat-comparison-skeleton-rec-title--short"),g.appendChild(R)}const p=document.createElement("div");p.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-rec-price",g.appendChild(p),l.appendChild(d),l.appendChild(g),s.appendChild(l);const u=document.createElement("div");u.className="gengage-chat-comparison-highlights";const m=document.createElement("div");m.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-hl-label",u.appendChild(m);const f=document.createElement("ul");f.className="gengage-chat-comparison-skeleton-hl-list";for(let A=0;A<3;A++){const R=document.createElement("li"),j=document.createElement("div");j.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-hl-line",A===1&&j.classList.add("gengage-chat-comparison-skeleton-hl-line--medium"),A===2&&j.classList.add("gengage-chat-comparison-skeleton-hl-line--short"),R.appendChild(j),f.appendChild(R)}u.appendChild(f),s.appendChild(u),o.appendChild(s);const b=document.createElement("div");b.className="gengage-chat-comparison-key-differences";const h=document.createElement("div");h.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-kd-heading",b.appendChild(h);const y=document.createElement("div");y.className="gengage-chat-comparison-key-differences-content";for(let A=0;A<4;A++){const R=document.createElement("div");R.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-kd-line",y.appendChild(R)}b.appendChild(y),o.appendChild(b);const x=document.createElement("div");x.className="gengage-chat-comparison-special gengage-chat-comparison-special--skeleton";const v=document.createElement("div");v.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-special-line",x.appendChild(v),o.appendChild(x);const w=document.createElement("div");w.className="gengage-chat-comparison-skeleton-table-wrap";const P=document.createElement("div");P.className="gengage-chat-comparison-skeleton-table-head";const E=document.createElement("div");E.className="gengage-chat-comparison-skeleton-table-corner",P.appendChild(E);for(let A=0;A<3;A++){const R=document.createElement("div");R.className="gengage-chat-comparison-skeleton-table-col";const j=document.createElement("div");j.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-table-th-img";const Y=document.createElement("div");Y.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-table-th-name";const ie=document.createElement("div");ie.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-table-th-price",R.appendChild(j),R.appendChild(Y),R.appendChild(ie),P.appendChild(R)}w.appendChild(P);for(let A=0;A<3;A++){const R=document.createElement("div");R.className="gengage-chat-comparison-skeleton-table-row";const j=document.createElement("div");j.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-table-label",R.appendChild(j);for(let Y=0;Y<3;Y++){const ie=document.createElement("div");ie.className="gengage-chat-comparison-skeleton-shimmer gengage-chat-comparison-skeleton-table-cell",R.appendChild(ie)}w.appendChild(R)}o.appendChild(w),e.appendChild(o);break}default:e.appendChild(r);for(let o=0;o<3;o++){const s=document.createElement("div");s.className="gengage-chat-panel-skeleton-block",e.appendChild(s)}break}this._panelEl.appendChild(e),this._panelEl.appendChild(this._panelFloatingEl),this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this.root.classList.add("gengage-chat-drawer--with-panel"),this._applyPanelCollapsedState(),this._syncComparisonDockVisibility(),this._emitHostShellSync()}updatePanelTopBar(t,e,a){const n=this._options.getMobileViewport?.()??!1;this._panelTopBar.update(n?!0:t,e,a);const r=this.getPanelContentElement();r&&this._syncPanelTopBarTitleFromContent(r)}getPanelTopBarTitle(){return this._panelTopBar.getTitle()}updateFavoritesBadge(t){this._favBadgeEl&&(t>0?(this._favBadgeEl.textContent=t>99?"99+":String(t),this._favBadgeEl.style.display=""):this._favBadgeEl.style.display="none")}clearPanel(){this._destroyLoadingBinding(this._panelLoadingBinding),this._panelLoadingBinding=null,this._destroyLoadingBinding(this._panelAiZoneLoadingBinding),this._panelAiZoneLoadingBinding=null,this._panelEl.innerHTML="",this._resetPanelAiZoneElement(),this._panelEl.appendChild(this._panelTopBar.getElement()),this._panelEl.appendChild(this._panelAiZoneEl),this._panelEl.appendChild(this._panelFloatingEl),this._panelTopBar.setActions(null),this._panelVisible=!1,this._panelEl.classList.remove("gengage-chat-panel--visible","gengage-chat-panel--collapsed"),this.root.classList.remove("gengage-chat-drawer--with-panel"),this._dividerEl.classList.add("gengage-chat-panel-divider--hidden"),this._reopenPanelBtn&&(this._reopenPanelBtn.style.display="none"),this.setComparisonDockContent(null),this._emitHostShellSync()}_syncComparisonDockVisibility(){const t=this._panelVisible&&this._comparisonDockSlotEl.children.length>0;this._comparisonDockSlotEl.classList.toggle("gengage-chat-comparison-dock-slot--panel-visible",t),this._comparisonDockSlotEl.style.display=t?"":"none",this._comparisonDockSlotEl.setAttribute("aria-hidden",t?"false":"true")}setComparisonDockContent(t){this._comparisonDockSlotEl.replaceChildren(),t&&this._comparisonDockSlotEl.appendChild(t),this._syncComparisonDockVisibility()}hideMobilePanel(){this._panelVisible&&(this._panelVisible=!1,this._panelEl.classList.remove("gengage-chat-panel--visible"),this._reopenPanelBtn&&(this._reopenPanelBtn.style.display="flex"),this._syncComparisonDockVisibility(),this._emitHostShellSync())}_showMobilePanelFromBtn(){this._panelVisible||(this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this._reopenPanelBtn&&(this._reopenPanelBtn.style.display="none"),this._syncComparisonDockVisibility(),this._emitHostShellSync())}showMobilePanel(){this._showMobilePanelFromBtn()}expandPanel(){this._panelCollapsed=!1,this._panelEl.classList.remove("gengage-chat-panel--collapsed"),this._panelVisible||(this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this.root.classList.add("gengage-chat-drawer--with-panel")),this._syncComparisonDockVisibility(),this._emitHostShellSync()}setForceExpanded(){this._panelCollapsed=!1,this._panelEl.classList.remove("gengage-chat-panel--collapsed"),this._panelVisible||(this._panelVisible=!0,this._panelEl.classList.add("gengage-chat-panel--visible"),this.root.classList.add("gengage-chat-drawer--with-panel")),this._dividerEl.classList.remove("gengage-chat-panel-divider--hidden"),this._syncComparisonDockVisibility(),this._emitHostShellSync()}_smoothScrollPanelListToTop(){this._panelEl.scrollTop=0}_getChoicePrompterRevealScrollThreshold(){if(!(this._options.getMobileViewport?.()??window.innerWidth<=768))return 88;const t=this._panelEl.querySelector(".gengage-chat-product-grid--mobile .gengage-chat-product-card, .gengage-chat-product-grid .gengage-chat-product-card"),e=this._panelEl.querySelector(".gengage-chat-product-card"),a=t??e;if(!a)return 88;const n=Math.round(a.getBoundingClientRect().height);return!Number.isFinite(n)||n<=0?88:n}_updateScrollAffordance(){const t=this._panelEl,e=t.scrollTop+t.clientHeight>=t.scrollHeight-10,a=this._getChoicePrompterRevealScrollThreshold();t.classList.toggle("gengage-chat-panel--has-scroll",!e&&t.scrollHeight>t.clientHeight),t.classList.toggle("gengage-chat-panel--scrolled",t.scrollTop>a)}_setupHorizontalSwipe(t){let e=0,a=0;const n=i=>{if(!(this._options.getMobileViewport?.()??window.innerWidth<=768))return;const o=i.touches?.[0];o&&(e=o.clientX,a=o.clientY)},r=i=>{if(!(this._options.getMobileViewport?.()??window.innerWidth<=768))return;const o=i.changedTouches?.[0];if(!o)return;const s=o.clientX-e,c=o.clientY-a;Math.abs(s)>50&&Math.abs(s)>Math.abs(c)*2&&(this.togglePanel(),this._onPanelToggle?.())};t.addEventListener("touchstart",n,{passive:!0}),t.addEventListener("touchend",r,{passive:!0}),this._cleanups.push(()=>{t.removeEventListener("touchstart",n),t.removeEventListener("touchend",r)})}togglePanel(){this.setPanelCollapsed(!this._panelCollapsed)}isPanelCollapsed(){return this._panelCollapsed}setPanelCollapsed(t){this._panelCollapsed=t,this._applyPanelCollapsedState(),this._emitHostShellSync()}persistPanelState(t){try{const e=`gengage:panel:${t}`;this._panelCollapsed?sessionStorage.setItem(e,"collapsed"):sessionStorage.removeItem(e)}catch{}}restorePanelState(t){try{const e=`gengage:panel:${t}`;if(sessionStorage.getItem(e)==="collapsed")return this._panelCollapsed=!0,!0}catch{}return!1}_createLoadingSequence(t,e,a,n){const r=document.createElement("div");r.className=`${n} gds-progress-loader ${t==="chat"?"gds-progress-loader-chat":"gds-progress-loader-panel"}`,r.dataset.gengagePart=a,r.setAttribute("role","status"),r.setAttribute("aria-live","polite");const i=document.createElement("span");i.className=t==="chat"?"gengage-chat-typing-text gds-progress-label":"gengage-chat-panel-loading-label gds-progress-label",r.appendChild(i);const o=document.createElement("span");o.className=t==="chat"?"gengage-chat-typing-dots gds-progress-dots":"gds-progress-dots",o.setAttribute("aria-hidden","true");for(let c=0;c<3;c++){const l=document.createElement("span");l.className="gds-progress-dot",o.appendChild(l)}r.appendChild(o);const s={labelEl:i,steps:[],index:0,intervalId:null};return this._applyLoadingSteps(s,e),{root:r,binding:s}}_applyLoadingSteps(t,e,a=!1){const n=this._normalizeLoadingSteps(e),r=n[n.length-1],i=this._normalizeLoadingSteps(this.i18n.loadingSequenceGeneric);t.steps=a&&r?[r]:n.length>0?n:i.length>0?i:[this.i18n.loadingMessage],this._clearLoadingBindingInterval(t),t.index=0;const o=t.steps[t.index];t.labelEl.textContent!==o&&(t.labelEl.textContent=o),t.steps.length>1&&(t.intervalId=setInterval(()=>{t.index=(t.index+1)%t.steps.length,t.labelEl.textContent=t.steps[t.index]},Tc))}_normalizeLoadingSteps(t){return t.map(e=>e.trim()).filter(Boolean)}_clearLoadingBindingInterval(t){t?.intervalId&&(clearInterval(t.intervalId),t.intervalId=null)}_destroyLoadingBinding(t){this._clearLoadingBindingInterval(t)}_updateSendEnabled(){if(this._sendStopHandler){this.sendBtn.disabled=!1;return}const t=this.inputEl.value.trim().length>0||this._pendingAttachment!==null;this.sendBtn.disabled=!t}_renderSendButtonIcon(t){this.sendBtn.innerHTML=t==="stop"?'<span class="gengage-chat-send-stop-icon" aria-hidden="true"></span>':'<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"/></svg>'}_submit(){const t=this.inputEl.value.trim(),e=this._pendingAttachment;if(this._sendStopHandler){const a=this._sendStopHandler;if(this.hideStopButton(),a(),!t&&!e)return}else if(!t&&!e)return;this.onSend(t,e??void 0),this.inputEl.value="",this.inputEl.style.height="auto",this.clearAttachment(),this._updateSendEnabled()}_toggleVoice(){if(this._voiceInput)if(this._voiceInput.state==="listening"){const t=this._voiceInput.stop();t.trim()&&(this.inputEl.value=t,this._submit())}else this.inputEl.value="",this._voiceInput.start()}lockScrollForRestore(){this._scrollLockedUntil=Date.now()+500}_scrollToBottom(t=!1){!t&&this._userScrolledUp||!t&&this._options.presentation?.shouldBlockSoftAutoScroll?.()||!t&&Date.now()<this._scrollLockedUntil||requestAnimationFrame(()=>{this.messagesEl.scrollTop=this.messagesEl.scrollHeight,this._userScrolledUp=!1})}scrollToBottomIfNeeded(){this._scrollToBottom(!1)}updateBotMessage(t,e,a,n){const r=this.messagesEl.querySelector(`[data-message-id="${Ae(t)}"]`);if(!r)return;let i=r.querySelector(".gengage-chat-bubble-text");i||(i=document.createElement("div"),i.className="gengage-chat-bubble-text",r.appendChild(i)),a==="photo_analysis"?(r.classList.add("gengage-chat-bubble--photo-analysis"),this._renderPhotoAnalysisCard(i,n)):(r.classList.remove("gengage-chat-bubble--photo-analysis"),i.innerHTML=Ie(e)),this._scrollToBottom(!1)}markFirstBotMessage(t){this._firstBotMessageIds.add(t);const e=this.messagesEl.querySelector(`[data-message-id="${Ae(t)}"]`);e&&e.classList.add("gengage-chat-bubble--first")}scrollToLastThread(){const t=this.messagesEl.querySelectorAll("[data-thread-id]");if(t.length===0){this._scrollToBottom(!0);return}const e=t[t.length-1].getAttribute("data-thread-id");if(!e){this._scrollToBottom(!0);return}this._programmaticScrollUntil=Date.now()+700;const a=this.messagesEl.querySelector(`[data-thread-id="${Ae(e)}"]`);a?requestAnimationFrame(()=>{a.scrollIntoView({block:"start",behavior:"auto"}),this._userScrolledUp=!1}):this._scrollToBottom(!0)}scrollThreadIntoView(t,e="smooth"){const a=this.messagesEl.querySelectorAll(`[data-thread-id="${Ae(t)}"]`),n=this.messagesEl.ownerDocument.defaultView?.HTMLElement;if(!n)return!1;let r=null,i=null;for(let c=0;c<a.length;c++){const l=a[c];if(l instanceof n&&(i||(i=l),!l.classList.contains("gengage-chat-bubble--presentation-collapsed")&&!l.classList.contains("gengage-chat-bubble--hidden")&&l.offsetHeight!==0&&!(l.classList.contains("gengage-chat-bubble--assistant")&&(l.textContent?.trim().length??0)===0))){r=l;break}}if(r||(r=i),!r)return!1;const o=Date.now();this._programmaticScrollUntil=o+Dn,this._scrollLockedUntil=Math.max(this._scrollLockedUntil,o+Dn),this._userScrolledUp=!0;const s=()=>{this._scrollMessagesTo(Math.max(r.offsetTop-20,0),e)};return s(),requestAnimationFrame(s),!0}scrollToBottomPresentation(t="smooth"){this._programmaticScrollUntil=Date.now()+700,requestAnimationFrame(()=>{this._scrollMessagesTo(this.messagesEl.scrollHeight,t),this._userScrolledUp=!1})}_scrollMessagesTo(t,e){if(typeof this.messagesEl.scrollTo=="function"){this.messagesEl.scrollTo({top:t,behavior:e});return}this.messagesEl.scrollTop=t}setPresentationFocus(t){this._presentationFocusThreadId=t,this._applyPresentationCollapsed()}setFormerMessagesButtonVisible(t){this._formerMessagesBtn&&(this._formerMessagesBtn.style.display=t?"":"none")}setInputPlaceholder(t){this.inputEl.placeholder=t}_applyPresentationCollapsed(){const t=this._presentationFocusThreadId;this.messagesEl.querySelectorAll("[data-thread-id]").forEach(e=>{const a=e.dataset.threadId;a&&(t&&a!==t?e.classList.add("gengage-chat-bubble--presentation-collapsed"):e.classList.remove("gengage-chat-bubble--presentation-collapsed"))})}refreshPresentationCollapsed(){this._presentationFocusThreadId&&this._applyPresentationCollapsed()}setInputAreaChips(t){if(this._inputChipsEl.innerHTML="",t.length===0){this._inputChipsEl.style.display="none";return}this._inputChipsEl.style.display="";for(const e of t){const a=document.createElement("button");if(a.className="gengage-chat-input-chip gds-chip",a.type="button",e.icon){const r=$n[e.icon]??Fn,i=document.createElement("span");i.className="gengage-chat-input-chip-icon",i.innerHTML=r,a.appendChild(i)}const n=document.createElement("span");n.textContent=e.label,a.appendChild(n),a.addEventListener("click",()=>e.onAction()),this._inputChipsEl.appendChild(a)}}clearInputAreaChips(){this._inputChipsEl.innerHTML="",this._inputChipsEl.style.display="none"}_detachTrapHandler(){this._focusTrapHandler&&(this.root.removeEventListener("keydown",this._focusTrapHandler),this._focusTrapHandler=null)}trapFocus(){this._previouslyFocusedElement=document.activeElement,this._detachTrapHandler();const t=e=>{if(e.key!=="Tab")return;const a=Array.from(this.root.querySelectorAll('a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])')).filter(l=>{const d=getComputedStyle(l);return l.hidden||l.getAttribute("aria-hidden")==="true"||d.display==="none"||d.visibility==="hidden"?!1:l.getClientRects().length>0});if(a.length===0)return;const n=a[0],r=a[a.length-1],i=e.composedPath().find(l=>l instanceof HTMLElement&&this.root.contains(l))??null,o=this.root.getRootNode(),s=i??(o instanceof ShadowRoot&&o.activeElement instanceof HTMLElement?o.activeElement:document.activeElement instanceof HTMLElement?document.activeElement:null),c=s&&this.root.contains(s)?s:null;e.shiftKey?(c===n||!this.root.contains(c))&&(e.preventDefault(),r.focus()):(c===r||!this.root.contains(c))&&(e.preventDefault(),n.focus())};this._focusTrapHandler=t,this.root.addEventListener("keydown",t)}releaseFocus(){if(this._detachTrapHandler(),this._previouslyFocusedElement){try{this._previouslyFocusedElement.focus()}catch{}this._previouslyFocusedElement=null}}flashCartBadge(){this._cartBtn&&(this._cartBtn.classList.remove("gengage-chat-header-btn--cart-flash"),this._cartBtn.offsetWidth,this._cartBtn.classList.add("gengage-chat-header-btn--cart-flash"),this._cartBtn.addEventListener("animationend",()=>{this._cartBtn?.classList.remove("gengage-chat-header-btn--cart-flash")},{once:!0}))}hideCartToast(){this._cartToastTimerId!==null&&(window.clearTimeout(this._cartToastTimerId),this._cartToastTimerId=null);const t=this._cartToastEl;t&&(this._cartToastEl=null,t.classList.remove("gengage-chat-cart-toast--visible"),window.setTimeout(()=>{t.remove()},300))}showCartToast(t,e){const a=e?.tone??"success",n=e?.autoHideMs??2500;let r=this._cartToastEl;(!r||!r.isConnected)&&(r=document.createElement("div"),r.className="gengage-chat-cart-toast",r.setAttribute("role","status"),r.setAttribute("aria-live","polite"),this.root.appendChild(r),this._cartToastEl=r),this._cartToastTimerId!==null&&(window.clearTimeout(this._cartToastTimerId),this._cartToastTimerId=null),r.classList.toggle("gengage-chat-cart-toast--neutral",a==="neutral"),r.textContent=t,r.classList.remove("gengage-chat-cart-toast--visible"),r.offsetWidth,r.classList.add("gengage-chat-cart-toast--visible"),n!==null&&(this._cartToastTimerId=window.setTimeout(()=>{this.hideCartToast()},n))}destroy(){In(null),this.releaseFocus(),this._resizeRafId!==null&&(cancelAnimationFrame(this._resizeRafId),this._resizeRafId=null),this._destroyLoadingBinding(this._typingLoadingBinding),this._typingLoadingBinding=null,this._destroyLoadingBinding(this._panelLoadingBinding),this._panelLoadingBinding=null,this._destroyLoadingBinding(this._panelAiZoneLoadingBinding),this._panelAiZoneLoadingBinding=null,this.hideCartToast(),this._dragCloseTimerId!==null&&(window.clearTimeout(this._dragCloseTimerId),this._dragCloseTimerId=null),this._closeAttachMenu();for(const t of this._cleanups)t();this._cleanups.length=0,this._voiceInput?.destroy(),this._voiceInput=null}},zc=["shopping","beauty_consulting","account_expert"];function Hn(t){return t==="watch_expert"?"account_expert":zc.includes(t)?t:null}function Mc(t){return typeof t=="string"?Hn(t):null}function Be(t){return t==null||typeof t!="object"||Array.isArray(t)?null:t}function Bc(...t){for(const e of t)if(typeof e=="string"){const a=e.trim();if(a.length>0)return a}}function Rc(t){const e=Be(t);if(!e)return null;const a=Bc(e.assistant_mode,e.assistantMode);if(!a)return null;const n=Hn(a);return!n||n==="shopping"?null:n}function Oc(t){return t==="beauty_consulting"?"user_message":"findSimilar"}var Fc=class{constructor(){this._mode="shopping",this._uiHints=null}get mode(){return this._mode}set mode(t){this._mode=t}get uiHints(){return this._uiHints}set uiHints(t){this._uiHints=t}get isShopping(){return this._mode==="shopping"}get isBeautyConsulting(){return this._mode==="beauty_consulting"}get isChoicePrompterHidden(){return this._uiHints?.hide_choice_prompter===!0}applyUiHints(t,e,a){const n=i=>this._uiHints?.[i]===!0;t?.setAttachmentControlsVisible(!n("hide_attachment_controls")),n("hide_choice_prompter")&&a?.();const r=typeof this._uiHints?.input_placeholder=="string"?this._uiHints.input_placeholder:void 0;r?t?.setInputPlaceholder(r):t?.setInputPlaceholder(e)}handleRedirect(t){Je("mode","redirect metadata received",t);const e=Rc(t);return!e||e===this._mode?!1:(this.switchMode(e),!0)}switchMode(t){const e=this._mode;t!==e&&(this._mode=t,this._uiHints=null,Je("mode","assistant mode switched",{from:e,to:t}))}updateFromContext(t){const e=t.assistant_mode;if(typeof e=="string"&&e){const a=Mc(e);a?this._mode=a:Je("mode","ignoring unrecognised assistant_mode from context",e)}else e===null&&(this._mode="shopping");this._uiHints=Be(t.ui_hints)??null}reset(){const t=this._mode!=="shopping";return this._mode="shopping",this._uiHints=null,t}resolveAttachmentActionType(){return Oc(this._mode)}shouldCondenseThinking(){return this._mode!=="shopping"}};function $c(){return{streamIncludedBeautyPhotoStep:!1,pendingPhotoStepSkip:!1}}function Dc(t,e,a,n,r){if(t==="PhotoAnalysisCard"){const i=Bn(e);return i?(r.photoAnalysis=i,r.renderHint="photo_analysis",n.ensureRendered(),n.cancelTypewriter(),n.drawer?.updateBotMessage(r.id,r.content??"","photo_analysis",r.photoAnalysis),!0):(Je("beauty","PhotoAnalysisCard parse failed, falling through to generic renderer",e),!1)}if(t==="BeautyPhotoStep"){a.streamIncludedBeautyPhotoStep=!0;const i=_c(e);return n.drawer?.setBeautyPhotoStepCard({visible:!0,...i,onSkip:()=>{n.drawer?.setBeautyPhotoStepCard({visible:!1}),n.isStreamDone()?n.sendSkipMessage():a.pendingPhotoStepSkip=!0}}),!0}return!1}function Hc(t){return t.renderHint==="photo_analysis"}function Uc(t,e){t.streamIncludedBeautyPhotoStep||e.drawer?.setBeautyPhotoStepCard({visible:!1}),t.pendingPhotoStepSkip&&(t.pendingPhotoStepSkip=!1,e.sendSkipMessage())}function jc(t,e){t.pendingPhotoStepSkip&&(t.pendingPhotoStepSkip=!1,e.sendSkipMessage())}function Ia(t){return Number.isFinite(t)?Math.max(0,Math.min(5,t)):0}function Un(t){return Number.isFinite(t)?Math.max(0,Math.min(100,Math.round(t))):0}function jn(t){const e=Ia(t),a=Math.floor(e),n=e-a>=.5,r=5-a-(n?1:0),i=document.createElement("span");if(i.className="gengage-star-rating",i.setAttribute("role","img"),i.setAttribute("aria-label",`${e.toFixed(1)} out of 5 stars`),a>0&&i.appendChild(document.createTextNode("★".repeat(a))),n){const o=document.createElement("span");o.className="gengage-star-half",o.textContent="☆";const s=document.createElement("span");s.textContent="★",o.appendChild(s),i.appendChild(o)}return r>0&&i.appendChild(document.createTextNode("☆".repeat(r))),i}function $e(t){t.addEventListener("error",()=>{t.style.display="none"},{once:!0})}var qc={currencyCode:"TRY",currencySymbol:"TL",currencyPosition:"suffix",thousandsSeparator:".",decimalSeparator:",",alwaysShowDecimals:!1};function se(t,e){if(typeof t!="string"||t.trim()==="")return t;const a=Number(t);if(!Number.isFinite(a)||a<0||a>=1e15)return t;const n={...qc,...e},r=Math.abs(a%1)<Number.EPSILON,i=n.alwaysShowDecimals||!r?a.toFixed(2):a.toFixed(0),o=i.indexOf("."),s=o===-1?i:i.slice(0,o),c=o===-1?void 0:i.slice(o+1),l=s.replace(/\B(?=(\d{3})+(?!\d))/g,n.thousandsSeparator);let d;return c!==void 0?d=`${l}${n.decimalSeparator}${c}`:d=l,n.currencySymbol?n.currencyPosition==="prefix"?`${n.currencySymbol}${d}`:`${d} ${n.currencySymbol}`:d}var Zc={screen_size:"Screen Size",weight:"Weight",battery_capacity:"Battery Capacity",battery_life:"Battery Life",storage:"Storage",memory:"Memory",ram:"RAM",processor:"Processor",camera:"Camera",resolution:"Resolution",display_type:"Display Type",refresh_rate:"Refresh Rate",color:"Color",material:"Material",dimensions:"Dimensions",warranty:"Warranty",connectivity:"Connectivity",water_resistance:"Water Resistance",operating_system:"Operating System",brand:"Brand",model:"Model",price:"Price",energy_class:"Energy Class",noise_level:"Noise Level",capacity:"Capacity",power:"Power",voltage:"Voltage",width:"Width",height:"Height",depth:"Depth"};function Vc(t,e,a){return e?.[t]??Zc[t]??t.replace(/_/g," ").replace(/^./u,n=>Gc(n,a))}function Gc(t,e){try{return t.toLocaleUpperCase(Mt(e))}catch{return t.toLocaleUpperCase("tr")}}function qn(t){if(typeof t!="string")return!1;const e=Number(t);return Number.isFinite(e)&&e>0}function Wc(t){const e=typeof t=="number"?t:typeof t=="string"?Number(t):NaN;return Number.isFinite(e)&&e>0}function Kc(t){const e=typeof t=="number"?t:Number(t),a=document.createElement("div");a.className="gengage-chat-comparison-recommended-rating",a.innerHTML='<span class="gengage-chat-comparison-recommended-rating-icon" aria-hidden="true"><svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><path d="M12 3.6l2.58 5.23 5.77.84-4.17 4.07.98 5.75L12 16.78l-5.16 2.71.99-5.75L3.66 9.67l5.76-.84L12 3.6z"/></svg></span>';const n=document.createElement("span");return n.className="gengage-chat-comparison-recommended-rating-value",n.textContent=e.toFixed(1),a.appendChild(n),a}function Yc(t){const{recommended:e,products:a,attributes:n,highlights:r,specialCases:i,onProductClick:o,i18n:s}=t,c=document.createElement("div");if(c.className="gengage-chat-comparison",c.dataset.gengagePart="comparison-dialog",c.setAttribute("role","dialog"),c.setAttribute("aria-label",s?.comparisonHeading??"Comparison Results"),e){const l=document.createElement("article");l.className="gengage-chat-comparison-recommended gds-card",l.dataset.gengagePart="comparison-recommended-card";const d=document.createElement("div");d.className="gengage-chat-comparison-recommended-label",d.textContent=s?.recommendedChoiceLabel??"Recommended Choice",l.appendChild(d);const g=document.createElement("div");g.className="gengage-chat-comparison-recommended-body",g.classList.add("gds-clickable"),g.tabIndex=0,g.setAttribute("role","button"),g.setAttribute("aria-label",e.name);const p=document.createElement("div");if(p.className="gengage-chat-comparison-recommended-media",e.imageUrl&&je(e.imageUrl)){const h=document.createElement("img");h.src=e.imageUrl,h.alt=e.name,h.loading="lazy",h.addEventListener("error",()=>{h.style.display="none"},{once:!0}),p.appendChild(h)}else{const h=document.createElement("div");h.className="gengage-chat-comparison-recommended-placeholder",h.setAttribute("aria-hidden","true"),p.appendChild(h)}g.appendChild(p);const u=document.createElement("div");u.className="gengage-chat-comparison-recommended-info";const m=document.createElement("div");m.className="gengage-chat-comparison-recommended-title",m.textContent=e.name,u.appendChild(m);const f=document.createElement("div");if(f.className="gengage-chat-comparison-recommended-meta",Wc(e.rating)&&f.appendChild(Kc(e.rating)),qn(e.price)){const h=document.createElement("div");h.className="gengage-chat-comparison-recommended-price",h.textContent=se(e.price,t.pricing),f.appendChild(h)}if(f.childElementCount>0&&u.appendChild(f),t.recommendedText){const h=document.createElement("p");h.className="gengage-chat-comparison-recommended-text",h.innerHTML=Ie(t.recommendedText),u.appendChild(h)}g.appendChild(u);const b=()=>{o({sku:e.sku,name:e.name})};if(g.addEventListener("click",b),g.addEventListener("keydown",h=>{h.key!=="Enter"&&h.key!==" "||(h.preventDefault(),b())}),l.appendChild(g),r.length>0){const h=document.createElement("div");h.className="gengage-chat-comparison-highlights",h.dataset.gengagePart="comparison-highlights";const y=document.createElement("div");y.className="gengage-chat-comparison-highlights-label",y.textContent=s?.highlightsLabel??"Key Highlights",h.appendChild(y);const x=document.createElement("ul");for(const v of r){const w=document.createElement("li");w.textContent=v,x.appendChild(w)}h.appendChild(x),l.appendChild(h)}c.appendChild(l)}if(t.keyDifferencesHtml){const l=document.createElement("details");l.className="gengage-chat-comparison-key-differences",l.dataset.gengagePart="comparison-key-differences";const d=document.createElement("summary");d.className="gengage-chat-comparison-key-differences-summary";const g=document.createElement("span");g.className="gengage-chat-comparison-key-differences-summary-label",g.textContent=s?.keyDifferencesLabel??"Key Differences";const p=document.createElement("span");p.className="gengage-chat-comparison-key-differences-summary-meta",p.textContent=s?.viewMoreLabel??"Show More",d.appendChild(g),d.appendChild(p),l.appendChild(d);const u=document.createElement("div");u.className="gengage-chat-comparison-key-differences-content",u.innerHTML=Ie(Jc(t.keyDifferencesHtml)),l.appendChild(u),c.appendChild(l)}if(i&&i.length>0){const l=document.createElement("details");l.className="gengage-chat-comparison-special gds-evidence-card gds-evidence-card-warning",l.dataset.gengagePart="comparison-special-cases";const d=document.createElement("summary");d.textContent=s?.specialCasesLabel??"For Special Cases",l.appendChild(d);const g=document.createElement("ul");for(const p of i)Xc(g,p);g.childElementCount>0&&l.appendChild(g),c.appendChild(l)}if(a.length>0&&n.length>0){const l=document.createElement("table");l.className="gengage-chat-comparison-table gds-comparison-table";const d=document.createElement("thead"),g=document.createElement("tr"),p=document.createElement("th");g.appendChild(p);for(const f of a){const b=document.createElement("th");f.sku===e?.sku&&(b.className="gengage-chat-comparison-selected gds-comparison-table-winner-cell");const h=document.createElement("div");h.className="gengage-chat-comparison-table-header-cell gengage-chat-comparison-table-header-cell--clickable gds-clickable",h.tabIndex=0,h.setAttribute("role","button"),h.setAttribute("aria-label",f.name),h.title=f.name;const y=()=>{o({sku:f.sku,name:f.name})};if(h.addEventListener("click",y),h.addEventListener("keydown",v=>{v.key!=="Enter"&&v.key!==" "||(v.preventDefault(),y())}),f.imageUrl&&je(f.imageUrl)){const v=document.createElement("img");v.src=f.imageUrl,v.alt=f.name,v.loading="lazy",v.addEventListener("error",()=>{v.style.display="none"},{once:!0}),h.appendChild(v)}else{const v=document.createElement("div");v.className="gengage-chat-comparison-table-header-img-placeholder",v.setAttribute("aria-hidden","true"),h.appendChild(v)}const x=document.createElement("div");if(x.className="gengage-chat-comparison-table-product-name",x.textContent=f.name,h.appendChild(x),qn(f.price)){const v=document.createElement("div");v.className="gengage-chat-comparison-table-price",v.textContent=se(f.price,t.pricing),h.appendChild(v)}b.appendChild(h),g.appendChild(b)}d.appendChild(g),l.appendChild(d);const u=document.createElement("tbody");for(const f of n){const b=document.createElement("tr"),h=document.createElement("td");h.className="gengage-chat-comparison-label",h.textContent=Vc(f.label,s?.criteriaLabels,t.locale),b.appendChild(h);for(let y=0;y<f.values.length;y++){const x=document.createElement("td");a[y]?.sku===e?.sku&&(x.className="gengage-chat-comparison-selected gds-comparison-table-winner-cell");const v=f.values[y]??"";Zn(v)?x.innerHTML=Ie(v):x.textContent=v,b.appendChild(x)}u.appendChild(b)}l.appendChild(u);const m=document.createElement("div");m.className="gengage-chat-comparison-table-wrapper",m.dataset.gengagePart="comparison-table-wrapper",m.appendChild(l),c.appendChild(m)}return c.addEventListener("keydown",l=>{if(l.key!=="Tab")return;const d=c.querySelectorAll('button, summary, [href], input, [tabindex]:not([tabindex="-1"])');if(d.length===0)return;const g=d[0],p=d[d.length-1],u=l.composedPath().find(b=>b instanceof HTMLElement&&c.contains(b))??null,m=c.getRootNode(),f=u??(m instanceof ShadowRoot&&m.activeElement instanceof HTMLElement?m.activeElement:document.activeElement instanceof HTMLElement?document.activeElement:null);l.shiftKey&&f===g?(l.preventDefault(),p.focus()):!l.shiftKey&&f===p&&(l.preventDefault(),g.focus())}),c}function Jc(t){if(/<[uo]l[\s>]/i.test(t)||/<li[\s>]/i.test(t))return t;const e=t.split(`
|
|
49
|
+
`).filter(a=>a.trim());return e.length<=1?t:"<ul>"+e.map(a=>`<li>${a.trim()}</li>`).join("")+"</ul>"}function Xc(t,e){const a=Ie(e);if(!a)return;const n=document.createElement("template");n.innerHTML=a;const r=Array.from(n.content.querySelectorAll("li"));if(r.length>0){for(const o of r){const s=document.createElement("li");s.innerHTML=Ie(o.innerHTML),t.appendChild(s)}return}const i=document.createElement("li");Zn(e)?i.innerHTML=a:i.textContent=e,t.appendChild(i)}function Zn(t){return/<\/?[a-z][\s\S]*>/i.test(t)}function $t(t,e=18){const a="http://www.w3.org/2000/svg",n=document.createElementNS(a,"svg");n.setAttribute("width",String(e)),n.setAttribute("height",String(e)),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("fill","none"),n.setAttribute("stroke","currentColor"),n.setAttribute("stroke-width","2"),n.setAttribute("stroke-linecap","round"),n.setAttribute("stroke-linejoin","round"),n.setAttribute("aria-hidden","true");for(const r of t){const i=document.createElementNS(a,"path");i.setAttribute("d",r),n.appendChild(i)}return n}var Na="General",Vn=220,Qc=6;function el(t){if(typeof t!="string")return[Na];const e=t.split(/[,;|/]+/).map(a=>a.trim().replace(/\s+/g," ")).filter(a=>a.length>0);return e.length===0?[Na]:Array.from(new Set(e.map(a=>a.toLocaleLowerCase()))).map(a=>e.find(n=>n.toLocaleLowerCase()===a)??Na)}function tl(t){return t==="positive"||t==="negative"||t==="neutral"?t:"neutral"}function al(t){if(typeof t!="string")return"";const e=t.trim().replace(/\s+/g," ");return e.length<=Vn?e:`${e.slice(0,Vn-3).trimEnd()}...`}function nl(t){return t.positive>t.negative?"positive":t.negative>t.positive?"negative":"neutral"}function rl(t){return $t(t==="positive"?["M7 17 17 7","M7 7h10v10"]:t==="negative"?["M7 7 17 17","M17 7v10H7"]:["M5 12h14"],14)}function il(t,e="1 customer mentions",a="customers mention"){return t===1?e:`${t} ${a}`}function ol(t,e){const a=document.createElement("div");a.className="gengage-chat-review-highlights";const n=t.props?.reviews;if(!Array.isArray(n)||n.length===0){const f=document.createElement("div");return f.className="gengage-chat-review-empty",f.textContent=e?.emptyReviewsMessage??"No review summary found.",a.appendChild(f),a}const r=n.filter(f=>f!==null&&typeof f=="object"),i=new Map;for(const f of r){const b=tl(f.review_class),h=al(f.review_text),y=el(f.review_tag);for(const x of y){const v=x.toLocaleLowerCase();let w=i.get(v);if(w||(w={key:v,label:x,mentions:0,positive:0,negative:0,neutral:0,snippets:[]},i.set(v,w)),w.mentions+=1,b==="positive"?w.positive+=1:b==="negative"?w.negative+=1:w.neutral+=1,h.length>0&&w.snippets.length<Qc&&!w.snippets.some(P=>P.text===h)){const P={text:h,tone:b};f.review_rating!==void 0&&String(f.review_rating).length>0&&(P.rating=f.review_rating),w.snippets.push(P)}}}const o=Array.from(i.values()).sort((f,b)=>b.mentions!==f.mentions?b.mentions-f.mentions:f.label.localeCompare(b.label));if(o.length===0){const f=document.createElement("div");return f.className="gengage-chat-review-empty",f.textContent=e?.emptyReviewsMessage??"No review summary found.",a.appendChild(f),a}const s=(e?.reviewFilterPositive??"positive").toLowerCase(),c=(e?.reviewFilterNegative??"negative").toLowerCase(),l=document.createElement("div");l.className="gengage-chat-review-subjects-heading",l.textContent=e?.reviewSubjectsHeading??"Select to learn more",a.appendChild(l);let d=o[0]?.key??null;const g=document.createElement("div");g.className="gengage-chat-review-subjects gds-toolbar gds-toolbar-compact";const p=document.createElement("section");p.className="gengage-chat-review-detail gds-evidence-card";const u=()=>{for(;p.firstChild;)p.removeChild(p.firstChild);if(!d)return;const f=o.find(x=>x.key===d);if(!f)return;const b=document.createElement("div");b.className="gengage-chat-review-detail-meta";const h=document.createElement("span");if(h.className="gengage-chat-review-detail-mentions",h.textContent=`${il(f.mentions,e?.reviewCustomersMentionSingular,e?.reviewCustomersMentionPlural)} "${f.label}"`,b.appendChild(h),f.positive>0){const x=document.createElement("span");x.className="gengage-chat-review-detail-positive",x.textContent=`${f.positive} ${s}`,b.appendChild(x)}if(f.negative>0){const x=document.createElement("span");x.className="gengage-chat-review-detail-negative",x.textContent=`${f.negative} ${c}`,b.appendChild(x)}p.appendChild(b);const y=document.createElement("div");y.className="gengage-chat-review-snippets";for(const x of f.snippets){const v=document.createElement("article");v.className="gengage-chat-review-snippet",v.dataset.tone=x.tone;const w=document.createElement("div");if(w.className="gengage-chat-review-snippet-text",w.textContent=`"${x.text}"`,v.appendChild(w),x.rating!==void 0&&String(x.rating).length>0){const P=document.createElement("div");P.className="gengage-chat-review-snippet-rating",P.textContent=`★ ${String(x.rating)}`,v.appendChild(P)}y.appendChild(v)}p.appendChild(y)},m=()=>{for(const f of g.querySelectorAll(".gengage-chat-review-subject")){const b=f.dataset.subjectKey===d;f.classList.toggle("gengage-chat-review-subject--active",b),f.classList.toggle("gds-chip-active",b),f.setAttribute("aria-pressed",String(b))}};for(const f of o){const b=nl(f),h=document.createElement("button");h.type="button",h.className="gengage-chat-review-subject gds-chip",h.dataset.subjectKey=f.key,h.dataset.tone=b;const y=document.createElement("span");y.className="gengage-chat-review-subject-icon",y.appendChild(rl(b)),h.appendChild(y);const x=document.createElement("span");x.className="gengage-chat-review-subject-label",x.textContent=f.label,h.appendChild(x);const v=document.createElement("span");v.className="gengage-chat-review-subject-count",v.textContent=`(${f.mentions})`,h.appendChild(v),h.addEventListener("click",()=>{d=f.key,m(),u()}),g.appendChild(h)}return a.appendChild(g),m(),u(),a.appendChild(p),a}function sl(t){if(!t)return;const e=t.discountReason??t.discount_reason??t.campaignReason??t.campaign_reason;if(typeof e!="string")return;const a=e.trim();return a.length>0?a:void 0}function Et(t,e){if(t.productPriceUi?.showCampaignReason===!0)return sl(e)}function Dt(t,e){const a=e?.originalPriceStyle??e?.price_original_style;if(a==="inline"||a==="strikethrough")return a;const n=t.productPriceUi?.originalPriceStyle;return n==="inline"||n==="strikethrough"?n:"strikethrough"}function Kt(t){const e=document.createElement("div");return e.className="gengage-chat-campaign-reason",e.textContent=t,e}function Yt(t,e){for(const n of["campaignReasonLogoUrl","campaign_reason_logo_url","discountBadgeLogoUrl","discount_badge_logo_url"]){const r=e?.[n];if(typeof r=="string"&&r.trim()){const i=r.trim();if(je(i))return i}}const a=t.productPriceUi?.campaignBadgeLogoUrl;if(typeof a=="string"&&a.trim()){const n=a.trim();if(je(n))return n}}function Jt(t){const e=document.createElement("div");if(e.className="gengage-chat-campaign-price-badge",e.dataset.gengagePart="campaign-price-badge",t.logoUrl){const i=document.createElement("div");i.className="gengage-chat-campaign-price-badge__logo";const o=document.createElement("img");o.alt="",o.loading="lazy",o.src=t.logoUrl,$e(o),i.appendChild(o),e.appendChild(i)}const a=document.createElement("div");a.className="gengage-chat-campaign-price-badge__body";const n=document.createElement("div");n.className="gengage-chat-campaign-price-badge__reason",n.textContent=t.reasonText;const r=document.createElement("span");return r.className="gengage-chat-campaign-price-badge__sale",r.textContent=t.salePriceFormatted,a.appendChild(n),a.appendChild(r),e.appendChild(a),e}function cl(){try{return globalThis.GENGAGE_TOPPICKS_MOBILE_LAYOUT==="uniform"}catch{return!1}}function Gn(t){const e=t.product.sku;if(typeof e=="string"&&e.length>0)return e;const a=t.action?.payload;return a&&typeof a=="object"&&"sku"in a&&typeof a.sku=="string"?a.sku:null}var ll={winner:"roleWinner",best_value:"roleBestValue",best_alternative:"roleBestAlternative"};function Wn(t,e){if(!t||!e)return null;const a=ll[t];return a?e[a]??t:t}function dl(t){const e=t.rating,a=typeof e=="number"?e:typeof e=="string"?parseFloat(e):NaN;if(Number.isNaN(a)||a<=0)return null;const n=document.createElement("div");n.className="gengage-chat-ai-toppick-rating",n.dataset.gengagePart="ai-top-pick-rating";const r=document.createElement("span");r.className="gengage-chat-ai-toppick-rating-icon",r.setAttribute("aria-hidden","true"),r.innerHTML='<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><path d="M12 3.6l2.58 5.23 5.77.84-4.17 4.07.98 5.75L12 16.78l-5.16 2.71.99-5.75L3.66 9.67l5.76-.84L12 3.6z"/></svg>';const i=document.createElement("span");return i.className="gengage-chat-ai-toppick-rating-value",i.textContent=a.toFixed(1),n.appendChild(r),n.appendChild(i),n}function gl(t,e,a,n,r){const i=document.createElement("div");i.className="gengage-chat-ai-toppick-media",i.dataset.gengagePart="ai-top-pick-media";const o=t.product,s=o.imageUrl;if(s&&je(s)){const l=document.createElement("img");l.className="gengage-chat-ai-toppick-img",l.dataset.gengagePart="ai-top-pick-image",Se(l,"src",s),l.loading="lazy",l.alt=e,$e(l),i.appendChild(l)}const c=Gn(t);if(c&&!r?.skipOverlayActions){const l=document.createElement("div");if(l.className="gengage-chat-product-card-img-actions",n.onFavoriteToggle){const u=document.createElement("button");u.className="gengage-chat-favorite-btn",u.type="button",u.dataset.gengageFavoriteSku=c,u.setAttribute("aria-label",n.i18n?.addToFavoritesLabel??"Add to favorites");const m=n.favoritedSkus?.has(c)??!1;m&&u.classList.add("gengage-chat-favorite-btn--active"),u.innerHTML=`<svg width="14" height="14" viewBox="0 0 24 24" fill="${m?"currentColor":"none"}" stroke="currentColor" stroke-width="2"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>`,u.addEventListener("click",f=>{f.stopPropagation(),u.classList.toggle("gengage-chat-favorite-btn--active"),u.querySelector("svg")?.setAttribute("fill",u.classList.contains("gengage-chat-favorite-btn--active")?"currentColor":"none"),n.onFavoriteToggle?.(c,o)}),l.appendChild(u)}const d=n.i18n?.findSimilarLabel??"Find Similar",g=document.createElement("button");g.className="gengage-chat-find-similar-pill",g.type="button",g.setAttribute("aria-label",d),g.dataset.tooltip=d,g.innerHTML='<span class="gengage-chat-find-similar-pill-icon" aria-hidden="true"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"><circle cx="10.5" cy="10.5" r="6.5"/><path d="M16 16l5.5 5.5"/></svg></span>';const p=document.createElement("span");p.className="gengage-chat-find-similar-pill-text",p.textContent=d,g.appendChild(p),g.addEventListener("click",u=>{u.stopPropagation(),n.onAction({title:d,type:"findSimilar",payload:{sku:c}})}),l.appendChild(g),i.appendChild(l)}a.appendChild(i)}function pl(t,e,a){const n=t.price,r=t.originalPrice;if(!n)return;const i=Et(a,t),o=Dt(a,t),s=!!(r&&r!==n),c=!!(i&&s),l=Yt(a,t),d=document.createElement("div");if(d.className="gengage-chat-ai-toppick-price",d.dataset.gengagePart="ai-top-pick-price",c){const g=Jt({reasonText:i,salePriceFormatted:se(n,a.pricing),...l!==void 0?{logoUrl:l}:{}});if(s&&o==="inline"){d.classList.add("gengage-chat-ai-toppick-price--inline"),d.appendChild(g);const p=document.createElement("span");p.className="gengage-chat-ai-toppick-price-sep",p.setAttribute("aria-hidden","true");const u=document.createElement("span");u.className="gengage-chat-ai-toppick-original-price",u.textContent=se(r,a.pricing),d.appendChild(p),d.appendChild(u)}else{const p=document.createElement("span");p.className="gengage-chat-ai-toppick-original-price",p.textContent=se(r,a.pricing),d.appendChild(p),d.appendChild(document.createTextNode(" ")),d.appendChild(g)}e.appendChild(d);return}if(s&&o==="inline"){d.classList.add("gengage-chat-ai-toppick-price--inline");const g=document.createElement("span");g.className="gengage-chat-ai-toppick-price-current",g.textContent=se(n,a.pricing);const p=document.createElement("span");p.className="gengage-chat-ai-toppick-price-sep",p.setAttribute("aria-hidden","true");const u=document.createElement("span");u.className="gengage-chat-ai-toppick-original-price",u.textContent=se(r,a.pricing),d.appendChild(g),d.appendChild(p),d.appendChild(u)}else if(s){const g=document.createElement("span");g.className="gengage-chat-ai-toppick-original-price",g.textContent=se(r,a.pricing),d.appendChild(g),d.appendChild(document.createTextNode(" "));const p=document.createElement("span");p.className="gengage-chat-ai-toppick-price-current",p.textContent=se(n,a.pricing),d.appendChild(p)}else{const g=document.createElement("span");g.className="gengage-chat-ai-toppick-price-current",g.textContent=se(n,a.pricing),d.appendChild(g)}if(i){const g=document.createElement("div");g.className="gengage-chat-ai-toppick-price-stack",g.appendChild(Kt(i)),g.appendChild(d),e.appendChild(g)}else e.appendChild(d)}function hl(t,e,a){const n=typeof t.reason=="string"?t.reason.trim():"",r=a.hideUserReviews!==!0&&typeof t.reviewHighlight=="string"?t.reviewHighlight.trim():"";if(!(!n&&!r)){if(n){const i=document.createElement("p");i.className="gengage-chat-ai-toppick-reason",i.dataset.gengagePart="ai-top-pick-reason",i.textContent=n,e.appendChild(i)}if(r){const i=document.createElement("div");i.className="gengage-chat-ai-toppick-review",i.dataset.gengagePart="ai-top-pick-review",i.textContent=r,e.appendChild(i)}}}function Kn(t,e,a,n){const r=document.createElement("div");r.className=a?"gengage-chat-ai-toppick-card gengage-chat-ai-toppick-card--winner gds-card":"gengage-chat-ai-toppick-card gengage-chat-ai-toppick-card--compact gds-card";const i=n?.uniformMobileLayout===!0;!a&&i&&r.classList.add("gengage-chat-ai-toppick-card--mobile-uniform"),r.dataset.gengagePart=a?"ai-top-pick-card-winner":"ai-top-pick-card";const o=t.product,s=Gn(t),c=typeof o.url=="string"?o.url:"",l=o.cartCode,d=o.inStock,g=!!(s&&l&&d!==!1),p=t.action;s&&e.onProductClick?(r.classList.add("gds-clickable"),r.addEventListener("click",E=>{if(E.target.closest(".gengage-chat-ai-toppick-cta")||E.target.closest(".gengage-chat-favorite-btn")||E.target.closest(".gengage-chat-find-similar-pill"))return;const A=o.name;e.onProductClick?.({sku:s,url:c,...A?{name:A}:{}})})):p&&(r.classList.add("gds-clickable"),r.addEventListener("click",E=>{E.target.closest(".gengage-chat-ai-toppick-cta")||E.target.closest(".gengage-chat-favorite-btn")||E.target.closest(".gengage-chat-find-similar-pill")||e.onAction(p)}));const u=o.name||"Product image",m=!a&&e.isMobile===!0&&!i,f=a?Wn(t.role,e.i18n)??e.i18n?.roleWinner??"TOP MATCH":Wn(t.role,e.i18n);if(f&&!m){const E=document.createElement("span");E.className="gengage-chat-ai-toppick-badge gds-badge",E.dataset.gengagePart="ai-top-pick-role-badge",E.textContent=f,r.appendChild(E)}const b=document.createElement("div");b.className="gengage-chat-ai-toppick-top-row",b.dataset.gengagePart="ai-top-pick-top-row",gl(t,u,b,e,{skipOverlayActions:m});const h=document.createElement("div");if(h.className="gengage-chat-ai-toppick-body",h.dataset.gengagePart="ai-top-pick-body",f&&m){const E=document.createElement("div");E.className="gengage-chat-ai-toppick-role-line",E.dataset.gengagePart="ai-top-pick-role-line",E.textContent=f,h.appendChild(E)}const y=o.name;if(y){const E=document.createElement("div");E.className="gengage-chat-ai-toppick-name",E.dataset.gengagePart="ai-top-pick-name",E.textContent=y,h.appendChild(E)}const x=dl(o);x&&h.appendChild(x),pl(o,h,e),t.labels&&t.labels.length>0&&h.appendChild(ml(t.labels)),b.appendChild(h),r.appendChild(b);const v=document.createElement("div");if(v.className="gengage-chat-ai-toppick-detail",v.dataset.gengagePart="ai-top-pick-detail",a)hl(t,v,e);else{const E=typeof t.reason=="string"?t.reason.trim():"";if(E){const A=document.createElement("p");A.className="gengage-chat-ai-toppick-snippet",A.dataset.gengagePart="ai-top-pick-snippet",A.textContent=E,v.appendChild(A)}}v.childNodes.length>0&&r.appendChild(v);const w=!!(s&&e.topPicksLoadingSku===s),P=(g||p)&&!m;if(w||g||p){const E=document.createElement("div");if(E.className="gengage-chat-ai-toppick-spinner",E.dataset.gengagePart="ai-top-pick-spinner",E.style.display=w?"":"none",r.appendChild(E),P){const A=document.createElement("button");A.className="gengage-chat-ai-toppick-cta gds-btn gds-btn-primary",A.dataset.gengagePart="ai-top-pick-cta",A.type="button",A.textContent=g?e.i18n?.addToCartButton??"Add to Cart":e.i18n?.viewDetails??"View Details",A.addEventListener("click",R=>{if(R.stopPropagation(),g){e.onAction({title:e.i18n?.addToCartButton??"Add to Cart",type:"addToCart",payload:{sku:s,cartCode:l,quantity:1}});return}if(p){if(p.type==="findSimilar"&&s&&e.onProductClick){const j=o.name;e.onProductClick({sku:s,url:c,...j?{name:j}:{}});return}e.onAction(p)}}),r.appendChild(A)}}return r}function ul(t,e){const a=document.createElement("div");a.className="gengage-chat-ai-top-picks",a.dataset.gengagePart="ai-top-picks";const n=t.props?.suggestions,r=Array.isArray(n)?n:[];if(r.length===0)return a;const i=document.createElement("div");i.className="gengage-chat-ai-top-picks-scroll",i.dataset.gengagePart="ai-top-picks-scroll";const o=e.isMobile===!0&&cl(),s=r[0];if(i.appendChild(Kn(s,e,!0,{uniformMobileLayout:o})),r.length>1){const c=document.createElement("div");c.className="gengage-chat-ai-top-picks-rest",o&&c.classList.add("gengage-chat-ai-top-picks-rest--uniform-mobile"),c.dataset.gengagePart="ai-top-picks-rest";for(let l=1;l<r.length;l++){const d=r[l],g=d.role==="winner";c.appendChild(Kn(d,e,g,{uniformMobileLayout:o}))}i.appendChild(c)}return a.appendChild(i),a}function ml(t){const e=document.createElement("div");e.className="gengage-chat-ai-toppick-labels",e.dataset.gengagePart="ai-top-pick-labels";for(const a of t){const n=document.createElement("span");n.className="gengage-chat-ai-toppick-label gds-chip",n.dataset.gengagePart="ai-top-pick-label",n.dataset.sentiment=a.sentiment??"neutral",n.textContent=a.label,e.appendChild(n)}return e}function fl(t,e){const a=document.createElement("div");a.className="gengage-chat-grounding-review gds-evidence-card",a.dataset.gengagePart="grounding-review-card";const n=t.props??{},r=n.title,i=n.reviewCount,o=n.action,s=e.i18n?.groundingReviewCta??"Read Reviews",c=document.createElement("span");c.className="gengage-chat-grounding-review-icon",c.appendChild($t(["M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z","M8 9h8","M8 13h6"])),a.appendChild(c);const l=document.createElement("div");l.className="gengage-chat-grounding-review-body",l.dataset.gengagePart="grounding-review-body";const d=document.createElement("div");if(d.className="gengage-chat-grounding-review-title",d.dataset.gengagePart="grounding-review-title",d.textContent=r??e.i18n?.customerReviewsTitle??"Customer Reviews",l.appendChild(d),i){const m=document.createElement("div");m.className="gengage-chat-grounding-review-subtitle",m.dataset.gengagePart="grounding-review-subtitle",m.textContent=(e.i18n?.groundingReviewSubtitle??"{count} yorum mevcut").replace("{count}",i),l.appendChild(m)}a.appendChild(l);const g=document.createElement("span");g.className="gengage-chat-grounding-review-cta",g.dataset.gengagePart="grounding-review-cta";const p=document.createElement("span");p.textContent=s,g.appendChild(p);const u=document.createElement("span");return u.className="gengage-chat-grounding-review-cta-icon",u.appendChild($t(["M5 12h14","M15 8l4 4-4 4"],14)),g.appendChild(u),a.appendChild(g),o&&(a.classList.add("gds-clickable"),a.setAttribute("role","button"),a.setAttribute("tabindex","0"),a.addEventListener("click",()=>e.onAction(o)),a.addEventListener("keydown",m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),e.onAction(o))})),a}function bl(t){const e=t.action.type;if(e!=="findSimilar")return t.action;const a=t.action.payload&&typeof t.action.payload=="object"?t.action.payload:null,n=typeof a?.input=="string"&&a.input.trim()||typeof a?.text=="string"&&a.text.trim()||t.name.trim();if(!n)return t.action;const r={...a??{},text:n,is_suggested_text:1};return typeof a?.input=="string"&&a.input.trim()?r.input=a.input:delete r.input,{title:t.action.title,type:e,payload:wt(r)}}function vl(t,e){const a=document.createElement("div");a.className="gengage-chat-grouping-cards",a.dataset.gengagePart="ai-grouping-cards";const n=t.props?.entries??[];if(n.length===0)return a;const r=t.props?.sectionTitle,i=typeof r=="string"&&r.trim().length>0?r.trim():e.i18n?.aiBrowseCategoriesTitle;if(i){const s=document.createElement("h3");s.className="gengage-chat-grouping-section-title",s.textContent=i,a.appendChild(s)}const o=document.createElement("div");o.className="gengage-chat-grouping-cards-scroll",o.dataset.gengagePart="ai-grouping-cards-scroll";for(const s of n){const c=document.createElement("div");if(c.className="gengage-chat-grouping-card gds-card",c.dataset.gengagePart="ai-grouping-card",c.classList.add("gds-clickable"),c.addEventListener("click",()=>e.onAction(bl(s))),s.image&&je(s.image)){const p=document.createElement("img");p.className="gengage-chat-grouping-card-img",p.dataset.gengagePart="ai-grouping-card-image",p.draggable=!1,p.src=s.image,p.alt=s.name,p.width=64,p.height=64,c.appendChild(p)}const l=document.createElement("div");l.className="gengage-chat-grouping-card-body",l.dataset.gengagePart="ai-grouping-card-body";const d=document.createElement("span");if(d.className="gengage-chat-grouping-card-name",d.dataset.gengagePart="ai-grouping-card-name",d.textContent=s.name,l.appendChild(d),s.labels&&s.labels.length>0){const p=document.createElement("div");p.className="gengage-chat-grouping-card-labels",p.dataset.gengagePart="ai-grouping-card-labels";for(const u of s.labels.slice(0,2)){const m=document.createElement("span");m.className="gengage-chat-grouping-card-label gds-chip",m.textContent=u,p.appendChild(m)}l.appendChild(p)}c.appendChild(l);const g=document.createElement("span");g.className="gengage-chat-grouping-card-arrow",g.textContent="↳",c.insertBefore(g,c.firstChild),o.appendChild(c)}return a.appendChild(o),a}function yl(t,e){const a=document.createElement("div");a.className="gengage-chat-suggested-search-cards",a.dataset.gengagePart="ai-suggested-search-cards";const n=t.props?.entries??[];if(n.length===0)return a;for(const r of n){const i=document.createElement("div");if(i.className="gengage-chat-suggested-search-card gds-card",i.dataset.gengagePart="ai-suggested-search-card",i.classList.add("gds-clickable"),i.addEventListener("click",()=>e.onAction(r.action)),r.image&&je(r.image)){const c=document.createElement("img");c.className="gengage-chat-suggested-search-card-img",c.dataset.gengagePart="ai-suggested-search-card-image",c.src=r.image,c.alt=r.shortName,c.width=64,c.height=64,i.appendChild(c)}const o=document.createElement("div");o.className="gengage-chat-suggested-search-card-body",o.dataset.gengagePart="ai-suggested-search-card-body";const s=document.createElement("div");s.className="gengage-chat-suggested-search-card-name",s.dataset.gengagePart="ai-suggested-search-card-name",s.textContent=r.shortName,o.appendChild(s),i.appendChild(o),a.appendChild(i)}return a}function xl(t,e){const a=document.createElement("div");a.className="gengage-chat-inline-question-buttons",a.dataset.gengagePart="inline-question-buttons";const n=t.props?.buttons??[];for(const r of n){if(typeof r?.label!="string"||!r.label.trim())continue;const i=document.createElement("button");i.className="gengage-chat-inline-question-btn gds-chip",i.dataset.gengagePart="inline-question-button",i.type="button";const o=document.createElement("span");o.className="gengage-chat-inline-question-icon",o.setAttribute("aria-hidden","true"),o.textContent="✦";const s=document.createElement("span");s.className="gengage-chat-inline-question-label",s.textContent=r.label,i.append(o,s),i.addEventListener("click",()=>e.onAction(r.action)),a.appendChild(i)}return a}function Yn(t,e){const a=t.length>=2,n=e.i18n?.compareSelected??"Compare",r=e.comparisonSelectionWarning,i=document.createElement("div");i.className="gengage-chat-comparison-floating-btn",i.dataset.gengagePart="comparison-dock";const o=document.createElement("div");o.className="gengage-chat-comparison-floating-summary";const s=document.createElement("span");s.className="gengage-chat-comparison-floating-count",s.textContent=String(t.length),o.appendChild(s);const c=document.createElement("div");c.className="gengage-chat-comparison-floating-copy";const l=document.createElement("div");if(l.className="gengage-chat-comparison-floating-title",l.textContent=a?`${n} (${t.length})`:e.i18n?.compareMinHint??"Select at least 2 products",c.appendChild(l),r){const g=document.createElement("div");g.className="gengage-chat-comparison-floating-warning",g.setAttribute("role","status"),g.setAttribute("aria-live","polite"),g.textContent=r,c.appendChild(g)}o.appendChild(c),i.appendChild(o);const d=document.createElement("button");if(d.className="gengage-chat-comparison-floating-action gds-btn gds-btn-primary",d.type="button",d.textContent=n,d.disabled=!a,a||d.classList.add("gengage-chat-comparison-floating-action--disabled"),d.addEventListener("click",()=>{a&&e.onAction({title:n,type:"getComparisonTable",payload:{sku_list:[...t],gengage_analytics_source:"floating_compare_dock"}})}),i.appendChild(d),e.onToggleComparisonSku){const g=document.createElement("button");g.className="gengage-chat-comparison-floating-close gds-btn gds-btn-ghost gds-icon-btn",g.dataset.gengagePart="comparison-dock-close",g.type="button",g.setAttribute("aria-label",e.i18n?.closeAriaLabel??"Close"),g.innerHTML='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" aria-hidden="true"><path d="M18 6L6 18"/><path d="M6 6l12 12"/></svg>',g.addEventListener("click",p=>{p.preventDefault(),p.stopPropagation(),e.onToggleComparisonSku?.("")}),i.appendChild(g)}return i}var _l=4,wl=0;function kl(t){const e=[],a=new Set,n=(r,i)=>{if(typeof r!="string")return;const o=r.trim();if(!o)return;const s=o.toLowerCase();a.has(s)||(a.add(s),e.push({text:o,accent:i}))};n(t.highlight,!0);for(const r of t.labels??[])n(r,!1);return e.slice(0,_l)}function Sl(t){const e=kl(t),a=typeof t.description=="string"?t.description.trim():"";if(!a&&e.length===0)return null;const n=document.createElement("div");if(n.className="gengage-chat-categories-group-summary",n.dataset.gengagePart="categories-group-summary",n.appendChild(Cl(t)),e.length>0&&n.appendChild(El(e)),a){const r=document.createElement("p");r.className="gengage-chat-categories-group-reason",r.dataset.gengagePart="categories-group-reason",r.textContent=a,n.appendChild(r)}return n}function Cl(t){const e=document.createElement("div");if(e.className="gengage-chat-categories-group-selection",e.dataset.gengagePart="categories-group-selection",t.image&&je(t.image)){const n=document.createElement("img");n.className="gengage-chat-categories-group-selection-image",n.draggable=!1,n.src=t.image,n.alt=t.groupName,n.loading="lazy",$e(n),e.appendChild(n)}const a=document.createElement("div");return a.className="gengage-chat-categories-group-selection-title",a.textContent=t.groupName,e.appendChild(a),e}function El(t){const e=document.createElement("div");e.className="gengage-chat-categories-group-chips",e.dataset.gengagePart="categories-group-chips";for(const a of t){const n=document.createElement("span");n.className=a.accent?"gengage-chat-categories-group-chip gengage-chat-categories-group-chip--accent gds-chip gds-chip-active":"gengage-chat-categories-group-chip gds-chip",n.textContent=a.text,e.appendChild(n)}return e}function Pl(t,e){const a=t.props?.groups??[],n=t.props?.filterTags??[],r=`gengage-cat-${wl++}`,i=document.createElement("div");if(i.className="gengage-chat-categories",i.dataset.gengagePart="categories-container",a.length===0)return i;const o=document.createElement("div");o.className="gengage-chat-categories-tabs gds-toolbar",o.dataset.gengagePart="categories-tab-bar",o.setAttribute("role","tablist");const s=[],c=[],l=d=>{for(let g=0;g<s.length;g++){const p=g===d;s[g].classList.toggle("gengage-chat-categories-tab--active",p),s[g].classList.toggle("is-active",p),s[g].setAttribute("aria-selected",String(p)),s[g].tabIndex=p?0:-1,c[g].style.display=p?"":"none"}};for(let d=0;d<a.length;d++){const g=a[d],p=`${r}-tab-${d}`,u=`${r}-panel-${d}`,m=document.createElement("button");if(m.className="gengage-chat-categories-tab gds-tab",m.type="button",m.dataset.gengagePart="categories-tab",m.id=p,m.setAttribute("role","tab"),m.setAttribute("aria-controls",u),m.setAttribute("aria-selected",String(d===0)),m.tabIndex=d===0?0:-1,d===0&&m.classList.add("gengage-chat-categories-tab--active","is-active"),g.image&&je(g.image)){const x=document.createElement("img");x.className="gengage-chat-categories-tab-image",x.draggable=!1,x.src=g.image,x.alt=g.groupName,x.loading="lazy",$e(x),m.appendChild(x)}const f=document.createElement("span");f.className="gengage-chat-categories-tab-text",f.textContent=g.groupName,m.appendChild(f),m.addEventListener("click",()=>l(d)),m.addEventListener("keydown",x=>{let v=-1;x.key==="ArrowRight"||x.key==="ArrowDown"?v=(d+1)%a.length:x.key==="ArrowLeft"||x.key==="ArrowUp"?v=(d-1+a.length)%a.length:x.key==="Home"?v=0:x.key==="End"&&(v=a.length-1),v>=0&&(x.preventDefault(),l(v),s[v].focus())}),s.push(m),o.appendChild(m);const b=document.createElement("div");b.className="gengage-chat-categories-panel",b.dataset.gengagePart="categories-panel",b.id=u,b.setAttribute("role","tabpanel"),b.setAttribute("aria-labelledby",p),d!==0&&(b.style.display="none");const h=Sl(g);h&&b.appendChild(h);const y=document.createElement("div");y.className="gengage-chat-categories-grid",y.dataset.gengagePart="categories-grid";for(const x of g.products){const v=Tl(x,e);y.appendChild(v)}b.appendChild(y),c.push(b)}i.appendChild(o);for(const d of c)i.appendChild(d);if(n.length>0){const d=document.createElement("div");d.className="gengage-chat-categories-filter-tags gds-toolbar",d.dataset.gengagePart="categories-filter-tags";for(const g of n){const p=document.createElement("button");p.className="gengage-chat-categories-filter-tag gds-chip",p.type="button",p.dataset.gengagePart="categories-filter-tag",p.textContent=g.title,g.action&&p.addEventListener("click",()=>{e.onAction(g.action)}),d.appendChild(p)}i.appendChild(d)}return i}function Tl(t,e){const a=document.createElement("div");if(a.className="gengage-chat-product-card gds-card gds-product-card gds-card-interactive",a.dataset.gengagePart="categories-product-card",t.imageUrl&&je(t.imageUrl)){const i=document.createElement("img");i.className="gengage-chat-product-card-img",i.draggable=!1,i.src=t.imageUrl,i.alt=t.name,i.loading="lazy",$e(i),a.appendChild(i)}const n=document.createElement("div");n.className="gengage-chat-product-card-body";const r=document.createElement("div");if(r.className="gengage-chat-product-card-name",r.textContent=t.name,n.appendChild(r),t.price){const i=document.createElement("div");i.className="gengage-chat-product-card-price",i.textContent=se(t.price,e.pricing),n.appendChild(i)}return a.appendChild(n),(e.onProductSelect||e.onAction)&&(a.classList.add("gds-clickable"),a.addEventListener("click",()=>{if(t.sku){e.onAction({title:t.name,type:"launchSingleProduct",payload:{sku:t.sku}});return}e.onProductSelect?.(t)})),a}var Al="frontend_restore_panel_message";function st(t){return typeof t=="string"?t:""}function Ll(t){return Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object")return null;const a=e;return{imageUrl:st(a.imageUrl)||void 0,name:st(a.name)||void 0}}).filter(e=>e!==null):[]}function Il(t,e){const a=t.props??{},n=st(a.eyebrow),r=st(a.title),i=a.showTitle!==!1,o=st(a.ctaLabel)||e.i18n?.showPanelAriaLabel||"Show Results",s=st(a.panelMessageId),c=st(a.highlightMessageId),l=st(a.threadId),d=Ll(a.products).slice(0,3),g=document.createElement("button");g.type="button",g.className="gengage-chat-panel-restore-card gds-card",!n&&!i&&g.classList.add("gengage-chat-panel-restore-card--minimal"),g.dataset.gengagePart="panel-restore-card";const p=r||n||o;g.setAttribute("aria-label",r?`${p} - ${o}`:p);const u={title:r,type:Al,payload:{panelMessageId:s,highlightMessageId:c,threadId:l}};if(g.addEventListener("click",()=>e.onAction(u)),n){const f=document.createElement("div");f.className="gengage-chat-panel-restore-card__eyebrow",f.textContent=n,g.appendChild(f)}if(d.length>0){const f=document.createElement("div");f.className="gengage-chat-panel-restore-card__previews";for(const b of d){const h=document.createElement("div");h.className="gengage-chat-panel-restore-card__thumb";const y=b.imageUrl;if(y&&ye(y)){const x=document.createElement("img");x.loading="lazy",x.alt=b.name||r,Se(x,"src",y),$e(x),h.appendChild(x)}f.appendChild(h)}g.appendChild(f)}if(i&&r){const f=document.createElement("div");f.className="gengage-chat-panel-restore-card__title",f.textContent=r,f.title=r,g.appendChild(f)}const m=document.createElement("div");return m.className="gengage-chat-panel-restore-card__cta",m.textContent=o,g.appendChild(m),g}function Nl(t,e){const a=t.props?.product??t.props,n=document.createElement("div");if(n.className="gengage-chat-product-summary gds-card",n.dataset.gengagePart="product-summary-card",!a)return n;n.classList.add("gds-clickable"),n.addEventListener("click",h=>{h.target.closest("a")||e.onProductSelect?.(a)});const r=a.imageUrl;if(r&&ye(r)){const h=document.createElement("div");h.className="gengage-chat-product-summary__image",h.dataset.gengagePart="product-summary-image";const y=document.createElement("img");y.loading="lazy",Se(y,"src",r),y.alt=a.name||"Product image",$e(y),h.appendChild(y),n.appendChild(h)}const i=document.createElement("div");i.className="gengage-chat-product-summary__content",i.dataset.gengagePart="product-summary-content";const o=a.brand,s=a.name;if(s){const h=document.createElement("div");h.className="gengage-chat-product-summary__name",h.dataset.gengagePart="product-summary-name";const y=o&&!s.toLowerCase().startsWith(o.toLowerCase())?`${o} ${s}`:s;h.textContent=y,h.title=y,i.appendChild(h)}const c=a.rating,l=a.reviewCount;if(e.hideUserReviews!==!0&&typeof c=="number"&&Number.isFinite(c)&&c>0){const h=document.createElement("div");if(h.className="gengage-chat-product-summary__rating",h.dataset.gengagePart="product-summary-rating",h.appendChild(jn(c)),typeof l=="number"&&Number.isFinite(l)){const y=document.createElement("span");y.className="gengage-chat-product-summary__review-count",y.textContent=` (${l})`,h.appendChild(y)}i.appendChild(h)}const d=a.price,g=a.originalPrice;if(d){const h=Et(e,a),y=Dt(e,a),x=!!(g&&g!==d),v=document.createElement("div");v.className="gengage-chat-product-summary__price",v.dataset.gengagePart="product-summary-price";const w=!!(h&&x),P=Yt(e,a);if(w){const E=Jt({reasonText:h,salePriceFormatted:se(d,e.pricing),...P!==void 0?{logoUrl:P}:{}});if(x&&y==="inline"){v.classList.add("gengage-chat-product-summary__price--inline"),v.appendChild(E);const A=document.createElement("span");A.className="gengage-chat-product-summary__price-sep",A.setAttribute("aria-hidden","true");const R=document.createElement("span");R.className="gengage-chat-product-summary__price-original",R.textContent=se(g,e.pricing),v.appendChild(A),v.appendChild(R)}else{const A=document.createElement("span");A.className="gengage-chat-product-summary__price-original",A.textContent=se(g,e.pricing),v.appendChild(A),v.appendChild(document.createTextNode(" ")),v.appendChild(E)}i.appendChild(v)}else{if(x&&y==="inline"){v.classList.add("gengage-chat-product-summary__price--inline");const E=document.createElement("span");E.className="gengage-chat-product-summary__price-current",E.textContent=se(d,e.pricing);const A=document.createElement("span");A.className="gengage-chat-product-summary__price-sep",A.setAttribute("aria-hidden","true");const R=document.createElement("span");R.className="gengage-chat-product-summary__price-original",R.textContent=se(g,e.pricing),v.appendChild(E),v.appendChild(A),v.appendChild(R)}else if(x){const E=document.createElement("span");E.className="gengage-chat-product-summary__price-original",E.textContent=se(g,e.pricing),v.appendChild(E),v.appendChild(document.createTextNode(" "));const A=document.createElement("span");A.className="gengage-chat-product-summary__price-current",A.textContent=se(d,e.pricing),v.appendChild(A)}else{const E=document.createElement("span");E.className="gengage-chat-product-summary__price-current",E.textContent=se(d,e.pricing),v.appendChild(E)}if(h){const E=document.createElement("div");E.className="gengage-chat-product-summary__price-stack",E.appendChild(Kt(h)),E.appendChild(v),i.appendChild(E)}else i.appendChild(v)}}n.appendChild(i);const p=a.url,u=a.sku,m=a.cartCode??a.cart_code,f=typeof m=="string"&&m.trim()?m.trim():void 0,b=a.inStock;if(u&&f&&b!==!1){const h=document.createElement("button");h.type="button",h.className="gengage-chat-product-summary__cta gds-chip gds-chip-active",h.dataset.gengagePart="product-summary-cta",h.textContent=e.i18n?.addToCartButton??"Add to Cart",h.addEventListener("click",y=>{y.stopPropagation(),e.onAction({title:e.i18n?.addToCartButton??"Add to Cart",type:"addToCart",payload:{sku:u,cartCode:f,quantity:1}})}),n.appendChild(h)}else if(p&&ye(p)){const h=document.createElement("a");h.className="gengage-chat-product-summary__cta gds-chip gds-chip-active",h.dataset.gengagePart="product-summary-cta",Se(h,"href",p),Se(h,"target","_blank"),Se(h,"rel","noopener noreferrer"),h.textContent=e.i18n?.productCtaLabel??"View",n.appendChild(h)}return n}var zl={PhotoAnalysisCard:({element:t,context:e})=>Cc(t,e),BeautyPhotoStep:({element:t,context:e})=>Mn(t,e)};function Xt(){return window.innerWidth<768}var Jn={ActionButtons:({element:t,context:e})=>Ml(t,e),ActionButton:({element:t,context:e})=>Bl(t,e),InlineQuestionButtons:({element:t,context:e})=>xl(t,e),ProductCard:({element:t,context:e})=>Ma(t,e),ProductDetailsPanel:({element:t,context:e})=>ad(t,e),ProductGrid:({element:t,spec:e,renderElement:a,context:n})=>dd(t,e,a,n),ReviewHighlights:({element:t,context:e})=>e.hideUserReviews===!0?null:ol(t,{emptyReviewsMessage:e.i18n?.emptyReviewsMessage,reviewFilterPositive:e.i18n?.reviewFilterPositive,reviewFilterNegative:e.i18n?.reviewFilterNegative,reviewCustomersMentionSingular:e.i18n?.reviewCustomersMentionSingular,reviewCustomersMentionPlural:e.i18n?.reviewCustomersMentionPlural,reviewSubjectsHeading:e.i18n?.reviewSubjectsHeading}),ComparisonTable:({element:t,context:e})=>hd(t,e),AITopPicks:({element:t,context:e})=>ul(t,e),GroundingReviewCard:({element:t,context:e})=>e.hideUserReviews===!0?null:fl(t,e),AIGroupingCards:({element:t,context:e})=>vl(t,e),AISuggestedSearchCards:({element:t,context:e})=>yl(t,e),CategoriesContainer:({element:t,context:e})=>Pl(t,e),PanelRestoreCard:({element:t,context:e})=>Il(t,e),ProductSummaryCard:({element:t,context:e})=>Nl(t,e),Divider:({element:t})=>ud(t),...zl},za=({element:t,renderElement:e})=>{if(!t.children||t.children.length===0)return null;const a=document.createElement("div");for(const n of t.children){const r=e(n);r&&a.appendChild(r)}return a};function Xn(){return{...Jn}}function Qn(t,e,a=Jn,n=za){return Hi({spec:t,context:e,registry:a,containerClassName:"gengage-chat-uispec",unknownRenderer:n})}function Ml(t,e){const a=document.createElement("div");a.className="gengage-chat-action-buttons";const n=t.props?.buttons;if(n)for(const r of n){const i=document.createElement("button");i.className="gengage-chat-action-btn",i.textContent=r.label,i.addEventListener("click",()=>e.onAction(r.action)),a.appendChild(i)}return a}function Bl(t,e){const a=document.createElement("button");a.className="gengage-chat-action-btn";const n=t.props?.label;typeof n=="string"&&(a.textContent=n);const r=t.props?.action;return r&&a.addEventListener("click",()=>e.onAction(r)),a}function er(t,e,a,n,r){t.replaceChildren();const i=Dt(e,a),o=!!(r&&n&&r!==n),s=Et(e,a),c=!!(s&&o),l=Yt(e,a);if(!n||parseFloat(n)<=0)return;if(c){const g=Jt({reasonText:s,salePriceFormatted:se(n,e.pricing),...l!==void 0?{logoUrl:l}:{}});if(o&&i==="inline"){t.classList.add("gengage-chat-product-card-price-block--inline");const p=document.createElement("div");p.className="gengage-chat-product-card-price-row",p.appendChild(g);const u=document.createElement("span");u.className="gengage-chat-product-card-price-sep",u.setAttribute("aria-hidden","true");const m=document.createElement("span");m.className="gengage-chat-product-card-original-price",m.textContent=se(r,e.pricing),p.appendChild(u),p.appendChild(m),t.appendChild(p);return}if(t.classList.remove("gengage-chat-product-card-price-block--inline"),t.appendChild(g),o){t.appendChild(document.createTextNode(" "));const p=document.createElement("span");p.className="gengage-chat-product-card-original-price",p.textContent=se(r,e.pricing),t.appendChild(p)}return}if(o&&i==="inline"){t.classList.add("gengage-chat-product-card-price-block--inline");const g=document.createElement("div");g.className="gengage-chat-product-card-price-row";const p=document.createElement("span");p.className="gengage-chat-product-card-current-price",p.textContent=se(n,e.pricing);const u=document.createElement("span");u.className="gengage-chat-product-card-price-sep",u.setAttribute("aria-hidden","true");const m=document.createElement("span");m.className="gengage-chat-product-card-original-price",m.textContent=se(r,e.pricing),g.appendChild(p),g.appendChild(u),g.appendChild(m),t.appendChild(g);return}t.classList.remove("gengage-chat-product-card-price-block--inline");const d=document.createElement("span");if(d.className="gengage-chat-product-card-current-price",d.textContent=se(n,e.pricing),t.appendChild(d),o){t.appendChild(document.createTextNode(" "));const g=document.createElement("span");g.className="gengage-chat-product-card-original-price",g.textContent=se(r,e.pricing),t.appendChild(g)}}function tr(t,e,a,n,r,i,o){t.classList.remove("gengage-chat-product-details-price--inline"),t.replaceChildren(),t.className="gengage-chat-product-details-price";const s=Et(e,a),c=!!(s&&o),l=Yt(e,a);if(c){const g=Jt({reasonText:s,salePriceFormatted:se(n,e.pricing),...l!==void 0?{logoUrl:l}:{}});if(o&&i==="inline"){t.classList.add("gengage-chat-product-details-price--inline"),t.appendChild(g);const p=document.createElement("span");p.className="gengage-chat-product-details-price-sep",p.setAttribute("aria-hidden","true");const u=document.createElement("span");u.className="gengage-chat-product-details-original-price",u.textContent=se(r,e.pricing),t.appendChild(p),t.appendChild(u)}else{if(o){const p=document.createElement("span");p.className="gengage-chat-product-details-original-price",p.textContent=se(r,e.pricing),t.appendChild(p),t.appendChild(document.createTextNode(" "))}t.appendChild(g)}}else if(o&&i==="inline"){t.classList.add("gengage-chat-product-details-price--inline");const g=document.createElement("span");g.className="gengage-chat-product-details-current-price",g.textContent=se(n,e.pricing);const p=document.createElement("span");p.className="gengage-chat-product-details-price-sep",p.setAttribute("aria-hidden","true");const u=document.createElement("span");u.className="gengage-chat-product-details-original-price",u.textContent=se(r,e.pricing),t.appendChild(g),t.appendChild(p),t.appendChild(u)}else{if(o){const p=document.createElement("span");p.className="gengage-chat-product-details-original-price",p.textContent=se(r,e.pricing),t.appendChild(p),t.appendChild(document.createTextNode(" "))}const g=document.createElement("span");g.className="gengage-chat-product-details-current-price",g.textContent=se(n,e.pricing),t.appendChild(g)}const d=Ht(a,"discountPercent","price_discount_rate");if(!e.hideProductDiscountBadge&&typeof d=="number"&&d>0){const g=document.createElement("span");g.className="gengage-chat-product-details-discount-badge",g.textContent=`%${Un(d)}`,t.appendChild(g)}}function Ma(t,e){const a=document.createElement("div");a.className="gengage-chat-product-card gds-card gds-product-card gds-card-interactive";const n=t.props?.product??t.props;if(!n)return a;const r=n.sku;r&&(a.dataset.sku=r);const i=t.props?.action,o=n.name,s=n.url,c=n.sku,l=s&&ye(s)?s:void 0,d=()=>i?.type!=="launchSingleProduct"||l===void 0||c===void 0||e.onProductClick===void 0?!1:(e.onProductClick({sku:c,url:l,...typeof o=="string"?{name:o}:{}}),!0);(e.onProductSelect||i)&&(a.classList.add("gds-clickable"),a.addEventListener("click",C=>{if(!a.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")&&!C.target.closest(".gengage-chat-product-card-atc")&&!C.target.closest(".gengage-chat-product-card-cta")){if(i){d()||e.onAction(i);return}e.onProductSelect?.(n)}}));const g=n.imageUrl;if(g&&ye(g)){const C=document.createElement("div");C.className="gengage-chat-product-card-img-wrapper";const M=document.createElement("img");M.className="gengage-chat-product-card-img",M.loading="lazy",Se(M,"src",g);const G=n.name;G&&(M.alt=G),$e(M),C.appendChild(M);const D=n.discountPercent;if(!e.hideProductDiscountBadge&&typeof D=="number"&&D>0){const _=document.createElement("span");_.className="gengage-chat-product-card-discount-badge",_.textContent=`%${Un(D)}`,C.appendChild(_)}const B=document.createElement("div");B.className="gengage-chat-product-card-img-actions";const ee=n.sku;if(ee&&e.onFavoriteToggle){const _=document.createElement("button");_.className="gengage-chat-favorite-btn",_.type="button",_.dataset.gengageFavoriteSku=ee,_.setAttribute("aria-label",e.i18n?.addToFavoritesLabel??"Add to favorites");const z=e.favoritedSkus?.has(ee)??!1;z&&_.classList.add("gengage-chat-favorite-btn--active"),_.innerHTML=`<svg width="14" height="14" viewBox="0 0 24 24" fill="${z?"currentColor":"none"}" stroke="currentColor" stroke-width="2"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>`,_.addEventListener("click",L=>{L.stopPropagation(),_.classList.toggle("gengage-chat-favorite-btn--active");const O=_.querySelector("svg");O&&O.setAttribute("fill",_.classList.contains("gengage-chat-favorite-btn--active")?"currentColor":"none"),e.onFavoriteToggle(ee,n)}),B.appendChild(_)}const Q=n.sku,K=e.i18n?.findSimilarLabel??"Find Similar";if(Q){const _=document.createElement("button");_.className="gengage-chat-find-similar-pill",_.type="button",_.setAttribute("aria-label",K),_.dataset.tooltip=K,_.innerHTML='<span class="gengage-chat-find-similar-pill-icon" aria-hidden="true"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"><circle cx="10.5" cy="10.5" r="6.5"/><path d="M16 16l5.5 5.5"/></svg></span>';const z=document.createElement("span");z.className="gengage-chat-find-similar-pill-text",z.textContent=K,_.appendChild(z),_.addEventListener("click",L=>{L.stopPropagation(),e.onAction({title:K,type:"findSimilar",payload:{sku:Q}})}),B.appendChild(_)}B.childElementCount>0&&C.appendChild(B),a.appendChild(C)}const p=document.createElement("div");p.className="gengage-chat-product-card-body";const u=n.brand;if(u){const C=document.createElement("div");C.className="gengage-chat-product-card-brand",C.textContent=u,p.appendChild(C)}const m=n.rating,f=n.reviewCount,b=n.price,h=n.originalPrice,y=n.price_async,x=Et(e,n),v=Dt(e,n),w=!!(h&&b&&h!==b&&parseFloat(b)>0),P=!!(x&&w),E=!!(x&&!P||w&&v==="inline"),A=typeof m=="number"&&Number.isFinite(m)&&m>0,R=document.createElement("div");R.className="gengage-chat-product-card-meta-row";const j=document.createElement("div");j.className="gengage-chat-product-card-price gengage-chat-product-card-price-block";const Y=E?(()=>{const C=document.createElement("div");return C.className="gengage-chat-product-card-price-stack",x&&!P&&C.appendChild(Kt(x)),C.appendChild(j),C})():j;if(y===!0){const C=document.createElement("span");C.className="gengage-chat-price-skeleton",j.appendChild(C),setTimeout(()=>{C.parentElement&&(b&&parseFloat(b)>0?er(j,e,n,b,n.originalPrice):C.remove())},300)}else b&&parseFloat(b)>0&&er(j,e,n,b,h);if((j.childElementCount>0||y===!0)&&R.appendChild(Y),A){const C=document.createElement("div");C.className="gengage-chat-product-card-rating gengage-chat-product-card-rating-compact";const M=Ia(m),G=[`${M.toFixed(1)}`,"out of 5 stars"];typeof f=="number"&&Number.isFinite(f)&&G.push(`(${f} reviews)`),C.setAttribute("aria-label",G.join(" "));const D=document.createElement("span");D.className="gengage-chat-product-card-rating-compact-star",D.setAttribute("aria-hidden","true"),D.innerHTML='<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><path d="M12 3.6l2.58 5.23 5.77.84-4.17 4.07.98 5.75L12 16.78l-5.16 2.71.99-5.75L3.66 9.67l5.76-.84L12 3.6z"/></svg>';const B=document.createElement("span");B.className="gengage-chat-product-card-rating-compact-value",B.textContent=M.toFixed(1),C.appendChild(D),C.appendChild(B),R.appendChild(C)}if(R.childElementCount===0&&(R.classList.add("gengage-chat-product-card-meta-row--empty"),R.setAttribute("aria-hidden","true")),p.appendChild(R),o){const C=document.createElement("div");C.className="gengage-chat-product-card-name",C.textContent=o,C.title=o,p.appendChild(C)}const ie=n.inStock;if(e.hideStockStatus!==!0&&typeof ie=="boolean"){const C=document.createElement("div");C.className=`gengage-chat-product-card-stock ${ie?"is-in-stock":"is-out-of-stock"}`,C.textContent=ie?e.i18n?.inStockLabel??"In Stock":e.i18n?.outOfStockLabel??"Out of Stock",p.appendChild(C)}a.appendChild(p);const de=n.cartCode,I=!!(de&&c&&ie!==!1),H=e.i18n?.productCtaLabel??"View";if(I){const C=document.createElement("div");C.className="gengage-chat-product-card-buy-footer";const M=document.createElement("button");M.type="button",M.className="gengage-chat-product-card-buy-trigger",M.textContent=H,M.addEventListener("click",G=>{G.stopPropagation(),e.onAction({title:e.i18n?.addToCartButton??H,type:"addToCart",payload:{sku:c,cartCode:de,quantity:1}})}),C.appendChild(M),a.appendChild(C)}else if(i){const C=document.createElement("button");C.className="gengage-chat-product-card-cta",C.type="button",C.textContent=i.type==="launchSingleProduct"?H:i.title||H,C.addEventListener("click",M=>{if(a.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")){M.stopPropagation();return}d()||e.onAction(i)}),a.appendChild(C)}else if(l){const C=document.createElement("a");C.className="gengage-chat-product-card-cta",Se(C,"href",l),Se(C,"target","_blank"),Se(C,"rel","noopener noreferrer"),C.textContent=H,C.addEventListener("click",M=>{if(a.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")){M.preventDefault(),M.stopPropagation();return}e.onProductClick&&c&&(M.preventDefault(),e.onProductClick({sku:c,url:l,...o?{name:o}:{}}))}),a.appendChild(C)}if(e.comparisonSelectMode&&c&&e.onToggleComparisonSku){const C=document.createElement("div");C.className="gengage-chat-comparison-select-wrapper";const M=e.comparisonSelectedSkus?.includes(c)??!1;M&&C.classList.add("gengage-chat-comparison-select-wrapper--selected");const G=n.name??c,D=e.i18n?.comparisonSelectCardHint??"Tap anywhere on the card to add or remove it from comparison.";C.setAttribute("role","group"),C.setAttribute("aria-label",`${String(G)}. ${D}`);const B=document.createElement("button");B.type="button",B.className="gengage-chat-comparison-checkbox",B.dataset.selected=M?"true":"false",B.setAttribute("aria-pressed",M?"true":"false");const ee=document.createElement("span");ee.className="gengage-chat-comparison-checkbox-icon",ee.innerHTML=M?'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>':'<span class="gengage-chat-comparison-checkbox-dot"></span>';const Q=document.createElement("span");Q.className="gengage-chat-comparison-checkbox-label",Q.textContent=M?e.i18n?.comparisonSelectedLabel??"Selected":e.i18n?.comparisonSelectLabel??"Select to compare",B.appendChild(ee),B.appendChild(Q),B.addEventListener("click",_=>{_.stopPropagation(),e.onToggleComparisonSku?.(c)});const K=document.createElement("div");return K.className="gengage-chat-comparison-card-hint",K.setAttribute("aria-hidden","true"),K.textContent=D,C.addEventListener("click",_=>{_.target.closest(".gengage-chat-comparison-checkbox")||(_.stopPropagation(),e.onToggleComparisonSku?.(c))}),C.appendChild(B),C.appendChild(K),C.appendChild(a),C}return a}var ar=new Set(["color","colour","renk","renk kodu","color code"]),Rl=new Set(["size","beden","boyut"]),Ol=new Set(["finish","bitiş","bitişi"]),Fl=["variants","variantOptions","variant_options","productVariants","product_variants","options"],$l=new Set(["H2","H3","H4","P","BR","UL","OL","LI","STRONG","B","EM","I"]),Dl=new Set(["SCRIPT","STYLE","NOSCRIPT","IFRAME","OBJECT","EMBED"]);function Re(t,...e){for(const a of e){const n=t[a];if(typeof n=="string"){const r=n.trim();if(r.length>0)return r}}}function Ht(t,...e){for(const a of e){const n=t[a];if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"){const r=Number(n.replace(",","."));if(Number.isFinite(r))return r}}}function Qt(t,...e){for(const a of e){const n=t[a];if(typeof n=="boolean")return n}}function Hl(t,...e){for(const a of e){const n=t[a];if(n&&typeof n=="object"&&!Array.isArray(n))return n}}function Ul(t){return Array.isArray(t)?t.filter(e=>typeof e=="string"&&e.trim().length>0):[]}function jl(t){const e=[...Ul(t.images),Re(t,"imageUrl","image_url","image")].filter(a=>!!a&&ye(a));return Array.from(new Set(e))}function ql(t){return typeof DOMParser<"u"?(new DOMParser().parseFromString(t,"text/html").body.textContent??"").replace(/\s+/g," ").trim():t.replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim()}function Zl(t){const e=Re(t,"description_html","descriptionHtml");if(e){const n=ql(e);if(n)return{text:n,html:e}}const a=Re(t,"description");return a?{text:a}:void 0}function ea(t){return Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object")return null;const a=e,n=Re(a,"key","name","label","title"),r=a.value,i=typeof r=="string"||typeof r=="number"||typeof r=="boolean"?String(r).trim():void 0;return!n||!i?null:{key:n,value:i}}).filter(e=>e!==null):t&&typeof t=="object"?Object.entries(t).map(([e,a])=>{const n=typeof a=="string"||typeof a=="number"||typeof a=="boolean"?String(a).trim():void 0;return!e||!n?null:{key:e,value:n}}).filter(e=>e!==null):[]}function nr(t){const e=ea(t.features);return e.length>0?e:ea(t.specifications)}function Vl(t){const e=t.specifications,a=ea(e);if(a.length>0)return Array.isArray(e)?a:Object.fromEntries(a.map(r=>[r.key,r.value]));const n=ea(t.features);return n.length>0?n:void 0}function tt(t,...e){return Re(t,...e)}function rr(t,...e){return Ht(t,...e)}function ir(t){return tt(t,"value","option_value","attribute_value","label","title","name","variant_name","sku")}function or(t){const e=tt(t,"type","attribute","option_name","attribute_name");return e||(tt(t,"value")?tt(t,"name","variant_name"):void 0)}function Gl(t){const e=or(t)?.toLowerCase();return!!(Re(t,"color","colour","color_hex","hex","swatch","swatchColor")||e&&ar.has(e))}function sr(t){if(!t)return;const e=t.trim();if(!(!e||e.includes(";"))&&(typeof CSS<"u"&&CSS.supports?.("color",e)||/^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e)))return e}function Wl(t){const e=sr(tt(t,"swatchColor","swatch","color_hex","hex","color","colour"));if(e)return e;if(Gl(t))return sr(ir(t))}function Kl(t){return tt(t,"image","imageUrl","image_url","swatchImage","swatch_image")}function Yl(t){return rr(t,"price_discounted","priceDiscounted")??tt(t,"price_discounted","priceDiscounted")??rr(t,"price")??tt(t,"price")}function Jl(t){const e=t.trim().toLowerCase();return ar.has(e)||Rl.has(e)||Ol.has(e)}function Xl(t){const e=t.trim().toLowerCase();return e==="renk kodu"?"Renk":e==="color code"?"Color":t.trim()}function Ql(t){for(const e of Fl){const a=t[e];if(!Array.isArray(a))continue;const n=a.filter(r=>!!r&&typeof r=="object"&&!Array.isArray(r));if(n.length>0)return n}}function ed(t){const e=Ql(t);if(e)return e;const a=Re(t,"sku"),n=Qt(t,"inStock","in_stock"),r=[],i=new Set,o=(c,l)=>{if(!Jl(c)||typeof l!="string"&&typeof l!="number"&&typeof l!="boolean")return;const d=String(l).trim();if(!d)return;const g=Xl(c),p=`${g.toLowerCase()}:${d.toLowerCase()}`;i.has(p)||(i.add(p),r.push({name:g,value:d,sku:a,inStock:n}))},s=Hl(t,"facetHits","facet_hits");if(s)for(const[c,l]of Object.entries(s))o(c,l);for(const c of nr(t))o(c.key,c.value);return r}function td(t,e){const a=Array.from(new Set(t.map(or).filter(n=>!!n)));return a.length===1?`${t.length} ${a[0]}`:e.i18n?.variantsLabel??"Variants"}function ad(t,e){const a=document.createElement("article");a.className="gengage-chat-product-details-panel";const n=t.props?.product??t.props;if(!n)return a;const r=Re(n,"name"),i=Re(n,"brand"),o=Re(n,"sku"),s=Re(n,"cartCode","cart_code"),c=Re(n,"price"),l=Re(n,"originalPrice","price_original"),d=Qt(n,"price_async"),g=Et(e,n),p=Dt(e,n),u=!!(l&&c&&l!==c),m=Qt(n,"inStock","in_stock"),f=Ht(n,"reviewCount","review_count"),b=Ht(n,"rating"),h=jl(n),y=nr(n).slice(0,4);if(h.length>1){const I=document.createElement("div");I.className="gengage-chat-product-details-media gengage-chat-product-details-gallery gengage-chat-product-details-img-wrap";const H=document.createElement("img");H.className="gengage-chat-product-details-img";const C=h[0];C&&Se(H,"src",C),H.alt=r??"Product image",$e(H),I.appendChild(H);const M=document.createElement("div");M.className="gengage-chat-product-gallery-thumbs";const G=6;let D=null,B=0;const ee=e.i18n,Q=ee?.galleryPrevAriaLabel??"Previous image",K=ee?.galleryNextAriaLabel??"Next image",_=q=>q==="prev"?'<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="15 18 9 12 15 6"/></svg>':'<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg>',z=document.createElement("button");z.type="button",z.className="gengage-chat-product-gallery-nav gengage-chat-product-gallery-nav--prev gds-btn gds-btn-ghost gds-icon-btn",z.setAttribute("aria-label",Q),z.innerHTML=_("prev");const L=document.createElement("button");L.type="button",L.className="gengage-chat-product-gallery-nav gengage-chat-product-gallery-nav--next gds-btn gds-btn-ghost gds-icon-btn",L.setAttribute("aria-label",K),L.innerHTML=_("next");const O=()=>{z.disabled=B<=0,L.disabled=B>=h.length-1},$=q=>{if(q<0||q>=h.length||q===B)return;const te=h[q];if(!te)return;Se(H,"src",te);const X=M.querySelectorAll(".gengage-chat-product-gallery-thumb");D&&D.classList.remove("gengage-chat-product-gallery-thumb--active"),q<G&&X[q]?(X[q].classList.add("gengage-chat-product-gallery-thumb--active"),D=X[q]):D=null,B=q,O()};for(let q=0;q<h.length;q++){const te=h[q];if(!te)continue;if(q>=G)break;const X=document.createElement("img");X.className="gengage-chat-product-gallery-thumb",q===0&&(X.classList.add("gengage-chat-product-gallery-thumb--active"),D=X),Se(X,"src",te),X.alt=`${r??"Product"} ${q+1}`,X.width=48,X.height=48,$e(X),X.addEventListener("click",()=>{$(q)}),M.appendChild(X)}if(h.length>G){const q=document.createElement("span");q.className="gengage-chat-product-gallery-thumb-more",q.textContent=`+${h.length-G}`,M.appendChild(q)}z.addEventListener("click",q=>{q.stopPropagation(),$(B-1)}),L.addEventListener("click",q=>{q.stopPropagation(),$(B+1)}),O();let Z=0;const he=50;H.addEventListener("touchstart",q=>{const te=q.changedTouches[0];te&&(Z=te.clientX)},{passive:!0}),H.addEventListener("touchend",q=>{const te=q.changedTouches[0];if(!te)return;const X=te.clientX,k=Z-X;Math.abs(k)<he||$(k>0?Math.min(B+1,h.length-1):Math.max(B-1,0))}),I.appendChild(z),I.appendChild(L),I.appendChild(M),a.appendChild(I)}else if(h.length===1){const I=document.createElement("div");I.className="gengage-chat-product-details-media gengage-chat-product-details-img-wrap";const H=document.createElement("img");H.className="gengage-chat-product-details-img",H.loading="lazy";const C=h[0];C&&Se(H,"src",C),$e(H),H.alt=r??"Product image",I.appendChild(H),a.appendChild(I)}const x=document.createElement("div");if(x.className="gengage-chat-product-details-content",i&&(!r||!r.toLowerCase().startsWith(i.toLowerCase()))){const I=document.createElement("div");I.className="gengage-chat-product-details-brand",I.textContent=i,x.appendChild(I)}if(r){const I=document.createElement("h3");I.className="gengage-chat-product-details-title",I.textContent=r,I.title=r,x.appendChild(I)}if(e.hideUserReviews!==!0&&typeof b=="number"&&Number.isFinite(b)&&b>0){const I=document.createElement(o?"button":"div");I.className="gengage-chat-product-details-rating",o&&(I.type="button",I.classList.add("gengage-chat-product-details-rating--clickable"),I.setAttribute("aria-label",e.i18n?.groundingReviewCta??"Read Reviews"),I.addEventListener("click",()=>{e.onAction({title:e.i18n?.customerReviewsTitle??"Customer Reviews",type:"reviewSummary",payload:{sku:o}})})),I.appendChild(jn(b));const H=document.createElement("span");if(H.className="gengage-chat-product-details-rating-value",H.textContent=Ia(b).toFixed(1),I.appendChild(H),typeof f=="number"&&Number.isFinite(f)){const C=document.createElement("span");C.className="gengage-chat-product-details-review-count",C.textContent=` (${f})`,I.appendChild(C)}x.appendChild(I)}{const I=!!(g&&u);let H=x;if(g&&!I){const M=document.createElement("div");M.className="gengage-chat-product-details-price-stack",M.appendChild(Kt(g)),x.appendChild(M),H=M}const C=document.createElement("div");if(C.className="gengage-chat-product-details-price",d===!0){const M=document.createElement("span");M.className="gengage-chat-price-skeleton",C.appendChild(M),H.appendChild(C),setTimeout(()=>{if(M.parentElement)if(c&&parseFloat(c)>0)tr(C,e,n,c,l,p,u);else{const G=C.parentElement;C.remove(),G?.classList.contains("gengage-chat-product-details-price-stack")&&G.remove()}},300)}else if(c&&parseFloat(c)>0)tr(C,e,n,c,l,p,u),H.appendChild(C);else if(g){const M=H;M.classList.contains("gengage-chat-product-details-price-stack")&&M.remove()}}if(e.hideStockStatus!==!0&&typeof m=="boolean"){const I=document.createElement("div");I.className=`gengage-chat-product-details-stock ${m?"is-in-stock":"is-out-of-stock"}`,I.textContent=m?e.i18n?.inStockLabel??"In Stock":e.i18n?.outOfStockLabel??"Out of Stock",x.appendChild(I)}const v=n.promotions;if(v&&v.length>0){const I=document.createElement("div");I.className="gengage-chat-product-details-promos";for(const H of v.slice(0,3)){if(!H||/%(0(\.0+)?)\s/.test(H))continue;const C=document.createElement("span");C.className="gengage-chat-product-details-promo-badge",C.textContent=H,C.title=H,I.appendChild(C)}I.childElementCount>0&&x.appendChild(I)}if(y.length>0){const I=document.createElement("dl");I.className="gengage-chat-product-details-facts";for(const H of y){const C=document.createElement("div");C.className="gengage-chat-product-details-fact";const M=document.createElement("dt");M.textContent=H.key;const G=document.createElement("dd");G.textContent=H.value,C.appendChild(M),C.appendChild(G),I.appendChild(C)}x.appendChild(I)}const w=ed(n);if(w.length>0){const I=document.createElement("div");I.className="gengage-chat-product-variants";const H=document.createElement("div");H.className="gengage-chat-product-variants-label",H.textContent=td(w,e),I.appendChild(H);const C=document.createElement("div");C.className="gengage-chat-product-variants-list";for(const M of w){const G=ir(M),D=tt(M,"sku");if(!G&&!D)continue;const B=document.createElement("button");B.className="gengage-chat-product-variant-btn gds-chip",B.type="button";const ee=G??D??"";B.title=ee;const Q=Qt(M,"in_stock","inStock");D&&o&&D===o?(B.classList.add("gengage-chat-product-variant-btn--active"),B.setAttribute("aria-pressed","true")):B.setAttribute("aria-pressed","false"),Q===!1&&(B.classList.add("gengage-chat-product-variant-btn--out"),B.disabled=!0);const K=Kl(M),_=Wl(M);if(K&&ye(K)){const O=document.createElement("img");O.className="gengage-chat-product-variant-swatch gengage-chat-product-variant-swatch--image",Se(O,"src",K),O.alt="",O.setAttribute("aria-hidden","true"),$e(O),B.appendChild(O)}else if(_){const O=document.createElement("span");O.className="gengage-chat-product-variant-swatch",O.setAttribute("aria-hidden","true"),O.style.backgroundColor=_,B.appendChild(O)}const z=document.createElement("span");z.className="gengage-chat-product-variant-label",z.textContent=ee,B.appendChild(z);const L=Yl(M);if(L&&String(L)!==String(c)){const O=document.createElement("span");O.className="gengage-chat-product-variant-price",O.textContent=se(String(L),e.pricing),B.appendChild(O)}if(D&&D!==o){const O=r??"",$=(typeof M.value=="string"?M.value.trim():"")||(typeof M.name=="string"?M.name.trim():"")||(typeof M.variant_name=="string"?M.variant_name.trim():"")||"",Z=O.length>0?$.length>0&&$!==O?`${O} (${$})`:O:ee;B.addEventListener("click",()=>{e.onAction({title:Z,type:"launchVariant",payload:{sku:D}})})}C.appendChild(B)}C.childElementCount>0&&(I.appendChild(C),x.appendChild(I))}const P=document.createElement("div");P.className="gengage-chat-product-details-actions";const E=t.props?.action;if(E){const I=document.createElement("button");I.className="gengage-chat-product-details-cta gds-btn gds-btn-primary",I.type="button",I.textContent=E.title||e.i18n?.productCtaLabel||"View",I.addEventListener("click",()=>e.onAction(E)),P.appendChild(I)}if(s&&o&&m!==!1){const I=document.createElement("button");I.className="gengage-chat-product-details-atc gds-btn gds-btn-primary",I.type="button",I.textContent=e.i18n?.addToCartButton??"Add to Cart",I.addEventListener("click",()=>{e.onAction({title:e.i18n?.addToCartButton??"Add to Cart",type:"addToCart",payload:{sku:o,cartCode:s,quantity:1}})}),P.appendChild(I)}const A=Re(n,"url");if(!E&&A&&ye(A)){const I=document.createElement("a");I.className="gengage-chat-product-details-cta gds-btn gds-btn-secondary",Se(I,"href",A),Se(I,"target","_blank"),Se(I,"rel","noopener noreferrer"),I.textContent=e.i18n?.viewOnSiteLabel??e.i18n?.productCtaLabel??"View on Site",I.addEventListener("click",H=>{e.onProductClick&&o&&(H.preventDefault(),e.onProductClick({sku:o,url:A,...r?{name:r}:{}}))}),P.appendChild(I)}const R=A;if(R&&ye(R)){let G=function(B,ee){const Q=document.createElementNS(C,"circle");Q.setAttribute("cx",B),Q.setAttribute("cy",ee),Q.setAttribute("r","3"),M.appendChild(Q)},D=function(B,ee,Q,K){const _=document.createElementNS(C,"line");_.setAttribute("x1",B),_.setAttribute("y1",ee),_.setAttribute("x2",Q),_.setAttribute("y2",K),M.appendChild(_)};var ie=G,de=D;const I=document.createElement("button");I.className="gengage-chat-product-details-share gds-btn gds-btn-ghost gds-icon-btn",I.type="button";const H=e.i18n?.shareButton??"Share";I.title=H,I.setAttribute("aria-label",H);const C="http://www.w3.org/2000/svg",M=document.createElementNS(C,"svg");M.setAttribute("width","18"),M.setAttribute("height","18"),M.setAttribute("viewBox","0 0 24 24"),M.setAttribute("fill","none"),M.setAttribute("stroke","currentColor"),M.setAttribute("stroke-width","2"),M.setAttribute("stroke-linecap","round"),M.setAttribute("stroke-linejoin","round"),G("18","5"),G("6","12"),G("18","19"),D("8.59","13.51","15.42","17.49"),D("15.41","6.51","8.59","10.49"),I.appendChild(M),I.addEventListener("click",async()=>{try{navigator.share?await navigator.share({title:r??"",url:R}):navigator.clipboard&&(await navigator.clipboard.writeText(R),I.classList.add("gengage-chat-product-details-share--copied"),setTimeout(()=>I.classList.remove("gengage-chat-product-details-share--copied"),1500))}catch{}}),P.appendChild(I)}P.childElementCount>0&&x.appendChild(P),a.appendChild(x);const j=Zl(n),Y=Vl(n);return(j||Y)&&a.appendChild(id(j,Y,e)),a}function Ba(t){if(t.nodeType===Node.TEXT_NODE)return document.createTextNode(t.textContent??"");if(t.nodeType!==Node.ELEMENT_NODE)return null;const e=t,a=e.tagName.toUpperCase();if(Dl.has(a))return null;if(!$l.has(a)){const r=document.createDocumentFragment();for(const i of Array.from(e.childNodes)){const o=Ba(i);o&&r.appendChild(o)}return r}const n=document.createElement(a.toLowerCase());for(const r of Array.from(e.childNodes)){const i=Ba(r);i&&n.appendChild(i)}return n}function nd(t,e){const a=e.split(/\n{2,}/).map(n=>n.replace(/\s+/g," ").trim()).filter(Boolean);if(a.length!==0)for(const n of a){const r=document.createElement("p");r.textContent=n,t.appendChild(r)}}function rd(t,e){if(t.classList.add("gengage-chat-product-description"),e.html&&typeof DOMParser<"u"){const a=new DOMParser().parseFromString(e.html,"text/html"),n=Array.from(a.body.childNodes).map(r=>Ba(r)).filter(r=>!!r&&(r.nodeType===Node.ELEMENT_NODE||!!r.textContent?.trim()));if(n.length>0){for(const r of n)t.appendChild(r);return}}nd(t,e.text)}function id(t,e,a){const n=document.createElement("div");n.className="gengage-chat-product-detail-tabs";const r=document.createElement("div");r.className="gengage-chat-product-detail-tab-bar gds-toolbar";const i=[];if(t){const s=document.createElement("button");s.className="gengage-chat-product-detail-tab gds-tab gengage-chat-product-detail-tab--active is-active",s.type="button",s.setAttribute("aria-selected","true"),s.textContent=a.i18n?.productInfoTab??"Product Info",r.appendChild(s);const c=document.createElement("div");c.className="gengage-chat-product-detail-tab-panel",rd(c,t),i.push(c)}if(e){const s=document.createElement("button");s.className=`gengage-chat-product-detail-tab gds-tab${t?"":" gengage-chat-product-detail-tab--active is-active"}`,s.type="button",s.setAttribute("aria-selected",t?"false":"true"),s.textContent=a.i18n?.specificationsTab??"Specifications",r.appendChild(s);const c=document.createElement("div");c.className="gengage-chat-product-detail-tab-panel",t&&(c.style.display="none");const l=document.createElement("table");l.className="gengage-chat-product-specs-table";const d=Array.isArray(e)?e:Object.entries(e).map(([g,p])=>({key:g,value:p}));for(const g of d){const p=document.createElement("tr"),u=document.createElement("td");u.className="gengage-chat-product-specs-key",u.textContent=g.key;const m=document.createElement("td");m.className="gengage-chat-product-specs-value",m.textContent=g.value,p.appendChild(u),p.appendChild(m),l.appendChild(p)}c.appendChild(l),i.push(c)}const o=r.querySelectorAll(".gengage-chat-product-detail-tab");o.forEach((s,c)=>{s.addEventListener("click",()=>{o.forEach(l=>{l.classList.remove("gengage-chat-product-detail-tab--active","is-active"),l.setAttribute("aria-selected","false")}),s.classList.add("gengage-chat-product-detail-tab--active","is-active"),s.setAttribute("aria-selected","true"),i.forEach((l,d)=>{l.style.display=d===c?"":"none"})})}),n.appendChild(r);for(const s of i)n.appendChild(s);return n}function cr(t){const e='width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"';switch(t){case"related":return`<svg ${e} aria-hidden="true"><path d="M13 2 3 14h9l-1 8 10-12h-9l1-8z"/></svg>`;case"priceAsc":return`<svg ${e} aria-hidden="true"><polyline points="22 7 13.5 15.5 8.5 10.5 2 17"/><polyline points="16 7 22 7 22 13"/></svg>`;case"priceDesc":return`<svg ${e} aria-hidden="true"><polyline points="22 17 13.5 8.5 8.5 13.5 2 7"/><polyline points="16 17 22 17 22 11"/></svg>`;default:return""}}function od(){return'<svg class="gengage-chat-product-sort-chevron" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>'}function sd(){return'<svg class="gengage-chat-product-sort-check" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg>'}function cd(){return'<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3 4 7l4 4"/><path d="M16 21l4-4-4-4"/><path d="M4 7h16"/><path d="M20 17H4"/></svg>'}function lr(t,e){return t.type===e.type&&t.direction===e.direction}function dr(t,e,a){if(!a||a.type==="related")return t;const n=t.map(r=>{const i=e.elements[r]?.props?.product,o=i?Ht(i,"price"):void 0;return{id:r,price:typeof o=="number"?o:1/0}});return n.sort((r,i)=>r.price===1/0&&i.price===1/0?0:r.price===1/0?1:i.price===1/0?-1:a.direction==="desc"?i.price-r.price:r.price-i.price),n.map(r=>r.id)}function ld(t,e,a,n){const r=dr(e,a,n),i=new Map;for(const o of Array.from(t.children)){const s=o.dataset.elementId;s&&i.set(s,o)}for(const o of r){const s=i.get(o);s&&t.appendChild(s)}}function dd(t,e,a,n){const r=document.createElement("div");r.className="gengage-chat-product-grid-wrapper";const i=$a(t),o=i.isConsulting,s=t.children??[],c=document.createElement("div");c.className="gengage-chat-product-grid";const l=Array.isArray(t.props?.productSections)?t.props.productSections.map(h=>({title:typeof h.title=="string"?h.title:"",children:Array.isArray(h.children)?h.children.filter(y=>typeof y=="string"&&!!e.elements[y]):[]})).filter(h=>h.children.length>0):[],d=l.length>1,g=!d&&l.length===1&&l[0]?.title?l[0].title:"",p=n?.panelProductListHeading??(g||void 0),u=!o&&!d&&s.length>1&&n?.onSortChange,m=h=>{if(!n?.onToggleComparisonSku)return;const y=document.createElement("button");y.className="gengage-chat-comparison-toggle-btn gds-btn gds-btn-ghost",y.type="button",n.comparisonSelectMode&&y.classList.add("gengage-chat-comparison-toggle-btn--active"),n.isStreaming&&y.classList.add("gengage-chat-comparison-toggle-btn--hidden");const x=document.createElement("span");x.className="gengage-chat-comparison-toggle-icon",x.innerHTML=cd();const v=document.createElement("span");v.className="gengage-chat-comparison-toggle-label";const w=n.i18n?.compareSelected??"Compare";v.textContent=w,y.setAttribute("aria-label",w),y.title=w,y.appendChild(x),y.appendChild(v),y.addEventListener("click",()=>{n.onToggleComparisonSku?.("")}),h.appendChild(y)},f=(h,y=s.length)=>{const x=t.props?.endOfList;if(o||!(d?x===!1:x!==!0)||y===0)return;const v=n?.i18n?.viewMoreLabel??"Show More",w=document.createElement("button");w.className="gengage-chat-product-grid-view-more",w.type="button",w.textContent=v,w.addEventListener("click",()=>{n?.onAction({title:v,type:"moreProductList",payload:{}})}),h.appendChild(w)},b=()=>{const h=n?.isMobile??Xt();n?.comparisonSelectMode&&n.comparisonSelectedSkus&&!h&&r.appendChild(Yn(n.comparisonSelectedSkus,n))};if(u){const h=document.createElement("div");h.className="gengage-chat-product-sort-toolbar",h.setAttribute("role","toolbar"),h.setAttribute("aria-label",n.i18n?.sortToolbarAriaLabel??"Sort products");let y=n.productSort??{type:"related"};const x=[{label:n.i18n?.sortRelated??"Related",sortState:{type:"related"},icon:"related"},{label:n.i18n?.sortPriceAsc??"Price ↑",sortState:{type:"price",direction:"asc"},icon:"priceAsc"},{label:n.i18n?.sortPriceDesc??"Price ↓",sortState:{type:"price",direction:"desc"},icon:"priceDesc"}],v=document.createElement("div");v.className="gengage-chat-product-sort-dropdown";const w=document.createElement("button");w.type="button",w.className="gengage-chat-product-sort-trigger gds-btn gds-btn-ghost",w.setAttribute("aria-haspopup","listbox"),w.setAttribute("aria-expanded","false");const P=n.i18n?.sortToolbarAriaLabel??"Sort products",E=document.createElement("span");E.className="gengage-chat-product-sort-trigger-icon";const A=document.createElement("span");A.className="gengage-chat-product-sort-trigger-label";const R=D=>{const B=x.find(ee=>lr(ee.sortState,D))??x[0];A.textContent=B.label,E.innerHTML=cr(B.icon),v.dataset.sortIcon=B.icon,w.setAttribute("aria-label",`${P}: ${B.label}`),w.title=B.label};R(y);const j=document.createElement("span");j.className="gengage-chat-product-sort-trigger-chevron",j.innerHTML=od(),w.appendChild(E),w.appendChild(A),w.appendChild(j);const Y=document.createElement("div");Y.className="gengage-chat-product-sort-menu gds-menu",Y.hidden=!0,Y.setAttribute("role","listbox"),Y.setAttribute("aria-label",P);const ie=h.ownerDocument;let de=null,I=null;const H=()=>{Y.hidden=!0,v.classList.remove("gengage-chat-product-sort-dropdown--open"),w.setAttribute("aria-expanded","false"),de?.abort(),de=null,I?.disconnect(),I=null},C=D=>{v.classList.contains("gengage-chat-product-sort-dropdown--open")&&(v.contains(D.target)||H())},M=D=>{D.key==="Escape"&&(D.preventDefault(),H())},G=()=>{Y.hidden=!1,v.classList.add("gengage-chat-product-sort-dropdown--open"),w.setAttribute("aria-expanded","true"),de=new AbortController;const{signal:D}=de;ie.addEventListener("click",C,{signal:D}),ie.addEventListener("keydown",M,{capture:!0,signal:D}),typeof MutationObserver=="function"&&(I=new MutationObserver(()=>{v.isConnected||H()}),I.observe(ie,{childList:!0,subtree:!0}))};w.addEventListener("click",D=>{D.stopPropagation(),v.classList.contains("gengage-chat-product-sort-dropdown--open")?H():G()});for(const D of x){const B=document.createElement("button");B.type="button",B.className="gengage-chat-product-sort-option gds-menu-option",B.setAttribute("role","option");const ee=lr(y,D.sortState);B.setAttribute("aria-selected",ee?"true":"false"),ee&&B.classList.add("gengage-chat-product-sort-option--active","gds-menu-option-active");const Q=D.sortState.type==="related"?"related":`price-${D.sortState.direction??""}`;B.dataset.sortKey=Q;const K=document.createElement("span");K.className="gengage-chat-product-sort-option-icon",K.innerHTML=cr(D.icon);const _=document.createElement("span");_.className="gengage-chat-product-sort-option-label",_.textContent=D.label;const z=document.createElement("span");z.className="gengage-chat-product-sort-option-check",z.innerHTML=sd(),z.setAttribute("aria-hidden","true"),ee||z.classList.add("gengage-chat-product-sort-option-check--hidden"),B.appendChild(K),B.appendChild(_),B.appendChild(z),B.addEventListener("click",()=>{y=D.sortState,n.onSortChange?.(D.sortState),ld(c,s,e,D.sortState),Y.querySelectorAll(".gengage-chat-product-sort-option").forEach(L=>{const O=L,$=O.dataset.sortKey===Q;O.classList.toggle("gengage-chat-product-sort-option--active",$),O.classList.toggle("gds-menu-option-active",$),O.setAttribute("aria-selected",$?"true":"false"),O.querySelector(".gengage-chat-product-sort-option-check")?.classList.toggle("gengage-chat-product-sort-option-check--hidden",!$)}),R(D.sortState),H()}),Y.appendChild(B)}if(v.appendChild(w),v.appendChild(Y),h.appendChild(v),m(h),p){h.classList.add("gengage-chat-product-sort-toolbar--inline");const D=document.createElement("div");D.className="gengage-chat-product-grid-head";const B=document.createElement("span");B.className="gengage-chat-product-grid-head-title",B.textContent=p,D.appendChild(B);const ee=document.createElement("div");ee.className="gengage-chat-product-grid-head-actions",ee.appendChild(h),D.appendChild(ee),r.appendChild(D)}else r.appendChild(h)}else if(p){const h=document.createElement("div");h.className="gengage-chat-product-grid-head";const y=document.createElement("span");y.className="gengage-chat-product-grid-head-title",y.textContent=p,h.appendChild(y),r.appendChild(h)}if(d&&!o){if(r.classList.add("gengage-chat-product-grid-wrapper--grouped"),n?.onToggleComparisonSku){const v=document.createElement("div");v.className="gengage-chat-product-sort-toolbar gengage-chat-product-sort-toolbar--compare-only",v.setAttribute("role","toolbar"),v.setAttribute("aria-label",n.i18n?.compareSelected??"Compare"),m(v),r.appendChild(v)}const h=document.createElement("div");h.className="gengage-chat-product-grid-sections",h.setAttribute("role","list");const y=t.props?.rankingState;let x=0;for(const v of l){x+=v.children.length;const w=gd(v.children.length,n),P=document.createElement("section");P.className="gengage-chat-product-grid-section",P.setAttribute("role","listitem");const E=document.createElement("div");if(E.className="gengage-chat-product-grid-section-head",v.title){const j=document.createElement("h3");j.className="gengage-chat-product-grid-section-title",j.textContent=v.title,E.appendChild(j)}const A=document.createElement("span");A.className="gengage-chat-product-grid-section-count",A.textContent=w,E.appendChild(A),P.appendChild(E);const R=document.createElement("div");R.className="gengage-chat-product-grid gengage-chat-product-grid--section";for(const j of v.children){const Y=a(j);Y&&(Y.dataset.elementId=j,R.appendChild(Y))}(n?.isMobile??Xt())&&R.classList.add("gengage-chat-product-grid--mobile"),y==="pending"&&(R.classList.add("gengage-chat-product-grid--pending"),R.inert=!0,R.setAttribute("aria-busy","true")),P.appendChild(R),h.appendChild(P)}return r.appendChild(h),f(r,x),b(),r}if(o)yd(r,c,i,n);else{const h=dr(s,e,n?.productSort);for(const y of h){if(!e.elements[y])continue;const x=a(y);x&&(x.dataset.elementId=y,c.appendChild(x))}}return(n?.isMobile??Xt())&&c.classList.add("gengage-chat-product-grid--mobile"),t.props?.rankingState==="pending"&&(c.classList.add("gengage-chat-product-grid--pending"),c.inert=!0,c.setAttribute("aria-busy","true")),r.appendChild(c),f(r),b(),r}function gd(t,e){return(e?.i18n?.productGridSectionCountLabel??"{count} product(s)").replace(/\{count\}/g,String(t))}function pd(t,e,a){const n=r=>{const i=r?.url;return typeof i=="string"?i.trim():""};if(e.sku===t){const r=n(e);if(r.length>0)return r}return n(a.find(r=>r.sku===t))}function hd(t,e){const a=t.props??{},n=a.keyDifferencesHtml,r=a.recommended,i=Array.isArray(a.products)?a.products:[],o=Array.isArray(a.attributes)?a.attributes:[],s=Array.isArray(a.highlights)?a.highlights:[],c=Array.isArray(a.specialCases)?a.specialCases:void 0,l=a.recommendedText,d=a.winnerHits,g=a.productActions;if(!r)return document.createElement("div");const p={recommended:r,products:i,attributes:o,highlights:s,specialCases:c,locale:e.locale,onProductClick:({sku:m,name:f})=>{const b=pd(m,r,i);e.onProductClick?.({sku:m,url:b,...f!==void 0&&f!==""?{name:f}:{}})},pricing:e.pricing};l!==void 0&&(p.recommendedText=l),d!==void 0&&(p.winnerHits=d),g!==void 0&&(p.productActions=g),n!==void 0&&(p.keyDifferencesHtml=n),e.i18n&&(p.i18n={comparisonHeading:e.i18n.panelTitleComparisonResults,recommendedChoiceLabel:e.i18n.recommendedChoiceLabel,highlightsLabel:e.i18n.highlightsLabel,keyDifferencesLabel:e.i18n.keyDifferencesLabel,viewMoreLabel:e.i18n.viewMoreLabel,specialCasesLabel:e.i18n.specialCasesLabel,addToCartButton:e.i18n.addToCartButton});let u;try{u=Yc(p)}catch{return document.createElement("div")}return(e.isMobile??Xt())&&u.classList.add("gengage-chat-comparison--mobile"),u}function ud(t){const e=document.createElement("hr");e.className="gengage-chat-divider";const a=t.props?.label;if(a){const n=document.createElement("div");n.className="gengage-chat-divider-wrapper";const r=document.createElement("span");r.className="gengage-chat-divider-label",r.textContent=a,n.appendChild(e),n.appendChild(r);const i=document.createElement("hr");return i.className="gengage-chat-divider",n.appendChild(i),n}return e}var ta=new WeakMap;function gr(t){return{...Ct,...t?.i18n??{}}}function pr(t){return t.watchStylesPreparedTitle??t.beautyStylesPreparedTitle}function aa(t){return typeof t.status=="string"?t.status:"ready"}function Ra(t){const e=t.findIndex(a=>aa(a)!=="loading");return e<0?0:e}function md(t){if(typeof t!="string")return;const e=t.trim();if(!e)return;if(/^https?:\/\//i.test(e))return e;let a=e.split(/[?#]/)[0];if(a&&(a=a.replace(/^\/+/,""),a.startsWith("remoteConfig/")&&(a=a.slice(13)),!!a))return`https://configs.gengage.ai/assets/${a}`}function hr(t,e,a,n){const{grid:r,i18n:i}=t;r.innerHTML="",r.classList.remove("gengage-chat-product-grid--consulting-groups");const o=document.createElement("section");o.className="gengage-chat-consulting-loading-panel";const s=document.createElement("h4");s.className="gengage-chat-consulting-loading-panel-title",s.textContent=na(e,n,i),o.appendChild(s);const c=document.createElement("p");if(c.className="gengage-chat-consulting-loading-panel-copy",c.textContent=a==="loading"?i.consultingStyleLoadingDescription:i.consultingStyleUnavailableDescription,o.appendChild(c),a==="loading"){const l=document.createElement("div");l.className="gengage-chat-consulting-loading-grid";for(let d=0;d<3;d+=1){const g=document.createElement("div");g.className="gengage-chat-consulting-loading-card",l.appendChild(g)}o.appendChild(l)}r.appendChild(o)}function na(t,e,a){const n=r=>a.consultingFallbackStyleLabel.replace("{index}",String(r));return t.style_label??n(e)}function Oa(t,e){const a=t.variations[e];if(!a)return;const{grid:n,ctx:r,i18n:i}=t;n.innerHTML="",n.classList.remove("gengage-chat-product-grid--consulting-groups");const o=aa(a),s=e+1;if(o==="loading"){hr(t,a,"loading",s);return}if(o!=="ready"&&(!Array.isArray(a.product_list)||a.product_list.length===0)){hr(t,a,"unavailable",s);return}const c=Array.isArray(a.product_list)?a.product_list:[],l=Array.isArray(a.recommendation_groups)?a.recommendation_groups:[];if(l.length>0){n.classList.add("gengage-chat-product-grid--consulting-groups");const d=new Map;for(const b of c){const h=typeof b?.sku=="string"?b.sku:void 0;h&&d.set(h,b)}const g=(b,h,y,x)=>{if(h.length===0)return;const v=document.createElement("section");v.className="gengage-chat-consulting-group";const w=document.createElement("div");w.className="gengage-chat-consulting-group-header";const P=document.createElement("h4");if(P.className="gengage-chat-consulting-group-label",P.textContent=`${b} (${h.length})`,w.appendChild(P),typeof x=="string"&&x.trim().length>0){const A=document.createElement("p");A.className="gengage-chat-consulting-group-reason",A.textContent=x,w.appendChild(A)}v.appendChild(w);const E=document.createElement("div");E.className="gengage-chat-product-grid gengage-chat-consulting-group-grid",y&&E.classList.add("gengage-chat-consulting-group-grid--single-group"),E.style.setProperty("--consulting-group-columns",String(Math.max(1,Math.min(4,h.length))));for(const A of h){const R=Ma({type:"ProductCard",props:{product:A}},r??{onAction:()=>{}});E.appendChild(R)}v.appendChild(E),n.appendChild(v)},p=new Set,u=[];for(const b of l){const h=(Array.isArray(b.skus)?b.skus.filter(v=>typeof v=="string"&&v.trim().length>0):[]).map(v=>(p.add(v),d.get(v))).filter(v=>!!v);if(h.length===0)continue;const y=typeof b.label=="string"&&b.label.trim().length>0?b.label:i.consultingFallbackGroupLabel,x=typeof b.reason=="string"?b.reason:void 0;u.push({labelText:y,products:h,...x!==void 0?{reasonText:x}:{}})}const m=c.filter(b=>{const h=typeof b?.sku=="string"?b.sku:"";return h.length>0&&!p.has(h)});m.length>0&&u.push({labelText:i.consultingOtherCompatibleProductsLabel,products:m});const f=u.length===1;for(const b of u)g(b.labelText,b.products,f,b.reasonText);return}for(const d of c){const g=Ma({type:"ProductCard",props:{product:d}},r??{onAction:()=>{}});n.appendChild(g)}}function Fa(t,e,a,n){const r=aa(e),i=n.consultingStyleLoadingBadge,o=n.consultingStyleUnavailableBadge;t.classList.remove("gengage-chat-consulting-style-btn--loading","gengage-chat-consulting-style-btn--muted"),r==="loading"?t.classList.add("gengage-chat-consulting-style-btn--loading"):r!=="ready"&&t.classList.add("gengage-chat-consulting-style-btn--muted"),t.setAttribute("aria-label",na(e,a+1,n));let s=t.querySelector(".gengage-chat-consulting-style-media");s?s.innerHTML="":(s=document.createElement("div"),s.className="gengage-chat-consulting-style-media",t.appendChild(s));const c=md(e.image_url);if(c&&ye(c)){const d=document.createElement("img");d.className="gengage-chat-consulting-style-image",d.draggable=!1,Se(d,"src",c),d.alt=na(e,a+1,n),d.loading="lazy",$e(d),s.appendChild(d)}const l=document.createElement("span");if(l.className="gengage-chat-consulting-style-caption",l.textContent=na(e,a+1,n),s.appendChild(l),r==="loading"||r!=="ready"){const d=document.createElement("span");d.className="gengage-chat-consulting-style-status",d.textContent=r==="loading"?i:o,s.appendChild(d)}}function ur(t,e,a,n){t.addEventListener("click",()=>{const r=ta.get(e);r&&r.selectedIndex!==n&&(r.selectedIndex=n,a.querySelectorAll(".gengage-chat-consulting-style-btn").forEach((i,o)=>{i.classList.toggle("gengage-chat-consulting-style-btn--active",o===n)}),Oa(r,n))})}function fd(t,e,a,n){const r=gr(n),i=Ra(a),o=document.createElement("div");o.className="gengage-chat-consulting-style-picker";const s={grid:e,ctx:n,variations:a,i18n:r,selectedIndex:i};ta.set(o,s);const c=document.createElement("div");c.className="gengage-chat-consulting-style-picker-title",c.textContent=pr(r).replace("{count}",String(a.length)),o.appendChild(c);const l=document.createElement("div");l.className="gengage-chat-consulting-style-grid",o.appendChild(l),a.forEach((d,g)=>{const p=document.createElement("button");p.type="button",p.className="gengage-chat-consulting-style-btn gds-card",g===i&&p.classList.add("gengage-chat-consulting-style-btn--active"),Fa(p,d,g,r),ur(p,o,l,g),l.appendChild(p)}),t.appendChild(o),Oa(s,i)}function bd(t,e,a){const n=t.querySelector(".gengage-chat-consulting-style-picker"),r=vd(t);if(!n||!r)return!1;const i=n.querySelector(".gengage-chat-consulting-style-grid");if(!i)return!1;const o=gr(a);let s=ta.get(n);if(s)s.grid=r,s.ctx=a,s.variations=e,s.i18n=o;else{const p={grid:r,ctx:a,variations:e,i18n:o,selectedIndex:Ra(e)};ta.set(n,p),s=p}const c=n.querySelector(".gengage-chat-consulting-style-picker-title");c&&(c.textContent=pr(o).replace("{count}",String(e.length)));const l=s;let d=l.selectedIndex;d>=e.length&&(d=Math.max(0,e.length-1)),d<0&&(d=0),e.length>0&&aa(e[d]??{})==="loading"&&(d=Ra(e)),l.selectedIndex=d;const g=[...i.querySelectorAll(".gengage-chat-consulting-style-btn")];if(g.length===0)return!1;for(let p=0;p<e.length;p+=1){const u=e[p];let m=g[p];m?Fa(m,u,p,o):(m=document.createElement("button"),m.type="button",m.className="gengage-chat-consulting-style-btn gds-card",Fa(m,u,p,o),ur(m,n,i,p),i.appendChild(m),g[p]=m)}for(;i.querySelectorAll(".gengage-chat-consulting-style-btn").length>e.length;)i.lastElementChild?.remove();return i.querySelectorAll(".gengage-chat-consulting-style-btn").forEach((p,u)=>{p.classList.toggle("gengage-chat-consulting-style-btn--active",u===l.selectedIndex)}),Oa(l,l.selectedIndex),!0}function vd(t){const e=[...t.children];for(let a=e.length-1;a>=0;a-=1){const n=e[a];if(n.classList.contains("gengage-chat-product-grid"))return n}return t.querySelector(":scope > .gengage-chat-product-grid")}function $a(t){const e=typeof t.props?.source=="string"?t.props.source:void 0,a=(Array.isArray(t.props?.styleVariations)?t.props.styleVariations:[]).filter(n=>typeof n.style_label=="string"&&n.style_label.trim().length>0);return{isConsulting:vn(e)&&a.length>0,source:e,styleVariations:a}}function yd(t,e,a,n){fd(t,e,a.styleVariations,n)}function xd(t){return!t.isConsulting||t.styleVariations.length===0?!0:t.styleVariations.some(e=>(typeof e.status=="string"?e.status:"ready")!=="loading")}function _d(t,e,a){return!e.isConsulting||!e.source?!1:bd(t,e.styleVariations,a)}var wd=`<svg width="28" height="28" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
50
50
|
<rect x="3" y="7" width="18" height="13" rx="3" fill="currentColor" opacity="0.15"/>
|
|
51
51
|
<rect x="3" y="7" width="18" height="13" rx="3" stroke="currentColor" stroke-width="1.5"/>
|
|
52
52
|
<circle cx="9" cy="13" r="1.5" fill="currentColor"/>
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
<circle cx="12" cy="3" r="1" fill="currentColor"/>
|
|
57
57
|
<path d="M1 12V14" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
|
58
58
|
<path d="M23 12V14" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
|
59
|
-
</svg>`;function
|
|
59
|
+
</svg>`;function kd(t){const e=document.createElement("div");e.className="gengage-chat-launcher-container",e.dataset.gengagePart="chat-launcher-container";const a=document.createElement("div");a.className="gengage-chat-launcher-content-area",a.dataset.gengagePart="chat-launcher-content-primary",e.appendChild(a);const n=document.createElement("button");if(n.type="button",n.setAttribute("aria-label",t.ariaLabel??"Open chat"),t.imageUrl){n.className="gengage-chat-launcher gengage-chat-launcher--image-mode";const i=document.createElement("img");if(i.src=t.imageUrl,i.alt="",i.draggable=!1,t.mobileImageUrl){i.className="gengage-chat-launcher-img--desktop";const o=document.createElement("img");o.src=t.mobileImageUrl,o.alt="",o.draggable=!1,o.className="gengage-chat-launcher-img--mobile",n.appendChild(i),n.appendChild(o)}else n.appendChild(i)}else n.className="gengage-chat-launcher",n.innerHTML=t.svgMarkup??wd;if(n.dataset.gengagePart="chat-launcher-button",t.tooltip!==void 0){const i=document.createElement("span");i.className="gengage-chat-launcher-tooltip",i.dataset.gengagePart="chat-launcher-tooltip",i.textContent=t.tooltip,n.appendChild(i)}t.hideMobile&&(e.dataset.hideMobile="1"),t.mobileBreakpoint!==void 0&&(e.dataset.mobileBreakpoint=String(t.mobileBreakpoint)),n.addEventListener("click",t.onClick),e.appendChild(n);const r=document.createElement("div");return r.className="gengage-chat-launcher-content-area-bottom",r.dataset.gengagePart="chat-launcher-content-secondary",e.appendChild(r),{container:e,button:n,contentArea:a,contentAreaBottom:r}}var mr="gengage-floating-launcher-style";function Sd(t){return`
|
|
60
60
|
@property --gengage-fl-ring-angle {
|
|
61
61
|
syntax: '<angle>';
|
|
62
62
|
initial-value: 0deg;
|
|
@@ -73,16 +73,16 @@
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
.gengage-fl {
|
|
76
|
-
--gengage-fl-primary: ${
|
|
77
|
-
--gengage-fl-bg: ${
|
|
78
|
-
--gengage-fl-text: ${
|
|
79
|
-
--gengage-fl-placeholder: ${
|
|
80
|
-
--gengage-fl-icon: ${
|
|
81
|
-
--gengage-fl-border: ${
|
|
82
|
-
--gengage-fl-radius: ${
|
|
83
|
-
--gengage-fl-height: ${
|
|
84
|
-
--gengage-fl-max-width: var(--gengage-floating-launcher-max-width, ${
|
|
85
|
-
--gengage-fl-font: ${
|
|
76
|
+
--gengage-fl-primary: ${t.primaryColor};
|
|
77
|
+
--gengage-fl-bg: ${t.backgroundColor};
|
|
78
|
+
--gengage-fl-text: ${t.textColor};
|
|
79
|
+
--gengage-fl-placeholder: ${t.placeholderColor};
|
|
80
|
+
--gengage-fl-icon: ${t.iconColor};
|
|
81
|
+
--gengage-fl-border: ${t.borderColor};
|
|
82
|
+
--gengage-fl-radius: ${t.borderRadius};
|
|
83
|
+
--gengage-fl-height: ${t.height};
|
|
84
|
+
--gengage-fl-max-width: var(--gengage-floating-launcher-max-width, ${t.maxWidth});
|
|
85
|
+
--gengage-fl-font: ${t.fontFamily};
|
|
86
86
|
|
|
87
87
|
position: fixed;
|
|
88
88
|
bottom: var(--gengage-floating-launcher-bottom, 24px);
|
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
background: color-mix(in srgb, #ef4444 10%, transparent);
|
|
281
281
|
color: #ef4444;
|
|
282
282
|
}
|
|
283
|
-
`.trim()}function
|
|
283
|
+
`.trim()}function Cd(){return`
|
|
284
284
|
<div class="gengage-fl-inner">
|
|
285
285
|
<div class="gengage-fl-ring" aria-hidden="true"></div>
|
|
286
286
|
<div class="gengage-fl-bar">
|
|
@@ -339,14 +339,14 @@
|
|
|
339
339
|
<line x1="6" y1="6" x2="18" y2="18"/>
|
|
340
340
|
</svg>
|
|
341
341
|
</button>
|
|
342
|
-
</div>`.trim()}function
|
|
343
|
-
${
|
|
342
|
+
</div>`.trim()}function fr(t,e,a){const{primaryColor:n="#6366f1",backgroundColor:r="#ffffff",textColor:i="#111827",placeholderColor:o="#9ca3af",iconColor:s="#6b7280",borderColor:c="#e5e7eb",borderRadius:l="999px",height:d="56px",maxWidth:g="680px",fontFamily:p="inherit",placeholders:u=["Ürün ara","Karşılaştır","Soru sor"],placeholderInterval:m=2e3,voiceLang:f="tr-TR",showBorderAnimation:b=!0,sendAriaLabel:h="Gönder",micAriaLabel:y="Sesli giriş",cancelAriaLabel:x="Ses kaydını durdur",openChatAriaLabel:v="Chat'i aç"}=t;if(!a.getElementById(mr)){const N=document.createElement("style");N.id=mr,N.textContent=Sd({primaryColor:n,backgroundColor:r,textColor:i,placeholderColor:o,iconColor:s,borderColor:c,borderRadius:l,height:d,maxWidth:g,fontFamily:p}),a.appendChild(N)}const w=document.createElement("div");w.className="gengage-fl",w.dataset.gengagePart="floating-launcher",w.innerHTML=Cd();const P=w.querySelector(".gengage-fl-input"),E=w.querySelector(".gengage-fl-transcript"),A=w.querySelector(".gengage-fl-transcript-final"),R=w.querySelector(".gengage-fl-transcript-interim"),j=w.querySelector(".gengage-fl-btn-send"),Y=w.querySelector(".gengage-fl-btn-mic"),ie=w.querySelector(".gengage-fl-btn-open-chat"),de=w.querySelector(".gengage-fl-cancel"),I=w.querySelector(".gengage-fl-wave"),H=w.querySelector(".gengage-fl-ring");P.placeholder=u[0]??"",j.setAttribute("aria-label",h),Y.setAttribute("aria-label",y),de.setAttribute("aria-label",x),ie.setAttribute("aria-label",v);let C=!1,M=!1,G="",D=!1,B=null,ee=0,Q=null,K=null,_=null,z=null,L=null,O=0;function $(){const N=P.value.trim().length>0;if(Y.classList.toggle("is-recording",C),C){j.style.display="flex",Y.style.display="flex",de.style.display="flex",ie.style.display="none";return}j.style.display=N?"flex":"none",Y.style.display=N?"none":"flex",de.style.display="none",ie.style.display=!N&&D?"flex":"none"}function Z(){ee=(ee+1)%u.length,P.placeholder=u[ee]??"",Q=setTimeout(Z,m)}function he(){Q!==null||u.length<=1||(Q=setTimeout(Z,m))}function q(){Q!==null&&(clearTimeout(Q),Q=null)}function te(N){const re=N?.keepTranscript??!1;M=!1,C=!1,fe(),b&&Ee(),re?G.trim()&&(P.value=G.trim()):(G="",N?.clearInput&&(P.value="")),P.style.display="",E.style.display="none",A.textContent="",R.textContent=""}function X(){C&&(J(),te({keepTranscript:!1}));const N=P.value.trim();N&&(e.onSend(N),D||(D=!0)),P.value="",G="",$()}function k(){const N=window,re=N.SpeechRecognition??N.webkitSpeechRecognition;if(!re){console.warn("[FloatingLauncher] SpeechRecognition not supported.");return}B||(B=new re,B.continuous=!0,B.interimResults=!0,B.lang=f),C=!0,M=!0,G="",P.value="",P.style.display="none",E.style.display="flex",A.textContent="",R.textContent="",$(),ge(),b&&Le(),B.onresult=le=>{if(!C)return;let W="",ue="";for(let Pe=le.resultIndex;Pe<le.results.length;Pe++){const Te=le.results[Pe];if(!Te)continue;const ze=Te[0]?.transcript??"";Te.isFinal?ue+=ze:W+=ze}G+=ue,A.textContent=G,R.textContent=W,P.value=`${G} ${W}`.trim(),$()},B.onend=()=>oe(),B.onerror=()=>oe();try{B.start()}catch{oe()}}function J(){try{B?.stop()}catch{}}function oe(){M&&(te({keepTranscript:!0}),$())}async function ge(){const N=++O,re=Array.from(I.querySelectorAll("span"));try{const le=await navigator.mediaDevices.getUserMedia({audio:!0});if(!C||N!==O){le.getTracks().forEach(yt=>yt.stop());return}K=le;const W=window,ue=W.AudioContext??W.webkitAudioContext;if(!ue)throw K=null,le.getTracks().forEach(yt=>yt.stop()),new Error("AudioContext not supported");const Pe=new ue;if(!C||N!==O){K=null,le.getTracks().forEach(yt=>yt.stop()),Pe.close().catch(()=>{});return}_=Pe,z=Pe.createAnalyser(),z.fftSize=256,Pe.createMediaStreamSource(le).connect(z);const Te=new Uint8Array(z.frequencyBinCount),ze=()=>{if(!C||N!==O||!z)return;z.getByteFrequencyData(Te);const yt=Math.max(1,Math.floor(Te.length/re.length));re.forEach((Uf,jf)=>{Uf.style.height=`${4+Math.round((Te[jf*yt]??0)/255*8)}px`}),L=requestAnimationFrame(ze)};ze()}catch{if(!C||N!==O)return;L!==null&&(cancelAnimationFrame(L),L=null),z&&(z.disconnect(),z=null),_&&(_.close().catch(()=>{}),_=null),K&&(K.getTracks().forEach(le=>le.stop()),K=null),I.classList.add("is-css-animated")}}function fe(){O+=1,I.classList.remove("is-css-animated"),L!==null&&(cancelAnimationFrame(L),L=null),z&&(z.disconnect(),z=null),_&&(_.close().catch(()=>{}),_=null),K&&(K.getTracks().forEach(N=>N.stop()),K=null),Array.from(I.querySelectorAll("span")).forEach(N=>{N.style.height="4px"})}function Le(){H.classList.add("is-active")}function Ee(){H.classList.remove("is-active")}j.addEventListener("click",X),Y.addEventListener("click",N=>{N.preventDefault(),N.stopPropagation(),C?J():k()}),de.addEventListener("click",()=>{C&&(J(),te({keepTranscript:!1,clearInput:!0}),$())}),ie.addEventListener("click",N=>{N.preventDefault(),N.stopPropagation(),e.onOpenChat()}),P.addEventListener("input",$),P.addEventListener("keydown",N=>{N.key==="Enter"&&X()}),$(),he();function F(){D=!0,$()}function U(){q(),fe(),Ee(),C&&(C=!1,J()),B&&(B.onresult=null,B.onend=null,B.onerror=null,B=null)}return{container:w,showOpenChatButton:F,destroy:U}}var Ed="gengage-inline-launcher-style",br="gengage-inline-launcher-hide-floating",Oe="gengage-inline-launcher",Pd="gengage-inline-launcher",Ut="data-gengage-inline-sibling",Da="data-gengage-inline-sibling-restore-index",Td='<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"><path d="M8.85 2.4c.23 0 .43.16.48.39l.9 3.77a3.8 3.8 0 0 0 2.8 2.8l3.77.9a.5.5 0 0 1 0 .98l-3.77.9a3.8 3.8 0 0 0-2.8 2.8l-.9 3.77a.5.5 0 0 1-.98 0l-.9-3.77a3.8 3.8 0 0 0-2.8-2.8l-3.77-.9a.5.5 0 0 1 0-.98l3.77-.9a3.8 3.8 0 0 0 2.8-2.8l.9-3.77c.05-.23.25-.39.48-.39Z" fill="currentColor"/><path d="M15.95 1.1c.12 0 .23.08.26.2l.32 1.34c.16.68.7 1.21 1.37 1.37l1.34.32a.27.27 0 0 1 0 .53l-1.34.32a1.87 1.87 0 0 0-1.37 1.37l-.32 1.34a.27.27 0 0 1-.53 0l-.32-1.34A1.87 1.87 0 0 0 14 5.18l-1.34-.32a.27.27 0 0 1 0-.53L14 4a1.87 1.87 0 0 0 1.37-1.37l.32-1.34c.03-.12.14-.2.26-.2Z" fill="currentColor" opacity=".72"/></svg>',we={rowGap:"14px",buttonHeight:"46px",buttonPadding:"0 14px 0 10px",buttonGap:"10px",fontSize:"15px",iconSize:"30px",iconImageSize:"22px",sparkSize:"20px",sparkIconSize:"18px",mobile:{rowGap:"6px",buttonPadding:"0 8px 0 6px",buttonGap:"6px",fontSize:"12px",iconSize:"30px",iconImageSize:"22px",sparkSize:"14px",sparkIconSize:"12px",hideTitle:!1,hideSpark:!0,hideLogo:!1}};function Ad(t){const e=t?.mobile;return{rowGap:t?.rowGap??we.rowGap,buttonHeight:t?.buttonHeight??we.buttonHeight,buttonPadding:t?.buttonPadding??we.buttonPadding,buttonGap:t?.buttonGap??we.buttonGap,fontSize:t?.fontSize??we.fontSize,iconSize:t?.iconSize??we.iconSize,iconImageSize:t?.iconImageSize??we.iconImageSize,sparkSize:t?.sparkSize??we.sparkSize,sparkIconSize:t?.sparkIconSize??we.sparkIconSize,mobile:{rowGap:e?.rowGap??we.mobile.rowGap,buttonPadding:e?.buttonPadding??we.mobile.buttonPadding,buttonGap:e?.buttonGap??we.mobile.buttonGap,fontSize:e?.fontSize??we.mobile.fontSize,iconSize:e?.iconSize??we.mobile.iconSize,iconImageSize:e?.iconImageSize??we.mobile.iconImageSize,sparkSize:e?.sparkSize??we.mobile.sparkSize,sparkIconSize:e?.sparkIconSize??we.mobile.sparkIconSize,hideTitle:e?.hideTitle??we.mobile.hideTitle,hideSpark:e?.hideSpark??we.mobile.hideSpark,hideLogo:e?.hideLogo??we.mobile.hideLogo}}}function Ld(t){const e=`.${t.rowClassName}`,a=`#${CSS.escape(t.buttonId)}`,n=`.${Oe}-icon`,r=`.${Oe}-copy`,i=`.${Oe}-title`,o=`.${Oe}-spark`,s=`@media (max-width: ${t.compactBelowWidth-.02}px)`,{sizes:c}=t,l=c.mobile.hideTitle?"display:none;":"display:flex;flex:0 1 auto;min-width:0;",d=c.mobile.hideSpark?"display:none;":"display:inline-flex;",g=c.mobile.hideLogo?"display:none !important;width:0 !important;height:0 !important;flex:0 0 0 !important;overflow:hidden !important;":"display:inline-flex;";return`
|
|
343
|
+
${e}{
|
|
344
344
|
display:flex;
|
|
345
345
|
align-items:center;
|
|
346
346
|
gap:${c.rowGap};
|
|
347
347
|
min-width:0;
|
|
348
348
|
}
|
|
349
|
-
${
|
|
349
|
+
${e} > [${Ut}]{
|
|
350
350
|
flex:1 1 auto;
|
|
351
351
|
min-width:0;
|
|
352
352
|
}
|
|
@@ -357,12 +357,12 @@ ${a}{
|
|
|
357
357
|
gap:${c.buttonGap};
|
|
358
358
|
min-height:${c.buttonHeight};
|
|
359
359
|
padding:${c.buttonPadding};
|
|
360
|
-
border:1px solid color-mix(in srgb, ${
|
|
361
|
-
border-radius:${
|
|
360
|
+
border:1px solid color-mix(in srgb, ${t.primaryColor} 52%, white);
|
|
361
|
+
border-radius:${t.borderRadius};
|
|
362
362
|
background:linear-gradient(180deg,#fffdfa 0%,#fff2e6 100%);
|
|
363
|
-
color:${
|
|
364
|
-
box-shadow:0 10px 22px color-mix(in srgb, ${
|
|
365
|
-
font:600 ${c.fontSize}/1.05 ${
|
|
363
|
+
color:${t.textColor};
|
|
364
|
+
box-shadow:0 10px 22px color-mix(in srgb, ${t.primaryColor} 14%, transparent);
|
|
365
|
+
font:600 ${c.fontSize}/1.05 ${t.fontFamily};
|
|
366
366
|
letter-spacing:-0.01em;
|
|
367
367
|
cursor:pointer;
|
|
368
368
|
transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease, background .18s ease;
|
|
@@ -383,17 +383,17 @@ ${a} > *{
|
|
|
383
383
|
}
|
|
384
384
|
${a}:hover{
|
|
385
385
|
transform:translateY(-1px);
|
|
386
|
-
border-color:${
|
|
387
|
-
box-shadow:0 14px 26px color-mix(in srgb, ${
|
|
386
|
+
border-color:${t.primaryColor};
|
|
387
|
+
box-shadow:0 14px 26px color-mix(in srgb, ${t.primaryColor} 20%, transparent);
|
|
388
388
|
}
|
|
389
389
|
${a}:focus-visible{
|
|
390
|
-
outline:2px solid color-mix(in srgb, ${
|
|
390
|
+
outline:2px solid color-mix(in srgb, ${t.primaryColor} 34%, white);
|
|
391
391
|
outline-offset:2px;
|
|
392
392
|
}
|
|
393
|
-
${a}.${
|
|
394
|
-
border-color:${
|
|
393
|
+
${a}.${Oe}--active{
|
|
394
|
+
border-color:${t.primaryColor};
|
|
395
395
|
background:linear-gradient(180deg,#fff7ef 0%,#ffe7d5 100%);
|
|
396
|
-
box-shadow:0 16px 28px color-mix(in srgb, ${
|
|
396
|
+
box-shadow:0 16px 28px color-mix(in srgb, ${t.primaryColor} 24%, transparent);
|
|
397
397
|
}
|
|
398
398
|
${a} ${n}{
|
|
399
399
|
display:inline-flex;
|
|
@@ -404,7 +404,7 @@ ${a} ${n}{
|
|
|
404
404
|
flex:0 0 ${c.iconSize};
|
|
405
405
|
border-radius:10px;
|
|
406
406
|
background:linear-gradient(180deg,#fff7f0 0%,#ffe8d6 100%);
|
|
407
|
-
box-shadow:inset 0 0 0 1px color-mix(in srgb, ${
|
|
407
|
+
box-shadow:inset 0 0 0 1px color-mix(in srgb, ${t.primaryColor} 12%, transparent);
|
|
408
408
|
}
|
|
409
409
|
${a} ${n} img{
|
|
410
410
|
width:${c.iconImageSize};
|
|
@@ -430,7 +430,7 @@ ${a} ${o}{
|
|
|
430
430
|
width:${c.sparkSize};
|
|
431
431
|
height:${c.sparkSize};
|
|
432
432
|
flex:0 0 ${c.sparkSize};
|
|
433
|
-
color:${
|
|
433
|
+
color:${t.primaryColor};
|
|
434
434
|
}
|
|
435
435
|
${a} ${o} svg{
|
|
436
436
|
width:${c.sparkIconSize};
|
|
@@ -438,7 +438,7 @@ ${a} ${o} svg{
|
|
|
438
438
|
display:block;
|
|
439
439
|
}
|
|
440
440
|
${s}{
|
|
441
|
-
${
|
|
441
|
+
${e}{ gap:${c.mobile.rowGap}; }
|
|
442
442
|
${a}{
|
|
443
443
|
gap:${c.mobile.buttonGap};
|
|
444
444
|
padding:${c.mobile.buttonPadding};
|
|
@@ -451,10 +451,10 @@ ${s}{
|
|
|
451
451
|
line-height:1.05;
|
|
452
452
|
}
|
|
453
453
|
${a} ${n}{
|
|
454
|
-
${
|
|
454
|
+
${g}
|
|
455
455
|
}
|
|
456
456
|
${a} ${o}{
|
|
457
|
-
${
|
|
457
|
+
${d}
|
|
458
458
|
width:${c.mobile.sparkSize};
|
|
459
459
|
height:${c.mobile.sparkSize};
|
|
460
460
|
flex:0 0 ${c.mobile.sparkSize};
|
|
@@ -464,7 +464,7 @@ ${s}{
|
|
|
464
464
|
height:${c.mobile.sparkIconSize};
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
|
-
`.trim()}function Sg(e){return new Promise(t=>window.setTimeout(t,e))}function fr(e,t,a){const{hostSelector:n,rowClassName:r="gengage-inline-launcher-row",siblingSelector:i,siblingPlacement:o="before",rowPlacement:s="end",title:c="Ask",iconUrl:l,primaryColor:g="#6366f1",textColor:d="#222222",fontFamily:p="inherit",borderRadius:u="3px",showSparkIcon:f=!0,desktopMinWidth:b=0,enableOnMobile:m=!1,disabledPageTypes:h=["pdp"],hideFloatingLauncher:C=!0,mountPollFrames:x=90,debounceMs:v=90,buttonId:S=xg}=e,E=e.ariaLabel??c,P=e.siblingRestoreParentSelector??n,A=m&&b>0?b:576,M=wg(e.size),j=`${yg}-${S}`;let X=!1,oe=!1,pe=null,L=null,F=null,k=null;const B=()=>{if(m&&b>0&&window.innerWidth<b&&e.mobileHost&&e.mobileHost){const N=e.mobileHost;return{hostSelector:N.hostSelector,siblingSelector:N.siblingSelector??i,siblingRestoreParentSelector:N.siblingRestoreParentSelector??N.hostSelector,rowPlacement:N.rowPlacement??s,siblingPlacement:N.siblingPlacement??o}}return{hostSelector:n,siblingSelector:i,siblingRestoreParentSelector:P,rowPlacement:s,siblingPlacement:o}},R=N=>[N.hostSelector,N.siblingSelector??"",N.siblingRestoreParentSelector].join("|"),D=()=>{if(document.getElementById(j))return;const N=document.createElement("style");N.id=j,N.textContent=kg({primaryColor:g,textColor:d,fontFamily:p,borderRadius:u,rowClassName:r,compactBelowWidth:A,buttonId:S,sizes:M}),document.head.appendChild(N)},$=N=>{if(!C||!a.shadowRoot)return;const H=a.shadowRoot.getElementById(mr);if(!N){H?.remove();return}if(H)return;const ie=document.createElement("style");ie.id=mr,ie.textContent=".gengage-chat-launcher-container,.gengage-fl{display:none!important;}",a.shadowRoot.appendChild(ie)},ce=N=>{const H=document.querySelector(N);return H instanceof HTMLElement?H:null},ee=N=>{if(!N)return null;const H=document.querySelector(N);return H instanceof HTMLElement?H:null},Y=N=>{if(k?.isConnected)return k;const H=ee(N.siblingSelector);return H&&(k=H),H},y=N=>{const H=document.querySelector(N);return H instanceof HTMLElement?H:null},z=N=>{if(N.hasAttribute(Ra))return;const H=N.parentElement;if(!H)return;const ie=Array.from(H.children).indexOf(N);ie>=0&&N.setAttribute(Ra,String(ie))},I=N=>{const H=Y(N),ie=y(N.siblingRestoreParentSelector);if(!H||!ie)return;if(z(H),H.parentElement===ie){H.removeAttribute(Ot);return}const Ee=H.getAttribute(Ra),V=Ee?Number.parseInt(Ee,10):0,G=Array.from(ie.children).filter(de=>!(de instanceof HTMLElement&&de.classList.contains(r))),te=Number.isFinite(V)&&V>=0?G[V]??null:null;if(te){ie.insertBefore(H,te),H.removeAttribute(Ot);return}ie.appendChild(H),H.removeAttribute(Ot)},O=N=>{N.querySelector(`.${r}`)?.remove()},U=()=>{const N=document.createElement("span");N.className=`${Me}-icon`;const H=document.createElement("img");return H.src=l,H.alt="",H.draggable=!1,N.appendChild(H),N},q=()=>window.innerWidth<A,Z=N=>{if(!l)return;const H=N.querySelector(`.${Me}-icon`);if(q()&&M.mobile.hideLogo){H?.remove();return}H||N.insertBefore(U(),N.firstChild)},ne=()=>{const N=document.createElement("button");N.type="button",N.id=S,N.className=Me,N.setAttribute("aria-label",E),l&&N.appendChild(U());const H=document.createElement("span");H.className=`${Me}-copy`;const ie=document.createElement("span");if(ie.className=`${Me}-title`,ie.textContent=c,H.appendChild(ie),N.appendChild(H),f){const Ee=document.createElement("span");Ee.className=`${Me}-spark`,Ee.innerHTML=_g,N.appendChild(Ee)}return N.addEventListener("click",()=>t.onClick()),N},Q=(N,H,ie)=>{if(z(H),H.setAttribute(Ot,"true"),o==="before"){(H.parentElement!==N||H.nextElementSibling!==ie)&&N.insertBefore(H,ie);return}(H.parentElement!==N||ie.nextElementSibling!==H)&&N.appendChild(H)},ge=()=>{if(F){I(F);const N=ce(F.hostSelector);N&&O(N),F=null}k=null,$(!1),X=!1},_=N=>!(N&&h.includes(N)||b>0&&window.innerWidth<b&&!m),K=async N=>{const H=N??a.getPageType();if(!_(H))return ge(),!1;D();const ie=B();F&&R(F)!==R(ie)&&ge();for(let Ee=0;Ee<x;Ee+=1){if(!_(H))return ge(),!1;const V=B(),G=ce(V.hostSelector),te=Y(V);if(G&&(!V.siblingSelector||te)){F&&R(F)!==R(V)&&ge(),te&&z(te);let de=G.querySelector(`.${r}`);de instanceof HTMLElement||(de=document.createElement("div"),de.className=r,V.rowPlacement==="start"?G.insertBefore(de,G.firstChild):G.appendChild(de));let J=de.querySelector(`#${CSS.escape(S)}`);return J instanceof HTMLButtonElement?L=J:(J=ne(),L=J,de.appendChild(J)),te&&Q(de,te,J),Z(J),oe?J.classList.add(`${Me}--active`):J.classList.remove(`${Me}--active`),$(!0),X=!0,F=V,!0}await Sg(16)}return ge(),!1},me=()=>{pe!==null&&window.clearTimeout(pe),pe=window.setTimeout(()=>{pe=null,K()},v)},he=()=>me();return window.addEventListener("resize",he,{passive:!0}),window.addEventListener("orientationchange",he),{get isMounted(){return X},sync(N){return K(N)},setActive(N){oe=N,L?.classList.toggle(`${Me}--active`,N)},destroy(){pe!==null&&(window.clearTimeout(pe),pe=null),window.removeEventListener("resize",he),window.removeEventListener("orientationchange",he),ge(),document.getElementById(j)?.remove(),L=null}}}var Cg=new Set(["audio/ogg","audio/mpeg","audio/mp3","audio/wav","audio/webm","audio/aac","audio/mp4"]),br=new Set;function Oa(e){e.pause(),e.removeAttribute("src"),e.load(),br.delete(e)}function Eg(e,t="audio/ogg"){const a=t.split(";")[0].trim();if(!Cg.has(a))return null;try{const n=new Audio(`data:${t};base64,${e}`);return br.add(n),n.addEventListener("ended",()=>Oa(n),{once:!0}),n.play().catch(()=>{Oa(n)}),{stop:()=>Oa(n)}}catch{return null}}var Pg=new Set(["P","DIV","H1","H2","H3","H4","H5","H6","LI","UL","OL","BLOCKQUOTE","PRE","TABLE","SECTION","HR","FIGURE","FIGCAPTION","DL","DT","DD"]);function Tg(e){const t=[];let a=[];for(const n of e)n.nodeType===Node.ELEMENT_NODE&&Pg.has(n.tagName)?(a.length>0&&(t.push(a),a=[]),t.push([n])):a.push(n);return a.length>0&&t.push(a),t}function Ag(e){for(const t of e)for(const a of t)if(a.nodeType===Node.ELEMENT_NODE&&(a.tagName==="TABLE"||a.querySelector?.("table")))return!0;return!1}function Lg(){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Ig(e){const{container:t,html:a,delayMs:n=30,onTick:r,onComplete:i}=e,o=document.createElement("template");o.innerHTML=a;const s=Tg(o.content.childNodes);if(Lg()||s.length<=1||Ag(s))return t.innerHTML=a,i?.(),{complete(){},cancel(){},isRunning:!1};t.innerHTML="";let c=0,l=null,g=!0;function d(){if(!g||c>=s.length){g=!1,i?.();return}const p=s[c],u=document.createElement("span");u.className="gengage-chat-typewriter-block";for(const f of p)u.appendChild(f.cloneNode(!0));t.appendChild(u),c++,r?.(),c<s.length?l=setTimeout(d,n):(g=!1,i?.())}return d(),{complete(){g&&(l!==null&&clearTimeout(l),g=!1,t.innerHTML=a,i?.())},cancel(){l!==null&&clearTimeout(l),g=!1},get isRunning(){return g}}}function vr(e){return e!==void 0&&/[\p{L}\p{N}_]/u.test(e)}function zg(e){const{container:t,mentions:a,onProductClick:n}=e;if(a.length===0)return;const r=new Map;for(const i of a)typeof i?.short_name!="string"||i.short_name.length===0||r.set(i.short_name.toLowerCase(),i);if(r.size!==0)for(const[i,o]of r){const s=document.createTreeWalker(t,NodeFilter.SHOW_TEXT);let c=s.nextNode(),l=!1;for(;c&&!l;){const g=c.textContent??"",d=g.toLowerCase().indexOf(i);if(d===-1){c=s.nextNode();continue}const p=d>0?g[d-1]:void 0,u=g[d+o.short_name.length];if(vr(p)||vr(u)){c=s.nextNode();continue}const f=g.slice(0,d),b=g.slice(d,d+o.short_name.length),m=g.slice(d+o.short_name.length),h=c.parentNode;if(!h){c=s.nextNode();continue}const C=typeof o.url=="string"&&o.url.trim()&&ve(o.url.trim())?o.url.trim():void 0,x=document.createElement("a");x.className="gengage-product-mention",x.textContent=b,x.href=C??"#",x.addEventListener("click",v=>{v.preventDefault(),n(o)}),f&&h.insertBefore(document.createTextNode(f),c),h.insertBefore(x,c),m&&h.insertBefore(document.createTextNode(m),c),h.removeChild(c),l=!0}}}var Ng=new Set(["search","info","review","similar"]),Mg=new Set(["quickAnswer","reviewSummary","searchDiscovery","launchDiscovery","exploreTogetherV2"]);function Bg(e){return!!(e.icon&&Ng.has(e.icon)||e.action?.type&&Mg.has(e.action.type))}var na="gengage_choice_prompter_dismissed",Rg="gengage_choice_prompter_dismissed_global";function Og(e){const t=document.createElement("div");t.className="gengage-chat-choice-prompter gds-card",t.dataset.gengagePart="choice-prompter";const a=document.createElement("div");a.className="gengage-chat-choice-prompter-copy";const n=document.createElement("div");n.className="gengage-chat-choice-prompter-heading",n.textContent=e.heading,a.appendChild(n);const r=document.createElement("div");r.className="gengage-chat-choice-prompter-suggestion",r.textContent=e.suggestion,a.appendChild(r),t.appendChild(a);const i=document.createElement("div");i.className="gengage-chat-choice-prompter-actions";const o=document.createElement("button");o.type="button",o.className="gengage-chat-choice-prompter-cta gds-btn gds-btn-primary",o.dataset.gengagePart="choice-prompter-cta",o.textContent=e.ctaLabel,o.addEventListener("click",()=>{$a(e.threadId),t.remove(),e.onCtaClick()}),i.appendChild(o);const s=document.createElement("button");return s.type="button",s.className="gengage-chat-choice-prompter-dismiss",s.dataset.gengagePart="choice-prompter-dismiss",s.textContent="×",s.setAttribute("aria-label",e.dismissAriaLabel??"Dismiss"),s.addEventListener("click",()=>{$a(e.threadId),t.remove(),e.onDismiss?.()}),i.appendChild(s),t.appendChild(i),t}function yr(){try{sessionStorage.removeItem(na),sessionStorage.removeItem(Rg)}catch{}}function $g(e){try{const t=sessionStorage.getItem(na);return t?JSON.parse(t).includes(e):!1}catch{return!1}}function $a(e){try{const t=sessionStorage.getItem(na),a=t?JSON.parse(t):[];a.includes(e)||a.push(e),sessionStorage.setItem(na,JSON.stringify(a))}catch{}}function Fg(e){e&&$a(e)}var Dg="gengage_assistant",Hg=3,nt="sessions",Ue="context",Ye="payload",je="favorites";function $t(e){return new Promise((t,a)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>a(e.error)})}function _t(e){return new Promise((t,a)=>{e.oncomplete=()=>t(),e.onerror=()=>a(e.error),e.onabort=()=>a(e.error??new DOMException("Transaction aborted"))})}var Ug=class{constructor(e=Dg,t=Hg){this._db=null,this._dbName=e,this._version=t}async open(){return this._db?this._db:new Promise((e,t)=>{const a=indexedDB.open(this._dbName,this._version);a.onupgradeneeded=n=>{const r=a.result,i=n.oldVersion;i<1&&(r.createObjectStore(nt,{keyPath:["userId","appId","sessionId"]}),r.createObjectStore(Ue,{keyPath:["sessionId","threadId"]}),r.createObjectStore(Ye,{keyPath:["threadId","messageId"]}).createIndex("threadId","threadId",{unique:!1}),r.createObjectStore(je,{keyPath:["userId","appId","sku"]})),i>=1&&i<2&&(r.objectStoreNames.contains(nt)&&r.deleteObjectStore(nt),r.objectStoreNames.contains(Ye)&&r.deleteObjectStore(Ye),r.createObjectStore(nt,{keyPath:["userId","appId","sessionId"]}),r.createObjectStore(Ye,{keyPath:["threadId","messageId"]}).createIndex("threadId","threadId",{unique:!1}),r.objectStoreNames.contains(Ue)||r.createObjectStore(Ue,{keyPath:["sessionId","threadId"]})),i<3&&(r.objectStoreNames.contains(je)||r.createObjectStore(je,{keyPath:["userId","appId","sku"]}))},a.onsuccess=()=>{this._db=a.result,e(this._db)},a.onerror=()=>t(a.error)})}close(){this._db?.close(),this._db=null}async saveSession(e){const t=this._requireDb().transaction(nt,"readwrite");t.objectStore(nt).put(e),await _t(t)}async loadSession(e,t,a){return await $t(this._requireDb().transaction(nt,"readonly").objectStore(nt).get([e,t,a]))??null}async saveContext(e){const t=this._requireDb().transaction(Ue,"readwrite");t.objectStore(Ue).put(e),await _t(t)}async loadContext(e,t){return await $t(this._requireDb().transaction(Ue,"readonly").objectStore(Ue).get([e,t]))??null}async deleteContextsAfterThread(e,t){const a=this._requireDb().transaction(Ue,"readwrite"),n=a.objectStore(Ue).openCursor();await new Promise((r,i)=>{n.onsuccess=()=>{const o=n.result;if(!o){r();return}const s=o.value;if(s.sessionId===e&&s.threadId>t)try{o.delete()}catch{}o.continue()},n.onerror=()=>i(n.error)}),await _t(a)}async loadLatestContext(e){const t=this._requireDb().transaction(Ue,"readonly").objectStore(Ue),a=IDBKeyRange.bound([e,""],[e,""]);return new Promise((n,r)=>{const i=t.openCursor(a,"prev");i.onsuccess=()=>{const o=i.result;n(o?o.value:null)},i.onerror=()=>r(i.error)})}async savePayload(e){const t=this._requireDb().transaction(Ye,"readwrite");t.objectStore(Ye).put(e),await _t(t)}async loadPayload(e,t){return await $t(this._requireDb().transaction(Ye,"readonly").objectStore(Ye).get([e,t]))??null}async loadPayloadsByThread(e){const t=this._requireDb().transaction(Ye,"readonly").objectStore(Ye).index("threadId"),a=[];return new Promise((n,r)=>{const i=t.openCursor(IDBKeyRange.only(e));i.onsuccess=()=>{const o=i.result;if(!o){n(a);return}a.push(o.value),o.continue()},i.onerror=()=>r(i.error)})}async saveFavorite(e){const t=this._requireDb().transaction(je,"readwrite");t.objectStore(je).put(e),await _t(t)}async removeFavorite(e,t,a){const n=this._requireDb().transaction(je,"readwrite");n.objectStore(je).delete([e,t,a]),await _t(n)}async loadFavorites(e,t){return(await $t(this._requireDb().transaction(je,"readonly").objectStore(je).getAll())).filter(a=>a.userId===e&&a.appId===t)}async isFavorite(e,t,a){return await $t(this._requireDb().transaction(je,"readonly").objectStore(je).get([e,t,a]))!==void 0}_requireDb(){if(!this._db)throw new Error("GengageIndexedDB: database not open. Call open() first.");return this._db}},jg=["comparisonTable","groupList","productDetailsSimilars","productList"],qg=class{constructor(e){this._lockCount=1,this._hiddenByUser=!1,this._lastPanelContentType=null,this._chatShown=!1,this._isFavoritesMode=!1,this._lastExtended=!1,this._onChange=e.onChange;const t=new Set(jg);e.productDetailsInPanel&&t.add("productDetails"),this._panelContentTypes=t}get isExtended(){return this._lockCount===0&&!this._hiddenByUser&&!this._isFavoritesMode&&this._lastPanelContentType!==null&&this._panelContentTypes.has(this._lastPanelContentType)&&this._chatShown}unlock(){this._lockCount>0&&this._lockCount--,this._checkStateChange()}lock(){this._lockCount++,this._checkStateChange()}setHiddenByUser(e){this._hiddenByUser=e,this._checkStateChange()}setChatShown(e){this._chatShown=e,this._checkStateChange()}setFavoritesMode(e){this._isFavoritesMode=e,this._checkStateChange()}setPanelContentType(e){this._lastPanelContentType=e,this._checkStateChange()}_checkStateChange(){const e=this.isExtended;e!==this._lastExtended&&(this._lastExtended=e,this._onChange(e))}},Zg=class{constructor(e){this.deps=e,this.snapshots=new Map,this._snapshotRebuilders=new Map,this._snapshotSources=new Map,this._threadSources=new Map,this.snapshotTypes=new Map,this.activePanelMessageId=null,this.currentType=null,this.threads=[],this.lastActionType=null}_resolvePanelHistoryIdx(e){const t=this.threads.indexOf(e);if(t!==-1)return t;for(let a=this.threads.length-1;a>=0;a--)if(this.threads[a]<=e)return a;return-1}clearSnapshots(){this.snapshots.clear(),this._snapshotRebuilders.clear(),this._snapshotSources.clear(),this._threadSources.clear(),this.snapshotTypes.clear()}deleteSnapshotForMessage(e){this.snapshots.delete(e),this._snapshotRebuilders.delete(e),this._snapshotSources.delete(e),this.snapshotTypes.delete(e)}pruneThreadsAfter(e){this.threads=this.threads.filter(t=>{const a=t<=e;return a||this._threadSources.delete(t),a})}sourceForMessage(e){return this._snapshotSources.get(e)??null}sourceForThread(e){return this._threadSources.get(e)??null}snapshotSourceMap(){return this._snapshotSources}registerSnapshotSource(e,t){t.rebuild&&this._snapshotRebuilders.set(e,t.rebuild),this._snapshotSources.set(e,t.source),t.threadId&&this._threadSources.set(t.threadId,t.source)}componentTypeForSource(e){return e.kind==="spec"?e.spec.elements[e.spec.root]?.type??"":e.kind==="productDetailsWithSimilars"?"ProductDetailsPanel":e.kind==="favorites"?"favorites":e.kind==="history"?"history":""}snapshotForMessage(e,t){const a=this.deps.drawer();if(!a?.hasPanelContent()||a.isPanelLoading())return;const n=a.getPanelContentElement();if(!n)return;const r=typeof t=="function"?{rebuild:t}:t,i=n.cloneNode(!0);this.snapshots.set(e,i),r?.source?this.registerSnapshotSource(e,{source:r.source,rebuild:r.rebuild,threadId:r.threadId}):r?.rebuild&&this._snapshotRebuilders.set(e,r.rebuild),this.currentType&&this.snapshotTypes.set(e,this.currentType)}restoreForMessage(e,t=e){const a=this._snapshotRebuilders.get(e),n=this.snapshots.get(e);if(!a&&!n)return!1;const r=this.deps.shadow(),i=this.deps.drawer();this.activePanelMessageId&&r?.querySelector(`[data-message-id="${Pe(this.activePanelMessageId)}"]`)?.classList.remove("gengage-chat-bubble--active"),r?.querySelector(`[data-message-id="${Pe(t)}"]`)?.classList.add("gengage-chat-bubble--active"),this.activePanelMessageId=t;const o=a?a():n.cloneNode(!0);i?.setPanelContent(o);const s=this.snapshotTypes.get(e);if(s)if(this.currentType=s,o.querySelector(".gengage-chat-product-grid-head-title")&&s==="ProductGrid"){const c=this.deps.currentThreadId();if(c){const l=this._resolvePanelHistoryIdx(c),g=l>0,d=l>=0&&l<this.threads.length-1;this.deps.drawer()?.updatePanelTopBar(g,d,"")}}else this.updateTopBar(s);return!0}notifyExtension(e){const t=this.deps.bridge();e?setTimeout(()=>t?.send("maximize-pdp",{}),350):setTimeout(()=>t?.send("minify-pdp",{}),200)}titleForComponent(e,t){if(t)return t;const a=this.deps.i18n();switch(e){case"ProductDetailsPanel":return a.panelTitleProductDetails;case"ProductGrid":return xr(this.lastActionType)?a.panelTitleSearchResults:a.panelTitleSimilarProducts;case"ComparisonTable":return a.panelTitleComparisonResults;case"AIGroupingCards":case"CategoriesContainer":return a.panelTitleCategories;default:return""}}updateTopBar(e,t,a){const n=this.deps.currentThreadId();if(!n)return;const r=this._resolvePanelHistoryIdx(n),i=r>0,o=r>=0&&r<this.threads.length-1,s=a!==void 0?a:this.titleForComponent(e,t);this.deps.drawer()?.updatePanelTopBar(i,o,s)}updateTopBarForLoading(e){const t=this.deps.i18n(),a={productDetails:t.panelTitleProductDetails,productList:xr(this.lastActionType)?t.panelTitleSearchResults:t.panelTitleSimilarProducts,comparisonTable:t.panelTitleComparisonResults,groupList:t.panelTitleCategories}[e]??"";if(a){const n=this.deps.currentThreadId(),r=n?this._resolvePanelHistoryIdx(n):-1,i=r>0,o=r>=0&&r<this.threads.length-1;this.deps.drawer()?.updatePanelTopBar(i,o,a)}}updateExtendedMode(e){const t={ComparisonTable:"comparisonTable",AIGroupingCards:"groupList",CategoriesContainer:"groupList",ProductDetailsPanel:"productDetails",ProductGrid:"productList"}[e]??null;this.deps.extendedModeManager()?.setPanelContentType(t)}navigateBack(){const e=this.deps.currentThreadId();if(!e||this.threads.length===0)return;const t=this._resolvePanelHistoryIdx(e);if(t>0){const a=this.threads[t-1];a&&this.deps.rollbackToThread(a)}}navigateForward(){const e=this.deps.currentThreadId();if(!e||this.threads.length===0)return;const t=this._resolvePanelHistoryIdx(e);if(t>=0&&t<this.threads.length-1){const a=this.threads[t+1];a&&this.deps.rollbackToThread(a)}}toPanelSpec(e){const t=e.elements[e.root];if(!t||t.type!=="ProductCard")return e;const a={...t,type:"ProductDetailsPanel"};return{root:e.root,elements:{...e.elements,[e.root]:a}}}destroy(){this.snapshots.clear(),this._snapshotRebuilders.clear(),this.snapshotTypes.clear(),this.activePanelMessageId=null,this.currentType=null,this.threads=[]}};function xr(e){return e==="user_message"||e==="inputText"}function Vg(e){return e.similarsAppend&&e.currentPanelType==="ProductDetailsPanel"&&e.hasPanelContent&&!e.isPanelLoading?"appendSimilars":e.componentType==="ProductGrid"&&!e.isFirstPanelContentInStream&&e.hasPanelContent&&!e.isPanelLoading?"append":"replace"}var _r=1,Gg="gengage:chat-history:index",Wg="gengage:chat-history:session",Kg=12,Yg="Image attachment";function Xe(e,t){const a=e.replace(/\s+/g," ").trim();return a.length<=t?a:`${a.slice(0,Math.max(0,t-1)).trimEnd()}…`}function qe(e){const t=e.trim();if(t.length===0)return"";if(typeof document<"u"){const a=document.createElement("div");return a.innerHTML=t,(a.textContent??a.innerText??"").replace(/\s+/g," ").trim()}return t.replace(/<[^>]+>/g," ").replace(/ /gi," ").replace(/&/gi,"&").replace(/</gi,"<").replace(/>/gi,">").replace(/'/gi,"'").replace(/"/gi,'"').replace(/\s+/g," ").trim()}function wr(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function Jg(e,t){return`${encodeURIComponent(e)}::${encodeURIComponent(t||"__guest__")}`}function Fa(e){return`${Gg}:${e}`}function Ft(e,t){return`${Wg}:${e}:${t}`}function kr(e){if(e.silent)return!1;const t=typeof e.content=="string"?qe(e.content):"",a="attachment"in e&&e.attachment!==void 0;return t.length>0||e.uiSpec!==void 0||a}function Xg(e,t=Yg){return e.filter(a=>!(a.status==="streaming"&&!kr(a))).map(a=>{const n={id:a.id,role:a.role,timestamp:a.timestamp,status:a.status==="error"?"error":"done"};return a.threadId!==void 0&&(n.threadId=a.threadId),a.content!==void 0&&(n.content=a.content),a.attachment!==void 0&&qe(n.content??"").length===0&&(n.content=t),a.uiSpec!==void 0&&(n.uiSpec=a.uiSpec),a.frontendOnly&&(n.frontendOnly=!0),a.silent&&(n.silent=!0),a.renderHint!==void 0&&(n.renderHint=a.renderHint),a.photoAnalysis!==void 0&&(n.photoAnalysis=a.photoAnalysis),n})}function Qg(e){const t=e.find(n=>n.role==="user"&&!n.silent&&typeof n.content=="string"&&qe(n.content).length>0);if(t?.content)return Xe(qe(t.content),72);const a=e.find(n=>kr(n));return a?.content?Xe(qe(a.content),72):"New chat"}function ed(e){for(let t=e.length-1;t>=0;t--){const a=e[t];if(!(!a||a.silent)){if(typeof a.content=="string"&&a.content.trim().length>0){const n=qe(a.content);if(n.length>0)return Xe(n,140)}if(a.uiSpec){const n=a.uiSpec.elements[a.uiSpec.root];if(n?.type==="PanelRestoreCard"){const r=n.props??{},i=typeof r.ctaLabel=="string"?r.ctaLabel.trim():"";if(i.length>0)return Xe(i,140)}if(n?.type)return Xe(n.type,140)}}}return""}function td(e){return e.filter(t=>!t.silent).length}function ad(e){return{...e,title:Xe(qe(e.title),72)||"New chat",preview:Xe(qe(e.preview),140)}}function nd(e){return{...e,title:Xe(qe(e.title),72)||"New chat",preview:Xe(qe(e.preview),140)}}var rd=class{constructor(e,t,a=typeof window<"u"?window.localStorage:null){this._appId=e,this._userId=t,this._storage=a,this._scope=Jg(e,t)}createHistoryId(){return crypto.randomUUID()}findSessionId(e,t){return!e||!t?null:this.listSessions().find(a=>a.sourceSessionId===e&&a.createdAt===t)?.id??null}listSessions(){const e=wr(this._storage?.getItem(Fa(this._scope))??null);return e?e.map(ad).sort((t,a)=>a.updatedAt.localeCompare(t.updatedAt)):[]}loadSession(e){const t=wr(this._storage?.getItem(Ft(this._scope,e))??null);return!t||t.version!==_r?null:nd(t)}saveSession(e){if(!this._storage)return null;const t=Xg(e.messages,e.attachmentPlaceholder);if(!t.some(d=>d.role==="user"&&!d.silent&&typeof d.content=="string"&&qe(d.content).length>0))return null;const a=new Date().toISOString(),n=Qg(t),r=ed(t),i={};for(const[d,p]of e.panelSnapshots)p.querySelector(".gengage-chat-panel-skeleton")||(i[d]=p.innerHTML);const o={};for(const[d,p]of e.panelSnapshotTypes)o[d]=p;const s={};for(const[d,p]of e.panelSnapshotSources)s[d]=p;const c={};for(const[d,p]of e.panelAiSpecByThread??[])c[d]=p;const l={version:_r,id:e.historyId,userId:e.userId,appId:e.appId,sourceSessionId:e.sourceSessionId,title:n,preview:r,createdAt:e.chatCreatedAt,updatedAt:a,messageCount:td(t),pageType:e.pageType,sku:e.sku,messages:t,currentThreadId:e.currentThreadId,lastThreadId:e.lastThreadId,panelThreads:e.panelThreads.length>0?e.panelThreads:void 0,panelSnapshotHtml:Object.keys(i).length>0?i:void 0,panelSnapshotTypes:Object.keys(o).length>0?o:void 0,panelSnapshotSources:Object.keys(s).length>0?s:void 0,panelAiSpecByThread:Object.keys(c).length>0?c:void 0,lastBackendContext:e.lastBackendContext},g=this.listSessions().filter(d=>d.id!==e.historyId);for(g.unshift({id:l.id,title:l.title,preview:l.preview,createdAt:l.createdAt,updatedAt:l.updatedAt,messageCount:l.messageCount,pageType:l.pageType,sku:l.sku,sourceSessionId:l.sourceSessionId});g.length>Kg;){const d=g.pop();d&&this._storage.removeItem(Ft(this._scope,d.id))}return this._commitRecord(l,g)?l:null}deleteSession(e){if(!this._storage)return;const t=this.listSessions().filter(a=>a.id!==e);this._storage.removeItem(Ft(this._scope,e));try{this._storage.setItem(Fa(this._scope),JSON.stringify(t))}catch{}}_commitRecord(e,t){if(!this._storage)return!1;const a=[...t];for(;a.length>0;)try{return this._storage.setItem(Ft(this._scope,e.id),JSON.stringify(e)),this._storage.setItem(Fa(this._scope),JSON.stringify(a)),!0}catch{const n=a.pop();if(!n)break;if(n.id!==e.id){this._storage.removeItem(Ft(this._scope,n.id));continue}break}return!1}},Sr=class{constructor(e){this.favoritedSkus=new Set,this._favoritesCache=new Map,this._persistLock=Promise.resolve(),this._db=e}get db(){return this._db}set db(e){this._db=e}async persist(e){if(!this._db)return;const t=this._persistLock;let a;this._persistLock=new Promise(n=>{a=n}),await t;try{await this._persistImpl(e)}finally{a()}}async _persistImpl(e){if(!this._db)return;const t=e.messages.map(o=>{const s={id:o.id,role:o.role,timestamp:o.timestamp,status:o.status==="streaming"?"done":o.status};return o.threadId!==void 0&&(s.threadId=o.threadId),o.content!==void 0&&(s.content=o.content),o.frontendOnly&&(s.frontendOnly=!0),o.silent&&(s.silent=!0),s}),a={};for(const[o,s]of e.panelSnapshots)s.querySelector(".gengage-chat-panel-skeleton")||(a[o]=s.innerHTML);const n={};for(const[o,s]of e.panelSnapshotTypes??[])n[o]=s;const r={};for(const[o,s]of e.panelSnapshotSources??[])r[o]=s;const i={};for(const[o,s]of e.panelAiSpecByThread??[])i[o]=s;await this._db.saveSession({userId:e.userId,appId:e.appId,sessionId:e.sessionId,messages:t,currentThreadId:e.currentThreadId,lastThreadId:e.lastThreadId,createdAt:e.chatCreatedAt,panelThreads:e.panelThreads.length>0?e.panelThreads:void 0,panelSnapshotHtml:Object.keys(a).length>0?a:void 0,panelSnapshotTypes:Object.keys(n).length>0?n:void 0,panelSnapshotSources:Object.keys(r).length>0?r:void 0,panelAiSpecByThread:Object.keys(i).length>0?i:void 0,sku:e.sku}),e.lastBackendContext&&e.currentThreadId&&await this._db.saveContext({sessionId:e.sessionId,threadId:e.currentThreadId,context:e.lastBackendContext});for(const o of e.messages)o.uiSpec&&o.threadId&&await this._db.savePayload({threadId:o.threadId,messageId:o.id,uiSpec:o.uiSpec})}async saveAndOpenURL(e,t,a,n=r=>{pn(r)}){try{await t()}catch{}a?.send("openURLInNewTab",{url:e}),ve(e)&&n(e)}async loadPayload(e,t){if(!this._db)return null;for(let a=0;a<3;a++){try{const n=await this._db.loadPayload(e,t);if(n)return n.uiSpec}catch{}a<2&&await new Promise(n=>setTimeout(n,100))}return null}async loadFavorites(e,t){if(this._db)try{const a=await this._db.loadFavorites(e,t);for(const n of a)this.favoritedSkus.add(n.sku),this._favoritesCache.set(n.sku,n)}catch{}}getFavoriteProducts(){return[...this._favoritesCache.values()].sort((e,t)=>(t.savedAt??"").localeCompare(e.savedAt??""))}async toggleFavorite(e,t,a,n){if(this.favoritedSkus.has(a))this.favoritedSkus.delete(a),this._favoritesCache.delete(a),this._db&&await this._db.removeFavorite(e,t,a);else{const r={userId:e,appId:t,sku:a,name:n.name,imageUrl:n.imageUrl,price:n.price,savedAt:new Date().toISOString()};this.favoritedSkus.add(a),this._favoritesCache.set(a,r),this._db&&await this._db.saveFavorite(r)}}close(){this._db?.close(),this._db=null}},Da=e=>`${e}:assistant`,Cr=class{constructor(){this.groups={},this.pinnedToBottom=!0,this.userInteracting=!1,this.focusedThreadId=null,this.shown=!1,this.lastAutoAnchoredGroupId=null,this.scrollRequest=null,this._nextScrollId=1}setShown(e){this.shown=e,e||(this.userInteracting=!1,this.pinnedToBottom=!0,this.focusedThreadId=null,this.scrollRequest=null)}reset(){this.groups={},this.pinnedToBottom=!0,this.userInteracting=!1,this.focusedThreadId=null,this.lastAutoAnchoredGroupId=null,this.scrollRequest=null}registerAssistantActivity(e){const t=Da(e),a=this.groups[t],n=this.shown&&this.pinnedToBottom&&!this.userInteracting?"active_unread":"unseen";this.groups[t]={id:t,threadId:e,readState:a?.readState==="seen"?n:a?.readState??n,status:"streaming",updatedAt:Date.now()},a?.readState==="seen"&&this.lastAutoAnchoredGroupId===t&&(this.lastAutoAnchoredGroupId=null)}finalizeAssistantGroup(e){const t=Da(e),a=this.groups[t];a&&(a.status="complete",a.updatedAt=Date.now())}setGroupReadStates(e){const t=Date.now();for(const{groupId:a,readState:n}of e){const r=this.groups[a];!r||r.readState===n||(r.readState=n,r.updatedAt=t)}}requestThreadFocus(e,t="smooth"){this.focusedThreadId=e,this.scrollRequest={id:this._nextScrollId++,type:"thread",threadId:e,behavior:t}}requestScrollToBottom(e="smooth"){this.scrollRequest={id:this._nextScrollId++,type:"bottom",behavior:e}}consumeScrollRequest(e){this.scrollRequest?.id===e&&(this.scrollRequest=null)}releaseFocusedThread(){this.focusedThreadId=null}setFocusedThreadId(e){this.focusedThreadId=e}markGroupAutoAnchored(e){this.lastAutoAnchoredGroupId=e}shouldBlockStreamAutoScroll(){return this.shown&&this.userInteracting&&!this.pinnedToBottom}getAssistantReadState(e){return this.groups[Da(e)]?.readState}};function id(e,t){for(let a=e.length-1;a>=0;a--){const n=e[a],r=t.getAssistantReadState(n);if(r!==void 0&&r!=="seen")return n}return null}function od(e){const{label:t,avatarUrl:a,primaryColor:n,secondaryColor:r="#111827",fontFamily:i="inherit",labelClassName:o="gengage-pill-launcher-label",styleId:s="gengage-pill-launcher-style",mobileBreakpoint:c=768,desktopWidth:l="188px",desktopHeight:g="60px",iconSize:d="46px"}=e,p=`${parseInt(l,10)-14}px`,u=`${parseInt(g,10)-4}px`,f=`${parseInt(d,10)-4}px`,b=`
|
|
467
|
+
`.trim()}function Id(t){return new Promise(e=>window.setTimeout(e,t))}function vr(t,e,a){const{hostSelector:n,rowClassName:r="gengage-inline-launcher-row",siblingSelector:i,siblingPlacement:o="before",rowPlacement:s="end",title:c="Ask",iconUrl:l,primaryColor:d="#6366f1",textColor:g="#222222",fontFamily:p="inherit",borderRadius:u="3px",showSparkIcon:m=!0,desktopMinWidth:f=0,enableOnMobile:b=!1,disabledPageTypes:h=["pdp"],hideFloatingLauncher:y=!0,mountPollFrames:x=90,debounceMs:v=90,buttonId:w=Pd}=t,P=t.ariaLabel??c,E=t.siblingRestoreParentSelector??n,A=b&&f>0?f:576,R=Ad(t.size),j=`${Ed}-${w}`;let Y=!1,ie=!1,de=null,I=null,H=null,C=null,M=null,G=null,D=0;const B=()=>{if(b&&f>0&&window.innerWidth<f&&t.mobileHost&&t.mobileHost){const F=t.mobileHost;return{hostSelector:F.hostSelector,siblingSelector:F.siblingSelector??i,siblingRestoreParentSelector:F.siblingRestoreParentSelector??F.hostSelector,rowPlacement:F.rowPlacement??s,siblingPlacement:F.siblingPlacement??o}}return{hostSelector:n,siblingSelector:i,siblingRestoreParentSelector:E,rowPlacement:s,siblingPlacement:o}},ee=F=>[F.hostSelector,F.siblingSelector??"",F.siblingRestoreParentSelector].join("|"),Q=()=>{if(document.getElementById(j))return;const F=document.createElement("style");F.id=j,F.textContent=Ld({primaryColor:d,textColor:g,fontFamily:p,borderRadius:u,rowClassName:r,compactBelowWidth:A,buttonId:w,sizes:R}),document.head.appendChild(F)},K=F=>{if(!y||!a.shadowRoot)return;const U=a.shadowRoot.getElementById(br);if(!F){U?.remove();return}if(U)return;const N=document.createElement("style");N.id=br,N.textContent=".gengage-chat-launcher-container,.gengage-fl{display:none!important;}",a.shadowRoot.appendChild(N)},_=F=>{const U=document.querySelector(F);return U instanceof HTMLElement?U:null},z=F=>{if(!F)return null;const U=document.querySelector(F);return U instanceof HTMLElement?U:null},L=F=>{if(G?.isConnected)return G;const U=z(F.siblingSelector);return U&&(G=U),U},O=F=>{const U=document.querySelector(F);return U instanceof HTMLElement?U:null},$=F=>{if(F.hasAttribute(Da))return;const U=F.parentElement;if(!U)return;const N=Array.from(U.children).indexOf(F);N>=0&&F.setAttribute(Da,String(N))},Z=F=>{const U=L(F),N=O(F.siblingRestoreParentSelector);if(!U||!N)return;if($(U),U.parentElement===N){U.removeAttribute(Ut);return}const re=U.getAttribute(Da),le=re?Number.parseInt(re,10):0,W=Array.from(N.children).filter(Pe=>!(Pe instanceof HTMLElement&&Pe.classList.contains(r))),ue=Number.isFinite(le)&&le>=0?W[le]??null:null;if(ue){N.insertBefore(U,ue),U.removeAttribute(Ut);return}N.appendChild(U),U.removeAttribute(Ut)},he=F=>{F.querySelector(`.${r}`)?.remove()},q=()=>{const F=document.createElement("span");F.className=`${Oe}-icon`;const U=document.createElement("img");return U.src=l,U.alt="",U.draggable=!1,F.appendChild(U),F},te=()=>window.innerWidth<A,X=F=>{if(!l)return;const U=F.querySelector(`.${Oe}-icon`);if(te()&&R.mobile.hideLogo){U?.remove();return}U||F.insertBefore(q(),F.firstChild)},k=()=>{const F=document.createElement("button");F.type="button",F.id=w,F.className=Oe,F.setAttribute("aria-label",P),l&&F.appendChild(q());const U=document.createElement("span");U.className=`${Oe}-copy`;const N=document.createElement("span");if(N.className=`${Oe}-title`,N.textContent=c,U.appendChild(N),F.appendChild(U),m){const re=document.createElement("span");re.className=`${Oe}-spark`,re.innerHTML=Td,F.appendChild(re)}return C=()=>e.onClick(),F.addEventListener("click",C),F},J=(F,U,N,re)=>{if($(U),U.setAttribute(Ut,"true"),re.siblingPlacement==="before"){(U.parentElement!==F||U.nextElementSibling!==N)&&F.insertBefore(U,N);return}(U.parentElement!==F||N.nextElementSibling!==U)&&F.appendChild(U)},oe=()=>{if(M){Z(M),H?.remove();const F=_(M.hostSelector);F&&he(F),M=null}I&&C&&I.removeEventListener("click",C),C=null,H=null,G=null,K(!1),Y=!1},ge=F=>!(F&&h.includes(F)||f>0&&window.innerWidth<f&&!b),fe=async F=>{const U=++D,N=F??a.getPageType();if(!ge(N))return oe(),!1;Q();const re=B();M&&ee(M)!==ee(re)&&oe();for(let le=0;le<x;le+=1){if(!ge(N))return oe(),!1;const W=B(),ue=_(W.hostSelector),Pe=L(W);if(ue&&(!W.siblingSelector||Pe)){M&&ee(M)!==ee(W)&&oe(),Pe&&$(Pe);let Te=ue.querySelector(`.${r}`);Te instanceof HTMLElement||(Te=document.createElement("div"),Te.className=r,W.rowPlacement==="start"?ue.insertBefore(Te,ue.firstChild):ue.appendChild(Te)),H=Te;let ze=Te.querySelector(`#${CSS.escape(w)}`);return ze instanceof HTMLButtonElement?I=ze:(ze=k(),I=ze,Te.appendChild(ze)),Pe&&J(Te,Pe,ze,W),X(ze),ie?ze.classList.add(`${Oe}--active`):ze.classList.remove(`${Oe}--active`),K(!0),Y=!0,M=W,!0}if(await Id(16),U!==D)return!1}return oe(),!1},Le=()=>{de!==null&&window.clearTimeout(de),de=window.setTimeout(()=>{de=null,fe()},v)},Ee=()=>Le();return window.addEventListener("resize",Ee,{passive:!0}),window.addEventListener("orientationchange",Ee),{get isMounted(){return Y},sync(F){return fe(F)},setActive(F){ie=F,I?.classList.toggle(`${Oe}--active`,F)},destroy(){de!==null&&(window.clearTimeout(de),de=null),window.removeEventListener("resize",Ee),window.removeEventListener("orientationchange",Ee),oe(),document.getElementById(j)?.remove(),I=null}}}var Nd=new Set(["audio/ogg","audio/mpeg","audio/mp3","audio/wav","audio/webm","audio/aac","audio/mp4"]),yr=new Set;function Ha(t){t.pause(),t.removeAttribute("src"),t.load(),yr.delete(t)}function zd(t,e="audio/ogg"){const a=e.split(";")[0].trim();if(!Nd.has(a))return null;try{const n=new Audio(`data:${e};base64,${t}`);return yr.add(n),n.addEventListener("ended",()=>Ha(n),{once:!0}),n.play().catch(()=>{Ha(n)}),{stop:()=>Ha(n)}}catch{return null}}var Md=new Set(["P","DIV","H1","H2","H3","H4","H5","H6","LI","UL","OL","BLOCKQUOTE","PRE","TABLE","SECTION","HR","FIGURE","FIGCAPTION","DL","DT","DD"]);function Bd(t){const e=[];let a=[];for(const n of t)n.nodeType===Node.ELEMENT_NODE&&Md.has(n.tagName)?(a.length>0&&(e.push(a),a=[]),e.push([n])):a.push(n);return a.length>0&&e.push(a),e}function Rd(t){for(const e of t)for(const a of e)if(a.nodeType===Node.ELEMENT_NODE&&(a.tagName==="TABLE"||a.querySelector?.("table")))return!0;return!1}function Od(){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Fd(t){const{container:e,delayMs:a=30,onTick:n,onComplete:r}=t,i=Ie(t.html),o=document.createElement("template");o.innerHTML=i;const s=Bd(o.content.childNodes);if(Od()||s.length<=1||Rd(s))return e.innerHTML=i,r?.(),{complete(){},cancel(){},isRunning:!1};e.innerHTML="";let c=0,l=null,d=!0;function g(){if(!d||c>=s.length){d=!1,r?.();return}const p=s[c],u=document.createElement("span");u.className="gengage-chat-typewriter-block";for(const m of p)u.appendChild(m.cloneNode(!0));e.appendChild(u),c++,n?.(),c<s.length?l=setTimeout(g,a):(d=!1,r?.())}return g(),{complete(){d&&(l!==null&&clearTimeout(l),d=!1,e.innerHTML=i,r?.())},cancel(){l!==null&&clearTimeout(l),d=!1},get isRunning(){return d}}}function xr(t){return t!==void 0&&/[\p{L}\p{N}_]/u.test(t)}function $d(t){const{container:e,mentions:a,onProductClick:n}=t;if(a.length===0)return;const r=new Map;for(const i of a)typeof i?.short_name!="string"||i.short_name.length===0||r.set(i.short_name.toLowerCase(),i);if(r.size!==0)for(const[i,o]of r){const s=document.createTreeWalker(e,NodeFilter.SHOW_TEXT);let c=s.nextNode(),l=!1;for(;c&&!l;){if(c.parentElement?.closest("a")){c=s.nextNode();continue}const d=c.textContent??"",g=d.toLowerCase();let p=g.indexOf(i);for(;p!==-1;){const x=p>0?d[p-1]:void 0,v=d[p+o.short_name.length];if(!xr(x)&&!xr(v))break;p=g.indexOf(i,p+1)}if(p===-1){c=s.nextNode();continue}const u=d.slice(0,p),m=d.slice(p,p+o.short_name.length),f=d.slice(p+o.short_name.length),b=c.parentNode;if(!b){c=s.nextNode();continue}const h=typeof o.url=="string"&&o.url.trim()&&ye(o.url.trim())?o.url.trim():void 0,y=document.createElement("a");y.className="gengage-product-mention",y.textContent=m,y.href=h??"#",y.addEventListener("click",x=>{x.preventDefault(),n(o)}),u&&b.insertBefore(document.createTextNode(u),c),b.insertBefore(y,c),f&&b.insertBefore(document.createTextNode(f),c),b.removeChild(c),l=!0}}}var Dd=new Set(["search","info","review","similar"]),Hd=new Set(["quickAnswer","reviewSummary","searchDiscovery","launchDiscovery","exploreTogetherV2"]);function Ud(t){return!!(t.icon&&Dd.has(t.icon)||t.action?.type&&Hd.has(t.action.type))}var ra="gengage_choice_prompter_dismissed",jd="gengage_choice_prompter_dismissed_global";function qd(t){const e=document.createElement("div");e.className="gengage-chat-choice-prompter gds-card",e.dataset.gengagePart="choice-prompter";const a=document.createElement("div");a.className="gengage-chat-choice-prompter-copy";const n=document.createElement("div");n.className="gengage-chat-choice-prompter-heading",n.textContent=t.heading,a.appendChild(n);const r=document.createElement("div");r.className="gengage-chat-choice-prompter-suggestion",r.textContent=t.suggestion,a.appendChild(r),e.appendChild(a);const i=document.createElement("div");i.className="gengage-chat-choice-prompter-actions";const o=document.createElement("button");o.type="button",o.className="gengage-chat-choice-prompter-cta gds-btn gds-btn-primary",o.dataset.gengagePart="choice-prompter-cta",o.textContent=t.ctaLabel,o.addEventListener("click",()=>{Ua(t.threadId),e.remove(),t.onCtaClick()}),i.appendChild(o);const s=document.createElement("button");return s.type="button",s.className="gengage-chat-choice-prompter-dismiss",s.dataset.gengagePart="choice-prompter-dismiss",s.textContent="×",s.setAttribute("aria-label",t.dismissAriaLabel??"Dismiss"),s.addEventListener("click",()=>{Ua(t.threadId),e.remove(),t.onDismiss?.()}),i.appendChild(s),e.appendChild(i),e}function _r(){try{sessionStorage.removeItem(ra),sessionStorage.removeItem(jd)}catch{}}function Zd(t){try{const e=sessionStorage.getItem(ra);return e?JSON.parse(e).includes(t):!1}catch{return!1}}function Ua(t){try{const e=sessionStorage.getItem(ra),a=e?JSON.parse(e):[];a.includes(t)||a.push(t),sessionStorage.setItem(ra,JSON.stringify(a))}catch{}}function Vd(t){t&&Ua(t)}var Gd="gengage_assistant",Wd=4,ct="sessions",Ve="context",He="payload",Ge="favorites",et="history",Kd=500;function ut(t){return new Promise((e,a)=>{t.onsuccess=()=>e(t.result),t.onerror=()=>a(t.error)})}function at(t){return new Promise((e,a)=>{t.oncomplete=()=>e(),t.onerror=()=>a(t.error),t.onabort=()=>a(t.error??new DOMException("Transaction aborted"))})}var Yd=class{constructor(t=Gd,e=Wd){this._db=null,this._dbName=t,this._version=e}async open(){return this._db?this._db:new Promise((t,e)=>{const a=indexedDB.open(this._dbName,this._version);let n=!1;a.onupgradeneeded=r=>{const i=a.result,o=r.oldVersion;o<1&&(i.createObjectStore(ct,{keyPath:["userId","appId","sessionId"]}),i.createObjectStore(Ve,{keyPath:["sessionId","threadId"]}),i.createObjectStore(He,{keyPath:["threadId","messageId"]}).createIndex("threadId","threadId",{unique:!1}),i.createObjectStore(Ge,{keyPath:["userId","appId","sku"]})),o>=1&&o<2&&(i.objectStoreNames.contains(ct)&&i.deleteObjectStore(ct),i.objectStoreNames.contains(He)&&i.deleteObjectStore(He),i.createObjectStore(ct,{keyPath:["userId","appId","sessionId"]}),i.createObjectStore(He,{keyPath:["threadId","messageId"]}).createIndex("threadId","threadId",{unique:!1}),i.objectStoreNames.contains(Ve)||i.createObjectStore(Ve,{keyPath:["sessionId","threadId"]})),o<3&&(i.objectStoreNames.contains(Ge)||i.createObjectStore(Ge,{keyPath:["userId","appId","sku"]})),o<4&&(i.objectStoreNames.contains(et)||i.createObjectStore(et,{keyPath:["appId","userId","id"]}).createIndex("scope",["appId","userId"],{unique:!1}))},a.onsuccess=()=>{if(n){a.result.close();return}n=!0,this._db=a.result,this._db.onversionchange=()=>{this._db?.close(),this._db=null},this._prunePayloadStore(),t(this._db)},a.onblocked=()=>{n||(n=!0,e(a.error??new DOMException("IndexedDB open blocked","AbortError")))},a.onerror=()=>{n||(n=!0,e(a.error))}})}close(){this._db?.close(),this._db=null}async saveSession(t){const e=this._requireDb().transaction(ct,"readwrite");e.objectStore(ct).put(t),await at(e)}async loadSession(t,e,a){return await ut(this._requireDb().transaction(ct,"readonly").objectStore(ct).get([t,e,a]))??null}async saveContext(t){const e=this._requireDb().transaction(Ve,"readwrite");e.objectStore(Ve).put(t),await at(e)}async loadContext(t,e){return await ut(this._requireDb().transaction(Ve,"readonly").objectStore(Ve).get([t,e]))??null}async deleteContextsAfterThread(t,e){const a=this._requireDb().transaction(Ve,"readwrite"),n=a.objectStore(Ve).openCursor();await new Promise((r,i)=>{n.onsuccess=()=>{const o=n.result;if(!o){r();return}const s=o.value;if(s.sessionId===t&&s.threadId>e)try{o.delete()}catch{}o.continue()},n.onerror=()=>i(n.error)}),await at(a)}async loadLatestContext(t){const e=this._requireDb().transaction(Ve,"readonly").objectStore(Ve),a=IDBKeyRange.bound([t,""],[t,""]);return new Promise((n,r)=>{const i=e.openCursor(a,"prev");i.onsuccess=()=>{const o=i.result;n(o?o.value:null)},i.onerror=()=>r(i.error)})}async savePayload(t){const e=this._requireDb().transaction(He,"readwrite");e.objectStore(He).put(t),await at(e)}async loadPayload(t,e){return await ut(this._requireDb().transaction(He,"readonly").objectStore(He).get([t,e]))??null}async loadPayloadsByThread(t){const e=this._requireDb().transaction(He,"readonly").objectStore(He).index("threadId"),a=[];return new Promise((n,r)=>{const i=e.openCursor(IDBKeyRange.only(t));i.onsuccess=()=>{const o=i.result;if(!o){n(a);return}a.push(o.value),o.continue()},i.onerror=()=>r(i.error)})}async saveFavorite(t){const e=this._requireDb().transaction(Ge,"readwrite");e.objectStore(Ge).put(t),await at(e)}async removeFavorite(t,e,a){const n=this._requireDb().transaction(Ge,"readwrite");n.objectStore(Ge).delete([t,e,a]),await at(n)}async loadFavorites(t,e){return(await ut(this._requireDb().transaction(Ge,"readonly").objectStore(Ge).getAll())).filter(a=>a.userId===t&&a.appId===e)}async isFavorite(t,e,a){return await ut(this._requireDb().transaction(Ge,"readonly").objectStore(Ge).get([t,e,a]))!==void 0}async saveHistory(t){const e=this._requireDb().transaction(et,"readwrite");e.objectStore(et).put(t),await at(e)}async loadHistory(t,e,a){return await ut(this._requireDb().transaction(et,"readonly").objectStore(et).get([t,e,a]))??null}async deleteHistory(t,e,a){const n=this._requireDb().transaction(et,"readwrite");n.objectStore(et).delete([t,e,a]),await at(n)}async loadHistoryByScope(t,e){return await ut(this._requireDb().transaction(et,"readonly").objectStore(et).index("scope").getAll(IDBKeyRange.only([t,e])))??[]}_requireDb(){if(!this._db)throw new Error("GengageIndexedDB: database not open. Call open() first.");return this._db}async _prunePayloadStore(){if(this._db)try{const t=this._db.transaction(He,"readwrite"),e=t.objectStore(He);await new Promise((a,n)=>{const r=[],i=e.openCursor();i.onsuccess=()=>{const o=i.result;if(o){r.push(o.primaryKey),o.continue();return}const s=r.length-Kd;for(let c=0;c<s;c++){const l=r[c];l!==void 0&&e.delete(l)}a()},i.onerror=()=>n(i.error)}),await at(t)}catch{}}},Jd=["comparisonTable","groupList","productDetailsSimilars","productList"],Xd=class{constructor(t){this._lockCount=1,this._hiddenByUser=!1,this._lastPanelContentType=null,this._chatShown=!1,this._isFavoritesMode=!1,this._lastExtended=!1,this._onChange=t.onChange;const e=new Set(Jd);t.productDetailsInPanel&&e.add("productDetails"),this._panelContentTypes=e}get isExtended(){return this._lockCount===0&&!this._hiddenByUser&&!this._isFavoritesMode&&this._lastPanelContentType!==null&&this._panelContentTypes.has(this._lastPanelContentType)&&this._chatShown}unlock(){this._lockCount>0&&this._lockCount--,this._checkStateChange()}lock(){this._lockCount++,this._checkStateChange()}setHiddenByUser(t){this._hiddenByUser=t,this._checkStateChange()}setChatShown(t){this._chatShown=t,this._checkStateChange()}setFavoritesMode(t){this._isFavoritesMode=t,this._checkStateChange()}setPanelContentType(t){this._lastPanelContentType=t,this._checkStateChange()}_checkStateChange(){const t=this.isExtended;t!==this._lastExtended&&(this._lastExtended=t,this._onChange(t))}},Qd=class{constructor(t){this.deps=t,this.snapshots=new Map,this._snapshotRebuilders=new Map,this._snapshotSources=new Map,this._threadSources=new Map,this.snapshotTypes=new Map,this.activePanelMessageId=null,this.currentType=null,this.threads=[],this.lastActionType=null}_resolvePanelHistoryIdx(t){const e=this.threads.indexOf(t);if(e!==-1)return e;for(let a=this.threads.length-1;a>=0;a--)if(this.threads[a]<=t)return a;return-1}clearSnapshots(){this.snapshots.clear(),this._snapshotRebuilders.clear(),this._snapshotSources.clear(),this._threadSources.clear(),this.snapshotTypes.clear()}deleteSnapshotForMessage(t){this.snapshots.delete(t),this._snapshotRebuilders.delete(t),this._snapshotSources.delete(t),this.snapshotTypes.delete(t)}pruneThreadsAfter(t){this.threads=this.threads.filter(e=>{const a=e<=t;return a||this._threadSources.delete(e),a})}sourceForMessage(t){return this._snapshotSources.get(t)??null}sourceForThread(t){return this._threadSources.get(t)??null}snapshotSourceMap(){return this._snapshotSources}registerSnapshotSource(t,e){e.rebuild&&this._snapshotRebuilders.set(t,e.rebuild),this._snapshotSources.set(t,e.source),e.threadId&&this._threadSources.set(e.threadId,e.source)}componentTypeForSource(t){return t.kind==="spec"?t.spec.elements[t.spec.root]?.type??"":t.kind==="productDetailsWithSimilars"?"ProductDetailsPanel":t.kind==="favorites"?"favorites":t.kind==="history"?"history":""}snapshotForMessage(t,e){const a=this.deps.drawer();if(!a?.hasPanelContent()||a.isPanelLoading())return;const n=a.getPanelContentElement();if(!n)return;const r=typeof e=="function"?{rebuild:e}:e,i=n.cloneNode(!0);this.snapshots.set(t,i),r?.source?this.registerSnapshotSource(t,{source:r.source,rebuild:r.rebuild,threadId:r.threadId}):r?.rebuild&&this._snapshotRebuilders.set(t,r.rebuild),this.currentType&&this.snapshotTypes.set(t,this.currentType)}restoreForMessage(t,e=t){const a=this._snapshotRebuilders.get(t),n=this.snapshots.get(t);if(!a&&!n)return!1;const r=this.deps.shadow(),i=this.deps.drawer();this.activePanelMessageId&&r?.querySelector(`[data-message-id="${Ae(this.activePanelMessageId)}"]`)?.classList.remove("gengage-chat-bubble--active"),r?.querySelector(`[data-message-id="${Ae(e)}"]`)?.classList.add("gengage-chat-bubble--active"),this.activePanelMessageId=e;const o=a?a():n.cloneNode(!0);i?.setPanelContent(o);const s=this.snapshotTypes.get(t);if(s)if(this.currentType=s,o.querySelector(".gengage-chat-product-grid-head-title")&&s==="ProductGrid"){const c=this.deps.currentThreadId();if(c){const l=this._resolvePanelHistoryIdx(c),d=l>0,g=l>=0&&l<this.threads.length-1;this.deps.drawer()?.updatePanelTopBar(d,g,"")}}else this.updateTopBar(s);return!0}notifyExtension(t){const e=this.deps.bridge();t?setTimeout(()=>e?.send("maximize-pdp",{}),350):setTimeout(()=>e?.send("minify-pdp",{}),200)}titleForComponent(t,e){if(e)return e;const a=this.deps.i18n();switch(t){case"ProductDetailsPanel":return a.panelTitleProductDetails;case"ProductGrid":return wr(this.lastActionType)?a.panelTitleSearchResults:a.panelTitleSimilarProducts;case"ComparisonTable":return a.panelTitleComparisonResults;case"AIGroupingCards":case"CategoriesContainer":return a.panelTitleCategories;default:return""}}updateTopBar(t,e,a){const n=this.deps.currentThreadId();if(!n)return;const r=this._resolvePanelHistoryIdx(n),i=r>0,o=r>=0&&r<this.threads.length-1,s=a!==void 0?a:this.titleForComponent(t,e);this.deps.drawer()?.updatePanelTopBar(i,o,s)}updateTopBarForLoading(t){const e=this.deps.i18n(),a={productDetails:e.panelTitleProductDetails,productList:wr(this.lastActionType)?e.panelTitleSearchResults:e.panelTitleSimilarProducts,comparisonTable:e.panelTitleComparisonResults,groupList:e.panelTitleCategories}[t]??"";if(a){const n=this.deps.currentThreadId(),r=n?this._resolvePanelHistoryIdx(n):-1,i=r>0,o=r>=0&&r<this.threads.length-1;this.deps.drawer()?.updatePanelTopBar(i,o,a)}}updateExtendedMode(t){const e={ComparisonTable:"comparisonTable",AIGroupingCards:"groupList",CategoriesContainer:"groupList",ProductDetailsPanel:"productDetails",ProductGrid:"productList"}[t]??null;this.deps.extendedModeManager()?.setPanelContentType(e)}navigateBack(){const t=this.deps.currentThreadId();if(!t||this.threads.length===0)return;const e=this._resolvePanelHistoryIdx(t);if(e>0){const a=this.threads[e-1];a&&this.deps.rollbackToThread(a)}}navigateForward(){const t=this.deps.currentThreadId();if(!t||this.threads.length===0)return;const e=this._resolvePanelHistoryIdx(t);if(e>=0&&e<this.threads.length-1){const a=this.threads[e+1];a&&this.deps.rollbackToThread(a)}}toPanelSpec(t){const e=t.elements[t.root];if(!e||e.type!=="ProductCard")return t;const a={...e,type:"ProductDetailsPanel"};return{root:t.root,elements:{...t.elements,[t.root]:a}}}destroy(){this.snapshots.clear(),this._snapshotRebuilders.clear(),this.snapshotTypes.clear(),this.activePanelMessageId=null,this.currentType=null,this.threads=[]}};function wr(t){return t==="user_message"||t==="inputText"}function eg(t){return t.similarsAppend&&t.currentPanelType==="ProductDetailsPanel"&&t.hasPanelContent&&!t.isPanelLoading?"appendSimilars":t.componentType==="ProductGrid"&&!t.isFirstPanelContentInStream&&t.hasPanelContent&&!t.isPanelLoading?"append":"replace"}var ia=1,tg="gengage:chat-history:index",ag="gengage:chat-history:session",kr=12,ng="Image attachment";function nt(t,e){const a=t.replace(/\s+/g," ").trim();return a.length<=e?a:`${a.slice(0,Math.max(0,e-1)).trimEnd()}…`}function We(t){const e=t.trim();return e.length===0?"":typeof DOMParser<"u"?(new DOMParser().parseFromString(e,"text/html").body.textContent??"").replace(/\s+/g," ").trim():e.replace(/<[^>]+>/g," ").replace(/ /gi," ").replace(/&/gi,"&").replace(/</gi,"<").replace(/>/gi,">").replace(/'/gi,"'").replace(/"/gi,'"').replace(/\s+/g," ").trim()}function Sr(t){if(!t)return null;try{return JSON.parse(t)}catch{return null}}function rg(t,e){return`${encodeURIComponent(t)}::${encodeURIComponent(e||"__guest__")}`}function Cr(t){return`${tg}:${t}`}function Er(t,e){return`${ag}:${t}:${e}`}function Pr(t){if(t.silent)return!1;const e=typeof t.content=="string"?We(t.content):"",a="attachment"in t&&t.attachment!==void 0;return e.length>0||t.uiSpec!==void 0||a}function ig(t,e=ng){return t.filter(a=>!(a.status==="streaming"&&!Pr(a))).map(a=>{const n={id:a.id,role:a.role,timestamp:a.timestamp,status:a.status==="error"?"error":"done"};return a.threadId!==void 0&&(n.threadId=a.threadId),a.content!==void 0&&(n.content=a.content),a.attachment!==void 0&&We(n.content??"").length===0&&(n.content=e),a.uiSpec!==void 0&&(n.uiSpec=a.uiSpec),a.frontendOnly&&(n.frontendOnly=!0),a.silent&&(n.silent=!0),a.renderHint!==void 0&&(n.renderHint=a.renderHint),a.photoAnalysis!==void 0&&(n.photoAnalysis=a.photoAnalysis),n})}function og(t){const e=t.find(n=>n.role==="user"&&!n.silent&&typeof n.content=="string"&&We(n.content).length>0);if(e?.content)return nt(We(e.content),72);const a=t.find(n=>Pr(n));return a?.content?nt(We(a.content),72):"New chat"}function sg(t){for(let e=t.length-1;e>=0;e--){const a=t[e];if(!(!a||a.silent)){if(typeof a.content=="string"&&a.content.trim().length>0){const n=We(a.content);if(n.length>0)return nt(n,140)}if(a.uiSpec){const n=a.uiSpec.elements[a.uiSpec.root];if(n?.type==="PanelRestoreCard"){const r=n.props??{},i=typeof r.ctaLabel=="string"?r.ctaLabel.trim():"";if(i.length>0)return nt(i,140)}if(n?.type)return nt(n.type,140)}}}return""}function cg(t){return t.filter(e=>!e.silent).length}function lg(t){return{...t,title:nt(We(t.title),72)||"New chat",preview:nt(We(t.preview),140)}}function dg(t){return{...t,title:nt(We(t.title),72)||"New chat",preview:nt(We(t.preview),140)}}function Tr(t){return lg({id:t.id,title:t.title,preview:t.preview,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messageCount,pageType:t.pageType,sku:t.sku,sourceSessionId:t.sourceSessionId})}var gg=class{constructor(t,e,a,n=typeof window<"u"?window.localStorage:null){this._appId=t,this._userId=e,this._db=a,this._localStorage=n,this._index=[],this._hydrated=!1,this._writeChain=Promise.resolve(),this._scope=rg(t,e)}async hydrate(){if(!this._hydrated&&(this._hydrated=!0,!!this._db))try{await this._migrateFromLocalStorage();const t=await this._db.loadHistoryByScope(this._appId,this._userId);this._index=t.filter(e=>e&&e.version===ia&&Array.isArray(e.messages)).map(Tr).sort((e,a)=>a.updatedAt.localeCompare(e.updatedAt)).slice(0,kr)}catch{this._index=[]}}createHistoryId(){return crypto.randomUUID()}findSessionId(t,e){return!t||!e?null:this._index.find(a=>a.sourceSessionId===t&&a.createdAt===e)?.id??null}listSessions(){return[...this._index]}flush(){return this._writeChain}async loadSession(t){if(!this._db)return null;await this._writeChain.catch(()=>{});let e=null;try{e=await this._db.loadHistory(this._appId,this._userId,t)}catch{return null}return!e||e.version!==ia||!Array.isArray(e.messages)?null:dg(e)}saveSession(t){if(!this._db)return null;const e=ig(t.messages,t.attachmentPlaceholder);if(!e.some(g=>g.role==="user"&&!g.silent&&typeof g.content=="string"&&We(g.content).length>0))return null;const a=new Date().toISOString(),n=og(e),r=sg(e),i={};for(const[g,p]of t.panelSnapshots)p.querySelector(".gengage-chat-panel-skeleton")||(i[g]=p.innerHTML);const o={};for(const[g,p]of t.panelSnapshotTypes)o[g]=p;const s={};for(const[g,p]of t.panelSnapshotSources)s[g]=p;const c={};for(const[g,p]of t.panelAiSpecByThread??[])c[g]=p;const l={version:ia,id:t.historyId,userId:t.userId,appId:t.appId,sourceSessionId:t.sourceSessionId,title:n,preview:r,createdAt:t.chatCreatedAt,updatedAt:a,messageCount:cg(e),pageType:t.pageType,sku:t.sku,messages:e,currentThreadId:t.currentThreadId,lastThreadId:t.lastThreadId,panelThreads:t.panelThreads.length>0?t.panelThreads:void 0,panelSnapshotHtml:Object.keys(i).length>0?i:void 0,panelSnapshotTypes:Object.keys(o).length>0?o:void 0,panelSnapshotSources:Object.keys(s).length>0?s:void 0,panelAiSpecByThread:Object.keys(c).length>0?c:void 0,lastBackendContext:t.lastBackendContext};this._index=[Tr(l),...this._index.filter(g=>g.id!==l.id)].sort((g,p)=>p.updatedAt.localeCompare(g.updatedAt));const d=[];for(;this._index.length>kr;){const g=this._index.pop();g&&d.push(g.id)}return this._enqueueWrite(async g=>{await g.saveHistory(l);for(const p of d)await g.deleteHistory(this._appId,this._userId,p)}),l}deleteSession(t){this._index=this._index.filter(e=>e.id!==t),this._enqueueWrite(e=>e.deleteHistory(this._appId,this._userId,t))}_enqueueWrite(t){const e=this._db;e&&(this._writeChain=this._writeChain.then(()=>t(e)).catch(()=>{}))}async _migrateFromLocalStorage(){if(!this._db||!this._localStorage)return;const t=this._localStorage.getItem(Cr(this._scope));if(t===null)return;const e=Sr(t)??[];for(const a of e){const n=Sr(this._localStorage.getItem(Er(this._scope,a.id)));if(n&&n.version===ia&&Array.isArray(n.messages))try{await this._db.saveHistory(n)}catch{}this._localStorage.removeItem(Er(this._scope,a.id))}this._localStorage.removeItem(Cr(this._scope))}},pg=60,Ar=30,Lr=class{constructor(t){this.favoritedSkus=new Set,this._favoritesCache=new Map,this._persistLock=Promise.resolve(),this._db=t}get db(){return this._db}set db(t){this._db=t}async persist(t){if(!this._db)return;const e=this._persistLock;let a;this._persistLock=new Promise(n=>{a=n}),await e;try{await this._persistImpl(t)}finally{a()}}async _persistImpl(t){if(!this._db)return;const e=t.messages.length>pg?t.messages.slice(-60):t.messages,a=e.map(d=>{const g={id:d.id,role:d.role,timestamp:d.timestamp,status:d.status==="streaming"?"done":d.status};return d.threadId!==void 0&&(g.threadId=d.threadId),d.content!==void 0&&(g.content=d.content),d.frontendOnly&&(g.frontendOnly=!0),d.silent&&(g.silent=!0),g}),n=[...t.panelSnapshots],r=n.length>Ar?n.slice(-30):n,i={};for(const[d,g]of r)g.querySelector(".gengage-chat-panel-skeleton")||(i[d]=g.innerHTML);const o=d=>{const g=d?[...d]:[],p=g.length>Ar?g.slice(-30):g,u={};for(const[m,f]of p)u[m]=f;return u},s=o(t.panelSnapshotTypes),c=o(t.panelSnapshotSources),l=o(t.panelAiSpecByThread);await this._db.saveSession({userId:t.userId,appId:t.appId,sessionId:t.sessionId,messages:a,currentThreadId:t.currentThreadId,lastThreadId:t.lastThreadId,createdAt:t.chatCreatedAt,panelThreads:t.panelThreads.length>0?t.panelThreads:void 0,panelSnapshotHtml:Object.keys(i).length>0?i:void 0,panelSnapshotTypes:Object.keys(s).length>0?s:void 0,panelSnapshotSources:Object.keys(c).length>0?c:void 0,panelAiSpecByThread:Object.keys(l).length>0?l:void 0,sku:t.sku}),t.lastBackendContext&&t.currentThreadId&&await this._db.saveContext({sessionId:t.sessionId,threadId:t.currentThreadId,context:t.lastBackendContext});for(const d of e)d.uiSpec&&d.threadId&&await this._db.savePayload({threadId:d.threadId,messageId:d.id,uiSpec:d.uiSpec})}async saveAndOpenURL(t,e,a,n=r=>{ka(r)}){try{await e()}catch{}ye(t)&&(a?.send("openURLInNewTab",{url:t}),n(t))}async loadPayload(t,e){if(!this._db)return null;for(let a=0;a<3;a++){try{const n=await this._db.loadPayload(t,e);if(n)return n.uiSpec}catch{}a<2&&await new Promise(n=>setTimeout(n,100))}return null}async loadFavorites(t,e){if(this._db)try{const a=await this._db.loadFavorites(t,e);for(const n of a)this.favoritedSkus.add(n.sku),this._favoritesCache.set(n.sku,n)}catch{}}getFavoriteProducts(){return[...this._favoritesCache.values()].sort((t,e)=>(e.savedAt??"").localeCompare(t.savedAt??""))}async toggleFavorite(t,e,a,n){if(this.favoritedSkus.has(a))this.favoritedSkus.delete(a),this._favoritesCache.delete(a),this._db&&await this._db.removeFavorite(t,e,a);else{const r={userId:t,appId:e,sku:a,name:n.name,imageUrl:n.imageUrl,price:n.price,savedAt:new Date().toISOString()};this.favoritedSkus.add(a),this._favoritesCache.set(a,r),this._db&&await this._db.saveFavorite(r)}}close(){this._db?.close(),this._db=null}},ja=t=>`${t}:assistant`,Ir=class{constructor(){this.groups={},this.pinnedToBottom=!0,this.userInteracting=!1,this.focusedThreadId=null,this.shown=!1,this.lastAutoAnchoredGroupId=null,this.scrollRequest=null,this._nextScrollId=1}setShown(t){this.shown=t,t||(this.userInteracting=!1,this.pinnedToBottom=!0,this.focusedThreadId=null,this.scrollRequest=null)}reset(){this.groups={},this.pinnedToBottom=!0,this.userInteracting=!1,this.focusedThreadId=null,this.lastAutoAnchoredGroupId=null,this.scrollRequest=null}registerAssistantActivity(t){const e=ja(t),a=this.groups[e],n=this.shown&&this.pinnedToBottom&&!this.userInteracting?"active_unread":"unseen";this.groups[e]={id:e,threadId:t,readState:a?.readState==="seen"?n:a?.readState??n,status:"streaming",updatedAt:Date.now()},a?.readState==="seen"&&this.lastAutoAnchoredGroupId===e&&(this.lastAutoAnchoredGroupId=null)}finalizeAssistantGroup(t){const e=ja(t),a=this.groups[e];a&&(a.status="complete",a.updatedAt=Date.now())}setGroupReadStates(t){const e=Date.now();for(const{groupId:a,readState:n}of t){const r=this.groups[a];!r||r.readState===n||(r.readState=n,r.updatedAt=e)}}requestThreadFocus(t,e="smooth"){this.focusedThreadId=t,this.scrollRequest={id:this._nextScrollId++,type:"thread",threadId:t,behavior:e}}requestScrollToBottom(t="smooth"){this.scrollRequest={id:this._nextScrollId++,type:"bottom",behavior:t}}consumeScrollRequest(t){this.scrollRequest?.id===t&&(this.scrollRequest=null)}releaseFocusedThread(){this.focusedThreadId=null}setFocusedThreadId(t){this.focusedThreadId=t}markGroupAutoAnchored(t){this.lastAutoAnchoredGroupId=t}shouldBlockStreamAutoScroll(){return this.shown&&this.userInteracting&&!this.pinnedToBottom}getAssistantReadState(t){return this.groups[ja(t)]?.readState}};function hg(t,e){for(let a=t.length-1;a>=0;a--){const n=t[a],r=e.getAssistantReadState(n);if(r!==void 0&&r!=="seen")return n}return null}function ug(t){const{label:e,avatarUrl:a,primaryColor:n,secondaryColor:r="#111827",fontFamily:i="inherit",labelClassName:o="gengage-pill-launcher-label",styleId:s="gengage-pill-launcher-style",mobileBreakpoint:c=768,desktopWidth:l="188px",desktopHeight:d="60px",iconSize:g="46px"}=t,p=`${parseInt(l,10)-14}px`,u=`${parseInt(d,10)-4}px`,m=`${parseInt(g,10)-4}px`,f=`
|
|
468
468
|
:host {
|
|
469
469
|
--pill-primary: ${n};
|
|
470
470
|
--pill-secondary: ${r};
|
|
@@ -476,8 +476,8 @@ button[data-gengage-part="chat-launcher-button"] {
|
|
|
476
476
|
width: ${l} !important;
|
|
477
477
|
min-width: ${l} !important;
|
|
478
478
|
max-width: ${l} !important;
|
|
479
|
-
height: ${
|
|
480
|
-
min-height: ${
|
|
479
|
+
height: ${d} !important;
|
|
480
|
+
min-height: ${d} !important;
|
|
481
481
|
padding: 6px 7px 6px 22px !important;
|
|
482
482
|
display: inline-flex !important;
|
|
483
483
|
flex-direction: row-reverse !important;
|
|
@@ -511,9 +511,9 @@ button[data-gengage-part="chat-launcher-button"]:hover {
|
|
|
511
511
|
}
|
|
512
512
|
|
|
513
513
|
button[data-gengage-part="chat-launcher-button"] img {
|
|
514
|
-
width: ${
|
|
515
|
-
height: ${
|
|
516
|
-
flex: 0 0 ${
|
|
514
|
+
width: ${g} !important;
|
|
515
|
+
height: ${g} !important;
|
|
516
|
+
flex: 0 0 ${g} !important;
|
|
517
517
|
border-radius: 999px;
|
|
518
518
|
object-fit: cover;
|
|
519
519
|
object-position: center;
|
|
@@ -538,55 +538,55 @@ button[data-gengage-part="chat-launcher-button"] img {
|
|
|
538
538
|
}
|
|
539
539
|
|
|
540
540
|
button[data-gengage-part="chat-launcher-button"] img {
|
|
541
|
-
width: ${
|
|
542
|
-
height: ${
|
|
543
|
-
flex-basis: ${
|
|
541
|
+
width: ${m} !important;
|
|
542
|
+
height: ${m} !important;
|
|
543
|
+
flex-basis: ${m} !important;
|
|
544
544
|
}
|
|
545
545
|
}
|
|
546
|
-
`.trim(),m=()=>{for(const S of document.querySelectorAll("[data-gengage-widget]")){if(!(S instanceof HTMLElement))continue;const E=S.shadowRoot;if(E&&(E.querySelector('[data-gengage-part="chat-launcher-button"]')||E.querySelector(".gengage-chat-root")))return S}return null},h=S=>{if(S.getElementById(s))return;const E=document.createElement("style");E.id=s,E.textContent=b,S.appendChild(E)},C=Pe(o),x=S=>{h(S);const E=S.querySelector('[data-gengage-part="chat-launcher-button"]');if(!(E instanceof HTMLButtonElement))return!1;const P=S.querySelector('[data-gengage-part="chat-header-avatar"]');if(P instanceof HTMLImageElement){const M=S.querySelector('[data-gengage-part="chat-launcher-button"] img');(!M||P.src===M.src)&&P.classList.remove("gengage-chat-header-avatar--logo")}if(E.querySelector(`.${C}`))return!0;E.setAttribute("aria-label",t);const A=document.createElement("span");return A.className=o,A.textContent=t,E.appendChild(A),!0};return{launcherImageUrl:a,apply:async S=>{if(S){h(S),await Promise.resolve();for(let P=0;P<90;P++){if(x(S))return;await new Promise(A=>requestAnimationFrame(()=>A()))}return}const E=m();E?.shadowRoot&&h(E.shadowRoot),await Promise.resolve();for(let P=0;P<90;P++){const A=m()?.shadowRoot??null;if(A&&(h(A),x(A)))return;await new Promise(M=>requestAnimationFrame(()=>M()))}}}}var sd=96,ct={leadingTokens:["bana","beni","bi","bir","bu","bunu","da","de","hemen","lutfen","su","sunu","urun","urunu"],trailingTokens:["artik","da","de","lutfen","misin","misiniz","ya"],negativePattern:/\b(?:ekleyem|ekleyemed|eklenem|eklenm|satin aldiktan|satin aldim|iade|iptal|olmuyor|olmadi|olmedi|sorun|problem)\b/,cartTargets:["sepete","sepetime"],cartVerbs:["at","atar","atsana","ekle","ekler","eklesene"],buyVerbs:["al","alir","alsana"],compactBuyVerbs:["satinal","satinalsana"]},cd=new Set(ct.leadingTokens),ld=new Set(ct.trailingTokens),gd=new Set(ct.cartTargets),dd=new Set(ct.cartVerbs),pd=new Set(ct.buyVerbs),hd=new Set(ct.compactBuyVerbs);function ud(e){return e.toLocaleLowerCase("tr-TR").replace(/ç/g,"c").replace(/ğ/g,"g").replace(/ı/g,"i").replace(/ö/g,"o").replace(/ş/g,"s").replace(/ü/g,"u").replace(/[^a-z0-9]+/g," ").trim().replace(/\s+/g," ")}function md(e){if(!e.trim()||e.length>sd||/[??]/.test(e))return!1;const t=ud(e);if(!t||ct.negativePattern.test(t))return!1;const a=t.split(" ");for(;a.length>0&&cd.has(a[0]);)a.shift();for(;a.length>0&&ld.has(a[a.length-1]);)a.pop();return a.length===1?hd.has(a[0]):a.length!==2?!1:gd.has(a[0])&&dd.has(a[1])?!0:a[0]==="satin"&&pd.has(a[1])}function Er(e){return md(e)?"directAddToCart":null}var fd=/^HTTP\s+\d{3}\b/i,bd=[/response body is null/i,/streaming not supported/i,/ECONNREFUSED/i,/ECONNRESET/i,/ETIMEDOUT/i,/socket hang up/i,/net::ERR_/i,/502\s+bad gateway/i,/503\s+service unavailable/i,/504\s+gateway timeout/i],vd=[/Traceback\s*\(/i,/\bSyntaxError\b/,/\bReferenceError\b/,/\bTypeError\s*:/,/\bat\s+[\w./()[\]<>-]+:\d+:\d+/,/\n\s+at\s+\w/,/undefined is not/i,/is not a function/i,/<anonymous>/i,/ChunkLoadError/i,/UnhandledPromiseRejection/i],yd=720;function xd(e,t){if(gn(e))return!0;const a=e.message.trim();if(fd.test(a)||bd.some(i=>i.test(a)))return!0;const n=t.trim();if(n.length>yd)return!0;const r=n.split(/\n/).length;return!!(r>=6||vd.some(i=>i.test(n))||r>=3&&/\bat\s+/.test(n))}var Pr="gengage_kvkk_shown",_d=["kvkk","kişisel veri","kisisel veri"],wd=/\b6698\b/;function Ha(e){const t=e.toLowerCase();return _d.some(a=>t.includes(a))||wd.test(t)}function Tr(e){try{return localStorage.getItem(`${Pr}_${e}`)==="1"}catch{return!1}}function Ua(e){try{localStorage.setItem(`${Pr}_${e}`,"1")}catch{}}function kd(e,t={}){const a=new DOMParser().parseFromString(e,"text/html").body,n=Array.from(a.children);let r=!1;for(const i of n)if(Ha(i.textContent??"")){i.remove(),r=!0;break}return!r&&t.fallbackToFirstBlock===!0&&n[0]&&n[0].remove(),a.innerHTML.trim()}function Sd(e,t={}){const a=new DOMParser().parseFromString(e,"text/html"),n=Array.from(a.body.children);for(const r of n)if(Ha(r.textContent??""))return r.outerHTML;return t.fallbackToFirstBlock===!0?n[0]?.outerHTML??null:null}var Cd={tr:"TURKISH",en:"ENGLISH",de:"GERMAN",fr:"FRENCH"};function Ed(e){return e?Cd[e.toLowerCase().slice(0,2)]??"TURKISH":"TURKISH"}var Pd=':where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel-container,.gengage-simbut-root){--ds-neutral-0:#fff;--ds-neutral-25:#fcfcfd;--ds-neutral-50:#f6f7fb;--ds-neutral-100:#f3f4f6;--ds-neutral-200:#e5e7eb;--ds-neutral-300:#d0d5dd;--ds-neutral-500:#667085;--ds-neutral-600:#475467;--ds-neutral-700:#344054;--ds-neutral-900:#111827;--ds-radius-2:8px;--ds-radius-3:12px;--ds-radius-4:16px;--ds-radius-5:20px;--ds-radius-6:24px;--ds-radius-pill:999px;--ds-shadow-1:0 1px 2px #1018280a, 0 1px 3px #1018280f;--ds-shadow-2:0 4px 12px #10182814;--ds-shadow-3:0 10px 24px #1018281f;--client-primary:var(--gengage-primary-color,#b7102a);--client-primary-hover:var(--gengage-primary-hover,color-mix(in srgb, var(--client-primary) 88%, black 12%));--client-primary-active:var(--gengage-primary-active,color-mix(in srgb, var(--client-primary) 78%, black 22%));--client-primary-subtle:color-mix(in srgb, var(--client-primary) 12%, white);--client-primary-soft:color-mix(in srgb, var(--client-primary) 20%, white);--client-on-primary:var(--gengage-primary-foreground,#fff);--client-focus-ring:color-mix(in srgb, var(--client-primary) 32%, transparent);--ai-accent-start:#0b24d6;--ai-accent-end:#f768f2;--ai-accent-soft:linear-gradient(135deg, #0b24d614, #f768f214);--surface-page:var(--gengage-page-bg,var(--ds-neutral-50));--surface-shell:var(--gengage-shell-bg,#10131a);--surface-card:var(--gengage-background-color,var(--ds-neutral-0));--surface-card-muted:var(--gengage-surface-soft,#f8fafc);--surface-card-soft:var(--surface-card-muted);--surface-elevated:var(--gengage-surface-elevated,var(--ds-neutral-0));--surface-input:var(--gengage-input-bg,var(--ds-neutral-0));--surface-overlay:var(--gengage-overlay-bg,#10131a85);--text-primary:var(--gengage-foreground-color,var(--ds-neutral-900));--text-secondary:var(--gengage-text-secondary,#4b5563);--text-muted:var(--gengage-text-muted,#6b7280);--text-inverse:var(--gengage-text-inverse,#f9fafb);--border-subtle:var(--gengage-border-subtle,#1118270f);--border-default:var(--gengage-border-color,#1118271a);--border-strong:var(--gengage-border-strong,#1118272e);--shadow-1:var(--gengage-shadow-1,var(--ds-shadow-1));--shadow-2:var(--gengage-shadow-2,var(--ds-shadow-2));--shadow-3:var(--gengage-shadow-3,var(--ds-shadow-3));--radius-control:var(--gengage-control-radius,var(--ds-radius-3));--radius-card:var(--gengage-card-radius,var(--ds-radius-4));--radius-panel:var(--gengage-panel-radius,var(--ds-radius-6));--radius-pill:var(--gengage-pill-radius,var(--ds-radius-pill));--success:var(--gengage-success-color,#16a34a);--warning:var(--gengage-warning-color,#d97706);--error:var(--gengage-error-color,#dc2626);--info:var(--gengage-info-color,#2563eb);--rating:var(--gengage-rating-color,#f5b301);--gengage-primary:var(--client-primary);--gengage-primary-soft:var(--client-primary-soft);--gengage-primary-subtle:var(--client-primary-subtle);--gengage-text-color:var(--text-primary);--gengage-text-secondary:var(--text-secondary);--gengage-hover-color:var(--surface-card-soft);--ds-button-primary-bg:var(--client-primary);--ds-button-primary-bg-hover:var(--client-primary-hover);--ds-button-primary-bg-active:var(--client-primary-active);--ds-button-primary-fg:var(--client-on-primary);--ds-button-primary-border:color-mix(in srgb, var(--client-primary) 82%, black 18%);--ds-button-secondary-bg:var(--surface-card);--ds-button-secondary-bg-hover:var(--client-primary-subtle);--ds-button-secondary-fg:var(--client-primary);--ds-button-secondary-border:color-mix(in srgb, var(--client-primary) 26%, white);--ds-button-ghost-bg:var(--surface-card-muted);--ds-button-ghost-bg-hover:var(--ds-button-ghost-bg);--ds-button-ghost-fg:var(--text-primary);--ds-button-ghost-fg-hover:var(--client-primary);--ds-button-ghost-border:var(--border-default);--ds-button-ghost-border-hover:color-mix(in srgb, var(--client-primary) 18%, white);--ds-panel-bg:var(--surface-card);--ds-panel-border:var(--border-default);--ds-panel-shadow:var(--shadow-1);--ds-panel-radius:var(--radius-panel);--ds-header-bg:var(--surface-card);--ds-header-fg:var(--text-primary);--ds-header-muted:var(--text-muted);--ds-header-border:var(--border-default);--ds-card-bg:var(--surface-card);--ds-card-bg-soft:var(--surface-card-muted);--ds-card-border:var(--border-default);--ds-card-shadow:var(--shadow-1);--ds-card-shadow-hover:var(--shadow-2);--ds-card-radius:var(--radius-card);--ds-card-border-hover:color-mix(in srgb, var(--client-primary) 14%, var(--border-default));--ds-card-bg-hover:color-mix(in srgb, var(--client-primary) 2%, var(--surface-card));--ds-product-card-media-bg:var(--surface-card-muted);--ds-product-card-media-border:var(--border-subtle);--ds-input-bg:var(--surface-input);--ds-input-border:var(--border-default);--ds-input-radius:16px;--ds-input-focus-border:color-mix(in srgb, var(--client-primary) 28%, white);--ds-input-focus-ring:0 0 0 4px var(--client-focus-ring);--ds-input-highlight:inset 0 1px 0 #fff9;--ds-chip-bg:var(--surface-card);--ds-chip-border:var(--border-default);--ds-chip-fg:var(--text-secondary);--ds-chip-bg-hover:var(--surface-card-muted);--ds-chip-bg-active:color-mix(in srgb, var(--client-primary) 8%, white);--ds-chip-border-active:color-mix(in srgb, var(--client-primary) 30%, white);--ds-chip-fg-active:var(--client-primary);--ds-tab-bg:var(--surface-card);--ds-tab-bg-hover:var(--surface-card-muted);--ds-tab-bg-active:color-mix(in srgb, var(--client-primary) 8%, white);--ds-tab-border:var(--border-default);--ds-tab-border-active:color-mix(in srgb, var(--client-primary) 26%, white);--ds-tab-fg:var(--text-secondary);--ds-tab-fg-active:var(--client-primary);--ds-badge-brand-bg:color-mix(in srgb, var(--client-primary) 10%, white);--ds-badge-brand-border:color-mix(in srgb, var(--client-primary) 18%, white);--ds-badge-brand-fg:var(--client-primary);--ds-message-user-bg:color-mix(in srgb, var(--client-primary) 10%, white);--ds-message-user-fg:var(--text-primary);--ds-message-user-border:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));--ds-message-user-shadow:none;--ds-message-assistant-bg:var(--surface-card-soft);--ds-message-assistant-fg:var(--text-primary);--ds-message-assistant-border:var(--border-default);--ds-message-assistant-shadow:none;--ds-message-active-outline:color-mix(in srgb, var(--client-primary) 68%, white);--ds-progress-card-border:var(--border-subtle);--ds-progress-mark-bg:color-mix(in srgb, var(--ai-accent-start) 8%, var(--surface-card));--ds-progress-mark-border:color-mix(in srgb, var(--ai-accent-start) 12%, var(--border-default));--ds-progress-scrollbar-thumb:color-mix(in srgb, var(--text-primary) 18%, transparent);--ds-toast-error-bg:color-mix(in srgb, var(--error) 5%, var(--surface-card));--ds-toast-error-border:color-mix(in srgb, var(--error) 18%, var(--border-default));--ds-toast-error-accent:var(--error);--ds-toast-error-fg:color-mix(in srgb, var(--error) 22%, var(--text-primary));--ds-toast-error-shadow:var(--shadow-3);--ds-comparison-table-bg:var(--surface-card);--ds-comparison-table-border:var(--border-default);--ds-comparison-table-header-bg:var(--surface-card-muted);--ds-comparison-table-header-fg:var(--text-muted);--ds-comparison-table-row-border:var(--border-subtle);--ds-comparison-table-winner-bg:color-mix(in srgb, var(--client-primary) 6%, white);--ds-comparison-table-winner-fg:var(--client-primary)}:where(.gds-panel){background:var(--ds-panel-bg);border:1px solid var(--ds-panel-border);border-radius:var(--ds-panel-radius);box-shadow:var(--ds-panel-shadow)}:where(.gengage-qna-panel,.gengage-chat-panel-topbar,.gengage-chat-chat-header,.gengage-chat-panel-ai-zone>.gengage-chat-ai-top-picks,.gengage-chat-grounding-review){border-color:var(--ds-panel-border)}:where(.gds-btn){border-radius:var(--radius-control);min-height:46px;font:inherit;cursor:pointer;border:0;outline:none;justify-content:center;align-items:center;gap:10px;padding:0 18px;font-weight:700;transition:box-shadow .15s,border-color .15s,background-color .15s,color .15s;display:inline-flex}:where(.gds-btn:hover){transform:none}:where(.gds-btn:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-btn:disabled){cursor:not-allowed;opacity:.56;box-shadow:none}:where(.gds-btn-primary){background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);border:1px solid var(--ds-button-primary-border)}:where(.gds-btn-primary:hover){background:var(--ds-button-primary-bg-hover)}:where(.gds-btn-secondary){background:var(--ds-button-secondary-bg);color:var(--ds-button-secondary-fg);border:1px solid var(--ds-button-secondary-border)}:where(.gds-btn-secondary:hover){background:var(--ds-button-secondary-bg-hover)}:where(.gds-btn-ghost){background:var(--ds-button-ghost-bg);color:var(--ds-button-ghost-fg);border:1px solid var(--ds-button-ghost-border)}:where(.gds-btn-ghost:hover){background:var(--ds-button-ghost-bg-hover);border-color:var(--ds-button-ghost-border-hover);color:var(--ds-button-ghost-fg-hover)}:where(.gds-chip){border-radius:var(--radius-pill);border:1px solid var(--ds-chip-border);background:var(--ds-chip-bg);color:var(--ds-chip-fg);align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:700;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}:where(.gds-chip:hover){background:var(--ds-chip-bg-hover);border-color:color-mix(in srgb, var(--client-primary) 16%, var(--ds-chip-border))}:where(.gds-chip:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-chip-active){border-color:var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active)}:where(.gds-badge){border-radius:var(--radius-pill);letter-spacing:.04em;align-items:center;min-height:28px;padding:0 10px;font-size:11px;font-weight:800;display:inline-flex}:where(.gds-badge-brand){background:var(--ds-badge-brand-bg);color:var(--ds-badge-brand-fg);border:1px solid var(--ds-badge-brand-border)}:where(.gds-shell-header){background:var(--ds-header-bg);color:var(--ds-header-fg);border-bottom:1px solid var(--ds-header-border);box-shadow:none;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;display:flex}:where(.gds-shell-header [data-gengage-part=chat-header-powered-by]){color:var(--ds-header-muted)}:where(.gds-icon-btn){border-radius:var(--radius-control);width:42px;min-width:42px;height:42px;min-height:42px;padding:0}:where(.gds-input-shell){border-radius:var(--ds-input-radius);border:1px solid var(--ds-input-border);background:var(--ds-input-bg);min-height:52px;box-shadow:var(--ds-input-highlight);align-items:center;gap:12px;padding:6px 6px 6px 14px;transition:border-color .15s,box-shadow .15s,background-color .15s;display:flex}:where(.gds-input-shell:focus-within){border-color:var(--ds-input-focus-border);box-shadow:var(--ds-input-focus-ring)}:where(.gds-tab){border-radius:var(--radius-pill);border:1px solid var(--ds-tab-border);background:var(--ds-tab-bg);color:var(--ds-tab-fg);align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:700;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}:where(.gds-tab:hover){background:var(--ds-tab-bg-hover)}:where(.gds-tab:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-tab[aria-selected=true],.gds-tab.is-active){color:var(--ds-tab-fg-active);border-color:var(--ds-tab-border-active);background:var(--ds-tab-bg-active)}:where(.gds-toolbar){flex-wrap:wrap;align-items:center;gap:10px;display:flex}:where(.gds-toolbar-compact){gap:8px}:where(.gds-card){background:var(--ds-card-bg);border:1px solid var(--ds-card-border);border-radius:var(--ds-card-radius);box-shadow:var(--ds-card-shadow);transition:border-color .15s,box-shadow .15s,background-color .15s}:where(.gds-card-interactive),:where(.gds-clickable){cursor:pointer}:where(.gds-card-interactive:hover){background:var(--ds-card-bg-hover);border-color:var(--ds-card-border-hover);box-shadow:var(--ds-card-shadow-hover)}:where(.gds-card-soft){background:var(--ds-card-bg-soft)}:where(.gds-product-card){border-radius:16px}:where(.gds-evidence-card){background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-control);box-shadow:var(--shadow-1)}:where(.gds-evidence-card-success){background:color-mix(in srgb, var(--success) 10%, white);border-color:color-mix(in srgb, var(--success) 22%, var(--border-default))}:where(.gds-evidence-card-danger){background:color-mix(in srgb, var(--error) 8%, white);border-color:color-mix(in srgb, var(--error) 20%, var(--border-default))}:where(.gds-evidence-card-warning){background:color-mix(in srgb, var(--warning) 10%, white);border-color:color-mix(in srgb, var(--warning) 22%, var(--border-default))}:where(.gds-message){border-radius:calc(var(--radius-control) + 4px);word-wrap:break-word;overflow-wrap:break-word;border:1px solid #0000;max-width:85%;padding:14px 16px;font-size:14px;font-weight:400;line-height:1.55;animation:.3s cubic-bezier(.2,.7,.2,1) gengage-chat-msg-in}:where(.gds-message-user){background:var(--ds-message-user-bg);color:var(--ds-message-user-fg);border-color:var(--ds-message-user-border);box-shadow:var(--ds-message-user-shadow);border-bottom-right-radius:6px;align-self:flex-end}:where(.gds-message-assistant){background:var(--ds-message-assistant-bg);color:var(--ds-message-assistant-fg);border-color:var(--ds-message-assistant-border);box-shadow:var(--ds-message-assistant-shadow);border-bottom-left-radius:6px;align-self:flex-start;min-width:120px}:where(.gds-message-active){outline:2px solid var(--ds-message-active-outline);outline-offset:-2px}:where(.gds-ai-card){background:var(--surface-card);border:1px solid var(--ds-progress-card-border);border-radius:20px;gap:16px;padding:18px;display:grid}:where(.gds-ai-mark){background:var(--ds-progress-mark-bg);width:42px;height:42px;color:var(--ai-accent-start);border:1px solid var(--ds-progress-mark-border);border-radius:14px;place-items:center;display:grid}:where(.gds-ai-loader-row){align-items:center;gap:12px;display:flex}:where(.gds-progress-loader){border:1px solid color-mix(in srgb, var(--ai-accent-start) 10%, var(--border-default));background:linear-gradient(110deg, var(--surface-card-soft) 8%, color-mix(in srgb, var(--ai-accent-start) 5%, var(--surface-card)) 18%, var(--surface-card-soft) 33%);width:fit-content;max-width:100%;min-height:44px;color:var(--text-secondary);background-size:220% 100%;border-radius:14px;align-items:center;gap:10px;padding:0 16px;animation:1.8s linear infinite gds-progress-shimmer;display:inline-flex}:where(.gds-progress-loader-chat){box-sizing:border-box;align-self:flex-start;width:100%;min-width:0;max-width:85%;display:flex}:where(.gds-progress-loader-chat) .gds-progress-label{overflow-wrap:anywhere;flex:auto;min-width:0}:where(.gds-progress-loader-panel){box-sizing:border-box;justify-content:flex-start;align-items:center;width:100%;min-width:0;max-width:100%;min-height:48px;display:flex}:where(.gds-progress-loader-panel) .gds-progress-label{overflow-wrap:anywhere;flex:auto;min-width:0}:where(.gds-progress-label){min-width:0;color:var(--text-secondary);word-break:break-word;align-self:center;font-size:13px;line-height:1.35;display:block}:where(.gds-progress-dots){flex-shrink:0;align-items:center;gap:6px;min-height:20px;display:inline-flex}:where(.gds-progress-dot){background:color-mix(in srgb, var(--ai-accent-start) 20%, var(--text-muted));border-radius:50%;width:8px;height:8px;animation:1.2s ease-in-out infinite gds-progress-dot-pulse;display:inline-block}:where(.gds-progress-dot:nth-child(2)){animation-delay:.2s}:where(.gds-progress-dot:nth-child(3)){animation-delay:.4s}:where(.gds-ai-status){border-radius:calc(var(--radius-control) + 2px);border:1px solid var(--border-default);background:var(--surface-card-muted);max-width:85%;color:var(--text-secondary);border-bottom-left-radius:6px;align-self:flex-start;align-items:center;gap:8px;padding:10px 14px;display:flex}:where(.gds-ai-status-text){color:var(--text-secondary);font-size:13px;font-style:italic}:where(.gds-ai-dot-loader){align-items:center;gap:5px;display:inline-flex}:where(.gds-ai-dot-loader span){background:color-mix(in srgb, var(--ai-accent-start) 38%, var(--text-muted));border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite gds-progress-dot-pulse;display:inline-block}:where(.gds-ai-dot-loader span:nth-child(2)){animation-delay:.2s}:where(.gds-ai-dot-loader span:nth-child(3)){animation-delay:.4s}:where(.gds-ai-spinner){border:2.5px solid var(--border-default);border-top-color:var(--ai-accent-start);border-radius:50%;flex-shrink:0;width:26px;height:26px;animation:.72s linear infinite gds-spin}@keyframes gds-spin{to{transform:rotate(360deg)}}@keyframes gds-progress-shimmer{0%{background-position:200% 0}to{background-position:-20% 0}}@keyframes gds-progress-dot-pulse{0%,to{opacity:.45;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){:where(.gds-progress-loader){animation:none}:where(.gds-progress-dot){opacity:.85;animation:none;transform:scale(1)}:where(.gds-ai-spinner){animation:none}:where(.gds-ai-dot-loader span){opacity:.85;animation:none}}:where(.gds-menu){border-radius:var(--radius-card);border:1px solid var(--border-default);background:var(--surface-elevated);box-shadow:var(--shadow-3);padding:4px}:where(.gds-menu-option){border-radius:calc(var(--radius-control) - 4px);width:100%;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:500;line-height:1.25;transition:background-color .15s,color .15s;display:flex}:where(.gds-menu-option:hover){background:var(--surface-card-muted)}:where(.gds-menu-option:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-menu-option-active){background:var(--client-primary-subtle);color:var(--client-primary);font-weight:600}:where(.gds-comparison-table){border-collapse:separate;border-spacing:0;border:1px solid var(--ds-comparison-table-border);background:var(--ds-comparison-table-bg);border-radius:20px;width:100%;overflow:hidden}:where(.gds-comparison-table th,.gds-comparison-table td){text-align:left;border-bottom:1px solid var(--ds-comparison-table-row-border);padding:14px 16px;font-size:13px}:where(.gds-comparison-table th){background:var(--ds-comparison-table-header-bg);text-transform:uppercase;letter-spacing:.08em;color:var(--ds-comparison-table-header-fg);font-size:11px}:where(.gds-comparison-table tr:last-child td){border-bottom:0}:where(.gds-comparison-table-winner-cell){background:var(--ds-comparison-table-winner-bg);color:var(--ds-comparison-table-winner-fg);font-weight:800}:host{all:initial;font-family:var(--gengage-font-family,"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:var(--gengage-font-size,14px)}.gengage-chat-root button,.gengage-chat-root [role=button],.gengage-chat-root a{cursor:pointer}.gengage-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gengage-chat-root{z-index:var(--gengage-z-index,2147480000);--_gengage-chat-offset:var(--gengage-chat-offset,20px);--_gengage-chat-launcher-bottom:var(--gengage-chat-launcher-bottom,20px);--_gengage-chat-launcher-right:var(--gengage-chat-launcher-right,20px);--_gengage-chat-launcher-width:var(--gengage-chat-launcher-width,56px);--_gengage-chat-launcher-height:var(--gengage-chat-launcher-height,56px);--_gengage-chat-launcher-mobile-width:var(--gengage-chat-launcher-mobile-width,var(--_gengage-chat-launcher-width));--_gengage-chat-launcher-mobile-height:var(--gengage-chat-launcher-mobile-height,var(--_gengage-chat-launcher-height));--_gengage-chat-drawer-width:var(--gengage-chat-width,400px);--_gengage-chat-radius:var(--gengage-chat-shell-radius,1rem);--_gengage-chat-header-height:var(--gengage-chat-header-height,72px);--_gengage-chat-conversation-width:var(--gengage-chat-conversation-width,396px);--_gengage-chat-panel-min-width:var(--gengage-chat-panel-min-width,320px);--_gengage-chat-panel-max-width:var(--gengage-chat-panel-max-width,1200px);--_gengage-chat-input-height:var(--gengage-chat-input-height,48px);--_gengage-chat-shadow:var(--gengage-chat-shadow,var(--shadow-3));--_gengage-border-color:var(--border-default);--_gengage-discount-color:var(--gengage-discount-color,var(--client-primary));--_gengage-campaign-reason-start:var(--gengage-campaign-reason-color,var(--client-primary));--_gengage-campaign-reason-end:var(--gengage-campaign-reason-color-end,var(--gengage-campaign-reason-color,var(--client-primary)));--_gengage-success-color:var(--success);--_gengage-text-primary:var(--text-primary);--_gengage-text-secondary:var(--text-secondary);--_gengage-surface-secondary:var(--surface-card-soft);--_gengage-surface-muted:var(--surface-card-soft);--_gengage-surface-dark:var(--surface-shell);--_gengage-rating-color:var(--rating);--_gengage-error:var(--error);--_gengage-danger-color:var(--error);--_gengage-ghost-border:var(--gengage-ghost-border,color-mix(in srgb, var(--client-primary) 16%, transparent));position:fixed}.gengage-chat-backdrop{z-index:0;pointer-events:none;cursor:pointer;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background:0 0;border:none;margin:0;padding:0;display:none;position:fixed;inset:0}.gengage-chat-root--open:not(.gengage-chat--inline) .gengage-chat-backdrop{pointer-events:none;background:var(--gengage-chat-float-backdrop,transparent);display:block}.gengage-chat-root--open.gengage-chat-root--maximized-host-chrome:not(.gengage-chat--inline) .gengage-chat-backdrop{pointer-events:auto;background:var(--gengage-chat-float-backdrop,color-mix(in srgb, var(--surface-overlay) 72%, transparent))}.gengage-chat-root.gengage-chat--overlay.gengage-chat-root--open .gengage-chat-backdrop{background:var(--gengage-chat-overlay-backdrop,var(--surface-overlay));pointer-events:auto}.gengage-chat-launcher-container{bottom:var(--gengage-chat-launcher-anchor-bottom,var(--_gengage-chat-launcher-bottom));right:var(--gengage-chat-launcher-anchor-right,var(--_gengage-chat-launcher-right));z-index:var(--gengage-z-index,2147480000);transition:bottom var(--gengage-chat-launcher-anchor-transition,0s) ease, right var(--gengage-chat-launcher-anchor-transition,0s) ease;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed}.gengage-chat-launcher-content-area,.gengage-chat-launcher-content-area-bottom{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.gengage-chat-launcher-content-area:empty,.gengage-chat-launcher-content-area-bottom:empty,.gengage-chat-root--open .gengage-chat-launcher-content-area,.gengage-chat-root--open .gengage-chat-launcher-content-area-bottom{display:none}.gengage-chat-root--open .gengage-chat-launcher-container{pointer-events:none;opacity:0;transition:opacity .2s}.gengage-chat-launcher{width:var(--_gengage-chat-launcher-width);height:var(--_gengage-chat-launcher-height);border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);cursor:pointer;box-shadow:var(--shadow-3);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s;display:flex;position:relative}.gengage-chat-launcher:hover{box-shadow:var(--shadow-3);transform:none}.gengage-chat-launcher svg{width:28px;height:28px}.gengage-chat-launcher--image-mode{box-shadow:none;background:0 0;border:none;border-radius:0;padding:0;overflow:hidden}.gengage-chat-launcher--image-mode:hover{box-shadow:none}.gengage-chat-launcher--image-mode img{object-fit:contain;width:100%;height:100%}.gengage-chat-launcher-img--mobile,.gengage-chat-root--mobile .gengage-chat-launcher-img--desktop{display:none}.gengage-chat-root--mobile .gengage-chat-launcher-img--mobile{display:block}.gengage-chat-launcher--hidden-mobile{display:none!important}.gengage-chat-launcher-tooltip{border-radius:var(--radius-control);background:var(--surface-shell);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;box-shadow:var(--shadow-2);padding:6px 12px;font-size:13px;font-weight:500;transition:opacity .2s;position:absolute;top:50%;right:calc(100% + 12px);transform:translateY(-50%)}.gengage-chat-launcher-tooltip:after{content:"";border:5px solid #0000;border-left-color:var(--surface-shell);position:absolute;top:50%;left:100%;transform:translateY(-50%)}.gengage-chat-launcher:hover .gengage-chat-launcher-tooltip{opacity:1}.gengage-chat-root--open .gengage-chat-launcher-tooltip{display:none}.gengage-chat-drawer{width:var(--_gengage-chat-drawer-width);background:var(--surface-elevated,var(--surface-card));border-left:1px solid var(--border-default);max-height:100dvh;box-shadow:var(--_gengage-chat-shadow);z-index:var(--gengage-z-index,2147480000);opacity:1;border-radius:0;flex-direction:column;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .2s;display:flex;position:fixed;top:0;bottom:0;right:0;overflow:hidden;transform:translate(0)}.gengage-chat-root--mobile .gengage-chat-launcher-container{right:var(--gengage-chat-launcher-anchor-right,var(--gengage-chat-launcher-mobile-right,16px));bottom:calc(var(--gengage-chat-launcher-anchor-bottom,var(--gengage-chat-launcher-mobile-bottom,16px)) + env(safe-area-inset-bottom,0px))}.gengage-chat-root--mobile .gengage-chat-launcher{width:var(--_gengage-chat-launcher-mobile-width);height:var(--_gengage-chat-launcher-mobile-height)}.gengage-chat-root--mobile .gengage-chat-drawer{border:1px solid var(--border-default);width:100%;max-width:none;max-height:100dvh;box-shadow:var(--shadow-3);padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface-elevated,var(--surface-card));border-bottom:none;border-radius:16px 16px 0 0;bottom:0;left:0;right:0}.gengage-chat-drawer-handle{display:none}.gengage-chat-root--mobile .gengage-chat-drawer-handle{pointer-events:none;z-index:1;justify-content:center;align-items:center;height:14px;display:flex;position:absolute;top:6px;left:0;right:0}.gengage-chat-root--mobile .gengage-chat-header{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.gengage-chat-root--mobile .gengage-chat-header button,.gengage-chat-root--mobile .gengage-chat-header a{cursor:pointer;touch-action:auto;-webkit-user-select:auto;user-select:auto}.gengage-chat-root--mobile .gengage-chat-drawer-handle:before{content:"";background:var(--border-strong);pointer-events:none;border-radius:999px;width:36px;height:4px}.gengage-chat-root--mobile.gengage-chat-root--mobile-half .gengage-chat-drawer{height:min(72dvh,620px);max-height:min(72dvh,620px);top:auto}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-drawer{top:var(--gengage-chat-visual-top,0px);height:var(--gengage-chat-visual-vh,100dvh);max-height:var(--gengage-chat-visual-vh,100dvh);border-radius:0;bottom:auto}.gengage-chat-root--mobile .gengage-chat-input-area{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border-default)}.gengage-chat-header{box-sizing:border-box;height:var(--_gengage-chat-header-height);background:var(--gengage-chat-header-bg,var(--ds-header-bg));color:var(--gengage-chat-header-foreground,var(--ds-header-fg));box-shadow:none;border-bottom:1px solid var(--gengage-chat-header-border-bottom,var(--ds-header-border));z-index:2;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex;position:relative}.gengage-chat-header-left{align-items:center;gap:10px;min-width:0;display:flex}.gengage-chat-header-avatar{background:var(--surface-card-soft);border:1px solid var(--border-default);object-fit:contain;border-radius:999px;flex-shrink:0;width:44px;height:44px}.gengage-chat-header-avatar--logo{object-fit:contain;background:0 0;border:none;border-radius:0;width:auto;max-width:92px;height:45px}.gengage-chat-header-info{flex-direction:column;gap:2px;min-width:0;display:flex}.gengage-chat-header-title-row{align-items:center;gap:6px;min-width:0;display:flex}.gengage-chat-header-title{letter-spacing:.01em;color:inherit;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:16px;font-weight:700;line-height:1.25;display:block;overflow:hidden}.gengage-chat-header-badge{border-radius:var(--radius-pill);background:var(--ds-badge-brand-bg);min-height:26px;color:var(--ds-badge-brand-fg);border:1px solid var(--ds-badge-brand-border);letter-spacing:.04em;text-transform:uppercase;align-items:center;padding:0 10px;font-size:10px;font-weight:800;line-height:1.5;display:inline-flex}.gengage-chat-header-powered{color:var(--ds-header-muted);align-items:center;gap:4px;font-size:11px;line-height:1.2;text-decoration:none;transition:color .15s;display:flex}.gengage-chat-header-powered:hover{color:var(--client-primary)}.gengage-chat-header-powered svg{opacity:.6;flex-shrink:0;width:12px;height:12px}.gengage-chat-header-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.gengage-chat-header-btn{border-radius:var(--radius-control,12px);background:var(--surface-card-soft);border:1px solid var(--border-default);width:42px;height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;line-height:1;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}@media (width<=374px){.gengage-chat-header{gap:8px;padding:10px}.gengage-chat-header-right{flex-shrink:1;gap:4px;min-width:0}.gengage-chat-header-btn{width:34px;min-width:34px;height:34px;min-height:34px}}.gengage-chat-header-btn:hover{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-header-btn--fav{position:relative}.gengage-chat-header-btn--reopen-panel,.gengage-chat-root--mobile .gengage-chat-new-chat{display:none}.gengage-chat-header-fav-badge{background:var(--error);min-width:16px;height:16px;color:var(--text-inverse);text-align:center;pointer-events:none;border-radius:999px;padding:0 3px;font-size:9px;font-weight:700;line-height:16px;position:absolute;top:-4px;right:-4px}.gengage-chat-close{border-radius:var(--radius-control,12px);background:var(--surface-card-soft);border:1px solid var(--border-default);width:42px;min-width:42px;height:42px;min-height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;font-size:18px;line-height:1;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.gengage-chat-close:hover{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-body{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.gengage-chat-panel{width:0;transition:width .22s cubic-bezier(.2,.72,.2,1);display:none;overflow:hidden}.gengage-chat-panel--visible{box-sizing:border-box;background:var(--gengage-chat-panel-bg,var(--surface-card));border-right:1px solid var(--border-default);scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--text-muted) 24%, transparent) transparent;flex-direction:column;width:440px;min-width:440px;padding:16px;display:flex;position:relative;overflow-y:auto}.gengage-chat-panel--visible::-webkit-scrollbar{width:6px}.gengage-chat-panel--visible::-webkit-scrollbar-track{background:0 0}.gengage-chat-panel--visible::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--text-muted) 24%, transparent);border-radius:3px}.gengage-chat-panel--visible::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--text-muted) 36%, transparent)}.gengage-chat-panel-ai-zone{box-sizing:border-box;border-bottom:1px solid var(--border-subtle);flex-shrink:0;width:100%;max-height:min(42vh,320px);margin-bottom:4px;padding:8px 0 12px;overflow:auto}.gengage-chat-panel-ai-zone:has(.gengage-chat-grouping-cards){max-height:min(52vh,520px)}.gengage-chat-panel-ai-zone:has(.gengage-chat-ai-top-picks){max-height:none;overflow:visible}.gengage-chat-panel-ai-zone[hidden]{display:none!important}.gengage-chat-panel-ai-zone-inner{align-items:center;gap:10px;display:flex}.gengage-chat-panel-ai-zone-text{color:var(--text-muted);font-size:13px}.gengage-chat-grouping-section-title{display:none}.gengage-chat-panel-ai-zone .gengage-chat-grouping-section-title{width:100%;color:var(--text-primary);letter-spacing:-.01em;flex-shrink:0;align-self:stretch;margin:0 0 10px;font-size:15px;font-weight:700;display:block}.gengage-chat-panel-ai-zone .gengage-chat-grouping-cards{flex-direction:column;align-items:stretch;gap:0;width:100%;min-width:0;max-height:none;display:flex}.gengage-chat-panel-ai-zone .gengage-chat-grouping-cards-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:thin;flex-flow:row;align-items:stretch;gap:10px;width:100%;min-width:0;margin:0 -2px;padding:2px 2px 10px;display:flex;overflow:auto hidden}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card{box-sizing:border-box;background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-card);width:136px;min-width:136px;max-width:150px;box-shadow:var(--shadow-1);flex-direction:column;flex:none;align-items:stretch;gap:8px;padding:12px 10px 14px}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card:hover{border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-arrow{display:none}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-img{object-fit:cover;border-radius:8px;width:100%;min-width:0;max-width:88px;height:72px;min-height:72px;margin:0 auto}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-body{text-align:center;flex-direction:column;align-items:center;gap:4px;width:100%}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-name{font-size:13px;font-weight:700;line-height:1.25}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-desc{color:var(--text-muted);font-size:11px;line-height:1.3}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-labels{white-space:normal;text-overflow:unset;justify-content:center;margin-top:2px;line-height:1.35;overflow:visible}.gengage-chat-panel-divider{cursor:pointer;background:var(--_gengage-border-color);z-index:2;flex-shrink:0;align-items:center;width:4px;transition:background .15s;display:flex;position:relative}.gengage-chat-panel-divider:hover{background:var(--border-strong)}.gengage-chat-panel-divider--hidden{display:none}.gengage-chat-panel-divider-toggle{border:1px solid var(--_gengage-border-color);background:var(--surface-card);cursor:pointer;width:28px;height:48px;color:var(--text-secondary);box-shadow:var(--shadow-1);border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:background .15s,color .15s;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.gengage-chat-panel-divider-toggle:hover{background:var(--surface-card-muted);color:var(--client-primary)}.gengage-chat-panel.gengage-chat-panel--collapsed{border-right:none;flex:0 0 0;width:0;min-width:0;max-width:0;padding:0;overflow:hidden}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider{background:0 0;width:0}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider .gengage-chat-panel-divider-toggle{left:50%;transform:translate(-50%,-50%)}.gengage-chat-conversation{background:var(--surface-card);z-index:1;flex-direction:column;flex:1;min-width:0;display:flex;position:relative;overflow:hidden}.gengage-chat-drawer--with-panel{width:auto;box-shadow:none;background:0 0;overflow:visible}.gengage-chat-drawer--with-panel .gengage-chat-header{border-radius:0;flex-shrink:0}.gengage-chat-drawer--with-panel .gengage-chat-body{flex:1 1 0;align-items:stretch;gap:0;min-height:0;padding:0;overflow:visible}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:clamp(var(--_gengage-chat-panel-min-width), 56vw, var(--_gengage-chat-panel-max-width));min-width:var(--_gengage-chat-panel-min-width);max-width:var(--_gengage-chat-panel-max-width);background:var(--gengage-chat-panel-bg,var(--surface-card));box-shadow:none;border-right:none;border-radius:0;flex:none;max-height:100dvh;margin:0;padding:0 16px 16px;overflow-y:auto}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider{background:0 0;width:0}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle{background:var(--surface-card);width:20px;height:48px;color:var(--client-primary);border:1px solid color-mix(in srgb, var(--client-primary) 20%, var(--border-default));box-shadow:var(--shadow-1);z-index:10;border-radius:10px;font-size:12px}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle:hover{background:var(--client-primary-subtle);color:var(--client-primary)}.gengage-chat-drawer--with-panel .gengage-chat-conversation{flex:0 0 var(--_gengage-chat-conversation-width);width:var(--_gengage-chat-conversation-width);background:var(--surface-card);box-shadow:var(--shadow-2);border-left:none}.gengage-chat-drawer--with-panel .gengage-chat-messages{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--text-muted) 22%, transparent) transparent;padding-right:6px}.gengage-chat-drawer--with-panel .gengage-chat-messages::-webkit-scrollbar{width:0}.gengage-chat-drawer--with-panel .gengage-chat-panel.gengage-chat-panel--collapsed{flex:0 0 0;width:0;min-width:0;max-width:0;padding:0;overflow:hidden}.gengage-chat-drawer--with-panel:has(.gengage-chat-panel--collapsed){width:var(--_gengage-chat-conversation-width);background:var(--surface-elevated,var(--surface-card));box-shadow:var(--_gengage-chat-shadow)}.gengage-chat-drawer--with-panel .gengage-chat-footer{display:none}.gengage-chat-messages{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;flex-direction:column;flex:1;gap:16px;min-height:0;padding:16px;display:flex;overflow-y:auto}.gengage-chat-messages::-webkit-scrollbar{width:6px}.gengage-chat-messages::-webkit-scrollbar-track{background:0 0}.gengage-chat-messages::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--text-muted) 22%, transparent);border-radius:3px}.gengage-chat-messages::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--text-muted) 36%, transparent)}.gengage-chat-bubble--presentation-collapsed{display:none!important}.gengage-chat-former-messages-btn{z-index:2;border-radius:var(--radius-pill);border:1px solid var(--ds-chip-border);background:color-mix(in srgb, var(--surface-card) 96%, transparent);color:var(--text-primary);cursor:pointer;box-shadow:var(--shadow-1);flex-shrink:0;align-self:center;margin-bottom:4px;padding:8px 14px;font-size:13px;font-weight:600;position:sticky;top:0}.gengage-chat-former-messages-btn:hover{background:var(--surface-card-muted)}.gengage-chat-bubble--panel-bookmark{max-width:72%;margin-top:-6px}.gengage-chat-inline-panel-bookmark-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:10px;font-size:11px;font-weight:700}.gengage-chat-inline-panel-bookmark-card{border:1px solid color-mix(in srgb, var(--client-primary) 38%, var(--border-default));background:color-mix(in srgb, var(--surface-card) 94%, transparent);text-align:left;width:100%;color:var(--text-primary);cursor:pointer;box-shadow:var(--shadow-1);border-radius:18px;flex-direction:column;align-items:flex-start;gap:10px;padding:12px;transition:transform .16s,border-color .16s,box-shadow .16s,background-color .16s;display:flex}.gengage-chat-inline-panel-bookmark-card:hover{border-color:color-mix(in srgb, var(--client-primary) 52%, var(--border-default));box-shadow:var(--shadow-2);transform:translateY(-1px)}.gengage-chat-inline-panel-bookmark-card--active{background:color-mix(in srgb, var(--client-primary-subtle) 42%, var(--surface-card))}.gengage-chat-inline-panel-bookmark-previews{gap:8px;display:flex}.gengage-chat-inline-panel-bookmark-preview{background:color-mix(in srgb, var(--surface-card-muted) 70%, var(--surface-card));border:1px solid color-mix(in srgb, var(--border-default) 74%, transparent);border-radius:14px;flex:none;justify-content:center;align-items:center;width:48px;height:48px;display:inline-flex;overflow:hidden}.gengage-chat-inline-panel-bookmark-preview-img{object-fit:cover;width:100%;height:100%;display:block}.gengage-chat-inline-panel-bookmark-preview-fallback{color:var(--text-primary);font-size:13px;font-weight:700}.gengage-chat-inline-panel-bookmark-title{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:700;line-height:1.25;display:-webkit-box;overflow:hidden}.gengage-chat-inline-panel-bookmark-cta{color:var(--client-primary);font-size:13px;font-weight:700}@media (width<=768px){.gengage-chat-bubble--panel-bookmark{display:none!important}}.gengage-chat-bubble{position:relative}@keyframes gengage-chat-msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-bubble--user{max-width:85%}.gengage-chat-bubble--assistant{max-width:85%;margin-left:2px}.gengage-chat-bubble--ui-spec{box-shadow:none;background:0 0;border:none;min-width:0;padding:0}.gengage-chat-bubble--ui-spec-only{max-width:min(85%,420px)}.gengage-chat-bubble-ui-spec{width:100%}.gengage-chat-bubble--active{outline:2px solid var(--ds-message-active-outline);outline-offset:-2px}.gengage-chat-bubble--panel-restore.gengage-chat-bubble--active{outline:none}.gengage-chat-bubble--assistant:empty{display:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a{color:var(--client-primary);text-decoration:underline}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a:hover{text-decoration:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p{margin:0 0 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p:last-child{margin-bottom:0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text ul,.gengage-chat-bubble--assistant .gengage-chat-bubble-text ol{margin:6px 0;padding-left:20px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text li{margin-bottom:6px;line-height:1.5}.gengage-chat-bubble--assistant .gengage-chat-bubble-text code{background:color-mix(in srgb, var(--text-primary) 8%, transparent);border-radius:6px;padding:1px 4px;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text pre{background:color-mix(in srgb, var(--surface-card) 78%, var(--surface-card-soft));border:1px solid var(--border-subtle);border-radius:12px;margin:4px 0;padding:10px 12px;overflow-x:auto}.gengage-chat-bubble--assistant .gengage-chat-bubble-text table{border-collapse:collapse;margin:4px 0;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text th,.gengage-chat-bubble--assistant .gengage-chat-bubble-text td{border:1px solid var(--border-default);padding:4px 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text img{border-radius:12px;max-width:100%;height:auto;margin:4px 0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text h1,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h2,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h3,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h4,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h5,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h6{color:var(--text-primary);margin:8px 0 4px;line-height:1.3}.gengage-chat-bubble--assistant .gengage-chat-bubble-text blockquote{border-left:3px solid var(--border-default);color:var(--text-secondary);margin:4px 0;padding-left:12px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text{overflow-wrap:break-word}.gengage-chat-bubble--photo-analysis{border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));background:linear-gradient(165deg, color-mix(in srgb, var(--surface-card-soft) 80%, white), var(--surface-card))}.gengage-chat-photo-analysis-card{flex-direction:column;gap:10px;display:flex}.gengage-chat-photo-analysis-badge{letter-spacing:.02em;color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 14%, white);border:1px solid color-mix(in srgb, var(--client-primary) 24%, var(--border-default));border-radius:999px;align-self:flex-start;padding:4px 10px;font-size:11px;font-weight:800}.gengage-chat-photo-analysis-body{flex-direction:column;gap:12px;display:flex}.gengage-chat-photo-analysis-summary{color:var(--text-primary);margin:0;font-size:14px;line-height:1.55}.gengage-chat-photo-analysis-highlights{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.gengage-chat-photo-analysis-section{border:1px solid color-mix(in srgb, var(--client-primary) 14%, var(--border-default));background:color-mix(in srgb, var(--surface-card-soft) 78%, white);border-radius:14px;flex-direction:column;gap:8px;padding:12px;display:flex}.gengage-chat-photo-analysis-section--celeb{gap:6px}.gengage-chat-photo-analysis-section-title{letter-spacing:.03em;text-transform:uppercase;color:var(--text-secondary);margin:0;font-size:12px;font-weight:800}.gengage-chat-photo-analysis-section-list{color:var(--text-primary);gap:6px;margin:0;padding-left:18px;font-size:13px;line-height:1.5;display:grid}.gengage-chat-photo-analysis-section-item{margin:0}.gengage-chat-photo-analysis-celeb-name{color:var(--text-primary);margin:0;font-size:15px;font-weight:800;line-height:1.35}.gengage-chat-photo-analysis-celeb-reason{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.5}.gengage-chat-photo-analysis-next{background:color-mix(in srgb, var(--client-primary) 9%, white);color:var(--text-primary);border-radius:12px;margin:0;padding:10px 12px;font-size:13px;font-weight:700;line-height:1.45}.gengage-chat-bubble--first{border-left:1px solid var(--ds-message-assistant-border)}.gengage-chat-bubble--first .gengage-chat-bubble-text{font-size:inherit}@media (width<=768px){.gengage-chat-bubble--assistant .gengage-chat-bubble-text{line-height:1.5}.gengage-chat-bubble--user{word-break:break-word;max-width:calc(100% - 16px)}}.gengage-chat-typing{align-self:flex-start;max-width:85%}.gengage-chat-typing-dots{flex-shrink:0}.gengage-chat-typing-text{flex:1;min-width:0}.gengage-chat-typing--presence{justify-content:flex-start;width:fit-content;max-width:100%}.gengage-chat-panel-loading-status{margin-bottom:16px}.gengage-chat-panel-loading-status.gds-progress-loader-panel{box-sizing:border-box;min-width:0;max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel-loading-status.gds-progress-loader-panel{max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel-loading-status .gengage-chat-panel-loading-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.gengage-chat-offline-bar{color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));background:color-mix(in srgb, var(--warning) 10%, white);border-bottom:1px solid color-mix(in srgb, var(--warning) 22%, var(--border-default));align-items:center;gap:6px;padding:6px 12px;font-size:12px;line-height:1.4;display:none}.gengage-chat-offline-bar--visible{display:flex}.gengage-chat-offline-bar:before{content:"";background:var(--_gengage-rating-color);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.gengage-chat-thinking-steps{flex-direction:column;gap:4px;padding:4px 0;display:flex}.gengage-chat-thinking-step{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;display:flex}.gengage-chat-thinking-step-marker{text-align:center;flex-shrink:0;width:16px;font-size:12px}.gengage-chat-thinking-step-marker--done{color:var(--_gengage-success-color)}.gengage-chat-thinking-step-marker--active{color:var(--ai-accent-start);animation:1.5s ease-in-out infinite gengage-thinking-pulse}@keyframes gengage-thinking-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-thinking-step-text{line-height:1.4}.gengage-chat-error{border-radius:var(--radius-control);background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 84%, var(--text-primary));text-align:center;border:1px solid color-mix(in srgb, var(--error) 22%, var(--border-default));justify-content:center;align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex}.gengage-chat-error-retry{border:1px solid color-mix(in srgb, var(--error) 24%, var(--border-default));border-radius:var(--radius-control);background:var(--surface-card);color:color-mix(in srgb, var(--error) 84%, var(--text-primary));cursor:pointer;flex-shrink:0;padding:4px 12px;font-size:12px;font-weight:500;transition:background .15s,border-color .15s}.gengage-chat-error-retry:hover{background:color-mix(in srgb, var(--error) 8%, white);border-color:color-mix(in srgb, var(--error) 32%, var(--border-default))}.gengage-chat-input-area{border-top:1px solid var(--border-subtle);background:var(--surface-card);z-index:2;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:0;padding:10px 12px 12px;display:flex;position:relative}.gengage-chat-input-pill{--gengage-chat-input-control-size:40px;--gengage-chat-input-shell-pad:6px;--gengage-chat-input-shell-radius:18px;--gengage-chat-input-control-radius:12px;min-width:0;min-height:calc(var(--gengage-chat-input-control-size) + (var(--gengage-chat-input-shell-pad) * 2));background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--gengage-chat-input-shell-radius);padding:var(--gengage-chat-input-shell-pad);box-sizing:border-box;box-shadow:none;flex:1;align-items:center;gap:10px;transition:border-color .2s,box-shadow .2s;display:flex;overflow:visible}.gengage-chat-input-pill:focus-within{border-color:color-mix(in srgb, var(--client-primary) 28%, white);box-shadow:0 0 0 4px var(--client-focus-ring)}.gengage-chat-input{box-sizing:border-box;min-width:0;min-height:40px;max-height:120px;color:var(--_gengage-text-primary);resize:none;background:0 0;border:none;border-radius:0;outline:none;flex:1;padding:11px 0 9px;font-family:inherit;font-size:14px;line-height:1.4;overflow-y:hidden}.gengage-chat-root--mobile .gengage-chat-input-pill{--gengage-chat-input-control-size:44px;--gengage-chat-input-shell-radius:20px;--gengage-chat-input-control-radius:14px;min-height:calc(var(--gengage-chat-input-control-size) + (var(--gengage-chat-input-shell-pad) * 2))}.gengage-chat-root--mobile .gengage-chat-input{white-space:nowrap;min-height:44px;max-height:44px;padding:12px 0 10px;font-size:16px;line-height:1.4;overflow:hidden}.gengage-chat-input::placeholder{color:var(--text-muted);font-size:14px;line-height:inherit}.gengage-chat-send{width:var(--gengage-chat-input-control-size,40px);height:var(--gengage-chat-input-control-size,40px);min-width:var(--gengage-chat-input-control-size,40px);border:1px solid var(--ds-button-primary-border);border-radius:var(--gengage-chat-input-control-radius,12px);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);cursor:pointer;box-shadow:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:0;font-weight:700;transition:background-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s,transform .15s;display:flex;position:relative}.gengage-chat-send:hover{background:var(--ds-button-primary-bg-hover);box-shadow:none;transform:none}.gengage-chat-send:active{box-shadow:none;transform:translateY(0)}.gengage-chat-send svg{width:18px;height:18px}.gengage-chat-send--stop{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));color:var(--text-primary)}.gengage-chat-send--stop:hover{background:color-mix(in srgb, var(--surface-card-soft) 86%, var(--client-primary-subtle));border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));color:var(--client-primary)}.gengage-chat-send-stop-icon{background:currentColor;border-radius:4px;width:12px;height:12px;display:inline-block}.gengage-chat-send--stop:after{content:attr(data-tooltip);background:color-mix(in srgb, var(--surface-shell) 98%, black);border:1px solid color-mix(in srgb, var(--surface-shell) 60%, white);box-shadow:var(--shadow-2);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;z-index:12;border-radius:10px;padding:7px 10px;font-size:12px;font-weight:600;line-height:1.2;transition:opacity .16s;position:absolute;top:50%;right:calc(100% + 10px);transform:translateY(-50%)}@media (hover:hover) and (pointer:fine){.gengage-chat-send--stop:hover:after,.gengage-chat-send--stop:focus-visible:after{opacity:1}}.gengage-chat-send:disabled{background:var(--ds-neutral-200);border-color:var(--ds-neutral-200);opacity:.5;box-shadow:none;cursor:not-allowed}.gengage-chat-footer{text-align:center;color:var(--text-muted);border-top:1px solid var(--border-subtle);background:var(--surface-card);padding:4px 10px;font-size:10px}.gengage-chat-footer-link{max-width:100%;color:inherit;text-underline-offset:.22em;justify-content:center;align-items:center;text-decoration-line:underline;text-decoration-color:#0000;text-decoration-thickness:1.5px;transition:color .2s,text-decoration-color .2s;display:inline-flex}.gengage-chat-footer-link:hover,.gengage-chat-footer-link:focus-visible{color:var(--gengage-chat-footer-link-hover-color,var(--gengage-brand-accent-mid,var(--ai-accent-end,#f768f2)));-webkit-text-decoration-color:var(--gengage-brand-accent-end,#ffed74);text-decoration-color:var(--gengage-brand-accent-end,#ffed74)}@supports ((-webkit-background-clip:text) or (background-clip:text)){.gengage-chat-footer-link:hover,.gengage-chat-footer-link:focus-visible{background-image:linear-gradient(90deg, var(--gengage-brand-accent-start,var(--ai-accent-start,#0b24d6)) 0%, var(--gengage-brand-accent-start,var(--ai-accent-start,#0b24d6)) 42%, var(--gengage-brand-accent-mid,var(--ai-accent-end,#f768f2)) 100%);color:#0000;-webkit-background-clip:text;background-clip:text}}.gengage-chat-uispec{width:100%}.gengage-chat-uispec:empty{display:none}.gengage-chat-uispec>*{animation:.16s cubic-bezier(.2,.7,.2,1) both gengage-chat-widget-enter}@keyframes gengage-chat-widget-enter{0%{opacity:0;transform:translateY(5px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.gengage-chat-action-buttons{flex-wrap:wrap;justify-content:flex-start;gap:8px;padding:6px 0 4px;display:flex}.gengage-chat-action-buttons:after{content:"";flex:1 0 auto}.gengage-chat-action-btn{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-pill,999px);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);cursor:pointer;white-space:nowrap;flex:none;padding:8px 16px;font-family:inherit;font-size:13px;font-weight:700;line-height:1.25;transition:filter .15s,transform .1s}.gengage-chat-action-btn:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-action-btn:active{transform:scale(.97)}.gengage-chat-inline-question-buttons{flex-wrap:wrap;align-items:flex-start;gap:12px;padding:10px 0 4px;display:flex}.gengage-chat-inline-question-btn{border:1px solid var(--ds-chip-border);border-radius:var(--radius-pill);background:var(--ds-chip-bg);max-width:100%;min-height:46px;color:var(--text-primary);text-align:left;white-space:normal;cursor:pointer;flex:0 auto;justify-content:flex-start;padding:11px 18px;font-size:13px;font-weight:700;line-height:1.4;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,transform .15s;box-shadow:0 1px #1118270a}.gengage-chat-inline-question-btn:hover{background:var(--ds-chip-bg-hover);border-color:color-mix(in srgb, var(--client-primary) 16%, var(--ds-chip-border));box-shadow:0 4px 12px #11182714}.gengage-chat-inline-question-btn:active{background:var(--ds-chip-bg-active);border-color:var(--ds-chip-border-active);color:var(--text-primary);transform:translateY(1px);box-shadow:0 1px 4px #1118270f}.gengage-chat-inline-question-icon{color:color-mix(in srgb, var(--client-primary) 38%, var(--text-muted));flex:none;font-size:12px;line-height:1;transform:translateY(-1px)}.gengage-chat-inline-question-label{display:inline}.gengage-chat-root--mobile .gengage-chat-inline-question-buttons{gap:10px}.gengage-chat-root--mobile .gengage-chat-inline-question-btn{width:auto;max-width:min(100%,34rem);padding:12px 16px;font-size:12.5px}.gengage-chat-product-card{border:1px solid var(--ds-card-border);border-radius:var(--ds-card-radius);background:var(--ds-card-bg);width:160px;min-width:160px;max-width:160px;box-shadow:var(--ds-card-shadow);flex-direction:column;transition:transform .1s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.gengage-chat-product-card:hover{box-shadow:var(--ds-card-shadow-hover);transform:translateY(-2px)}.gengage-chat-product-card-img{object-fit:contain;background:var(--surface-card);box-sizing:border-box;width:100%;height:120px;padding:8px;display:block}.gengage-chat-product-card-body{text-align:center;flex-direction:column;flex:1;gap:4px;padding:8px 10px 10px;display:flex}.gengage-chat-product-card-name{color:var(--_gengage-text-primary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;min-height:2.7em;margin-bottom:0;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-product-card-brand{color:var(--text-secondary);font-size:10px}.gengage-chat-product-card-rating{color:var(--_gengage-rating-color);font-size:11px;line-height:1}.gengage-star-half{display:inline-block;position:relative}.gengage-star-half>span{width:.5em;position:absolute;top:0;left:0;overflow:hidden}.gengage-chat-product-card-review-count{color:var(--text-secondary);font-size:10px}.gengage-chat-product-card-price,.gengage-chat-product-card-price-block{color:var(--text-primary);flex-wrap:wrap;justify-content:center;align-items:baseline;gap:2px 6px;font-size:16px;font-weight:800;display:flex}.gengage-chat-product-card-current-price{font:inherit;color:var(--gengage-discounted-price-color,var(--text-primary));font-weight:800}.gengage-chat-product-card-original-price{color:var(--_gengage-text-secondary);margin-right:0;font-size:11px;font-weight:400;text-decoration:line-through}.gengage-chat-campaign-reason{letter-spacing:.02em;background:linear-gradient(90deg, var(--_gengage-campaign-reason-start), var(--_gengage-campaign-reason-end));color:#0000;-webkit-background-clip:text;background-clip:text;max-width:100%;margin:0 0 4px;font-size:11px;font-weight:700;line-height:1.25}@supports not ((-webkit-background-clip:text) or (background-clip:text)){.gengage-chat-campaign-reason,.gengage-chat-campaign-price-badge__reason{color:var(--_gengage-campaign-reason-start);background:0 0}}.gengage-chat-product-card-price-stack{flex-direction:column;align-items:flex-start;width:100%;min-width:0;display:flex}.gengage-chat-product-card-price-row{flex-flow:wrap;align-items:baseline;gap:0 6px;display:flex}.gengage-chat-product-card-price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:.95em;margin:0 1px;display:inline-block}.gengage-chat-product-card-price-block--inline .gengage-chat-product-card-original-price{color:var(--gengage-inline-original-price-color,var(--text-secondary));font-size:16px;font-weight:500;text-decoration:none}.gengage-chat-product-card-price-block--inline .gengage-chat-product-card-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:16px;font-weight:800}.gengage-chat-product-card-meta-row{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:8px;width:100%;min-height:34px;display:flex}.gengage-chat-product-card-meta-row--empty{visibility:hidden}.gengage-chat-product-card-rating-compact{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-secondary);border-radius:999px;flex-shrink:0;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:700;line-height:1.2;display:inline-flex}.gengage-chat-product-card-rating-compact-star{color:color-mix(in srgb, var(--warning) 60%, var(--text-primary));justify-content:center;align-items:center;line-height:0;display:inline-flex}.gengage-chat-product-card-rating-compact-value{font-variant-numeric:tabular-nums;color:var(--text-primary)}.gengage-chat-product-card-img-actions{z-index:4;pointer-events:none;flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute;top:8px;right:8px}.gengage-chat-product-card-img-actions>*{pointer-events:auto}.gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{position:static}.gengage-chat-price-skeleton{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);vertical-align:middle;background-size:200% 100%;border-radius:4px;width:80px;height:16px;animation:1.5s ease-in-out infinite gengage-skeleton-price-pulse;display:inline-block}@keyframes gengage-skeleton-price-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-product-card-cta{text-align:center;color:var(--client-primary);letter-spacing:.01em;border-top:1px solid var(--border-default);cursor:pointer;background:0 0;margin-top:auto;padding:8px 10px;font-size:12px;font-weight:700;text-decoration:none;transition:color .15s,background .15s;display:block}.gengage-chat-product-card-cta:hover{color:var(--client-primary-hover);background:var(--surface-card-soft)}.gengage-chat-product-card-cta:active{background:var(--surface-card-soft)}button.gengage-chat-product-card-cta{appearance:none;font:inherit;box-sizing:border-box;border-bottom:none;border-left:none;border-right:none;width:100%;margin:0}.gengage-chat-panel-restore-card{appearance:none;box-sizing:border-box;font:inherit;border:1px solid color-mix(in srgb, var(--client-primary) 34%, var(--border-default));border-radius:calc(var(--radius-control) + 6px);background:var(--surface-card);width:100%;color:var(--text-primary);text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:12px;margin:0;padding:16px 18px;transition:transform .18s,background .18s,box-shadow .18s,border-color .18s;display:flex}.gengage-chat-panel-restore-card--minimal{gap:10px;padding:14px 16px}.gengage-chat-panel-restore-card:hover{background:color-mix(in srgb, var(--surface-card) 92%, var(--client-primary-subtle) 8%);box-shadow:var(--shadow-2);border-color:color-mix(in srgb, var(--client-primary) 52%, var(--border-default));transform:translateY(-1px)}.gengage-chat-panel-restore-card:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:3px}.gengage-chat-panel-restore-card__eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);font-size:12px;font-weight:800}.gengage-chat-panel-restore-card__previews{gap:10px;display:flex}.gengage-chat-panel-restore-card--minimal .gengage-chat-panel-restore-card__previews{gap:8px}.gengage-chat-panel-restore-card__thumb{border:1px solid var(--border-default);background:var(--surface-card);border-radius:16px;width:58px;height:58px;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff8a}.gengage-chat-panel-restore-card__thumb img{object-fit:cover;width:100%;height:100%;display:block}.gengage-chat-panel-restore-card__title{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:18px;font-weight:700;line-height:1.24;display:-webkit-box;overflow:hidden}.gengage-chat-panel-restore-card__cta{color:var(--client-primary);font-size:15px;font-weight:700}.gengage-chat-panel-restore-card--minimal .gengage-chat-panel-restore-card__cta{letter-spacing:.01em;font-size:14px}.gengage-chat-root--mobile .gengage-chat-panel-restore-card{-webkit-tap-highlight-color:transparent;padding:14px 16px}.gengage-chat-root--mobile .gengage-chat-panel-restore-card__thumb{border-radius:14px;width:52px;height:52px}.gengage-chat-root--mobile .gengage-chat-bubble--active{outline:none}.gengage-chat-product-summary{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);cursor:pointer;flex-wrap:wrap;align-items:center;gap:12px;margin:4px 0;padding:10px 12px;transition:background .15s,box-shadow .15s,border-color .15s;display:flex}.gengage-chat-product-summary:hover{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-1)}.gengage-chat-product-summary__image{border-radius:var(--radius-control);border:1px solid var(--border-subtle);background:var(--surface-card-soft);flex-shrink:0;width:64px;height:64px;overflow:hidden}.gengage-chat-product-summary__image img{object-fit:cover;width:100%;height:100%;display:block}.gengage-chat-product-summary__content{flex-direction:column;flex:180px;gap:2px;min-width:0;display:flex}.gengage-chat-product-summary__name{color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;font-size:13px;font-weight:500;line-height:1.3;display:-webkit-box;overflow:hidden}.gengage-chat-product-summary__rating{color:var(--_gengage-rating-color);font-size:11px;line-height:1}.gengage-chat-product-summary__review-count{color:var(--text-secondary);font-size:11px}.gengage-chat-product-summary__price{color:var(--text-primary);margin-top:2px;font-size:13px;font-weight:600;line-height:1}.gengage-chat-product-summary__price-original{color:var(--_gengage-text-secondary);font-size:11px;font-weight:400;text-decoration:line-through}.gengage-chat-product-summary__price-current{color:var(--gengage-discounted-price-color,var(--text-primary))}.gengage-chat-product-summary__price-stack{flex-direction:column;align-items:flex-start;gap:2px;margin-top:2px;display:flex}.gengage-chat-product-summary__price-stack .gengage-chat-campaign-reason{font-size:11px;font-weight:700}.gengage-chat-product-summary__price--inline{flex-flow:wrap;align-items:baseline;gap:0 6px;display:flex}.gengage-chat-product-summary__price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:.9em;margin:0 1px;display:inline-block}.gengage-chat-product-summary__price--inline .gengage-chat-product-summary__price-original{color:var(--gengage-inline-original-price-color,var(--text-secondary));font-size:13px;font-weight:500;text-decoration:none}.gengage-chat-product-summary__price--inline .gengage-chat-product-summary__price-current{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:13px;font-weight:700}.gengage-chat-product-summary__cta{color:var(--client-primary);border-radius:var(--radius-pill);background:var(--client-primary-subtle);white-space:nowrap;flex-shrink:0;margin-left:auto;padding:4px 10px;font-size:12px;font-weight:600;text-decoration:none;transition:background .15s,color .15s}.gengage-chat-product-summary__cta:hover{background:var(--client-primary-soft)}.gengage-chat-product-summary__cta:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}button.gengage-chat-product-summary__cta{cursor:pointer;font:inherit;border:none}.gengage-chat-product-grid{-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity;gap:12px;min-height:180px;padding:8px 16px 8px 0;display:flex;overflow-x:auto}.gengage-chat-product-grid>*{scroll-snap-align:start;flex:none}.gengage-chat-product-grid::-webkit-scrollbar{display:none}.gengage-chat-product-grid--pending{filter:blur(3px)saturate(.85);opacity:.75;pointer-events:none;transition:filter .16s ease-out,opacity .16s ease-out;position:relative}.gengage-chat-product-grid--pending:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000 0%,#ffffff59 50%,#0000 100%);animation:1.2s ease-in-out infinite gengage-chat-product-grid-shimmer;position:absolute;inset:0;transform:translate(-100%)}@keyframes gengage-chat-product-grid-shimmer{to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.gengage-chat-product-grid--pending:after{animation:none}}.gengage-chat-review-highlights{padding:4px 0 8px}.gengage-chat-review-empty{color:var(--_gengage-text-secondary);font-size:12px}.gengage-chat-review-subjects-heading{color:var(--text-primary);margin-bottom:10px;font-size:14px;font-weight:700}.gengage-chat-review-subjects{margin-bottom:12px}.gengage-chat-review-subject{color:var(--text-primary);box-shadow:none;gap:6px;padding:7px 11px;font-size:13px;font-weight:600;line-height:1.2}.gengage-chat-review-subject--active{border-color:var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active)}.gengage-chat-review-subject-icon{flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;display:inline-flex}.gengage-chat-review-subject-icon svg{width:14px;height:14px;display:block}.gengage-chat-review-subject[data-tone=positive] .gengage-chat-review-subject-icon{color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-review-subject[data-tone=negative] .gengage-chat-review-subject-icon{color:color-mix(in srgb, var(--error) 84%, var(--text-primary))}.gengage-chat-review-subject[data-tone=neutral] .gengage-chat-review-subject-icon{color:var(--text-secondary)}.gengage-chat-review-subject-label{color:inherit}.gengage-chat-review-subject-count{color:var(--text-secondary);font-size:12px;font-weight:700}.gengage-chat-review-detail{padding:12px}.gengage-chat-review-detail-meta{flex-wrap:wrap;align-items:baseline;gap:10px 16px;margin-bottom:10px;display:flex}.gengage-chat-review-detail-mentions{color:var(--_gengage-text-primary);font-size:13px;font-weight:700}.gengage-chat-review-detail-positive{color:var(--_gengage-success-color);font-size:13px;font-weight:700}.gengage-chat-review-detail-negative{color:var(--error);font-size:13px;font-weight:700}.gengage-chat-review-snippets{gap:10px;display:grid}.gengage-chat-review-snippet{border:1px solid var(--border-subtle);border-left:3px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card-soft);padding:8px 10px}.gengage-chat-review-snippet[data-tone=positive]{border-left-color:color-mix(in srgb, var(--success) 40%, var(--border-default))}.gengage-chat-review-snippet[data-tone=negative]{border-left-color:color-mix(in srgb, var(--error) 40%, var(--border-default))}.gengage-chat-review-snippet-text{color:var(--_gengage-text-primary);font-size:13px;line-height:1.4}.gengage-chat-review-snippet-rating{color:var(--text-secondary);margin-top:4px;font-size:12px;font-weight:700}.gengage-chat-favorites-page{padding:12px}.gengage-chat-favorites-empty{text-align:center;color:var(--_gengage-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;display:flex}.gengage-chat-favorites-empty-icon{opacity:.25;color:var(--error)}.gengage-chat-favorites-empty p{margin:0;font-size:13px;line-height:1.5}.gengage-chat-favorites-list{flex-direction:column;gap:10px;display:flex}.gengage-chat-favorites-card{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);box-shadow:var(--shadow-1);align-items:center;gap:12px;padding:10px 12px;transition:opacity .2s,transform .2s,box-shadow .2s,border-color .2s;display:flex;position:relative}.gengage-chat-favorites-card:hover{border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-1)}.gengage-chat-favorites-card--removing{opacity:0;transform:translate(8px)}.gengage-chat-favorites-card__image{border-radius:var(--radius-control);background:var(--surface-card-muted);flex-shrink:0;width:56px;height:56px;overflow:hidden}.gengage-chat-favorites-card__image img{object-fit:contain;width:100%;height:100%}.gengage-chat-favorites-card__info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.gengage-chat-favorites-card__name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.gengage-chat-favorites-card__price{color:var(--client-primary);font-size:13px;font-weight:700}.gengage-chat-favorites-remove{border-radius:var(--radius-pill);width:28px;height:28px;color:var(--error);cursor:pointer;opacity:.7;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .15s,background .15s;display:inline-flex}.gengage-chat-favorites-remove:hover{opacity:1;background:color-mix(in srgb, var(--error) 10%, white)}.gengage-chat-history-page{flex-direction:column;gap:12px;padding:12px;display:flex}.gengage-chat-history-actions{display:flex}.gengage-chat-history-new-chat{border:1px solid color-mix(in srgb, var(--client-primary) 20%, var(--border-default));border-radius:var(--radius-control);background:color-mix(in srgb, var(--client-primary) 9%, white);width:100%;min-height:42px;color:var(--client-primary);cursor:pointer;padding:0 14px;font-size:13px;font-weight:700;transition:background .15s,border-color .15s,transform .15s}.gengage-chat-history-new-chat:hover{background:color-mix(in srgb, var(--client-primary) 14%, white);border-color:color-mix(in srgb, var(--client-primary) 28%, var(--border-default))}.gengage-chat-history-list{flex-direction:column;gap:10px;display:flex}.gengage-chat-history-item{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);box-shadow:var(--shadow-1);align-items:stretch;gap:8px;padding:0;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.gengage-chat-history-item:hover{border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default))}.gengage-chat-history-item--active{border-color:color-mix(in srgb, var(--client-primary) 28%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 6%, var(--surface-card))}.gengage-chat-history-open{min-width:0;color:var(--text-primary);text-align:left;cursor:pointer;background:0 0;border:none;flex:1;padding:12px 14px}.gengage-chat-history-item-title-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.gengage-chat-history-item-title{min-width:0;color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:700;overflow:hidden}.gengage-chat-history-item-meta{color:var(--text-muted);flex-shrink:0;font-size:11px;font-weight:600}.gengage-chat-history-item-preview{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 0;font-size:12px;line-height:1.45;display:-webkit-box;overflow:hidden}.gengage-chat-history-delete{border:none;border-left:1px solid color-mix(in srgb, var(--border-default) 84%, transparent);border-top-right-radius:inherit;border-bottom-right-radius:inherit;width:38px;min-width:38px;color:var(--text-muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.gengage-chat-history-delete:hover{background:color-mix(in srgb, var(--error) 10%, white);color:var(--error)}.gengage-chat-history-empty{text-align:center;color:var(--_gengage-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;display:flex}.gengage-chat-history-empty-icon{opacity:.25;color:var(--client-primary)}.gengage-chat-history-empty p{margin:0;font-size:13px;line-height:1.5}.gengage-chat-divider{border:none;border-top:1px solid var(--_gengage-border-color);margin:8px 0}.gengage-chat-divider-wrapper{align-items:center;gap:8px;margin:8px 0;display:flex}.gengage-chat-divider-wrapper hr{border:none;border-top:1px solid var(--_gengage-border-color);flex:1;margin:0}.gengage-chat-divider-label{color:var(--text-muted);white-space:nowrap;font-size:11px}.gengage-chat--overlay .gengage-chat-drawer{border-radius:0;width:100%;max-width:480px;max-height:100%;margin:0 auto;animation:.24s cubic-bezier(.2,.72,.2,1) gengage-chat-overlay-in;position:fixed;inset:0}@keyframes gengage-chat-overlay-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-panel-skeleton{box-sizing:border-box;flex-direction:column;gap:14px;min-width:0;max-width:100%;padding:6px 0;display:flex}.gengage-chat-panel-skeleton-block{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);background-size:200% 100%;border-radius:10px;height:110px;animation:1.4s infinite gengage-panel-shimmer}@keyframes gengage-panel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-panel-skeleton-block--image{border-radius:8px;height:200px;margin-bottom:12px}.gengage-chat-panel-skeleton-block--text{border-radius:4px;height:16px;margin-bottom:8px}.gengage-chat-panel-skeleton-block--text:nth-child(3){width:80%}.gengage-chat-panel-skeleton-block--text:nth-child(4){width:60%}.gengage-chat-panel-skeleton-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.gengage-chat-panel-skeleton-block--card{border-radius:8px;height:120px}.gengage-chat-panel-skeleton--comparison{gap:0;padding:0}.gengage-chat-panel-skeleton--comparison .gengage-chat-panel-loading-status{margin:0;padding:16px 16px 0}.gengage-chat-comparison--skeleton{pointer-events:none;box-sizing:border-box;width:100%}.gengage-chat-comparison-skeleton-shimmer{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);background-size:200% 100%;animation:1.4s infinite gengage-panel-shimmer}.gengage-chat-comparison-skeleton-rec-label{border-radius:4px;width:132px;height:12px;margin-bottom:12px}.gengage-chat-comparison-skeleton-rec-img{border-radius:8px;flex-shrink:0;width:80px;height:80px}.gengage-chat-comparison-skeleton-rec-title{border-radius:4px;max-width:100%;height:14px;margin-bottom:6px}.gengage-chat-comparison-skeleton-rec-title--short{width:72%;margin-bottom:8px}.gengage-chat-comparison-skeleton-rec-price{border-radius:4px;width:112px;height:18px}.gengage-chat-comparison-skeleton-hl-label{border-radius:4px;width:96px;height:12px;margin-bottom:6px}.gengage-chat-comparison-skeleton-hl-list{margin:0;padding-left:18px;list-style:none}.gengage-chat-comparison-skeleton-hl-list li{margin-bottom:8px}.gengage-chat-comparison-skeleton-hl-list li:last-child{margin-bottom:0}.gengage-chat-comparison-skeleton-hl-line{border-radius:4px;width:100%;height:13px}.gengage-chat-comparison-skeleton-hl-line--medium{width:92%}.gengage-chat-comparison-skeleton-hl-line--short{width:78%}.gengage-chat-comparison-skeleton-kd-heading{border-radius:4px;width:42%;height:14px;margin:0 0 8px}.gengage-chat-comparison-skeleton-kd-line{border-radius:4px;max-width:100%;height:13px;margin-bottom:8px}.gengage-chat-comparison-skeleton-kd-line:last-child{margin-bottom:0}.gengage-chat-comparison-skeleton-kd-line:nth-child(odd){width:100%}.gengage-chat-comparison-skeleton-kd-line:nth-child(2n){width:90%}.gengage-chat-comparison-special--skeleton{cursor:default;align-items:center;min-height:44px;display:flex}.gengage-chat-comparison-skeleton-special-line{border-radius:4px;width:56%;max-width:280px;height:14px}.gengage-chat-comparison-skeleton-table-wrap{border:1px solid var(--border-default);background:var(--surface-card);-webkit-overflow-scrolling:touch;border-radius:8px;margin-top:12px;overflow-x:auto}.gengage-chat-comparison-skeleton-table-head,.gengage-chat-comparison-skeleton-table-row{grid-template-columns:72px repeat(3,minmax(0,1fr));align-items:start;gap:8px;padding:10px 12px;display:grid}.gengage-chat-comparison-skeleton-table-head{border-bottom:1px solid var(--_gengage-surface-muted);background:var(--_gengage-surface-muted)}.gengage-chat-comparison-skeleton-table-corner{min-height:92px}.gengage-chat-comparison-skeleton-table-col{text-align:center;flex-direction:column;align-items:center;gap:6px;min-width:0;display:flex}.gengage-chat-comparison-skeleton-table-th-img{border-radius:6px;flex-shrink:0;width:60px;height:60px}.gengage-chat-comparison-skeleton-table-th-name{border-radius:3px;width:100%;max-width:100%;height:11px}.gengage-chat-comparison-skeleton-table-th-price{border-radius:3px;width:64%;height:13px}.gengage-chat-comparison-skeleton-table-row{border-bottom:1px solid var(--_gengage-surface-muted)}.gengage-chat-comparison-skeleton-table-row:last-child{border-bottom:none}.gengage-chat-comparison-skeleton-table-label{border-radius:3px;align-self:center;width:100%;max-width:56px;height:12px}.gengage-chat-comparison-skeleton-table-cell{border-radius:3px;width:100%;height:14px}.gengage-chat-panel-skeleton-block--row{border-radius:4px;height:32px;margin-bottom:4px}.gengage-chat-panel .gengage-chat-product-card{border-radius:var(--radius-card);border:1px solid var(--border-default);width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-1);background:var(--surface-card);flex-direction:column;padding:0;display:flex;overflow:hidden}.gengage-chat-panel .gengage-chat-product-card:hover{box-shadow:var(--shadow-2);border-color:var(--border-strong);transform:translateY(-2px)}.gengage-chat-panel .gengage-chat-product-card-img-actions{gap:6px;top:10px;right:10px}.gengage-chat-panel .gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-panel .gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{border-radius:8px;width:28px;height:28px}.gengage-chat-panel .gengage-chat-product-card-discount-badge{border-radius:var(--radius-pill);background:var(--client-primary);min-width:36px;height:36px;color:var(--client-on-primary);box-shadow:var(--shadow-1);justify-content:center;align-items:center;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex;top:10px;left:10px}.gengage-chat-panel .gengage-chat-product-card-brand{display:none}.gengage-chat-panel .gengage-chat-product-grid{grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:12px;min-height:auto;padding:4px 0;display:grid;overflow-x:visible}.gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--consulting-groups{grid-template-columns:repeat(auto-fit,minmax(200px,240px));justify-content:start}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--consulting-groups.gengage-chat-product-grid--mobile{grid-template-columns:1fr}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--mobile{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-height:auto;padding:6px 0 10px;display:grid;overflow-x:visible}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--mobile .gengage-chat-product-card{box-sizing:border-box;width:100%;min-width:0;max-width:none}.gengage-chat-panel .gengage-chat-product-card-img-wrapper{aspect-ratio:1;background:var(--surface-card-muted);border-radius:var(--radius-card) var(--radius-card) 0 0;flex-shrink:0;width:100%;position:relative;overflow:hidden}.gengage-chat-panel .gengage-chat-product-card-img{border-radius:inherit;object-fit:cover;object-position:center;box-sizing:border-box;background:0 0;width:100%;height:100%;min-height:0;padding:0;display:block}.gengage-chat-panel .gengage-chat-product-card-body{text-align:left;gap:8px;padding:12px 14px 10px}.gengage-chat-panel .gengage-chat-product-card-meta-row{align-items:center;min-height:38px;margin-bottom:0}.gengage-chat-panel .gengage-chat-product-card-price,.gengage-chat-panel .gengage-chat-product-card-price-block{color:var(--text-primary);justify-content:flex-start;font-size:15px;font-weight:600}.gengage-chat-panel .gengage-chat-product-card-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:15px;font-weight:600}.gengage-chat-panel .gengage-chat-product-card-original-price{color:var(--text-muted);font-size:12px;font-weight:400}.gengage-chat-panel .gengage-chat-product-card-rating-compact{font-size:11px;font-weight:700}.gengage-chat-panel .gengage-chat-product-card-rating-compact-star{color:color-mix(in srgb, var(--warning) 58%, var(--text-primary))}.gengage-chat-panel .gengage-chat-product-card-name{min-height:0;color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;margin:0 0 2px;font-size:14px;font-weight:600;line-height:1.35}.gengage-chat-panel .gengage-chat-product-card-buy-footer{flex-shrink:0;min-width:0;margin-top:auto;padding:0 14px 16px;display:flex;position:relative}.gengage-chat-panel .gengage-chat-product-card-buy-trigger{box-sizing:border-box;border:1.5px solid var(--client-primary);background:var(--surface-card);width:100%;min-width:0;min-height:42px;color:var(--client-primary);white-space:nowrap;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;margin:0;padding:9px 14px;font-family:inherit;font-size:13px;font-weight:600;line-height:1.2;transition:background .15s,box-shadow .15s;display:flex}.gengage-chat-panel .gengage-chat-product-card-buy-trigger:hover{background:color-mix(in srgb, var(--client-primary) 6%, white);box-shadow:var(--shadow-1)}.gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta{border:1.5px solid var(--client-primary);background:var(--surface-card);width:calc(100% - 28px);min-width:0;color:var(--client-primary);box-sizing:border-box;border-radius:12px;justify-content:center;align-items:center;min-height:42px;margin:0 14px 16px;padding:9px 14px;font-size:13px;font-weight:600;display:flex}.gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta:hover{background:color-mix(in srgb, var(--client-primary) 6%, white)}.gengage-chat-product-card--selected{border-color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, transparent);box-shadow:0 0 0 1px var(--client-primary)}.gengage-chat-panel--visible{min-height:0}.gengage-chat-panel--visible>*{flex-shrink:0}.gengage-chat-load-more-btn{border:1px solid var(--border-default);color:var(--client-primary);cursor:pointer;background:0 0;border-radius:8px;margin:12px auto;padding:8px 24px;font-size:14px;display:block}.gengage-chat-load-more-btn:hover{background:var(--surface-card-muted)}.gengage-chat-product-details-panel{background:var(--surface-card);border:1px solid var(--border-default);box-sizing:border-box;border-radius:16px;flex-direction:column;gap:12px;width:100%;padding:14px;display:flex}.gengage-chat-product-details-media{border:1px solid var(--border-subtle);background:var(--surface-card-muted);border-radius:12px;flex-direction:column;align-items:center;padding:12px;display:flex}.gengage-chat-product-details-img{object-fit:contain;border-radius:8px;width:100%;height:auto;max-height:300px}.gengage-chat-product-details-content{flex-direction:column;gap:8px;min-width:0;display:flex}.gengage-chat-product-details-title{color:var(--text-primary);margin:0;font-size:17px;font-weight:700;line-height:1.3}.gengage-chat-product-details-rating{background:color-mix(in srgb, var(--warning) 10%, white);width:fit-content;color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));border-radius:999px;align-items:center;gap:4px;padding:3px 8px;font-size:13px;font-weight:700;display:inline-flex}.gengage-chat-product-details-review-count{color:color-mix(in srgb, var(--warning) 84%, var(--text-primary));font-weight:600}.gengage-chat-product-details-price{align-items:baseline;gap:6px;display:flex}.gengage-chat-product-details-original-price{color:var(--text-secondary);font-size:14px;text-decoration:line-through}.gengage-chat-product-details-price-stack{flex-direction:column;align-items:flex-start;gap:2px;width:100%;display:flex}.gengage-chat-product-details-price-stack .gengage-chat-campaign-reason{margin-bottom:2px;font-size:13px;font-weight:600}.gengage-chat-product-details-price--inline{flex-wrap:nowrap;align-items:baseline}.gengage-chat-product-details-price--inline .gengage-chat-product-details-price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:1em;margin:0 4px;display:inline-block}.gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price{color:var(--text-secondary);order:0;font-size:22px;font-weight:500;text-decoration:none}.gengage-chat-product-details-price--inline .gengage-chat-product-details-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));order:0;font-size:22px;font-weight:800}.gengage-chat-product-details-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:22px;font-weight:800;line-height:1.1}.gengage-chat-product-details-stock{border-radius:999px;width:fit-content;padding:4px 10px;font-size:12px;font-weight:700}.gengage-chat-product-details-stock.is-in-stock{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-product-details-stock.is-out-of-stock{background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 82%, var(--text-primary))}.gengage-chat-product-details-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.gengage-chat-product-details-cta{border-radius:var(--radius-control,12px);border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);min-height:40px;color:var(--ds-button-primary-fg);cursor:pointer;justify-content:center;align-items:center;padding:0 20px;font-size:14px;font-weight:700;text-decoration:none;transition:filter .14s,transform .12s;display:inline-flex}.gengage-chat-product-details-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-product-details-cta:active{background:var(--ds-button-primary-bg-active)}.gengage-chat-product-details-atc{border-radius:var(--radius-control);background:var(--_gengage-success-color);color:var(--client-on-primary);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:700;transition:filter .12s,transform .12s;display:inline-flex}.gengage-chat-product-details-atc:hover{filter:brightness(1.08);transform:translateY(-1px)}.gengage-chat-product-details-atc:active{transform:translateY(1px)}.gengage-chat-product-detail-tabs{border-top:1px solid var(--border-default);margin-top:4px;padding-top:12px}.gengage-chat-product-detail-tab-bar{border-bottom:1px solid var(--border-default);gap:6px;margin-bottom:12px;padding-bottom:8px;display:flex}.gengage-chat-product-detail-tab{border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;flex:1;padding:8px 12px;font-family:inherit;font-size:13px;font-weight:600;transition:color .15s,border-color .15s,background .15s}.gengage-chat-product-detail-tab:hover{color:var(--text-primary);background:color-mix(in srgb, var(--surface-card-soft) 82%, transparent)}.gengage-chat-product-detail-tab--active{color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-product-detail-tab-panel{color:var(--text-secondary);font-size:13px;line-height:1.6}.gengage-chat-product-description{color:var(--text-primary);flex-direction:column;gap:10px;display:flex}.gengage-chat-product-description p,.gengage-chat-product-description h2,.gengage-chat-product-description h3,.gengage-chat-product-description h4,.gengage-chat-product-description ul,.gengage-chat-product-description ol{margin:0}.gengage-chat-product-description h2,.gengage-chat-product-description h3,.gengage-chat-product-description h4{color:var(--text-primary);font-size:15px;font-weight:800;line-height:1.35}.gengage-chat-product-description ul,.gengage-chat-product-description ol{padding-left:20px}.gengage-chat-product-description li+li{margin-top:6px}.gengage-chat-product-description strong,.gengage-chat-product-description b{font-weight:800}.gengage-chat-product-specs-table{border-collapse:collapse;width:100%;font-size:13px}.gengage-chat-product-specs-table tr:nth-child(2n){background:var(--surface-card-muted)}.gengage-chat-product-specs-key{color:var(--text-secondary);white-space:nowrap;border-bottom:1px solid var(--border-subtle);width:40%;padding:6px 10px;font-weight:600}.gengage-chat-product-specs-value{color:var(--text-primary);border-bottom:1px solid var(--border-subtle);padding:6px 10px}.gengage-chat-product-card-atc{opacity:0;z-index:1;transition:opacity .15s;position:absolute;bottom:42px;right:6px}.gengage-chat-product-card:hover .gengage-chat-product-card-atc{opacity:1}@media (hover:none),(pointer:coarse){.gengage-chat-product-card-atc{opacity:1;width:100%;margin:0;display:flex;position:relative;bottom:auto;right:auto}}.gengage-chat-drawer.gengage-chat-drawer--hidden{opacity:0;pointer-events:none;box-shadow:none;visibility:hidden;transform:translate(100%)}.gengage-chat-root--mobile .gengage-chat-drawer.gengage-chat-drawer--hidden{opacity:0;pointer-events:none;box-shadow:none;visibility:hidden;transform:translateY(100%)}@media (width<=900px){.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:clamp(280px, calc(100vw - var(--_gengage-chat-conversation-width)), 560px);max-width:560px}}.gengage-chat-attachment-preview{background:var(--surface-card-muted);border:1px solid var(--border-default);box-sizing:border-box;border-radius:8px;align-items:center;gap:8px;width:100%;padding:6px 10px;display:flex}.gengage-chat-attachment-preview--hidden{display:none}.gengage-chat-attachment-preview-thumb{object-fit:cover;border-radius:4px;flex-shrink:0;width:40px;height:40px}.gengage-chat-attachment-name{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.gengage-chat-attachment-remove{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:18px;line-height:1}.gengage-chat-attachment-remove:hover{color:var(--error)}.gengage-chat-attach-btn{background:var(--surface-card-soft);border:1px solid var(--border-default);cursor:pointer;width:var(--gengage-chat-input-control-size,40px);height:var(--gengage-chat-input-control-size,40px);border-radius:var(--gengage-chat-input-control-radius,12px);color:var(--text-primary);flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,background .15s,border-color .15s;display:flex}.gengage-chat-attach-btn:hover{color:var(--client-primary);background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-attach-btn svg{width:20px;height:20px}.gengage-chat-attach-wrap{flex-shrink:0;align-items:center;display:flex;position:relative}.gengage-chat-attach-menu{z-index:50;background:var(--surface-elevated);border:1px solid var(--border-default);border-radius:var(--radius-card);min-width:196px;box-shadow:var(--shadow-3);margin:0;padding:4px 0;list-style:none;position:absolute;bottom:calc(100% + 8px);left:0}.gengage-chat-attach-menu[hidden]{display:none!important}.gengage-chat-attach-menu-item{cursor:pointer;width:100%;color:var(--text-primary);text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:10px 14px;font-family:inherit;font-size:14px;font-weight:500;transition:background .12s;display:flex}.gengage-chat-attach-menu-item:hover{background:var(--surface-card-muted)}.gengage-chat-attach-menu-icon{color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-attach-menu-label{flex:1;min-width:0}.gengage-chat-attach-menu-sep{background:var(--border-default);height:1px;margin:4px 10px}.gengage-chat-mic-btn{cursor:pointer;border-radius:var(--radius-control);width:32px;height:32px;color:var(--text-secondary);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,background .15s;display:flex}.gengage-chat-mic-btn:hover{color:var(--text-primary);background:var(--surface-card-muted);border-color:var(--border-default)}.gengage-chat-mic-btn svg{width:20px;height:20px}.gengage-chat-mic-btn--active{color:var(--error);animation:1.2s ease-in-out infinite gengage-mic-pulse}.gengage-chat-mic-btn--active:hover{color:color-mix(in srgb, var(--error) 84%, black)}@keyframes gengage-mic-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.15)}}.gengage-chat-input-area--dragover{outline:2px dashed var(--client-primary);outline-offset:-2px;background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-attachment-thumb{border-radius:8px;width:120px;max-width:100%;height:auto;margin-bottom:6px;display:block}.gengage-chat-root--mobile .gengage-chat-header-btn,.gengage-chat-root--mobile .gengage-chat-close{border-radius:12px;width:44px;height:44px}@media (width<=374px){.gengage-chat-root--mobile .gengage-chat-header-btn{width:34px;min-width:34px;height:34px;min-height:34px}}.gengage-chat-root--mobile .gengage-chat-attach-btn,.gengage-chat-root--mobile .gengage-chat-mic-btn,.gengage-chat-root--mobile .gengage-chat-send{width:var(--gengage-chat-input-control-size,44px);height:var(--gengage-chat-input-control-size,44px);min-width:var(--gengage-chat-input-control-size,44px);border-radius:var(--gengage-chat-input-control-radius,14px)}.gengage-chat-root--mobile .gengage-chat-attach-btn svg,.gengage-chat-root--mobile .gengage-chat-mic-btn svg{width:22px;height:22px}.gengage-chat-root--mobile .gengage-chat-panel-divider{cursor:ns-resize;touch-action:pan-y;background:0 0;justify-content:center;align-items:center;width:100%;height:20px;display:flex;position:relative;overflow:visible}.gengage-chat-root--mobile .gengage-chat-panel-divider--hidden{display:none}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel{border-radius:0;width:100%;left:0;right:0}.gengage-chat-root--mobile .gengage-chat-panel{z-index:10;width:100%;min-width:0;max-width:none;max-height:none;box-shadow:none;background:var(--gengage-chat-panel-bg,var(--surface-card));pointer-events:none;border:none;border-radius:0;flex-direction:column;padding:0 12px 16px;transition:transform .32s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;inset:0;overflow-y:auto;transform:translate(100%)}.gengage-chat-root--mobile .gengage-chat-panel--visible{pointer-events:auto;transform:translate(0)}.gengage-chat-root--mobile .gengage-chat-panel-divider,.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-panel-divider{display:none}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-body{flex-direction:row}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-conversation{border-left:none;flex:1;width:100%}.gengage-chat-root--mobile .gengage-chat-product-details-share{width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-footer,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-cta{box-sizing:border-box;width:100%;max-width:100%}.gengage-chat-root--mobile .gengage-chat-product-details-panel{gap:8px;padding:10px}.gengage-chat-root--mobile .gengage-chat-product-details-media{min-height:0;padding:8px}.gengage-chat-root--mobile .gengage-chat-product-details-content{gap:6px}.gengage-chat-root--mobile .gengage-chat-product-details-title{font-size:14px;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-product-details-rating{padding:2px 6px;font-size:12px}.gengage-chat-root--mobile .gengage-chat-product-details-original-price{font-size:12px}.gengage-chat-root--mobile .gengage-chat-product-details-current-price,.gengage-chat-root--mobile .gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price,.gengage-chat-root--mobile .gengage-chat-product-details-price--inline .gengage-chat-product-details-current-price{font-size:18px}.gengage-chat-root--mobile .gengage-chat-product-details-actions{gap:6px;margin-top:2px}.gengage-chat-root--mobile .gengage-chat-product-details-cta{min-height:38px;padding:0 14px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-product-grid:not(.gengage-chat-product-grid--mobile){scroll-snap-type:x mandatory}.gengage-chat-root--mobile .gengage-chat-product-grid.gengage-chat-product-grid--mobile{scroll-snap-type:none}.gengage-chat-root--mobile .gengage-chat-product-card{box-sizing:border-box;scroll-snap-align:center;width:280px;min-width:280px;max-width:100%}.gengage-chat-root--mobile .gengage-chat-product-grid--mobile .gengage-chat-product-card{scroll-snap-align:start;width:100%;min-width:0;max-width:none}.gengage-chat-root--mobile .gengage-chat-product-card-img-wrapper{justify-content:center;align-items:center;min-height:0;display:flex}.gengage-chat-root--mobile .gengage-chat-product-card-img{object-fit:contain;object-position:center;width:auto;max-width:100%;height:auto;min-height:0;max-height:180px;display:block}.gengage-chat-root--mobile .gengage-chat-product-card-discount-badge{padding:2px 6px;font-size:10px;font-weight:700;line-height:1.2}.gengage-chat-root--mobile .gengage-chat-drawer{border-radius:0;width:100%;max-height:100%;position:fixed;inset:0}.gengage-chat-root--mobile .gengage-chat-bubble{max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-img-wrapper{aspect-ratio:1;justify-content:center;align-items:center;min-height:0;display:flex}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-img{object-fit:contain;object-position:center;width:auto;max-width:100%;height:auto;min-height:0;max-height:min(200px,72%)}.gengage-chat-root--mobile .gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-root--mobile .gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{flex-shrink:0;width:28px;min-width:28px;height:28px;min-height:28px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-discount-badge{min-width:28px;height:28px;padding:0 6px;font-size:10px;font-weight:700}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-footer{padding:0 12px 14px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-trigger{box-sizing:border-box;white-space:normal;text-align:center;-webkit-hyphens:auto;hyphens:auto;min-width:0;max-width:100%;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta{box-sizing:border-box;white-space:normal;width:calc(100% - 24px);min-width:0;max-width:calc(100% - 24px);margin-left:12px;margin-right:12px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-rating-compact{gap:3px;padding:2px 6px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-stock{padding:2px 5px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-messages{scrollbar-width:none;padding:12px 16px}.gengage-chat-root--mobile .gengage-chat-messages::-webkit-scrollbar{display:none}.gengage-chat-root--mobile .gengage-chat-drawer{border-top:none}.gengage-chat-root--mobile .gengage-chat-header{border-radius:16px 16px 0 0;min-height:72px;padding-top:22px;padding-bottom:8px}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-header{border-radius:0}.gengage-chat-root--mobile .gengage-chat-conversation{-webkit-overflow-scrolling:touch;min-height:0;overflow-y:auto}.gengage-chat-root--mobile .gengage-chat-product-details-img{object-fit:contain;min-height:0;max-height:200px}.gengage-chat-root--mobile .gengage-chat-product-details-actions{flex-wrap:wrap;gap:8px}.gengage-chat-root--mobile .gengage-chat-product-details-promos{flex-wrap:wrap;gap:4px}.gengage-chat-root--mobile .gengage-chat-input::placeholder{font-size:13px;line-height:inherit}.gengage-chat-kvkk-banner{color:var(--text-secondary);background:0 0;border:none;padding:14px 32px 10px;font-size:13px;line-height:1.55}.gengage-chat-kvkk-content{min-width:0}.gengage-chat-kvkk-content p{margin:0}.gengage-chat-kvkk-content a{color:inherit;margin-top:8px;text-decoration:underline;display:inline-block}.gengage-chat-comparison{box-sizing:border-box;flex-direction:column;gap:12px;padding:16px;display:flex}.gengage-chat-comparison-heading{letter-spacing:.05em;color:var(--text-primary);margin:0 0 16px;font-size:14px;font-weight:700}.gengage-chat-comparison-recommended{border:1px solid color-mix(in srgb, var(--client-primary) 18%, var(--border-default));border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-1);padding:16px}.gengage-chat-comparison-recommended-label{color:var(--client-primary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px;font-size:12px;font-weight:700}.gengage-chat-comparison-recommended-body{grid-template-columns:minmax(108px,148px) minmax(0,1fr);align-items:flex-start;gap:16px;display:grid}.gengage-chat-comparison-recommended-media{aspect-ratio:1;border:1px solid var(--border-subtle);background:var(--surface-card);border-radius:14px;justify-content:center;align-items:center;display:flex;overflow:hidden}.gengage-chat-comparison-recommended-body img,.gengage-chat-comparison-recommended-placeholder{object-fit:contain;box-sizing:border-box;width:100%;height:100%;padding:8px}.gengage-chat-comparison-recommended-placeholder{background:var(--surface-card-muted)}.gengage-chat-comparison-recommended-info{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.gengage-chat-comparison-recommended-title{color:var(--text-primary);margin:0;font-size:24px;font-weight:800;line-height:1.2}.gengage-chat-comparison-recommended-meta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.gengage-chat-comparison-recommended-rating{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:color-mix(in srgb, var(--warning) 78%, var(--text-primary));border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:13px;font-weight:700;display:inline-flex}.gengage-chat-comparison-recommended-rating-value{color:var(--text-primary)}.gengage-chat-comparison-recommended-price{color:var(--text-primary);font-size:20px;font-weight:700}.gengage-chat-comparison-highlights{border-top:1px solid var(--border-subtle);padding-top:12px}.gengage-chat-comparison-highlights-label{color:var(--text-secondary);margin-bottom:6px;font-size:12px;font-weight:600}.gengage-chat-comparison-highlights ul{color:var(--text-primary);margin:0;padding-left:18px;font-size:14px;line-height:1.55}.gengage-chat-comparison-special{background:color-mix(in srgb, var(--warning) 10%, white);border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));border-radius:var(--radius-card);color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));margin-bottom:12px;padding:12px 16px;font-size:13px}.gengage-chat-comparison-special summary{cursor:pointer;font-weight:600}.gengage-chat-comparison-special ul{margin:8px 0 0;padding-left:18px;line-height:1.6}.gengage-chat-comparison-table{border-collapse:collapse;background:var(--surface-card);width:100%;font-size:13px}.gengage-chat-comparison-table th,.gengage-chat-comparison-table td{text-align:center;border-bottom:1px solid var(--border-subtle);vertical-align:top;padding:10px 12px}.gengage-chat-comparison-table th{color:var(--text-secondary);font-size:12px;font-weight:600}.gengage-chat-comparison-table td ul,.gengage-chat-comparison-table td ol{text-align:left;margin:0;padding-left:18px}.gengage-chat-comparison-table td li+li{margin-top:4px}.gengage-chat-comparison-table thead th:not(:first-child){vertical-align:top}.gengage-chat-comparison-table-header-cell{box-sizing:border-box;grid-template-rows:auto 1fr auto;place-items:start center;gap:6px;height:100%;min-height:0;display:grid}.gengage-chat-comparison-table-header-cell--clickable{cursor:pointer;border-radius:var(--radius-control);padding:6px;transition:background .16s,box-shadow .16s,transform .16s}.gengage-chat-comparison-table-header-cell--clickable:hover{background:var(--surface-card-soft);box-shadow:var(--shadow-1);transform:translateY(-1px)}.gengage-chat-comparison-table-header-cell--clickable:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-comparison-table-header-cell img{object-fit:contain;border-radius:calc(var(--radius-control) - 4px);background:var(--surface-card-muted);width:60px;height:60px}.gengage-chat-comparison-table-header-img-placeholder{border-radius:calc(var(--radius-control) - 4px);background:var(--surface-card-muted);width:60px;height:60px}.gengage-chat-comparison-table-product-name{width:100%;min-width:0;color:var(--text-secondary);text-align:center;-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;align-self:start;font-size:12px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-comparison-table-price{color:var(--text-primary);text-align:center;width:100%;font-weight:700}.gengage-chat-comparison-label{text-align:left;color:var(--text-secondary);white-space:nowrap;font-weight:600}.gengage-chat-comparison-selected{background:color-mix(in srgb, var(--client-primary) 6%, white)}.gengage-chat-comparison-recommended-text{color:var(--text-secondary);margin:0;font-size:14px;line-height:1.6}.gengage-chat-comparison-key-differences{border:1px solid var(--border-subtle);border-radius:var(--radius-card);background:var(--surface-card-muted)}.gengage-chat-comparison-key-differences-summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-weight:700;list-style:none;display:flex}.gengage-chat-comparison-key-differences-summary::-webkit-details-marker{display:none}.gengage-chat-comparison-key-differences-summary-label{color:var(--text-primary)}.gengage-chat-comparison-key-differences-summary-meta{color:var(--client-primary);font-size:13px;font-weight:700}.gengage-chat-comparison-key-differences[open] .gengage-chat-comparison-key-differences-summary-meta{opacity:0}.gengage-chat-comparison-key-differences-content{color:var(--text-primary);padding:0 16px 16px;font-size:14px;line-height:1.7}.gengage-chat-comparison-key-differences-content ul,.gengage-chat-comparison-key-differences-content ol{margin:0;padding-left:20px}.gengage-chat-comparison-key-differences-content li+li{margin-top:8px}@media (width<=960px){.gengage-chat-comparison-recommended-body{grid-template-columns:1fr}.gengage-chat-comparison-recommended-title{font-size:20px}}.gengage-chat-pills{border-top:1px solid var(--border-subtle);background:var(--surface-card);padding:8px 12px 6px;position:relative}.gengage-chat-pills-scroll{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;padding-right:28px;display:flex;overflow-x:auto}.gengage-chat-pills-scroll::-webkit-scrollbar{display:none}.gengage-chat-root--mobile .gengage-chat-pills-scroll{flex-wrap:wrap;gap:6px}.gengage-chat-root--mobile .gengage-chat-pill{white-space:normal;max-width:100%}.gengage-chat-pill{border:1px solid var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active);white-space:nowrap;cursor:pointer;border-radius:999px;flex:none;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:700;transition:background .15s,border-color .15s,color .15s}.gengage-chat-pill:hover{background:color-mix(in srgb, var(--client-primary) 12%, white);border-color:color-mix(in srgb, var(--client-primary) 36%, white)}.gengage-chat-pill:active{transform:none}.gengage-chat-pill--rich{border-radius:18px;align-items:center;gap:10px;padding:8px 14px 8px 8px;display:flex}.gengage-chat-pill-img{object-fit:cover;background:var(--surface-card);border-radius:12px;flex-shrink:0;width:32px;height:32px}.gengage-chat-pill-text{font-size:13px;font-weight:600;line-height:1.2}.gengage-chat-pill-desc{display:none}.gengage-chat-pill--rich .gengage-chat-pill-desc{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:11px;font-weight:500;display:block;overflow:hidden}.gengage-chat-pills-arrow{border:1px solid var(--border-default);background:var(--surface-card);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;box-shadow:var(--shadow-1);z-index:1;border-radius:12px;justify-content:center;align-items:center;font-size:16px;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.gengage-chat-pills-arrow:hover{background:var(--surface-card-soft);color:var(--client-primary)}@media (prefers-reduced-motion:reduce){.gengage-chat-uispec>*,.gengage-chat-action-btn,.gengage-chat-inline-question-btn,.gengage-chat-product-card,.gengage-chat-product-card-cta,.gengage-chat-send,.gengage-chat-launcher-container,.gengage-chat-launcher,.gengage-chat-pill,.gengage-chat-drawer,.gengage-chat-typing-dots span,.gengage-chat-thinking-step-marker--active,.gengage-chat-bubble,.gengage-chat-panel-skeleton-block,.gengage-chat-ai-toppick-card,.gengage-chat-mic-btn--active,.gengage-chat-ai-toppick-spinner:after,.gengage-chat-cart-toast,.gengage-chat-header-btn--cart-flash{transition:none!important;animation:none!important;transform:none!important}}.gengage-chat-bubble--user{position:relative}.gengage-chat-rollback-btn{border-radius:var(--radius-pill);background:var(--surface-card-muted);width:24px;height:24px;color:var(--text-secondary);cursor:pointer;opacity:0;border:none;justify-content:center;align-items:center;padding:0;transition:opacity .15s;display:flex;position:absolute;top:50%;left:-28px;transform:translateY(-50%)}.gengage-chat-bubble--user:hover .gengage-chat-rollback-btn{opacity:1}.gengage-chat-rollback-btn:hover{background:var(--client-primary);color:var(--client-on-primary)}.gengage-chat-bubble--hidden{display:none}.gengage-chat-ai-top-picks{flex-direction:column;gap:12px;padding:8px 0;scroll-margin-top:60px;display:flex}.gengage-chat-ai-top-picks-title{color:var(--text-primary);margin:0 0 4px;font-size:15px;font-weight:600}.gengage-chat-ai-top-picks-scroll{flex-direction:column;gap:10px;min-width:0;display:flex}.gengage-chat-ai-top-picks-rest,.gengage-chat-ai-toppick-top-row{display:contents}.gengage-chat-ai-toppick-detail{width:100%;min-width:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks{gap:0;padding-top:4px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-title{flex-shrink:0;width:100%;margin:0 0 10px;font-size:18px;font-weight:700;line-height:1.2}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll{scrollbar-width:none;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,auto);align-items:stretch;gap:12px;margin:0;padding:12px 0;display:grid;overflow:visible}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact{flex:initial;scroll-snap-align:none;width:100%;min-width:0;max-width:none}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child{grid-column:1/-1;grid-template-rows:auto auto;grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:12px 18px;display:grid}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail){grid-template-rows:auto auto auto}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact{flex-direction:column;align-items:stretch}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media{max-height:none}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-media{aspect-ratio:4/3;grid-area:1/1/span 2;max-height:260px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail) .gengage-chat-ai-toppick-media{grid-row:1/span 3}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-detail{grid-area:2/2;min-width:0;padding-top:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img,.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-img{object-fit:contain;width:calc(100% - 8px);height:calc(100% - 8px);position:absolute;inset:4px}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-body,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{flex:1;min-height:0;padding:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-body{grid-area:1/2;padding-top:6px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail) .gengage-chat-ai-toppick-cta{grid-row:3}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);width:calc(100% - 24px);color:var(--ds-button-secondary-fg);align-self:stretch;margin:14px 12px 12px}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);width:auto;min-width:180px;color:var(--ds-button-secondary-fg);grid-area:2/2;place-self:end start;margin:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta:hover,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta:hover{background:var(--ds-button-secondary-bg-hover);filter:none}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner{border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-ai-toppick-rating{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-secondary);border-radius:999px;align-self:flex-start;align-items:center;gap:5px;margin-top:4px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.gengage-chat-ai-toppick-rating-icon{color:color-mix(in srgb, var(--warning) 60%, var(--text-primary));justify-content:center;align-items:center;line-height:0;display:inline-flex}.gengage-chat-ai-toppick-rating-value{color:var(--text-primary)}.gengage-chat-ai-toppick-media .gengage-chat-ai-toppick-discount-badge{background:var(--client-primary);color:var(--client-on-primary);z-index:1;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:800;line-height:1.2;position:absolute;top:4px;left:4px;right:auto}.gengage-chat-ai-toppick-card--winner,.gengage-chat-ai-toppick-card--compact{--_badge-inset-top:12px;--_badge-height:30px;box-sizing:border-box;padding:calc(var(--_badge-inset-top) + var(--_badge-height) + 6px) 12px 12px;border-radius:var(--radius-card);background:var(--surface-card);flex-direction:column;align-items:stretch;transition:box-shadow .2s,background .15s,transform .15s;display:flex;position:relative;overflow:visible}.gengage-chat-ai-toppick-card--winner{border:1.5px solid color-mix(in srgb, var(--client-primary) 24%, var(--border-default))}.gengage-chat-ai-toppick-card--winner:hover{background:var(--surface-card-muted);box-shadow:var(--shadow-2)}.gengage-chat-ai-toppick-card--compact{border:1px solid var(--border-default)}.gengage-chat-ai-toppick-card--compact:hover{background:var(--surface-card-muted);box-shadow:var(--shadow-1);transform:translateY(-1px)}.gengage-chat-ai-toppick-badge{top:var(--_badge-inset-top,12px);z-index:2;box-sizing:border-box;text-transform:uppercase;letter-spacing:.04em;pointer-events:none;white-space:normal;border-radius:999px;align-items:center;max-width:calc(100% - 28px);margin:0;padding:8px 14px;font-size:11px;font-weight:800;line-height:1.25;display:inline-flex;position:absolute;left:14px}.gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-badge{background:var(--client-primary);color:var(--client-on-primary);box-shadow:0 10px 18px color-mix(in srgb, var(--client-primary) 20%, transparent)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-badge{background:var(--surface-card);color:color-mix(in srgb, var(--client-primary) 72%, var(--text-primary));border:1px solid color-mix(in srgb, var(--client-primary) 24%, var(--border-default))}.gengage-chat-ai-toppick-media{aspect-ratio:1;border:1px solid var(--border-subtle);background:var(--surface-card);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:100%;margin-top:4px;margin-bottom:8px;display:flex;position:relative;overflow:hidden}.gengage-chat-ai-toppick-img{object-fit:contain;box-sizing:border-box;width:100%;height:100%;padding:4px}.gengage-chat-ai-toppick-body{flex-direction:column;flex:1;gap:0;min-width:0;padding:0;display:flex}.gengage-chat-ai-toppick-name{color:var(--text-primary);text-overflow:ellipsis;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-bottom:4px;font-size:14px;font-weight:700;line-height:1.375;display:-webkit-box;overflow:hidden}.gengage-chat-ai-toppick-role{color:var(--client-primary);text-transform:uppercase;letter-spacing:.3px;font-size:11px;font-weight:600}.gengage-chat-ai-toppick-labels{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.gengage-chat-ai-toppick-label{border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700}.gengage-chat-ai-toppick-label[data-sentiment=positive]{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-ai-toppick-label[data-sentiment=negative]{background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 82%, var(--text-primary))}.gengage-chat-ai-toppick-label[data-sentiment=neutral]{background:var(--surface-card-muted);color:var(--text-secondary)}.gengage-chat-ai-toppick-reason{color:var(--text-secondary);margin:10px 0 0;font-size:13px;line-height:1.5}.gengage-chat-ai-toppick-review{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-primary);border-radius:14px;margin-top:10px;padding:10px 12px;font-size:12px;line-height:1.45}.gengage-chat-ai-toppick-snippet{color:var(--text-secondary);margin:8px 0 0;font-size:12px;line-height:1.45}.gengage-chat-ai-toppick-price{color:var(--text-primary);margin-top:4px;font-size:14px;font-weight:700}.gengage-chat-ai-toppick-price-current{color:var(--gengage-discounted-price-color,var(--text-primary))}.gengage-chat-ai-toppick-original-price{color:var(--text-secondary);font-size:12px;font-weight:400;text-decoration:line-through}.gengage-chat-ai-toppick-price-stack{flex-direction:column;align-items:flex-start;gap:2px;margin-top:4px;display:flex}.gengage-chat-ai-toppick-price-stack .gengage-chat-campaign-reason{font-size:11px;font-weight:700}.gengage-chat-campaign-price-badge{box-sizing:border-box;border-radius:var(--radius-control,10px);background-image:linear-gradient(var(--gengage-campaign-price-badge-fill,#fff) 0 0), linear-gradient(135deg, var(--_gengage-campaign-reason-start), var(--_gengage-campaign-reason-end));background-origin:border-box;background-clip:padding-box,border-box;border:1px solid #0000;flex-direction:row;align-items:center;gap:8px;max-width:100%;padding:7px 9px;display:inline-flex}.gengage-chat-campaign-price-badge__logo{flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-campaign-price-badge__logo img{object-fit:contain;width:auto;max-width:64px;height:auto;max-height:26px;display:block}.gengage-chat-campaign-price-badge__body{flex-direction:column;justify-content:center;align-items:flex-start;gap:1px;min-width:0;display:flex}.gengage-chat-campaign-price-badge__reason{letter-spacing:.02em;background:linear-gradient(90deg, var(--_gengage-campaign-reason-start), var(--_gengage-campaign-reason-end));color:#0000;-webkit-background-clip:text;background-clip:text;max-width:100%;margin:0;font-size:10px;font-weight:700;line-height:1.2}.gengage-chat-campaign-price-badge__sale{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:14px;font-weight:800;line-height:1.15}.gengage-chat-product-card-price-row .gengage-chat-campaign-price-badge__sale{font-size:13px}.gengage-chat-product-summary__price .gengage-chat-campaign-price-badge__sale{font-size:12px}.gengage-chat-product-details-price .gengage-chat-campaign-price-badge{border-radius:var(--radius-control,12px);padding:9px 11px}.gengage-chat-product-details-price .gengage-chat-campaign-price-badge__reason{font-size:11px}.gengage-chat-product-details-price .gengage-chat-campaign-price-badge__sale{font-size:18px}:is(.gengage-chat-ai-toppick-price--inline:has(.gengage-chat-campaign-price-badge),.gengage-chat-product-card-price-row:has(.gengage-chat-campaign-price-badge),.gengage-chat-product-summary__price--inline:has(.gengage-chat-campaign-price-badge),.gengage-chat-product-details-price--inline:has(.gengage-chat-campaign-price-badge)){align-items:last baseline}:is(.gengage-chat-ai-toppick-price--inline:has(.gengage-chat-campaign-price-badge) .gengage-chat-ai-toppick-price-sep,.gengage-chat-product-card-price-row:has(.gengage-chat-campaign-price-badge) .gengage-chat-product-card-price-sep,.gengage-chat-product-summary__price--inline:has(.gengage-chat-campaign-price-badge) .gengage-chat-product-summary__price-sep,.gengage-chat-product-details-price--inline:has(.gengage-chat-campaign-price-badge) .gengage-chat-product-details-price-sep){align-self:last baseline}.gengage-chat-ai-toppick-price--inline{flex-flow:wrap;align-items:baseline;gap:0 6px;display:flex}.gengage-chat-ai-toppick-price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:.85em;margin:0 1px;display:inline-block}.gengage-chat-ai-toppick-price--inline .gengage-chat-ai-toppick-original-price{font-size:14px;font-weight:500;text-decoration:none}.gengage-chat-ai-toppick-price--inline .gengage-chat-ai-toppick-price-current{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:14px;font-weight:800}.gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-control,12px);background:var(--ds-button-primary-bg);width:calc(100% - 24px);color:var(--ds-button-primary-fg);cursor:pointer;text-align:center;box-sizing:border-box;opacity:0;pointer-events:none;flex-shrink:0;align-self:stretch;margin:14px 12px 12px;padding:8px 0;font-size:13px;font-weight:700;transition:opacity .18s,transform .18s,background .15s;display:block;transform:translateY(6px)}.gengage-chat-ai-toppick-card--winner:hover .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--compact:hover .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--winner:focus-within .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--compact:focus-within .gengage-chat-ai-toppick-cta{opacity:1;pointer-events:auto;transform:translateY(0)}.gengage-chat-ai-toppick-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-ai-toppick-spinner{background:color-mix(in srgb, var(--surface-card) 78%, transparent);z-index:6;border-radius:12px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.gengage-chat-ai-toppick-spinner:after{content:"";border:3px solid var(--border-default);border-top-color:var(--ai-accent-start);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite gengage-spin}@keyframes gengage-spin{to{transform:rotate(360deg)}}.gengage-chat-root--mobile .gengage-chat-ai-top-picks{gap:8px;padding:4px 0}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-title{margin:0 0 2px;font-size:14px}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll{flex-direction:column;gap:8px;min-width:0;padding:6px 0 2px;display:flex;overflow:visible}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll>:first-child{flex-direction:column;align-items:stretch;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll>:first-child.gengage-chat-ai-toppick-card--winner{flex-direction:column}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest{-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;flex-flow:row;gap:8px;min-width:0;margin:0 -2px;padding:2px 2px 8px;display:flex;overflow:auto visible}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest--uniform-mobile{scroll-snap-type:none;flex-direction:column;margin:0;padding:0;overflow-x:visible}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest::-webkit-scrollbar{width:0;height:0;display:none}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest .gengage-chat-ai-toppick-card--compact{scroll-snap-align:start;flex:0 0 min(82vw,272px);width:min(82vw,272px);min-width:0;max-width:272px}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest--uniform-mobile .gengage-chat-ai-toppick-card--compact{scroll-snap-align:none;flex:none;width:100%;max-width:none}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner{scroll-snap-align:none;flex-shrink:1;width:100%;min-width:0;max-width:none;padding:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact{scroll-snap-align:none;flex-shrink:1;width:100%;min-width:0;max-width:none;padding:6px 8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner{border:1.5px solid color-mix(in srgb, var(--client-primary) 28%, var(--border-default));margin-bottom:8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact{border:1px solid var(--border-default);box-shadow:none;flex-direction:column;align-items:stretch}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform{margin-top:8px;padding:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-top-row,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-top-row{flex-direction:row;align-items:flex-start;gap:10px;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-media{aspect-ratio:1;border-radius:10px;flex:0 0 clamp(96px,30vw,124px);width:clamp(96px,30vw,124px);height:clamp(96px,30vw,124px);max-height:none;margin:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-img{object-fit:contain;width:100%;height:100%;padding:4px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-body,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-body{flex:1;min-width:0;padding-top:2px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-detail{width:100%;margin-top:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-reason{color:var(--text-primary);margin:0;font-size:12px;line-height:1.45;display:block!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-review{color:var(--text-secondary);border:1px solid var(--border-subtle);background:var(--surface-card-muted);border-radius:12px;margin-top:8px;padding:8px 10px;font-size:12px;font-style:italic;line-height:1.4;display:block!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-top-row{flex-direction:row;align-items:flex-start;gap:6px;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media{aspect-ratio:1;border-radius:8px;flex:0 0 64px;width:64px;height:64px;max-height:64px;margin:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{object-fit:contain;width:100%;max-height:100%;padding:2px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{flex:1;min-width:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-rating{display:none}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-detail{width:100%;margin-top:4px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-snippet{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;margin:0;font-size:10px;line-height:1.3;display:-webkit-box;overflow:hidden}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-role-line{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin:0 0 2px;font-size:9px;font-weight:600;line-height:1.15}.gengage-chat-root--mobile .gengage-chat-ai-toppick-snippet{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:11px;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{gap:5px;top:3px;right:5px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{gap:5px;top:5px;right:6px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-badge,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-badge{letter-spacing:.04em;background:var(--client-primary);max-width:calc(100% - 18px);color:var(--client-on-primary);box-shadow:none;border:none;padding:2px 6px;font-size:8px;font-weight:700;line-height:1.15;top:-14px;left:8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-name{margin-bottom:1px;font-size:12px;line-height:1.22}.gengage-chat-root--mobile .gengage-chat-ai-toppick-name{margin-bottom:2px;font-size:13px;line-height:1.28}.gengage-chat-root--mobile .gengage-chat-ai-toppick-rating{gap:3px;margin-top:2px;padding:2px 6px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-price{margin-top:1px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-price{margin-top:2px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-original-price{font-size:11px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-labels,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{display:none!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-cta{opacity:1;pointer-events:auto;border:1px solid var(--client-primary);background:var(--surface-card);width:calc(100% - 16px);color:var(--client-primary);box-shadow:none;filter:none;align-self:stretch;margin:8px 8px 6px;padding:6px 0;font-size:12px;font-weight:600;transform:none}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-cta{display:block!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta:hover,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-cta:hover{background:color-mix(in srgb, var(--client-primary) 10%, var(--surface-card));color:var(--client-primary);border-color:var(--client-primary);filter:none}.gengage-chat-root--mobile .gengage-chat-rollback-btn{left:-24px}.gengage-chat-grounding-review{align-items:center;gap:12px;padding:12px 16px;transition:background .15s,border-color .15s,box-shadow .15s;display:flex}.gengage-chat-grounding-review:hover{background:var(--ds-card-bg-hover);border-color:var(--ds-card-border-hover);box-shadow:var(--ds-card-shadow-hover)}.gengage-chat-grounding-review-icon{background:color-mix(in srgb, var(--client-primary) 8%, var(--surface-card));width:32px;height:32px;color:var(--client-primary);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.gengage-chat-grounding-review-icon svg{width:18px;height:18px;display:block}.gengage-chat-grounding-review-body{flex:1;min-width:0}.gengage-chat-grounding-review-title{color:var(--text-primary);font-size:13px;font-weight:600}.gengage-chat-grounding-review-subtitle{color:var(--text-muted);margin-top:2px;font-size:12px}.gengage-chat-grounding-review-cta{color:var(--client-primary);white-space:nowrap;flex-shrink:0;align-items:center;gap:4px;font-size:13px;font-weight:600;display:inline-flex}.gengage-chat-grounding-review-cta-icon{align-items:center;display:inline-flex}.gengage-chat-grounding-review-cta-icon svg{width:14px;height:14px;display:block}.gengage-chat-grouping-cards{flex-direction:column;gap:6px;display:flex}.gengage-chat-grouping-cards-scroll{flex-direction:column;gap:6px;min-width:0;display:flex}.gengage-chat-grouping-card{background:var(--surface-card-soft);border:1px solid var(--border-default);border-radius:var(--radius-control);align-items:center;gap:10px;padding:8px 12px;transition:background .15s,border-color .15s;display:flex}.gengage-chat-grouping-card:hover{background:color-mix(in srgb, var(--client-primary) 6%, white);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default))}.gengage-chat-grouping-card-arrow{color:var(--client-primary);flex-shrink:0;font-size:14px;display:none}.gengage-chat-grouping-card-img{border-radius:calc(var(--radius-control) - 4px);object-fit:cover;-webkit-user-drag:none;-webkit-user-select:none;user-select:none;flex-shrink:0;width:48px;min-width:48px;height:48px;min-height:48px}.gengage-chat-grouping-card-body{flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:0;display:flex}.gengage-chat-grouping-card-name{color:var(--text-primary);font-size:13px;font-weight:600}.gengage-chat-grouping-card-desc{color:var(--text-muted);font-size:12px}.gengage-chat-grouping-card-labels{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.gengage-chat-grouping-card-label{color:var(--text-secondary);background:var(--surface-card-muted);border:1px solid var(--border-subtle);border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700;line-height:1.2}.gengage-chat-root--mobile .gengage-chat-grouping-card-img{display:none}.gengage-chat-root--mobile .gengage-chat-grouping-card-arrow{display:inline}.gengage-chat-suggested-search-cards{flex-direction:column;gap:8px;display:flex}.gengage-chat-suggested-search-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-card);box-shadow:var(--shadow-1);align-items:center;gap:14px;padding:14px 16px;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s;display:flex}.gengage-chat-suggested-search-card:hover{background:var(--surface-card);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));box-shadow:var(--shadow-2);transform:translateY(-1px)}.gengage-chat-suggested-search-card-img{object-fit:contain;background:var(--surface-card-muted);border:1px solid var(--border-subtle);border-radius:14px;flex-shrink:0;width:64px;height:64px;padding:4px}.gengage-chat-suggested-search-card-body{flex:1;min-width:0}.gengage-chat-suggested-search-card-name{color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-product-details-gallery{position:relative}.gengage-chat-product-details-gallery .gengage-chat-product-details-img{touch-action:pan-y}.gengage-chat-product-gallery-nav{z-index:3;border:1px solid var(--border-default);border-radius:var(--radius-pill);cursor:pointer;background:color-mix(in srgb, var(--surface-card) 92%, transparent);width:36px;min-width:36px;height:36px;min-height:36px;color:var(--text-primary);box-shadow:var(--shadow-1);justify-content:center;align-items:center;padding:0;transition:background .15s,opacity .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.gengage-chat-product-gallery-nav:hover:not(:disabled){background:var(--surface-card);color:var(--client-primary)}.gengage-chat-product-gallery-nav:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-product-gallery-nav:disabled{opacity:.35;cursor:not-allowed}.gengage-chat-product-gallery-nav--prev{left:8px}.gengage-chat-product-gallery-nav--next{right:8px}.gengage-chat-product-gallery-thumbs{scrollbar-width:thin;justify-content:center;gap:8px;width:100%;padding:10px 0 4px;display:flex;overflow-x:auto}.gengage-chat-product-gallery-thumb{object-fit:cover;cursor:pointer;background:var(--surface-card);border:2px solid #0000;border-radius:8px;flex-shrink:0;width:56px;height:56px;transition:border-color .15s}.gengage-chat-product-gallery-thumb:hover{border-color:var(--border-strong)}.gengage-chat-product-gallery-thumb--active{border-color:var(--client-primary)}.gengage-chat-product-gallery-thumb-more{background:var(--surface-card-muted);width:56px;height:56px;color:var(--text-secondary);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.gengage-chat-product-variants-label{color:var(--text-muted);text-transform:none;letter-spacing:.5px;margin-bottom:6px;font-size:12px;font-weight:600}.gengage-chat-product-variants-list{flex-wrap:wrap;gap:6px;display:flex}.gengage-chat-product-variant-btn{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;padding:6px 12px;font-size:12px;transition:background .15s,border-color .15s}.gengage-chat-product-variant-btn:hover{background:var(--surface-card-muted);border-color:color-mix(in srgb, var(--client-primary) 20%, var(--border-default));color:var(--client-primary)}.gengage-chat-product-details-panel{border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-1);gap:16px;padding:16px}.gengage-chat-product-details-media{border-color:var(--border-default);border-radius:var(--radius-card);background:var(--surface-card-soft);justify-content:center;min-height:320px}.gengage-chat-product-details-img{max-height:420px}.gengage-chat-product-details-content{gap:12px}.gengage-chat-product-details-brand{color:var(--client-primary);font-size:12px;font-weight:800;line-height:1.2}.gengage-chat-product-details-title{font-size:22px;line-height:1.2}.gengage-chat-product-details-rating{border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));background:color-mix(in srgb, var(--warning) 10%, var(--surface-card));color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));gap:6px;padding:6px 10px;font-family:inherit}button.gengage-chat-product-details-rating{border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));cursor:pointer}.gengage-chat-product-details-rating--clickable:hover{border-color:color-mix(in srgb, var(--warning) 42%, var(--border-default));background:color-mix(in srgb, var(--warning) 14%, var(--surface-card))}.gengage-chat-product-details-rating .gengage-star-rating{line-height:1}.gengage-chat-product-details-rating-value{color:var(--text-primary)}.gengage-chat-product-details-price{flex-wrap:wrap;gap:10px}.gengage-chat-product-details-original-price{order:2}.gengage-chat-product-details-current-price{order:1;font-size:30px}.gengage-chat-product-details-discount-badge{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--error) 12%, white);min-height:24px;color:color-mix(in srgb, var(--error) 84%, var(--text-primary));order:3;align-items:center;padding:2px 8px;font-size:12px;font-weight:800;display:inline-flex}.gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price,.gengage-chat-product-details-price--inline .gengage-chat-product-details-current-price{order:0;font-size:30px}.gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price{font-weight:500}.gengage-chat-product-details-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;display:grid}.gengage-chat-product-details-fact{border:1px solid var(--border-subtle);border-radius:var(--radius-control);background:var(--surface-card-soft);min-width:0;padding:8px 10px}.gengage-chat-product-details-fact dt,.gengage-chat-product-details-fact dd{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;overflow:hidden}.gengage-chat-product-details-fact dt{color:var(--text-muted);font-size:11px;font-weight:700}.gengage-chat-product-details-fact dd{color:var(--text-primary);margin-top:2px;font-size:13px;font-weight:700}.gengage-chat-product-variants{margin-top:4px}.gengage-chat-product-variants-label{color:var(--text-primary);letter-spacing:normal;margin-bottom:8px;font-size:14px;font-weight:800}.gengage-chat-product-variants-list{gap:8px}.gengage-chat-product-variant-btn{border-radius:var(--radius-control);min-height:44px;color:var(--text-primary);gap:8px;padding:7px 10px;font-size:13px;font-weight:700}.gengage-chat-product-variant-btn--active{border-color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, var(--surface-card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--client-primary) 36%, transparent);color:var(--client-primary)}.gengage-chat-product-variant-btn--out{opacity:.48;cursor:not-allowed}.gengage-chat-product-variant-swatch{border:1px solid var(--border-default);background:var(--surface-card-muted);width:22px;height:22px;box-shadow:inset 0 0 0 2px var(--surface-card);border-radius:50%;flex:0 0 22px}.gengage-chat-product-variant-swatch--image{object-fit:cover;box-shadow:none}.gengage-chat-product-variant-label,.gengage-chat-product-variant-price{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gengage-chat-product-variant-price{color:var(--text-secondary);font-size:12px;font-weight:700}.gengage-chat-product-details-actions{gap:10px;margin-top:6px}.gengage-chat-product-details-atc,.gengage-chat-product-details-cta{border-radius:var(--radius-control);min-height:44px}.gengage-chat-product-details-atc{border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg)}.gengage-chat-product-details-atc:hover{background:var(--ds-button-primary-bg-hover);filter:none}.gengage-chat-product-details-cta.gds-btn-secondary{border-color:var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);color:var(--ds-button-secondary-fg)}.gengage-chat-product-details-cta.gds-btn-secondary:hover{background:var(--ds-button-secondary-bg-hover)}@media (width>=960px){.gengage-chat-product-details-panel{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);align-items:start;display:grid}.gengage-chat-product-details-media{position:sticky;top:0}.gengage-chat-product-detail-tabs{grid-column:1/-1}}.gengage-chat-root--mobile .gengage-chat-product-details-panel{box-shadow:none;gap:10px;padding:10px}.gengage-chat-root--mobile .gengage-chat-product-details-media{min-height:220px}.gengage-chat-root--mobile .gengage-chat-product-details-title{font-size:18px}.gengage-chat-root--mobile .gengage-chat-product-details-current-price{font-size:24px}.gengage-chat-root--mobile .gengage-chat-product-details-facts{grid-template-columns:1fr}.gengage-chat-root--mobile .gengage-chat-product-details-actions{grid-template-columns:1fr 1fr 44px;align-items:stretch;display:grid}.gengage-chat-root--mobile .gengage-chat-product-details-actions>.gengage-chat-product-details-share{width:44px;min-width:44px}.gengage-chat-root--mobile .gengage-chat-product-details-atc,.gengage-chat-root--mobile .gengage-chat-product-details-cta{width:100%;padding-inline:10px}.gengage-chat-product-grid-wrapper{flex-direction:column;gap:6px;display:flex}.gengage-chat-product-grid-wrapper--grouped{gap:12px}.gengage-chat-product-grid-sections{flex-direction:column;gap:20px;display:flex}.gengage-chat-product-grid-section{border-top:1px solid color-mix(in srgb, var(--border-default) 70%, transparent);flex-direction:column;gap:10px;padding:14px 0 18px;display:flex}.gengage-chat-product-grid-section:first-child{border-top:0;padding-top:4px}.gengage-chat-product-grid-section:last-child{padding-bottom:4px}.gengage-chat-product-grid-section-head{justify-content:space-between;align-items:baseline;gap:12px;min-width:0;padding:0 2px;display:flex}.gengage-chat-product-grid-section-title{letter-spacing:0;min-width:0;color:var(--text-primary);overflow-wrap:anywhere;margin:0;font-family:inherit;font-size:15px;font-weight:700;line-height:1.25}.gengage-chat-product-grid-section-count{border:1px solid var(--border-subtle);border-radius:var(--radius-pill);background:var(--surface-card-soft);min-height:22px;color:var(--text-secondary);letter-spacing:0;white-space:nowrap;flex:none;justify-content:center;align-items:center;padding:1px 8px;font-family:inherit;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.gengage-chat-panel .gengage-chat-product-grid--section{padding-top:0;padding-bottom:2px}.gengage-chat-root--mobile .gengage-chat-product-grid-sections{gap:16px}.gengage-chat-root--mobile .gengage-chat-product-grid-section{gap:8px;padding:12px 0 14px}.gengage-chat-root--mobile .gengage-chat-product-grid-section-title{font-size:14px}.gengage-chat-root--mobile .gengage-chat-product-grid-section-count{min-height:20px;padding-inline:8px;font-size:10.5px}.gengage-chat-consulting-style-picker{border:1px solid color-mix(in srgb, var(--client-primary) 18%, var(--border-default));background:linear-gradient(160deg, color-mix(in srgb, var(--surface-card) 80%, white), color-mix(in srgb, var(--surface-card-soft) 84%, white));border-radius:20px;padding:12px}.gengage-chat-consulting-style-picker-title{color:var(--text-primary);margin-bottom:10px;font-size:14px;font-weight:800}.gengage-chat-consulting-style-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.gengage-chat-consulting-style-btn{border:1px solid var(--border-default);background:var(--surface-card);cursor:pointer;text-align:left;border-radius:14px;flex-direction:column;gap:0;padding:6px;transition:transform .15s,border-color .15s,box-shadow .15s;display:flex}.gengage-chat-consulting-style-btn:hover{border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default));transform:translateY(-1px)}.gengage-chat-consulting-style-btn--active{border-color:color-mix(in srgb, var(--client-primary) 40%, var(--border-default));box-shadow:0 0 0 2px color-mix(in srgb, var(--client-primary) 16%, transparent), var(--shadow-1)}.gengage-chat-consulting-style-btn--loading{border-style:dashed}.gengage-chat-consulting-style-btn--muted{opacity:.78}.gengage-chat-consulting-style-media{border-radius:12px;position:relative;overflow:hidden}.gengage-chat-consulting-style-image{aspect-ratio:4/5;object-fit:cover;border:1px solid var(--border-subtle);-webkit-user-drag:none;-webkit-user-select:none;user-select:none;border-radius:12px;width:100%}.gengage-chat-consulting-style-caption{color:#fff;background:#0000008c;border-radius:12px;padding:8px 10px;font-size:15px;font-weight:800;line-height:1.2;position:absolute;bottom:10px;left:10px;right:10px}.gengage-chat-consulting-style-status{color:var(--text-primary);background:color-mix(in srgb, white 88%, var(--client-primary) 12%);border:1px solid color-mix(in srgb, var(--client-primary) 18%, var(--border-default));border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;position:absolute;top:10px;right:10px}.gengage-chat-consulting-loading-panel{border:1px solid color-mix(in srgb, var(--client-primary) 14%, var(--border-default));background:linear-gradient(180deg, var(--surface-card-soft), var(--surface-card));border-radius:18px;flex-direction:column;gap:12px;padding:16px;display:flex}.gengage-chat-consulting-loading-panel-title{color:var(--text-primary);margin:0;font-size:18px;font-weight:800}.gengage-chat-consulting-loading-panel-copy{color:var(--text-secondary);margin:0;font-size:14px;line-height:1.5}.gengage-chat-consulting-loading-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.gengage-chat-consulting-loading-card{border:1px solid var(--border-default);background:linear-gradient(90deg, color-mix(in srgb, var(--surface-card-soft) 94%, white) 20%, color-mix(in srgb, white 86%, var(--surface-card-soft) 14%) 50%, color-mix(in srgb, var(--surface-card-soft) 94%, white) 80%);background-size:220% 100%;border-radius:18px;min-height:240px;animation:1.2s linear infinite gengage-chat-consulting-loading-shimmer}@keyframes gengage-chat-consulting-loading-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.gengage-chat-consulting-group{border:1px solid color-mix(in srgb, var(--client-primary) 14%, var(--border-default));background:linear-gradient(180deg, var(--surface-card-soft), var(--surface-card));border-radius:16px;flex-direction:column;gap:10px;padding:12px;display:flex}.gengage-chat-consulting-group-header{flex-direction:column;gap:4px;min-height:112px;display:flex}.gengage-chat-consulting-group-label{color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;min-height:2.5em;margin:0;font-size:16px;font-weight:800;line-height:1.25;display:-webkit-box;overflow:hidden}.gengage-chat-consulting-group-reason{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:13px;line-height:1.45;display:-webkit-box;overflow:hidden}.gengage-chat-consulting-group-grid{grid-template-columns:repeat(var(--consulting-group-columns,4), minmax(0, 1fr));justify-content:stretch;align-items:stretch;gap:14px;margin-bottom:2px;display:grid}.gengage-chat-consulting-group-grid .gengage-chat-product-card{width:100%;min-width:0;max-width:none;height:100%}.gengage-chat-beauty-photo-step{padding:0 12px}.gengage-chat-beauty-photo-step-card{border:1px solid color-mix(in srgb, var(--client-primary) 20%, var(--border-default));background:linear-gradient(165deg, color-mix(in srgb, var(--surface-card) 85%, white), var(--surface-card-soft));box-shadow:var(--shadow-1);border-radius:18px;gap:10px;padding:12px;display:flex}.gengage-chat-beauty-photo-step-icon{background:color-mix(in srgb, var(--client-primary) 16%, white);width:34px;height:34px;color:var(--client-primary);border-radius:12px;flex:none;justify-content:center;align-items:center;font-size:18px;font-weight:800;display:inline-flex}.gengage-chat-beauty-photo-step-content{flex:auto;min-width:0}.gengage-chat-beauty-photo-step-title{color:var(--text-primary);font-size:15px;font-weight:800}.gengage-chat-beauty-photo-step-desc{color:var(--text-secondary);margin:4px 0 0;font-size:12px;line-height:1.45}.gengage-chat-beauty-photo-step-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.gengage-chat-beauty-photo-step-upload{border-radius:999px;min-height:34px;padding-inline:14px;font-size:12px;font-weight:800}.gengage-chat-beauty-photo-step-skip{border-radius:999px;min-height:34px;padding-inline:12px;font-size:12px;font-weight:700}.gengage-chat-panel .gengage-chat-consulting-style-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.gengage-chat-panel .gengage-chat-consulting-style-image{min-height:250px}.gengage-chat-panel .gengage-chat-consulting-style-caption{padding:10px 12px;font-size:16px}.gengage-chat-panel .gengage-chat-consulting-group{border-radius:18px;min-width:0;padding:14px}.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card{width:100%;min-width:0;max-width:100%;margin-inline:0}.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card .gengage-chat-product-card-img-wrapper{flex-shrink:1;align-self:stretch;min-width:0;max-width:100%}.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card .gengage-chat-product-card-body{min-width:0;max-width:100%}.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card .gengage-chat-product-card-name,.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card .gengage-chat-product-card-price,.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card .gengage-chat-product-card-price-block{overflow-wrap:anywhere;word-break:break-word}.gengage-chat-root--mobile .gengage-chat-consulting-style-grid{grid-template-columns:1fr}.gengage-chat-root--mobile .gengage-chat-consulting-style-image{min-height:220px}.gengage-chat-root--mobile .gengage-chat-consulting-group-grid{grid-template-columns:1fr}.gengage-chat-root--mobile .gengage-chat-consulting-group-grid.gengage-chat-consulting-group-grid--single-group{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.gengage-chat-root--mobile .gengage-chat-consulting-group-grid .gengage-chat-product-card{width:100%;min-width:0;max-width:none}.gengage-chat-root--mobile .gengage-chat-consulting-loading-grid{grid-template-columns:1fr}.gengage-chat-product-grid-head{justify-content:space-between;align-items:center;gap:8px;min-width:0;margin-bottom:2px;display:flex}.gengage-chat-product-grid-head-title{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:18px;font-weight:700;line-height:1.2;overflow:hidden}.gengage-chat-product-grid-head-actions{flex-shrink:0;align-items:center;gap:6px;max-width:52%;display:flex}.gengage-chat-product-sort-toolbar{box-shadow:none;background:0 0;border:none;border-radius:0;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0;padding:0;display:flex}.gengage-chat-product-sort-toolbar--inline{flex-wrap:nowrap;justify-content:flex-end}.gengage-chat-product-sort-dropdown{z-index:5;flex:0 auto;width:auto;min-width:0;max-width:200px;position:relative}.gengage-chat-product-sort-toolbar:not(.gengage-chat-product-sort-toolbar--inline) .gengage-chat-product-sort-dropdown{flex:auto;max-width:min(200px,100%)}.gengage-chat-product-sort-dropdown--open{z-index:25}.gengage-chat-product-sort-trigger{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:100%;min-height:32px;color:var(--text-primary);cursor:pointer;text-align:left;align-items:center;gap:6px;padding:5px 8px;font-size:12px;font-weight:600;line-height:1.2;transition:border-color .15s,box-shadow .15s,background .15s;display:flex}.gengage-chat-product-sort-trigger:hover{border-color:color-mix(in srgb, var(--client-primary) 22%, var(--border-default));background:var(--surface-card-soft)}.gengage-chat-product-sort-trigger:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-product-sort-dropdown--open .gengage-chat-product-sort-trigger{border-color:color-mix(in srgb, var(--client-primary) 32%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-product-sort-trigger-icon{color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-product-sort-dropdown[data-sort-icon=related] .gengage-chat-product-sort-trigger-icon{color:var(--client-primary)}.gengage-chat-product-sort-trigger-icon svg{display:block}.gengage-chat-product-sort-trigger-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.gengage-chat-product-sort-trigger-chevron{color:var(--text-muted);flex-shrink:0;transition:transform .2s;display:flex}.gengage-chat-product-sort-dropdown--open .gengage-chat-product-sort-trigger-chevron{transform:rotate(180deg)}.gengage-chat-product-sort-menu{width:max-content;min-width:100%;max-width:min(260px,100vw - 48px);margin:0;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:auto}.gengage-chat-product-sort-option{border-radius:calc(var(--radius-control) - 4px);width:100%;color:var(--text-primary);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:500;line-height:1.25;transition:background .12s;display:flex}.gengage-chat-product-sort-option:hover{background:var(--surface-card-muted)}.gengage-chat-product-sort-option--active{color:var(--client-primary);background:var(--client-primary-subtle);font-weight:600}.gengage-chat-product-sort-option-icon{color:var(--text-secondary);flex-shrink:0;display:flex}.gengage-chat-product-sort-option--active .gengage-chat-product-sort-option-icon,.gengage-chat-product-sort-option--active[data-sort-key=related] .gengage-chat-product-sort-option-icon{color:var(--client-primary)}.gengage-chat-product-sort-option-icon svg{display:block}.gengage-chat-product-sort-option-label{flex:auto;min-width:0}.gengage-chat-product-sort-option-check{width:22px;color:var(--client-primary);flex-shrink:0;justify-content:flex-end;display:flex}.gengage-chat-product-sort-option-check--hidden{visibility:hidden}.gengage-chat-product-sort-separator{background:var(--border-default);width:1px;margin:2px}.gengage-chat-comparison-toggle-btn{border:1px solid var(--border-default);border-radius:var(--radius-control,12px);background:var(--surface-card);min-height:32px;color:var(--text-primary);cursor:pointer;white-space:nowrap;flex:none;align-items:center;gap:5px;padding:5px 8px;font-size:12px;font-weight:700;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.gengage-chat-comparison-toggle-icon{color:var(--text-secondary);flex-shrink:0;display:flex}.gengage-chat-comparison-toggle-icon svg{display:block}.gengage-chat-comparison-toggle-btn:hover{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, white);color:var(--client-primary)}.gengage-chat-comparison-toggle-btn--active{border-color:color-mix(in srgb, var(--client-primary) 26%, white);color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-comparison-toggle-btn--active .gengage-chat-comparison-toggle-icon{color:var(--client-primary)}.gengage-chat-comparison-toggle-btn--active:hover{background:var(--client-primary-hover);color:var(--client-on-primary);border-color:var(--client-primary-hover)}.gengage-chat-comparison-toggle-btn--active:hover .gengage-chat-comparison-toggle-icon{color:var(--client-on-primary)}.gengage-chat-comparison-select-wrapper{cursor:pointer;border-radius:var(--radius-control);transition:box-shadow .2s,transform .2s;position:relative}.gengage-chat-comparison-select-wrapper:hover{box-shadow:0 0 0 2px var(--client-focus-ring)}.gengage-chat-comparison-select-wrapper--selected,.gengage-chat-comparison-select-wrapper--selected:hover{box-shadow:none}@media (prefers-reduced-motion:reduce){.gengage-chat-comparison-select-wrapper{transition:none}}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card{pointer-events:none;transition:opacity .2s,transform .2s,filter .2s}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-img-actions,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-discount-badge,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-buy-footer,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-cta{opacity:0}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-body{opacity:.82}.gengage-chat-comparison-select-wrapper:hover>.gengage-chat-product-card,.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card{opacity:1;transform:translateY(-1px)}.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card{box-shadow:0 0 0 2px color-mix(in srgb, var(--client-primary) 26%, white), var(--shadow-1);filter:saturate(1.02);border-color:#0000;outline:none}.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card .gengage-chat-product-card-body{opacity:1}.gengage-chat-comparison-card-hint{display:none}.gengage-chat-comparison-checkbox{z-index:4;cursor:pointer;pointer-events:auto;border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-card) 94%, white);min-height:40px;color:var(--text-primary);box-shadow:var(--shadow-2);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 14px;display:inline-flex;position:absolute;bottom:16px;left:16px;right:16px}.gengage-chat-comparison-checkbox[data-selected=true]{background:color-mix(in srgb, var(--client-primary) 10%, white);border-color:color-mix(in srgb, var(--client-primary) 22%, var(--border-default));color:var(--client-primary)}.gengage-chat-comparison-checkbox-icon{background:var(--surface-card-soft);color:currentColor;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.gengage-chat-comparison-checkbox[data-selected=true] .gengage-chat-comparison-checkbox-icon{background:var(--client-primary);color:var(--client-on-primary)}.gengage-chat-comparison-checkbox-dot{background:color-mix(in srgb, currentColor 75%, white);border-radius:999px;width:8px;height:8px}.gengage-chat-comparison-checkbox-label{font-size:12px;font-weight:700;line-height:1.2}.gengage-chat-comparison-toggle-btn--hidden{opacity:0;pointer-events:none}@keyframes gengage-comparison-fade-in{0%{opacity:0}to{opacity:1}}.gengage-chat-comparison-toggle-btn--reveal{animation:.5s forwards gengage-comparison-fade-in}@media (prefers-reduced-motion:reduce){.gengage-chat-comparison-toggle-btn--reveal{opacity:1;animation:none}}.gengage-chat-comparison-floating-btn{border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-card) 92%, white);width:min(100%,520px);color:var(--text-primary);z-index:5;box-shadow:var(--shadow-2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:18px;justify-content:space-between;align-items:center;gap:14px;margin:16px auto 0;padding:12px 14px;display:flex;position:sticky;bottom:12px}.gengage-chat-comparison-dock-slot{display:none}.gengage-chat-root--mobile .gengage-chat-panel.gengage-chat-panel--visible~.gengage-chat-comparison-dock-slot:not(:empty){left:0;right:0;bottom:calc(var(--gengage-chat-input-control-size,44px) + 8px + env(safe-area-inset-bottom,0px));z-index:30;box-sizing:border-box;pointer-events:none;max-width:100%;padding:0 10px;display:block;position:absolute}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot>*{pointer-events:auto}.gengage-chat-comparison-floating-summary{flex:auto;align-items:center;gap:12px;min-width:0;display:flex}.gengage-chat-comparison-floating-count{background:var(--client-primary-subtle);min-width:32px;height:32px;color:var(--client-primary);border-radius:999px;justify-content:center;align-items:center;padding:0 10px;font-size:13px;font-weight:800;display:inline-flex}.gengage-chat-comparison-floating-copy{min-width:0}.gengage-chat-comparison-floating-title{color:var(--text-primary);font-size:14px;font-weight:700;line-height:1.2}.gengage-chat-comparison-floating-warning{color:var(--error);margin-top:4px;font-size:12px;line-height:1.35}.gengage-chat-comparison-floating-subtitle{color:var(--text-secondary);margin-top:2px;font-size:12px;line-height:1.35}.gengage-chat-comparison-floating-action{flex:none;min-width:132px}.gengage-chat-comparison-floating-close{border-radius:14px;flex:none;width:40px;height:40px;padding:0}.gengage-chat-comparison-floating-action--disabled{opacity:.6}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-btn{box-sizing:border-box;width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-3);border-radius:14px;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:10px;margin:0;padding:10px;position:relative;bottom:auto}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-summary{align-items:center;gap:8px;min-height:26px;padding-right:34px;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-count{flex-shrink:0;justify-content:center;align-items:center;min-width:26px;height:26px;padding:0 7px;font-size:12px;font-weight:800;line-height:1;display:inline-flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-copy{flex-direction:column;justify-content:center;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-title{margin:0;font-size:13px;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-warning{margin-top:2px;font-size:11px}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-action{box-sizing:border-box;justify-content:center;align-items:center;width:100%;min-width:0;max-width:100%;min-height:42px;padding:0 12px;font-size:13px;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-close{box-sizing:border-box;align-self:unset;z-index:10;touch-action:manipulation;border-radius:8px;flex:none;width:26px;min-width:26px;max-width:26px;height:26px;min-height:26px;max-height:26px;padding:0;line-height:0;position:absolute;top:9px;right:9px}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-close svg{width:11px;height:11px;display:block}.gengage-chat-panel-topbar{box-sizing:border-box;height:var(--_gengage-chat-header-height);background:var(--surface-card);z-index:3;border-bottom:none;flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:12px;padding:14px 16px;display:flex;position:sticky;top:0}.gengage-chat-panel-topbar-title-wrap{flex:1 1 0;align-items:center;min-width:0;display:flex}.gengage-chat-panel-topbar-back,.gengage-chat-panel-topbar-forward{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:42px;min-width:42px;height:42px;min-height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:0;transition:background .15s,border-color .15s,opacity .15s;display:flex}.gengage-chat-panel-topbar-back[hidden],.gengage-chat-panel-topbar-forward[hidden]{display:none}.gengage-chat-panel-topbar-back:hover:not(:disabled),.gengage-chat-panel-topbar-forward:hover:not(:disabled){background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default))}.gengage-chat-panel-topbar-back:disabled,.gengage-chat-panel-topbar-forward:disabled{opacity:.3;cursor:default}.gengage-chat-panel-topbar-title{width:100%;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;text-align:left;letter-spacing:-.01em;font-size:17px;font-weight:700;line-height:1.2;display:block;overflow:hidden}.gengage-chat-panel-topbar-actions{flex:none;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.gengage-chat-panel-topbar-actions:empty{display:none}.gengage-chat-panel-topbar-toolbar-host{justify-content:flex-end;align-items:center;width:100%;display:flex}.gengage-chat-panel-topbar-toolbar-host .gengage-chat-product-sort-toolbar{flex-wrap:nowrap;justify-content:flex-end;gap:8px}.gengage-chat-panel-topbar-close{display:none}@keyframes gengage-typewriter-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-typewriter-block{animation:.15s both gengage-typewriter-fade-in;display:block}@media (prefers-reduced-motion:reduce){.gengage-chat-typewriter-block{animation:none}}.gengage-product-mention{color:var(--client-primary);cursor:pointer;border-bottom:1px dashed var(--client-primary);font-weight:500;text-decoration:none;transition:border-color .15s}.gengage-product-mention:hover{border-bottom-style:solid}@keyframes gengage-skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}.gengage-chat-panel-skeleton-block{animation:1.5s ease-in-out infinite gengage-skeleton-pulse}@media (prefers-reduced-motion:reduce){.gengage-chat-panel-skeleton-block{animation:none}}.gengage-chat-input-chips{scrollbar-width:none;-ms-overflow-style:none;flex-wrap:nowrap;gap:6px;padding:4px 12px 2px;display:flex;overflow-x:auto}.gengage-chat-input-chips::-webkit-scrollbar{display:none}.gengage-chat-input-chip{border-radius:var(--radius-pill);border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;white-space:nowrap;align-items:center;padding:8px 12px;font-family:inherit;font-size:12px;font-weight:700;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.gengage-chat-input-chip:hover{background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));color:var(--client-primary)}.gengage-chat-icon{flex-shrink:0;width:14px;height:14px}.gengage-chat-input-chip-icon,.gengage-chat-pill-icon{align-items:center;margin-right:4px;display:inline-flex}.gengage-chat-product-card-img-wrapper,.gengage-chat-product-details-img-wrap{position:relative;overflow:hidden}.gengage-chat-product-card-discount-badge{border-radius:var(--radius-pill);background:var(--_gengage-discount-color);color:var(--text-inverse);z-index:1;padding:3px 8px;font-size:11px;font-weight:700;line-height:1.3;position:absolute;top:8px;left:8px}.gengage-chat-product-card-stock{border-radius:var(--radius-pill);width:fit-content;margin-top:2px;padding:2px 6px;font-size:11px;font-weight:600}.gengage-chat-product-card-stock.is-in-stock{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-product-card-stock.is-out-of-stock{background:color-mix(in srgb, var(--error) 10%, white);color:var(--error)}.gengage-chat-find-similar-pill{border:1px solid var(--border-subtle);border-radius:var(--radius-control);background:color-mix(in srgb, var(--surface-elevated) 96%, transparent);width:28px;height:28px;color:var(--text-primary);box-shadow:var(--shadow-1);cursor:pointer;z-index:2;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:11px;font-weight:500;transition:opacity .2s,box-shadow .15s;display:inline-flex;position:relative}.gengage-chat-find-similar-pill:hover{box-shadow:var(--shadow-2);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default))}@media (hover:hover) and (pointer:fine){.gengage-chat-find-similar-pill:after{content:attr(data-tooltip);background:color-mix(in srgb, var(--surface-shell) 98%, black);border:1px solid color-mix(in srgb, var(--surface-shell) 60%, white);box-shadow:var(--shadow-2);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;z-index:12;border-radius:10px;padding:6px 10px;font-size:11px;font-weight:600;line-height:1.2;transition:opacity .14s;position:absolute;top:50%;right:calc(100% + 8px);transform:translateY(-50%)}.gengage-chat-find-similar-pill:hover:after,.gengage-chat-find-similar-pill:focus-visible:after{opacity:1}}.gengage-chat-find-similar-pill-icon{justify-content:center;align-items:center;display:flex}.gengage-chat-find-similar-pill-icon svg{display:block}.gengage-chat-find-similar-pill-text{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gengage-chat-product-card-img-wrapper .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{transition:opacity .2s}@media (hover:hover) and (pointer:fine){.gengage-chat-product-card-img-wrapper:not(:hover) .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media:not(:hover) .gengage-chat-product-card-img-actions{opacity:0;pointer-events:none}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media:hover .gengage-chat-product-card-img-actions{opacity:1;pointer-events:auto}}@media (hover:none),(pointer:coarse){.gengage-chat-product-card-img-wrapper .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{opacity:1;pointer-events:auto}}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--surface-shell) 88%, transparent);width:auto;height:auto;color:var(--text-inverse);box-shadow:none;opacity:0;pointer-events:none;padding:4px 10px;position:absolute;top:40px;right:8px}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill-icon{display:none}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill-text{clip:auto;white-space:nowrap;width:auto;height:auto;margin:0;position:static;overflow:visible}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-find-similar-pill,.gengage-chat-ai-toppick-media:hover .gengage-chat-find-similar-pill,.gengage-chat-product-details-img-wrap:hover .gengage-chat-find-similar-pill{opacity:1;pointer-events:auto}.gengage-chat-favorite-btn{background:color-mix(in srgb, var(--surface-elevated) 96%, transparent);border:1px solid var(--border-subtle);border-radius:var(--radius-control);cursor:pointer;width:28px;height:28px;color:var(--text-secondary);box-shadow:var(--shadow-1);z-index:3;justify-content:center;align-items:center;padding:0;transition:color .2s,box-shadow .15s;display:flex;position:absolute;top:8px;right:8px}.gengage-chat-favorite-btn:hover{box-shadow:var(--shadow-2);color:var(--error);border-color:color-mix(in srgb, var(--error) 20%, var(--border-default))}.gengage-chat-favorite-btn--active{color:var(--error)}.gengage-chat-product-details-promos{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.gengage-chat-product-details-promo-badge{border-radius:var(--radius-pill);background:var(--gengage-chat-promo-bg,color-mix(in srgb, var(--success) 12%, white));color:var(--gengage-chat-promo-text,color-mix(in srgb, var(--success) 82%, var(--text-primary)));white-space:nowrap;box-sizing:border-box;min-height:20px;padding:2px 6px;font-size:10px;font-weight:500;display:inline-block}.gengage-chat-panel-float{box-sizing:border-box;pointer-events:none;z-index:10;flex-shrink:0;align-self:stretch;width:100%;height:0;margin-top:auto;position:sticky;bottom:0;overflow:visible}.gengage-chat-choice-prompter{pointer-events:auto;background:var(--surface-card);border:1px solid var(--border-default);z-index:5;opacity:1;border-bottom:none;border-radius:16px 16px 0 0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;width:auto;max-width:none;margin-left:0;margin-right:0;padding:12px 20px;transition:opacity .2s,transform .2s;display:grid;position:absolute;bottom:-16px;left:-16px;right:-16px;transform:translateY(0);box-shadow:0 -2px 8px #00000014}.gengage-chat-panel--scrolled .gengage-chat-choice-prompter{pointer-events:auto;opacity:1;transform:translateY(0)}.gengage-chat-choice-prompter-heading{color:var(--text-primary);margin-bottom:2px;font-size:12px;font-weight:700}.gengage-chat-choice-prompter-suggestion{color:var(--text-secondary);margin-bottom:0;font-size:12px;line-height:1.35}.gengage-chat-choice-prompter-copy{min-width:0}.gengage-chat-choice-prompter-actions{justify-content:flex-end;align-items:center;gap:10px;min-width:0;display:inline-flex}.gengage-chat-choice-prompter-cta{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-control);background:var(--ds-button-primary-bg);width:auto;min-width:180px;min-height:40px;color:var(--ds-button-primary-fg);cursor:pointer;text-align:center;padding:0 18px;font-family:inherit;font-size:13px;font-weight:700;transition:background .15s;display:inline-flex}.gengage-chat-choice-prompter-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-choice-prompter-dismiss{border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-card-soft) 92%, white);width:40px;height:40px;color:var(--text-muted);cursor:pointer;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;transition:color .15s,border-color .15s,background .15s;display:flex}.gengage-chat-choice-prompter-dismiss:hover{color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white);background:var(--client-primary-subtle)}@media (prefers-reduced-motion:reduce){.gengage-chat-choice-prompter{animation:none}}.gengage-chat-categories{flex-direction:column;gap:8px;display:flex}.gengage-chat-categories-tabs{-webkit-overflow-scrolling:touch;gap:4px;padding:4px 0;display:flex;overflow-x:auto}.gengage-chat-categories-tab{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;white-space:nowrap;align-items:center;gap:8px;padding:6px 14px;font-size:13px;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.gengage-chat-categories-tab-image{object-fit:cover;border:1px solid var(--border-subtle);background:var(--surface-card-muted);-webkit-user-drag:none;-webkit-user-select:none;user-select:none;border-radius:999px;flex:none;width:28px;height:28px}.gengage-chat-categories-tab-text{min-width:0}.gengage-chat-categories-tab:hover{background:var(--surface-card-soft);border-color:var(--border-strong)}.gengage-chat-categories-tab--active{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default))}.gengage-chat-categories-panel{flex-direction:column;gap:12px;display:flex}.gengage-chat-categories-group-summary{border:1px solid color-mix(in srgb, var(--client-primary) 20%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 6%, var(--surface-card));border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}.gengage-chat-categories-group-selection{border:1px solid color-mix(in srgb, var(--client-primary) 24%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 10%, white);max-width:100%;color:var(--client-primary);border-radius:999px;align-self:flex-start;align-items:center;gap:10px;padding:6px 12px 6px 8px;display:inline-flex}.gengage-chat-categories-group-selection-image{object-fit:cover;border:1px solid color-mix(in srgb, white 82%, var(--border-subtle) 18%);background:var(--surface-card-muted);-webkit-user-drag:none;-webkit-user-select:none;user-select:none;border-radius:999px;flex:none;width:30px;height:30px}.gengage-chat-categories-group-selection-title{min-width:0;color:inherit;font-size:13px;font-weight:800;line-height:1.25}.gengage-chat-categories-group-chips{flex-wrap:wrap;gap:6px;display:flex}.gengage-chat-categories-group-chip{border:1px solid var(--border-default);background:color-mix(in srgb, white 78%, var(--surface-card-soft));color:var(--text-secondary);border-radius:999px;align-items:center;padding:5px 10px;font-size:11px;font-weight:700;line-height:1.2;display:inline-flex}.gengage-chat-categories-group-chip--accent{border-color:color-mix(in srgb, var(--client-primary) 22%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 10%, white);color:var(--client-primary)}.gengage-chat-categories-group-reason{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.5}.gengage-chat-categories-grid{grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:12px;display:grid}.gengage-chat-categories-grid .gengage-chat-product-card{width:100%;min-width:0;max-width:none}:is(.gengage-chat-categories .gengage-chat-product-card-img,.gengage-chat-consulting-group-grid .gengage-chat-product-card-img,.gengage-chat-product-grid-wrapper:has(.gengage-chat-consulting-style-picker) .gengage-chat-product-card-img){-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.gengage-chat-categories-filter-tags{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.gengage-chat-categories-filter-tag{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;padding:4px 10px;font-size:12px;transition:background .15s,border-color .15s,color .15s}.gengage-chat-categories-filter-tag:hover{background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));color:var(--client-primary)}.gengage-chat-product-grid-view-more{border:1px solid var(--ds-button-secondary-border);border-radius:var(--radius-control);background:var(--ds-button-secondary-bg);width:100%;color:var(--ds-button-secondary-fg);cursor:pointer;text-align:center;grid-column:1/-1;margin-top:8px;padding:10px;font-size:14px;font-weight:500;transition:background .15s;display:block}.gengage-chat-product-grid-view-more:hover{background:var(--ds-button-secondary-bg-hover)}.gengage-chat-product-grid--mobile{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px 0;display:grid;overflow-x:visible}.gengage-chat-product-grid--mobile .gengage-chat-product-card{width:100%;min-width:0;max-width:none}.gengage-chat-comparison--mobile{position:relative;overflow-x:clip}.gengage-chat-comparison--mobile .gengage-chat-comparison-table-wrapper{-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 88%,#0000);mask-image:linear-gradient(90deg,#000 88%,#0000)}.gengage-chat-comparison--mobile .gengage-chat-comparison-table{table-layout:fixed;min-width:480px}.gengage-chat-comparison--mobile .gengage-chat-comparison-table th:first-child,.gengage-chat-comparison--mobile .gengage-chat-comparison-table .gengage-chat-comparison-label{background:var(--surface-card);z-index:1;box-shadow:2px 0 4px color-mix(in srgb, var(--surface-shell) 8%, transparent);position:sticky;left:0}.gengage-chat-comparison--mobile .gengage-chat-comparison-table thead th:first-child{box-sizing:border-box;width:22ch;min-width:0;max-width:22ch;padding:8px 6px}.gengage-chat-comparison--mobile .gengage-chat-comparison-table td.gengage-chat-comparison-label{text-align:left;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;vertical-align:middle;width:22ch;min-width:0;max-width:22ch;overflow:hidden}.gengage-chat-product-details-similars-heading{color:var(--text-primary);margin:16px 0 8px;font-size:18px;font-weight:700;line-height:1.2}.gengage-chat-product-details-similars{margin-top:8px}.gengage-chat-product-details-share{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:36px;height:36px;color:var(--text-muted);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;transition:color .12s,border-color .12s,background-color .12s;display:inline-flex;position:relative}.gengage-chat-product-details-share:hover{color:var(--client-primary);border-color:var(--client-primary);background:var(--client-primary-subtle)}.gengage-chat-product-details-share:before{content:attr(aria-label);border-radius:calc(var(--radius-control) - 4px);background:var(--surface-shell);color:var(--text-inverse);white-space:nowrap;pointer-events:none;opacity:0;z-index:2;padding:4px 8px;font-size:11px;font-weight:500;transition:opacity .15s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.gengage-chat-product-details-share:hover:before{opacity:1}.gengage-chat-product-details-share--copied:after{content:"✓";background:var(--_gengage-success-color);color:var(--client-on-primary);border-radius:var(--radius-control);justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex;position:absolute;inset:0}.gengage-chat-product-details-share svg{width:20px;height:20px}.gengage-chat-review-link,.gengage-chat-grounding-link{color:var(--client-primary);text-decoration:underline}@media (width<=768px){.gengage-chat-product-details-promo-badge{-webkit-line-clamp:2;line-clamp:2;white-space:normal;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}.gengage-chat-launcher:focus-visible,.gengage-chat-close:focus-visible,.gengage-chat-header-btn:focus-visible,.gengage-chat-header-powered:focus-visible,.gengage-chat-footer-link:focus-visible,.gengage-chat-send:focus-visible,.gengage-chat-action-btn:focus-visible,.gengage-chat-inline-question-btn:focus-visible,.gengage-chat-pill:focus-visible,.gengage-chat-input-chip:focus-visible,.gengage-chat-pills-arrow:focus-visible,.gengage-chat-error-retry:focus-visible,.gengage-chat-product-card-cta:focus-visible,.gengage-chat-product-details-cta:focus-visible,.gengage-chat-product-details-atc:focus-visible,.gengage-chat-product-detail-tab:focus-visible,.gengage-chat-panel-divider-toggle:focus-visible,.gengage-chat-panel-topbar-back:focus-visible,.gengage-chat-panel-topbar-forward:focus-visible,.gengage-chat-rollback-btn:focus-visible,.gengage-chat-ai-toppick-cta:focus-visible,.gengage-chat-comparison-toggle-btn:focus-visible,.gengage-chat-comparison-floating-btn:focus-visible,.gengage-chat-comparison-checkbox:focus-visible,.gengage-chat-product-sort-trigger:focus-visible,.gengage-chat-product-sort-option:focus-visible,.gengage-chat-product-variant-btn:focus-visible,.gengage-chat-product-gallery-thumb:focus-visible,.gengage-chat-find-similar-pill:focus-visible,.gengage-chat-favorite-btn:focus-visible,.gengage-chat-attach-btn:focus-visible,.gengage-chat-attach-menu-item:focus-visible,.gengage-chat-mic-btn:focus-visible,.gengage-chat-attachment-remove:focus-visible,.gengage-chat-choice-prompter-cta:focus-visible,.gengage-chat-choice-prompter-dismiss:focus-visible,.gengage-chat-categories-tab:focus-visible,.gengage-chat-categories-filter-tag:focus-visible,.gengage-chat-product-grid-view-more:focus-visible,.gengage-chat-product-details-share:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-root--mobile.gengage-chat-root--mobile-half .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter{display:none}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter{box-sizing:border-box;pointer-events:auto;opacity:1;border-radius:14px;grid-template-columns:1fr;gap:10px;width:100%;max-width:100%;max-height:none;margin:0;padding:10px 12px;display:none;position:relative;bottom:auto;left:auto;right:auto;overflow:visible;transform:none}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-panel--visible~.gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter{display:grid}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter-suggestion{display:none}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter-actions{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter-cta{width:100%;min-width:0;min-height:44px;padding:0 14px}.gengage-chat-root--mobile .gengage-chat-product-sort-trigger,.gengage-chat-root--mobile .gengage-chat-product-sort-option,.gengage-chat-root--mobile .gengage-chat-comparison-toggle-btn{min-height:40px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger-label,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger-chevron,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-comparison-toggle-label{display:none}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-dropdown{flex:none;width:auto;max-width:none}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-dropdown--open{z-index:40}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger{justify-content:center;gap:0;width:auto;min-width:44px;padding:0 10px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-menu{width:min(224px,100vw - 32px);min-width:196px;max-width:calc(100vw - 32px);top:calc(100% + 6px);left:auto;right:0}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-option{min-height:44px;padding:10px 12px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-option-label{white-space:normal;line-height:1.3}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-comparison-toggle-btn{justify-content:center;gap:0;width:44px;min-width:44px;padding:0}.gengage-chat-root--mobile .gengage-chat-input-chip{min-height:40px;padding:8px 12px}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter-dismiss{width:40px;height:40px}.gengage-chat-root--mobile .gengage-chat-panel-divider-toggle{min-height:44px}.gengage-chat-root--mobile .gengage-chat-product-card-cta,.gengage-chat-root--mobile .gengage-chat-choice-prompter-cta,.gengage-chat-root--mobile .gengage-chat-product-grid-view-more{justify-content:center;align-items:center;min-height:44px;display:flex}.gengage-chat-root--mobile .gengage-chat-panel-topbar-back,.gengage-chat-root--mobile .gengage-chat-panel-topbar-forward,.gengage-chat-root--mobile .gengage-chat-favorite-btn,.gengage-chat-root--mobile .gengage-chat-product-details-share{width:44px;min-width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-panel-topbar-close{display:none}@media (prefers-reduced-motion:reduce){.gengage-chat-consulting-loading-card{animation:none}}.gengage-chat-panel--has-scroll:after{content:"";background:linear-gradient(transparent, var(--surface-card-soft));pointer-events:none;height:40px;display:block;position:sticky;bottom:0}.gengage-chat-cart-toast{background:var(--success);color:var(--text-inverse);border-radius:var(--radius-pill);box-shadow:var(--shadow-3);pointer-events:none;opacity:0;z-index:10;white-space:nowrap;padding:8px 18px;font-size:13px;font-weight:600;transition:opacity .2s,transform .2s;position:absolute;bottom:72px;left:50%;transform:translate(-50%)translateY(8px)}.gengage-chat-cart-toast--neutral{background:var(--surface-shell);color:var(--text-inverse)}.gengage-chat-cart-toast--visible{opacity:1;transform:translate(-50%)translateY(0)}@keyframes gengage-cart-flash{0%{transform:scale(1)}30%{transform:scale(1.25)}60%{transform:scale(.95)}to{transform:scale(1)}}.gengage-chat-header-btn--cart-flash{animation:.5s gengage-cart-flash}',Td=new Set(["launchSingleProduct","launchProductList","launchHomepage"]),Ar=new Set(["PanelRestoreCard"]),Ad=new Set(["ComparisonTable","ProductDetailsPanel"]);function Ld(e){const t=e?.type;if(t){if(Ad.has(t))return t;if(t==="ProductGrid")return e.props?.similarsAppend===!0?void 0:t}}function Id(e){if(!e.trim())return!1;const t=document.createElement("template");return t.innerHTML=Ie(e),(t.content.textContent??"").trim().length>0}function Lr(e){return e.length>120?!1:/^[a-zA-Z0-9#(),.\s%/\-]+$/.test(e)}function ja(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function ra(e){return e?.type==="ProductGrid"&&e.props?.similarsAppend===!0}var Ir=class ut extends To{constructor(...t){super(...t),this._shadow=null,this._rootEl=null,this._backdropEl=null,this._launcher=null,this._floatingLauncher=null,this._inlineLauncher=null,this._drawer=null,this._bridge=null,this._drawerVisible=!1,this._pillLauncherApply=null,this._hostScrollLockActive=!1,this._hostOverflowRestore=null,this._hostScrollLockViewport=null,this._hostScrollPinning=!1,this._preventHostDocumentTouchMove=a=>{this._hostScrollLockActive&&(this._hostScrollEventShouldReachChatScroller(a)||a.preventDefault())},this._preventHostDocumentWheel=a=>{this._hostScrollLockActive&&(this._hostScrollEventShouldReachChatScroller(a)||a.preventDefault())},this._pinHostViewportScroll=()=>{if(!this._hostScrollLockActive||!this._hostScrollLockViewport||this._hostScrollPinning||this._isMobileViewport&&window.visualViewport&&window.visualViewport.height<window.innerHeight)return;const a=this._hostScrollLockViewport;window.scrollX===a.x&&window.scrollY===a.y||(this._hostScrollPinning=!0,window.scrollTo(a.x,a.y),this._hostScrollPinning=!1)},this._messages=[],this._currentMessageId=0,this._abortControllers=new Set,this._currentThreadId=null,this._lastThreadId=null,this._chatCreatedAt="",this._lastBackendContext=null,this._productSort={type:"related"},this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,this._comparisonRefreshRafId=null,this._lastAppliedKeyboardInset=0,this._syncVisualVh=null,this._viewedProductSkus=new Set,this._panelAiSpecByThread=new Map,this._choicePrompterEl=null,this._openState="full",this._mobileBreakpoint=768,this._isMobileViewport=!1,this._gaPrevMainPaneExpanded=!1,this._pdpLaunched=!1,this._plpLaunched=!1,this._homepageLaunched=!1,this._entryContextPrimed=!1,this._contextPrimingInFlight=!1,this._queuedUserMessages=[],this._productContextUnavailableSku=null,this._i18n=yt,this._extendedModeManager=null,this._activeTypewriter=null,this._activeTtsHandle=null,this._activeRequestThreadId=null,this._skuToProductItem={},this._conversationMode=null,this._initComplete=!1,this._pendingActions=[],this._bridgeContext=null,this._cartQuantity=null,this._threadsWithFirstBot=new Set,this._panel=null,this._localPanelHistory=[],this._currentPanelSource=null,this._currentInlineProductSummaryRecord=null,this._session=null,this._historyStorage=null,this._activeHistorySessionId=null,this._presentation=new Cr,this._presentationScrollTimerIds=new Set,this._eventCallbacks=new Map,this._pendingAddToCartKeys=new Set,this._lastSentAction=null,this._consecutiveErrorCount=0,this._lastErrorMessage="",this._launcherAnchorCleanup=null,this._modeController=new Ic,this._syncLauncherAnchor=null}static{this._MAX_COMPARISON_SELECTION=5}static{this._MAX_PANEL_HISTORY=10}get _assistantMode(){return this._modeController.mode}set _assistantMode(t){this._modeController.mode=t}get _uiHints(){return this._modeController.uiHints}set _uiHints(t){this._modeController.uiHints=t}async onInit(t){if(this._i18n=this._resolveI18n(t),this._chatCreatedAt=new Date().toISOString(),t.pillLauncher){const m=od(t.pillLauncher);t.launcherImageUrl=m.launcherImageUrl,t.headerAvatarUrl===void 0&&(t.headerAvatarUrl=t.pillLauncher.avatarUrl),this._pillLauncherApply=()=>m.apply(this._shadow??void 0)}this._shadow=this.root.attachShadow({mode:"open"});const a=document.createElement("style");a.textContent=Pd,this._shadow.appendChild(a);const n=this.root,r=(m,h)=>{h&&Lr(h)&&n.style.setProperty(m,h)};if(r("--gengage-chat-header-bg",t.headerBg),r("--gengage-chat-header-foreground",t.headerForeground),t.theme)for(const[m,h]of Object.entries(t.theme))m.startsWith("--")&&typeof h=="string"&&r(m,h);this._applyDiscountedPriceColorVar(t.productPriceUi?.discountedPriceColor);const i=document.createElement("div");i.className="gengage-chat-root",i.lang=At(t.locale),this._rootEl=i,this._shadow.appendChild(i);const o=t.variant??"floating";if(o==="inline"&&i.classList.add("gengage-chat--inline"),o!=="inline"){const m=document.createElement("div");m.className="gengage-chat-backdrop",m.setAttribute("aria-hidden","true"),m.setAttribute("role","button"),m.setAttribute("tabindex","-1"),m.setAttribute("aria-label",this._i18n.closeAriaLabel),m.addEventListener("click",h=>{h.preventDefault(),h.stopPropagation(),this.close()}),this._backdropEl=m,i.prepend(m)}if(o==="floating"){if(t.floatingLauncher)this._floatingLauncher=ur(t.floatingLauncher,{onSend:m=>{this.open({initialMessage:m}),this._floatingLauncher?.showOpenChatButton()},onOpenChat:()=>this.open()},this._shadow),i.appendChild(this._floatingLauncher.container);else{const m={onClick:()=>this.open(),ariaLabel:this._i18n.openButton};t.launcherImageUrl!==void 0?m.imageUrl=t.launcherImageUrl:t.launcherSvg!==void 0&&(m.svgMarkup=t.launcherSvg),t.mobileLauncherImageUrl!==void 0&&(m.mobileImageUrl=t.mobileLauncherImageUrl),t.hideMobileLauncher!==void 0&&(m.hideMobile=t.hideMobileLauncher),t.mobileBreakpoint!==void 0&&(m.mobileBreakpoint=t.mobileBreakpoint),t.launcherTooltip!==void 0&&(m.tooltip=t.launcherTooltip),this._launcher=fg(m),i.appendChild(this._launcher.container)}this._setupLauncherAnchor(t),t.inlineLauncher&&this._setupInlineLauncher(t)}o==="overlay"&&i.classList.add("gengage-chat--overlay");const s=document.createElement("div");i.appendChild(s),this._drawer=new Cc(s,{i18n:this._i18n,onSend:(m,h)=>this._sendMessage(m,h),onClose:()=>this.close(),onAttachment:m=>this._handleAttachment(m),onPanelToggle:()=>{this._drawer?.persistPanelState(t.accountId)},onHostShellSync:()=>{this._applyOpenStateClasses()},onRollback:m=>this._handleRollback(m),onPanelBack:()=>this._navigatePanelBack(),onPanelForward:()=>this._panel?.navigateForward(),onPanelClose:()=>{if(this._isMobileViewport){this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[];return}this._localPanelHistory=[],this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._currentPanelSource=null},headerTitle:t.headerTitle,headerAvatarUrl:t.headerAvatarUrl,launcherImageUrl:t.launcherImageUrl,headerBadge:t.headerBadge,headerCartUrl:t.headerCartUrl,footerAttribution:t.footerAttribution,showHeaderFavorites:typeof t.onFavoritesClick=="function"||t.headerFavoritesToggle===!0,...t.headerCartUrl||t.onCartClick?{onCartClick:()=>{t.headerCartUrl?this._saveSessionAndOpenURL(t.headerCartUrl):t.onCartClick?.()}}:{},onFavoritesClick:()=>{if(Qi(),typeof t.onFavoritesClick=="function"){t.onFavoritesClick();return}this._openFavoritesPanel()},onHistoryClick:()=>{if(this._currentPanelSource?.kind==="history"){this._navigatePanelBack();return}this._openHistoryPanel()},getMobileState:()=>this._openState??"full",getMobileViewport:()=>this._isMobileViewport,onMobileSnap:m=>{m==="close"?this.close():(this._openState=m,this._applyOpenStateClasses())},onLinkClick:m=>{this._saveSessionAndOpenURL(m)},renderMessageUISpec:m=>this._renderMessageUISpec(m),voiceEnabled:t.voiceEnabled,voiceLang:t.locale?`${t.locale.split("-")[0]??"tr"}-${(t.locale.split("-")[1]??t.locale.split("-")[0]??"TR").toUpperCase()}`:void 0,onNewChat:()=>this._startNewChat(),presentation:{onPinnedToBottomChange:m=>{this._presentation.pinnedToBottom=m},onUserInteractingChange:m=>{this._presentation.userInteracting=m},onFormerMessagesHint:()=>{this._presentation.focusedThreadId&&this._hasMultipleThreadIds()&&this._drawer?.setFormerMessagesButtonVisible(!0)},shouldBlockSoftAutoScroll:()=>this._presentation.shouldBlockStreamAutoScroll(),onReleasePresentationFocus:()=>this._releasePresentationFocus()}}),this._applyUiHints(),this._extendedModeManager=new qg({onChange:m=>this._panel?.notifyExtension(m),productDetailsInPanel:(t.isDemoWebsite??!1)&&(t.productDetailsExtended??!1)}),this._panel=new Zg({drawer:()=>this._drawer,shadow:()=>this._shadow,currentThreadId:()=>this._currentThreadId,bridge:()=>this._bridge,extendedModeManager:()=>this._extendedModeManager,i18n:()=>this._i18n,rollbackToThread:m=>this._rollbackToThread(m)}),o!=="inline"&&this._drawer.getElement().classList.add("gengage-chat-drawer--hidden");const c=this._drawer.restorePanelState(t.accountId),l=t.panelMode??"auto";l==="collapsed"?this._drawer.setPanelCollapsed(!0):l==="expanded"&&this._drawer.setForceExpanded();const g=sessionStorage.getItem("gengage_restore_session_id"),d=sessionStorage.getItem("gengage_restore_sku"),p=sessionStorage.getItem("gengage_restore_history_id"),u=!!(g&&d);u&&(sessionStorage.removeItem("gengage_restore_session_id"),sessionStorage.removeItem("gengage_restore_sku")),p&&sessionStorage.removeItem("gengage_restore_history_id"),this._historyStorage=new rd(this.config.accountId,this.config.session?.userId??"");try{const m=new Ug;await m.open(),this._session=new Sr(m);const h=p?this._historyStorage.loadSession(p):null;h?(this._activeHistorySessionId=h.id,await this._restoreFromHistoryRecord(h)):await this._restoreFromIndexedDB(u)}catch{this._session=new Sr(null);const m=p?this._historyStorage.loadSession(p):null;m&&(this._activeHistorySessionId=m.id,await this._restoreFromHistoryRecord(m))}this._registerPublicAPI(),t.mobileInitialState!==void 0&&(this._openState=t.mobileInitialState),this._mobileBreakpoint=t.mobileBreakpoint??768,this._syncViewportState();const f=()=>this._syncViewportState();if(window.addEventListener("resize",f,{passive:!0}),this.addCleanup(()=>window.removeEventListener("resize",f)),window.visualViewport){const h=()=>{if(!this._drawerVisible||!this._isMobileViewport)return;const C=this._drawer?.getElement();if(!C)return;const x=window.visualViewport,v=Math.max(0,Math.round(window.innerHeight-(x.height+x.offsetTop))),S=v>90,E=this._openState==="full"&&S?v:0;E!==this._lastAppliedKeyboardInset&&(this._lastAppliedKeyboardInset=E,C.style.setProperty("--gengage-chat-keyboard-inset",`${E}px`)),this._openState==="full"&&(C.style.setProperty("--gengage-chat-visual-vh",`${Math.round(x.height)}px`),C.style.setProperty("--gengage-chat-visual-top",`${Math.round(x.offsetTop)}px`))};this._syncVisualVh=()=>{if(!this._isMobileViewport||this._openState!=="full")return;const C=this._drawer?.getElement();if(!C||!window.visualViewport)return;const x=window.visualViewport;C.style.setProperty("--gengage-chat-visual-vh",`${Math.round(x.height)}px`),C.style.setProperty("--gengage-chat-visual-top",`${Math.round(x.offsetTop)}px`)},window.visualViewport.addEventListener("resize",h),window.visualViewport.addEventListener("scroll",h),this.addCleanup(()=>{window.visualViewport?.removeEventListener("resize",h),window.visualViewport?.removeEventListener("scroll",h)})}o==="inline"&&(this._drawerVisible=!0,this.isVisible=!0,this._applyOpenStateClasses(),this._presentation.setShown(!0),setTimeout(()=>this._maybeAutoAnchorUnreadAssistant(),60));const b={namespace:"chat",onMessage:m=>this._handleBridgeMessage(m)};t.allowedOrigins!==void 0&&(b.allowedOrigins=t.allowedOrigins),this._bridge=new Lo(b),this._lastSku=this.config.pageContext?.sku,this._lastPageType=this.config.pageContext?.pageType,this._lastSkuListKey=this.config.pageContext?.skuList?.slice(0,48).join(","),this._initComplete=!0;for(const m of this._pendingActions)this._sendAction(m.action,m.options);this._pendingActions=[],this._pillLauncherApply&&o==="floating"&&(await this._pillLauncherApply(),this._pillLauncherApply=null),De("gengage:chat:ready",{}),qi("chat"),t.onReady?.()}onUpdate(t){if(this.config.pageContext&&t.pageType!==void 0){const{sku:n,skuList:r,...i}=this.config.pageContext,o={...i};o.pageType==="pdp"&&n!==void 0&&(o.sku=n),o.pageType==="plp"&&r!==void 0&&(o.skuList=r),this.config={...this.config,pageContext:o}}let a=!1;if(t.sku!==void 0&&t.sku!==this._lastSku&&(this._lastSku=t.sku,a=!0),t.pageType!==void 0&&t.pageType!==this._lastPageType&&(this._lastPageType=t.pageType,a=!0,this._inlineLauncher?.sync(t.pageType)),t.skuList!==void 0){const n=t.skuList.slice(0,48).join(",");n!==this._lastSkuListKey&&(this._lastSkuListKey=n,a=!0)}a&&(this._resetForNewPage(),this._drawerVisible&&this.config.pageContext?.pageType==="pdp"&&this.config.pageContext?.sku&&this._primeOpenPageContext())}onShow(){this._inlineLauncher?.setActive(!0),this._showDrawer(),this.emit("open"),De("gengage:chat:open",{state:this._openState}),Zi("chat"),this.config.onOpen?.(),this._primeOpenPageContext()}_primeOpenPageContext(){this._showWelcomeIfNeeded(),this._maybePrimeEntryContextOpening(),!this._pdpLaunched&&this.config.pageContext?.pageType==="pdp"&&this.config.pageContext?.sku&&(this._pdpLaunched=!0,this._contextPrimingInFlight=!0,this._sendAction({title:"",type:"launchSingleProduct",payload:{sku:this.config.pageContext.sku,...this._resolveContextualOpeningMessage("product")?{opening_message:this._resolveContextualOpeningMessage("product")}:{},...this._resolveContextualOpeningGuidance("product")?{opening_guidance:this._resolveContextualOpeningGuidance("product")}:{}}},{silent:!0,isContextPrime:!0,preservePills:!0})),!this._usesGenericNonPdpLaunch()&&!this._plpLaunched&&this.config.pageContext?.pageType==="plp"&&this.config.pageContext.skuList?.length&&(this._plpLaunched=!0,this._contextPrimingInFlight=!0,this._sendAction({title:"",type:"launchProductList",payload:{sku_list:this.config.pageContext.skuList.slice(0,48)}},{silent:!0,isContextPrime:!0,preservePills:!0})),!this._homepageLaunched&&(this._usesGenericNonPdpLaunch()||this.config.pageContext?.pageType==="home"||this.config.pageContext?.pageType==="other")&&(this._homepageLaunched=!0,this._contextPrimingInFlight=!0,this._sendAction({title:"",type:"launchHomepage",payload:{}},{silent:!0,isContextPrime:!0,preservePills:!0}))}onHide(){this._inlineLauncher?.setActive(!1),(this.config.variant??"floating")==="floating"&&(this.root.style.display=""),this._hideDrawer(),this.emit("close"),De("gengage:chat:close",{}),this.config.onClose?.()}_setupLauncherAnchor(t){const a=t.launcherAnchor;if(!a||!a.mobile&&!a.desktop)return;const n=this.root,r=t.mobileBreakpoint??768,i=()=>window.innerWidth<=r?a.mobile:a.desktop,o=()=>{const E=i();return!!E?.dynamicRelocate&&!!E.selector},s="--gengage-chat-launcher-anchor-bottom",c="--gengage-chat-launcher-anchor-right";(a.mobile?.dynamicRelocate||a.desktop?.dynamicRelocate)&&n.style.setProperty("--gengage-chat-launcher-anchor-transition","0.35s");const l=()=>{const E=window.innerWidth<=r?a.mobile:a.desktop;if(!E)return;const P=E.selector,A=!!P,M=(A?document.querySelector(P):null)?.getBoundingClientRect();if(E.bottom!==void 0){const{offset:j,type:X}=E.bottom;if(!A)n.style.setProperty(s,`${Math.max(0,j)}px`);else if(M){const oe=X==="root"||j===0?M.bottom:M.top,pe=Math.max(0,window.innerHeight-oe+j);n.style.setProperty(s,`${pe}px`)}}if(E.right!==void 0){const{offset:j,type:X}=E.right;if(!A)n.style.setProperty(c,`${Math.max(0,j)}px`);else if(M){const oe=X==="root"||j===0?M.right:M.left,pe=Math.max(0,window.innerWidth-oe+j);n.style.setProperty(c,`${pe}px`)}}},g=()=>{n.style.removeProperty(s),n.style.removeProperty(c)};let d=!1,p=0;const u=()=>{!o()||!d||p||(p=requestAnimationFrame(()=>{p=0,o()&&d&&l()}))},f=new ResizeObserver(()=>{(!o()||d)&&l()});let b=null,m=null;const h=()=>{const E=i()?.selector;return!E||!!document.querySelector(E)},C=()=>{!o()||h()||(m?.disconnect(),m=new MutationObserver(()=>{h()&&(m?.disconnect(),m=null,x())}),m.observe(document.body,{childList:!0,subtree:!0}))},x=()=>{f.disconnect(),b?.disconnect(),b=null,d=!1;const E=i();if(!E)return;if(!E.selector){l();return}const P=document.querySelector(E.selector);P&&(f.observe(P),o()?(b=new IntersectionObserver(A=>{for(const M of A)M.isIntersecting?(d=!0,l()):(d=!1,g(),C())},{threshold:0}),b.observe(P)):l())};x();let v=0;const S=()=>{v||(v=requestAnimationFrame(()=>{v=0,d=!1,g(),m?.disconnect(),m=null,x(),C(),o()||l()}))};window.addEventListener("resize",S,{passive:!0}),window.addEventListener("scroll",u,{passive:!0}),window.visualViewport?.addEventListener("scroll",u,{passive:!0}),this._syncLauncherAnchor=()=>{d=!1,g(),m?.disconnect(),m=null,x(),C()},o()?C():(l(),[100,400,1e3].forEach(E=>window.setTimeout(l,E))),this._launcherAnchorCleanup=()=>{f.disconnect(),b?.disconnect(),m?.disconnect(),window.removeEventListener("resize",S),window.removeEventListener("scroll",u),window.visualViewport?.removeEventListener("scroll",u),v&&cancelAnimationFrame(v),p&&cancelAnimationFrame(p)}}syncLauncherAnchor(){this._syncLauncherAnchor?.()}syncInlineLauncher(){this._inlineLauncher?.sync(this.config.pageContext?.pageType)}_setupInlineLauncher(t){const a=t.inlineLauncher;a&&(this._inlineLauncher=fr(a,{onClick:()=>this.open()},{shadowRoot:this._shadow,getPageType:()=>this.config.pageContext?.pageType}),this._inlineLauncher.sync(this.config.pageContext?.pageType),[100,400,1e3,2500].forEach(n=>{window.setTimeout(()=>{this._inlineLauncher?.sync(this.config.pageContext?.pageType)},n)}))}onDestroy(){this._releaseHostDocumentScrollLock(),this._abortAllActiveRequests(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._presentationScrollTimerIds.forEach(t=>clearTimeout(t)),this._presentationScrollTimerIds.clear(),this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._comparisonRefreshRafId!==null&&(cancelAnimationFrame(this._comparisonRefreshRafId),this._comparisonRefreshRafId=null),this._launcherAnchorCleanup?.(),this._launcherAnchorCleanup=null,this._syncLauncherAnchor=null,this._floatingLauncher?.destroy(),this._floatingLauncher=null,this._inlineLauncher?.destroy(),this._inlineLauncher=null,this._drawer?.destroy(),Ln(),this._drawer=null,this._bridge?.destroy(),this._bridge=null,this._extendedModeManager=null,this._panel?.destroy(),this._panel=null,this._session?.close(),this._session=null,this._historyStorage=null,this._activeHistorySessionId=null,this._localPanelHistory=[],this._currentPanelSource=null,window.gengage&&delete window.gengage.chat,this._shadow&&(this._shadow.innerHTML="",this._shadow=null),this._rootEl=null}open(t){t?.state!==void 0&&(this._openState=t.state,this._drawerVisible&&this._applyOpenStateClasses()),this.show(),t?.initialMessage!==void 0&&this._sendMessage(t.initialMessage)}openWithAction(t,a){a?.sku!==void 0&&this.update({sku:a.sku}),this._markCurrentContextLaunchHandled(),a?.state!==void 0?this._openState=a.state:this._isMobileViewport&&(this._openState="half"),this.show(),this._drawerVisible&&this._applyOpenStateClasses(),this._sendAction(t,{skipFullSheet:!0})}sendMessage(t){this._sendMessage(t)}sendAction(t,a){this._sendAction(t,a)}close(){this.hide()}saveSession(t,a){sessionStorage.setItem("gengage_restore_session_id",t),sessionStorage.setItem("gengage_restore_sku",a),this._activeHistorySessionId?sessionStorage.setItem("gengage_restore_history_id",this._activeHistorySessionId):sessionStorage.removeItem("gengage_restore_history_id")}get isOpen(){return this._drawerVisible}addCallback(t,a){let n=this._eventCallbacks.get(t);return n||(n=new Set,this._eventCallbacks.set(t,n)),n.add(a),()=>{n.delete(a),n.size===0&&this._eventCallbacks.delete(t)}}_applyDiscountedPriceColorVar(t){const a=this.root;t==="client"?a.style.setProperty("--gengage-discounted-price-color","var(--client-primary)"):a.style.removeProperty("--gengage-discounted-price-color")}_abortAllActiveRequests(){for(const t of this._abortControllers)t.abort();this._abortControllers.clear()}_pruneEmptyStreamingAssistantPlaceholders(){const t=[];for(const a of this._messages){if(a.role==="assistant"&&!a.frontendOnly&&(a.status==="streaming"||a.status==="done")&&(a.content==null||a.content.length===0)){if(a.threadId){const n=this._messages.some(r=>r.id!==a.id&&r.threadId===a.threadId&&r.frontendOnly)||this._panel?.snapshotTypes.has(a.id)===!0;this._threadsWithFirstBot.delete(a.threadId),this._presentation.finalizeAssistantGroup(a.threadId),this._shadow?.querySelectorAll(`[data-thread-id="${Pe(a.threadId)}"]:not([data-message-id])`).forEach(r=>r.remove()),this._panel&&!n&&(this._panel.threads=this._panel.threads.filter(r=>r!==a.threadId))}this._drawer?.removeMessageBubble(a.id),this._panel?.snapshots.delete(a.id),this._panel?.snapshotTypes.delete(a.id);continue}t.push(a)}this._messages.length=0,this._messages.push(...t)}_clearConversationState(t){this._activeRequestThreadId=null,this._abortAllActiveRequests(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._messages.length=0,this._drawer?.clearMessages(),this._drawer?.clearPanel(),this._currentPanelSource=null,this._currentInlineProductSummaryRecord=null,this._localPanelHistory=[],this._panel&&(this._panel.clearSnapshots(),this._panel.threads=[],this._panel.activePanelMessageId=null,this._panel.currentType=null),this._panelAiSpecByThread.clear(),this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,this._viewedProductSkus.clear(),this._threadsWithFirstBot.clear(),this._currentThreadId=null,this._lastThreadId=null,this._lastBackendContext=null,this._chatCreatedAt=new Date().toISOString(),t&&(this._pdpLaunched=!1,this._plpLaunched=!1,this._homepageLaunched=!1,this._entryContextPrimed=!1),this._contextPrimingInFlight=!1,this._queuedUserMessages=[],this._productContextUnavailableSku=null,this._presentation.reset(),this._presentation.setShown(this._drawerVisible),this._drawer?.setPresentationFocus(null),this._drawer?.setFormerMessagesButtonVisible(!1),this._drawer?.setPills([]),yr(),this._modeController.reset()&&(this._drawer?.setInputPlaceholder(this._i18n.inputPlaceholder),this._drawer?.setAttachmentControlsVisible(!0),this._drawer?.setBeautyPhotoStepCard({visible:!1}))}_resetForNewPage(){this._activeHistorySessionId=null,this._bridgeContext=null,this._clearConversationState(!0)}_startNewChat(){this._activeHistorySessionId=null,this._clearConversationState(!1),this._showWelcomeIfNeeded(),this._drawer?.focusInput()}_clearAssistantPanelLikeStreamClearPanel(){this._clearChoicePrompter(),this._drawer?.clearPanel(),this._currentPanelSource=null,this._panelAiSpecByThread.clear(),this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,this._panel&&(this._panel.currentType=null,this._panel.updateExtendedMode(""),this._panel.updateTopBar(""))}_flushPresentationScroll(){const t=this._presentation.scrollRequest;if(!t||!this._drawer)return;let a=!1;t.type==="thread"&&t.threadId?(a=this._drawer.scrollThreadIntoView(t.threadId,t.behavior),a||(this._drawer.scrollToBottomPresentation(t.behavior),a=!0)):t.type==="bottom"&&(this._drawer.scrollToBottomPresentation(t.behavior),a=!0),a&&this._presentation.consumeScrollRequest(t.id)}_schedulePresentationScrollFlush(){const t=setTimeout(()=>{this._presentationScrollTimerIds.delete(t),this._flushPresentationScroll()},40);this._presentationScrollTimerIds.add(t)}_focusPresentationThread(t,a="smooth",n=!1){this._presentation.requestThreadFocus(t,a),n&&this._drawer?.setPresentationFocus(t),this._drawer?.setFormerMessagesButtonVisible(!1),this._schedulePresentationScrollFlush()}_scrollInlineIntoView(t,a){if(a){this._focusPresentationThread(a,"auto");return}t.scrollIntoView({behavior:"auto",block:"start"})}_releasePresentationFocus(){this._presentation.releaseFocusedThread(),this._drawer?.setPresentationFocus(null),this._drawer?.setFormerMessagesButtonVisible(!1)}_hasMultipleThreadIds(){const t=new Set;for(const a of this._messages)a.threadId&&t.add(a.threadId);return t.size>1}_orderedThreadIds(){const t=[],a=new Set;for(const n of this._messages)n.threadId&&!a.has(n.threadId)&&(a.add(n.threadId),t.push(n.threadId));return t}_maybeAutoAnchorUnreadAssistant(){if(!this._drawer||!this._presentation.shown)return;const t=this._orderedThreadIds();if(t.length===0)return;const a=id(t,this._presentation);if(!a)return;const n=`${a}:assistant`;this._presentation.lastAutoAnchoredGroupId!==n&&(this._presentation.userInteracting&&!this._presentation.pinnedToBottom||this._drawer.scrollThreadIntoView(a,"smooth")&&this._presentation.markGroupAutoAnchored(n))}_handleBridgeMessage(t){switch(t.type){case"openChat":this.open();break;case"closeChat":this.close();break;case"startNewChatWithLauncherAction":{const a=t.payload,n=a?.action,r=ja(n)?n:ja(a)?a:null;r&&this._sendAction(r,{silent:!0}),this.open();break}case"startNewChatWithDetailContext":{const a=t.payload;if(a&&typeof a=="object"){this._bridgeContext=a;const n=a.sku;if(n&&this.update({sku:n}),ja(a.action)){this._markCurrentContextLaunchHandled(),this.open(),this._sendAction(a.action);break}}this.open();break}case"launcherAction":{const a=t.payload?.action;a&&typeof a=="object"&&"type"in a&&this._sendAction(a);break}case"scrollToBottom":this._presentation.requestScrollToBottom("smooth"),this._schedulePresentationScrollFlush();break;case"addToCardHandler":this._bridge?.send("addToCardResult",t.payload);break;case"cartQuantityHandler":{const a=t.payload;a&&"quantity"in a&&typeof a.quantity=="number"&&(this._cartQuantity=a.quantity);break}case"favoritesCountHandler":{const a=t.payload?.count;typeof a=="number"&&a>=0&&this._drawer?.updateFavoritesBadge(a);break}case"minimizeRequestedByUser":this._extendedModeManager?.setHiddenByUser(!0);break;case"bgColorChange":{const a=t.payload?.color;typeof a=="string"&&Lr(a)&&this._shadow&&this._shadow.host.style.setProperty("--gengage-chat-bg",a);break}default:break}}_registerPublicAPI(){window.gengage||(window.gengage={}),window.gengage.chat={open:t=>this.open(t),openWithAction:(t,a)=>this.openWithAction(t,a),sendMessage:t=>this.sendMessage(t),sendAction:(t,a)=>this.sendAction(t,a),close:()=>this.close(),saveSession:(t,a)=>this.saveSession(t,a),get isOpen(){return!1},on:(t,a)=>this.on(t,a),addCallback:(t,a)=>this.addCallback(t,a)},Object.defineProperty(window.gengage.chat,"isOpen",{get:()=>this._drawerVisible})}_showDrawer(){if(this._drawerVisible)return;this._drawerVisible=!0;const t=this._drawer?.getElement();t&&t.classList.remove("gengage-chat-drawer--hidden"),this._applyOpenStateClasses(),this._syncVisualVh?.(),this._drawer?.trapFocus(),this._isMobileViewport||this._drawer?.focusInput(),this._extendedModeManager?.setChatShown(!0),this._presentation.setShown(!0),setTimeout(()=>this._maybeAutoAnchorUnreadAssistant(),60)}_showWelcomeIfNeeded(){if(this._messages.length!==0)return;const t=this._resolveOpeningContextKey(),a=this._resolveContextualOpeningActions(t);if(a.length>0&&this._drawer?.setPills(a.map(i=>({label:i.title,onAction:()=>this._sendAction(this._resolveContextualOpeningAction(i,t))}))),this._hasDedicatedContextLaunch()||this._shouldPrimeContextualOpening())return;const n=this._resolveContextualOpeningMessage(t);if(!n)return;const r={id:dn(),role:"assistant",content:n,timestamp:Date.now(),status:"done"};this._messages.push(r),this._drawer?.addMessage(r)}_resolveOpeningContextKey(){switch(this.config.pageContext?.pageType){case"home":return"home";case"search":case"plp":return"listing";case"pdp":return"product";default:return"default"}}_resolveContextualOpeningMessage(t=this._resolveOpeningContextKey()){return this.config.openingMessagesByContext?.[t]??(t!=="default"?this.config.openingMessagesByContext?.default:void 0)??this.config.welcomeMessage}_resolveContextualOpeningGuidance(t=this._resolveOpeningContextKey()){return this.config.openingGuidanceByContext?.[t]??(t!=="default"?this.config.openingGuidanceByContext?.default:void 0)}_resolveContextualOpeningActions(t=this._resolveOpeningContextKey()){const a=this.config.welcomeActionsByContext?.[t]??(t!=="default"?this.config.welcomeActionsByContext?.default:void 0);return a?.length?a.filter(n=>typeof n?.title=="string"&&n.title.trim().length>0):(this.config.welcomeActions??[]).filter(n=>typeof n=="string"&&n.trim().length>0).map(n=>({title:n}))}_resolveContextualOpeningAction(t,a=this._resolveOpeningContextKey()){const n=t.title.trim(),r=this.config.pageContext?.sku??this._readContextStringField("sku"),i=this._readContextStringListField("visible_skus")??[];return t.icon==="review"&&r?{title:n,type:"reviewSummary",payload:{sku:r}}:t.icon==="similar"&&r?{title:n,type:"findSimilar",payload:{sku:r}}:t.icon==="compare"&&a==="listing"&&i.length>=2?{title:n,type:"getComparisonTable",payload:{sku_list:i.slice(0,2)}}:{title:n,type:"user_message",payload:n}}_readContextStringField(t){const a=this.config.pageContext,n=a?.extra&&typeof a.extra=="object"&&!Array.isArray(a.extra)?a.extra:void 0,r=t.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()),i=a?.[t]??n?.[t]??a?.[r]??n?.[r];return typeof i=="string"&&i.trim().length>0?i.trim():void 0}_readContextStringListField(t){const a=this.config.pageContext,n=a?.extra&&typeof a.extra=="object"&&!Array.isArray(a.extra)?a.extra:void 0,r=t.replace(/_([a-z])/g,(s,c)=>c.toUpperCase()),i=a?.[t]??n?.[t]??a?.[r]??n?.[r];if(!Array.isArray(i))return;const o=i.filter(s=>typeof s=="string"&&s.trim().length>0);return o.length>0?o:void 0}_usesGenericNonPdpLaunch(){const t=this.config.pageContext?.pageType;return this.config.genericNonPdpLaunch===!0&&t!==void 0&&t!=="pdp"}_markCurrentContextLaunchHandled(){const t=this.config.pageContext;if(t){if(t.pageType==="pdp"&&t.sku){this._pdpLaunched=!0;return}if(this._usesGenericNonPdpLaunch()){this._homepageLaunched=!0;return}if(t.pageType==="plp"&&t.skuList?.length){this._plpLaunched=!0;return}(t.pageType==="home"||t.pageType==="other")&&(this._homepageLaunched=!0)}}_buildEntryOpeningPageDetails(){const t={};t.url=this.config.pageContext?.url??window.location.href;const a=this._readContextStringField("page_title");a&&(t.page_title=a);const n=this._readContextStringField("page_description");n&&(t.page_description=n);const r=this._readContextStringField("search_query");r&&(t.search_query=r);const i=this._readContextStringListField("visible_skus");i?.length&&(t.visible_skus=i);const o=this._readContextStringListField("popular_searches");o?.length&&(t.popular_searches=o);const s=this.config.pageContext?.categoryTree??this._readContextStringListField("category_path");return s?.length&&(t.category_path=s),Object.keys(t).length>0?t:void 0}_hasDedicatedContextLaunch(){const t=this.config.pageContext;return t?!!(t.pageType==="pdp"&&t.sku||this._usesGenericNonPdpLaunch()||t.pageType==="plp"&&t.skuList?.length||t.pageType==="home"):!1}_shouldPrimeContextualOpening(){return this._messages.length!==0||this._entryContextPrimed||this._contextPrimingInFlight||this._hasDedicatedContextLaunch()?!1:!!(this.config.openingMessagesByContext||this.config.openingGuidanceByContext||this.config.welcomeActionsByContext)}_maybePrimeEntryContextOpening(){const t=this._resolveOpeningContextKey();if(!this._shouldPrimeContextualOpening())return;this._entryContextPrimed=!0;const a={text:"",is_entry_context_opening:1,opening_context_key:t},n=this._buildEntryOpeningPageDetails();n&&(a.page_details=n);const r=this._resolveContextualOpeningMessage(t);r&&(a.opening_message=r);const i=this._resolveContextualOpeningGuidance(t);i&&(a.opening_guidance=i),this._sendAction({title:"",type:"user_message",payload:a},{silent:!0,preservePills:!0})}_hideDrawer(){if(!this._drawerVisible)return;this._drawer?.releaseFocus(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._drawerVisible=!1,this._openState="full";const t=this._drawer?.getElement();t&&(t.classList.add("gengage-chat-drawer--hidden"),t.style.removeProperty("--gengage-chat-keyboard-inset")),this._lastAppliedKeyboardInset=0,this._applyOpenStateClasses(),this._extendedModeManager?.setChatShown(!1),this._presentation.setShown(!1),this._drawer?.setPresentationFocus(null),this._drawer?.setFormerMessagesButtonVisible(!1)}_syncViewportState(){if(this._rootEl){if(this._isMobileViewport=window.innerWidth<=this._mobileBreakpoint,this._rootEl.classList.toggle("gengage-chat-root--mobile",this._isMobileViewport),this._launcher){const t=this._isMobileViewport&&this.config.hideMobileLauncher===!0;this._launcher.container.classList.toggle("gengage-chat-launcher--hidden-mobile",t)}this._applyOpenStateClasses()}}_isMaximizedForHostChrome(){if(!this._drawerVisible)return!1;const t=this.config.variant??"floating";return t==="inline"?!1:t==="overlay"?!0:!(!(this._drawer?.isPanelVisible()??!1)||!this._isMobileViewport&&(this._drawer?.isPanelCollapsed()??!1))}_shouldLockHostDocumentScroll(){if(!this._drawerVisible)return!1;const t=this.config.variant??"floating";return t==="inline"?!1:t==="overlay"||this._isMobileViewport?!0:this._isMaximizedForHostChrome()}_applyOpenStateClasses(){if(!this._rootEl)return;const t=this._drawerVisible&&this._isMobileViewport&&this._openState==="half",a=this._drawerVisible&&this._isMobileViewport&&this._openState==="full",n=this._isMaximizedForHostChrome();if(this._rootEl.classList.toggle("gengage-chat-root--open",this._drawerVisible),this._rootEl.classList.toggle("gengage-chat-root--mobile-half",t),this._rootEl.classList.toggle("gengage-chat-root--mobile-full",a),this._rootEl.classList.toggle("gengage-chat-root--maximized-host-chrome",n),a&&this._syncVisualVh?.(),this._backdropEl){const r=n&&(this.config.variant??"floating")!=="inline";this._backdropEl.setAttribute("aria-hidden",r?"false":"true")}this._syncHostDocumentScrollLock(),this._maybeTrackChatbotMainPaneGa()}_mainPaneExpandedForAnalytics(){const t=this._drawer;return t?.isPanelVisible()?this._isMobileViewport?!0:!t.isPanelCollapsed():!1}_maybeTrackChatbotMainPaneGa(){const t=this._mainPaneExpandedForAnalytics();t&&!this._gaPrevMainPaneExpanded&&ao(),this._gaPrevMainPaneExpanded=t}_syncHostDocumentScrollLock(){if(!(typeof document>"u")){if((this.config.variant??"floating")==="inline"){this._releaseHostDocumentScrollLock();return}this._shouldLockHostDocumentScroll()?this._applyHostDocumentScrollLock():this._releaseHostDocumentScrollLock()}}_hostScrollEventShouldReachChatScroller(t){try{const a=t.composedPath();if(a.length===0)return!0;if(!a.includes(this.root))return!1;for(const n of a){if(n===this.root)break;if(!(n instanceof HTMLElement))continue;if(this._backdropEl&&(n===this._backdropEl||this._backdropEl.contains(n)))return!1;const r=window.getComputedStyle(n),i=(r.overflowY==="auto"||r.overflowY==="scroll")&&n.scrollHeight>n.clientHeight+1,o=(r.overflowX==="auto"||r.overflowX==="scroll")&&n.scrollWidth>n.clientWidth+1;if(i||o)return!0}return!1}catch{return!1}}_applyHostDocumentScrollLock(){if(typeof document>"u"||typeof window>"u")return;const t=document.documentElement;if(!this._hostOverflowRestore){const a=document.body;this._hostOverflowRestore={htmlOverflow:t.style.overflow,bodyOverflow:a?.style.overflow??"",htmlOverscroll:t.style.overscrollBehavior,bodyOverscroll:a?.style.overscrollBehavior??""},t.dataset.gengageHostScrollLock="1",t.style.overflow="hidden",t.style.overscrollBehavior="none",a&&(a.style.overflow="hidden",a.style.overscrollBehavior="none"),this._hostScrollLockViewport={x:window.scrollX,y:window.scrollY}}this._hostScrollLockActive||(window.addEventListener("touchmove",this._preventHostDocumentTouchMove,{capture:!0,passive:!1}),window.addEventListener("wheel",this._preventHostDocumentWheel,{capture:!0,passive:!1}),document.addEventListener("touchmove",this._preventHostDocumentTouchMove,{capture:!0,passive:!1}),document.addEventListener("wheel",this._preventHostDocumentWheel,{capture:!0,passive:!1}),window.addEventListener("scroll",this._pinHostViewportScroll,{capture:!0,passive:!0}),this._hostScrollLockActive=!0)}_releaseHostDocumentScrollLock(){if(typeof document>"u")return;typeof window<"u"&&(window.removeEventListener("scroll",this._pinHostViewportScroll,{capture:!0}),window.removeEventListener("touchmove",this._preventHostDocumentTouchMove,{capture:!0}),window.removeEventListener("wheel",this._preventHostDocumentWheel,{capture:!0})),document.removeEventListener("touchmove",this._preventHostDocumentTouchMove,{capture:!0}),document.removeEventListener("wheel",this._preventHostDocumentWheel,{capture:!0}),this._hostScrollLockActive=!1,this._hostScrollLockViewport=null,this._hostScrollPinning=!1;const t=document.documentElement,a=document.body;this._hostOverflowRestore?(t.style.overflow=this._hostOverflowRestore.htmlOverflow,t.style.overscrollBehavior=this._hostOverflowRestore.htmlOverscroll,a&&(a.style.overflow=this._hostOverflowRestore.bodyOverflow,a.style.overscrollBehavior=this._hostOverflowRestore.bodyOverscroll),this._hostOverflowRestore=null):t.dataset.gengageHostScrollLock==="1"&&(t.style.removeProperty("overflow"),t.style.removeProperty("overscroll-behavior"),a?.style.removeProperty("overflow"),a?.style.removeProperty("overscroll-behavior")),delete t.dataset.gengageHostScrollLock}_handleAttachment(t){const a=$o(t);if(!a.ok){De("gengage:global:error",{message:a.reason==="invalid_type"?this._i18n.invalidFileType:this._i18n.fileTooLarge,source:"chat"});return}this._drawer?.stageAttachment(t)}_sendMessage(t,a){if(a===void 0){if(this._contextPrimingInFlight&&Er(t)==="directAddToCart"){this._queuedUserMessages.push({text:t});return}if(this._maybeHandleDirectAddToCartCommand(t))return}this._contextPrimingInFlight&&(this._abortAllActiveRequests(),this._contextPrimingInFlight=!1,this._queuedUserMessages=[]),this._ensureMobileFullSheetForPanel(),ro(),this._messages.some(r=>r.role==="user")||io(),Ge("chat","sendMessage",{mode:this._assistantMode,hasAttachment:a!==void 0,textLength:t.length});const n=a!==void 0?{title:t,type:this._modeController.resolveAttachmentActionType(),payload:t?{text:t}:{}}:{title:t,type:"user_message",payload:t};a!==void 0?this._sendAction(n,{attachment:a}):this._sendAction(n)}_flushQueuedUserMessages(){if(this._contextPrimingInFlight||this._queuedUserMessages.length===0)return;const t=[...this._queuedUserMessages];this._queuedUserMessages=[];for(const a of t)this._sendMessage(a.text,a.attachment)}_applyUiHints(){this._modeController.applyUiHints(this._drawer,this._i18n.inputPlaceholder,()=>{this._clearChoicePrompter()})}_handleRedirectMetadata(t){this._modeController.handleRedirect(t)}_sendAction(t,a){if(a?.skipFullSheet||this._ensureMobileFullSheetForPanel(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._lastSentAction={action:t,options:a},!this._initComplete){this._pendingActions.length<10&&this._pendingActions.push({action:t,options:a});return}if(this._clearChoicePrompter(),a?.preservePanel||yr(),!a?.preservePanel&&this._comparisonSelectMode&&t.type!=="getComparisonTable"&&(this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[]),a?.preservePanel||(this._localPanelHistory=[]),this._currentThreadId&&this._lastThreadId&&this._lastThreadId>this._currentThreadId){const y=this._currentThreadId,z=this._messages.filter(I=>I.threadId!==void 0&&I.threadId>y);this._messages=this._messages.filter(I=>!I.threadId||I.threadId<=y);for(const I of z)this._shadow?.querySelector(`[data-message-id="${Pe(I.id)}"]`)?.remove(),this._panel?.deleteSnapshotForMessage(I.id);this._panel?.pruneThreadsAfter(y),this._shadow?.querySelectorAll("[data-thread-id]")?.forEach(I=>{I instanceof HTMLElement&&I.dataset.threadId&&I.dataset.threadId>y&&I.remove()})}a?.preservePills||this._drawer?.setPills([]),this._drawer?.clearInputAreaChips();let n=!1;const r=y=>{n!==y&&(n=y,this._bridge?.send("isResponding",y))};r(!0);const i=dn();this._currentThreadId=i,this._lastThreadId=i,this._panel&&!Td.has(t.type)&&(this._panel.lastActionType=t.type);const o=a?.preservePanel===!0,s=a?.silent===!0&&a?.isContextPrime===!0,c=s&&t.type==="launchSingleProduct";let l;if(o||(this._activeRequestThreadId=i),!a?.silent&&!o&&this._drawer?.setPresentationFocus(i),!a?.silent){const y=typeof t.payload=="string"?t.payload:typeof t.payload?.text=="string"?t.payload.text:t.title,z=this._messages.length>0?this._messages[this._messages.length-1]:void 0;if(!(z!==void 0&&z.role==="user"&&z.content===y)){(!this._messages.some(O=>O.role==="user")||this._drawer?.isKvkkBannerVisible())&&(Ua(this.config.accountId),this._drawer?.hideKvkkBanner());const I=this._createMessage("user",y);I.threadId=i,a?.attachment!==void 0&&(I.attachment=a.attachment),this._drawer?.addMessage(I),a?.attachment!==void 0&&this._modeController.isBeautyConsulting&&this._drawer?.setBeautyPhotoStepCard({visible:!1}),this._messages.push(I),this._persistHistoryToLocalStorage()}}const g=!a?.silent&&this._assistantMode==="shopping"&&this._hasUnavailableProductContext()&&(t.type==="user_message"||t.type==="inputText");let d=this._currentPanelSource,p=!1;const u=t.type==="user_message"||t.type==="inputText",f=()=>{p||a?.preservePanel||(d=this._currentPanelSource,p=!0)},b=()=>{if(this._drawer?.isPanelLoading()){if(!u&&d){const y=this._buildRenderContext(),z=this._renderPanelFromSource(d,y);this._drawer.setPanelContent(z),this._currentPanelSource=d}else this._drawer.clearPanel(),this._currentPanelSource=null;d=null}};t.type==="getComparisonTable"&&(this._drawer?.showPanelLoading("comparisonTable"),this._panel?.updateTopBarForLoading("comparisonTable")),!a?.silent&&!o&&this._pruneEmptyStreamingAssistantPlaceholders(),this._drawer?.showTypingIndicator();let m="";const h=this._createMessage("assistant","");h.threadId=i,h.status="streaming",a?.silent&&(h.silent=!0),this._messages.push(h),this._presentation.registerAssistantActivity(i),this._focusPresentationThread(i,"smooth",a?.silent||o),a?.preservePanel||(this._contextPrimingInFlight&&!s&&(this._contextPrimingInFlight=!1,this._queuedUserMessages=[]),this._abortAllActiveRequests());const C={middlewareUrl:this.config.middlewareUrl,...this.config.accountId?{accountId:this.config.accountId}:{},...this.config.injectorAdapter?{injectorAdapter:this.config.injectorAdapter}:{}};a?.attachment!==void 0&&(C.attachment=a.attachment);const x=this._getVisibleMessages().filter(y=>!y.frontendOnly&&y!==h&&(y.content||y.role==="assistant")).slice(-50).map(y=>({role:y.role==="user"?"user":"model",content:y.content??""})),v={outputLanguage:Ed(this.config.locale),parentUrl:window.location.href,windowWidth:String(window.innerWidth),windowHeight:String(window.innerHeight),selfUrl:"",id:this.config.session?.sessionId??"",userId:this.config.session?.userId??"",appId:this.config.accountId,threads:[],createdAt:this._chatCreatedAt,kvkkApproved:Tr(this.config.accountId),voiceEnabled:this.config.voiceEnabled??!1,threadId:i,isControlGroup:this.config.session?.abTestVariant==="control",isMobile:this._isMobileViewport};this.config.isDemoWebsite===!0&&(v.openPdpSimilars=!0),this._modeController.isShopping||(v.assistantMode=this._modeController.mode),this.config.session?.viewId!==void 0&&(v.viewId=this.config.session.viewId);const S=Ys(t,{pageContext:this.config.pageContext,backendContext:this._lastBackendContext,isMobile:this._isMobileViewport,genericNonPdpLaunch:this.config.genericNonPdpLaunch}),E={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",type:S.type,locale:At(this.config.locale),meta:v,context:{...this._lastBackendContext??{},messages:x,session_id:this.config.session?.sessionId??""}};this.config.session?.userId!==void 0&&(E.user_id=this.config.session.userId),this.config.session?.viewId!==void 0&&(E.view_id=this.config.session.viewId),S.payload!==void 0&&(E.payload=S.payload),!g&&this.config.pageContext?.sku!==void 0&&(E.sku=this.config.pageContext.sku),!g&&this.config.pageContext?.pageType!==void 0&&(E.page_type=this.config.pageContext.pageType);let P=!1,A=!1,M=!1,j=!1,X=!1,oe=!1;const pe=zc();let L=null,F=null;const k=()=>{if(this._drawer&&!j){if(!M){this._drawer.setPanelAiZoneState("hidden");return}X?this._drawer.setPanelAiZoneState("hidden"):this._drawer.setPanelAiZoneState("analyzing",{analyzingLabel:this._i18n.aiAnalysisAnalyzingLabel})}},B=y=>{if(!L||!this._drawer)return;const z=this._buildRenderContext();z.isStreaming=y;const I=this._renderUISpec(L,z);j=!0,this._drawer.setPanelAiZoneState("results",{resultEl:I}),L=null},R=(y,z,I)=>{if(y==="ProductGrid"||y==="CategoriesContainer"){M=!0,B(I),k();return}z!=="appendSimilars"&&z!=="append"&&(M=!1,j=!1,L=null,this._drawer?.setPanelAiZoneState("hidden"))},D=y=>(y==="ProductGrid"||y==="CategoriesContainer")&&(M||j||L!==null),$=()=>{oe||(oe=!0,this._drawer?.removeTypingIndicator(),r(!1),this._bridge?.send("loadingMessage",{text:null}))},ce=(y,z,I)=>{if(!this._drawer||!this._panel)return;const O=y.elements[y.root];if(I==="ProductGrid"&&O){const U=Ba(O);if(U.isConsulting){const q=this._drawer.getPanelContentElement();if(q&&ug(q,U,z)){this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,this._drawer.setComparisonDockContent(null),this._currentPanelSource={kind:"spec",spec:y},this._panel.currentType=I,this._drawer.resyncPanelTopBarFromCurrentContent();return}}}this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,this._drawer.setComparisonDockContent(null),this._drawer.setPanelContent(this._renderUISpec(y,z),{preserveAiZone:D(I)}),this._currentPanelSource={kind:"spec",spec:y},this._panel.currentType=I},ee=(y,z,I,O)=>{if(!this._panel)return;y==="ProductDetailsPanel"&&t.type==="launchSingleProduct"&&this._clearUnavailableProductContext(),h.threadId&&this._panel.threads[this._panel.threads.length-1]!==h.threadId&&this._panel.threads.push(h.threadId),this._isMobileViewport&&y==="ProductGrid"&&this._ensureMobilePanelOverlayVisible();const U=this._panel.currentType??y,q=z?.props?.panelTitle;this._panel.updateTopBar(U,q),this._panel.updateExtendedMode(y),this._isMobileViewport&&c&&this._drawer?.hideMobilePanel(),R(y,I,O)};let Y=null;if(Y=ec(E,{onTextChunk:(y,z,I)=>{if(!o&&i!==this._activeRequestThreadId||(m+=y,I?.skuToProductItem&&(this._skuToProductItem={...this._skuToProductItem,...I.skuToProductItem}),I?.conversationMode&&(this._conversationMode=I.conversationMode),I?.renderHint&&(h.renderHint=I.renderHint),!this._drawer))return;let O=m;const U=I?.kvkk===!0,q=U?{fallbackToFirstBlock:!0}:void 0;if(U||Ha(O)){if(z){const ne=this.config.accountId;if(!Tr(ne)){const Q=Sd(O,q);Q&&this._drawer?.showKvkkBanner(Q),Ua(ne)}}O=kd(O,q),m=O}Id(O)&&$();const Z=this._shadow?.querySelector(`[data-message-id="${h.id}"] .gengage-chat-bubble-text`);if(Z?Z.innerHTML=Ie(O):(h.content=O,h.role==="assistant"&&h.threadId&&!this._threadsWithFirstBot.has(h.threadId)&&(this._threadsWithFirstBot.add(h.threadId),this._drawer.markFirstBotMessage(h.id)),this._drawer.addMessage(h)),z)if(h.content=O,h.status="done",rn(),Mc(h))this._drawer?.updateBotMessage(h.id,O,"photo_analysis",h.photoAnalysis),h.threadId&&this._focusPresentationThread(h.threadId,"auto");else{const ne=this._shadow?.querySelector(`[data-message-id="${h.id}"] .gengage-chat-bubble-text`);if(ne){this._activeTypewriter?.cancel();const Q=I?.productMentions?this._enrichProductMentionsWithUrls(I.productMentions):void 0;this._activeTypewriter=Ig({container:ne,html:Ie(O),onTick:()=>this._drawer?.scrollToBottomIfNeeded(),onComplete:()=>{this._activeTypewriter=null,Q&&Q.length>0&&ne&&zg({container:ne,mentions:Q,onProductClick:ge=>{const _=ge.url?.trim()??"";if(_&&ve(_)){this._handleProductNavClick({sku:ge.sku,url:_,name:ge.short_name});return}this._sendAction({title:ge.short_name||ge.sku,type:"launchSingleProduct",payload:{sku:ge.sku}})}})}})}}},onUISpec:(y,z,I,O)=>{if(!o&&i!==this._activeRequestThreadId||z!=="chat")return;O&&(this._clearAssistantPanelLikeStreamClearPanel(),P=!1,F=null);const U=y.elements[y.root],q=U?.type??"unknown";if(Nc(q,U?.props??{},pe,{drawer:this._drawer,ensureRendered:()=>this._ensureAssistantMessageRendered(h),cancelTypewriter:()=>{this._activeTypewriter?.cancel(),this._activeTypewriter=null},sendSkipMessage:()=>this._sendMessage(this._i18n.beautyPhotoStepSkipMessage),streamDone:X},h)){q==="PhotoAnalysisCard"&&h.threadId&&this._focusPresentationThread(h.threadId,"auto");return}const Z=ra(U),ne=this.config.productDetailsExtended!==!0&&(q==="ProductDetailsPanel"||Z);ne&&!O&&(this._clearAssistantPanelLikeStreamClearPanel(),P=!1);const Q=q==="ProductDetailsPanel"&&I!=="panel"?"panel":I,ge=this._buildRenderContext();if(ge.isStreaming=!0,q==="ComparisonTable"){const G=U?.props?.products;Ji(Array.isArray(G)?G.length:0)}if(q==="ProductGrid"){const G=U?.children?.length??0;eo(void 0,G)}const _=Q==="panel"&&this._panel?this._panel.toPanelSpec(y):y;if(Q==="panel"&&this._panel&&!ne&&q==="ProductGrid"&&U){const G=Ba(U);if(G.isConsulting&&!hg(G)){F=y;return}G.isConsulting&&(F=null)}if(Ld(U)&&$(),Q==="panel"&&this._panel&&!ne){const G=!A;A=!0;const te=U?.props?.replacePanel===!0,de=U?.props?.rankingState,J=te||de==="pending"||de==="final"?"replace":Vg({componentType:q,similarsAppend:U?.props?.similarsAppend===!0,currentPanelType:this._panel.currentType,hasPanelContent:this._drawer?.hasPanelContent()??!1,isPanelLoading:this._drawer?.isPanelLoading()??!1,isFirstPanelContentInStream:G});ge.panelProductListHeading=void 0,q==="ProductGrid"&&(J==="appendSimilars"?ge.panelProductListHeading=this._i18n.similarProductsLabel??"Similar Products":this._applyPanelListHeadingToContext(ge,{kind:"spec",spec:_})),J==="appendSimilars"?this._appendSimilarsToPanel(_,ge):J==="append"?(this._drawer?.appendPanelContent(this._renderUISpec(_,ge)),this._comparisonSelectMode&&this._refreshComparisonUI()):ce(_,ge,q),ee(q,U,J,!0)}if(q==="ProductDetailsPanel"&&Q==="panel"&&(!h.silent||c)){const G=U?.props?.product;if(G){c&&(l=G),this._currentInlineProductSummaryRecord=G;const te={root:"root",elements:{root:{type:"ProductSummaryCard",props:{product:G}}}},de=this._shadow?.querySelector(".gengage-chat-messages");if(de){const J=this._renderUISpec(te,ge);h.threadId&&(J.dataset.threadId=h.threadId);const ke=this._shadow?.querySelector(`[data-message-id="${h.id}"]`);ke&&ke.parentNode===de?ke.after(J):de.appendChild(J),this._scrollInlineIntoView(J,h.threadId),this._drawer?.refreshPresentationCollapsed(),A=!0}}}const K=q==="AITopPicks"||q==="AIGroupingCards",me=q==="InlineQuestionButtons",he=q==="ActionButtons"?U?.props?.buttons:void 0,N=q==="ActionButtons"&&this._modeController.mode!=="shopping"&&Array.isArray(he)&&he.length>0&&he.every(G=>G.action?.type==="inputText");let H=!1,ie=!1;if(ne&&Z&&(ge.panelProductListHeading=this._i18n.similarProductsLabel??"Similar Products"),K&&(!h.silent||s))if(h.threadId&&this._rememberPanelAiSpec(h.threadId,y),M){const G=this._renderUISpec(y,ge);j=!0,this._drawer?.setPanelAiZoneState("results",{resultEl:G}),H=!0,L=null}else L=y,ie=!0;me&&(this._drawer?.setInputAreaChips([]),this._drawer?.setPills([]));const Ee=s&&(q==="GroundingReviewCard"||K||q==="InlineQuestionButtons");if(!K&&(!h.silent||Ee)&&(Q!=="panel"||q==="ProductCard"||ne&&q==="ProductGrid"&&!Z)&&(q!=="ActionButtons"||N)&&!H&&!(ie&&K)){const G=this._shadow?.querySelector(".gengage-chat-messages");if(G){const te=this._renderUISpec(y,ge);h.threadId&&(te.dataset.threadId=h.threadId),G.appendChild(te),this._scrollInlineIntoView(te,h.threadId),this._drawer?.refreshPresentationCollapsed(),ne&&q==="ProductGrid"&&(A=!0)}}if((q==="ProductGrid"||q==="ProductCard")&&h.threadId){const G=U?.children??[],te=q==="ProductGrid"?G.map(de=>y.elements[de]?.props?.product).filter(Boolean):[U?.props?.product].filter(Boolean);for(const de of te){const J=de.sku;J&&this._viewedProductSkus.add(J)}}if(q==="ProductGrid"||q==="ProductDetailsPanel"){const G=(q==="ProductGrid"?(U?.children??[]).map(te=>y.elements[te]?.props?.product).filter(Boolean):[U?.props?.product??U?.props].filter(Boolean)).map(te=>te.imageUrl).filter(te=>typeof te=="string").slice(0,5);G.length>0&&this._bridge?.send("previewImages",{images:G})}const V=U?.children?.length??0;if(q==="ProductGrid"&&Q==="panel"&&!ne&&V>1&&!this._isMobileViewport&&!this._modeController.isChoicePrompterHidden&&!this._comparisonSelectMode&&!$g(this._currentThreadId??"")&&(this._clearChoicePrompter(),this._choicePrompterEl=Og({heading:this._i18n.choicePrompterHeading,suggestion:this._i18n.choicePrompterSuggestion,ctaLabel:this._i18n.choicePrompterCta,threadId:this._currentThreadId??"",dismissAriaLabel:this._i18n.dismissAriaLabel,onCtaClick:()=>{this._comparisonSelectMode=!0,this._choicePrompterEl=null,this._refreshComparisonUI()},onDismiss:()=>{this._choicePrompterEl=null}}),this._mountChoicePrompter()),q==="ActionButtons"){const G=U?.props?.buttons;if(G&&G.length>0&&!N){const te=[],de=[];for(const J of G)if(Bg(J)){const ke={label:J.label,action:J.action};J.icon&&(ke.icon=J.icon),te.push(ke)}else de.push(J);te.length>0&&this._drawer?.setInputAreaChips(te.map(J=>({label:J.label,onAction:()=>this._sendAction(J.action),...J.icon?{icon:J.icon}:{}}))),de.length>0&&this._drawer?.setPills(de.map(J=>{const ke={label:J.label,onAction:()=>this._sendAction(J.action)};return J.icon&&(ke.icon=J.icon),J.image&&(ke.image=J.image),J.description&&(ke.description=J.description),ke}))}}k(),h.uiSpec=y},onAction:y=>{if(!(!o&&i!==this._activeRequestThreadId)&&y.type==="action"){const z={};this.config.actionHandling?.unknownActionPolicy!==void 0&&(z.unknownActionPolicy=this.config.actionHandling.unknownActionPolicy),this.config.actionHandling?.allowScriptCall!==void 0&&(z.allowScriptCall=this.config.actionHandling.allowScriptCall),Mo(y,{openChat:()=>this.open(),navigate:I=>{ve(I.url)&&(this._bridge?.send("navigate",I),I.newTab?window.open(I.url,"_blank","noopener,noreferrer"):window.location.href=I.url)},saveSession:I=>this.saveSession(I.sessionId,I.sku),addToCart:I=>{this._runChatAddToCartFlow(I)},scriptCall:I=>{De("gengage:chat:script-call",I),this.config.onScriptCall?.(I)}},z)}},onMetadata:y=>{if(!(!o&&i!==this._activeRequestThreadId)&&y.type==="metadata"&&y.meta){if(y.meta.panel!==void 0||y.meta.messages!==void 0||y.meta.message_id!==void 0){this._lastBackendContext=y.meta;const z=ze(y.meta.panel);z&&(this._modeController.updateFromContext(z),this._applyUiHints())}if(y.meta.panelLoading){const z=typeof y.meta.panelPendingType=="string"?y.meta.panelPendingType:void 0;this.config.productDetailsExtended!==!0&&(z==="productDetails"||z==="productDetailsSimilars")||(P=!0,A=!1,f(),this._panel&&(this._panel.currentType=null),this._drawer?.showPanelLoading(z),this._isMobileViewport&&z==="productList"&&this._ensureMobilePanelOverlayVisible(),z&&this._panel?.updateTopBarForLoading(z))}if(y.meta.voice){const z=new CustomEvent("gengage:chat:voice",{detail:{payload:y.meta.voice},bubbles:!1,cancelable:!0}),I=window.dispatchEvent(z);if(oo(),I){const O=y.meta.voice;O.audio_base64&&(this._activeTtsHandle?.stop(),this._activeTtsHandle=Eg(O.audio_base64,O.content_type??"audio/ogg"))}}if((y.meta.redirectTarget||y.meta.redirect)&&(De("gengage:chat:redirect",{target:y.meta.redirectTarget??null,payload:y.meta.redirect??null}),Ge("redirect","redirect dispatched",{target:y.meta.redirectTarget??null}),this._handleRedirectMetadata(y.meta.redirect)),y.meta.loading){const z=Array.isArray(y.meta.thinkingMessages)?y.meta.thinkingMessages.filter(O=>typeof O=="string"):[],I=typeof y.meta.loadingText=="string"?y.meta.loadingText:void 0;if(z.length>0){const O=I&&this._modeController.shouldCondenseThinking()?[...z.slice(0,2),I]:z;this._drawer?.setThinkingSteps(O)}typeof I=="string"&&I.length>0&&(this._drawer?.addThinkingStep(I),oe||this._bridge?.send("loadingMessage",{text:I})),oe&&!X&&this._drawer?.resumeTypingIndicator()}De("gengage:chat:metadata",{payload:y.meta})}},onError:y=>{if(Y&&this._abortControllers.delete(Y),!o&&i!==this._activeRequestThreadId)return;X=!0,this._activeTypewriter?.cancel(),this._activeTypewriter=null,k(),L=null,F=null,r(!1),this._bridge?.send("loadingMessage",{text:null}),this._drawer?.removeTypingIndicator(),this._drawer?.clearInputAreaChips(),Rc(pe,{drawer:this._drawer,ensureRendered:()=>{},cancelTypewriter:()=>{},sendSkipMessage:()=>this._sendMessage(this._i18n.beautyPhotoStepSkipMessage),streamDone:!0});const z=A;P&&!A&&b(),P=!1,this._maybeHidePreservedMobilePanel(t.type,z),A=!1;const I=h.content!=null&&h.content.length>0||m.length>0||z,O=h.silent||I,U=typeof navigator<"u"&&navigator.onLine===!1&&gn(y),q=()=>{this._shadow?.querySelector(`[data-message-id="${Pe(h.id)}"]`)?.remove();const Q=this._messages.indexOf(h);Q>=0&&this._messages.splice(Q,1)};let Z=!1;const ne=()=>{if(U)return;this.emit("error",y);const Q=y.message;Q===this._lastErrorMessage?this._consecutiveErrorCount++:(this._consecutiveErrorCount=1,this._lastErrorMessage=Q);const ge=y.message.trim(),_=ge.length>0?ge:this._i18n.errorMessage,K={onRetry:()=>{this._lastSentAction&&this._sendAction(this._lastSentAction.action,this._lastSentAction.options)},onNewQuestion:()=>{this._drawer?.focusInput()}};if(this._consecutiveErrorCount>=2){q(),Z=!0,this._drawer?.showErrorWithRecovery(this._i18n.accountInactiveMessage,K);return}if(xd(y,_)){q(),Z=!0,this._drawer?.showErrorWithRecovery(_,K);return}h.content=_,h.status="done";const me=Ie(_.replace(/\r\n/g,`
|
|
546
|
+
`.trim(),b=()=>{for(const w of document.querySelectorAll("[data-gengage-widget]")){if(!(w instanceof HTMLElement))continue;const P=w.shadowRoot;if(P&&(P.querySelector('[data-gengage-part="chat-launcher-button"]')||P.querySelector(".gengage-chat-root")))return w}return null},h=w=>{if(w.getElementById(s))return;const P=document.createElement("style");P.id=s,P.textContent=f,w.appendChild(P)},y=Ae(o),x=w=>{h(w);const P=w.querySelector('[data-gengage-part="chat-launcher-button"]');if(!(P instanceof HTMLButtonElement))return!1;const E=w.querySelector('[data-gengage-part="chat-header-avatar"]');if(E instanceof HTMLImageElement){const R=w.querySelector('[data-gengage-part="chat-launcher-button"] img');(!R||E.src===R.src)&&E.classList.remove("gengage-chat-header-avatar--logo")}if(P.querySelector(`.${y}`))return!0;P.setAttribute("aria-label",e);const A=document.createElement("span");return A.className=o,A.textContent=e,P.appendChild(A),!0};return{launcherImageUrl:a,apply:async w=>{if(w){h(w),await Promise.resolve();for(let E=0;E<90;E++){if(x(w))return;await new Promise(A=>requestAnimationFrame(()=>A()))}return}const P=b();P?.shadowRoot&&h(P.shadowRoot),await Promise.resolve();for(let E=0;E<90;E++){const A=b()?.shadowRoot??null;if(A&&(h(A),x(A)))return;await new Promise(R=>requestAnimationFrame(()=>R()))}}}}var mg=96,mt={leadingTokens:["bana","beni","bi","bir","bu","bunu","da","de","hemen","lutfen","su","sunu","urun","urunu"],trailingTokens:["artik","da","de","lutfen","misin","misiniz","ya"],negativePattern:/\b(?:ekleyem|ekleyemed|eklenem|eklenm|satin aldiktan|satin aldim|iade|iptal|olmuyor|olmadi|olmedi|sorun|problem)\b/,cartTargets:["sepete","sepetime"],cartVerbs:["at","atar","atsana","ekle","ekler","eklesene"],buyVerbs:["al","alir","alsana"],compactBuyVerbs:["satinal","satinalsana"]},fg=new Set(mt.leadingTokens),bg=new Set(mt.trailingTokens),vg=new Set(mt.cartTargets),yg=new Set(mt.cartVerbs),xg=new Set(mt.buyVerbs),_g=new Set(mt.compactBuyVerbs);function wg(t){return t.toLocaleLowerCase("tr-TR").replace(/ç/g,"c").replace(/ğ/g,"g").replace(/ı/g,"i").replace(/ö/g,"o").replace(/ş/g,"s").replace(/ü/g,"u").replace(/[^a-z0-9]+/g," ").trim().replace(/\s+/g," ")}function kg(t){if(!t.trim()||t.length>mg||/[??]/.test(t))return!1;const e=wg(t);if(!e||mt.negativePattern.test(e))return!1;const a=e.split(" ");for(;a.length>0&&fg.has(a[0]);)a.shift();for(;a.length>0&&bg.has(a[a.length-1]);)a.pop();return a.length===1?_g.has(a[0]):a.length!==2?!1:vg.has(a[0])&&yg.has(a[1])?!0:a[0]==="satin"&&xg.has(a[1])}function Nr(t){return kg(t)?"directAddToCart":null}var Sg=/^HTTP\s+\d{3}\b/i,Cg=[/response body is null/i,/streaming not supported/i,/ECONNREFUSED/i,/ECONNRESET/i,/ETIMEDOUT/i,/socket hang up/i,/net::ERR_/i,/502\s+bad gateway/i,/503\s+service unavailable/i,/504\s+gateway timeout/i],Eg=[/Traceback\s*\(/i,/\bSyntaxError\b/,/\bReferenceError\b/,/\bTypeError\s*:/,/\bat\s+[\w./()[\]<>-]+:\d+:\d+/,/\n\s+at\s+\w/,/undefined is not/i,/is not a function/i,/<anonymous>/i,/ChunkLoadError/i,/UnhandledPromiseRejection/i],Pg=720;function Tg(t,e){if(hn(t))return!0;const a=t.message.trim();if(Sg.test(a)||Cg.some(i=>i.test(a)))return!0;const n=e.trim();if(n.length>Pg)return!0;const r=n.split(/\n/).length;return!!(r>=6||Eg.some(i=>i.test(n))||r>=3&&/\bat\s+/.test(n))}var zr="gengage_kvkk_shown",Ag=["kvkk","kişisel veri","kisisel veri"],Lg=/\b6698\b/;function qa(t){const e=t.toLowerCase();return Ag.some(a=>e.includes(a))||Lg.test(e)}function Mr(t){try{return localStorage.getItem(`${zr}_${t}`)==="1"}catch{return!1}}function Za(t){try{localStorage.setItem(`${zr}_${t}`,"1")}catch{}}function Ig(t,e={}){const a=new DOMParser().parseFromString(t,"text/html").body,n=Array.from(a.children);let r=!1;for(const i of n)if(qa(i.textContent??"")){i.remove(),r=!0;break}return!r&&e.fallbackToFirstBlock===!0&&n[0]&&n[0].remove(),a.innerHTML.trim()}function Ng(t,e={}){const a=new DOMParser().parseFromString(t,"text/html"),n=Array.from(a.body.children);for(const r of n)if(qa(r.textContent??""))return r.outerHTML;return e.fallbackToFirstBlock===!0?n[0]?.outerHTML??null:null}var zg={tr:"TURKISH",en:"ENGLISH",de:"GERMAN",fr:"FRENCH"};function Mg(t){return t?zg[t.toLowerCase().slice(0,2)]??"TURKISH":"TURKISH"}var Bg=':where(:root,.gengage-chat-root,.gengage-qna-container,.gengage-simrel-container,.gengage-simbut-root){--ds-neutral-0:#fff;--ds-neutral-25:#fcfcfd;--ds-neutral-50:#f6f7fb;--ds-neutral-100:#f3f4f6;--ds-neutral-200:#e5e7eb;--ds-neutral-300:#d0d5dd;--ds-neutral-500:#667085;--ds-neutral-600:#475467;--ds-neutral-700:#344054;--ds-neutral-900:#111827;--ds-radius-2:8px;--ds-radius-3:12px;--ds-radius-4:16px;--ds-radius-5:20px;--ds-radius-6:24px;--ds-radius-pill:999px;--ds-shadow-1:0 1px 2px #1018280a, 0 1px 3px #1018280f;--ds-shadow-2:0 4px 12px #10182814;--ds-shadow-3:0 10px 24px #1018281f;--client-primary:var(--gengage-primary-color,#b7102a);--client-primary-hover:var(--gengage-primary-hover,color-mix(in srgb, var(--client-primary) 88%, black 12%));--client-primary-active:var(--gengage-primary-active,color-mix(in srgb, var(--client-primary) 78%, black 22%));--client-primary-subtle:color-mix(in srgb, var(--client-primary) 12%, white);--client-primary-soft:color-mix(in srgb, var(--client-primary) 20%, white);--client-on-primary:var(--gengage-primary-foreground,#fff);--client-focus-ring:color-mix(in srgb, var(--client-primary) 32%, transparent);--ai-accent-start:#0b24d6;--ai-accent-end:#f768f2;--ai-accent-soft:linear-gradient(135deg, #0b24d614, #f768f214);--surface-page:var(--gengage-page-bg,var(--ds-neutral-50));--surface-shell:var(--gengage-shell-bg,#10131a);--surface-card:var(--gengage-background-color,var(--ds-neutral-0));--surface-card-muted:var(--gengage-surface-soft,#f8fafc);--surface-card-soft:var(--surface-card-muted);--surface-elevated:var(--gengage-surface-elevated,var(--ds-neutral-0));--surface-input:var(--gengage-input-bg,var(--ds-neutral-0));--surface-overlay:var(--gengage-overlay-bg,#10131a85);--text-primary:var(--gengage-foreground-color,var(--ds-neutral-900));--text-secondary:var(--gengage-text-secondary,#4b5563);--text-muted:var(--gengage-text-muted,#6b7280);--text-inverse:var(--gengage-text-inverse,#f9fafb);--border-subtle:var(--gengage-border-subtle,#1118270f);--border-default:var(--gengage-border-color,#1118271a);--border-strong:var(--gengage-border-strong,#1118272e);--shadow-1:var(--gengage-shadow-1,var(--ds-shadow-1));--shadow-2:var(--gengage-shadow-2,var(--ds-shadow-2));--shadow-3:var(--gengage-shadow-3,var(--ds-shadow-3));--radius-control:var(--gengage-control-radius,var(--ds-radius-3));--radius-card:var(--gengage-card-radius,var(--ds-radius-4));--radius-panel:var(--gengage-panel-radius,var(--ds-radius-6));--radius-pill:var(--gengage-pill-radius,var(--ds-radius-pill));--success:var(--gengage-success-color,#16a34a);--warning:var(--gengage-warning-color,#d97706);--error:var(--gengage-error-color,#dc2626);--info:var(--gengage-info-color,#2563eb);--rating:var(--gengage-rating-color,#f5b301);--gengage-primary:var(--client-primary);--gengage-primary-soft:var(--client-primary-soft);--gengage-primary-subtle:var(--client-primary-subtle);--gengage-text-color:var(--text-primary);--gengage-text-secondary:var(--text-secondary);--gengage-hover-color:var(--surface-card-soft);--ds-button-primary-bg:var(--client-primary);--ds-button-primary-bg-hover:var(--client-primary-hover);--ds-button-primary-bg-active:var(--client-primary-active);--ds-button-primary-fg:var(--client-on-primary);--ds-button-primary-border:color-mix(in srgb, var(--client-primary) 82%, black 18%);--ds-button-secondary-bg:var(--surface-card);--ds-button-secondary-bg-hover:var(--client-primary-subtle);--ds-button-secondary-fg:var(--client-primary);--ds-button-secondary-border:color-mix(in srgb, var(--client-primary) 26%, white);--ds-button-ghost-bg:var(--surface-card-muted);--ds-button-ghost-bg-hover:var(--ds-button-ghost-bg);--ds-button-ghost-fg:var(--text-primary);--ds-button-ghost-fg-hover:var(--client-primary);--ds-button-ghost-border:var(--border-default);--ds-button-ghost-border-hover:color-mix(in srgb, var(--client-primary) 18%, white);--ds-panel-bg:var(--surface-card);--ds-panel-border:var(--border-default);--ds-panel-shadow:var(--shadow-1);--ds-panel-radius:var(--radius-panel);--ds-header-bg:var(--surface-card);--ds-header-fg:var(--text-primary);--ds-header-muted:var(--text-muted);--ds-header-border:var(--border-default);--ds-card-bg:var(--surface-card);--ds-card-bg-soft:var(--surface-card-muted);--ds-card-border:var(--border-default);--ds-card-shadow:var(--shadow-1);--ds-card-shadow-hover:var(--shadow-2);--ds-card-radius:var(--radius-card);--ds-card-border-hover:color-mix(in srgb, var(--client-primary) 14%, var(--border-default));--ds-card-bg-hover:color-mix(in srgb, var(--client-primary) 2%, var(--surface-card));--ds-product-card-media-bg:var(--surface-card-muted);--ds-product-card-media-border:var(--border-subtle);--ds-input-bg:var(--surface-input);--ds-input-border:var(--border-default);--ds-input-radius:16px;--ds-input-focus-border:color-mix(in srgb, var(--client-primary) 28%, white);--ds-input-focus-ring:0 0 0 4px var(--client-focus-ring);--ds-input-highlight:inset 0 1px 0 #fff9;--ds-chip-bg:var(--surface-card);--ds-chip-border:var(--border-default);--ds-chip-fg:var(--text-secondary);--ds-chip-bg-hover:var(--surface-card-muted);--ds-chip-bg-active:color-mix(in srgb, var(--client-primary) 8%, white);--ds-chip-border-active:color-mix(in srgb, var(--client-primary) 30%, white);--ds-chip-fg-active:var(--client-primary);--ds-tab-bg:var(--surface-card);--ds-tab-bg-hover:var(--surface-card-muted);--ds-tab-bg-active:color-mix(in srgb, var(--client-primary) 8%, white);--ds-tab-border:var(--border-default);--ds-tab-border-active:color-mix(in srgb, var(--client-primary) 26%, white);--ds-tab-fg:var(--text-secondary);--ds-tab-fg-active:var(--client-primary);--ds-badge-brand-bg:color-mix(in srgb, var(--client-primary) 10%, white);--ds-badge-brand-border:color-mix(in srgb, var(--client-primary) 18%, white);--ds-badge-brand-fg:var(--client-primary);--ds-message-user-bg:color-mix(in srgb, var(--client-primary) 10%, white);--ds-message-user-fg:var(--text-primary);--ds-message-user-border:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));--ds-message-user-shadow:none;--ds-message-assistant-bg:var(--surface-card-soft);--ds-message-assistant-fg:var(--text-primary);--ds-message-assistant-border:var(--border-default);--ds-message-assistant-shadow:none;--ds-message-active-outline:color-mix(in srgb, var(--client-primary) 68%, white);--ds-progress-card-border:var(--border-subtle);--ds-progress-mark-bg:color-mix(in srgb, var(--ai-accent-start) 8%, var(--surface-card));--ds-progress-mark-border:color-mix(in srgb, var(--ai-accent-start) 12%, var(--border-default));--ds-progress-scrollbar-thumb:color-mix(in srgb, var(--text-primary) 18%, transparent);--ds-toast-error-bg:color-mix(in srgb, var(--error) 5%, var(--surface-card));--ds-toast-error-border:color-mix(in srgb, var(--error) 18%, var(--border-default));--ds-toast-error-accent:var(--error);--ds-toast-error-fg:color-mix(in srgb, var(--error) 22%, var(--text-primary));--ds-toast-error-shadow:var(--shadow-3);--ds-comparison-table-bg:var(--surface-card);--ds-comparison-table-border:var(--border-default);--ds-comparison-table-header-bg:var(--surface-card-muted);--ds-comparison-table-header-fg:var(--text-muted);--ds-comparison-table-row-border:var(--border-subtle);--ds-comparison-table-winner-bg:color-mix(in srgb, var(--client-primary) 6%, white);--ds-comparison-table-winner-fg:var(--client-primary)}:where(.gds-panel){background:var(--ds-panel-bg);border:1px solid var(--ds-panel-border);border-radius:var(--ds-panel-radius);box-shadow:var(--ds-panel-shadow)}:where(.gengage-qna-panel,.gengage-chat-panel-topbar,.gengage-chat-chat-header,.gengage-chat-panel-ai-zone>.gengage-chat-ai-top-picks,.gengage-chat-grounding-review){border-color:var(--ds-panel-border)}:where(.gds-btn){border-radius:var(--radius-control);min-height:46px;font:inherit;cursor:pointer;border:0;outline:none;justify-content:center;align-items:center;gap:10px;padding:0 18px;font-weight:700;transition:box-shadow .15s,border-color .15s,background-color .15s,color .15s;display:inline-flex}:where(.gds-btn:hover){transform:none}:where(.gds-btn:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-btn:disabled){cursor:not-allowed;opacity:.56;box-shadow:none}:where(.gds-btn-primary){background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);border:1px solid var(--ds-button-primary-border)}:where(.gds-btn-primary:hover){background:var(--ds-button-primary-bg-hover)}:where(.gds-btn-secondary){background:var(--ds-button-secondary-bg);color:var(--ds-button-secondary-fg);border:1px solid var(--ds-button-secondary-border)}:where(.gds-btn-secondary:hover){background:var(--ds-button-secondary-bg-hover)}:where(.gds-btn-ghost){background:var(--ds-button-ghost-bg);color:var(--ds-button-ghost-fg);border:1px solid var(--ds-button-ghost-border)}:where(.gds-btn-ghost:hover){background:var(--ds-button-ghost-bg-hover);border-color:var(--ds-button-ghost-border-hover);color:var(--ds-button-ghost-fg-hover)}:where(.gds-chip){border-radius:var(--radius-pill);border:1px solid var(--ds-chip-border);background:var(--ds-chip-bg);color:var(--ds-chip-fg);align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:700;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}:where(.gds-chip:hover){background:var(--ds-chip-bg-hover);border-color:color-mix(in srgb, var(--client-primary) 16%, var(--ds-chip-border))}:where(.gds-chip:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-chip-active){border-color:var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active)}:where(.gds-badge){border-radius:var(--radius-pill);letter-spacing:.04em;align-items:center;min-height:28px;padding:0 10px;font-size:11px;font-weight:800;display:inline-flex}:where(.gds-badge-brand){background:var(--ds-badge-brand-bg);color:var(--ds-badge-brand-fg);border:1px solid var(--ds-badge-brand-border)}:where(.gds-shell-header){background:var(--ds-header-bg);color:var(--ds-header-fg);border-bottom:1px solid var(--ds-header-border);box-shadow:none;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;display:flex}:where(.gds-shell-header [data-gengage-part=chat-header-powered-by]){color:var(--ds-header-muted)}:where(.gds-icon-btn){border-radius:var(--radius-control);width:42px;min-width:42px;height:42px;min-height:42px;padding:0}:where(.gds-input-shell){border-radius:var(--ds-input-radius);border:1px solid var(--ds-input-border);background:var(--ds-input-bg);min-height:52px;box-shadow:var(--ds-input-highlight);align-items:center;gap:12px;padding:6px 6px 6px 14px;transition:border-color .15s,box-shadow .15s,background-color .15s;display:flex}:where(.gds-input-shell:focus-within){border-color:var(--ds-input-focus-border);box-shadow:var(--ds-input-focus-ring)}:where(.gds-tab){border-radius:var(--radius-pill);border:1px solid var(--ds-tab-border);background:var(--ds-tab-bg);color:var(--ds-tab-fg);align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:700;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}:where(.gds-tab:hover){background:var(--ds-tab-bg-hover)}:where(.gds-tab:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-tab[aria-selected=true],.gds-tab.is-active){color:var(--ds-tab-fg-active);border-color:var(--ds-tab-border-active);background:var(--ds-tab-bg-active)}:where(.gds-toolbar){flex-wrap:wrap;align-items:center;gap:10px;display:flex}:where(.gds-toolbar-compact){gap:8px}:where(.gds-card){background:var(--ds-card-bg);border:1px solid var(--ds-card-border);border-radius:var(--ds-card-radius);box-shadow:var(--ds-card-shadow);transition:border-color .15s,box-shadow .15s,background-color .15s}:where(.gds-card-interactive),:where(.gds-clickable){cursor:pointer}:where(.gds-card-interactive:hover){background:var(--ds-card-bg-hover);border-color:var(--ds-card-border-hover);box-shadow:var(--ds-card-shadow-hover)}:where(.gds-card-soft){background:var(--ds-card-bg-soft)}:where(.gds-product-card){border-radius:16px}:where(.gds-evidence-card){background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-control);box-shadow:var(--shadow-1)}:where(.gds-evidence-card-success){background:color-mix(in srgb, var(--success) 10%, white);border-color:color-mix(in srgb, var(--success) 22%, var(--border-default))}:where(.gds-evidence-card-danger){background:color-mix(in srgb, var(--error) 8%, white);border-color:color-mix(in srgb, var(--error) 20%, var(--border-default))}:where(.gds-evidence-card-warning){background:color-mix(in srgb, var(--warning) 10%, white);border-color:color-mix(in srgb, var(--warning) 22%, var(--border-default))}:where(.gds-message){border-radius:calc(var(--radius-control) + 4px);word-wrap:break-word;overflow-wrap:break-word;border:1px solid #0000;max-width:85%;padding:14px 16px;font-size:14px;font-weight:400;line-height:1.55;animation:.3s cubic-bezier(.2,.7,.2,1) gengage-chat-msg-in}:where(.gds-message-user){background:var(--ds-message-user-bg);color:var(--ds-message-user-fg);border-color:var(--ds-message-user-border);box-shadow:var(--ds-message-user-shadow);border-bottom-right-radius:6px;align-self:flex-end}:where(.gds-message-assistant){background:var(--ds-message-assistant-bg);color:var(--ds-message-assistant-fg);border-color:var(--ds-message-assistant-border);box-shadow:var(--ds-message-assistant-shadow);border-bottom-left-radius:6px;align-self:flex-start;min-width:120px}:where(.gds-message-active){outline:2px solid var(--ds-message-active-outline);outline-offset:-2px}:where(.gds-ai-card){background:var(--surface-card);border:1px solid var(--ds-progress-card-border);border-radius:20px;gap:16px;padding:18px;display:grid}:where(.gds-ai-mark){background:var(--ds-progress-mark-bg);width:42px;height:42px;color:var(--ai-accent-start);border:1px solid var(--ds-progress-mark-border);border-radius:14px;place-items:center;display:grid}:where(.gds-ai-loader-row){align-items:center;gap:12px;display:flex}:where(.gds-progress-loader){border:1px solid color-mix(in srgb, var(--ai-accent-start) 10%, var(--border-default));background:linear-gradient(110deg, var(--surface-card-soft) 8%, color-mix(in srgb, var(--ai-accent-start) 5%, var(--surface-card)) 18%, var(--surface-card-soft) 33%);width:fit-content;max-width:100%;min-height:44px;color:var(--text-secondary);background-size:220% 100%;border-radius:14px;align-items:center;gap:10px;padding:0 16px;animation:1.8s linear infinite gds-progress-shimmer;display:inline-flex}:where(.gds-progress-loader-chat){box-sizing:border-box;align-self:flex-start;width:100%;min-width:0;max-width:85%;display:flex}:where(.gds-progress-loader-chat) .gds-progress-label{overflow-wrap:anywhere;flex:auto;min-width:0}:where(.gds-progress-loader-panel){box-sizing:border-box;justify-content:flex-start;align-items:center;width:100%;min-width:0;max-width:100%;min-height:48px;display:flex}:where(.gds-progress-loader-panel) .gds-progress-label{overflow-wrap:anywhere;flex:auto;min-width:0}:where(.gds-progress-label){min-width:0;color:var(--text-secondary);word-break:break-word;align-self:center;font-size:13px;line-height:1.35;display:block}:where(.gds-progress-dots){flex-shrink:0;align-items:center;gap:6px;min-height:20px;display:inline-flex}:where(.gds-progress-dot){background:color-mix(in srgb, var(--ai-accent-start) 20%, var(--text-muted));border-radius:50%;width:8px;height:8px;animation:1.2s ease-in-out infinite gds-progress-dot-pulse;display:inline-block}:where(.gds-progress-dot:nth-child(2)){animation-delay:.2s}:where(.gds-progress-dot:nth-child(3)){animation-delay:.4s}:where(.gds-ai-status){border-radius:calc(var(--radius-control) + 2px);border:1px solid var(--border-default);background:var(--surface-card-muted);max-width:85%;color:var(--text-secondary);border-bottom-left-radius:6px;align-self:flex-start;align-items:center;gap:8px;padding:10px 14px;display:flex}:where(.gds-ai-status-text){color:var(--text-secondary);font-size:13px;font-style:italic}:where(.gds-ai-dot-loader){align-items:center;gap:5px;display:inline-flex}:where(.gds-ai-dot-loader span){background:color-mix(in srgb, var(--ai-accent-start) 38%, var(--text-muted));border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite gds-progress-dot-pulse;display:inline-block}:where(.gds-ai-dot-loader span:nth-child(2)){animation-delay:.2s}:where(.gds-ai-dot-loader span:nth-child(3)){animation-delay:.4s}:where(.gds-ai-spinner){border:2.5px solid var(--border-default);border-top-color:var(--ai-accent-start);border-radius:50%;flex-shrink:0;width:26px;height:26px;animation:.72s linear infinite gds-spin}@keyframes gds-spin{to{transform:rotate(360deg)}}@keyframes gds-progress-shimmer{0%{background-position:200% 0}to{background-position:-20% 0}}@keyframes gds-progress-dot-pulse{0%,to{opacity:.45;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){:where(.gds-progress-loader){animation:none}:where(.gds-progress-dot){opacity:.85;animation:none;transform:scale(1)}:where(.gds-ai-spinner){animation:none}:where(.gds-ai-dot-loader span){opacity:.85;animation:none}}:where(.gds-menu){border-radius:var(--radius-card);border:1px solid var(--border-default);background:var(--surface-elevated);box-shadow:var(--shadow-3);padding:4px}:where(.gds-menu-option){border-radius:calc(var(--radius-control) - 4px);width:100%;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:500;line-height:1.25;transition:background-color .15s,color .15s;display:flex}:where(.gds-menu-option:hover){background:var(--surface-card-muted)}:where(.gds-menu-option:focus-visible){outline:2px solid var(--client-focus-ring);outline-offset:2px}:where(.gds-menu-option-active){background:var(--client-primary-subtle);color:var(--client-primary);font-weight:600}:where(.gds-comparison-table){border-collapse:separate;border-spacing:0;border:1px solid var(--ds-comparison-table-border);background:var(--ds-comparison-table-bg);border-radius:20px;width:100%;overflow:hidden}:where(.gds-comparison-table th,.gds-comparison-table td){text-align:left;border-bottom:1px solid var(--ds-comparison-table-row-border);padding:14px 16px;font-size:13px}:where(.gds-comparison-table th){background:var(--ds-comparison-table-header-bg);text-transform:uppercase;letter-spacing:.08em;color:var(--ds-comparison-table-header-fg);font-size:11px}:where(.gds-comparison-table tr:last-child td){border-bottom:0}:where(.gds-comparison-table-winner-cell){background:var(--ds-comparison-table-winner-bg);color:var(--ds-comparison-table-winner-fg);font-weight:800}:host{all:initial;font-family:var(--gengage-font-family,"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:var(--gengage-font-size,14px)}.gengage-chat-root button,.gengage-chat-root [role=button],.gengage-chat-root a{cursor:pointer}.gengage-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gengage-chat-root{z-index:var(--gengage-z-index,2147480000);--_gengage-chat-offset:var(--gengage-chat-offset,20px);--_gengage-chat-launcher-bottom:var(--gengage-chat-launcher-bottom,20px);--_gengage-chat-launcher-right:var(--gengage-chat-launcher-right,20px);--_gengage-chat-launcher-width:var(--gengage-chat-launcher-width,56px);--_gengage-chat-launcher-height:var(--gengage-chat-launcher-height,56px);--_gengage-chat-launcher-mobile-width:var(--gengage-chat-launcher-mobile-width,var(--_gengage-chat-launcher-width));--_gengage-chat-launcher-mobile-height:var(--gengage-chat-launcher-mobile-height,var(--_gengage-chat-launcher-height));--_gengage-chat-drawer-width:var(--gengage-chat-width,400px);--_gengage-chat-radius:var(--gengage-chat-shell-radius,1rem);--_gengage-chat-header-height:var(--gengage-chat-header-height,72px);--_gengage-chat-conversation-width:var(--gengage-chat-conversation-width,396px);--_gengage-chat-panel-min-width:var(--gengage-chat-panel-min-width,320px);--_gengage-chat-panel-max-width:var(--gengage-chat-panel-max-width,1200px);--_gengage-chat-input-height:var(--gengage-chat-input-height,48px);--_gengage-chat-shadow:var(--gengage-chat-shadow,var(--shadow-3));--_gengage-border-color:var(--border-default);--_gengage-discount-color:var(--gengage-discount-color,var(--client-primary));--_gengage-campaign-reason-start:var(--gengage-campaign-reason-color,var(--client-primary));--_gengage-campaign-reason-end:var(--gengage-campaign-reason-color-end,var(--gengage-campaign-reason-color,var(--client-primary)));--_gengage-success-color:var(--success);--_gengage-text-primary:var(--text-primary);--_gengage-text-secondary:var(--text-secondary);--_gengage-surface-secondary:var(--surface-card-soft);--_gengage-surface-muted:var(--surface-card-soft);--_gengage-surface-dark:var(--surface-shell);--_gengage-rating-color:var(--rating);--_gengage-error:var(--error);--_gengage-danger-color:var(--error);--_gengage-ghost-border:var(--gengage-ghost-border,color-mix(in srgb, var(--client-primary) 16%, transparent));position:fixed}.gengage-chat-backdrop{z-index:0;pointer-events:none;cursor:pointer;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background:0 0;border:none;margin:0;padding:0;display:none;position:fixed;inset:0}.gengage-chat-root--open:not(.gengage-chat--inline) .gengage-chat-backdrop{pointer-events:none;background:var(--gengage-chat-float-backdrop,transparent);display:block}.gengage-chat-root--open.gengage-chat-root--maximized-host-chrome:not(.gengage-chat--inline) .gengage-chat-backdrop{pointer-events:auto;background:var(--gengage-chat-float-backdrop,color-mix(in srgb, var(--surface-overlay) 72%, transparent))}.gengage-chat-root.gengage-chat--overlay.gengage-chat-root--open .gengage-chat-backdrop{background:var(--gengage-chat-overlay-backdrop,var(--surface-overlay));pointer-events:auto}.gengage-chat-launcher-container{bottom:var(--gengage-chat-launcher-anchor-bottom,var(--_gengage-chat-launcher-bottom));right:var(--gengage-chat-launcher-anchor-right,var(--_gengage-chat-launcher-right));z-index:var(--gengage-z-index,2147480000);transition:bottom var(--gengage-chat-launcher-anchor-transition,0s) ease, right var(--gengage-chat-launcher-anchor-transition,0s) ease;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed}.gengage-chat-launcher-content-area,.gengage-chat-launcher-content-area-bottom{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.gengage-chat-launcher-content-area:empty,.gengage-chat-launcher-content-area-bottom:empty,.gengage-chat-root--open .gengage-chat-launcher-content-area,.gengage-chat-root--open .gengage-chat-launcher-content-area-bottom{display:none}.gengage-chat-root--open .gengage-chat-launcher-container{pointer-events:none;opacity:0;transition:opacity .2s}.gengage-chat-launcher{width:var(--_gengage-chat-launcher-width);height:var(--_gengage-chat-launcher-height);border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);cursor:pointer;box-shadow:var(--shadow-3);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s;display:flex;position:relative}.gengage-chat-launcher:hover{box-shadow:var(--shadow-3);transform:none}.gengage-chat-launcher svg{width:28px;height:28px}.gengage-chat-launcher--image-mode{box-shadow:none;background:0 0;border:none;border-radius:0;padding:0;overflow:hidden}.gengage-chat-launcher--image-mode:hover{box-shadow:none}.gengage-chat-launcher--image-mode img{object-fit:contain;width:100%;height:100%}.gengage-chat-launcher-img--mobile,.gengage-chat-root--mobile .gengage-chat-launcher-img--desktop{display:none}.gengage-chat-root--mobile .gengage-chat-launcher-img--mobile{display:block}.gengage-chat-launcher--hidden-mobile{display:none!important}.gengage-chat-launcher-tooltip{border-radius:var(--radius-control);background:var(--surface-shell);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;box-shadow:var(--shadow-2);padding:6px 12px;font-size:13px;font-weight:500;transition:opacity .2s;position:absolute;top:50%;right:calc(100% + 12px);transform:translateY(-50%)}.gengage-chat-launcher-tooltip:after{content:"";border:5px solid #0000;border-left-color:var(--surface-shell);position:absolute;top:50%;left:100%;transform:translateY(-50%)}.gengage-chat-launcher:hover .gengage-chat-launcher-tooltip{opacity:1}.gengage-chat-root--open .gengage-chat-launcher-tooltip{display:none}.gengage-chat-drawer{width:var(--_gengage-chat-drawer-width);background:var(--surface-elevated,var(--surface-card));border-left:1px solid var(--border-default);max-height:100dvh;box-shadow:var(--_gengage-chat-shadow);z-index:var(--gengage-z-index,2147480000);opacity:1;border-radius:0;flex-direction:column;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .2s;display:flex;position:fixed;top:0;bottom:0;right:0;overflow:hidden;transform:translate(0)}.gengage-chat-root--mobile .gengage-chat-launcher-container{right:var(--gengage-chat-launcher-anchor-right,var(--gengage-chat-launcher-mobile-right,16px));bottom:calc(var(--gengage-chat-launcher-anchor-bottom,var(--gengage-chat-launcher-mobile-bottom,16px)) + env(safe-area-inset-bottom,0px))}.gengage-chat-root--mobile .gengage-chat-launcher{width:var(--_gengage-chat-launcher-mobile-width);height:var(--_gengage-chat-launcher-mobile-height)}.gengage-chat-root--mobile .gengage-chat-drawer{border:1px solid var(--border-default);width:100%;max-width:none;max-height:100dvh;box-shadow:var(--shadow-3);padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface-elevated,var(--surface-card));border-bottom:none;border-radius:16px 16px 0 0;bottom:0;left:0;right:0}.gengage-chat-drawer-handle{display:none}.gengage-chat-root--mobile .gengage-chat-drawer-handle{pointer-events:none;z-index:1;justify-content:center;align-items:center;height:14px;display:flex;position:absolute;top:6px;left:0;right:0}.gengage-chat-root--mobile .gengage-chat-header{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.gengage-chat-root--mobile .gengage-chat-header button,.gengage-chat-root--mobile .gengage-chat-header a{cursor:pointer;touch-action:auto;-webkit-user-select:auto;user-select:auto}.gengage-chat-root--mobile .gengage-chat-drawer-handle:before{content:"";background:var(--border-strong);pointer-events:none;border-radius:999px;width:36px;height:4px}.gengage-chat-root--mobile.gengage-chat-root--mobile-half .gengage-chat-drawer{top:auto;bottom:var(--gengage-chat-keyboard-inset,0px);height:min(72dvh,620px);max-height:min(72dvh, 620px, var(--gengage-chat-visual-vh,100dvh))}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-drawer{top:var(--gengage-chat-visual-top,0px);height:var(--gengage-chat-visual-vh,100dvh);max-height:var(--gengage-chat-visual-vh,100dvh);border-radius:0;bottom:auto}.gengage-chat-root--mobile .gengage-chat-input-area{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border-default)}.gengage-chat-header{box-sizing:border-box;height:var(--_gengage-chat-header-height);background:var(--gengage-chat-header-bg,var(--ds-header-bg));color:var(--gengage-chat-header-foreground,var(--ds-header-fg));box-shadow:none;border-bottom:1px solid var(--gengage-chat-header-border-bottom,var(--ds-header-border));z-index:2;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex;position:relative}.gengage-chat-header-left{align-items:center;gap:10px;min-width:0;display:flex}.gengage-chat-header-avatar{background:var(--surface-card-soft);border:1px solid var(--border-default);object-fit:contain;border-radius:999px;flex-shrink:0;width:44px;height:44px}.gengage-chat-header-avatar--logo{object-fit:contain;background:0 0;border:none;border-radius:0;width:auto;max-width:92px;height:45px}.gengage-chat-header-info{flex-direction:column;gap:2px;min-width:0;display:flex}.gengage-chat-header-title-row{align-items:center;gap:6px;min-width:0;display:flex}.gengage-chat-header-title{letter-spacing:.01em;color:inherit;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:16px;font-weight:700;line-height:1.25;display:block;overflow:hidden}.gengage-chat-header-badge{border-radius:var(--radius-pill);background:var(--ds-badge-brand-bg);min-height:26px;color:var(--ds-badge-brand-fg);border:1px solid var(--ds-badge-brand-border);letter-spacing:.04em;text-transform:uppercase;align-items:center;padding:0 10px;font-size:10px;font-weight:800;line-height:1.5;display:inline-flex}.gengage-chat-header-powered{color:var(--ds-header-muted);align-items:center;gap:4px;font-size:11px;line-height:1.2;text-decoration:none;transition:color .15s;display:flex}.gengage-chat-header-powered:hover{color:var(--client-primary)}.gengage-chat-header-powered svg{opacity:.6;flex-shrink:0;width:12px;height:12px}.gengage-chat-header-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.gengage-chat-header-btn{border-radius:var(--radius-control,12px);background:var(--surface-card-soft);border:1px solid var(--border-default);width:42px;height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;line-height:1;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}@media (width<=374px){.gengage-chat-header{gap:8px;padding:10px}.gengage-chat-header-right{flex-shrink:1;gap:4px;min-width:0}.gengage-chat-header-btn{width:34px;min-width:34px;height:34px;min-height:34px}}.gengage-chat-header-btn:hover{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-header-btn--fav{position:relative}.gengage-chat-header-btn--reopen-panel,.gengage-chat-root--mobile .gengage-chat-new-chat{display:none}.gengage-chat-header-fav-badge{background:var(--error);min-width:16px;height:16px;color:var(--text-inverse);text-align:center;pointer-events:none;border-radius:999px;padding:0 3px;font-size:9px;font-weight:700;line-height:16px;position:absolute;top:-4px;right:-4px}.gengage-chat-close{border-radius:var(--radius-control,12px);background:var(--surface-card-soft);border:1px solid var(--border-default);width:42px;min-width:42px;height:42px;min-height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;font-size:18px;line-height:1;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.gengage-chat-close:hover{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-body{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.gengage-chat-panel{width:0;transition:width .22s cubic-bezier(.2,.72,.2,1);display:none;overflow:hidden}.gengage-chat-panel--visible{box-sizing:border-box;background:var(--gengage-chat-panel-bg,var(--surface-card));border-right:1px solid var(--border-default);scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--text-muted) 24%, transparent) transparent;flex-direction:column;width:440px;min-width:440px;padding:16px;display:flex;position:relative;overflow-y:auto}.gengage-chat-panel--visible::-webkit-scrollbar{width:6px}.gengage-chat-panel--visible::-webkit-scrollbar-track{background:0 0}.gengage-chat-panel--visible::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--text-muted) 24%, transparent);border-radius:3px}.gengage-chat-panel--visible::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--text-muted) 36%, transparent)}.gengage-chat-panel-ai-zone{box-sizing:border-box;border-bottom:1px solid var(--border-subtle);flex-shrink:0;width:100%;max-height:min(42vh,320px);margin-bottom:4px;padding:8px 0 12px;overflow:auto}.gengage-chat-panel-ai-zone:has(.gengage-chat-grouping-cards){max-height:min(52vh,520px)}.gengage-chat-panel-ai-zone:has(.gengage-chat-ai-top-picks){max-height:none;overflow:visible}.gengage-chat-panel-ai-zone[hidden]{display:none!important}.gengage-chat-panel-ai-zone-inner{align-items:center;gap:10px;display:flex}.gengage-chat-panel-ai-zone-text{color:var(--text-muted);font-size:13px}.gengage-chat-grouping-section-title{display:none}.gengage-chat-panel-ai-zone .gengage-chat-grouping-section-title{width:100%;color:var(--text-primary);letter-spacing:-.01em;flex-shrink:0;align-self:stretch;margin:0 0 10px;font-size:15px;font-weight:700;display:block}.gengage-chat-panel-ai-zone .gengage-chat-grouping-cards{flex-direction:column;align-items:stretch;gap:0;width:100%;min-width:0;max-height:none;display:flex}.gengage-chat-panel-ai-zone .gengage-chat-grouping-cards-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:thin;flex-flow:row;align-items:stretch;gap:10px;width:100%;min-width:0;margin:0 -2px;padding:2px 2px 10px;display:flex;overflow:auto hidden}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card{box-sizing:border-box;background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-card);width:136px;min-width:136px;max-width:150px;box-shadow:var(--shadow-1);flex-direction:column;flex:none;align-items:stretch;gap:8px;padding:12px 10px 14px}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card:hover{border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-arrow{display:none}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-img{object-fit:cover;border-radius:8px;width:100%;min-width:0;max-width:88px;height:72px;min-height:72px;margin:0 auto}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-body{text-align:center;flex-direction:column;align-items:center;gap:4px;width:100%}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-name{font-size:13px;font-weight:700;line-height:1.25}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-desc{color:var(--text-muted);font-size:11px;line-height:1.3}.gengage-chat-panel-ai-zone .gengage-chat-grouping-card-labels{white-space:normal;text-overflow:unset;justify-content:center;margin-top:2px;line-height:1.35;overflow:visible}.gengage-chat-panel-divider{cursor:pointer;background:var(--_gengage-border-color);z-index:2;flex-shrink:0;align-items:center;width:4px;transition:background .15s;display:flex;position:relative}.gengage-chat-panel-divider:hover{background:var(--border-strong)}.gengage-chat-panel-divider--hidden{display:none}.gengage-chat-panel-divider-toggle{border:1px solid var(--_gengage-border-color);background:var(--surface-card);cursor:pointer;width:28px;height:48px;color:var(--text-secondary);box-shadow:var(--shadow-1);border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:background .15s,color .15s;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.gengage-chat-panel-divider-toggle:hover{background:var(--surface-card-muted);color:var(--client-primary)}.gengage-chat-panel.gengage-chat-panel--collapsed{border-right:none;flex:0 0 0;width:0;min-width:0;max-width:0;padding:0;overflow:hidden}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider{background:0 0;width:0}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider .gengage-chat-panel-divider-toggle{left:50%;transform:translate(-50%,-50%)}.gengage-chat-conversation{background:var(--surface-card);z-index:1;flex-direction:column;flex:1;min-width:0;display:flex;position:relative;overflow:hidden}.gengage-chat-drawer--with-panel{width:auto;box-shadow:none;background:0 0;overflow:visible}.gengage-chat-drawer--with-panel .gengage-chat-header{border-radius:0;flex-shrink:0}.gengage-chat-drawer--with-panel .gengage-chat-body{flex:1 1 0;align-items:stretch;gap:0;min-height:0;padding:0;overflow:visible}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:clamp(var(--_gengage-chat-panel-min-width), 56vw, var(--_gengage-chat-panel-max-width));min-width:var(--_gengage-chat-panel-min-width);max-width:var(--_gengage-chat-panel-max-width);background:var(--gengage-chat-panel-bg,var(--surface-card));box-shadow:none;border-right:none;border-radius:0;flex:none;max-height:100dvh;margin:0;padding:0 16px 16px;overflow-y:auto}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider{background:0 0;width:0}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle{background:var(--surface-card);width:20px;height:48px;color:var(--client-primary);border:1px solid color-mix(in srgb, var(--client-primary) 20%, var(--border-default));box-shadow:var(--shadow-1);z-index:10;border-radius:10px;font-size:12px}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle:hover{background:var(--client-primary-subtle);color:var(--client-primary)}.gengage-chat-drawer--with-panel .gengage-chat-conversation{flex:0 0 var(--_gengage-chat-conversation-width);width:var(--_gengage-chat-conversation-width);background:var(--surface-card);box-shadow:var(--shadow-2);border-left:none}.gengage-chat-drawer--with-panel .gengage-chat-messages{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--text-muted) 22%, transparent) transparent;padding-right:6px}.gengage-chat-drawer--with-panel .gengage-chat-messages::-webkit-scrollbar{width:0}.gengage-chat-drawer--with-panel .gengage-chat-panel.gengage-chat-panel--collapsed{flex:0 0 0;width:0;min-width:0;max-width:0;padding:0;overflow:hidden}.gengage-chat-drawer--with-panel:has(.gengage-chat-panel--collapsed){width:var(--_gengage-chat-conversation-width);background:var(--surface-elevated,var(--surface-card));box-shadow:var(--_gengage-chat-shadow)}.gengage-chat-drawer--with-panel .gengage-chat-footer{display:none}.gengage-chat-messages{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;flex-direction:column;flex:1;gap:16px;min-height:0;padding:16px;display:flex;overflow-y:auto}.gengage-chat-messages::-webkit-scrollbar{width:6px}.gengage-chat-messages::-webkit-scrollbar-track{background:0 0}.gengage-chat-messages::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--text-muted) 22%, transparent);border-radius:3px}.gengage-chat-messages::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--text-muted) 36%, transparent)}.gengage-chat-bubble--presentation-collapsed{display:none!important}.gengage-chat-former-messages-btn{z-index:2;border-radius:var(--radius-pill);border:1px solid var(--ds-chip-border);background:color-mix(in srgb, var(--surface-card) 96%, transparent);color:var(--text-primary);cursor:pointer;box-shadow:var(--shadow-1);flex-shrink:0;align-self:center;margin-bottom:4px;padding:8px 14px;font-size:13px;font-weight:600;position:sticky;top:0}.gengage-chat-former-messages-btn:hover{background:var(--surface-card-muted)}.gengage-chat-bubble--panel-bookmark{max-width:72%;margin-top:-6px}.gengage-chat-inline-panel-bookmark-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:10px;font-size:11px;font-weight:700}.gengage-chat-inline-panel-bookmark-card{border:1px solid color-mix(in srgb, var(--client-primary) 38%, var(--border-default));background:color-mix(in srgb, var(--surface-card) 94%, transparent);text-align:left;width:100%;color:var(--text-primary);cursor:pointer;box-shadow:var(--shadow-1);border-radius:18px;flex-direction:column;align-items:flex-start;gap:10px;padding:12px;transition:transform .16s,border-color .16s,box-shadow .16s,background-color .16s;display:flex}.gengage-chat-inline-panel-bookmark-card:hover{border-color:color-mix(in srgb, var(--client-primary) 52%, var(--border-default));box-shadow:var(--shadow-2);transform:translateY(-1px)}.gengage-chat-inline-panel-bookmark-card--active{background:color-mix(in srgb, var(--client-primary-subtle) 42%, var(--surface-card))}.gengage-chat-inline-panel-bookmark-previews{gap:8px;display:flex}.gengage-chat-inline-panel-bookmark-preview{background:color-mix(in srgb, var(--surface-card-muted) 70%, var(--surface-card));border:1px solid color-mix(in srgb, var(--border-default) 74%, transparent);border-radius:14px;flex:none;justify-content:center;align-items:center;width:48px;height:48px;display:inline-flex;overflow:hidden}.gengage-chat-inline-panel-bookmark-preview-img{object-fit:cover;width:100%;height:100%;display:block}.gengage-chat-inline-panel-bookmark-preview-fallback{color:var(--text-primary);font-size:13px;font-weight:700}.gengage-chat-inline-panel-bookmark-title{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:700;line-height:1.25;display:-webkit-box;overflow:hidden}.gengage-chat-inline-panel-bookmark-cta{color:var(--client-primary);font-size:13px;font-weight:700}@media (width<=768px){.gengage-chat-bubble--panel-bookmark{display:none!important}}.gengage-chat-bubble{position:relative}@keyframes gengage-chat-msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-bubble--user{max-width:85%}.gengage-chat-bubble--assistant{max-width:85%;margin-left:2px}.gengage-chat-bubble--ui-spec{box-shadow:none;background:0 0;border:none;min-width:0;padding:0}.gengage-chat-bubble--ui-spec-only{max-width:min(85%,420px)}.gengage-chat-bubble-ui-spec{width:100%}.gengage-chat-bubble--active{outline:2px solid var(--ds-message-active-outline);outline-offset:-2px}.gengage-chat-bubble--panel-restore.gengage-chat-bubble--active{outline:none}.gengage-chat-bubble--assistant:empty{display:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a{color:var(--client-primary);text-decoration:underline}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a:hover{text-decoration:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p{margin:0 0 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p:last-child{margin-bottom:0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text ul,.gengage-chat-bubble--assistant .gengage-chat-bubble-text ol{margin:6px 0;padding-left:20px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text li{margin-bottom:6px;line-height:1.5}.gengage-chat-bubble--assistant .gengage-chat-bubble-text code{background:color-mix(in srgb, var(--text-primary) 8%, transparent);border-radius:6px;padding:1px 4px;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text pre{background:color-mix(in srgb, var(--surface-card) 78%, var(--surface-card-soft));border:1px solid var(--border-subtle);border-radius:12px;margin:4px 0;padding:10px 12px;overflow-x:auto}.gengage-chat-bubble--assistant .gengage-chat-bubble-text table{border-collapse:collapse;margin:4px 0;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text th,.gengage-chat-bubble--assistant .gengage-chat-bubble-text td{border:1px solid var(--border-default);padding:4px 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text img{border-radius:12px;max-width:100%;height:auto;margin:4px 0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text h1,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h2,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h3,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h4,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h5,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h6{color:var(--text-primary);margin:8px 0 4px;line-height:1.3}.gengage-chat-bubble--assistant .gengage-chat-bubble-text blockquote{border-left:3px solid var(--border-default);color:var(--text-secondary);margin:4px 0;padding-left:12px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text{overflow-wrap:break-word}.gengage-chat-bubble--photo-analysis{border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));background:linear-gradient(165deg, color-mix(in srgb, var(--surface-card-soft) 80%, white), var(--surface-card))}.gengage-chat-photo-analysis-card{flex-direction:column;gap:10px;display:flex}.gengage-chat-photo-analysis-badge{letter-spacing:.02em;color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 14%, white);border:1px solid color-mix(in srgb, var(--client-primary) 24%, var(--border-default));border-radius:999px;align-self:flex-start;padding:4px 10px;font-size:11px;font-weight:800}.gengage-chat-photo-analysis-body{flex-direction:column;gap:12px;display:flex}.gengage-chat-photo-analysis-summary{color:var(--text-primary);margin:0;font-size:14px;line-height:1.55}.gengage-chat-photo-analysis-highlights{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.gengage-chat-photo-analysis-section{border:1px solid color-mix(in srgb, var(--client-primary) 14%, var(--border-default));background:color-mix(in srgb, var(--surface-card-soft) 78%, white);border-radius:14px;flex-direction:column;gap:8px;padding:12px;display:flex}.gengage-chat-photo-analysis-section--celeb{gap:6px}.gengage-chat-photo-analysis-section-title{letter-spacing:.03em;text-transform:uppercase;color:var(--text-secondary);margin:0;font-size:12px;font-weight:800}.gengage-chat-photo-analysis-section-list{color:var(--text-primary);gap:6px;margin:0;padding-left:18px;font-size:13px;line-height:1.5;display:grid}.gengage-chat-photo-analysis-section-item{margin:0}.gengage-chat-photo-analysis-celeb-name{color:var(--text-primary);margin:0;font-size:15px;font-weight:800;line-height:1.35}.gengage-chat-photo-analysis-celeb-reason{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.5}.gengage-chat-photo-analysis-next{background:color-mix(in srgb, var(--client-primary) 9%, white);color:var(--text-primary);border-radius:12px;margin:0;padding:10px 12px;font-size:13px;font-weight:700;line-height:1.45}.gengage-chat-bubble--first{border-left:1px solid var(--ds-message-assistant-border)}.gengage-chat-bubble--first .gengage-chat-bubble-text{font-size:inherit}@media (width<=768px){.gengage-chat-bubble--assistant .gengage-chat-bubble-text{line-height:1.5}.gengage-chat-bubble--user{word-break:break-word;max-width:calc(100% - 16px)}}.gengage-chat-typing{align-self:flex-start;max-width:85%}.gengage-chat-typing-dots{flex-shrink:0}.gengage-chat-typing-text{flex:1;min-width:0}.gengage-chat-typing--presence{justify-content:flex-start;width:fit-content;max-width:100%}.gengage-chat-panel-loading-status{margin-bottom:16px}.gengage-chat-panel-loading-status.gds-progress-loader-panel{box-sizing:border-box;min-width:0;max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel-loading-status.gds-progress-loader-panel{max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel-loading-status .gengage-chat-panel-loading-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.gengage-chat-offline-bar{color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));background:color-mix(in srgb, var(--warning) 10%, white);border-bottom:1px solid color-mix(in srgb, var(--warning) 22%, var(--border-default));align-items:center;gap:6px;padding:6px 12px;font-size:12px;line-height:1.4;display:none}.gengage-chat-offline-bar--visible{display:flex}.gengage-chat-offline-bar:before{content:"";background:var(--_gengage-rating-color);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.gengage-chat-thinking-steps{flex-direction:column;gap:4px;padding:4px 0;display:flex}.gengage-chat-thinking-step{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;display:flex}.gengage-chat-thinking-step-marker{text-align:center;flex-shrink:0;width:16px;font-size:12px}.gengage-chat-thinking-step-marker--done{color:var(--_gengage-success-color)}.gengage-chat-thinking-step-marker--active{color:var(--ai-accent-start);animation:1.5s ease-in-out infinite gengage-thinking-pulse}@keyframes gengage-thinking-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-thinking-step-text{line-height:1.4}.gengage-chat-error{border-radius:var(--radius-control);background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 84%, var(--text-primary));text-align:center;border:1px solid color-mix(in srgb, var(--error) 22%, var(--border-default));justify-content:center;align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex}.gengage-chat-error-retry{border:1px solid color-mix(in srgb, var(--error) 24%, var(--border-default));border-radius:var(--radius-control);background:var(--surface-card);color:color-mix(in srgb, var(--error) 84%, var(--text-primary));cursor:pointer;flex-shrink:0;padding:4px 12px;font-size:12px;font-weight:500;transition:background .15s,border-color .15s}.gengage-chat-error-retry:hover{background:color-mix(in srgb, var(--error) 8%, white);border-color:color-mix(in srgb, var(--error) 32%, var(--border-default))}.gengage-chat-input-area{border-top:1px solid var(--border-subtle);background:var(--surface-card);z-index:2;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:0;padding:10px 12px 12px;display:flex;position:relative}.gengage-chat-input-pill{--gengage-chat-input-control-size:40px;--gengage-chat-input-shell-pad:6px;--gengage-chat-input-shell-radius:18px;--gengage-chat-input-control-radius:12px;min-width:0;min-height:calc(var(--gengage-chat-input-control-size) + (var(--gengage-chat-input-shell-pad) * 2));background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--gengage-chat-input-shell-radius);padding:var(--gengage-chat-input-shell-pad);box-sizing:border-box;box-shadow:none;flex:1;align-items:center;gap:10px;transition:border-color .2s,box-shadow .2s;display:flex;overflow:visible}.gengage-chat-input-pill:focus-within{border-color:color-mix(in srgb, var(--client-primary) 28%, white);box-shadow:0 0 0 4px var(--client-focus-ring)}.gengage-chat-input{box-sizing:border-box;min-width:0;min-height:40px;max-height:120px;color:var(--_gengage-text-primary);resize:none;background:0 0;border:none;border-radius:0;outline:none;flex:1;padding:11px 0 9px;font-family:inherit;font-size:14px;line-height:1.4;overflow-y:hidden}.gengage-chat-root--mobile .gengage-chat-input-pill{--gengage-chat-input-control-size:44px;--gengage-chat-input-shell-radius:20px;--gengage-chat-input-control-radius:14px;min-height:calc(var(--gengage-chat-input-control-size) + (var(--gengage-chat-input-shell-pad) * 2))}.gengage-chat-root--mobile .gengage-chat-input{white-space:nowrap;min-height:44px;max-height:44px;padding:12px 0 10px;font-size:16px;line-height:1.4;overflow:hidden}.gengage-chat-input::placeholder{color:var(--text-muted);font-size:14px;line-height:inherit}.gengage-chat-send{width:var(--gengage-chat-input-control-size,40px);height:var(--gengage-chat-input-control-size,40px);min-width:var(--gengage-chat-input-control-size,40px);border:1px solid var(--ds-button-primary-border);border-radius:var(--gengage-chat-input-control-radius,12px);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);cursor:pointer;box-shadow:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:0;font-weight:700;transition:background-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s,transform .15s;display:flex;position:relative}.gengage-chat-send:hover{background:var(--ds-button-primary-bg-hover);box-shadow:none;transform:none}.gengage-chat-send:active{box-shadow:none;transform:translateY(0)}.gengage-chat-send svg{width:18px;height:18px}.gengage-chat-send--stop{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));color:var(--text-primary)}.gengage-chat-send--stop:hover{background:color-mix(in srgb, var(--surface-card-soft) 86%, var(--client-primary-subtle));border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));color:var(--client-primary)}.gengage-chat-send-stop-icon{background:currentColor;border-radius:4px;width:12px;height:12px;display:inline-block}.gengage-chat-send--stop:after{content:attr(data-tooltip);background:color-mix(in srgb, var(--surface-shell) 98%, black);border:1px solid color-mix(in srgb, var(--surface-shell) 60%, white);box-shadow:var(--shadow-2);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;z-index:12;border-radius:10px;padding:7px 10px;font-size:12px;font-weight:600;line-height:1.2;transition:opacity .16s;position:absolute;top:50%;right:calc(100% + 10px);transform:translateY(-50%)}@media (hover:hover) and (pointer:fine){.gengage-chat-send--stop:hover:after,.gengage-chat-send--stop:focus-visible:after{opacity:1}}.gengage-chat-send:disabled{background:var(--ds-neutral-200);border-color:var(--ds-neutral-200);opacity:.5;box-shadow:none;cursor:not-allowed}.gengage-chat-footer{text-align:center;color:var(--text-muted);border-top:1px solid var(--border-subtle);background:var(--surface-card);padding:4px 10px;font-size:10px}.gengage-chat-footer-link{max-width:100%;color:inherit;text-underline-offset:.22em;justify-content:center;align-items:center;text-decoration-line:underline;text-decoration-color:#0000;text-decoration-thickness:1.5px;transition:color .2s,text-decoration-color .2s;display:inline-flex}.gengage-chat-footer-link:hover,.gengage-chat-footer-link:focus-visible{color:var(--gengage-chat-footer-link-hover-color,var(--gengage-brand-accent-mid,var(--ai-accent-end,#f768f2)));-webkit-text-decoration-color:var(--gengage-brand-accent-end,#ffed74);text-decoration-color:var(--gengage-brand-accent-end,#ffed74)}@supports ((-webkit-background-clip:text) or (background-clip:text)){.gengage-chat-footer-link:hover,.gengage-chat-footer-link:focus-visible{background-image:linear-gradient(90deg, var(--gengage-brand-accent-start,var(--ai-accent-start,#0b24d6)) 0%, var(--gengage-brand-accent-start,var(--ai-accent-start,#0b24d6)) 42%, var(--gengage-brand-accent-mid,var(--ai-accent-end,#f768f2)) 100%);color:#0000;-webkit-background-clip:text;background-clip:text}}.gengage-chat-uispec{width:100%}.gengage-chat-uispec:empty{display:none}.gengage-chat-uispec>*{animation:.16s cubic-bezier(.2,.7,.2,1) both gengage-chat-widget-enter}@keyframes gengage-chat-widget-enter{0%{opacity:0;transform:translateY(5px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.gengage-chat-action-buttons{flex-wrap:wrap;justify-content:flex-start;gap:8px;padding:6px 0 4px;display:flex}.gengage-chat-action-buttons:after{content:"";flex:1 0 auto}.gengage-chat-action-btn{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-pill,999px);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg);cursor:pointer;white-space:nowrap;flex:none;padding:8px 16px;font-family:inherit;font-size:13px;font-weight:700;line-height:1.25;transition:filter .15s,transform .1s}.gengage-chat-action-btn:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-action-btn:active{transform:scale(.97)}.gengage-chat-inline-question-buttons{flex-wrap:wrap;align-items:flex-start;gap:12px;padding:10px 0 4px;display:flex}.gengage-chat-inline-question-btn{border:1px solid var(--ds-chip-border);border-radius:var(--radius-pill);background:var(--ds-chip-bg);max-width:100%;min-height:46px;color:var(--text-primary);text-align:left;white-space:normal;cursor:pointer;flex:0 auto;justify-content:flex-start;padding:11px 18px;font-size:13px;font-weight:700;line-height:1.4;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,transform .15s;box-shadow:0 1px #1118270a}.gengage-chat-inline-question-btn:hover{background:var(--ds-chip-bg-hover);border-color:color-mix(in srgb, var(--client-primary) 16%, var(--ds-chip-border));box-shadow:0 4px 12px #11182714}.gengage-chat-inline-question-btn:active{background:var(--ds-chip-bg-active);border-color:var(--ds-chip-border-active);color:var(--text-primary);transform:translateY(1px);box-shadow:0 1px 4px #1118270f}.gengage-chat-inline-question-icon{color:color-mix(in srgb, var(--client-primary) 38%, var(--text-muted));flex:none;font-size:12px;line-height:1;transform:translateY(-1px)}.gengage-chat-inline-question-label{display:inline}.gengage-chat-root--mobile .gengage-chat-inline-question-buttons{gap:10px}.gengage-chat-root--mobile .gengage-chat-inline-question-btn{width:auto;max-width:min(100%,34rem);padding:12px 16px;font-size:12.5px}.gengage-chat-product-card{border:1px solid var(--ds-card-border);border-radius:var(--ds-card-radius);background:var(--ds-card-bg);width:160px;min-width:160px;max-width:160px;box-shadow:var(--ds-card-shadow);flex-direction:column;transition:transform .1s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.gengage-chat-product-card:hover{box-shadow:var(--ds-card-shadow-hover);transform:translateY(-2px)}.gengage-chat-product-card-img{object-fit:contain;background:var(--surface-card);box-sizing:border-box;width:100%;height:120px;padding:8px;display:block}.gengage-chat-product-card-body{text-align:center;flex-direction:column;flex:1;gap:4px;padding:8px 10px 10px;display:flex}.gengage-chat-product-card-name{color:var(--_gengage-text-primary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;min-height:2.7em;margin-bottom:0;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-product-card-brand{color:var(--text-secondary);font-size:10px}.gengage-chat-product-card-rating{color:var(--_gengage-rating-color);font-size:11px;line-height:1}.gengage-star-half{display:inline-block;position:relative}.gengage-star-half>span{width:.5em;position:absolute;top:0;left:0;overflow:hidden}.gengage-chat-product-card-review-count{color:var(--text-secondary);font-size:10px}.gengage-chat-product-card-price,.gengage-chat-product-card-price-block{color:var(--text-primary);flex-wrap:wrap;justify-content:center;align-items:baseline;gap:2px 6px;font-size:16px;font-weight:800;display:flex}.gengage-chat-product-card-current-price{font:inherit;color:var(--gengage-discounted-price-color,var(--text-primary));font-weight:800}.gengage-chat-product-card-original-price{color:var(--_gengage-text-secondary);margin-right:0;font-size:11px;font-weight:400;text-decoration:line-through}.gengage-chat-campaign-reason{letter-spacing:.02em;background:linear-gradient(90deg, var(--_gengage-campaign-reason-start), var(--_gengage-campaign-reason-end));color:#0000;-webkit-background-clip:text;background-clip:text;max-width:100%;margin:0 0 4px;font-size:11px;font-weight:700;line-height:1.25}@supports not ((-webkit-background-clip:text) or (background-clip:text)){.gengage-chat-campaign-reason,.gengage-chat-campaign-price-badge__reason{color:var(--_gengage-campaign-reason-start);background:0 0}}.gengage-chat-product-card-price-stack{flex-direction:column;align-items:flex-start;width:100%;min-width:0;display:flex}.gengage-chat-product-card-price-row{flex-flow:wrap;align-items:baseline;gap:0 6px;display:flex}.gengage-chat-product-card-price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:.95em;margin:0 1px;display:inline-block}.gengage-chat-product-card-price-block--inline .gengage-chat-product-card-original-price{color:var(--gengage-inline-original-price-color,var(--text-secondary));font-size:16px;font-weight:500;text-decoration:none}.gengage-chat-product-card-price-block--inline .gengage-chat-product-card-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:16px;font-weight:800}.gengage-chat-product-card-meta-row{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:8px;width:100%;min-height:34px;display:flex}.gengage-chat-product-card-meta-row--empty{visibility:hidden}.gengage-chat-product-card-rating-compact{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-secondary);border-radius:999px;flex-shrink:0;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:700;line-height:1.2;display:inline-flex}.gengage-chat-product-card-rating-compact-star{color:color-mix(in srgb, var(--warning) 60%, var(--text-primary));justify-content:center;align-items:center;line-height:0;display:inline-flex}.gengage-chat-product-card-rating-compact-value{font-variant-numeric:tabular-nums;color:var(--text-primary)}.gengage-chat-product-card-img-actions{z-index:4;pointer-events:none;flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute;top:8px;right:8px}.gengage-chat-product-card-img-actions>*{pointer-events:auto}.gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{position:static}.gengage-chat-price-skeleton{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);vertical-align:middle;background-size:200% 100%;border-radius:4px;width:80px;height:16px;animation:1.5s ease-in-out infinite gengage-skeleton-price-pulse;display:inline-block}@keyframes gengage-skeleton-price-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-product-card-cta{text-align:center;color:var(--client-primary);letter-spacing:.01em;border-top:1px solid var(--border-default);cursor:pointer;background:0 0;margin-top:auto;padding:8px 10px;font-size:12px;font-weight:700;text-decoration:none;transition:color .15s,background .15s;display:block}.gengage-chat-product-card-cta:hover{color:var(--client-primary-hover);background:var(--surface-card-soft)}.gengage-chat-product-card-cta:active{background:var(--surface-card-soft)}button.gengage-chat-product-card-cta{appearance:none;font:inherit;box-sizing:border-box;border-bottom:none;border-left:none;border-right:none;width:100%;margin:0}.gengage-chat-panel-restore-card{appearance:none;box-sizing:border-box;font:inherit;border:1px solid color-mix(in srgb, var(--client-primary) 34%, var(--border-default));border-radius:calc(var(--radius-control) + 6px);background:var(--surface-card);width:100%;color:var(--text-primary);text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:12px;margin:0;padding:16px 18px;transition:transform .18s,background .18s,box-shadow .18s,border-color .18s;display:flex}.gengage-chat-panel-restore-card--minimal{gap:10px;padding:14px 16px}.gengage-chat-panel-restore-card:hover{background:color-mix(in srgb, var(--surface-card) 92%, var(--client-primary-subtle) 8%);box-shadow:var(--shadow-2);border-color:color-mix(in srgb, var(--client-primary) 52%, var(--border-default));transform:translateY(-1px)}.gengage-chat-panel-restore-card:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:3px}.gengage-chat-panel-restore-card__eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);font-size:12px;font-weight:800}.gengage-chat-panel-restore-card__previews{gap:10px;display:flex}.gengage-chat-panel-restore-card--minimal .gengage-chat-panel-restore-card__previews{gap:8px}.gengage-chat-panel-restore-card__thumb{border:1px solid var(--border-default);background:var(--surface-card);border-radius:16px;width:58px;height:58px;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff8a}.gengage-chat-panel-restore-card__thumb img{object-fit:cover;width:100%;height:100%;display:block}.gengage-chat-panel-restore-card__title{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:18px;font-weight:700;line-height:1.24;display:-webkit-box;overflow:hidden}.gengage-chat-panel-restore-card__cta{color:var(--client-primary);font-size:15px;font-weight:700}.gengage-chat-panel-restore-card--minimal .gengage-chat-panel-restore-card__cta{letter-spacing:.01em;font-size:14px}.gengage-chat-root--mobile .gengage-chat-panel-restore-card{-webkit-tap-highlight-color:transparent;padding:14px 16px}.gengage-chat-root--mobile .gengage-chat-panel-restore-card__thumb{border-radius:14px;width:52px;height:52px}.gengage-chat-root--mobile .gengage-chat-bubble--active{outline:none}.gengage-chat-product-summary{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);cursor:pointer;flex-wrap:wrap;align-items:center;gap:12px;margin:4px 0;padding:10px 12px;transition:background .15s,box-shadow .15s,border-color .15s;display:flex}.gengage-chat-product-summary:hover{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-1)}.gengage-chat-product-summary__image{border-radius:var(--radius-control);border:1px solid var(--border-subtle);background:var(--surface-card-soft);flex-shrink:0;width:64px;height:64px;overflow:hidden}.gengage-chat-product-summary__image img{object-fit:cover;width:100%;height:100%;display:block}.gengage-chat-product-summary__content{flex-direction:column;flex:180px;gap:2px;min-width:0;display:flex}.gengage-chat-product-summary__name{color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;font-size:13px;font-weight:500;line-height:1.3;display:-webkit-box;overflow:hidden}.gengage-chat-product-summary__rating{color:var(--_gengage-rating-color);font-size:11px;line-height:1}.gengage-chat-product-summary__review-count{color:var(--text-secondary);font-size:11px}.gengage-chat-product-summary__price{color:var(--text-primary);margin-top:2px;font-size:13px;font-weight:600;line-height:1}.gengage-chat-product-summary__price-original{color:var(--_gengage-text-secondary);font-size:11px;font-weight:400;text-decoration:line-through}.gengage-chat-product-summary__price-current{color:var(--gengage-discounted-price-color,var(--text-primary))}.gengage-chat-product-summary__price-stack{flex-direction:column;align-items:flex-start;gap:2px;margin-top:2px;display:flex}.gengage-chat-product-summary__price-stack .gengage-chat-campaign-reason{font-size:11px;font-weight:700}.gengage-chat-product-summary__price--inline{flex-flow:wrap;align-items:baseline;gap:0 6px;display:flex}.gengage-chat-product-summary__price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:.9em;margin:0 1px;display:inline-block}.gengage-chat-product-summary__price--inline .gengage-chat-product-summary__price-original{color:var(--gengage-inline-original-price-color,var(--text-secondary));font-size:13px;font-weight:500;text-decoration:none}.gengage-chat-product-summary__price--inline .gengage-chat-product-summary__price-current{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:13px;font-weight:700}.gengage-chat-product-summary__cta{color:var(--client-primary);border-radius:var(--radius-pill);background:var(--client-primary-subtle);white-space:nowrap;flex-shrink:0;margin-left:auto;padding:4px 10px;font-size:12px;font-weight:600;text-decoration:none;transition:background .15s,color .15s}.gengage-chat-product-summary__cta:hover{background:var(--client-primary-soft)}.gengage-chat-product-summary__cta:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}button.gengage-chat-product-summary__cta{cursor:pointer;font:inherit;border:none}.gengage-chat-product-grid{-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity;gap:12px;min-height:180px;padding:8px 16px 8px 0;display:flex;overflow-x:auto}.gengage-chat-product-grid>*{scroll-snap-align:start;flex:none}.gengage-chat-product-grid::-webkit-scrollbar{display:none}.gengage-chat-product-grid--pending{filter:blur(3px)saturate(.85);opacity:.75;pointer-events:none;transition:filter .16s ease-out,opacity .16s ease-out;position:relative}.gengage-chat-product-grid--pending:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000 0%,#ffffff59 50%,#0000 100%);animation:1.2s ease-in-out infinite gengage-chat-product-grid-shimmer;position:absolute;inset:0;transform:translate(-100%)}@keyframes gengage-chat-product-grid-shimmer{to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.gengage-chat-product-grid--pending:after{animation:none}}.gengage-chat-review-highlights{padding:4px 0 8px}.gengage-chat-review-empty{color:var(--_gengage-text-secondary);font-size:12px}.gengage-chat-review-subjects-heading{color:var(--text-primary);margin-bottom:10px;font-size:14px;font-weight:700}.gengage-chat-review-subjects{margin-bottom:12px}.gengage-chat-review-subject{color:var(--text-primary);box-shadow:none;gap:6px;padding:7px 11px;font-size:13px;font-weight:600;line-height:1.2}.gengage-chat-review-subject--active{border-color:var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active)}.gengage-chat-review-subject-icon{flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;display:inline-flex}.gengage-chat-review-subject-icon svg{width:14px;height:14px;display:block}.gengage-chat-review-subject[data-tone=positive] .gengage-chat-review-subject-icon{color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-review-subject[data-tone=negative] .gengage-chat-review-subject-icon{color:color-mix(in srgb, var(--error) 84%, var(--text-primary))}.gengage-chat-review-subject[data-tone=neutral] .gengage-chat-review-subject-icon{color:var(--text-secondary)}.gengage-chat-review-subject-label{color:inherit}.gengage-chat-review-subject-count{color:var(--text-secondary);font-size:12px;font-weight:700}.gengage-chat-review-detail{padding:12px}.gengage-chat-review-detail-meta{flex-wrap:wrap;align-items:baseline;gap:10px 16px;margin-bottom:10px;display:flex}.gengage-chat-review-detail-mentions{color:var(--_gengage-text-primary);font-size:13px;font-weight:700}.gengage-chat-review-detail-positive{color:var(--_gengage-success-color);font-size:13px;font-weight:700}.gengage-chat-review-detail-negative{color:var(--error);font-size:13px;font-weight:700}.gengage-chat-review-snippets{gap:10px;display:grid}.gengage-chat-review-snippet{border:1px solid var(--border-subtle);border-left:3px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card-soft);padding:8px 10px}.gengage-chat-review-snippet[data-tone=positive]{border-left-color:color-mix(in srgb, var(--success) 40%, var(--border-default))}.gengage-chat-review-snippet[data-tone=negative]{border-left-color:color-mix(in srgb, var(--error) 40%, var(--border-default))}.gengage-chat-review-snippet-text{color:var(--_gengage-text-primary);font-size:13px;line-height:1.4}.gengage-chat-review-snippet-rating{color:var(--text-secondary);margin-top:4px;font-size:12px;font-weight:700}.gengage-chat-favorites-page{padding:12px}.gengage-chat-favorites-empty{text-align:center;color:var(--_gengage-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;display:flex}.gengage-chat-favorites-empty-icon{opacity:.25;color:var(--error)}.gengage-chat-favorites-empty p{margin:0;font-size:13px;line-height:1.5}.gengage-chat-favorites-list{flex-direction:column;gap:10px;display:flex}.gengage-chat-favorites-card{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);box-shadow:var(--shadow-1);align-items:center;gap:12px;padding:10px 12px;transition:opacity .2s,transform .2s,box-shadow .2s,border-color .2s;display:flex;position:relative}.gengage-chat-favorites-card:hover{border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));box-shadow:var(--shadow-1)}.gengage-chat-favorites-card--removing{opacity:0;transform:translate(8px)}.gengage-chat-favorites-card__image{border-radius:var(--radius-control);background:var(--surface-card-muted);flex-shrink:0;width:56px;height:56px;overflow:hidden}.gengage-chat-favorites-card__image img{object-fit:contain;width:100%;height:100%}.gengage-chat-favorites-card__info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.gengage-chat-favorites-card__name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.gengage-chat-favorites-card__price{color:var(--client-primary);font-size:13px;font-weight:700}.gengage-chat-favorites-remove{border-radius:var(--radius-pill);width:28px;height:28px;color:var(--error);cursor:pointer;opacity:.7;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .15s,background .15s;display:inline-flex}.gengage-chat-favorites-remove:hover{opacity:1;background:color-mix(in srgb, var(--error) 10%, white)}.gengage-chat-history-page{flex-direction:column;gap:12px;padding:12px;display:flex}.gengage-chat-history-actions{display:flex}.gengage-chat-history-new-chat{border:1px solid color-mix(in srgb, var(--client-primary) 20%, var(--border-default));border-radius:var(--radius-control);background:color-mix(in srgb, var(--client-primary) 9%, white);width:100%;min-height:42px;color:var(--client-primary);cursor:pointer;padding:0 14px;font-size:13px;font-weight:700;transition:background .15s,border-color .15s,transform .15s}.gengage-chat-history-new-chat:hover{background:color-mix(in srgb, var(--client-primary) 14%, white);border-color:color-mix(in srgb, var(--client-primary) 28%, var(--border-default))}.gengage-chat-history-list{flex-direction:column;gap:10px;display:flex}.gengage-chat-history-item{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);box-shadow:var(--shadow-1);align-items:stretch;gap:8px;padding:0;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.gengage-chat-history-item:hover{border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default))}.gengage-chat-history-item--active{border-color:color-mix(in srgb, var(--client-primary) 28%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 6%, var(--surface-card))}.gengage-chat-history-open{min-width:0;color:var(--text-primary);text-align:left;cursor:pointer;background:0 0;border:none;flex:1;padding:12px 14px}.gengage-chat-history-item-title-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.gengage-chat-history-item-title{min-width:0;color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:700;overflow:hidden}.gengage-chat-history-item-meta{color:var(--text-muted);flex-shrink:0;font-size:11px;font-weight:600}.gengage-chat-history-item-preview{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 0;font-size:12px;line-height:1.45;display:-webkit-box;overflow:hidden}.gengage-chat-history-delete{border:none;border-left:1px solid color-mix(in srgb, var(--border-default) 84%, transparent);border-top-right-radius:inherit;border-bottom-right-radius:inherit;width:38px;min-width:38px;color:var(--text-muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.gengage-chat-history-delete:hover{background:color-mix(in srgb, var(--error) 10%, white);color:var(--error)}.gengage-chat-history-empty{text-align:center;color:var(--_gengage-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;display:flex}.gengage-chat-history-empty-icon{opacity:.25;color:var(--client-primary)}.gengage-chat-history-empty p{margin:0;font-size:13px;line-height:1.5}.gengage-chat-divider{border:none;border-top:1px solid var(--_gengage-border-color);margin:8px 0}.gengage-chat-divider-wrapper{align-items:center;gap:8px;margin:8px 0;display:flex}.gengage-chat-divider-wrapper hr{border:none;border-top:1px solid var(--_gengage-border-color);flex:1;margin:0}.gengage-chat-divider-label{color:var(--text-muted);white-space:nowrap;font-size:11px}.gengage-chat--overlay .gengage-chat-drawer{border-radius:0;width:100%;max-width:480px;max-height:100%;margin:0 auto;animation:.24s cubic-bezier(.2,.72,.2,1) gengage-chat-overlay-in;position:fixed;inset:0}@keyframes gengage-chat-overlay-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-panel-skeleton{box-sizing:border-box;flex-direction:column;gap:14px;min-width:0;max-width:100%;padding:6px 0;display:flex}.gengage-chat-panel-skeleton-block{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);background-size:200% 100%;border-radius:10px;height:110px;animation:1.4s infinite gengage-panel-shimmer}@keyframes gengage-panel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-panel-skeleton-block--image{border-radius:8px;height:200px;margin-bottom:12px}.gengage-chat-panel-skeleton-block--text{border-radius:4px;height:16px;margin-bottom:8px}.gengage-chat-panel-skeleton-block--text:nth-child(3){width:80%}.gengage-chat-panel-skeleton-block--text:nth-child(4){width:60%}.gengage-chat-panel-skeleton-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.gengage-chat-panel-skeleton-block--card{border-radius:8px;height:120px}.gengage-chat-panel-skeleton--comparison{gap:0;padding:0}.gengage-chat-panel-skeleton--comparison .gengage-chat-panel-loading-status{margin:0;padding:16px 16px 0}.gengage-chat-comparison--skeleton{pointer-events:none;box-sizing:border-box;width:100%}.gengage-chat-comparison-skeleton-shimmer{background:linear-gradient(90deg, var(--ds-neutral-200) 25%, var(--ds-neutral-100) 50%, var(--ds-neutral-200) 75%);background-size:200% 100%;animation:1.4s infinite gengage-panel-shimmer}.gengage-chat-comparison-skeleton-rec-label{border-radius:4px;width:132px;height:12px;margin-bottom:12px}.gengage-chat-comparison-skeleton-rec-img{border-radius:8px;flex-shrink:0;width:80px;height:80px}.gengage-chat-comparison-skeleton-rec-title{border-radius:4px;max-width:100%;height:14px;margin-bottom:6px}.gengage-chat-comparison-skeleton-rec-title--short{width:72%;margin-bottom:8px}.gengage-chat-comparison-skeleton-rec-price{border-radius:4px;width:112px;height:18px}.gengage-chat-comparison-skeleton-hl-label{border-radius:4px;width:96px;height:12px;margin-bottom:6px}.gengage-chat-comparison-skeleton-hl-list{margin:0;padding-left:18px;list-style:none}.gengage-chat-comparison-skeleton-hl-list li{margin-bottom:8px}.gengage-chat-comparison-skeleton-hl-list li:last-child{margin-bottom:0}.gengage-chat-comparison-skeleton-hl-line{border-radius:4px;width:100%;height:13px}.gengage-chat-comparison-skeleton-hl-line--medium{width:92%}.gengage-chat-comparison-skeleton-hl-line--short{width:78%}.gengage-chat-comparison-skeleton-kd-heading{border-radius:4px;width:42%;height:14px;margin:0 0 8px}.gengage-chat-comparison-skeleton-kd-line{border-radius:4px;max-width:100%;height:13px;margin-bottom:8px}.gengage-chat-comparison-skeleton-kd-line:last-child{margin-bottom:0}.gengage-chat-comparison-skeleton-kd-line:nth-child(odd){width:100%}.gengage-chat-comparison-skeleton-kd-line:nth-child(2n){width:90%}.gengage-chat-comparison-special--skeleton{cursor:default;align-items:center;min-height:44px;display:flex}.gengage-chat-comparison-skeleton-special-line{border-radius:4px;width:56%;max-width:280px;height:14px}.gengage-chat-comparison-skeleton-table-wrap{border:1px solid var(--border-default);background:var(--surface-card);-webkit-overflow-scrolling:touch;border-radius:8px;margin-top:12px;overflow-x:auto}.gengage-chat-comparison-skeleton-table-head,.gengage-chat-comparison-skeleton-table-row{grid-template-columns:72px repeat(3,minmax(0,1fr));align-items:start;gap:8px;padding:10px 12px;display:grid}.gengage-chat-comparison-skeleton-table-head{border-bottom:1px solid var(--_gengage-surface-muted);background:var(--_gengage-surface-muted)}.gengage-chat-comparison-skeleton-table-corner{min-height:92px}.gengage-chat-comparison-skeleton-table-col{text-align:center;flex-direction:column;align-items:center;gap:6px;min-width:0;display:flex}.gengage-chat-comparison-skeleton-table-th-img{border-radius:6px;flex-shrink:0;width:60px;height:60px}.gengage-chat-comparison-skeleton-table-th-name{border-radius:3px;width:100%;max-width:100%;height:11px}.gengage-chat-comparison-skeleton-table-th-price{border-radius:3px;width:64%;height:13px}.gengage-chat-comparison-skeleton-table-row{border-bottom:1px solid var(--_gengage-surface-muted)}.gengage-chat-comparison-skeleton-table-row:last-child{border-bottom:none}.gengage-chat-comparison-skeleton-table-label{border-radius:3px;align-self:center;width:100%;max-width:56px;height:12px}.gengage-chat-comparison-skeleton-table-cell{border-radius:3px;width:100%;height:14px}.gengage-chat-panel-skeleton-block--row{border-radius:4px;height:32px;margin-bottom:4px}.gengage-chat-panel .gengage-chat-product-card{border-radius:var(--radius-card);border:1px solid var(--border-default);width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-1);background:var(--surface-card);flex-direction:column;padding:0;display:flex;overflow:hidden}.gengage-chat-panel .gengage-chat-product-card:hover{box-shadow:var(--shadow-2);border-color:var(--border-strong);transform:translateY(-2px)}.gengage-chat-panel .gengage-chat-product-card-img-actions{gap:6px;top:10px;right:10px}.gengage-chat-panel .gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-panel .gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{border-radius:8px;width:28px;height:28px}.gengage-chat-panel .gengage-chat-product-card-discount-badge{border-radius:var(--radius-pill);background:var(--client-primary);min-width:36px;height:36px;color:var(--client-on-primary);box-shadow:var(--shadow-1);justify-content:center;align-items:center;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex;top:10px;left:10px}.gengage-chat-panel .gengage-chat-product-card-brand{display:none}.gengage-chat-panel .gengage-chat-product-grid{grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:12px;min-height:auto;padding:4px 0;display:grid;overflow-x:visible}.gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--consulting-groups{grid-template-columns:repeat(auto-fit,minmax(200px,240px));justify-content:start}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--consulting-groups.gengage-chat-product-grid--mobile{grid-template-columns:1fr}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--mobile{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-height:auto;padding:6px 0 10px;display:grid;overflow-x:visible}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-grid.gengage-chat-product-grid--mobile .gengage-chat-product-card{box-sizing:border-box;width:100%;min-width:0;max-width:none}.gengage-chat-panel .gengage-chat-product-card-img-wrapper{aspect-ratio:1;background:var(--surface-card-muted);border-radius:var(--radius-card) var(--radius-card) 0 0;flex-shrink:0;width:100%;position:relative;overflow:hidden}.gengage-chat-panel .gengage-chat-product-card-img{border-radius:inherit;object-fit:cover;object-position:center;box-sizing:border-box;background:0 0;width:100%;height:100%;min-height:0;padding:0;display:block}.gengage-chat-panel .gengage-chat-product-card-body{text-align:left;gap:8px;padding:12px 14px 10px}.gengage-chat-panel .gengage-chat-product-card-meta-row{align-items:center;min-height:38px;margin-bottom:0}.gengage-chat-panel .gengage-chat-product-card-price,.gengage-chat-panel .gengage-chat-product-card-price-block{color:var(--text-primary);justify-content:flex-start;font-size:15px;font-weight:600}.gengage-chat-panel .gengage-chat-product-card-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:15px;font-weight:600}.gengage-chat-panel .gengage-chat-product-card-original-price{color:var(--text-muted);font-size:12px;font-weight:400}.gengage-chat-panel .gengage-chat-product-card-rating-compact{font-size:11px;font-weight:700}.gengage-chat-panel .gengage-chat-product-card-rating-compact-star{color:color-mix(in srgb, var(--warning) 58%, var(--text-primary))}.gengage-chat-panel .gengage-chat-product-card-name{min-height:0;color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;margin:0 0 2px;font-size:14px;font-weight:600;line-height:1.35}.gengage-chat-panel .gengage-chat-product-card-buy-footer{flex-shrink:0;min-width:0;margin-top:auto;padding:0 14px 16px;display:flex;position:relative}.gengage-chat-panel .gengage-chat-product-card-buy-trigger{box-sizing:border-box;border:1.5px solid var(--client-primary);background:var(--surface-card);width:100%;min-width:0;min-height:42px;color:var(--client-primary);white-space:nowrap;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;margin:0;padding:9px 14px;font-family:inherit;font-size:13px;font-weight:600;line-height:1.2;transition:background .15s,box-shadow .15s;display:flex}.gengage-chat-panel .gengage-chat-product-card-buy-trigger:hover{background:color-mix(in srgb, var(--client-primary) 6%, white);box-shadow:var(--shadow-1)}.gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta{border:1.5px solid var(--client-primary);background:var(--surface-card);width:calc(100% - 28px);min-width:0;color:var(--client-primary);box-sizing:border-box;border-radius:12px;justify-content:center;align-items:center;min-height:42px;margin:0 14px 16px;padding:9px 14px;font-size:13px;font-weight:600;display:flex}.gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta:hover{background:color-mix(in srgb, var(--client-primary) 6%, white)}.gengage-chat-product-card--selected{border-color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, transparent);box-shadow:0 0 0 1px var(--client-primary)}.gengage-chat-panel--visible{min-height:0}.gengage-chat-panel--visible>*{flex-shrink:0}.gengage-chat-load-more-btn{border:1px solid var(--border-default);color:var(--client-primary);cursor:pointer;background:0 0;border-radius:8px;margin:12px auto;padding:8px 24px;font-size:14px;display:block}.gengage-chat-load-more-btn:hover{background:var(--surface-card-muted)}.gengage-chat-product-details-panel{background:var(--surface-card);border:1px solid var(--border-default);box-sizing:border-box;border-radius:16px;flex-direction:column;gap:12px;width:100%;padding:14px;display:flex}.gengage-chat-product-details-media{border:1px solid var(--border-subtle);background:var(--surface-card-muted);border-radius:12px;flex-direction:column;align-items:center;padding:12px;display:flex}.gengage-chat-product-details-img{object-fit:contain;border-radius:8px;width:100%;height:auto;max-height:300px}.gengage-chat-product-details-content{flex-direction:column;gap:8px;min-width:0;display:flex}.gengage-chat-product-details-title{color:var(--text-primary);margin:0;font-size:17px;font-weight:700;line-height:1.3}.gengage-chat-product-details-rating{background:color-mix(in srgb, var(--warning) 10%, white);width:fit-content;color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));border-radius:999px;align-items:center;gap:4px;padding:3px 8px;font-size:13px;font-weight:700;display:inline-flex}.gengage-chat-product-details-review-count{color:color-mix(in srgb, var(--warning) 84%, var(--text-primary));font-weight:600}.gengage-chat-product-details-price{align-items:baseline;gap:6px;display:flex}.gengage-chat-product-details-original-price{color:var(--text-secondary);font-size:14px;text-decoration:line-through}.gengage-chat-product-details-price-stack{flex-direction:column;align-items:flex-start;gap:2px;width:100%;display:flex}.gengage-chat-product-details-price-stack .gengage-chat-campaign-reason{margin-bottom:2px;font-size:13px;font-weight:600}.gengage-chat-product-details-price--inline{flex-wrap:nowrap;align-items:baseline}.gengage-chat-product-details-price--inline .gengage-chat-product-details-price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:1em;margin:0 4px;display:inline-block}.gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price{color:var(--text-secondary);order:0;font-size:22px;font-weight:500;text-decoration:none}.gengage-chat-product-details-price--inline .gengage-chat-product-details-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));order:0;font-size:22px;font-weight:800}.gengage-chat-product-details-current-price{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:22px;font-weight:800;line-height:1.1}.gengage-chat-product-details-stock{border-radius:999px;width:fit-content;padding:4px 10px;font-size:12px;font-weight:700}.gengage-chat-product-details-stock.is-in-stock{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-product-details-stock.is-out-of-stock{background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 82%, var(--text-primary))}.gengage-chat-product-details-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.gengage-chat-product-details-cta{border-radius:var(--radius-control,12px);border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);min-height:40px;color:var(--ds-button-primary-fg);cursor:pointer;justify-content:center;align-items:center;padding:0 20px;font-size:14px;font-weight:700;text-decoration:none;transition:filter .14s,transform .12s;display:inline-flex}.gengage-chat-product-details-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-product-details-cta:active{background:var(--ds-button-primary-bg-active)}.gengage-chat-product-details-atc{border-radius:var(--radius-control);background:var(--_gengage-success-color);color:var(--client-on-primary);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:700;transition:filter .12s,transform .12s;display:inline-flex}.gengage-chat-product-details-atc:hover{filter:brightness(1.08);transform:translateY(-1px)}.gengage-chat-product-details-atc:active{transform:translateY(1px)}.gengage-chat-product-detail-tabs{border-top:1px solid var(--border-default);margin-top:4px;padding-top:12px}.gengage-chat-product-detail-tab-bar{border-bottom:1px solid var(--border-default);gap:6px;margin-bottom:12px;padding-bottom:8px;display:flex}.gengage-chat-product-detail-tab{border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;flex:1;padding:8px 12px;font-family:inherit;font-size:13px;font-weight:600;transition:color .15s,border-color .15s,background .15s}.gengage-chat-product-detail-tab:hover{color:var(--text-primary);background:color-mix(in srgb, var(--surface-card-soft) 82%, transparent)}.gengage-chat-product-detail-tab--active{color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-product-detail-tab-panel{color:var(--text-secondary);font-size:13px;line-height:1.6}.gengage-chat-product-description{color:var(--text-primary);flex-direction:column;gap:10px;display:flex}.gengage-chat-product-description p,.gengage-chat-product-description h2,.gengage-chat-product-description h3,.gengage-chat-product-description h4,.gengage-chat-product-description ul,.gengage-chat-product-description ol{margin:0}.gengage-chat-product-description h2,.gengage-chat-product-description h3,.gengage-chat-product-description h4{color:var(--text-primary);font-size:15px;font-weight:800;line-height:1.35}.gengage-chat-product-description ul,.gengage-chat-product-description ol{padding-left:20px}.gengage-chat-product-description li+li{margin-top:6px}.gengage-chat-product-description strong,.gengage-chat-product-description b{font-weight:800}.gengage-chat-product-specs-table{border-collapse:collapse;width:100%;font-size:13px}.gengage-chat-product-specs-table tr:nth-child(2n){background:var(--surface-card-muted)}.gengage-chat-product-specs-key{color:var(--text-secondary);white-space:nowrap;border-bottom:1px solid var(--border-subtle);width:40%;padding:6px 10px;font-weight:600}.gengage-chat-product-specs-value{color:var(--text-primary);border-bottom:1px solid var(--border-subtle);padding:6px 10px}.gengage-chat-product-card-atc{opacity:0;z-index:1;transition:opacity .15s;position:absolute;bottom:42px;right:6px}.gengage-chat-product-card:hover .gengage-chat-product-card-atc{opacity:1}@media (hover:none),(pointer:coarse){.gengage-chat-product-card-atc{opacity:1;width:100%;margin:0;display:flex;position:relative;bottom:auto;right:auto}}.gengage-chat-drawer.gengage-chat-drawer--hidden{opacity:0;pointer-events:none;box-shadow:none;visibility:hidden;transform:translate(100%)}.gengage-chat-root--mobile .gengage-chat-drawer.gengage-chat-drawer--hidden{opacity:0;pointer-events:none;box-shadow:none;visibility:hidden;transform:translateY(100%)}@media (width<=900px){.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:clamp(280px, calc(100vw - var(--_gengage-chat-conversation-width)), 560px);max-width:560px}}.gengage-chat-attachment-preview{background:var(--surface-card-muted);border:1px solid var(--border-default);box-sizing:border-box;border-radius:8px;align-items:center;gap:8px;width:100%;padding:6px 10px;display:flex}.gengage-chat-attachment-preview--hidden{display:none}.gengage-chat-attachment-preview-thumb{object-fit:cover;border-radius:4px;flex-shrink:0;width:40px;height:40px}.gengage-chat-attachment-name{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.gengage-chat-attachment-remove{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:18px;line-height:1}.gengage-chat-attachment-remove:hover{color:var(--error)}.gengage-chat-attach-btn{background:var(--surface-card-soft);border:1px solid var(--border-default);cursor:pointer;width:var(--gengage-chat-input-control-size,40px);height:var(--gengage-chat-input-control-size,40px);border-radius:var(--gengage-chat-input-control-radius,12px);color:var(--text-primary);flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,background .15s,border-color .15s;display:flex}.gengage-chat-attach-btn:hover{color:var(--client-primary);background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 18%, white)}.gengage-chat-attach-btn svg{width:20px;height:20px}.gengage-chat-attach-wrap{flex-shrink:0;align-items:center;display:flex;position:relative}.gengage-chat-attach-menu{z-index:50;background:var(--surface-elevated);border:1px solid var(--border-default);border-radius:var(--radius-card);min-width:196px;box-shadow:var(--shadow-3);margin:0;padding:4px 0;list-style:none;position:absolute;bottom:calc(100% + 8px);left:0}.gengage-chat-attach-menu[hidden]{display:none!important}.gengage-chat-attach-menu-item{cursor:pointer;width:100%;color:var(--text-primary);text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:10px 14px;font-family:inherit;font-size:14px;font-weight:500;transition:background .12s;display:flex}.gengage-chat-attach-menu-item:hover{background:var(--surface-card-muted)}.gengage-chat-attach-menu-icon{color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-attach-menu-label{flex:1;min-width:0}.gengage-chat-attach-menu-sep{background:var(--border-default);height:1px;margin:4px 10px}.gengage-chat-mic-btn{cursor:pointer;border-radius:var(--radius-control);width:32px;height:32px;color:var(--text-secondary);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,background .15s;display:flex}.gengage-chat-mic-btn:hover{color:var(--text-primary);background:var(--surface-card-muted);border-color:var(--border-default)}.gengage-chat-mic-btn svg{width:20px;height:20px}.gengage-chat-mic-btn--active{color:var(--error);animation:1.2s ease-in-out infinite gengage-mic-pulse}.gengage-chat-mic-btn--active:hover{color:color-mix(in srgb, var(--error) 84%, black)}@keyframes gengage-mic-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.15)}}.gengage-chat-input-area--dragover{outline:2px dashed var(--client-primary);outline-offset:-2px;background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-attachment-thumb{border-radius:8px;width:120px;max-width:100%;height:auto;margin-bottom:6px;display:block}.gengage-chat-root--mobile .gengage-chat-header-btn,.gengage-chat-root--mobile .gengage-chat-close{border-radius:12px;width:44px;height:44px}@media (width<=374px){.gengage-chat-root--mobile .gengage-chat-header-btn{width:34px;min-width:34px;height:34px;min-height:34px}}.gengage-chat-root--mobile .gengage-chat-attach-btn,.gengage-chat-root--mobile .gengage-chat-mic-btn,.gengage-chat-root--mobile .gengage-chat-send{width:var(--gengage-chat-input-control-size,44px);height:var(--gengage-chat-input-control-size,44px);min-width:var(--gengage-chat-input-control-size,44px);border-radius:var(--gengage-chat-input-control-radius,14px)}.gengage-chat-root--mobile .gengage-chat-attach-btn svg,.gengage-chat-root--mobile .gengage-chat-mic-btn svg{width:22px;height:22px}.gengage-chat-root--mobile .gengage-chat-panel-divider{cursor:ns-resize;touch-action:pan-y;background:0 0;justify-content:center;align-items:center;width:100%;height:20px;display:flex;position:relative;overflow:visible}.gengage-chat-root--mobile .gengage-chat-panel-divider--hidden{display:none}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel{border-radius:0;width:100%;left:0;right:0}.gengage-chat-root--mobile .gengage-chat-panel{z-index:10;width:100%;min-width:0;max-width:none;max-height:none;box-shadow:none;background:var(--gengage-chat-panel-bg,var(--surface-card));pointer-events:none;border:none;border-radius:0;flex-direction:column;padding:0 12px 16px;transition:transform .32s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;inset:0;overflow-y:auto;transform:translate(100%)}.gengage-chat-root--mobile .gengage-chat-panel--visible{pointer-events:auto;transform:translate(0)}.gengage-chat-root--mobile .gengage-chat-panel-divider,.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-panel-divider{display:none}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-body{flex-direction:row}.gengage-chat-root--mobile .gengage-chat-drawer--with-panel .gengage-chat-conversation{border-left:none;flex:1;width:100%}.gengage-chat-root--mobile .gengage-chat-product-details-share{width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-footer,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-cta{box-sizing:border-box;width:100%;max-width:100%}.gengage-chat-root--mobile .gengage-chat-product-details-panel{gap:8px;padding:10px}.gengage-chat-root--mobile .gengage-chat-product-details-media{min-height:0;padding:8px}.gengage-chat-root--mobile .gengage-chat-product-details-content{gap:6px}.gengage-chat-root--mobile .gengage-chat-product-details-title{font-size:14px;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-product-details-rating{padding:2px 6px;font-size:12px}.gengage-chat-root--mobile .gengage-chat-product-details-original-price{font-size:12px}.gengage-chat-root--mobile .gengage-chat-product-details-current-price,.gengage-chat-root--mobile .gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price,.gengage-chat-root--mobile .gengage-chat-product-details-price--inline .gengage-chat-product-details-current-price{font-size:18px}.gengage-chat-root--mobile .gengage-chat-product-details-actions{gap:6px;margin-top:2px}.gengage-chat-root--mobile .gengage-chat-product-details-cta{min-height:38px;padding:0 14px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-product-grid:not(.gengage-chat-product-grid--mobile){scroll-snap-type:x mandatory}.gengage-chat-root--mobile .gengage-chat-product-grid.gengage-chat-product-grid--mobile{scroll-snap-type:none}.gengage-chat-root--mobile .gengage-chat-product-card{box-sizing:border-box;scroll-snap-align:center;width:280px;min-width:280px;max-width:100%}.gengage-chat-root--mobile .gengage-chat-product-grid--mobile .gengage-chat-product-card{scroll-snap-align:start;width:100%;min-width:0;max-width:none}.gengage-chat-root--mobile .gengage-chat-product-card-img-wrapper{justify-content:center;align-items:center;min-height:0;display:flex}.gengage-chat-root--mobile .gengage-chat-product-card-img{object-fit:contain;object-position:center;width:auto;max-width:100%;height:auto;min-height:0;max-height:180px;display:block}.gengage-chat-root--mobile .gengage-chat-product-card-discount-badge{padding:2px 6px;font-size:10px;font-weight:700;line-height:1.2}.gengage-chat-root--mobile .gengage-chat-drawer{border-radius:0;width:100%;max-height:100%;position:fixed;inset:0}.gengage-chat-root--mobile .gengage-chat-bubble{max-width:100%}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-img-wrapper{aspect-ratio:1;justify-content:center;align-items:center;min-height:0;display:flex}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-img{object-fit:contain;object-position:center;width:auto;max-width:100%;height:auto;min-height:0;max-height:min(200px,72%)}.gengage-chat-root--mobile .gengage-chat-product-card-img-actions .gengage-chat-favorite-btn,.gengage-chat-root--mobile .gengage-chat-product-card-img-actions .gengage-chat-find-similar-pill{flex-shrink:0;width:28px;min-width:28px;height:28px;min-height:28px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-discount-badge{min-width:28px;height:28px;padding:0 6px;font-size:10px;font-weight:700}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-footer{padding:0 12px 14px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-buy-trigger{box-sizing:border-box;white-space:normal;text-align:center;-webkit-hyphens:auto;hyphens:auto;min-width:0;max-width:100%;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card .gengage-chat-product-card-cta{box-sizing:border-box;white-space:normal;width:calc(100% - 24px);min-width:0;max-width:calc(100% - 24px);margin-left:12px;margin-right:12px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-rating-compact{gap:3px;padding:2px 6px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-card-stock{padding:2px 5px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-messages{scrollbar-width:none;padding:12px 16px}.gengage-chat-root--mobile .gengage-chat-messages::-webkit-scrollbar{display:none}.gengage-chat-root--mobile .gengage-chat-drawer{border-top:none}.gengage-chat-root--mobile .gengage-chat-header{border-radius:16px 16px 0 0;min-height:72px;padding-top:22px;padding-bottom:8px}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-header{border-radius:0}.gengage-chat-root--mobile .gengage-chat-conversation{-webkit-overflow-scrolling:touch;min-height:0;overflow-y:auto}.gengage-chat-root--mobile .gengage-chat-product-details-img{object-fit:contain;min-height:0;max-height:200px}.gengage-chat-root--mobile .gengage-chat-product-details-actions{flex-wrap:wrap;gap:8px}.gengage-chat-root--mobile .gengage-chat-product-details-promos{flex-wrap:wrap;gap:4px}.gengage-chat-root--mobile .gengage-chat-input::placeholder{font-size:13px;line-height:inherit}.gengage-chat-kvkk-banner{color:var(--text-secondary);background:0 0;border:none;padding:14px 32px 10px;font-size:13px;line-height:1.55}.gengage-chat-kvkk-content{min-width:0}.gengage-chat-kvkk-content p{margin:0}.gengage-chat-kvkk-content a{color:inherit;margin-top:8px;text-decoration:underline;display:inline-block}.gengage-chat-comparison{box-sizing:border-box;flex-direction:column;gap:12px;padding:16px;display:flex}.gengage-chat-comparison-heading{letter-spacing:.05em;color:var(--text-primary);margin:0 0 16px;font-size:14px;font-weight:700}.gengage-chat-comparison-recommended{border:1px solid color-mix(in srgb, var(--client-primary) 18%, var(--border-default));border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-1);padding:16px}.gengage-chat-comparison-recommended-label{color:var(--client-primary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px;font-size:12px;font-weight:700}.gengage-chat-comparison-recommended-body{grid-template-columns:minmax(108px,148px) minmax(0,1fr);align-items:flex-start;gap:16px;display:grid}.gengage-chat-comparison-recommended-media{aspect-ratio:1;border:1px solid var(--border-subtle);background:var(--surface-card);border-radius:14px;justify-content:center;align-items:center;display:flex;overflow:hidden}.gengage-chat-comparison-recommended-body img,.gengage-chat-comparison-recommended-placeholder{object-fit:contain;box-sizing:border-box;width:100%;height:100%;padding:8px}.gengage-chat-comparison-recommended-placeholder{background:var(--surface-card-muted)}.gengage-chat-comparison-recommended-info{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.gengage-chat-comparison-recommended-title{color:var(--text-primary);margin:0;font-size:24px;font-weight:800;line-height:1.2}.gengage-chat-comparison-recommended-meta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.gengage-chat-comparison-recommended-rating{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:color-mix(in srgb, var(--warning) 78%, var(--text-primary));border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:13px;font-weight:700;display:inline-flex}.gengage-chat-comparison-recommended-rating-value{color:var(--text-primary)}.gengage-chat-comparison-recommended-price{color:var(--text-primary);font-size:20px;font-weight:700}.gengage-chat-comparison-highlights{border-top:1px solid var(--border-subtle);padding-top:12px}.gengage-chat-comparison-highlights-label{color:var(--text-secondary);margin-bottom:6px;font-size:12px;font-weight:600}.gengage-chat-comparison-highlights ul{color:var(--text-primary);margin:0;padding-left:18px;font-size:14px;line-height:1.55}.gengage-chat-comparison-special{background:color-mix(in srgb, var(--warning) 10%, white);border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));border-radius:var(--radius-card);color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));margin-bottom:12px;padding:12px 16px;font-size:13px}.gengage-chat-comparison-special summary{cursor:pointer;font-weight:600}.gengage-chat-comparison-special ul{margin:8px 0 0;padding-left:18px;line-height:1.6}.gengage-chat-comparison-table{border-collapse:collapse;background:var(--surface-card);width:100%;font-size:13px}.gengage-chat-comparison-table th,.gengage-chat-comparison-table td{text-align:center;border-bottom:1px solid var(--border-subtle);vertical-align:top;padding:10px 12px}.gengage-chat-comparison-table th{color:var(--text-secondary);font-size:12px;font-weight:600}.gengage-chat-comparison-table td ul,.gengage-chat-comparison-table td ol{text-align:left;margin:0;padding-left:18px}.gengage-chat-comparison-table td li+li{margin-top:4px}.gengage-chat-comparison-table thead th:not(:first-child){vertical-align:top}.gengage-chat-comparison-table-header-cell{box-sizing:border-box;grid-template-rows:auto 1fr auto;place-items:start center;gap:6px;height:100%;min-height:0;display:grid}.gengage-chat-comparison-table-header-cell--clickable{cursor:pointer;border-radius:var(--radius-control);padding:6px;transition:background .16s,box-shadow .16s,transform .16s}.gengage-chat-comparison-table-header-cell--clickable:hover{background:var(--surface-card-soft);box-shadow:var(--shadow-1);transform:translateY(-1px)}.gengage-chat-comparison-table-header-cell--clickable:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-comparison-table-header-cell img{object-fit:contain;border-radius:calc(var(--radius-control) - 4px);background:var(--surface-card-muted);width:60px;height:60px}.gengage-chat-comparison-table-header-img-placeholder{border-radius:calc(var(--radius-control) - 4px);background:var(--surface-card-muted);width:60px;height:60px}.gengage-chat-comparison-table-product-name{width:100%;min-width:0;color:var(--text-secondary);text-align:center;-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;align-self:start;font-size:12px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-comparison-table-price{color:var(--text-primary);text-align:center;width:100%;font-weight:700}.gengage-chat-comparison-label{text-align:left;color:var(--text-secondary);white-space:nowrap;font-weight:600}.gengage-chat-comparison-selected{background:color-mix(in srgb, var(--client-primary) 6%, white)}.gengage-chat-comparison-recommended-text{color:var(--text-secondary);margin:0;font-size:14px;line-height:1.6}.gengage-chat-comparison-key-differences{border:1px solid var(--border-subtle);border-radius:var(--radius-card);background:var(--surface-card-muted)}.gengage-chat-comparison-key-differences-summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-weight:700;list-style:none;display:flex}.gengage-chat-comparison-key-differences-summary::-webkit-details-marker{display:none}.gengage-chat-comparison-key-differences-summary-label{color:var(--text-primary)}.gengage-chat-comparison-key-differences-summary-meta{color:var(--client-primary);font-size:13px;font-weight:700}.gengage-chat-comparison-key-differences[open] .gengage-chat-comparison-key-differences-summary-meta{opacity:0}.gengage-chat-comparison-key-differences-content{color:var(--text-primary);padding:0 16px 16px;font-size:14px;line-height:1.7}.gengage-chat-comparison-key-differences-content ul,.gengage-chat-comparison-key-differences-content ol{margin:0;padding-left:20px}.gengage-chat-comparison-key-differences-content li+li{margin-top:8px}@media (width<=960px){.gengage-chat-comparison-recommended-body{grid-template-columns:1fr}.gengage-chat-comparison-recommended-title{font-size:20px}}.gengage-chat-pills{border-top:1px solid var(--border-subtle);background:var(--surface-card);padding:8px 12px 6px;position:relative}.gengage-chat-pills-scroll{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;padding-right:28px;display:flex;overflow-x:auto}.gengage-chat-pills-scroll::-webkit-scrollbar{display:none}.gengage-chat-root--mobile .gengage-chat-pills-scroll{flex-wrap:wrap;gap:6px}.gengage-chat-root--mobile .gengage-chat-pill{white-space:normal;max-width:100%}.gengage-chat-pill{border:1px solid var(--ds-chip-border-active);background:var(--ds-chip-bg-active);color:var(--ds-chip-fg-active);white-space:nowrap;cursor:pointer;border-radius:999px;flex:none;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:700;transition:background .15s,border-color .15s,color .15s}.gengage-chat-pill:hover{background:color-mix(in srgb, var(--client-primary) 12%, white);border-color:color-mix(in srgb, var(--client-primary) 36%, white)}.gengage-chat-pill:active{transform:none}.gengage-chat-pill--rich{border-radius:18px;align-items:center;gap:10px;padding:8px 14px 8px 8px;display:flex}.gengage-chat-pill-img{object-fit:cover;background:var(--surface-card);border-radius:12px;flex-shrink:0;width:32px;height:32px}.gengage-chat-pill-text{font-size:13px;font-weight:600;line-height:1.2}.gengage-chat-pill-desc{display:none}.gengage-chat-pill--rich .gengage-chat-pill-desc{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:11px;font-weight:500;display:block;overflow:hidden}.gengage-chat-pills-arrow{border:1px solid var(--border-default);background:var(--surface-card);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;box-shadow:var(--shadow-1);z-index:1;border-radius:12px;justify-content:center;align-items:center;font-size:16px;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.gengage-chat-pills-arrow:hover{background:var(--surface-card-soft);color:var(--client-primary)}@media (prefers-reduced-motion:reduce){.gengage-chat-uispec>*,.gengage-chat-action-btn,.gengage-chat-inline-question-btn,.gengage-chat-product-card,.gengage-chat-product-card-cta,.gengage-chat-send,.gengage-chat-launcher-container,.gengage-chat-launcher,.gengage-chat-pill,.gengage-chat-drawer,.gengage-chat-typing-dots span,.gengage-chat-thinking-step-marker--active,.gengage-chat-bubble,.gengage-chat-panel-skeleton-block,.gengage-chat-ai-toppick-card,.gengage-chat-mic-btn--active,.gengage-chat-ai-toppick-spinner:after,.gengage-chat-cart-toast,.gengage-chat-header-btn--cart-flash{transition:none!important;animation:none!important;transform:none!important}}.gengage-chat-bubble--user{position:relative}.gengage-chat-rollback-btn{border-radius:var(--radius-pill);background:var(--surface-card-muted);width:24px;height:24px;color:var(--text-secondary);cursor:pointer;opacity:0;border:none;justify-content:center;align-items:center;padding:0;transition:opacity .15s;display:flex;position:absolute;top:50%;left:-28px;transform:translateY(-50%)}.gengage-chat-bubble--user:hover .gengage-chat-rollback-btn{opacity:1}.gengage-chat-rollback-btn:hover{background:var(--client-primary);color:var(--client-on-primary)}.gengage-chat-bubble--hidden{display:none}.gengage-chat-ai-top-picks{flex-direction:column;gap:12px;padding:8px 0;scroll-margin-top:60px;display:flex}.gengage-chat-ai-top-picks-title{color:var(--text-primary);margin:0 0 4px;font-size:15px;font-weight:600}.gengage-chat-ai-top-picks-scroll{flex-direction:column;gap:10px;min-width:0;display:flex}.gengage-chat-ai-top-picks-rest,.gengage-chat-ai-toppick-top-row{display:contents}.gengage-chat-ai-toppick-detail{width:100%;min-width:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks{gap:0;padding-top:4px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-title{flex-shrink:0;width:100%;margin:0 0 10px;font-size:18px;font-weight:700;line-height:1.2}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll{scrollbar-width:none;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,auto);align-items:stretch;gap:12px;margin:0;padding:12px 0;display:grid;overflow:visible}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact{flex:initial;scroll-snap-align:none;width:100%;min-width:0;max-width:none}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child{grid-column:1/-1;grid-template-rows:auto auto;grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:12px 18px;display:grid}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail){grid-template-rows:auto auto auto}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact{flex-direction:column;align-items:stretch}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media{max-height:none}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-media{aspect-ratio:4/3;grid-area:1/1/span 2;max-height:260px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail) .gengage-chat-ai-toppick-media{grid-row:1/span 3}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-detail{grid-area:2/2;min-width:0;padding-top:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img,.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-img{object-fit:contain;width:calc(100% - 8px);height:calc(100% - 8px);position:absolute;inset:4px}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-body,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{flex:1;min-height:0;padding:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child .gengage-chat-ai-toppick-body{grid-area:1/2;padding-top:6px}.gengage-chat-panel-ai-zone .gengage-chat-ai-top-picks-scroll>:first-child:has(.gengage-chat-ai-toppick-detail) .gengage-chat-ai-toppick-cta{grid-row:3}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);width:calc(100% - 24px);color:var(--ds-button-secondary-fg);align-self:stretch;margin:14px 12px 12px}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);width:auto;min-width:180px;color:var(--ds-button-secondary-fg);grid-area:2/2;place-self:end start;margin:0}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta:hover,.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta:hover{background:var(--ds-button-secondary-bg-hover);filter:none}.gengage-chat-panel-ai-zone .gengage-chat-ai-toppick-card--winner{border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-ai-toppick-rating{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-secondary);border-radius:999px;align-self:flex-start;align-items:center;gap:5px;margin-top:4px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.gengage-chat-ai-toppick-rating-icon{color:color-mix(in srgb, var(--warning) 60%, var(--text-primary));justify-content:center;align-items:center;line-height:0;display:inline-flex}.gengage-chat-ai-toppick-rating-value{color:var(--text-primary)}.gengage-chat-ai-toppick-media .gengage-chat-ai-toppick-discount-badge{background:var(--client-primary);color:var(--client-on-primary);z-index:1;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:800;line-height:1.2;position:absolute;top:4px;left:4px;right:auto}.gengage-chat-ai-toppick-card--winner,.gengage-chat-ai-toppick-card--compact{--_badge-inset-top:12px;--_badge-height:30px;box-sizing:border-box;padding:calc(var(--_badge-inset-top) + var(--_badge-height) + 6px) 12px 12px;border-radius:var(--radius-card);background:var(--surface-card);flex-direction:column;align-items:stretch;transition:box-shadow .2s,background .15s,transform .15s;display:flex;position:relative;overflow:visible}.gengage-chat-ai-toppick-card--winner{border:1.5px solid color-mix(in srgb, var(--client-primary) 24%, var(--border-default))}.gengage-chat-ai-toppick-card--winner:hover{background:var(--surface-card-muted);box-shadow:var(--shadow-2)}.gengage-chat-ai-toppick-card--compact{border:1px solid var(--border-default)}.gengage-chat-ai-toppick-card--compact:hover{background:var(--surface-card-muted);box-shadow:var(--shadow-1);transform:translateY(-1px)}.gengage-chat-ai-toppick-badge{top:var(--_badge-inset-top,12px);z-index:2;box-sizing:border-box;text-transform:uppercase;letter-spacing:.04em;pointer-events:none;white-space:normal;border-radius:999px;align-items:center;max-width:calc(100% - 28px);margin:0;padding:8px 14px;font-size:11px;font-weight:800;line-height:1.25;display:inline-flex;position:absolute;left:14px}.gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-badge{background:var(--client-primary);color:var(--client-on-primary);box-shadow:0 10px 18px color-mix(in srgb, var(--client-primary) 20%, transparent)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-badge{background:var(--surface-card);color:color-mix(in srgb, var(--client-primary) 72%, var(--text-primary));border:1px solid color-mix(in srgb, var(--client-primary) 24%, var(--border-default))}.gengage-chat-ai-toppick-media{aspect-ratio:1;border:1px solid var(--border-subtle);background:var(--surface-card);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:100%;margin-top:4px;margin-bottom:8px;display:flex;position:relative;overflow:hidden}.gengage-chat-ai-toppick-img{object-fit:contain;box-sizing:border-box;width:100%;height:100%;padding:4px}.gengage-chat-ai-toppick-body{flex-direction:column;flex:1;gap:0;min-width:0;padding:0;display:flex}.gengage-chat-ai-toppick-name{color:var(--text-primary);text-overflow:ellipsis;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-bottom:4px;font-size:14px;font-weight:700;line-height:1.375;display:-webkit-box;overflow:hidden}.gengage-chat-ai-toppick-role{color:var(--client-primary);text-transform:uppercase;letter-spacing:.3px;font-size:11px;font-weight:600}.gengage-chat-ai-toppick-labels{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.gengage-chat-ai-toppick-label{border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700}.gengage-chat-ai-toppick-label[data-sentiment=positive]{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-ai-toppick-label[data-sentiment=negative]{background:color-mix(in srgb, var(--error) 10%, white);color:color-mix(in srgb, var(--error) 82%, var(--text-primary))}.gengage-chat-ai-toppick-label[data-sentiment=neutral]{background:var(--surface-card-muted);color:var(--text-secondary)}.gengage-chat-ai-toppick-reason{color:var(--text-secondary);margin:10px 0 0;font-size:13px;line-height:1.5}.gengage-chat-ai-toppick-review{border:1px solid var(--border-subtle);background:var(--surface-card-muted);color:var(--text-primary);border-radius:14px;margin-top:10px;padding:10px 12px;font-size:12px;line-height:1.45}.gengage-chat-ai-toppick-snippet{color:var(--text-secondary);margin:8px 0 0;font-size:12px;line-height:1.45}.gengage-chat-ai-toppick-price{color:var(--text-primary);margin-top:4px;font-size:14px;font-weight:700}.gengage-chat-ai-toppick-price-current{color:var(--gengage-discounted-price-color,var(--text-primary))}.gengage-chat-ai-toppick-original-price{color:var(--text-secondary);font-size:12px;font-weight:400;text-decoration:line-through}.gengage-chat-ai-toppick-price-stack{flex-direction:column;align-items:flex-start;gap:2px;margin-top:4px;display:flex}.gengage-chat-ai-toppick-price-stack .gengage-chat-campaign-reason{font-size:11px;font-weight:700}.gengage-chat-campaign-price-badge{box-sizing:border-box;border-radius:var(--radius-control,10px);background-image:linear-gradient(var(--gengage-campaign-price-badge-fill,#fff) 0 0), linear-gradient(135deg, var(--_gengage-campaign-reason-start), var(--_gengage-campaign-reason-end));background-origin:border-box;background-clip:padding-box,border-box;border:1px solid #0000;flex-direction:row;align-items:center;gap:8px;max-width:100%;padding:7px 9px;display:inline-flex}.gengage-chat-campaign-price-badge__logo{flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-campaign-price-badge__logo img{object-fit:contain;width:auto;max-width:64px;height:auto;max-height:26px;display:block}.gengage-chat-campaign-price-badge__body{flex-direction:column;justify-content:center;align-items:flex-start;gap:1px;min-width:0;display:flex}.gengage-chat-campaign-price-badge__reason{letter-spacing:.02em;background:linear-gradient(90deg, var(--_gengage-campaign-reason-start), var(--_gengage-campaign-reason-end));color:#0000;-webkit-background-clip:text;background-clip:text;max-width:100%;margin:0;font-size:10px;font-weight:700;line-height:1.2}.gengage-chat-campaign-price-badge__sale{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:14px;font-weight:800;line-height:1.15}.gengage-chat-product-card-price-row .gengage-chat-campaign-price-badge__sale{font-size:13px}.gengage-chat-product-summary__price .gengage-chat-campaign-price-badge__sale{font-size:12px}.gengage-chat-product-details-price .gengage-chat-campaign-price-badge{border-radius:var(--radius-control,12px);padding:9px 11px}.gengage-chat-product-details-price .gengage-chat-campaign-price-badge__reason{font-size:11px}.gengage-chat-product-details-price .gengage-chat-campaign-price-badge__sale{font-size:18px}:is(.gengage-chat-ai-toppick-price--inline:has(.gengage-chat-campaign-price-badge),.gengage-chat-product-card-price-row:has(.gengage-chat-campaign-price-badge),.gengage-chat-product-summary__price--inline:has(.gengage-chat-campaign-price-badge),.gengage-chat-product-details-price--inline:has(.gengage-chat-campaign-price-badge)){align-items:last baseline}:is(.gengage-chat-ai-toppick-price--inline:has(.gengage-chat-campaign-price-badge) .gengage-chat-ai-toppick-price-sep,.gengage-chat-product-card-price-row:has(.gengage-chat-campaign-price-badge) .gengage-chat-product-card-price-sep,.gengage-chat-product-summary__price--inline:has(.gengage-chat-campaign-price-badge) .gengage-chat-product-summary__price-sep,.gengage-chat-product-details-price--inline:has(.gengage-chat-campaign-price-badge) .gengage-chat-product-details-price-sep){align-self:last baseline}.gengage-chat-ai-toppick-price--inline{flex-flow:wrap;align-items:baseline;gap:0 6px;display:flex}.gengage-chat-ai-toppick-price-sep{background:var(--border-subtle);flex-shrink:0;align-self:center;width:1px;height:.85em;margin:0 1px;display:inline-block}.gengage-chat-ai-toppick-price--inline .gengage-chat-ai-toppick-original-price{font-size:14px;font-weight:500;text-decoration:none}.gengage-chat-ai-toppick-price--inline .gengage-chat-ai-toppick-price-current{color:var(--gengage-discounted-price-color,var(--text-primary));font-size:14px;font-weight:800}.gengage-chat-ai-toppick-cta{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-control,12px);background:var(--ds-button-primary-bg);width:calc(100% - 24px);color:var(--ds-button-primary-fg);cursor:pointer;text-align:center;box-sizing:border-box;opacity:0;pointer-events:none;flex-shrink:0;align-self:stretch;margin:14px 12px 12px;padding:8px 0;font-size:13px;font-weight:700;transition:opacity .18s,transform .18s,background .15s;display:block;transform:translateY(6px)}.gengage-chat-ai-toppick-card--winner:hover .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--compact:hover .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--winner:focus-within .gengage-chat-ai-toppick-cta,.gengage-chat-ai-toppick-card--compact:focus-within .gengage-chat-ai-toppick-cta{opacity:1;pointer-events:auto;transform:translateY(0)}.gengage-chat-ai-toppick-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-ai-toppick-spinner{background:color-mix(in srgb, var(--surface-card) 78%, transparent);z-index:6;border-radius:12px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.gengage-chat-ai-toppick-spinner:after{content:"";border:3px solid var(--border-default);border-top-color:var(--ai-accent-start);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite gengage-spin}@keyframes gengage-spin{to{transform:rotate(360deg)}}.gengage-chat-root--mobile .gengage-chat-ai-top-picks{gap:8px;padding:4px 0}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-title{margin:0 0 2px;font-size:14px}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll{flex-direction:column;gap:8px;min-width:0;padding:6px 0 2px;display:flex;overflow:visible}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll>:first-child{flex-direction:column;align-items:stretch;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-scroll>:first-child.gengage-chat-ai-toppick-card--winner{flex-direction:column}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest{-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;flex-flow:row;gap:8px;min-width:0;margin:0 -2px;padding:2px 2px 8px;display:flex;overflow:auto visible}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest--uniform-mobile{scroll-snap-type:none;flex-direction:column;margin:0;padding:0;overflow-x:visible}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest::-webkit-scrollbar{width:0;height:0;display:none}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest .gengage-chat-ai-toppick-card--compact{scroll-snap-align:start;flex:0 0 min(82vw,272px);width:min(82vw,272px);min-width:0;max-width:272px}.gengage-chat-root--mobile .gengage-chat-ai-top-picks-rest--uniform-mobile .gengage-chat-ai-toppick-card--compact{scroll-snap-align:none;flex:none;width:100%;max-width:none}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner{scroll-snap-align:none;flex-shrink:1;width:100%;min-width:0;max-width:none;padding:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact{scroll-snap-align:none;flex-shrink:1;width:100%;min-width:0;max-width:none;padding:6px 8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner{border:1.5px solid color-mix(in srgb, var(--client-primary) 28%, var(--border-default));margin-bottom:8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact{border:1px solid var(--border-default);box-shadow:none;flex-direction:column;align-items:stretch}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform{margin-top:8px;padding:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-top-row,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-top-row{flex-direction:row;align-items:flex-start;gap:10px;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-media{aspect-ratio:1;border-radius:10px;flex:0 0 clamp(96px,30vw,124px);width:clamp(96px,30vw,124px);height:clamp(96px,30vw,124px);max-height:none;margin:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-img{object-fit:contain;width:100%;height:100%;padding:4px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-body,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-body{flex:1;min-width:0;padding-top:2px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-detail{width:100%;margin-top:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-reason{color:var(--text-primary);margin:0;font-size:12px;line-height:1.45;display:block!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-review{color:var(--text-secondary);border:1px solid var(--border-subtle);background:var(--surface-card-muted);border-radius:12px;margin-top:8px;padding:8px 10px;font-size:12px;font-style:italic;line-height:1.4;display:block!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-top-row{flex-direction:row;align-items:flex-start;gap:6px;width:100%;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media{aspect-ratio:1;border-radius:8px;flex:0 0 64px;width:64px;height:64px;max-height:64px;margin:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{object-fit:contain;width:100%;max-height:100%;padding:2px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{flex:1;min-width:0}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-rating{display:none}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-detail{width:100%;margin-top:4px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-snippet{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;margin:0;font-size:10px;line-height:1.3;display:-webkit-box;overflow:hidden}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-role-line{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin:0 0 2px;font-size:9px;font-weight:600;line-height:1.15}.gengage-chat-root--mobile .gengage-chat-ai-toppick-snippet{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:11px;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{gap:5px;top:3px;right:5px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{gap:5px;top:5px;right:6px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-badge,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-badge{letter-spacing:.04em;background:var(--client-primary);max-width:calc(100% - 18px);color:var(--client-on-primary);box-shadow:none;border:none;padding:2px 6px;font-size:8px;font-weight:700;line-height:1.15;top:-14px;left:8px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-name{margin-bottom:1px;font-size:12px;line-height:1.22}.gengage-chat-root--mobile .gengage-chat-ai-toppick-name{margin-bottom:2px;font-size:13px;line-height:1.28}.gengage-chat-root--mobile .gengage-chat-ai-toppick-rating{gap:3px;margin-top:2px;padding:2px 6px;font-size:10px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-price{margin-top:1px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-price{margin-top:2px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-original-price{font-size:11px}.gengage-chat-root--mobile .gengage-chat-ai-toppick-labels,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{display:none!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-cta{opacity:1;pointer-events:auto;border:1px solid var(--client-primary);background:var(--surface-card);width:calc(100% - 16px);color:var(--client-primary);box-shadow:none;filter:none;align-self:stretch;margin:8px 8px 6px;padding:6px 0;font-size:12px;font-weight:600;transform:none}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-cta{display:block!important}.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-cta:hover,.gengage-chat-root--mobile .gengage-chat-ai-toppick-card--mobile-uniform .gengage-chat-ai-toppick-cta:hover{background:color-mix(in srgb, var(--client-primary) 10%, var(--surface-card));color:var(--client-primary);border-color:var(--client-primary);filter:none}.gengage-chat-root--mobile .gengage-chat-rollback-btn{left:-24px}.gengage-chat-grounding-review{align-items:center;gap:12px;padding:12px 16px;transition:background .15s,border-color .15s,box-shadow .15s;display:flex}.gengage-chat-grounding-review:hover{background:var(--ds-card-bg-hover);border-color:var(--ds-card-border-hover);box-shadow:var(--ds-card-shadow-hover)}.gengage-chat-grounding-review-icon{background:color-mix(in srgb, var(--client-primary) 8%, var(--surface-card));width:32px;height:32px;color:var(--client-primary);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.gengage-chat-grounding-review-icon svg{width:18px;height:18px;display:block}.gengage-chat-grounding-review-body{flex:1;min-width:0}.gengage-chat-grounding-review-title{color:var(--text-primary);font-size:13px;font-weight:600}.gengage-chat-grounding-review-subtitle{color:var(--text-muted);margin-top:2px;font-size:12px}.gengage-chat-grounding-review-cta{color:var(--client-primary);white-space:nowrap;flex-shrink:0;align-items:center;gap:4px;font-size:13px;font-weight:600;display:inline-flex}.gengage-chat-grounding-review-cta-icon{align-items:center;display:inline-flex}.gengage-chat-grounding-review-cta-icon svg{width:14px;height:14px;display:block}.gengage-chat-grouping-cards{flex-direction:column;gap:6px;display:flex}.gengage-chat-grouping-cards-scroll{flex-direction:column;gap:6px;min-width:0;display:flex}.gengage-chat-grouping-card{background:var(--surface-card-soft);border:1px solid var(--border-default);border-radius:var(--radius-control);align-items:center;gap:10px;padding:8px 12px;transition:background .15s,border-color .15s;display:flex}.gengage-chat-grouping-card:hover{background:color-mix(in srgb, var(--client-primary) 6%, white);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default))}.gengage-chat-grouping-card-arrow{color:var(--client-primary);flex-shrink:0;font-size:14px;display:none}.gengage-chat-grouping-card-img{border-radius:calc(var(--radius-control) - 4px);object-fit:cover;-webkit-user-drag:none;-webkit-user-select:none;user-select:none;flex-shrink:0;width:48px;min-width:48px;height:48px;min-height:48px}.gengage-chat-grouping-card-body{flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:0;display:flex}.gengage-chat-grouping-card-name{color:var(--text-primary);font-size:13px;font-weight:600}.gengage-chat-grouping-card-desc{color:var(--text-muted);font-size:12px}.gengage-chat-grouping-card-labels{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.gengage-chat-grouping-card-label{color:var(--text-secondary);background:var(--surface-card-muted);border:1px solid var(--border-subtle);border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700;line-height:1.2}.gengage-chat-root--mobile .gengage-chat-grouping-card-img{display:none}.gengage-chat-root--mobile .gengage-chat-grouping-card-arrow{display:inline}.gengage-chat-suggested-search-cards{flex-direction:column;gap:8px;display:flex}.gengage-chat-suggested-search-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-card);box-shadow:var(--shadow-1);align-items:center;gap:14px;padding:14px 16px;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s;display:flex}.gengage-chat-suggested-search-card:hover{background:var(--surface-card);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));box-shadow:var(--shadow-2);transform:translateY(-1px)}.gengage-chat-suggested-search-card-img{object-fit:contain;background:var(--surface-card-muted);border:1px solid var(--border-subtle);border-radius:14px;flex-shrink:0;width:64px;height:64px;padding:4px}.gengage-chat-suggested-search-card-body{flex:1;min-width:0}.gengage-chat-suggested-search-card-name{color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.gengage-chat-product-details-gallery{position:relative}.gengage-chat-product-details-gallery .gengage-chat-product-details-img{touch-action:pan-y}.gengage-chat-product-gallery-nav{z-index:3;border:1px solid var(--border-default);border-radius:var(--radius-pill);cursor:pointer;background:color-mix(in srgb, var(--surface-card) 92%, transparent);width:36px;min-width:36px;height:36px;min-height:36px;color:var(--text-primary);box-shadow:var(--shadow-1);justify-content:center;align-items:center;padding:0;transition:background .15s,opacity .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.gengage-chat-product-gallery-nav:hover:not(:disabled){background:var(--surface-card);color:var(--client-primary)}.gengage-chat-product-gallery-nav:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-product-gallery-nav:disabled{opacity:.35;cursor:not-allowed}.gengage-chat-product-gallery-nav--prev{left:8px}.gengage-chat-product-gallery-nav--next{right:8px}.gengage-chat-product-gallery-thumbs{scrollbar-width:thin;justify-content:center;gap:8px;width:100%;padding:10px 0 4px;display:flex;overflow-x:auto}.gengage-chat-product-gallery-thumb{object-fit:cover;cursor:pointer;background:var(--surface-card);border:2px solid #0000;border-radius:8px;flex-shrink:0;width:56px;height:56px;transition:border-color .15s}.gengage-chat-product-gallery-thumb:hover{border-color:var(--border-strong)}.gengage-chat-product-gallery-thumb--active{border-color:var(--client-primary)}.gengage-chat-product-gallery-thumb-more{background:var(--surface-card-muted);width:56px;height:56px;color:var(--text-secondary);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.gengage-chat-product-variants-label{color:var(--text-muted);text-transform:none;letter-spacing:.5px;margin-bottom:6px;font-size:12px;font-weight:600}.gengage-chat-product-variants-list{flex-wrap:wrap;gap:6px;display:flex}.gengage-chat-product-variant-btn{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;padding:6px 12px;font-size:12px;transition:background .15s,border-color .15s}.gengage-chat-product-variant-btn:hover{background:var(--surface-card-muted);border-color:color-mix(in srgb, var(--client-primary) 20%, var(--border-default));color:var(--client-primary)}.gengage-chat-product-details-panel{border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-1);gap:16px;padding:16px}.gengage-chat-product-details-media{border-color:var(--border-default);border-radius:var(--radius-card);background:var(--surface-card-soft);justify-content:center;min-height:320px}.gengage-chat-product-details-img{max-height:420px}.gengage-chat-product-details-content{gap:12px}.gengage-chat-product-details-brand{color:var(--client-primary);font-size:12px;font-weight:800;line-height:1.2}.gengage-chat-product-details-title{font-size:22px;line-height:1.2}.gengage-chat-product-details-rating{border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));background:color-mix(in srgb, var(--warning) 10%, var(--surface-card));color:color-mix(in srgb, var(--warning) 72%, var(--text-primary));gap:6px;padding:6px 10px;font-family:inherit}button.gengage-chat-product-details-rating{border:1px solid color-mix(in srgb, var(--warning) 24%, var(--border-default));cursor:pointer}.gengage-chat-product-details-rating--clickable:hover{border-color:color-mix(in srgb, var(--warning) 42%, var(--border-default));background:color-mix(in srgb, var(--warning) 14%, var(--surface-card))}.gengage-chat-product-details-rating .gengage-star-rating{line-height:1}.gengage-chat-product-details-rating-value{color:var(--text-primary)}.gengage-chat-product-details-price{flex-wrap:wrap;gap:10px}.gengage-chat-product-details-original-price{order:2}.gengage-chat-product-details-current-price{order:1;font-size:30px}.gengage-chat-product-details-discount-badge{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--error) 12%, white);min-height:24px;color:color-mix(in srgb, var(--error) 84%, var(--text-primary));order:3;align-items:center;padding:2px 8px;font-size:12px;font-weight:800;display:inline-flex}.gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price,.gengage-chat-product-details-price--inline .gengage-chat-product-details-current-price{order:0;font-size:30px}.gengage-chat-product-details-price--inline .gengage-chat-product-details-original-price{font-weight:500}.gengage-chat-product-details-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;display:grid}.gengage-chat-product-details-fact{border:1px solid var(--border-subtle);border-radius:var(--radius-control);background:var(--surface-card-soft);min-width:0;padding:8px 10px}.gengage-chat-product-details-fact dt,.gengage-chat-product-details-fact dd{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;overflow:hidden}.gengage-chat-product-details-fact dt{color:var(--text-muted);font-size:11px;font-weight:700}.gengage-chat-product-details-fact dd{color:var(--text-primary);margin-top:2px;font-size:13px;font-weight:700}.gengage-chat-product-variants{margin-top:4px}.gengage-chat-product-variants-label{color:var(--text-primary);letter-spacing:normal;margin-bottom:8px;font-size:14px;font-weight:800}.gengage-chat-product-variants-list{gap:8px}.gengage-chat-product-variant-btn{border-radius:var(--radius-control);min-height:44px;color:var(--text-primary);gap:8px;padding:7px 10px;font-size:13px;font-weight:700}.gengage-chat-product-variant-btn--active{border-color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, var(--surface-card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--client-primary) 36%, transparent);color:var(--client-primary)}.gengage-chat-product-variant-btn--out{opacity:.48;cursor:not-allowed}.gengage-chat-product-variant-swatch{border:1px solid var(--border-default);background:var(--surface-card-muted);width:22px;height:22px;box-shadow:inset 0 0 0 2px var(--surface-card);border-radius:50%;flex:0 0 22px}.gengage-chat-product-variant-swatch--image{object-fit:cover;box-shadow:none}.gengage-chat-product-variant-label,.gengage-chat-product-variant-price{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gengage-chat-product-variant-price{color:var(--text-secondary);font-size:12px;font-weight:700}.gengage-chat-product-details-actions{gap:10px;margin-top:6px}.gengage-chat-product-details-atc,.gengage-chat-product-details-cta{border-radius:var(--radius-control);min-height:44px}.gengage-chat-product-details-atc{border:1px solid var(--ds-button-primary-border);background:var(--ds-button-primary-bg);color:var(--ds-button-primary-fg)}.gengage-chat-product-details-atc:hover{background:var(--ds-button-primary-bg-hover);filter:none}.gengage-chat-product-details-cta.gds-btn-secondary{border-color:var(--ds-button-secondary-border);background:var(--ds-button-secondary-bg);color:var(--ds-button-secondary-fg)}.gengage-chat-product-details-cta.gds-btn-secondary:hover{background:var(--ds-button-secondary-bg-hover)}@media (width>=960px){.gengage-chat-product-details-panel{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);align-items:start;display:grid}.gengage-chat-product-details-media{position:sticky;top:0}.gengage-chat-product-detail-tabs{grid-column:1/-1}}.gengage-chat-root--mobile .gengage-chat-product-details-panel{box-shadow:none;gap:10px;padding:10px}.gengage-chat-root--mobile .gengage-chat-product-details-media{min-height:220px}.gengage-chat-root--mobile .gengage-chat-product-details-title{font-size:18px}.gengage-chat-root--mobile .gengage-chat-product-details-current-price{font-size:24px}.gengage-chat-root--mobile .gengage-chat-product-details-facts{grid-template-columns:1fr}.gengage-chat-root--mobile .gengage-chat-product-details-actions{grid-template-columns:1fr 1fr 44px;align-items:stretch;display:grid}.gengage-chat-root--mobile .gengage-chat-product-details-actions>.gengage-chat-product-details-share{width:44px;min-width:44px}.gengage-chat-root--mobile .gengage-chat-product-details-atc,.gengage-chat-root--mobile .gengage-chat-product-details-cta{width:100%;padding-inline:10px}.gengage-chat-product-grid-wrapper{flex-direction:column;gap:6px;display:flex}.gengage-chat-product-grid-wrapper--grouped{gap:12px}.gengage-chat-product-grid-sections{flex-direction:column;gap:20px;display:flex}.gengage-chat-product-grid-section{border-top:1px solid color-mix(in srgb, var(--border-default) 70%, transparent);flex-direction:column;gap:10px;padding:14px 0 18px;display:flex}.gengage-chat-product-grid-section:first-child{border-top:0;padding-top:4px}.gengage-chat-product-grid-section:last-child{padding-bottom:4px}.gengage-chat-product-grid-section-head{justify-content:space-between;align-items:baseline;gap:12px;min-width:0;padding:0 2px;display:flex}.gengage-chat-product-grid-section-title{letter-spacing:0;min-width:0;color:var(--text-primary);overflow-wrap:anywhere;margin:0;font-family:inherit;font-size:15px;font-weight:700;line-height:1.25}.gengage-chat-product-grid-section-count{border:1px solid var(--border-subtle);border-radius:var(--radius-pill);background:var(--surface-card-soft);min-height:22px;color:var(--text-secondary);letter-spacing:0;white-space:nowrap;flex:none;justify-content:center;align-items:center;padding:1px 8px;font-family:inherit;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.gengage-chat-panel .gengage-chat-product-grid--section{padding-top:0;padding-bottom:2px}.gengage-chat-root--mobile .gengage-chat-product-grid-sections{gap:16px}.gengage-chat-root--mobile .gengage-chat-product-grid-section{gap:8px;padding:12px 0 14px}.gengage-chat-root--mobile .gengage-chat-product-grid-section-title{font-size:14px}.gengage-chat-root--mobile .gengage-chat-product-grid-section-count{min-height:20px;padding-inline:8px;font-size:10.5px}.gengage-chat-consulting-style-picker{border:1px solid color-mix(in srgb, var(--client-primary) 18%, var(--border-default));background:linear-gradient(160deg, color-mix(in srgb, var(--surface-card) 80%, white), color-mix(in srgb, var(--surface-card-soft) 84%, white));border-radius:20px;padding:12px}.gengage-chat-consulting-style-picker-title{color:var(--text-primary);margin-bottom:10px;font-size:14px;font-weight:800}.gengage-chat-consulting-style-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.gengage-chat-consulting-style-btn{border:1px solid var(--border-default);background:var(--surface-card);cursor:pointer;text-align:left;border-radius:14px;flex-direction:column;gap:0;padding:6px;transition:transform .15s,border-color .15s,box-shadow .15s;display:flex}.gengage-chat-consulting-style-btn:hover{border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default));transform:translateY(-1px)}.gengage-chat-consulting-style-btn--active{border-color:color-mix(in srgb, var(--client-primary) 40%, var(--border-default));box-shadow:0 0 0 2px color-mix(in srgb, var(--client-primary) 16%, transparent), var(--shadow-1)}.gengage-chat-consulting-style-btn--loading{border-style:dashed}.gengage-chat-consulting-style-btn--muted{opacity:.78}.gengage-chat-consulting-style-media{border-radius:12px;position:relative;overflow:hidden}.gengage-chat-consulting-style-image{aspect-ratio:4/5;object-fit:cover;border:1px solid var(--border-subtle);-webkit-user-drag:none;-webkit-user-select:none;user-select:none;border-radius:12px;width:100%}.gengage-chat-consulting-style-caption{color:#fff;background:#0000008c;border-radius:12px;padding:8px 10px;font-size:15px;font-weight:800;line-height:1.2;position:absolute;bottom:10px;left:10px;right:10px}.gengage-chat-consulting-style-status{color:var(--text-primary);background:color-mix(in srgb, white 88%, var(--client-primary) 12%);border:1px solid color-mix(in srgb, var(--client-primary) 18%, var(--border-default));border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;position:absolute;top:10px;right:10px}.gengage-chat-consulting-loading-panel{border:1px solid color-mix(in srgb, var(--client-primary) 14%, var(--border-default));background:linear-gradient(180deg, var(--surface-card-soft), var(--surface-card));border-radius:18px;flex-direction:column;gap:12px;padding:16px;display:flex}.gengage-chat-consulting-loading-panel-title{color:var(--text-primary);margin:0;font-size:18px;font-weight:800}.gengage-chat-consulting-loading-panel-copy{color:var(--text-secondary);margin:0;font-size:14px;line-height:1.5}.gengage-chat-consulting-loading-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.gengage-chat-consulting-loading-card{border:1px solid var(--border-default);background:linear-gradient(90deg, color-mix(in srgb, var(--surface-card-soft) 94%, white) 20%, color-mix(in srgb, white 86%, var(--surface-card-soft) 14%) 50%, color-mix(in srgb, var(--surface-card-soft) 94%, white) 80%);background-size:220% 100%;border-radius:18px;min-height:240px;animation:1.2s linear infinite gengage-chat-consulting-loading-shimmer}@keyframes gengage-chat-consulting-loading-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.gengage-chat-consulting-group{border:1px solid color-mix(in srgb, var(--client-primary) 14%, var(--border-default));background:linear-gradient(180deg, var(--surface-card-soft), var(--surface-card));border-radius:16px;flex-direction:column;gap:10px;padding:12px;display:flex}.gengage-chat-consulting-group-header{flex-direction:column;gap:4px;min-height:112px;display:flex}.gengage-chat-consulting-group-label{color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;min-height:2.5em;margin:0;font-size:16px;font-weight:800;line-height:1.25;display:-webkit-box;overflow:hidden}.gengage-chat-consulting-group-reason{color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:13px;line-height:1.45;display:-webkit-box;overflow:hidden}.gengage-chat-consulting-group-grid{grid-template-columns:repeat(var(--consulting-group-columns,4), minmax(0, 1fr));justify-content:stretch;align-items:stretch;gap:14px;margin-bottom:2px;display:grid}.gengage-chat-consulting-group-grid .gengage-chat-product-card{width:100%;min-width:0;max-width:none;height:100%}.gengage-chat-beauty-photo-step{padding:0 12px}.gengage-chat-beauty-photo-step-card{border:1px solid color-mix(in srgb, var(--client-primary) 20%, var(--border-default));background:linear-gradient(165deg, color-mix(in srgb, var(--surface-card) 85%, white), var(--surface-card-soft));box-shadow:var(--shadow-1);border-radius:18px;gap:10px;padding:12px;display:flex}.gengage-chat-beauty-photo-step-icon{background:color-mix(in srgb, var(--client-primary) 16%, white);width:34px;height:34px;color:var(--client-primary);border-radius:12px;flex:none;justify-content:center;align-items:center;font-size:18px;font-weight:800;display:inline-flex}.gengage-chat-beauty-photo-step-content{flex:auto;min-width:0}.gengage-chat-beauty-photo-step-title{color:var(--text-primary);font-size:15px;font-weight:800}.gengage-chat-beauty-photo-step-desc{color:var(--text-secondary);margin:4px 0 0;font-size:12px;line-height:1.45}.gengage-chat-beauty-photo-step-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.gengage-chat-beauty-photo-step-upload{border-radius:999px;min-height:34px;padding-inline:14px;font-size:12px;font-weight:800}.gengage-chat-beauty-photo-step-skip{border-radius:999px;min-height:34px;padding-inline:12px;font-size:12px;font-weight:700}.gengage-chat-panel .gengage-chat-consulting-style-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.gengage-chat-panel .gengage-chat-consulting-style-image{min-height:250px}.gengage-chat-panel .gengage-chat-consulting-style-caption{padding:10px 12px;font-size:16px}.gengage-chat-panel .gengage-chat-consulting-group{border-radius:18px;min-width:0;padding:14px}.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card{width:100%;min-width:0;max-width:100%;margin-inline:0}.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card .gengage-chat-product-card-img-wrapper{flex-shrink:1;align-self:stretch;min-width:0;max-width:100%}.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card .gengage-chat-product-card-body{min-width:0;max-width:100%}.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card .gengage-chat-product-card-name,.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card .gengage-chat-product-card-price,.gengage-chat-panel .gengage-chat-consulting-group-grid .gengage-chat-product-card .gengage-chat-product-card-price-block{overflow-wrap:anywhere;word-break:break-word}.gengage-chat-root--mobile .gengage-chat-consulting-style-grid{grid-template-columns:1fr}.gengage-chat-root--mobile .gengage-chat-consulting-style-image{min-height:220px}.gengage-chat-root--mobile .gengage-chat-consulting-group-grid{grid-template-columns:1fr}.gengage-chat-root--mobile .gengage-chat-consulting-group-grid.gengage-chat-consulting-group-grid--single-group{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.gengage-chat-root--mobile .gengage-chat-consulting-group-grid .gengage-chat-product-card{width:100%;min-width:0;max-width:none}.gengage-chat-root--mobile .gengage-chat-consulting-loading-grid{grid-template-columns:1fr}.gengage-chat-product-grid-head{justify-content:space-between;align-items:center;gap:8px;min-width:0;margin-bottom:2px;display:flex}.gengage-chat-product-grid-head-title{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:18px;font-weight:700;line-height:1.2;overflow:hidden}.gengage-chat-product-grid-head-actions{flex-shrink:0;align-items:center;gap:6px;max-width:52%;display:flex}.gengage-chat-product-sort-toolbar{box-shadow:none;background:0 0;border:none;border-radius:0;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0;padding:0;display:flex}.gengage-chat-product-sort-toolbar--inline{flex-wrap:nowrap;justify-content:flex-end}.gengage-chat-product-sort-dropdown{z-index:5;flex:0 auto;width:auto;min-width:0;max-width:200px;position:relative}.gengage-chat-product-sort-toolbar:not(.gengage-chat-product-sort-toolbar--inline) .gengage-chat-product-sort-dropdown{flex:auto;max-width:min(200px,100%)}.gengage-chat-product-sort-dropdown--open{z-index:25}.gengage-chat-product-sort-trigger{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:100%;min-height:32px;color:var(--text-primary);cursor:pointer;text-align:left;align-items:center;gap:6px;padding:5px 8px;font-size:12px;font-weight:600;line-height:1.2;transition:border-color .15s,box-shadow .15s,background .15s;display:flex}.gengage-chat-product-sort-trigger:hover{border-color:color-mix(in srgb, var(--client-primary) 22%, var(--border-default));background:var(--surface-card-soft)}.gengage-chat-product-sort-trigger:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-product-sort-dropdown--open .gengage-chat-product-sort-trigger{border-color:color-mix(in srgb, var(--client-primary) 32%, var(--border-default));box-shadow:var(--shadow-2)}.gengage-chat-product-sort-trigger-icon{color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.gengage-chat-product-sort-dropdown[data-sort-icon=related] .gengage-chat-product-sort-trigger-icon{color:var(--client-primary)}.gengage-chat-product-sort-trigger-icon svg{display:block}.gengage-chat-product-sort-trigger-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.gengage-chat-product-sort-trigger-chevron{color:var(--text-muted);flex-shrink:0;transition:transform .2s;display:flex}.gengage-chat-product-sort-dropdown--open .gengage-chat-product-sort-trigger-chevron{transform:rotate(180deg)}.gengage-chat-product-sort-menu{width:max-content;min-width:100%;max-width:min(260px,100vw - 48px);margin:0;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:auto}.gengage-chat-product-sort-option{border-radius:calc(var(--radius-control) - 4px);width:100%;color:var(--text-primary);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:500;line-height:1.25;transition:background .12s;display:flex}.gengage-chat-product-sort-option:hover{background:var(--surface-card-muted)}.gengage-chat-product-sort-option--active{color:var(--client-primary);background:var(--client-primary-subtle);font-weight:600}.gengage-chat-product-sort-option-icon{color:var(--text-secondary);flex-shrink:0;display:flex}.gengage-chat-product-sort-option--active .gengage-chat-product-sort-option-icon,.gengage-chat-product-sort-option--active[data-sort-key=related] .gengage-chat-product-sort-option-icon{color:var(--client-primary)}.gengage-chat-product-sort-option-icon svg{display:block}.gengage-chat-product-sort-option-label{flex:auto;min-width:0}.gengage-chat-product-sort-option-check{width:22px;color:var(--client-primary);flex-shrink:0;justify-content:flex-end;display:flex}.gengage-chat-product-sort-option-check--hidden{visibility:hidden}.gengage-chat-product-sort-separator{background:var(--border-default);width:1px;margin:2px}.gengage-chat-comparison-toggle-btn{border:1px solid var(--border-default);border-radius:var(--radius-control,12px);background:var(--surface-card);min-height:32px;color:var(--text-primary);cursor:pointer;white-space:nowrap;flex:none;align-items:center;gap:5px;padding:5px 8px;font-size:12px;font-weight:700;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.gengage-chat-comparison-toggle-icon{color:var(--text-secondary);flex-shrink:0;display:flex}.gengage-chat-comparison-toggle-icon svg{display:block}.gengage-chat-comparison-toggle-btn:hover{background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, white);color:var(--client-primary)}.gengage-chat-comparison-toggle-btn--active{border-color:color-mix(in srgb, var(--client-primary) 26%, white);color:var(--client-primary);background:color-mix(in srgb, var(--client-primary) 8%, white)}.gengage-chat-comparison-toggle-btn--active .gengage-chat-comparison-toggle-icon{color:var(--client-primary)}.gengage-chat-comparison-toggle-btn--active:hover{background:var(--client-primary-hover);color:var(--client-on-primary);border-color:var(--client-primary-hover)}.gengage-chat-comparison-toggle-btn--active:hover .gengage-chat-comparison-toggle-icon{color:var(--client-on-primary)}.gengage-chat-comparison-select-wrapper{cursor:pointer;border-radius:var(--radius-control);transition:box-shadow .2s,transform .2s;position:relative}.gengage-chat-comparison-select-wrapper:hover{box-shadow:0 0 0 2px var(--client-focus-ring)}.gengage-chat-comparison-select-wrapper--selected,.gengage-chat-comparison-select-wrapper--selected:hover{box-shadow:none}@media (prefers-reduced-motion:reduce){.gengage-chat-comparison-select-wrapper{transition:none}}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card{pointer-events:none;transition:opacity .2s,transform .2s,filter .2s}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-img-actions,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-discount-badge,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-buy-footer,.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-cta{opacity:0}.gengage-chat-comparison-select-wrapper>.gengage-chat-product-card .gengage-chat-product-card-body{opacity:.82}.gengage-chat-comparison-select-wrapper:hover>.gengage-chat-product-card,.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card{opacity:1;transform:translateY(-1px)}.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card{box-shadow:0 0 0 2px color-mix(in srgb, var(--client-primary) 26%, white), var(--shadow-1);filter:saturate(1.02);border-color:#0000;outline:none}.gengage-chat-comparison-select-wrapper--selected>.gengage-chat-product-card .gengage-chat-product-card-body{opacity:1}.gengage-chat-comparison-card-hint{display:none}.gengage-chat-comparison-checkbox{z-index:4;cursor:pointer;pointer-events:auto;border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-card) 94%, white);min-height:40px;color:var(--text-primary);box-shadow:var(--shadow-2);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 14px;display:inline-flex;position:absolute;bottom:16px;left:16px;right:16px}.gengage-chat-comparison-checkbox[data-selected=true]{background:color-mix(in srgb, var(--client-primary) 10%, white);border-color:color-mix(in srgb, var(--client-primary) 22%, var(--border-default));color:var(--client-primary)}.gengage-chat-comparison-checkbox-icon{background:var(--surface-card-soft);color:currentColor;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.gengage-chat-comparison-checkbox[data-selected=true] .gengage-chat-comparison-checkbox-icon{background:var(--client-primary);color:var(--client-on-primary)}.gengage-chat-comparison-checkbox-dot{background:color-mix(in srgb, currentColor 75%, white);border-radius:999px;width:8px;height:8px}.gengage-chat-comparison-checkbox-label{font-size:12px;font-weight:700;line-height:1.2}.gengage-chat-comparison-toggle-btn--hidden{opacity:0;pointer-events:none}@keyframes gengage-comparison-fade-in{0%{opacity:0}to{opacity:1}}.gengage-chat-comparison-toggle-btn--reveal{animation:.5s forwards gengage-comparison-fade-in}@media (prefers-reduced-motion:reduce){.gengage-chat-comparison-toggle-btn--reveal{opacity:1;animation:none}}.gengage-chat-comparison-floating-btn{border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-card) 92%, white);width:min(100%,520px);color:var(--text-primary);z-index:5;box-shadow:var(--shadow-2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:18px;justify-content:space-between;align-items:center;gap:14px;margin:16px auto 0;padding:12px 14px;display:flex;position:sticky;bottom:12px}.gengage-chat-comparison-dock-slot{display:none}.gengage-chat-root--mobile .gengage-chat-panel.gengage-chat-panel--visible~.gengage-chat-comparison-dock-slot:not(:empty){left:0;right:0;bottom:calc(var(--gengage-chat-input-control-size,44px) + 8px + env(safe-area-inset-bottom,0px));z-index:30;box-sizing:border-box;pointer-events:none;max-width:100%;padding:0 10px;display:block;position:absolute}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot>*{pointer-events:auto}.gengage-chat-comparison-floating-summary{flex:auto;align-items:center;gap:12px;min-width:0;display:flex}.gengage-chat-comparison-floating-count{background:var(--client-primary-subtle);min-width:32px;height:32px;color:var(--client-primary);border-radius:999px;justify-content:center;align-items:center;padding:0 10px;font-size:13px;font-weight:800;display:inline-flex}.gengage-chat-comparison-floating-copy{min-width:0}.gengage-chat-comparison-floating-title{color:var(--text-primary);font-size:14px;font-weight:700;line-height:1.2}.gengage-chat-comparison-floating-warning{color:var(--error);margin-top:4px;font-size:12px;line-height:1.35}.gengage-chat-comparison-floating-subtitle{color:var(--text-secondary);margin-top:2px;font-size:12px;line-height:1.35}.gengage-chat-comparison-floating-action{flex:none;min-width:132px}.gengage-chat-comparison-floating-close{border-radius:14px;flex:none;width:40px;height:40px;padding:0}.gengage-chat-comparison-floating-action--disabled{opacity:.6}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-btn{box-sizing:border-box;width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-3);border-radius:14px;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:10px;margin:0;padding:10px;position:relative;bottom:auto}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-summary{align-items:center;gap:8px;min-height:26px;padding-right:34px;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-count{flex-shrink:0;justify-content:center;align-items:center;min-width:26px;height:26px;padding:0 7px;font-size:12px;font-weight:800;line-height:1;display:inline-flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-copy{flex-direction:column;justify-content:center;min-width:0;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-title{margin:0;font-size:13px;line-height:1.25}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-warning{margin-top:2px;font-size:11px}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-action{box-sizing:border-box;justify-content:center;align-items:center;width:100%;min-width:0;max-width:100%;min-height:42px;padding:0 12px;font-size:13px;display:flex}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-close{box-sizing:border-box;align-self:unset;z-index:10;touch-action:manipulation;border-radius:8px;flex:none;width:26px;min-width:26px;max-width:26px;height:26px;min-height:26px;max-height:26px;padding:0;line-height:0;position:absolute;top:9px;right:9px}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-comparison-floating-close svg{width:11px;height:11px;display:block}.gengage-chat-panel-topbar{box-sizing:border-box;height:var(--_gengage-chat-header-height);background:var(--surface-card);z-index:3;border-bottom:none;flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:12px;padding:14px 16px;display:flex;position:sticky;top:0}.gengage-chat-panel-topbar-title-wrap{flex:1 1 0;align-items:center;min-width:0;display:flex}.gengage-chat-panel-topbar-back,.gengage-chat-panel-topbar-forward{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:42px;min-width:42px;height:42px;min-height:42px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:0;transition:background .15s,border-color .15s,opacity .15s;display:flex}.gengage-chat-panel-topbar-back[hidden],.gengage-chat-panel-topbar-forward[hidden]{display:none}.gengage-chat-panel-topbar-back:hover:not(:disabled),.gengage-chat-panel-topbar-forward:hover:not(:disabled){background:var(--surface-card-soft);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default))}.gengage-chat-panel-topbar-back:disabled,.gengage-chat-panel-topbar-forward:disabled{opacity:.3;cursor:default}.gengage-chat-panel-topbar-title{width:100%;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;text-align:left;letter-spacing:-.01em;font-size:17px;font-weight:700;line-height:1.2;display:block;overflow:hidden}.gengage-chat-panel-topbar-actions{flex:none;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.gengage-chat-panel-topbar-actions:empty{display:none}.gengage-chat-panel-topbar-toolbar-host{justify-content:flex-end;align-items:center;width:100%;display:flex}.gengage-chat-panel-topbar-toolbar-host .gengage-chat-product-sort-toolbar{flex-wrap:nowrap;justify-content:flex-end;gap:8px}.gengage-chat-panel-topbar-close{display:none}@keyframes gengage-typewriter-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-typewriter-block{animation:.15s both gengage-typewriter-fade-in;display:block}@media (prefers-reduced-motion:reduce){.gengage-chat-typewriter-block{animation:none}}.gengage-product-mention{color:var(--client-primary);cursor:pointer;border-bottom:1px dashed var(--client-primary);font-weight:500;text-decoration:none;transition:border-color .15s}.gengage-product-mention:hover{border-bottom-style:solid}@keyframes gengage-skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}.gengage-chat-panel-skeleton-block{animation:1.5s ease-in-out infinite gengage-skeleton-pulse}@media (prefers-reduced-motion:reduce){.gengage-chat-panel-skeleton-block{animation:none}}.gengage-chat-input-chips{scrollbar-width:none;-ms-overflow-style:none;flex-wrap:nowrap;gap:6px;padding:4px 12px 2px;display:flex;overflow-x:auto}.gengage-chat-input-chips::-webkit-scrollbar{display:none}.gengage-chat-input-chip{border-radius:var(--radius-pill);border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;white-space:nowrap;align-items:center;padding:8px 12px;font-family:inherit;font-size:12px;font-weight:700;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.gengage-chat-input-chip:hover{background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 24%, var(--border-default));color:var(--client-primary)}.gengage-chat-icon{flex-shrink:0;width:14px;height:14px}.gengage-chat-input-chip-icon,.gengage-chat-pill-icon{align-items:center;margin-right:4px;display:inline-flex}.gengage-chat-product-card-img-wrapper,.gengage-chat-product-details-img-wrap{position:relative;overflow:hidden}.gengage-chat-product-card-discount-badge{border-radius:var(--radius-pill);background:var(--_gengage-discount-color);color:var(--text-inverse);z-index:1;padding:3px 8px;font-size:11px;font-weight:700;line-height:1.3;position:absolute;top:8px;left:8px}.gengage-chat-product-card-stock{border-radius:var(--radius-pill);width:fit-content;margin-top:2px;padding:2px 6px;font-size:11px;font-weight:600}.gengage-chat-product-card-stock.is-in-stock{background:color-mix(in srgb, var(--success) 12%, white);color:color-mix(in srgb, var(--success) 82%, var(--text-primary))}.gengage-chat-product-card-stock.is-out-of-stock{background:color-mix(in srgb, var(--error) 10%, white);color:var(--error)}.gengage-chat-find-similar-pill{border:1px solid var(--border-subtle);border-radius:var(--radius-control);background:color-mix(in srgb, var(--surface-elevated) 96%, transparent);width:28px;height:28px;color:var(--text-primary);box-shadow:var(--shadow-1);cursor:pointer;z-index:2;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:11px;font-weight:500;transition:opacity .2s,box-shadow .15s;display:inline-flex;position:relative}.gengage-chat-find-similar-pill:hover{box-shadow:var(--shadow-2);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default))}@media (hover:hover) and (pointer:fine){.gengage-chat-find-similar-pill:after{content:attr(data-tooltip);background:color-mix(in srgb, var(--surface-shell) 98%, black);border:1px solid color-mix(in srgb, var(--surface-shell) 60%, white);box-shadow:var(--shadow-2);color:var(--text-inverse);white-space:nowrap;opacity:0;pointer-events:none;z-index:12;border-radius:10px;padding:6px 10px;font-size:11px;font-weight:600;line-height:1.2;transition:opacity .14s;position:absolute;top:50%;right:calc(100% + 8px);transform:translateY(-50%)}.gengage-chat-find-similar-pill:hover:after,.gengage-chat-find-similar-pill:focus-visible:after{opacity:1}}.gengage-chat-find-similar-pill-icon{justify-content:center;align-items:center;display:flex}.gengage-chat-find-similar-pill-icon svg{display:block}.gengage-chat-find-similar-pill-text{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gengage-chat-product-card-img-wrapper .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{transition:opacity .2s}@media (hover:hover) and (pointer:fine){.gengage-chat-product-card-img-wrapper:not(:hover) .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media:not(:hover) .gengage-chat-product-card-img-actions{opacity:0;pointer-events:none}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media:hover .gengage-chat-product-card-img-actions{opacity:1;pointer-events:auto}}@media (hover:none),(pointer:coarse){.gengage-chat-product-card-img-wrapper .gengage-chat-product-card-img-actions,.gengage-chat-ai-toppick-media .gengage-chat-product-card-img-actions{opacity:1;pointer-events:auto}}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--surface-shell) 88%, transparent);width:auto;height:auto;color:var(--text-inverse);box-shadow:none;opacity:0;pointer-events:none;padding:4px 10px;position:absolute;top:40px;right:8px}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill-icon{display:none}.gengage-chat-product-details-img-wrap .gengage-chat-find-similar-pill-text{clip:auto;white-space:nowrap;width:auto;height:auto;margin:0;position:static;overflow:visible}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-find-similar-pill,.gengage-chat-ai-toppick-media:hover .gengage-chat-find-similar-pill,.gengage-chat-product-details-img-wrap:hover .gengage-chat-find-similar-pill{opacity:1;pointer-events:auto}.gengage-chat-favorite-btn{background:color-mix(in srgb, var(--surface-elevated) 96%, transparent);border:1px solid var(--border-subtle);border-radius:var(--radius-control);cursor:pointer;width:28px;height:28px;color:var(--text-secondary);box-shadow:var(--shadow-1);z-index:3;justify-content:center;align-items:center;padding:0;transition:color .2s,box-shadow .15s;display:flex;position:absolute;top:8px;right:8px}.gengage-chat-favorite-btn:hover{box-shadow:var(--shadow-2);color:var(--error);border-color:color-mix(in srgb, var(--error) 20%, var(--border-default))}.gengage-chat-favorite-btn--active{color:var(--error)}.gengage-chat-product-details-promos{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.gengage-chat-product-details-promo-badge{border-radius:var(--radius-pill);background:var(--gengage-chat-promo-bg,color-mix(in srgb, var(--success) 12%, white));color:var(--gengage-chat-promo-text,color-mix(in srgb, var(--success) 82%, var(--text-primary)));white-space:nowrap;box-sizing:border-box;min-height:20px;padding:2px 6px;font-size:10px;font-weight:500;display:inline-block}.gengage-chat-panel-float{box-sizing:border-box;pointer-events:none;z-index:10;flex-shrink:0;align-self:stretch;width:100%;height:0;margin-top:auto;position:sticky;bottom:0;overflow:visible}.gengage-chat-choice-prompter{pointer-events:auto;background:var(--surface-card);border:1px solid var(--border-default);z-index:5;opacity:1;border-bottom:none;border-radius:16px 16px 0 0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;width:auto;max-width:none;margin-left:0;margin-right:0;padding:12px 20px;transition:opacity .2s,transform .2s;display:grid;position:absolute;bottom:-16px;left:-16px;right:-16px;transform:translateY(0);box-shadow:0 -2px 8px #00000014}.gengage-chat-panel--scrolled .gengage-chat-choice-prompter{pointer-events:auto;opacity:1;transform:translateY(0)}.gengage-chat-choice-prompter-heading{color:var(--text-primary);margin-bottom:2px;font-size:12px;font-weight:700}.gengage-chat-choice-prompter-suggestion{color:var(--text-secondary);margin-bottom:0;font-size:12px;line-height:1.35}.gengage-chat-choice-prompter-copy{min-width:0}.gengage-chat-choice-prompter-actions{justify-content:flex-end;align-items:center;gap:10px;min-width:0;display:inline-flex}.gengage-chat-choice-prompter-cta{border:1px solid var(--ds-button-primary-border);border-radius:var(--radius-control);background:var(--ds-button-primary-bg);width:auto;min-width:180px;min-height:40px;color:var(--ds-button-primary-fg);cursor:pointer;text-align:center;padding:0 18px;font-family:inherit;font-size:13px;font-weight:700;transition:background .15s;display:inline-flex}.gengage-chat-choice-prompter-cta:hover{background:var(--ds-button-primary-bg-hover)}.gengage-chat-choice-prompter-dismiss{border:1px solid var(--border-default);background:color-mix(in srgb, var(--surface-card-soft) 92%, white);width:40px;height:40px;color:var(--text-muted);cursor:pointer;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;transition:color .15s,border-color .15s,background .15s;display:flex}.gengage-chat-choice-prompter-dismiss:hover{color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 18%, white);background:var(--client-primary-subtle)}@media (prefers-reduced-motion:reduce){.gengage-chat-choice-prompter{animation:none}}.gengage-chat-categories{flex-direction:column;gap:8px;display:flex}.gengage-chat-categories-tabs{-webkit-overflow-scrolling:touch;gap:4px;padding:4px 0;display:flex;overflow-x:auto}.gengage-chat-categories-tab{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;white-space:nowrap;align-items:center;gap:8px;padding:6px 14px;font-size:13px;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.gengage-chat-categories-tab-image{object-fit:cover;border:1px solid var(--border-subtle);background:var(--surface-card-muted);-webkit-user-drag:none;-webkit-user-select:none;user-select:none;border-radius:999px;flex:none;width:28px;height:28px}.gengage-chat-categories-tab-text{min-width:0}.gengage-chat-categories-tab:hover{background:var(--surface-card-soft);border-color:var(--border-strong)}.gengage-chat-categories-tab--active{background:var(--client-primary-subtle);color:var(--client-primary);border-color:color-mix(in srgb, var(--client-primary) 26%, var(--border-default))}.gengage-chat-categories-panel{flex-direction:column;gap:12px;display:flex}.gengage-chat-categories-group-summary{border:1px solid color-mix(in srgb, var(--client-primary) 20%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 6%, var(--surface-card));border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}.gengage-chat-categories-group-selection{border:1px solid color-mix(in srgb, var(--client-primary) 24%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 10%, white);max-width:100%;color:var(--client-primary);border-radius:999px;align-self:flex-start;align-items:center;gap:10px;padding:6px 12px 6px 8px;display:inline-flex}.gengage-chat-categories-group-selection-image{object-fit:cover;border:1px solid color-mix(in srgb, white 82%, var(--border-subtle) 18%);background:var(--surface-card-muted);-webkit-user-drag:none;-webkit-user-select:none;user-select:none;border-radius:999px;flex:none;width:30px;height:30px}.gengage-chat-categories-group-selection-title{min-width:0;color:inherit;font-size:13px;font-weight:800;line-height:1.25}.gengage-chat-categories-group-chips{flex-wrap:wrap;gap:6px;display:flex}.gengage-chat-categories-group-chip{border:1px solid var(--border-default);background:color-mix(in srgb, white 78%, var(--surface-card-soft));color:var(--text-secondary);border-radius:999px;align-items:center;padding:5px 10px;font-size:11px;font-weight:700;line-height:1.2;display:inline-flex}.gengage-chat-categories-group-chip--accent{border-color:color-mix(in srgb, var(--client-primary) 22%, var(--border-default));background:color-mix(in srgb, var(--client-primary) 10%, white);color:var(--client-primary)}.gengage-chat-categories-group-reason{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.5}.gengage-chat-categories-grid{grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:12px;display:grid}.gengage-chat-categories-grid .gengage-chat-product-card{width:100%;min-width:0;max-width:none}:is(.gengage-chat-categories .gengage-chat-product-card-img,.gengage-chat-consulting-group-grid .gengage-chat-product-card-img,.gengage-chat-product-grid-wrapper:has(.gengage-chat-consulting-style-picker) .gengage-chat-product-card-img){-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.gengage-chat-categories-filter-tags{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.gengage-chat-categories-filter-tag{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;padding:4px 10px;font-size:12px;transition:background .15s,border-color .15s,color .15s}.gengage-chat-categories-filter-tag:hover{background:var(--client-primary-subtle);border-color:color-mix(in srgb, var(--client-primary) 18%, var(--border-default));color:var(--client-primary)}.gengage-chat-product-grid-view-more{border:1px solid var(--ds-button-secondary-border);border-radius:var(--radius-control);background:var(--ds-button-secondary-bg);width:100%;color:var(--ds-button-secondary-fg);cursor:pointer;text-align:center;grid-column:1/-1;margin-top:8px;padding:10px;font-size:14px;font-weight:500;transition:background .15s;display:block}.gengage-chat-product-grid-view-more:hover{background:var(--ds-button-secondary-bg-hover)}.gengage-chat-product-grid--mobile{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px 0;display:grid;overflow-x:visible}.gengage-chat-product-grid--mobile .gengage-chat-product-card{width:100%;min-width:0;max-width:none}.gengage-chat-comparison--mobile{position:relative;overflow-x:clip}.gengage-chat-comparison--mobile .gengage-chat-comparison-table-wrapper{-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 88%,#0000);mask-image:linear-gradient(90deg,#000 88%,#0000)}.gengage-chat-comparison--mobile .gengage-chat-comparison-table{table-layout:fixed;min-width:480px}.gengage-chat-comparison--mobile .gengage-chat-comparison-table th:first-child,.gengage-chat-comparison--mobile .gengage-chat-comparison-table .gengage-chat-comparison-label{background:var(--surface-card);z-index:1;box-shadow:2px 0 4px color-mix(in srgb, var(--surface-shell) 8%, transparent);position:sticky;left:0}.gengage-chat-comparison--mobile .gengage-chat-comparison-table thead th:first-child{box-sizing:border-box;width:22ch;min-width:0;max-width:22ch;padding:8px 6px}.gengage-chat-comparison--mobile .gengage-chat-comparison-table td.gengage-chat-comparison-label{text-align:left;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;vertical-align:middle;width:22ch;min-width:0;max-width:22ch;overflow:hidden}.gengage-chat-product-details-similars-heading{color:var(--text-primary);margin:16px 0 8px;font-size:18px;font-weight:700;line-height:1.2}.gengage-chat-product-details-similars{margin-top:8px}.gengage-chat-product-details-share{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);width:36px;height:36px;color:var(--text-muted);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;transition:color .12s,border-color .12s,background-color .12s;display:inline-flex;position:relative}.gengage-chat-product-details-share:hover{color:var(--client-primary);border-color:var(--client-primary);background:var(--client-primary-subtle)}.gengage-chat-product-details-share:before{content:attr(aria-label);border-radius:calc(var(--radius-control) - 4px);background:var(--surface-shell);color:var(--text-inverse);white-space:nowrap;pointer-events:none;opacity:0;z-index:2;padding:4px 8px;font-size:11px;font-weight:500;transition:opacity .15s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.gengage-chat-product-details-share:hover:before{opacity:1}.gengage-chat-product-details-share--copied:after{content:"✓";background:var(--_gengage-success-color);color:var(--client-on-primary);border-radius:var(--radius-control);justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex;position:absolute;inset:0}.gengage-chat-product-details-share svg{width:20px;height:20px}.gengage-chat-review-link,.gengage-chat-grounding-link{color:var(--client-primary);text-decoration:underline}@media (width<=768px){.gengage-chat-product-details-promo-badge{-webkit-line-clamp:2;line-clamp:2;white-space:normal;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}.gengage-chat-launcher:focus-visible,.gengage-chat-close:focus-visible,.gengage-chat-header-btn:focus-visible,.gengage-chat-header-powered:focus-visible,.gengage-chat-footer-link:focus-visible,.gengage-chat-send:focus-visible,.gengage-chat-action-btn:focus-visible,.gengage-chat-inline-question-btn:focus-visible,.gengage-chat-pill:focus-visible,.gengage-chat-input-chip:focus-visible,.gengage-chat-pills-arrow:focus-visible,.gengage-chat-error-retry:focus-visible,.gengage-chat-product-card-cta:focus-visible,.gengage-chat-product-details-cta:focus-visible,.gengage-chat-product-details-atc:focus-visible,.gengage-chat-product-detail-tab:focus-visible,.gengage-chat-panel-divider-toggle:focus-visible,.gengage-chat-panel-topbar-back:focus-visible,.gengage-chat-panel-topbar-forward:focus-visible,.gengage-chat-rollback-btn:focus-visible,.gengage-chat-ai-toppick-cta:focus-visible,.gengage-chat-comparison-toggle-btn:focus-visible,.gengage-chat-comparison-floating-btn:focus-visible,.gengage-chat-comparison-checkbox:focus-visible,.gengage-chat-product-sort-trigger:focus-visible,.gengage-chat-product-sort-option:focus-visible,.gengage-chat-product-variant-btn:focus-visible,.gengage-chat-product-gallery-thumb:focus-visible,.gengage-chat-find-similar-pill:focus-visible,.gengage-chat-favorite-btn:focus-visible,.gengage-chat-attach-btn:focus-visible,.gengage-chat-attach-menu-item:focus-visible,.gengage-chat-mic-btn:focus-visible,.gengage-chat-attachment-remove:focus-visible,.gengage-chat-choice-prompter-cta:focus-visible,.gengage-chat-choice-prompter-dismiss:focus-visible,.gengage-chat-categories-tab:focus-visible,.gengage-chat-categories-filter-tag:focus-visible,.gengage-chat-product-grid-view-more:focus-visible,.gengage-chat-product-details-share:focus-visible{outline:2px solid var(--client-focus-ring);outline-offset:2px}.gengage-chat-root--mobile.gengage-chat-root--mobile-half .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter{display:none}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter{box-sizing:border-box;pointer-events:auto;opacity:1;border-radius:14px;grid-template-columns:1fr;gap:10px;width:100%;max-width:100%;max-height:none;margin:0;padding:10px 12px;display:none;position:relative;bottom:auto;left:auto;right:auto;overflow:visible;transform:none}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-panel--visible~.gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter{display:grid}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter-suggestion{display:none}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter-actions{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter-cta{width:100%;min-width:0;min-height:44px;padding:0 14px}.gengage-chat-root--mobile .gengage-chat-product-sort-trigger,.gengage-chat-root--mobile .gengage-chat-product-sort-option,.gengage-chat-root--mobile .gengage-chat-comparison-toggle-btn{min-height:40px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger-label,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger-chevron,.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-comparison-toggle-label{display:none}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-dropdown{flex:none;width:auto;max-width:none}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-dropdown--open{z-index:40}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-trigger{justify-content:center;gap:0;width:auto;min-width:44px;padding:0 10px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-menu{width:min(224px,100vw - 32px);min-width:196px;max-width:calc(100vw - 32px);top:calc(100% + 6px);left:auto;right:0}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-option{min-height:44px;padding:10px 12px;font-size:13px}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-product-sort-option-label{white-space:normal;line-height:1.3}.gengage-chat-root--mobile .gengage-chat-panel .gengage-chat-comparison-toggle-btn{justify-content:center;gap:0;width:44px;min-width:44px;padding:0}.gengage-chat-root--mobile .gengage-chat-input-chip{min-height:40px;padding:8px 12px}.gengage-chat-root--mobile .gengage-chat-comparison-dock-slot .gengage-chat-choice-prompter-dismiss{width:40px;height:40px}.gengage-chat-root--mobile .gengage-chat-panel-divider-toggle{min-height:44px}.gengage-chat-root--mobile .gengage-chat-product-card-cta,.gengage-chat-root--mobile .gengage-chat-choice-prompter-cta,.gengage-chat-root--mobile .gengage-chat-product-grid-view-more{justify-content:center;align-items:center;min-height:44px;display:flex}.gengage-chat-root--mobile .gengage-chat-panel-topbar-back,.gengage-chat-root--mobile .gengage-chat-panel-topbar-forward,.gengage-chat-root--mobile .gengage-chat-favorite-btn,.gengage-chat-root--mobile .gengage-chat-product-details-share{width:44px;min-width:44px;height:44px}.gengage-chat-root--mobile .gengage-chat-panel-topbar-close{display:none}@media (prefers-reduced-motion:reduce){.gengage-chat-consulting-loading-card{animation:none}}.gengage-chat-panel--has-scroll:after{content:"";background:linear-gradient(transparent, var(--surface-card-soft));pointer-events:none;height:40px;display:block;position:sticky;bottom:0}.gengage-chat-cart-toast{background:var(--success);color:var(--text-inverse);border-radius:var(--radius-pill);box-shadow:var(--shadow-3);pointer-events:none;opacity:0;z-index:10;white-space:nowrap;padding:8px 18px;font-size:13px;font-weight:600;transition:opacity .2s,transform .2s;position:absolute;bottom:72px;left:50%;transform:translate(-50%)translateY(8px)}.gengage-chat-cart-toast--neutral{background:var(--surface-shell);color:var(--text-inverse)}.gengage-chat-cart-toast--visible{opacity:1;transform:translate(-50%)translateY(0)}@keyframes gengage-cart-flash{0%{transform:scale(1)}30%{transform:scale(1.25)}60%{transform:scale(.95)}to{transform:scale(1)}}.gengage-chat-header-btn--cart-flash{animation:.5s gengage-cart-flash}',Rg=new Set(["launchSingleProduct","launchProductList","launchHomepage"]),Br=new Set(["PanelRestoreCard"]),Og=new Set(["ComparisonTable","ProductDetailsPanel"]);function Fg(t){const e=t?.type;if(e){if(Og.has(e))return e;if(e==="ProductGrid")return t.props?.similarsAppend===!0?void 0:e}}function $g(t){if(!t.trim())return!1;const e=document.createElement("template");return e.innerHTML=Ie(t),(e.content.textContent??"").trim().length>0}function Rr(t){return t.length>120?!1:/^[a-zA-Z0-9#(),.\s%/\-]+$/.test(t)}function Va(t){return typeof t=="object"&&t!==null&&typeof t.type=="string"}function oa(t){return t?.type==="ProductGrid"&&t.props?.similarsAppend===!0}var Or=class xt extends Bo{constructor(...e){super(...e),this._shadow=null,this._rootEl=null,this._backdropEl=null,this._launcher=null,this._floatingLauncher=null,this._inlineLauncher=null,this._drawer=null,this._bridge=null,this._drawerVisible=!1,this._pillLauncherApply=null,this._hostScrollLockActive=!1,this._hostOverflowRestore=null,this._hostScrollLockViewport=null,this._hostScrollPinning=!1,this._preventHostDocumentTouchMove=a=>{this._hostScrollLockActive&&(this._hostScrollEventShouldReachChatScroller(a)||a.preventDefault())},this._preventHostDocumentWheel=a=>{this._hostScrollLockActive&&(this._hostScrollEventShouldReachChatScroller(a)||a.preventDefault())},this._pinHostViewportScroll=()=>{if(!this._hostScrollLockActive||!this._hostScrollLockViewport||this._hostScrollPinning||this._isMobileViewport&&window.visualViewport&&window.visualViewport.height<window.innerHeight)return;const a=this._hostScrollLockViewport;window.scrollX===a.x&&window.scrollY===a.y||(this._hostScrollPinning=!0,window.scrollTo(a.x,a.y),this._hostScrollPinning=!1)},this._messages=[],this._currentMessageId=0,this._abortControllers=new Set,this._currentThreadId=null,this._lastThreadId=null,this._chatCreatedAt="",this._lastBackendContext=null,this._productSort={type:"related"},this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,this._comparisonRefreshRafId=null,this._lastAppliedKeyboardInset=0,this._syncVisualVh=null,this._viewedProductSkus=new Set,this._panelAiSpecByThread=new Map,this._choicePrompterEl=null,this._openState="full",this._mobileBreakpoint=768,this._isMobileViewport=!1,this._gaPrevMainPaneExpanded=!1,this._pdpLaunched=!1,this._plpLaunched=!1,this._homepageLaunched=!1,this._restorePending=!1,this._assistantSoftNavigationPending=!1,this._assistantSoftNavigationTimer=null,this._entryContextPrimed=!1,this._contextPrimingInFlight=!1,this._queuedUserMessages=[],this._productContextUnavailableSku=null,this._i18n=Ct,this._extendedModeManager=null,this._activeTypewriter=null,this._activeTtsHandle=null,this._activeRequestThreadId=null,this._skuToProductItem={},this._conversationMode=null,this._initComplete=!1,this._pendingActions=[],this._bridgeContext=null,this._cartQuantity=null,this._threadsWithFirstBot=new Set,this._panel=null,this._localPanelHistory=[],this._currentPanelSource=null,this._currentInlineProductSummaryRecord=null,this._session=null,this._historyStorage=null,this._activeHistorySessionId=null,this._presentation=new Ir,this._presentationScrollTimerIds=new Set,this._eventCallbacks=new Map,this._pendingAddToCartKeys=new Set,this._lastSentAction=null,this._consecutiveErrorCount=0,this._lastErrorMessage="",this._launcherAnchorCleanup=null,this._modeController=new Fc,this._syncLauncherAnchor=null}static{this._MAX_COMPARISON_SELECTION=5}static{this._MAX_PANEL_HISTORY=10}get _assistantMode(){return this._modeController.mode}set _assistantMode(e){this._modeController.mode=e}get _uiHints(){return this._modeController.uiHints}set _uiHints(e){this._modeController.uiHints=e}async onInit(e){if(this._i18n=this._resolveI18n(e),this._chatCreatedAt=new Date().toISOString(),e.pillLauncher){const y=ug(e.pillLauncher);e.launcherImageUrl=y.launcherImageUrl,e.headerAvatarUrl===void 0&&(e.headerAvatarUrl=e.pillLauncher.avatarUrl),this._pillLauncherApply=()=>y.apply(this._shadow??void 0)}this._shadow=this.root.attachShadow({mode:"open"});const a=document.createElement("style");a.textContent=Bg,this._shadow.appendChild(a);const n=this.root,r=(y,x)=>{x&&Rr(x)&&n.style.setProperty(y,x)};if(r("--gengage-chat-header-bg",e.headerBg),r("--gengage-chat-header-foreground",e.headerForeground),e.theme)for(const[y,x]of Object.entries(e.theme))y.startsWith("--")&&typeof x=="string"&&r(y,x);this._applyDiscountedPriceColorVar(e.productPriceUi?.discountedPriceColor);const i=document.createElement("div");i.className="gengage-chat-root",i.lang=Mt(e.locale),this._rootEl=i,this._shadow.appendChild(i);const o=e.variant??"floating";if(o==="inline"&&i.classList.add("gengage-chat--inline"),o!=="inline"){const y=document.createElement("div");y.className="gengage-chat-backdrop",y.setAttribute("aria-hidden","true"),y.setAttribute("role","button"),y.setAttribute("tabindex","-1"),y.setAttribute("aria-label",this._i18n.closeAriaLabel),y.addEventListener("click",x=>{x.preventDefault(),x.stopPropagation(),this.close()}),this._backdropEl=y,i.prepend(y)}if(o==="floating"){if(e.floatingLauncher)this._floatingLauncher=fr(e.floatingLauncher,{onSend:y=>{this.open({initialMessage:y}),this._floatingLauncher?.showOpenChatButton()},onOpenChat:()=>this.open()},this._shadow),i.appendChild(this._floatingLauncher.container);else{const y={onClick:()=>this.open(),ariaLabel:this._i18n.openButton};e.launcherImageUrl!==void 0?y.imageUrl=e.launcherImageUrl:e.launcherSvg!==void 0&&(y.svgMarkup=e.launcherSvg),e.mobileLauncherImageUrl!==void 0&&(y.mobileImageUrl=e.mobileLauncherImageUrl),e.hideMobileLauncher!==void 0&&(y.hideMobile=e.hideMobileLauncher),e.mobileBreakpoint!==void 0&&(y.mobileBreakpoint=e.mobileBreakpoint),e.launcherTooltip!==void 0&&(y.tooltip=e.launcherTooltip),this._launcher=kd(y),i.appendChild(this._launcher.container)}this._setupLauncherAnchor(e),e.inlineLauncher&&this._setupInlineLauncher(e)}o==="overlay"&&i.classList.add("gengage-chat--overlay");const s=document.createElement("div");i.appendChild(s),this._drawer=new Nc(s,{i18n:this._i18n,onSend:(y,x)=>this._sendMessage(y,x),onClose:()=>this.close(),onAttachment:y=>this._handleAttachment(y),onPanelToggle:()=>{this._drawer?.persistPanelState(e.accountId)},onHostShellSync:()=>{this._applyOpenStateClasses()},onRollback:y=>this._handleRollback(y),onPanelBack:()=>this._navigatePanelBack(),onPanelForward:()=>this._panel?.navigateForward(),onPanelClose:()=>{if(this._isMobileViewport){this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[];return}this._localPanelHistory=[],this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._currentPanelSource=null},headerTitle:e.headerTitle,headerAvatarUrl:e.headerAvatarUrl,launcherImageUrl:e.launcherImageUrl,headerBadge:e.headerBadge,headerCartUrl:e.headerCartUrl,footerAttribution:e.footerAttribution,showHeaderFavorites:typeof e.onFavoritesClick=="function"||e.headerFavoritesToggle===!0,...e.headerCartUrl||e.onCartClick?{onCartClick:()=>{e.headerCartUrl?this._saveSessionAndOpenURL(e.headerCartUrl):e.onCartClick?.()}}:{},onFavoritesClick:()=>{if(oo(),typeof e.onFavoritesClick=="function"){e.onFavoritesClick();return}this._openFavoritesPanel()},onHistoryClick:()=>{if(this._currentPanelSource?.kind==="history"){this._navigatePanelBack();return}this._openHistoryPanel()},getMobileState:()=>this._openState??"full",getMobileViewport:()=>this._isMobileViewport,onMobileSnap:y=>{y==="close"?this.close():(this._openState=y,this._applyOpenStateClasses())},onLinkClick:y=>{this._saveSessionAndOpenURL(y)},renderMessageUISpec:y=>this._renderMessageUISpec(y),voiceEnabled:e.voiceEnabled,voiceLang:e.locale?`${e.locale.split("-")[0]??"tr"}-${(e.locale.split("-")[1]??e.locale.split("-")[0]??"TR").toUpperCase()}`:void 0,onNewChat:()=>this._startNewChat(),presentation:{onPinnedToBottomChange:y=>{this._presentation.pinnedToBottom=y},onUserInteractingChange:y=>{this._presentation.userInteracting=y},onFormerMessagesHint:()=>{this._presentation.focusedThreadId&&this._hasMultipleThreadIds()&&this._drawer?.setFormerMessagesButtonVisible(!0)},shouldBlockSoftAutoScroll:()=>this._presentation.shouldBlockStreamAutoScroll(),onReleasePresentationFocus:()=>this._releasePresentationFocus()}}),this._applyUiHints(),this._extendedModeManager=new Xd({onChange:y=>this._panel?.notifyExtension(y),productDetailsInPanel:(e.isDemoWebsite??!1)&&(e.productDetailsExtended??!1)}),this._panel=new Qd({drawer:()=>this._drawer,shadow:()=>this._shadow,currentThreadId:()=>this._currentThreadId,bridge:()=>this._bridge,extendedModeManager:()=>this._extendedModeManager,i18n:()=>this._i18n,rollbackToThread:y=>this._rollbackToThread(y)}),o!=="inline"&&this._drawer.getElement().classList.add("gengage-chat-drawer--hidden");const c=this._drawer.restorePanelState(e.accountId),l=e.panelMode??"auto";l==="collapsed"?this._drawer.setPanelCollapsed(!0):l==="expanded"&&this._drawer.setForceExpanded();const d=sessionStorage.getItem("gengage_restore_session_id"),g=sessionStorage.getItem("gengage_restore_history_id"),p=this._isRestoreMarkerFresh(),u=!!d&&p;this._clearRestoreMarker(),this._restorePending=!1;let m=null;try{m=new Yd,await m.open(),this._session=new Lr(m)}catch{m=null,this._session=new Lr(null)}this._historyStorage=new gg(this.config.accountId,this.config.session?.userId??"",m),await this._historyStorage.hydrate();const f=g?await this._historyStorage.loadSession(g):null;f?(this._activeHistorySessionId=f.id,this._restorePending=await this._restoreFromHistoryRecord(f)):m&&(this._restorePending=await this._restoreFromIndexedDB(u)),this._registerPublicAPI(),e.mobileInitialState!==void 0&&(this._openState=e.mobileInitialState),this._mobileBreakpoint=e.mobileBreakpoint??768,this._syncViewportState();const b=()=>this._syncViewportState();if(window.addEventListener("resize",b,{passive:!0}),this.addCleanup(()=>window.removeEventListener("resize",b)),window.visualViewport){const x=()=>{if(!this._drawerVisible||!this._isMobileViewport)return;const v=this._drawer?.getElement();if(!v)return;const w=window.visualViewport,P=Math.max(0,Math.round(window.innerHeight-(w.height+w.offsetTop))),E=P>90?P:0;E!==this._lastAppliedKeyboardInset&&(this._lastAppliedKeyboardInset=E,v.style.setProperty("--gengage-chat-keyboard-inset",`${E}px`)),v.style.setProperty("--gengage-chat-visual-vh",`${Math.round(w.height)}px`),v.style.setProperty("--gengage-chat-visual-top",`${Math.round(w.offsetTop)}px`)};this._syncVisualVh=()=>{if(!this._isMobileViewport)return;const v=this._drawer?.getElement();if(!v||!window.visualViewport)return;const w=window.visualViewport;v.style.setProperty("--gengage-chat-visual-vh",`${Math.round(w.height)}px`),v.style.setProperty("--gengage-chat-visual-top",`${Math.round(w.offsetTop)}px`)},window.visualViewport.addEventListener("resize",x),window.visualViewport.addEventListener("scroll",x),this.addCleanup(()=>{window.visualViewport?.removeEventListener("resize",x),window.visualViewport?.removeEventListener("scroll",x)})}o==="inline"&&(this._drawerVisible=!0,this.isVisible=!0,this._applyOpenStateClasses(),this._presentation.setShown(!0),setTimeout(()=>this._maybeAutoAnchorUnreadAssistant(),60));const h={namespace:"chat",onMessage:y=>this._handleBridgeMessage(y)};e.allowedOrigins!==void 0&&(h.allowedOrigins=e.allowedOrigins),this._bridge=new Oo(h),this._lastSku=this.config.pageContext?.sku,this._lastPageType=this.config.pageContext?.pageType,this._lastSkuListKey=this.config.pageContext?.skuList?.slice(0,48).join(","),this._initComplete=!0;for(const y of this._pendingActions)this._sendAction(y.action,y.options);this._pendingActions=[],this._pillLauncherApply&&o==="floating"&&(await this._pillLauncherApply(),this._pillLauncherApply=null),qe("gengage:chat:ready",{}),Ji("chat"),e.onReady?.()}onUpdate(e){if(this.config.pageContext&&e.pageType!==void 0){const{sku:n,skuList:r,...i}=this.config.pageContext,o={...i};o.pageType==="pdp"&&n!==void 0&&(o.sku=n),o.pageType==="plp"&&r!==void 0&&(o.skuList=r),this.config={...this.config,pageContext:o}}let a=!1;if(e.sku!==void 0&&e.sku!==this._lastSku&&(this._lastSku=e.sku,a=!0),e.pageType!==void 0&&e.pageType!==this._lastPageType&&(this._lastPageType=e.pageType,a=!0,this._inlineLauncher?.sync(e.pageType)),e.skuList!==void 0){const n=e.skuList.slice(0,48).join(",");n!==this._lastSkuListKey&&(this._lastSkuListKey=n,a=!0)}if(this._assistantSoftNavigationPending&&this._isRestoreMarkerFresh()&&this.config.session?.sessionId){this._clearRestoreMarker(),this._restorePending=!1,this._markCurrentContextLaunchHandled(),this._pdpLaunched=!0,this._plpLaunched=!0,this._homepageLaunched=!0;return}a&&(this._resetForNewPage(),this._drawerVisible&&this.config.pageContext?.pageType==="pdp"&&this.config.pageContext?.sku&&this._primeOpenPageContext())}onShow(){this._inlineLauncher?.setActive(!0),this._showDrawer(),this.emit("open"),qe("gengage:chat:open",{state:this._openState}),Xi("chat"),this.config.onOpen?.(),this._primeOpenPageContext()}_primeOpenPageContext(){if(this._restorePending){this._markCurrentContextLaunchHandled(),this._pdpLaunched=!0,this._plpLaunched=!0,this._homepageLaunched=!0;return}this._showWelcomeIfNeeded(),this._maybePrimeEntryContextOpening(),!this._pdpLaunched&&this.config.pageContext?.pageType==="pdp"&&this.config.pageContext?.sku&&(this._pdpLaunched=!0,this._contextPrimingInFlight=!0,this._sendAction({title:"",type:"launchSingleProduct",payload:{sku:this.config.pageContext.sku,...this._resolveContextualOpeningMessage("product")?{opening_message:this._resolveContextualOpeningMessage("product")}:{},...this._resolveContextualOpeningGuidance("product")?{opening_guidance:this._resolveContextualOpeningGuidance("product")}:{}}},{silent:!0,isContextPrime:!0,preservePills:!0})),!this._usesGenericNonPdpLaunch()&&!this._plpLaunched&&this.config.pageContext?.pageType==="plp"&&this.config.pageContext.skuList?.length&&(this._plpLaunched=!0,this._contextPrimingInFlight=!0,this._sendAction({title:"",type:"launchProductList",payload:{sku_list:this.config.pageContext.skuList.slice(0,48)}},{silent:!0,isContextPrime:!0,preservePills:!0})),!this._homepageLaunched&&(this._usesGenericNonPdpLaunch()||this.config.pageContext?.pageType==="home"||this.config.pageContext?.pageType==="other")&&(this._homepageLaunched=!0,this._contextPrimingInFlight=!0,this._sendAction({title:"",type:"launchHomepage",payload:{}},{silent:!0,isContextPrime:!0,preservePills:!0}))}onHide(){this._inlineLauncher?.setActive(!1),(this.config.variant??"floating")==="floating"&&(this.root.style.display=""),this._hideDrawer(),this.emit("close"),qe("gengage:chat:close",{}),this.config.onClose?.()}_setupLauncherAnchor(e){const a=e.launcherAnchor;if(!a||!a.mobile&&!a.desktop)return;const n=this.root,r=e.mobileBreakpoint??768,i=()=>window.innerWidth<=r?a.mobile:a.desktop,o=()=>{const P=i();return!!P?.dynamicRelocate&&!!P.selector},s="--gengage-chat-launcher-anchor-bottom",c="--gengage-chat-launcher-anchor-right";(a.mobile?.dynamicRelocate||a.desktop?.dynamicRelocate)&&n.style.setProperty("--gengage-chat-launcher-anchor-transition","0.35s");const l=()=>{const P=window.innerWidth<=r?a.mobile:a.desktop;if(!P)return;const E=P.selector,A=!!E,R=(A?document.querySelector(E):null)?.getBoundingClientRect();if(P.bottom!==void 0){const{offset:j,type:Y}=P.bottom;if(!A)n.style.setProperty(s,`${Math.max(0,j)}px`);else if(R){const ie=Y==="root"||j===0?R.bottom:R.top,de=Math.max(0,window.innerHeight-ie+j);n.style.setProperty(s,`${de}px`)}}if(P.right!==void 0){const{offset:j,type:Y}=P.right;if(!A)n.style.setProperty(c,`${Math.max(0,j)}px`);else if(R){const ie=Y==="root"||j===0?R.right:R.left,de=Math.max(0,window.innerWidth-ie+j);n.style.setProperty(c,`${de}px`)}}},d=()=>{n.style.removeProperty(s),n.style.removeProperty(c)};let g=!1,p=0;const u=()=>{!o()||!g||p||(p=requestAnimationFrame(()=>{p=0,o()&&g&&l()}))},m=new ResizeObserver(()=>{(!o()||g)&&l()});let f=null,b=null;const h=()=>{const P=i()?.selector;return!P||!!document.querySelector(P)},y=()=>{!o()||h()||(b?.disconnect(),b=new MutationObserver(()=>{h()&&(b?.disconnect(),b=null,x())}),b.observe(document.body,{childList:!0,subtree:!0}))},x=()=>{m.disconnect(),f?.disconnect(),f=null,g=!1;const P=i();if(!P)return;if(!P.selector){l();return}const E=document.querySelector(P.selector);E&&(m.observe(E),o()?(f=new IntersectionObserver(A=>{for(const R of A)R.isIntersecting?(g=!0,l()):(g=!1,d(),y())},{threshold:0}),f.observe(E)):l())};x();let v=0;const w=()=>{v||(v=requestAnimationFrame(()=>{v=0,g=!1,d(),b?.disconnect(),b=null,x(),y(),o()||l()}))};window.addEventListener("resize",w,{passive:!0}),window.addEventListener("scroll",u,{passive:!0}),window.visualViewport?.addEventListener("scroll",u,{passive:!0}),this._syncLauncherAnchor=()=>{g=!1,d(),b?.disconnect(),b=null,x(),y()},o()?y():(l(),[100,400,1e3].forEach(P=>window.setTimeout(l,P))),this._launcherAnchorCleanup=()=>{m.disconnect(),f?.disconnect(),b?.disconnect(),window.removeEventListener("resize",w),window.removeEventListener("scroll",u),window.visualViewport?.removeEventListener("scroll",u),v&&cancelAnimationFrame(v),p&&cancelAnimationFrame(p)}}syncLauncherAnchor(){this._syncLauncherAnchor?.()}syncInlineLauncher(){this._inlineLauncher?.sync(this.config.pageContext?.pageType)}_setupInlineLauncher(e){const a=e.inlineLauncher;a&&(this._inlineLauncher=vr(a,{onClick:()=>this.open()},{shadowRoot:this._shadow,getPageType:()=>this.config.pageContext?.pageType}),this._inlineLauncher.sync(this.config.pageContext?.pageType),[100,400,1e3,2500].forEach(n=>{window.setTimeout(()=>{this._inlineLauncher?.sync(this.config.pageContext?.pageType)},n)}))}onDestroy(){this._clearAssistantSoftNavigationPending(),this._releaseHostDocumentScrollLock(),this._abortAllActiveRequests(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._presentationScrollTimerIds.forEach(e=>clearTimeout(e)),this._presentationScrollTimerIds.clear(),this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._comparisonRefreshRafId!==null&&(cancelAnimationFrame(this._comparisonRefreshRafId),this._comparisonRefreshRafId=null),this._launcherAnchorCleanup?.(),this._launcherAnchorCleanup=null,this._syncLauncherAnchor=null,this._floatingLauncher?.destroy(),this._floatingLauncher=null,this._inlineLauncher?.destroy(),this._inlineLauncher=null,this._drawer?.destroy(),Nn(),this._drawer=null,this._bridge?.destroy(),this._bridge=null,this._extendedModeManager=null,this._panel?.destroy(),this._panel=null,this._session?.close(),this._session=null,this._historyStorage=null,this._activeHistorySessionId=null,this._localPanelHistory=[],this._currentPanelSource=null,window.gengage&&delete window.gengage.chat,this._shadow&&(this._shadow.innerHTML="",this._shadow=null),this._rootEl=null}open(e){e?.state!==void 0&&(this._openState=e.state,this._drawerVisible&&this._applyOpenStateClasses()),this.show(),e?.initialMessage!==void 0&&this._sendMessage(e.initialMessage)}openWithAction(e,a){a?.sku!==void 0&&this.update({sku:a.sku}),this._markCurrentContextLaunchHandled(),a?.state!==void 0?this._openState=a.state:this._isMobileViewport&&(this._openState="half"),this.show(),this._drawerVisible&&this._applyOpenStateClasses(),this._sendAction(e,{skipFullSheet:!0})}sendMessage(e){this._sendMessage(e)}sendAction(e,a){this._sendAction(e,a)}close(){this.hide()}saveSession(e,a){sessionStorage.setItem("gengage_restore_session_id",e),sessionStorage.setItem("gengage_restore_sku",a),this._activeHistorySessionId?sessionStorage.setItem("gengage_restore_history_id",this._activeHistorySessionId):sessionStorage.removeItem("gengage_restore_history_id"),a.trim()?this._stampRestoreFreshnessToken():sessionStorage.removeItem("gengage_restore_token")}saveSessionForNavigation(){const e=this.config.session?.sessionId;e&&(sessionStorage.setItem("gengage_restore_session_id",e),sessionStorage.removeItem("gengage_restore_sku"),this._activeHistorySessionId?sessionStorage.setItem("gengage_restore_history_id",this._activeHistorySessionId):sessionStorage.removeItem("gengage_restore_history_id"),this._stampRestoreFreshnessToken())}_readNavSeq(){try{const e=sessionStorage.getItem("gengage_nav_seq"),a=e?parseInt(e,10):0;return Number.isFinite(a)&&a>0?a:0}catch{return 0}}_stampRestoreFreshnessToken(){const e=this._readNavSeq()+1;sessionStorage.setItem("gengage_nav_seq",String(e)),sessionStorage.setItem("gengage_restore_token",JSON.stringify({seq:e,ts:Date.now()}))}_isRestoreMarkerFresh(){try{const e=sessionStorage.getItem("gengage_restore_token");if(!e)return!1;const a=JSON.parse(e),n=typeof a.seq=="number"?a.seq:0;return n>0&&n===this._readNavSeq()}catch{return!1}}_clearRestoreMarker(){try{sessionStorage.removeItem("gengage_restore_session_id"),sessionStorage.removeItem("gengage_restore_sku"),sessionStorage.removeItem("gengage_restore_history_id"),sessionStorage.removeItem("gengage_restore_token")}catch{}this._clearAssistantSoftNavigationPending()}_markAssistantSoftNavigationPending(){this._clearAssistantSoftNavigationPending(),this._assistantSoftNavigationPending=!0}_clearAssistantSoftNavigationPending(){this._assistantSoftNavigationPending=!1,this._assistantSoftNavigationTimer!==null&&(window.clearTimeout(this._assistantSoftNavigationTimer),this._assistantSoftNavigationTimer=null)}_expireAssistantSoftNavigationIfUnclaimed(){this._assistantSoftNavigationPending&&this._clearRestoreMarker()}_scheduleAssistantSoftNavigationExpiry(){!this._assistantSoftNavigationPending||this._assistantSoftNavigationTimer!==null||(this._assistantSoftNavigationTimer=window.setTimeout(()=>{this._assistantSoftNavigationTimer=null,this._expireAssistantSoftNavigationIfUnclaimed()},250))}get isOpen(){return this._drawerVisible}addCallback(e,a){let n=this._eventCallbacks.get(e);return n||(n=new Set,this._eventCallbacks.set(e,n)),n.add(a),()=>{n.delete(a),n.size===0&&this._eventCallbacks.delete(e)}}_applyDiscountedPriceColorVar(e){const a=this.root;e==="client"?a.style.setProperty("--gengage-discounted-price-color","var(--client-primary)"):a.style.removeProperty("--gengage-discounted-price-color")}_abortAllActiveRequests(){for(const e of this._abortControllers)e.abort();this._abortControllers.clear()}_pruneEmptyStreamingAssistantPlaceholders(){const e=[];for(const a of this._messages){if(a.role==="assistant"&&!a.frontendOnly&&(a.status==="streaming"||a.status==="done")&&(a.content==null||a.content.length===0)){if(a.threadId){const n=this._messages.some(r=>r.id!==a.id&&r.threadId===a.threadId&&r.frontendOnly)||this._panel?.snapshotTypes.has(a.id)===!0;this._threadsWithFirstBot.delete(a.threadId),this._presentation.finalizeAssistantGroup(a.threadId),this._shadow?.querySelectorAll(`[data-thread-id="${Ae(a.threadId)}"]:not([data-message-id])`).forEach(r=>r.remove()),this._panel&&!n&&(this._panel.threads=this._panel.threads.filter(r=>r!==a.threadId))}this._drawer?.removeMessageBubble(a.id),this._panel?.snapshots.delete(a.id),this._panel?.snapshotTypes.delete(a.id);continue}e.push(a)}this._messages.length=0,this._messages.push(...e)}_clearConversationState(e){this._activeRequestThreadId=null,this._abortAllActiveRequests(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._messages.length=0,this._drawer?.clearMessages(),this._drawer?.clearPanel(),this._currentPanelSource=null,this._currentInlineProductSummaryRecord=null,this._localPanelHistory=[],this._panel&&(this._panel.clearSnapshots(),this._panel.threads=[],this._panel.activePanelMessageId=null,this._panel.currentType=null),this._panelAiSpecByThread.clear(),this._skuToProductItem={},this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,this._viewedProductSkus.clear(),this._threadsWithFirstBot.clear(),this._currentThreadId=null,this._lastThreadId=null,this._lastBackendContext=null,this._chatCreatedAt=new Date().toISOString(),e&&(this._pdpLaunched=!1,this._plpLaunched=!1,this._homepageLaunched=!1,this._entryContextPrimed=!1,this._restorePending=!1),this._contextPrimingInFlight=!1,this._queuedUserMessages=[],this._productContextUnavailableSku=null,this._presentation.reset(),this._presentation.setShown(this._drawerVisible),this._drawer?.setPresentationFocus(null),this._drawer?.setFormerMessagesButtonVisible(!1),this._drawer?.setPills([]),_r(),this._modeController.reset()&&(this._drawer?.setInputPlaceholder(this._i18n.inputPlaceholder),this._drawer?.setAttachmentControlsVisible(!0),this._drawer?.setBeautyPhotoStepCard({visible:!1}))}_resetForNewPage(){this._activeHistorySessionId=null,this._bridgeContext=null,this._clearRestoreMarker(),this._clearConversationState(!0)}_startNewChat(){this._activeHistorySessionId=null,this._clearConversationState(!1),this._showWelcomeIfNeeded(),this._drawer?.focusInput()}_clearAssistantPanelLikeStreamClearPanel(){this._clearChoicePrompter(),this._drawer?.clearPanel(),this._currentPanelSource=null,this._panelAiSpecByThread.clear(),this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,this._panel&&(this._panel.currentType=null,this._panel.updateExtendedMode(""),this._panel.updateTopBar(""))}_flushPresentationScroll(){const e=this._presentation.scrollRequest;if(!e||!this._drawer)return;let a=!1;e.type==="thread"&&e.threadId?(a=this._drawer.scrollThreadIntoView(e.threadId,e.behavior),a||(this._drawer.scrollToBottomPresentation(e.behavior),a=!0)):e.type==="bottom"&&(this._drawer.scrollToBottomPresentation(e.behavior),a=!0),a&&this._presentation.consumeScrollRequest(e.id)}_schedulePresentationScrollFlush(){const e=setTimeout(()=>{this._presentationScrollTimerIds.delete(e),this._flushPresentationScroll()},40);this._presentationScrollTimerIds.add(e)}_focusPresentationThread(e,a="smooth",n=!1){this._presentation.requestThreadFocus(e,a),n&&this._drawer?.setPresentationFocus(e),this._drawer?.setFormerMessagesButtonVisible(!1),this._schedulePresentationScrollFlush()}_scrollInlineIntoView(e,a){if(a){this._focusPresentationThread(a,"auto");return}e.scrollIntoView({behavior:"auto",block:"start"})}_releasePresentationFocus(){this._presentation.releaseFocusedThread(),this._drawer?.setPresentationFocus(null),this._drawer?.setFormerMessagesButtonVisible(!1)}_hasMultipleThreadIds(){const e=new Set;for(const a of this._messages)a.threadId&&e.add(a.threadId);return e.size>1}_orderedThreadIds(){const e=[],a=new Set;for(const n of this._messages)n.threadId&&!a.has(n.threadId)&&(a.add(n.threadId),e.push(n.threadId));return e}_maybeAutoAnchorUnreadAssistant(){if(!this._drawer||!this._presentation.shown)return;const e=this._orderedThreadIds();if(e.length===0)return;const a=hg(e,this._presentation);if(!a)return;const n=`${a}:assistant`;this._presentation.lastAutoAnchoredGroupId!==n&&(this._presentation.userInteracting&&!this._presentation.pinnedToBottom||this._drawer.scrollThreadIntoView(a,"smooth")&&this._presentation.markGroupAutoAnchored(n))}_handleBridgeMessage(e){switch(e.type){case"openChat":this.open();break;case"closeChat":this.close();break;case"startNewChatWithLauncherAction":{const a=e.payload,n=a?.action,r=Va(n)?n:Va(a)?a:null;r&&this._sendAction(r,{silent:!0}),this.open();break}case"startNewChatWithDetailContext":{const a=e.payload;if(a&&typeof a=="object"){this._bridgeContext=a;const n=a.sku;if(n&&this.update({sku:n}),Va(a.action)){this._markCurrentContextLaunchHandled(),this.open(),this._sendAction(a.action);break}}this.open();break}case"launcherAction":{const a=e.payload?.action;a&&typeof a=="object"&&"type"in a&&this._sendAction(a);break}case"scrollToBottom":this._presentation.requestScrollToBottom("smooth"),this._schedulePresentationScrollFlush();break;case"addToCardHandler":this._bridge?.send("addToCardResult",e.payload);break;case"cartQuantityHandler":{const a=e.payload;a&&"quantity"in a&&typeof a.quantity=="number"&&(this._cartQuantity=a.quantity);break}case"favoritesCountHandler":{const a=e.payload?.count;typeof a=="number"&&a>=0&&this._drawer?.updateFavoritesBadge(a);break}case"minimizeRequestedByUser":this._extendedModeManager?.setHiddenByUser(!0);break;case"bgColorChange":{const a=e.payload?.color;typeof a=="string"&&Rr(a)&&this._shadow&&this._shadow.host.style.setProperty("--gengage-chat-bg",a);break}default:break}}_registerPublicAPI(){window.gengage||(window.gengage={}),window.gengage.chat={open:e=>this.open(e),openWithAction:(e,a)=>this.openWithAction(e,a),sendMessage:e=>this.sendMessage(e),sendAction:(e,a)=>this.sendAction(e,a),close:()=>this.close(),saveSession:(e,a)=>this.saveSession(e,a),get isOpen(){return!1},on:(e,a)=>this.on(e,a),addCallback:(e,a)=>this.addCallback(e,a)},Object.defineProperty(window.gengage.chat,"isOpen",{get:()=>this._drawerVisible})}_showDrawer(){if(this._drawerVisible)return;this._drawerVisible=!0;const e=this._drawer?.getElement();e&&e.classList.remove("gengage-chat-drawer--hidden"),this._applyOpenStateClasses(),this._syncVisualVh?.(),this._drawer?.trapFocus(),this._isMobileViewport||this._drawer?.focusInput(),this._extendedModeManager?.setChatShown(!0),this._presentation.setShown(!0),setTimeout(()=>this._maybeAutoAnchorUnreadAssistant(),60)}_showWelcomeIfNeeded(){if(this._messages.length!==0)return;const e=this._resolveOpeningContextKey(),a=this._resolveContextualOpeningActions(e);if(a.length>0&&this._drawer?.setPills(a.map(i=>({label:i.title,onAction:()=>this._sendAction(this._resolveContextualOpeningAction(i,e))}))),this._hasDedicatedContextLaunch()||this._shouldPrimeContextualOpening())return;const n=this._resolveContextualOpeningMessage(e);if(!n)return;const r={id:un(),role:"assistant",content:n,timestamp:Date.now(),status:"done"};this._messages.push(r),this._drawer?.addMessage(r)}_resolveOpeningContextKey(){switch(this.config.pageContext?.pageType){case"home":return"home";case"search":case"plp":return"listing";case"pdp":return"product";default:return"default"}}_resolveContextualOpeningMessage(e=this._resolveOpeningContextKey()){return this.config.openingMessagesByContext?.[e]??(e!=="default"?this.config.openingMessagesByContext?.default:void 0)??this.config.welcomeMessage}_resolveContextualOpeningGuidance(e=this._resolveOpeningContextKey()){return this.config.openingGuidanceByContext?.[e]??(e!=="default"?this.config.openingGuidanceByContext?.default:void 0)}_resolveContextualOpeningActions(e=this._resolveOpeningContextKey()){const a=this.config.welcomeActionsByContext?.[e]??(e!=="default"?this.config.welcomeActionsByContext?.default:void 0);return a?.length?a.filter(n=>typeof n?.title=="string"&&n.title.trim().length>0):(this.config.welcomeActions??[]).filter(n=>typeof n=="string"&&n.trim().length>0).map(n=>({title:n}))}_resolveContextualOpeningAction(e,a=this._resolveOpeningContextKey()){const n=e.title.trim(),r=this.config.pageContext?.sku??this._readContextStringField("sku"),i=this._readContextStringListField("visible_skus")??[];return e.icon==="review"&&r?{title:n,type:"reviewSummary",payload:{sku:r}}:e.icon==="similar"&&r?{title:n,type:"findSimilar",payload:{sku:r}}:e.icon==="compare"&&a==="listing"&&i.length>=2?{title:n,type:"getComparisonTable",payload:{sku_list:i.slice(0,2)}}:{title:n,type:"user_message",payload:n}}_readContextStringField(e){const a=this.config.pageContext,n=a?.extra&&typeof a.extra=="object"&&!Array.isArray(a.extra)?a.extra:void 0,r=e.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()),i=a?.[e]??n?.[e]??a?.[r]??n?.[r];return typeof i=="string"&&i.trim().length>0?i.trim():void 0}_readContextStringListField(e){const a=this.config.pageContext,n=a?.extra&&typeof a.extra=="object"&&!Array.isArray(a.extra)?a.extra:void 0,r=e.replace(/_([a-z])/g,(s,c)=>c.toUpperCase()),i=a?.[e]??n?.[e]??a?.[r]??n?.[r];if(!Array.isArray(i))return;const o=i.filter(s=>typeof s=="string"&&s.trim().length>0);return o.length>0?o:void 0}_usesGenericNonPdpLaunch(){const e=this.config.pageContext?.pageType;return this.config.genericNonPdpLaunch===!0&&e!==void 0&&e!=="pdp"}_markCurrentContextLaunchHandled(){const e=this.config.pageContext;if(e){if(e.pageType==="pdp"&&e.sku){this._pdpLaunched=!0;return}if(this._usesGenericNonPdpLaunch()){this._homepageLaunched=!0;return}if(e.pageType==="plp"&&e.skuList?.length){this._plpLaunched=!0;return}(e.pageType==="home"||e.pageType==="other")&&(this._homepageLaunched=!0)}}_buildEntryOpeningPageDetails(){const e={};e.url=this.config.pageContext?.url??window.location.href;const a=this._readContextStringField("page_title");a&&(e.page_title=a);const n=this._readContextStringField("page_description");n&&(e.page_description=n);const r=this._readContextStringField("search_query");r&&(e.search_query=r);const i=this._readContextStringListField("visible_skus");i?.length&&(e.visible_skus=i);const o=this._readContextStringListField("popular_searches");o?.length&&(e.popular_searches=o);const s=this.config.pageContext?.categoryTree??this._readContextStringListField("category_path");return s?.length&&(e.category_path=s),Object.keys(e).length>0?e:void 0}_hasDedicatedContextLaunch(){const e=this.config.pageContext;return e?!!(e.pageType==="pdp"&&e.sku||this._usesGenericNonPdpLaunch()||e.pageType==="plp"&&e.skuList?.length||e.pageType==="home"):!1}_shouldPrimeContextualOpening(){return this._messages.length!==0||this._entryContextPrimed||this._contextPrimingInFlight||this._hasDedicatedContextLaunch()?!1:!!(this.config.openingMessagesByContext||this.config.openingGuidanceByContext||this.config.welcomeActionsByContext)}_maybePrimeEntryContextOpening(){const e=this._resolveOpeningContextKey();if(!this._shouldPrimeContextualOpening())return;this._entryContextPrimed=!0;const a={text:"",is_entry_context_opening:1,opening_context_key:e},n=this._buildEntryOpeningPageDetails();n&&(a.page_details=n);const r=this._resolveContextualOpeningMessage(e);r&&(a.opening_message=r);const i=this._resolveContextualOpeningGuidance(e);i&&(a.opening_guidance=i),this._sendAction({title:"",type:"user_message",payload:a},{silent:!0,preservePills:!0})}_hideDrawer(){if(!this._drawerVisible)return;this._drawer?.releaseFocus(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._drawerVisible=!1,this._openState="full";const e=this._drawer?.getElement();e&&(e.classList.add("gengage-chat-drawer--hidden"),e.style.removeProperty("--gengage-chat-keyboard-inset")),this._lastAppliedKeyboardInset=0,this._applyOpenStateClasses(),this._extendedModeManager?.setChatShown(!1),this._presentation.setShown(!1),this._drawer?.setPresentationFocus(null),this._drawer?.setFormerMessagesButtonVisible(!1)}_syncViewportState(){if(this._rootEl){if(this._isMobileViewport=window.innerWidth<=this._mobileBreakpoint,this._rootEl.classList.toggle("gengage-chat-root--mobile",this._isMobileViewport),this._launcher){const e=this._isMobileViewport&&this.config.hideMobileLauncher===!0;this._launcher.container.classList.toggle("gengage-chat-launcher--hidden-mobile",e)}this._applyOpenStateClasses()}}_isMaximizedForHostChrome(){if(!this._drawerVisible)return!1;const e=this.config.variant??"floating";return e==="inline"?!1:e==="overlay"?!0:!(!(this._drawer?.isPanelVisible()??!1)||!this._isMobileViewport&&(this._drawer?.isPanelCollapsed()??!1))}_shouldLockHostDocumentScroll(){if(!this._drawerVisible)return!1;const e=this.config.variant??"floating";return e==="inline"?!1:e==="overlay"||this._isMobileViewport?!0:this._isMaximizedForHostChrome()}_applyOpenStateClasses(){if(!this._rootEl)return;const e=this._drawerVisible&&this._isMobileViewport&&this._openState==="half",a=this._drawerVisible&&this._isMobileViewport&&this._openState==="full",n=this._isMaximizedForHostChrome();if(this._rootEl.classList.toggle("gengage-chat-root--open",this._drawerVisible),this._rootEl.classList.toggle("gengage-chat-root--mobile-half",e),this._rootEl.classList.toggle("gengage-chat-root--mobile-full",a),this._rootEl.classList.toggle("gengage-chat-root--maximized-host-chrome",n),a&&this._syncVisualVh?.(),this._backdropEl){const r=n&&(this.config.variant??"floating")!=="inline";this._backdropEl.setAttribute("aria-hidden",r?"false":"true")}this._syncHostDocumentScrollLock(),this._maybeTrackChatbotMainPaneGa()}_mainPaneExpandedForAnalytics(){const e=this._drawer;return e?.isPanelVisible()?this._isMobileViewport?!0:!e.isPanelCollapsed():!1}_maybeTrackChatbotMainPaneGa(){const e=this._mainPaneExpandedForAnalytics();e&&!this._gaPrevMainPaneExpanded&&lo(),this._gaPrevMainPaneExpanded=e}_syncHostDocumentScrollLock(){if(!(typeof document>"u")){if((this.config.variant??"floating")==="inline"){this._releaseHostDocumentScrollLock();return}this._shouldLockHostDocumentScroll()?this._applyHostDocumentScrollLock():this._releaseHostDocumentScrollLock()}}_hostScrollEventShouldReachChatScroller(e){try{const a=e.composedPath();if(a.length===0)return!0;if(!a.includes(this.root))return!1;for(const n of a){if(n===this.root)break;if(!(n instanceof HTMLElement))continue;if(this._backdropEl&&(n===this._backdropEl||this._backdropEl.contains(n)))return!1;const r=window.getComputedStyle(n),i=(r.overflowY==="auto"||r.overflowY==="scroll")&&n.scrollHeight>n.clientHeight+1,o=(r.overflowX==="auto"||r.overflowX==="scroll")&&n.scrollWidth>n.clientWidth+1;if(i||o)return!0}return!1}catch{return!1}}_applyHostDocumentScrollLock(){if(typeof document>"u"||typeof window>"u")return;const e=document.documentElement;if(!this._hostOverflowRestore){const a=document.body;this._hostOverflowRestore={htmlOverflow:e.style.overflow,bodyOverflow:a?.style.overflow??"",htmlOverscroll:e.style.overscrollBehavior,bodyOverscroll:a?.style.overscrollBehavior??""},e.dataset.gengageHostScrollLock="1",e.style.overflow="hidden",e.style.overscrollBehavior="none",a&&(a.style.overflow="hidden",a.style.overscrollBehavior="none"),this._hostScrollLockViewport={x:window.scrollX,y:window.scrollY}}this._hostScrollLockActive||(window.addEventListener("touchmove",this._preventHostDocumentTouchMove,{capture:!0,passive:!1}),window.addEventListener("wheel",this._preventHostDocumentWheel,{capture:!0,passive:!1}),document.addEventListener("touchmove",this._preventHostDocumentTouchMove,{capture:!0,passive:!1}),document.addEventListener("wheel",this._preventHostDocumentWheel,{capture:!0,passive:!1}),window.addEventListener("scroll",this._pinHostViewportScroll,{capture:!0,passive:!0}),this._hostScrollLockActive=!0)}_releaseHostDocumentScrollLock(){if(typeof document>"u")return;typeof window<"u"&&(window.removeEventListener("scroll",this._pinHostViewportScroll,{capture:!0}),window.removeEventListener("touchmove",this._preventHostDocumentTouchMove,{capture:!0}),window.removeEventListener("wheel",this._preventHostDocumentWheel,{capture:!0})),document.removeEventListener("touchmove",this._preventHostDocumentTouchMove,{capture:!0}),document.removeEventListener("wheel",this._preventHostDocumentWheel,{capture:!0}),this._hostScrollLockActive=!1,this._hostScrollLockViewport=null,this._hostScrollPinning=!1;const e=document.documentElement,a=document.body;this._hostOverflowRestore?(e.style.overflow=this._hostOverflowRestore.htmlOverflow,e.style.overscrollBehavior=this._hostOverflowRestore.htmlOverscroll,a&&(a.style.overflow=this._hostOverflowRestore.bodyOverflow,a.style.overscrollBehavior=this._hostOverflowRestore.bodyOverscroll),this._hostOverflowRestore=null):e.dataset.gengageHostScrollLock==="1"&&(e.style.removeProperty("overflow"),e.style.removeProperty("overscroll-behavior"),a?.style.removeProperty("overflow"),a?.style.removeProperty("overscroll-behavior")),delete e.dataset.gengageHostScrollLock}_handleAttachment(e){const a=qo(e);if(!a.ok){qe("gengage:global:error",{message:a.reason==="invalid_type"?this._i18n.invalidFileType:this._i18n.fileTooLarge,source:"chat"});return}this._drawer?.stageAttachment(e)}_sendMessage(e,a){if(a===void 0){if(this._contextPrimingInFlight&&Nr(e)==="directAddToCart"){this._queuedUserMessages.push({text:e});return}if(this._maybeHandleDirectAddToCartCommand(e))return}this._contextPrimingInFlight&&(this._abortAllActiveRequests(),this._contextPrimingInFlight=!1,this._queuedUserMessages=[]),this._ensureMobileFullSheetForPanel(),po(),this._messages.some(r=>r.role==="user")||ho(),Je("chat","sendMessage",{mode:this._assistantMode,hasAttachment:a!==void 0,textLength:e.length});const n=a!==void 0?{title:e,type:this._modeController.resolveAttachmentActionType(),payload:e?{text:e}:{}}:{title:e,type:"user_message",payload:e};a!==void 0?this._sendAction(n,{attachment:a}):this._sendAction(n)}_flushQueuedUserMessages(){if(this._contextPrimingInFlight||this._queuedUserMessages.length===0)return;const e=[...this._queuedUserMessages];this._queuedUserMessages=[];for(const a of e)this._sendMessage(a.text,a.attachment)}_applyUiHints(){this._modeController.applyUiHints(this._drawer,this._i18n.inputPlaceholder,()=>{this._clearChoicePrompter()})}_handleRedirectMetadata(e){return this._modeController.handleRedirect(e)}_sendAction(e,a){if(a?.skipFullSheet||this._ensureMobileFullSheetForPanel(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._lastSentAction={action:e,options:a},!this._initComplete){this._pendingActions.length<10&&this._pendingActions.push({action:e,options:a});return}if(this._clearChoicePrompter(),a?.preservePanel||_r(),!a?.preservePanel&&this._comparisonSelectMode&&e.type!=="getComparisonTable"&&(this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[]),a?.preservePanel||(this._localPanelHistory=[]),this._currentThreadId&&this._lastThreadId&&this._lastThreadId>this._currentThreadId){const _=this._currentThreadId,z=this._messages.filter(L=>L.threadId!==void 0&&L.threadId>_);this._messages=this._messages.filter(L=>!L.threadId||L.threadId<=_);for(const L of z)this._shadow?.querySelector(`[data-message-id="${Ae(L.id)}"]`)?.remove(),this._panel?.deleteSnapshotForMessage(L.id);this._panel?.pruneThreadsAfter(_),this._shadow?.querySelectorAll("[data-thread-id]")?.forEach(L=>{L instanceof HTMLElement&&L.dataset.threadId&&L.dataset.threadId>_&&L.remove()})}a?.preservePills||this._drawer?.setPills([]),this._drawer?.clearInputAreaChips();let n=!1;const r=_=>{n!==_&&(n=_,this._bridge?.send("isResponding",_))};r(!0);const i=un();this._currentThreadId=i,this._lastThreadId=i,this._panel&&!Rg.has(e.type)&&(this._panel.lastActionType=e.type);const o=a?.preservePanel===!0,s=a?.silent===!0&&a?.isContextPrime===!0,c=s&&e.type==="launchSingleProduct";let l;if(o||(this._activeRequestThreadId=i),!a?.silent&&!o&&this._drawer?.setPresentationFocus(i),!a?.silent){const _=typeof e.payload=="string"?e.payload:typeof e.payload?.text=="string"?e.payload.text:e.title,z=this._messages.length>0?this._messages[this._messages.length-1]:void 0;if(!(z!==void 0&&z.role==="user"&&z.content===_)){(!this._messages.some(O=>O.role==="user")||this._drawer?.isKvkkBannerVisible())&&(Za(this.config.accountId),this._drawer?.hideKvkkBanner());const L=this._createMessage("user",_);L.threadId=i,a?.attachment!==void 0&&(L.attachment=a.attachment),this._drawer?.addMessage(L),a?.attachment!==void 0&&this._modeController.isBeautyConsulting&&this._drawer?.setBeautyPhotoStepCard({visible:!1}),this._messages.push(L),this._persistHistory()}}const d=!a?.silent&&this._assistantMode==="shopping"&&this._hasUnavailableProductContext()&&(e.type==="user_message"||e.type==="inputText");let g=this._currentPanelSource,p=!1;const u=e.type==="user_message"||e.type==="inputText",m=()=>{p||a?.preservePanel||(g=this._currentPanelSource,p=!0)},f=()=>{if(this._drawer?.isPanelLoading()){if(!u&&g){const _=this._buildRenderContext(),z=this._renderPanelFromSource(g,_);this._drawer.setPanelContent(z),this._currentPanelSource=g}else this._drawer.clearPanel(),this._currentPanelSource=null;g=null}};e.type==="getComparisonTable"&&(this._drawer?.showPanelLoading("comparisonTable"),this._panel?.updateTopBarForLoading("comparisonTable")),!a?.silent&&!o&&this._pruneEmptyStreamingAssistantPlaceholders(),this._drawer?.showTypingIndicator();let b="";const h=this._createMessage("assistant","");h.threadId=i,h.status="streaming",a?.silent&&(h.silent=!0),this._messages.push(h),this._presentation.registerAssistantActivity(i),this._focusPresentationThread(i,"smooth",a?.silent||o),a?.preservePanel||(this._contextPrimingInFlight&&!s&&(this._contextPrimingInFlight=!1,this._queuedUserMessages=[]),this._abortAllActiveRequests());const y={middlewareUrl:this.config.middlewareUrl,...this.config.accountId?{accountId:this.config.accountId}:{},...this.config.injectorAdapter?{injectorAdapter:this.config.injectorAdapter}:{}};a?.attachment!==void 0&&(y.attachment=a.attachment);const x=this._getVisibleMessages().filter(_=>!_.frontendOnly&&_!==h&&(_.content||_.role==="assistant")).slice(-50).map(_=>({role:_.role==="user"?"user":"model",content:_.content??""})),v={outputLanguage:Mg(this.config.locale),parentUrl:window.location.href,windowWidth:String(window.innerWidth),windowHeight:String(window.innerHeight),selfUrl:"",id:this.config.session?.sessionId??"",userId:this.config.session?.userId??"",appId:this.config.accountId,threads:[],createdAt:this._chatCreatedAt,kvkkApproved:Mr(this.config.accountId),voiceEnabled:this.config.voiceEnabled??!1,threadId:i,isControlGroup:this.config.session?.abTestVariant==="control",isMobile:this._isMobileViewport};this.config.isDemoWebsite===!0&&(v.openPdpSimilars=!0),this._modeController.isShopping||(v.assistantMode=this._modeController.mode),this.config.session?.viewId!==void 0&&(v.viewId=this.config.session.viewId);const w=ac(e,{pageContext:this.config.pageContext,backendContext:this._lastBackendContext,isMobile:this._isMobileViewport,genericNonPdpLaunch:this.config.genericNonPdpLaunch}),P={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",type:w.type,locale:Mt(this.config.locale),meta:v,context:{...this._lastBackendContext??{},messages:x,session_id:this.config.session?.sessionId??""}};this.config.session?.userId!==void 0&&(P.user_id=this.config.session.userId),this.config.session?.viewId!==void 0&&(P.view_id=this.config.session.viewId),w.payload!==void 0&&(P.payload=w.payload),!d&&this.config.pageContext?.sku!==void 0&&(P.sku=this.config.pageContext.sku),!d&&this.config.pageContext?.pageType!==void 0&&(P.page_type=this.config.pageContext.pageType);let E=!1,A=!1,R=!1,j=!1,Y=!1,ie=!1;const de=$c();let I=null,H=null;const C=()=>{if(this._drawer&&!j){if(!R){this._drawer.setPanelAiZoneState("hidden");return}Y?this._drawer.setPanelAiZoneState("hidden"):this._drawer.setPanelAiZoneState("analyzing",{analyzingLabel:this._i18n.aiAnalysisAnalyzingLabel})}},M=_=>{if(!I||!this._drawer)return;const z=this._buildRenderContext();z.isStreaming=_;const L=this._renderUISpec(I,z);j=!0,this._drawer.setPanelAiZoneState("results",{resultEl:L}),I=null},G=(_,z,L)=>{if(_==="ProductGrid"||_==="CategoriesContainer"){R=!0,M(L),C();return}z!=="appendSimilars"&&z!=="append"&&(R=!1,j=!1,I=null,this._drawer?.setPanelAiZoneState("hidden"))},D=_=>(_==="ProductGrid"||_==="CategoriesContainer")&&(R||j||I!==null),B=()=>{ie||(ie=!0,this._drawer?.removeTypingIndicator(),r(!1),this._bridge?.send("loadingMessage",{text:null}))},ee=(_,z,L)=>{if(!this._drawer||!this._panel)return;const O=_.elements[_.root];if(L==="ProductGrid"&&O){const $=$a(O);if($.isConsulting){const Z=this._drawer.getPanelContentElement();if(Z&&_d(Z,$,z)){this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,this._drawer.setComparisonDockContent(null),this._currentPanelSource={kind:"spec",spec:_},this._panel.currentType=L,this._drawer.resyncPanelTopBarFromCurrentContent();return}}}this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,this._drawer.setComparisonDockContent(null),this._drawer.setPanelContent(this._renderUISpec(_,z),{preserveAiZone:D(L)}),this._currentPanelSource={kind:"spec",spec:_},this._panel.currentType=L},Q=(_,z,L,O)=>{if(!this._panel)return;_==="ProductDetailsPanel"&&e.type==="launchSingleProduct"&&this._clearUnavailableProductContext(),h.threadId&&this._panel.threads[this._panel.threads.length-1]!==h.threadId&&this._panel.threads.push(h.threadId),this._isMobileViewport&&_==="ProductGrid"&&this._ensureMobilePanelOverlayVisible();const $=this._panel.currentType??_,Z=z?.props?.panelTitle;this._panel.updateTopBar($,Z),this._panel.updateExtendedMode(_),this._isMobileViewport&&c&&this._drawer?.hideMobilePanel(),G(_,L,O)};let K=null;if(K=oc(P,{onTextChunk:(_,z,L)=>{if(!o&&i!==this._activeRequestThreadId||(b+=_,L?.skuToProductItem&&(this._skuToProductItem={...this._skuToProductItem,...L.skuToProductItem}),L?.conversationMode&&(this._conversationMode=L.conversationMode),L?.renderHint&&(h.renderHint=L.renderHint),!this._drawer))return;let O=b;const $=L?.kvkk===!0,Z=$?{fallbackToFirstBlock:!0}:void 0;if($||qa(O)){if(z){const q=this.config.accountId;if(!Mr(q)){const te=Ng(O,Z);te&&this._drawer?.showKvkkBanner(te),Za(q)}}O=Ig(O,Z),b=O}$g(O)&&B();const he=this._shadow?.querySelector(`[data-message-id="${h.id}"] .gengage-chat-bubble-text`);if(he?he.innerHTML=Ie(O):(h.content=O,h.role==="assistant"&&h.threadId&&!this._threadsWithFirstBot.has(h.threadId)&&(this._threadsWithFirstBot.add(h.threadId),this._drawer.markFirstBotMessage(h.id)),this._drawer.addMessage(h)),z)if(h.content=O,h.status="done",cn(),Hc(h))this._drawer?.updateBotMessage(h.id,O,"photo_analysis",h.photoAnalysis),h.threadId&&this._focusPresentationThread(h.threadId,"auto");else{const q=this._shadow?.querySelector(`[data-message-id="${h.id}"] .gengage-chat-bubble-text`);if(q){this._activeTypewriter?.cancel();const te=L?.productMentions?this._enrichProductMentionsWithUrls(L.productMentions):void 0;this._activeTypewriter=Fd({container:q,html:Ie(O),onTick:()=>this._drawer?.scrollToBottomIfNeeded(),onComplete:()=>{this._activeTypewriter=null,te&&te.length>0&&q&&$d({container:q,mentions:te,onProductClick:X=>{const k=X.url?.trim()??"";if(k&&ye(k)){this._handleProductNavClick({sku:X.sku,url:k,name:X.short_name});return}this._sendAction({title:X.short_name||X.sku,type:"launchSingleProduct",payload:{sku:X.sku}})}})}})}}},onUISpec:(_,z,L,O)=>{if(!o&&i!==this._activeRequestThreadId||z!=="chat")return;O&&(this._clearAssistantPanelLikeStreamClearPanel(),E=!1,H=null);const $=_.elements[_.root],Z=$?.type??"unknown";if(Dc(Z,$?.props??{},de,{drawer:this._drawer,ensureRendered:()=>this._ensureAssistantMessageRendered(h),cancelTypewriter:()=>{this._activeTypewriter?.cancel(),this._activeTypewriter=null},sendSkipMessage:()=>this._sendMessage(this._i18n.beautyPhotoStepSkipMessage),isStreamDone:()=>Y},h)){Z==="PhotoAnalysisCard"&&h.threadId&&this._focusPresentationThread(h.threadId,"auto");return}const he=oa($),q=this.config.productDetailsExtended!==!0&&(Z==="ProductDetailsPanel"||he);q&&!O&&(this._clearAssistantPanelLikeStreamClearPanel(),E=!1);const te=Z==="ProductDetailsPanel"&&L!=="panel"?"panel":L,X=this._buildRenderContext();if(X.isStreaming=!0,Z==="ComparisonTable"){const N=$?.props?.products;ro(Array.isArray(N)?N.length:0)}if(Z==="ProductGrid"){const N=$?.children?.length??0;so(void 0,N)}const k=te==="panel"&&this._panel?this._panel.toPanelSpec(_):_;if(te==="panel"&&this._panel&&!q&&Z==="ProductGrid"&&$){const N=$a($);if(N.isConsulting&&!xd(N)){H=_;return}N.isConsulting&&(H=null)}if(Fg($)&&B(),te==="panel"&&this._panel&&!q){const N=!A;A=!0;const re=$?.props?.replacePanel===!0,le=$?.props?.rankingState,W=re||le==="pending"||le==="final"?"replace":eg({componentType:Z,similarsAppend:$?.props?.similarsAppend===!0,currentPanelType:this._panel.currentType,hasPanelContent:this._drawer?.hasPanelContent()??!1,isPanelLoading:this._drawer?.isPanelLoading()??!1,isFirstPanelContentInStream:N});X.panelProductListHeading=void 0,Z==="ProductGrid"&&(W==="appendSimilars"?X.panelProductListHeading=this._i18n.similarProductsLabel??"Similar Products":this._applyPanelListHeadingToContext(X,{kind:"spec",spec:k})),W==="appendSimilars"?this._appendSimilarsToPanel(k,X):W==="append"?(this._drawer?.appendPanelContent(this._renderUISpec(k,X)),this._comparisonSelectMode&&this._refreshComparisonUI()):ee(k,X,Z),Q(Z,$,W,!0)}if(Z==="ProductDetailsPanel"&&te==="panel"&&(!h.silent||c)){const N=$?.props?.product;if(N){c&&(l=N),this._currentInlineProductSummaryRecord=N;const re={root:"root",elements:{root:{type:"ProductSummaryCard",props:{product:N}}}},le=this._shadow?.querySelector(".gengage-chat-messages");if(le){const W=this._renderUISpec(re,X);h.threadId&&(W.dataset.threadId=h.threadId);const ue=this._shadow?.querySelector(`[data-message-id="${h.id}"]`);ue&&ue.parentNode===le?ue.after(W):le.appendChild(W),this._scrollInlineIntoView(W,h.threadId),this._drawer?.refreshPresentationCollapsed(),A=!0}}}const J=Z==="AITopPicks"||Z==="AIGroupingCards",oe=Z==="InlineQuestionButtons",ge=Z==="ActionButtons"?$?.props?.buttons:void 0,fe=Z==="ActionButtons"&&this._modeController.mode!=="shopping"&&Array.isArray(ge)&&ge.length>0&&ge.every(N=>N.action?.type==="inputText");let Le=!1,Ee=!1;if(q&&he&&(X.panelProductListHeading=this._i18n.similarProductsLabel??"Similar Products"),J&&(!h.silent||s))if(h.threadId&&this._rememberPanelAiSpec(h.threadId,_),R){const N=this._renderUISpec(_,X);j=!0,this._drawer?.setPanelAiZoneState("results",{resultEl:N}),Le=!0,I=null}else I=_,Ee=!0;oe&&(this._drawer?.setInputAreaChips([]),this._drawer?.setPills([]));const F=s&&(Z==="GroundingReviewCard"||J||Z==="InlineQuestionButtons");if(!J&&(!h.silent||F)&&(te!=="panel"||Z==="ProductCard"||q&&Z==="ProductGrid"&&!he)&&(Z!=="ActionButtons"||fe)&&!Le&&!(Ee&&J)){const N=this._shadow?.querySelector(".gengage-chat-messages");if(N){const re=this._renderUISpec(_,X);h.threadId&&(re.dataset.threadId=h.threadId),N.appendChild(re),this._scrollInlineIntoView(re,h.threadId),this._drawer?.refreshPresentationCollapsed(),q&&Z==="ProductGrid"&&(A=!0)}}if((Z==="ProductGrid"||Z==="ProductCard")&&h.threadId){const N=$?.children??[],re=Z==="ProductGrid"?N.map(le=>_.elements[le]?.props?.product).filter(Boolean):[$?.props?.product].filter(Boolean);for(const le of re){const W=le.sku;W&&this._viewedProductSkus.add(W)}}if(Z==="ProductGrid"||Z==="ProductDetailsPanel"){const N=(Z==="ProductGrid"?($?.children??[]).map(re=>_.elements[re]?.props?.product).filter(Boolean):[$?.props?.product??$?.props].filter(Boolean)).map(re=>re.imageUrl).filter(re=>typeof re=="string").slice(0,5);N.length>0&&this._bridge?.send("previewImages",{images:N})}const U=$?.children?.length??0;if(Z==="ProductGrid"&&te==="panel"&&!q&&U>1&&!this._isMobileViewport&&!this._modeController.isChoicePrompterHidden&&!this._comparisonSelectMode&&!Zd(this._currentThreadId??"")&&(this._clearChoicePrompter(),this._choicePrompterEl=qd({heading:this._i18n.choicePrompterHeading,suggestion:this._i18n.choicePrompterSuggestion,ctaLabel:this._i18n.choicePrompterCta,threadId:this._currentThreadId??"",dismissAriaLabel:this._i18n.dismissAriaLabel,onCtaClick:()=>{this._comparisonSelectMode=!0,this._choicePrompterEl=null,this._refreshComparisonUI()},onDismiss:()=>{this._choicePrompterEl=null}}),this._mountChoicePrompter()),Z==="ActionButtons"){const N=$?.props?.buttons;if(N&&N.length>0&&!fe){const re=[],le=[];for(const W of N)if(Ud(W)){const ue={label:W.label,action:W.action};W.icon&&(ue.icon=W.icon),re.push(ue)}else le.push(W);re.length>0&&this._drawer?.setInputAreaChips(re.map(W=>({label:W.label,onAction:()=>this._sendAction(W.action),...W.icon?{icon:W.icon}:{}}))),le.length>0&&this._drawer?.setPills(le.map(W=>{const ue={label:W.label,onAction:()=>this._sendAction(W.action)};return W.icon&&(ue.icon=W.icon),W.image&&(ue.image=W.image),W.description&&(ue.description=W.description),ue}))}}C(),h.uiSpec=_},onAction:_=>{if(!(!o&&i!==this._activeRequestThreadId)&&_.type==="action"){const z={};this.config.actionHandling?.unknownActionPolicy!==void 0&&(z.unknownActionPolicy=this.config.actionHandling.unknownActionPolicy),this.config.actionHandling?.allowScriptCall!==void 0&&(z.allowScriptCall=this.config.actionHandling.allowScriptCall),Do(_,{openChat:()=>this.open(),navigate:L=>{if(ye(L.url)){if(L.newTab){this._bridge?.send("navigate",L),window.open(L.url,"_blank","noopener,noreferrer");return}if(this._isSameOriginUrl(L.url)){this._navigateAssistantDriven(L.url,L);return}this._bridge?.send("navigate",L),window.location.href=L.url}},saveSession:L=>this.saveSession(L.sessionId,L.sku),addToCart:L=>{this._runChatAddToCartFlow(L)},scriptCall:L=>{qe("gengage:chat:script-call",L),this.config.onScriptCall?.(L)}},z)}},onMetadata:_=>{if(!(!o&&i!==this._activeRequestThreadId)&&_.type==="metadata"&&_.meta){if(_.meta.panel!==void 0||_.meta.messages!==void 0||_.meta.message_id!==void 0){this._lastBackendContext=_.meta;const z=Be(_.meta.panel);z&&(this._modeController.updateFromContext(z),this._applyUiHints())}if(_.meta.panelLoading){const z=typeof _.meta.panelPendingType=="string"?_.meta.panelPendingType:void 0;this.config.productDetailsExtended!==!0&&(z==="productDetails"||z==="productDetailsSimilars")||(E=!0,A=!1,m(),this._panel&&(this._panel.currentType=null),this._drawer?.showPanelLoading(z),this._isMobileViewport&&z==="productList"&&this._ensureMobilePanelOverlayVisible(),z&&this._panel?.updateTopBarForLoading(z))}if(_.meta.voice){const z=new CustomEvent("gengage:chat:voice",{detail:{payload:_.meta.voice},bubbles:!1,cancelable:!0}),L=window.dispatchEvent(z);if(uo(),L){const O=_.meta.voice;O.audio_base64&&(this._activeTtsHandle?.stop(),this._activeTtsHandle=zd(O.audio_base64,O.content_type??"audio/ogg"))}}if((_.meta.redirectTarget||_.meta.redirect)&&(qe("gengage:chat:redirect",{target:_.meta.redirectTarget??null,payload:_.meta.redirect??null}),Je("redirect","redirect dispatched",{target:_.meta.redirectTarget??null}),this._handleRedirectMetadata(_.meta.redirect)&&this._applyUiHints()),_.meta.loading){const z=Array.isArray(_.meta.thinkingMessages)?_.meta.thinkingMessages.filter(O=>typeof O=="string"):[],L=typeof _.meta.loadingText=="string"?_.meta.loadingText:void 0;if(z.length>0){const O=L&&this._modeController.shouldCondenseThinking()?[...z.slice(0,2),L]:z;this._drawer?.setThinkingSteps(O)}typeof L=="string"&&L.length>0&&(this._drawer?.addThinkingStep(L),ie||this._bridge?.send("loadingMessage",{text:L})),ie&&!Y&&this._drawer?.resumeTypingIndicator()}qe("gengage:chat:metadata",{payload:_.meta})}},onError:_=>{if(K&&this._abortControllers.delete(K),!o&&i!==this._activeRequestThreadId)return;Y=!0,this._activeTypewriter?.cancel(),this._activeTypewriter=null,C(),I=null,H=null,r(!1),this._bridge?.send("loadingMessage",{text:null}),this._drawer?.removeTypingIndicator(),this._drawer?.clearInputAreaChips(),jc(de,{drawer:this._drawer,ensureRendered:()=>{},cancelTypewriter:()=>{},sendSkipMessage:()=>this._sendMessage(this._i18n.beautyPhotoStepSkipMessage),isStreamDone:()=>!0});const z=A;E&&!A&&f(),E=!1,this._maybeHidePreservedMobilePanel(e.type,z),A=!1;const L=h.content!=null&&h.content.length>0||b.length>0||z,O=h.silent||L,$=typeof navigator<"u"&&navigator.onLine===!1&&hn(_),Z=()=>{this._shadow?.querySelector(`[data-message-id="${Ae(h.id)}"]`)?.remove();const te=this._messages.indexOf(h);te>=0&&this._messages.splice(te,1)};let he=!1;const q=()=>{if($)return;this.emit("error",_);const te=_.message;te===this._lastErrorMessage?this._consecutiveErrorCount++:(this._consecutiveErrorCount=1,this._lastErrorMessage=te);const X=_.message.trim(),k=X.length>0?X:this._i18n.errorMessage,J=e,oe=a,ge={onRetry:()=>{this._sendAction(J,oe)},onNewQuestion:()=>{this._drawer?.focusInput()}};if(this._consecutiveErrorCount>=2){Z(),he=!0,this._drawer?.showErrorWithRecovery(this._i18n.accountInactiveMessage,ge);return}if(Tg(_,k)){Z(),he=!0,this._drawer?.showErrorWithRecovery(k,ge);return}h.content=k,h.status="done";const fe=Ie(k.replace(/\r\n/g,`
|
|
547
547
|
`).split(`
|
|
548
|
-
`).join("<br />"));this._ensureAssistantMessageRendered(h),this._drawer?.updateBotMessage(h.id,me),this._drawer?.showRecoveryPillsOnly(K)};if(s&&!I)if(c||this._hasUnavailableProductContext()){this._drawer?.setPills([]);const Q=this._i18n.productNotFoundMessage;h.content=Q,h.status="done",this._ensureAssistantMessageRendered(h),this._drawer?.updateBotMessage(h.id,Q),this._markUnavailableProductContext()}else h.status="done";else if(O)this._drawer?.setPills([]),h.silent||ne();else if(ne(),U)return;s&&(this._contextPrimingInFlight=!1,this._flushQueuedUserMessages()),!Z&&h.status==="streaming"&&(h.status="error")},onDone:()=>{if(Y&&this._abortControllers.delete(Y),!o&&i!==this._activeRequestThreadId)return;if(X=!0,F&&this._panel&&this._drawer){const U=this._buildRenderContext();U.isStreaming=!1;const q=F.elements[F.root],Z=this._panel.toPanelSpec(F);this._applyPanelListHeadingToContext(U,{kind:"spec",spec:Z});const ne=q?.type??"ProductGrid";ce(Z,U,ne),ee(ne,q,"replace",!1),A=!0}F=null,L&&B(!1),k(),!o&&i===this._activeRequestThreadId&&(this._activeRequestThreadId=null),this._consecutiveErrorCount=0,this._lastErrorMessage="",r(!1),this._bridge?.send("loadingMessage",{text:null}),this._drawer?.removeTypingIndicator(),Bc(pe,{drawer:this._drawer,ensureRendered:()=>{},cancelTypewriter:()=>{},sendSkipMessage:()=>this._sendMessage(this._i18n.beautyPhotoStepSkipMessage),streamDone:!0});const y=A;if(P&&!A&&b(),P=!1,this._maybeHidePreservedMobilePanel(t.type,y),c&&!m&&!y){const U=this._i18n.productNotFoundMessage;h.content=U,this._ensureAssistantMessageRendered(h),this._drawer?.updateBotMessage(h.id,U),this._markUnavailableProductContext()}if(A=!1,s){this._contextPrimingInFlight=!1;const U=this._queuedUserMessages.length>0;this._flushQueuedUserMessages(),!U&&c&&this._ensurePdpPrimeSuggestedUiIfNeeded(l)}h.status==="streaming"&&(h.status="done",rn()),this._presentation.finalizeAssistantGroup(i);const z=this._shadow?.querySelector(".gengage-chat-comparison-toggle-btn--hidden");z&&(z.classList.remove("gengage-chat-comparison-toggle-btn--hidden"),z.classList.add("gengage-chat-comparison-toggle-btn--reveal")),this.emit("message",h);const I=this._currentPanelSource,O=I?this._clonePanelSourceForHistory(I):null;this._panel?.snapshotForMessage(h.id,O?{source:O,threadId:h.threadId,rebuild:()=>{const U=this._buildRenderContext();return this._renderPanelFromSource(O,U)}}:void 0),this._maybeAddPanelRestoreMessage(h),this._persistConversationState()}},C),this._abortControllers.add(Y),!a?.silent&&!o){const y=Y;this._drawer?.showStopButton(()=>{y.abort(),this._abortControllers.delete(y),this._drawer?.removeTypingIndicator(),r(!1),this._bridge?.send("loadingMessage",{text:null}),h.status==="streaming"&&(h.status="done")})}}_getVisibleMessages(){const t=this._messages.filter(n=>!n.silent);if(!this._currentThreadId)return t;const a=this._currentThreadId;return t.filter(n=>!n.threadId||n.threadId<=a)}_appendSimilarsToPanel(t,a){if(!this._drawer)return;const n=this._drawer.getPanelContentElement();if(!n)return;a.panelProductListHeading=this._i18n.similarProductsLabel??"Similar Products";const r=this._renderUISpec(t,a);r.classList.add("gengage-chat-product-details-similars"),n.appendChild(r),this._mergePanelSourceWithSimilars(t)}_coerceSkuKey(t){return typeof t=="string"?t.trim():typeof t=="number"&&Number.isFinite(t)?String(t).trim():""}_productSkuKey(t){return t?this._coerceSkuKey(t.sku):""}_pdpPageContextSkuKey(){const t=this.config.pageContext?.pageType;return typeof t!="string"||t.toLowerCase()!=="pdp"?null:this._coerceSkuKey(this.config.pageContext?.sku)||null}_productDetailsRecordFromSpec(t){if(!t)return null;const a=t.elements[t.root];if(!a||a.type!=="ProductDetailsPanel")return null;const n=ze(a.props);return ze(n?.product)??n??null}_productGridRecordFromSpec(t,a){if(!t)return null;const n=t.elements[t.root];if(!n||n.type!=="ProductGrid")return null;const r=Object.values(t.elements).filter(o=>o.type==="ProductCard").map(o=>ze(o.props?.product)).filter(o=>o!==null);if(r.length===0)return null;const i=this._coerceSkuKey(a);if(i){const o=r.find(s=>this._productRecordMatchesSku(s,i));if(o)return o}return r.length===1?r[0]:null}_productRecordMatchesSku(t,a){if(this._coerceSkuKey(t.sku)===a||this._coerceSkuKey(t.group_id??t.groupId)===a)return!0;const n=ze(t.extras);return this._coerceSkuKey(n?.group_id??n?.groupId)===a}_getCurrentPanelProductRecord(){const t=this._currentPanelSource;return t?t.kind==="spec"?this._productDetailsRecordFromSpec(t.spec):t.kind==="productDetailsWithSimilars"?this._productDetailsRecordFromSpec(t.pdpSpec):null:null}_getCurrentPanelProductGridRecord(t){const a=this._currentPanelSource;return a?a.kind==="spec"?this._productGridRecordFromSpec(a.spec,t):a.kind==="productDetailsWithSimilars"?this._productGridRecordFromSpec(a.similarsSpec,t):null:null}_panelSourceFromMessage(t){const a=t?.uiSpec;if(!a)return null;const n=a.elements[a.root];return!n||Ar.has(n.type)?null:{kind:"spec",spec:a}}_getLatestProductDetailsRecord(){for(let t=this._messages.length-1;t>=0;t-=1){const a=this._productDetailsRecordFromSpec(this._messages[t]?.uiSpec);if(a)return a}return null}_getLatestProductGridRecord(t){for(let a=this._messages.length-1;a>=0;a-=1){const n=this._productGridRecordFromSpec(this._messages[a]?.uiSpec,t);if(n)return n}return null}_getInlinePdpProductRecord(){const t=this._pdpPageContextSkuKey();if(!t)return null;const a=this._currentInlineProductSummaryRecord;return a&&this._coerceSkuKey(a.sku)===t?a:null}_getCurrentPanelProductSku(){const t=this._getCurrentPanelProductRecord();return t&&this._coerceSkuKey(t.sku)||null}_activeSkuForProductSummaryClick(){const t=this._getCurrentPanelProductSku();return t||this._pdpPageContextSkuKey()}_mergePanelSourceWithSimilars(t){const a=this._currentPanelSource;a?.kind==="spec"&&this._panel?.currentType==="ProductDetailsPanel"&&(this._currentPanelSource={kind:"productDetailsWithSimilars",pdpSpec:a.spec,similarsSpec:t})}_renderProductDetailsWithSimilars(t,a,n){this._applyPanelListHeadingToContext(n,{kind:"productDetailsWithSimilars",pdpSpec:t,similarsSpec:a});const r=this._renderUISpec(t,n),i=this._renderUISpec(a,n);return i.classList.add("gengage-chat-product-details-similars"),r.appendChild(i),r}_applyPanelListHeadingToContext(t,a){if(t.panelProductListHeading=void 0,!!this._panel){if(a.kind==="spec"){const n=a.spec.elements[a.spec.root];n?.type==="ProductGrid"&&(n.children?.length??0)>0&&(t.panelProductListHeading=this._panel.titleForComponent("ProductGrid",n.props?.panelTitle??void 0))}else if(a.kind==="productDetailsWithSimilars"){const n=a.similarsSpec.elements[a.similarsSpec.root];n?.type==="ProductGrid"&&(n.children?.length??0)>0&&(t.panelProductListHeading=this._i18n.similarProductsLabel??"Similar Products")}}}_clonePanelSourceForHistory(t){try{return structuredClone(t)}catch{return t}}_renderPanelFromSource(t,a){return this._applyPanelListHeadingToContext(a,t),t.kind==="favorites"?this._buildFavoritesPageEl():t.kind==="history"?this._buildHistoryPageEl():t.kind==="productDetailsWithSimilars"?this._renderProductDetailsWithSimilars(t.pdpSpec,t.similarsSpec,a):this._renderUISpec(t.spec,a)}_handleRollback(t){const a=this._messages.find(n=>n.id===t);a?.threadId&&this._rollbackToThread(a.threadId)}_ensureMobileFullSheetForPanel(){!this._drawerVisible||!this._isMobileViewport||this._openState==="full"||(this._openState="full",this._applyOpenStateClasses())}_ensureMobilePanelOverlayVisible(){!this._drawerVisible||!this._isMobileViewport||(this._ensureMobileFullSheetForPanel(),this._drawer?.showMobilePanel())}_ensurePdpPrimeSuggestedUiIfNeeded(t){const a=this._resolvePdpPrimeSku(t);if(!a||!this._drawer||this._hasUnavailableProductContext())return;const n=this._buildPdpPrimeFindSimilarPayload(a,t),r=t!==void 0?this._productNumber(t,"review_count","reviewCount"):void 0,i="product",o=this._resolveContextualOpeningActions(i);if(o.length>0){this._drawer.setInputAreaChips(o.map(s=>({label:s.title,onAction:()=>this._sendAction(this._resolveContextualOpeningAction(s,i)),...s.icon?{icon:s.icon}:{}})));return}this._drawer.setInputAreaChips([...this.config.hideUserReviews!==!0&&r&&r>0?[{label:this._i18n.groundingReviewCta,icon:"review",onAction:()=>this._sendAction({title:this._i18n.customerReviewsTitle,type:"reviewSummary",payload:{sku:a}})}]:[],{label:this._i18n.findSimilarLabel,icon:"similar",onAction:()=>this._sendAction({title:this._i18n.findSimilarLabel,type:"findSimilar",payload:n})}])}_resolvePdpPrimeSku(t){return this.config.pageContext?.sku?this.config.pageContext.sku:t!==void 0?this._productString(t,"sku","id"):void 0}_buildPdpPrimeFindSimilarPayload(t,a){const n={sku:t};if(a===void 0)return n;const r=this._productString(a,"name","productName","product_name","title");return r!==void 0&&(n.product_name=r),n}_productString(t,...a){for(const n of a){const r=t[n];if(typeof r=="string"&&r.trim().length>0)return r.trim()}}_productNumber(t,...a){for(const n of a){const r=t[n];if(typeof r=="number"&&Number.isFinite(r))return r;if(typeof r=="string"&&r.trim().length>0){const i=Number(r);if(Number.isFinite(i))return i}}}_rollbackToThread(t){if(this._panel&&this._panel.threads.length>0&&!this._panel.threads.includes(t)&&!this._messages.some(s=>s.threadId===t))return;this._currentThreadId=t,this._extendedModeManager?.setHiddenByUser(!1),this._lastThreadId!=null&&t===this._lastThreadId?(this._presentation.setFocusedThreadId(t),this._drawer?.setPresentationFocus(t)):(this._presentation.releaseFocusedThread(),this._drawer?.setPresentationFocus(null)),this._drawer?.setFormerMessagesButtonVisible(!1);for(const s of this._messages){const c=this._shadow?.querySelector(`[data-message-id="${Pe(s.id)}"]`);c&&(s.threadId&&s.threadId>t?c.classList.add("gengage-chat-bubble--hidden"):c.classList.remove("gengage-chat-bubble--hidden"))}this._shadow?.querySelectorAll("[data-thread-id]").forEach(s=>{s instanceof HTMLElement&&s.dataset.threadId&&s.dataset.threadId>t?s.classList.add("gengage-chat-bubble--hidden"):s instanceof HTMLElement&&s.classList.remove("gengage-chat-bubble--hidden")});const a=this._messages.find(s=>s.role==="assistant"&&s.threadId===t),n=this._panel?.threads.includes(t)??!1,r=(a?this._panel?.sourceForMessage(a.id):null)??this._panel?.sourceForThread(t)??(n?this._panelSourceFromMessage(a):null);let i=a?this._panel?.restoreForMessage(a.id)??!1:!1;if(!i&&r){const s=this._buildRenderContext();this._drawer?.setPanelContent(this._renderPanelFromSource(r,s)),this._currentPanelSource=r,this._panel&&(this._panel.currentType=this._panel.componentTypeForSource(r)),i=!0}i||(this._drawer?.clearPanel(),this._currentPanelSource=null,this._drawer?.setPanelAiZoneState("hidden")),i&&(this._currentPanelSource=r,this._restorePanelAiZoneForThread(t));const o=this._panel.currentType??"";if(this._panel?.updateTopBar(o),this._drawer?.setPills([]),requestAnimationFrame(()=>{this._drawer?.scrollThreadIntoView(t,"auto")}),this._session?.db&&this.config.session?.sessionId){const s=this.config.session.sessionId;(async()=>{try{const c=await this._session?.db?.loadContext(s,t);c&&(this._lastBackendContext=c.context),await this._session?.db?.deleteContextsAfterThread(s,t)}catch{}})()}this._persistHistoryToLocalStorage()}_persistHistoryToLocalStorage(){if(!this._historyStorage)return;const t=this._activeHistorySessionId??this._historyStorage.findSessionId(this.config.session?.sessionId??"",this._chatCreatedAt)??this._historyStorage.createHistoryId(),a=this._historyStorage.saveSession({historyId:t,userId:this.config.session?.userId??"",appId:this.config.accountId,sourceSessionId:this.config.session?.sessionId??"",messages:this._messages,currentThreadId:this._currentThreadId,lastThreadId:this._lastThreadId,chatCreatedAt:this._chatCreatedAt,panelSnapshots:this._panel?.snapshots??new Map,panelSnapshotTypes:this._panel?.snapshotTypes??new Map,panelSnapshotSources:this._panel?.snapshotSourceMap()??new Map,panelThreads:this._panel?.threads??[],panelAiSpecByThread:this._panelAiSpecByThread,lastBackendContext:this._lastBackendContext,pageType:this.config.pageContext?.pageType,sku:this.config.pageContext?.sku,attachmentPlaceholder:this._i18n.historyImageAttachmentLabel});a&&(this._activeHistorySessionId=a.id)}_persistConversationState(){this._persistHistoryToLocalStorage(),this._persistToIndexedDB().catch(()=>{})}async _persistConversationStateForNavigation(){this._persistHistoryToLocalStorage(),await this._persistToIndexedDB()}_formatHistoryTimestamp(t){try{return new Intl.DateTimeFormat(At(this.config.locale),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(new Date(t))}catch{return t}}_resolvePanelRestorePreviewLabel(t){for(let a=t.messages.length-1;a>=0;a--){const n=t.messages[a];if(!n||n.silent||!n.uiSpec)continue;const r=n.uiSpec.elements[n.uiSpec.root];if(r?.type!=="PanelRestoreCard")continue;const i=r.props??{},o=typeof i.ctaLabel=="string"?i.ctaLabel.trim():"";if(o.length>0)return o}return null}_resolveHistoryPreviewText(t){const a=(t.preview||"").trim();if(a&&a!=="PanelRestoreCard")return a;if(!this._historyStorage)return a||t.title;const n=this._historyStorage.loadSession(t.id);if(!n)return a||t.title;const r=this._resolvePanelRestorePreviewLabel(n);return r||a||t.title}_openHistoryPanel(t=!0){if(this._drawer){if(t&&this._currentPanelSource&&this._currentPanelSource.kind!=="history"){const a=this._drawer.getPanelTopBarTitle()??"";this._localPanelHistory.push({source:this._currentPanelSource,title:a}),this._localPanelHistory.length>ut._MAX_PANEL_HISTORY&&this._localPanelHistory.shift()}this._drawer.setPanelContent(this._buildHistoryPageEl()),this._currentPanelSource={kind:"history"},this._drawer.updatePanelTopBar(!0,!1,this._i18n.historyPageTitle)}}_buildHistoryPageEl(){const t=document.createElement("div");t.className="gengage-chat-history-page";const a=document.createElement("div");a.className="gengage-chat-history-actions";const n=document.createElement("button");n.type="button",n.className="gengage-chat-history-new-chat",n.textContent=this._i18n.newChatButton,n.addEventListener("click",()=>this._startNewChat()),a.appendChild(n),t.appendChild(a);const r=this._historyStorage?.listSessions()??[];if(r.length===0){const o=document.createElement("div");o.className="gengage-chat-history-empty",o.innerHTML='<div class="gengage-chat-history-empty-icon" aria-hidden="true"><svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8v5l3 2"/><path d="M3.05 11A9 9 0 1 1 5 17.5"/><path d="M3 8v4h4"/></svg></div>';const s=document.createElement("p");return s.textContent=this._i18n.emptyHistoryMessage,o.appendChild(s),t.appendChild(o),t}const i=document.createElement("div");i.className="gengage-chat-history-list";for(const o of r){const s=document.createElement("div");s.className="gengage-chat-history-item",o.id===this._activeHistorySessionId&&s.classList.add("gengage-chat-history-item--active");const c=document.createElement("button");c.type="button",c.className="gengage-chat-history-open",c.title=o.title,c.setAttribute("aria-label",`${this._i18n.historyAriaLabel}: ${o.title}`),c.addEventListener("click",()=>{this._loadHistorySession(o.id)});const l=document.createElement("div");l.className="gengage-chat-history-item-title-row";const g=document.createElement("span");g.className="gengage-chat-history-item-title",g.textContent=o.title,l.appendChild(g);const d=document.createElement("span");d.className="gengage-chat-history-item-meta",d.textContent=this._formatHistoryTimestamp(o.updatedAt),l.appendChild(d),c.appendChild(l);const p=document.createElement("p");p.className="gengage-chat-history-item-preview",p.textContent=this._resolveHistoryPreviewText(o),c.appendChild(p),s.appendChild(c);const u=document.createElement("button");u.type="button",u.className="gengage-chat-history-delete",u.setAttribute("aria-label",`${this._i18n.historyDeleteLabel}: ${o.title}`),u.title=this._i18n.historyDeleteLabel,u.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h18"/><path d="M8 6V4h8v2"/><path d="M19 6l-1 14H6L5 6"/><path d="M10 11v6"/><path d="M14 11v6"/></svg>',u.addEventListener("click",f=>{f.preventDefault(),f.stopPropagation(),window.confirm(this._i18n.historyDeleteConfirmMessage)&&this._deleteHistorySession(o.id)}),s.appendChild(u),i.appendChild(s)}return t.appendChild(i),t}_deleteHistorySession(t){if(!this._historyStorage)return;const a=t===this._activeHistorySessionId;if(this._historyStorage.deleteSession(t),a){this._activeHistorySessionId=null,this._startNewChat();return}this._currentPanelSource?.kind==="history"&&this._openHistoryPanel(!1)}async _loadHistorySession(t){const a=this._historyStorage?.loadSession(t);a&&(this._clearConversationState(!1),this._activeHistorySessionId=a.id,await this._restoreFromHistoryRecord(a))}async _restoreFromHistoryRecord(t){this._drawer?.lockScrollForRestore(),t.messages.length>0&&this._markCurrentContextLaunchHandled(),this._currentThreadId=t.currentThreadId,this._lastThreadId=t.lastThreadId,this._currentThreadId&&this._lastThreadId&&this._currentThreadId>this._lastThreadId&&(this._currentThreadId=this._lastThreadId),this._chatCreatedAt=t.createdAt,this._lastBackendContext=t.lastBackendContext,t.panelThreads&&(this._panel.threads=[...t.panelThreads]);const a=this._panelThreadIdByMessageId(t.messages);if(t.panelSnapshotHtml)for(const[r,i]of Object.entries(t.panelSnapshotHtml)){const o=document.createElement("div");o.innerHTML=Ie(i),this._panel.snapshots.set(r,o)}if(t.panelSnapshotTypes)for(const[r,i]of Object.entries(t.panelSnapshotTypes))this._panel.snapshotTypes.set(r,i);this._restorePanelSnapshotSources(t.panelSnapshotSources,a),t.panelAiSpecByThread&&this._restorePanelAiSpecMap(t.panelAiSpecByThread);let n=0;for(const r of t.messages){const i={id:r.id,role:r.role,timestamp:r.timestamp,status:r.status};if(r.threadId!==void 0&&(i.threadId=r.threadId),r.content!==void 0&&(i.content=r.content),r.uiSpec!==void 0&&(i.uiSpec=r.uiSpec),r.frontendOnly&&(i.frontendOnly=!0),r.silent&&(i.silent=!0),r.renderHint!==void 0&&(i.renderHint=r.renderHint),r.photoAnalysis!==void 0&&(i.photoAnalysis=r.photoAnalysis),this._messages.push(i),!i.silent){const s=i.role!=="assistant"||!!i.content||!!i.attachment||this._isMessageHostedUISpec(i.uiSpec);i.role==="assistant"&&i.threadId&&s&&!this._threadsWithFirstBot.has(i.threadId)&&(this._threadsWithFirstBot.add(i.threadId),this._drawer?.markFirstBotMessage(i.id)),this._drawer?.addMessage(i),i.role==="assistant"&&i.threadId&&i.uiSpec&&(this._hydrateRestoredUISpecMetadata(i.id,i.threadId,i.uiSpec)||this._restoreInlineUISpec(i))}const o=parseInt(r.id.replace("msg-",""),10);!isNaN(o)&&o>n&&(n=o)}if(n>this._currentMessageId&&(this._currentMessageId=n),this._currentThreadId){const r=[...this._messages].reverse().find(i=>i.role==="assistant"&&i.threadId===this._currentThreadId&&!i.silent);r&&(this._panel.snapshots.has(r.id)||this._panel?.sourceForMessage(r.id))&&(this._panel?.restoreForMessage(r.id)??!1)&&(this._currentPanelSource=this._panel?.sourceForMessage(r.id)??this._panelSourceFromMessage(r),this._restorePanelAiZoneForThread(this._currentThreadId))}if(this._currentThreadId){const r=this._currentThreadId;for(const i of this._messages)i.threadId&&i.threadId>r&&this._shadow?.querySelector(`[data-message-id="${Pe(i.id)}"]`)?.classList.add("gengage-chat-bubble--hidden");this._shadow?.querySelectorAll("[data-thread-id]").forEach(i=>{i instanceof HTMLElement&&i.dataset.threadId&&i.dataset.threadId>r&&i.classList.add("gengage-chat-bubble--hidden")})}this._presentation.releaseFocusedThread(),this._drawer?.setPresentationFocus(null),this._isMobileViewport&&this._drawer?.hasPanelContent()&&this._drawer.hideMobilePanel(),setTimeout(()=>{this._drawer?.scrollToLastThread()},550)}async _persistToIndexedDB(){!this._session||!this.config.session?.sessionId||await this._session.persist({userId:this.config.session.userId??"",appId:this.config.accountId,sessionId:this.config.session.sessionId,messages:this._messages,currentThreadId:this._currentThreadId,lastThreadId:this._lastThreadId,chatCreatedAt:this._chatCreatedAt,panelSnapshots:this._panel?.snapshots??new Map,panelSnapshotTypes:this._panel?.snapshotTypes??new Map,panelSnapshotSources:this._panel?.snapshotSourceMap()??new Map,panelThreads:this._panel?.threads??[],panelAiSpecByThread:this._panelAiSpecByThread,lastBackendContext:this._lastBackendContext,sku:this.config.pageContext?.sku})}_isSameOriginUrl(t){try{return t.trim()?new URL(t,window.location.href).origin===window.location.origin:!1}catch{return!1}}_enrichProductMentionsWithUrls(t){return t.map(a=>{const n=a.url?.trim();if(n&&ve(n))return n===a.url?a:{...a,url:n};const r=this._productMentionUrlForSku(a.sku);return r?{...a,url:r}:a})}_productMentionUrlForSku(t){const a=t.trim(),n=(this._skuToProductItem[t]??(a?this._skuToProductItem[a]:void 0))?.url;if(typeof n!="string")return;const r=n.trim();return r&&ve(r)?r:void 0}_handleProductNavClick(t){const a=this.config.isDemoWebsite===!0,n=!a&&this._isSameOriginUrl(t.url);if(!n){const o=this._coerceSkuKey(t.sku),s=this._activeSkuForProductSummaryClick();if(o&&s&&o===s)return}if(n){De("gengage:similar:product-click",{sku:t.sku,url:t.url,sessionId:this.config.session?.sessionId??null,...t.name!==void 0&&t.name!==""?{productName:t.name}:{}}),this._saveSessionAndOpenURL(t.url);return}const r=t.url.trim();if(!a&&this.config.onProductNavigate!==void 0&&r.length>0&&ve(r)){va(t.sku),this.config.onProductNavigate(r,t.sku,this.config.session?.sessionId??null);return}va(t.sku);const i=t.name?.trim()?t.name.trim():t.sku;this._sendAction({title:i,type:"launchSingleProduct",payload:{sku:t.sku}})}_markUnavailableProductContext(){this._productContextUnavailableSku=this.config.pageContext?.sku??null}_clearUnavailableProductContext(){this._productContextUnavailableSku=null}_hasUnavailableProductContext(){const t=this.config.pageContext?.sku;return t!==void 0&&t.length>0&&this._productContextUnavailableSku===t}_ensureAssistantMessageRendered(t){if(!(this._shadow?.querySelector(`[data-message-id="${Pe(t.id)}"]`)||!this._drawer)){if(t.role==="assistant"&&t.threadId&&!this._threadsWithFirstBot.has(t.threadId)){this._threadsWithFirstBot.add(t.threadId),this._drawer.addMessage(t),this._drawer.markFirstBotMessage(t.id);return}this._drawer.addMessage(t)}}async _saveSessionAndOpenURL(t){this._session&&await this._session.saveAndOpenURL(t,()=>this._persistConversationStateForNavigation(),this._bridge)}async _loadPayload(t,a){return this._session?this._session.loadPayload(t,a):null}async _restoreFromIndexedDB(t){if(!this._session?.db)return;const a=this.config.session?.sessionId;if(!a)return;const n=this.config.session?.userId??"",r=this.config.accountId;if(await this._session.loadFavorites(n,r),this._drawer?.updateFavoritesBadge(this._session.favoritedSkus.size),!t)return;const i=await this._session.db?.loadSession(n,r,a);if(!i||i.messages.length===0)return;const o=this.config.pageContext?.sku;if(o&&i.sku&&i.sku!==o)return;this._markCurrentContextLaunchHandled(),this._drawer?.lockScrollForRestore(),this._currentThreadId=i.currentThreadId,this._lastThreadId=i.lastThreadId,this._currentThreadId&&this._lastThreadId&&this._currentThreadId>this._lastThreadId&&(this._currentThreadId=this._lastThreadId),this._chatCreatedAt=i.createdAt,i.panelThreads&&(this._panel.threads=i.panelThreads);const s=this._panelThreadIdByMessageId(i.messages);if(i.panelSnapshotHtml)for(const[l,g]of Object.entries(i.panelSnapshotHtml)){const d=document.createElement("div");d.innerHTML=Ie(g),this._panel.snapshots.set(l,d)}if(i.panelSnapshotTypes)for(const[l,g]of Object.entries(i.panelSnapshotTypes))this._panel.snapshotTypes.set(l,g);this._restorePanelSnapshotSources(i.panelSnapshotSources,s),i.panelAiSpecByThread&&this._restorePanelAiSpecMap(i.panelAiSpecByThread);let c=0;for(const l of i.messages){const g={id:l.id,role:l.role,timestamp:l.timestamp,status:l.status};if(l.threadId!==void 0&&(g.threadId=l.threadId),l.content!==void 0&&(g.content=l.content),l.frontendOnly&&(g.frontendOnly=!0),l.silent&&(g.silent=!0),this._messages.push(g),g.silent)continue;if(g.role==="assistant"&&g.threadId){const u=await this._loadPayload(g.threadId,g.id);u&&(g.uiSpec=u,this._hydrateRestoredUISpecMetadata(g.id,g.threadId,u))}const d=g.role!=="assistant"||!!g.content||!!g.attachment||this._isMessageHostedUISpec(g.uiSpec);g.role==="assistant"&&g.threadId&&d&&!this._threadsWithFirstBot.has(g.threadId)&&(this._threadsWithFirstBot.add(g.threadId),this._drawer?.markFirstBotMessage(g.id)),this._drawer?.addMessage(g);const p=parseInt(l.id.replace("msg-",""),10);!isNaN(p)&&p>c&&(c=p),g.uiSpec&&(this._isMessageHostedUISpec(g.uiSpec)||this._restoreInlineUISpec(g),delete g.uiSpec)}if(c>this._currentMessageId&&(this._currentMessageId=c),this._currentThreadId){let l=await this._session.db?.loadContext(a,this._currentThreadId);l||(l=await this._session.db?.loadLatestContext(a)),l&&(this._lastBackendContext=l.context)}if(this._currentThreadId){const l=[...this._messages].reverse().find(g=>g.role==="assistant"&&g.threadId===this._currentThreadId&&!g.silent);l&&(this._panel.snapshots.has(l.id)||this._panel?.sourceForMessage(l.id))&&(this._panel?.restoreForMessage(l.id)??!1)&&(this._currentPanelSource=this._panel?.sourceForMessage(l.id)??this._panelSourceFromMessage(l),this._restorePanelAiZoneForThread(this._currentThreadId))}if(this._currentThreadId){const l=this._currentThreadId;for(const g of this._messages)g.threadId&&g.threadId>l&&this._shadow?.querySelector(`[data-message-id="${Pe(g.id)}"]`)?.classList.add("gengage-chat-bubble--hidden");this._shadow?.querySelectorAll("[data-thread-id]").forEach(g=>{g instanceof HTMLElement&&g.dataset.threadId&&g.dataset.threadId>l&&g.classList.add("gengage-chat-bubble--hidden")})}if(this._panel.threads.length>0&&this._currentThreadId){const l=this._panel.threads[this._panel.threads.length-1];if(l){const g=[...this._messages].reverse().find(p=>p.role==="assistant"&&p.threadId===l&&((this._panel?.snapshots.has(p.id)??!1)||this._panel?.sourceForMessage(p.id))),d=g?this._panel?.snapshotTypes.get(g.id):void 0;d&&this._panel?.updateTopBar(d)}}this._presentation.releaseFocusedThread(),this._drawer?.setPresentationFocus(null),setTimeout(()=>{this._drawer?.scrollToLastThread()},550),this._activeHistorySessionId||this._persistHistoryToLocalStorage()}_navigatePanelBack(){const t=this._localPanelHistory.pop();if(t){const a=this._buildRenderContext(),n=this._renderPanelFromSource(t.source,a);this._drawer?.setPanelContent(n),this._currentPanelSource=t.source;const r=this._localPanelHistory.length>0||(this._panel?.threads.length??0)>1;this._drawer?.updatePanelTopBar(r,!1,t.title);return}if(this._currentPanelSource?.kind==="favorites"||this._currentPanelSource?.kind==="history"){this._drawer?.clearPanel(),this._currentPanelSource=null;return}if(this._isMobileViewport){this._drawer?.hideMobilePanel();return}this._panel?.navigateBack()}_toggleComparisonSku(t){if(t==="")this._comparisonSelectMode=!this._comparisonSelectMode,this._comparisonSelectionWarning=null,this._comparisonSelectMode&&(Fg(this._currentThreadId??""),this._clearChoicePrompter()),this._comparisonSelectMode||(this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,Yi());else if(this._comparisonSelectedSkus.indexOf(t)>=0)this._comparisonSelectedSkus=this._comparisonSelectedSkus.filter(a=>a!==t),this._comparisonSelectionWarning=null;else{if(this._comparisonSelectedSkus.length>=ut._MAX_COMPARISON_SELECTION){this._comparisonSelectionWarning=this._i18n.compareMaxHint??`You can select up to ${ut._MAX_COMPARISON_SELECTION} products`,this._comparisonRefreshRafId!==null&&cancelAnimationFrame(this._comparisonRefreshRafId),this._comparisonRefreshRafId=requestAnimationFrame(()=>{this._comparisonRefreshRafId=null,this._refreshComparisonUI()});return}this._comparisonSelectedSkus=[...this._comparisonSelectedSkus,t],this._comparisonSelectionWarning=null,Wi(t)}this._comparisonRefreshRafId!==null&&cancelAnimationFrame(this._comparisonRefreshRafId),this._comparisonRefreshRafId=requestAnimationFrame(()=>{this._comparisonRefreshRafId=null,this._refreshComparisonUI()})}_refreshComparisonUI(){const t=this._shadow?.querySelector(".gengage-chat-panel");if(!t){this._drawer?.setComparisonDockContent(null);return}const a=t.querySelector(".gengage-chat-product-grid-wrapper");if(!a){this._drawer?.setComparisonDockContent(null);return}const n=a.querySelectorAll(".gengage-chat-product-card[data-sku]");if(n.length===0){this._drawer?.setComparisonDockContent(null);return}const r=a.querySelector(".gengage-chat-comparison-toggle-btn");if(r&&r.classList.toggle("gengage-chat-comparison-toggle-btn--active",this._comparisonSelectMode),this._comparisonSelectMode)for(const i of n){if(i.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")){const p=i.parentElement,u=this._comparisonSelectedSkus.includes(i.dataset.sku);p.classList.toggle("gengage-chat-comparison-select-wrapper--selected",u);const f=p.querySelector(".gengage-chat-comparison-checkbox");if(f){f.dataset.selected=u?"true":"false",f.setAttribute("aria-pressed",u?"true":"false");const b=f.querySelector(".gengage-chat-comparison-checkbox-icon"),m=f.querySelector(".gengage-chat-comparison-checkbox-label");b&&(b.innerHTML=u?'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>':'<span class="gengage-chat-comparison-checkbox-dot"></span>'),m&&(m.textContent=u?this._i18n.comparisonSelectedLabel??"Selected":this._i18n.comparisonSelectLabel??"Select to compare")}continue}const o=i.dataset.sku,s=document.createElement("div");s.className="gengage-chat-comparison-select-wrapper";const c=this._comparisonSelectedSkus.includes(o);c&&s.classList.add("gengage-chat-comparison-select-wrapper--selected");const l=document.createElement("button");l.type="button",l.className="gengage-chat-comparison-checkbox",l.dataset.selected=c?"true":"false",l.setAttribute("aria-pressed",c?"true":"false");const g=document.createElement("span");g.className="gengage-chat-comparison-checkbox-icon",g.innerHTML=c?'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>':'<span class="gengage-chat-comparison-checkbox-dot"></span>';const d=document.createElement("span");d.className="gengage-chat-comparison-checkbox-label",d.textContent=c?this._i18n.comparisonSelectedLabel??"Selected":this._i18n.comparisonSelectLabel??"Select to compare",l.appendChild(g),l.appendChild(d),l.addEventListener("click",p=>{p.stopPropagation(),this._toggleComparisonSku(o)}),i.parentNode.insertBefore(s,i),s.appendChild(l),s.appendChild(i),s.classList.add("gds-clickable"),s.addEventListener("click",p=>{p.target.closest(".gengage-chat-comparison-checkbox")||(p.stopPropagation(),this._toggleComparisonSku(o))})}else{const i=a.querySelectorAll(".gengage-chat-comparison-select-wrapper");for(const o of i){const s=o.querySelector(".gengage-chat-product-card");s&&o.parentNode&&(o.parentNode.insertBefore(s,o),o.remove())}}if(a.querySelector(".gengage-chat-comparison-floating-btn")?.remove(),this._comparisonSelectMode){const i=Wn(this._comparisonSelectedSkus,this._buildRenderContext());this._isMobileViewport?(this._drawer?.setComparisonDockContent(i),this._ensureMobilePanelOverlayVisible()):(this._drawer?.setComparisonDockContent(null),a.appendChild(i))}else this._drawer?.setComparisonDockContent(null)}_clearChoicePrompter(){this._choicePrompterEl?.remove(),this._choicePrompterEl=null,this._shadow?.querySelectorAll(".gengage-chat-choice-prompter").forEach(t=>t.remove())}_mountChoicePrompter(){if(!this._choicePrompterEl)return!1;if(this._isMobileViewport)return this._drawer?.setComparisonDockContent(this._choicePrompterEl),this._ensureMobilePanelOverlayVisible(),!0;const t=this._shadow?.querySelector(".gengage-chat-panel-float");return t?(t.appendChild(this._choicePrompterEl),!0):(this._choicePrompterEl=null,!1)}_parseAddToCartActionPayload(t){if(typeof t!="object"||t===null)return null;const a=t,n=this._coerceAddToCartString(a.sku),r=this._coerceAddToCartString(a.cartCode??a.cart_code);let i=1;return typeof a.quantity=="number"&&Number.isFinite(a.quantity)&&a.quantity>0&&(i=Math.max(1,Math.floor(a.quantity))),!n||!r?null:{sku:n,cartCode:r,quantity:i}}_coerceAddToCartString(t){return typeof t=="string"&&t.length>0?t:typeof t=="number"&&Number.isFinite(t)?String(t):""}_maybeHandleDirectAddToCartCommand(t){if(Er(t)!=="directAddToCart")return!1;const a=this._resolveCurrentProductAddToCartParams();return a?(this._runChatAddToCartFlow(a),!0):!1}_resolveCurrentProductAddToCartParams(){const t=ze(this.config.pageContext?.extra),a=this._activeSkuForProductSummaryClick()??this._coerceSkuKey(this._bridgeContext?.sku),n=this.config.pageContext?.pageType==="pdp",r=this._getCurrentPanelProductRecord(),i=n?this._getCurrentPanelProductGridRecord(a):null,o=n?this._getInlinePdpProductRecord():null;if(!r&&!i&&this._currentPanelSource&&!o)return null;const s=[r,i];n&&s.push(o),this._currentPanelSource||(s.push(this._getLatestProductDetailsRecord()),n&&s.push(this._getLatestProductGridRecord(a))),n&&s.push(ze(this._bridgeContext?.product),ze(this._bridgeContext?.productDetails),this._bridgeContext,ze(t?.product),ze(t?.productDetails),t);for(const c of s){const l=this._extractAddToCartParamsFromRecord(c,a);if(l)return l}return null}_extractAddToCartParamsFromRecord(t,a){if(!t||(t.inStock??t.in_stock)===!1)return null;const n=this._coerceSkuKey(t.sku??a),r=this._coerceAddToCartString(t.cartCode??t.cart_code);return!n||!r?null:{sku:n,cartCode:r,quantity:1}}_hasAddToCartConfirmationHandler(){return this.config.onAddToCart!==void 0||(this._eventCallbacks.get("gengage-cart-add")?.size??0)>0}_maybeHidePreservedMobilePanel(t,a){!this._isMobileViewport||t!=="addToCart"||a||this._drawer?.hasPanelContent()&&this._drawer.hideMobilePanel()}_addToCartRequestKey(t){return`${t.sku}\0${t.cartCode}\0${t.quantity}`}async _runChatAddToCartFlow(t){const a=this._addToCartRequestKey(t);if(this._pendingAddToCartKeys.has(a))return;this._pendingAddToCartKeys.add(a);const n={...t,sessionId:this.config.session?.sessionId??null};try{if(!this._hasAddToCartConfirmationHandler()){this._handleCallbackFailure("gengage-cart-add",n);return}const r=this._i18n.addingToCartToast??"Adding to cart...";if(this._drawer?.showCartToast(r,{tone:"neutral",autoHideMs:null}),this.config.onAddToCart!==void 0)try{await Promise.resolve(this.config.onAddToCart(t))}catch(o){console.error("[gengage] onAddToCart",o),this._drawer?.hideCartToast(),this._handleCallbackFailure("gengage-cart-add",n);return}if(!await this._runEventCallbacks("gengage-cart-add",n)){this._drawer?.hideCartToast();return}no(t.sku,t.quantity),De("gengage:chat:add-to-cart",n),this._bridge?.send("addToCart",t),this._sendAction({title:this._i18n.addToCartButton??"Add to Cart",type:"addToCart",payload:{sku:t.sku,cart_code:t.cartCode,quantity:t.quantity}},{preservePanel:!0}),this._isMobileViewport&&(this._localPanelHistory=[],this._drawer?.hideMobilePanel());const i=this._i18n.addedToCartToast??"Added to cart";this._drawer?.showCartToast(i,{tone:"success"}),this._drawer?.flashCartBadge()}finally{this._pendingAddToCartKeys.delete(a)}}_buildRenderContext(){const t={locale:At(this.config.locale),onAction:a=>{if(a.type==="frontend_restore_panel_message"){this._restorePanelFromFrontendMessage(a.payload);return}if(Vi(a.title,a.type),a.type==="addToCart"){const r=this._parseAddToCartActionPayload(a.payload);if(r){this._runChatAddToCartFlow(r);return}}if(a.type==="launchSingleProduct"){const r=typeof a.payload=="object"&&a.payload!==null&&"sku"in a.payload?a.payload.sku:void 0,i=this._coerceSkuKey(r),o=this._activeSkuForProductSummaryClick();if(i&&o&&i===o)return;i&&va(i,a.title)}if(a.type==="findSimilar"){const r=typeof a.payload=="object"&&a.payload!==null&&"sku"in a.payload?String(a.payload.sku):"";Gi(r)}if(a.type==="getComparisonTable"){const r=a.payload,i=r&&typeof r=="object"?r:null,o=i&&typeof i.gengage_analytics_source=="string"?i.gengage_analytics_source:"";let s=[];i&&Array.isArray(i.sku_list)&&(s=i.sku_list.filter(c=>typeof c=="string")),o==="floating_compare_dock"?to(s):Ki(s.length>0?s:this._comparisonSelectedSkus)}const n=a.type==="addToCart"||a.type==="like";this._sendAction(a,n?{preservePanel:!0}:void 0)},onProductClick:a=>{this._handleProductNavClick(a)},onAddToCart:a=>{this._runChatAddToCartFlow(a)},onProductSelect:a=>{const n=this._productSkuKey(a),r=this._activeSkuForProductSummaryClick();if(n&&r&&n===r)return;if(this._currentInlineProductSummaryRecord=a,this._currentPanelSource){const l=this._drawer?.getPanelTopBarTitle()??"";this._localPanelHistory.push({source:this._currentPanelSource,title:l}),this._localPanelHistory.length>ut._MAX_PANEL_HISTORY&&this._localPanelHistory.shift()}const i=this._buildRenderContext(),o={root:"root",elements:{root:{type:"ProductSummaryCard",props:{product:a}}}},s=this._shadow?.querySelector(".gengage-chat-messages");if(s){const l=this._renderUISpec(o,i);this._currentThreadId&&(l.dataset.threadId=this._currentThreadId),s.appendChild(l),this._scrollInlineIntoView(l,this._currentThreadId),this._drawer?.refreshPresentationCollapsed()}if(this.config.productDetailsExtended!==!0){this._clearAssistantPanelLikeStreamClearPanel();return}const c={root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:a}}}};this._drawer?.setPanelContent(this._renderUISpec(c,t)),this._currentPanelSource={kind:"spec",spec:c},this._panel&&(this._panel.currentType="ProductDetailsPanel"),this._drawer?.updatePanelTopBar(!0,!1,this._i18n.panelTitleProductDetails)},i18n:this._i18n,pricing:this.config.pricing,productPriceUi:this.config.productPriceUi,hideProductDiscountBadge:this.config.hideProductDiscountBadge,hideUserReviews:this.config.hideUserReviews,hideStockStatus:this.config.hideStockStatus,productSort:this._productSort,onSortChange:a=>{this._productSort=a},comparisonSelectMode:this._comparisonSelectMode,comparisonSelectedSkus:this._comparisonSelectedSkus,comparisonMaxSelection:ut._MAX_COMPARISON_SELECTION,comparisonSelectionWarning:this._comparisonSelectionWarning,onToggleComparisonSku:a=>{this._toggleComparisonSku(a)},favoritedSkus:this._session?.favoritedSkus??new Set,onFavoriteToggle:(a,n)=>{this._toggleProductFavorite(a,n)},isMobile:this._isMobileViewport};return t}async _toggleFavorite(t,a){if(!this._session)return;const n=this.config.session?.userId??"",r=this.config.accountId;await this._session.toggleFavorite(n,r,t,a),this._drawer?.updateFavoritesBadge(this._session.favoritedSkus.size)}_revertFavoriteHeartUi(t){const a=this._shadow?.querySelectorAll(`[data-gengage-favorite-sku="${Pe(t)}"]`);if(a?.length)for(const n of a){if(!(n instanceof HTMLButtonElement))continue;n.classList.toggle("gengage-chat-favorite-btn--active");const r=n.querySelector("svg");r&&r.setAttribute("fill",n.classList.contains("gengage-chat-favorite-btn--active")?"currentColor":"none")}}async _toggleProductFavorite(t,a){const n=!(this._session?.favoritedSkus.has(t)??!1),r={sku:t,product:a,favorited:n,sessionId:this.config.session?.sessionId??null};De("gengage:chat:product-favorite",r),this._bridge?.send("productFavorite",r);const i=this._eventCallbacks.get("gengage-product-favorite");if(i&&i.size>0){for(const o of i)try{const s=o(r);if((s instanceof Promise?await s:s)===!1){this._revertFavoriteHeartUi(t),this._handleCallbackFailure("gengage-product-favorite",r);return}}catch{this._revertFavoriteHeartUi(t),this._handleCallbackFailure("gengage-product-favorite",r);return}this._session&&(n?this._session.favoritedSkus.add(t):this._session.favoritedSkus.delete(t),this._drawer?.updateFavoritesBadge(this._session.favoritedSkus.size));return}if(await this._toggleFavorite(t,a),n){Xi(t);const o=a.name??t;this._sendAction({title:o,type:"like",payload:{sku:t}},{preservePanel:!0})}}_openFavoritesPanel(){if(this._drawer){if(this._currentPanelSource){const t=this._drawer.getPanelTopBarTitle()??"";this._localPanelHistory.push({source:this._currentPanelSource,title:t}),this._localPanelHistory.length>ut._MAX_PANEL_HISTORY&&this._localPanelHistory.shift()}this._drawer.setPanelContent(this._buildFavoritesPageEl()),this._currentPanelSource={kind:"favorites"},this._drawer.updatePanelTopBar(!0,!1,this._i18n.favoritesPageTitle)}}_buildFavoritesPageEl(){const t=this._session?.getFavoriteProducts()??[];if(t.length===0){const i=document.createElement("div");i.className="gengage-chat-favorites-empty";const o=document.createElement("div");o.className="gengage-chat-favorites-empty-icon",o.innerHTML='<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>',i.appendChild(o);const s=document.createElement("p");return s.textContent=this._i18n.emptyFavoritesMessage,i.appendChild(s),i}const a={},n=[];for(const[i,o]of t.entries()){const s=`card_${i}`;n.push(s),a[s]={type:"ProductCard",props:{product:{sku:o.sku,name:o.name,imageUrl:o.imageUrl,price:o.price}}}}a.grid={type:"ProductGrid",children:n};const r={root:"grid",elements:a};return this._renderUISpec(r,this._buildRenderContext())}_isMessageHostedUISpec(t){if(!t)return!1;const a=t.elements[t.root];return!!a&&Ar.has(a.type)}_isPanelAiSpec(t){if(!t)return!1;const a=t.elements[t.root];return a?.type==="AITopPicks"||a?.type==="AIGroupingCards"}_rememberPanelAiSpec(t,a){this._isPanelAiSpec(a)&&this._panelAiSpecByThread.set(t,a)}_panelThreadIdByMessageId(t){const a=new Map;for(const n of t)n.threadId&&a.set(n.id,n.threadId);return a}_restorePanelSnapshotSources(t,a){if(!(!t||!this._panel))for(const[n,r]of Object.entries(t)){const i=a.get(n);this._panel.registerSnapshotSource(n,{source:r,threadId:i,rebuild:()=>{const o=this._buildRenderContext();return this._renderPanelFromSource(r,o)}})}}_restorePanelAiSpecMap(t){for(const[a,n]of Object.entries(t))this._rememberPanelAiSpec(a,n)}_hydrateRestoredUISpecMetadata(t,a,n){const r=this._isMessageHostedUISpec(n);this._rememberPanelAiSpec(a,n);const i=n.elements[n.root];return i&&!r&&!this._panel?.snapshotTypes.has(t)&&this._panel?.snapshotTypes.set(t,i.type),r}_renderMessageUISpec(t){return!t.uiSpec||!this._isMessageHostedUISpec(t.uiSpec)?null:this._renderUISpec(t.uiSpec,this._buildRenderContext())}_maybeAddPanelRestoreMessage(t){if(!this._panel||!t.threadId||this._panel.snapshotTypes.get(t.id)!=="ProductGrid")return;const a=this._currentPanelSource;if(a?.kind!=="spec")return;const n=a.spec.elements[a.spec.root];if(!n||n.type!=="ProductGrid"||ra(n))return;const r=(n.children??[]).map(l=>{const g=a.spec.elements[l]?.props?.product;return g?{imageUrl:typeof g.imageUrl=="string"?g.imageUrl:void 0,name:typeof g.name=="string"?g.name:void 0}:null}).filter(l=>l!==null).slice(0,3);if(r.length===0)return;const i=typeof n.props?.panelTitle=="string"?n.props.panelTitle:void 0,o=this._panel.titleForComponent("ProductGrid",i),s=this._createMessage("assistant","");s.threadId=t.threadId,s.frontendOnly=!0,s.uiSpec={root:"root",elements:{root:{type:"PanelRestoreCard",props:{title:o,showTitle:!1,ctaLabel:this._i18n.showPanelAriaLabel??"Show Results",panelMessageId:s.id,highlightMessageId:s.id,threadId:t.threadId,products:r}}}},this._messages.push(s);const c=this._clonePanelSourceForHistory(a);this._panel.snapshotForMessage(s.id,{source:c,threadId:s.threadId,rebuild:()=>{const l=this._buildRenderContext();return this._renderPanelFromSource(c,l)}}),this._ensureAssistantMessageRendered(s)}_restorePanelFromFrontendMessage(t){const a=t&&typeof t=="object"?t:null;if(!a)return;const n=typeof a.panelMessageId=="string"?a.panelMessageId:"",r=typeof a.highlightMessageId=="string"?a.highlightMessageId:n,i=typeof a.threadId=="string"?a.threadId:"";if(!n)return;const o=()=>{if(this._panel?.snapshotTypes.get(n)==="ProductGrid"&&this._ensureMobilePanelOverlayVisible(),this._panel?.restoreForMessage(n,r)??!1){const s=this._messages.find(l=>l.id===n);this._currentPanelSource=this._panel?.sourceForMessage(n)??this._panelSourceFromMessage(s);const c=this._panel?.currentType??"";this._panel?.updateTopBar(c),i&&this._restorePanelAiZoneForThread(i)}};if(i&&this._currentThreadId!==i){this._rollbackToThread(i),requestAnimationFrame(o);return}o()}_restorePanelAiZoneForThread(t){const a=this._panelAiSpecByThread.get(t);if(!a||!this._drawer){this._drawer?.setPanelAiZoneState("hidden");return}const n=this._renderUISpec(a,this._buildRenderContext());this._drawer.setPanelAiZoneState("results",{resultEl:n})}async _runEventCallbacks(t,a){const n=this._eventCallbacks.get(t);if(!n||n.size===0)return!0;for(const r of n)try{if(await Promise.resolve(r(a))===!1)return this._handleCallbackFailure(t,a),!1}catch{return this._handleCallbackFailure(t,a),!1}return!0}_handleCallbackFailure(t,a){if(t==="gengage-cart-add"){const n=this._i18n.cartAddErrorMessage,r=this._createMessage("assistant",n);this._currentThreadId&&(r.threadId=this._currentThreadId),this._messages.push(r),this._drawer?.addMessage(r),this._persistConversationState()}if(t==="gengage-product-favorite"){const n=this._i18n.favoriteToggleErrorMessage,r=this._createMessage("assistant",n);this._currentThreadId&&(r.threadId=this._currentThreadId),this._messages.push(r),this._drawer?.addMessage(r),this._persistConversationState()}}_restoreInlineUISpec(t){if(!t.uiSpec||!this._drawer)return;const a=t.uiSpec,n=a.elements[a.root];if(!n)return;const r=n.type;if(r==="ActionButtons"||r==="ComparisonTable"||r==="ProductGrid"&&this._panel?.snapshotTypes.get(t.id)==="ProductGrid"||ra(n))return;const i=this._buildRenderContext(),o=this._shadow?.querySelector(".gengage-chat-messages");if(!o)return;if(r==="ProductDetailsPanel"){const c=n.props?.product;if(!c)return;this._currentInlineProductSummaryRecord=c;const l={root:"root",elements:{root:{type:"ProductSummaryCard",props:{product:c}}}},g=this._renderUISpec(l,i);t.threadId&&(g.dataset.threadId=t.threadId),o.appendChild(g),this._drawer?.refreshPresentationCollapsed();return}const s=this._renderUISpec(a,i);t.threadId&&(s.dataset.threadId=t.threadId),o.appendChild(s),this._drawer?.refreshPresentationCollapsed()}_createMessage(t,a){return this._currentMessageId++,{id:`msg-${this._currentMessageId}`,role:t,content:a,timestamp:Date.now(),status:"done"}}_resolveI18n(t){return{...cc(t.locale),...t.i18n}}_resolveUISpecRegistry(){return Ri(Yn(),this.config.renderer?.registry)}_renderUISpec(t,a){const n=t.elements[t.root];if(n?.type==="ProductSummaryCard"){const c=ze(n.props),l=ze(c?.product)??c;l&&(this._currentInlineProductSummaryRecord=l)}const r=this._resolveUISpecRegistry(),i=this.config.renderer?.unknownRenderer??Aa,o=(c,l)=>Jn(c,l,r,i),s=this.config.renderer?.renderUISpec;return s?s(t,a,{registry:r,unknownRenderer:i,defaultRender:o}):o(t,a)}};function zd(){return new Ir}var zr;function T(e,t,a){function n(s,c){if(s._zod||Object.defineProperty(s,"_zod",{value:{def:c,constr:o,traits:new Set},enumerable:!1}),s._zod.traits.has(e))return;s._zod.traits.add(e),t(s,c);const l=o.prototype,g=Object.keys(l);for(let d=0;d<g.length;d++){const p=g[d];p in s||(s[p]=l[p].bind(s))}}const r=a?.Parent??Object;class i extends r{}Object.defineProperty(i,"name",{value:e});function o(s){var c;const l=a?.Parent?new i:this;n(l,s),(c=l._zod).deferred??(c.deferred=[]);for(const g of l._zod.deferred)g();return l}return Object.defineProperty(o,"init",{value:n}),Object.defineProperty(o,Symbol.hasInstance,{value:s=>a?.Parent&&s instanceof a.Parent?!0:s?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var wt=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Nr=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(zr=globalThis).__zod_globalConfig??(zr.__zod_globalConfig={});var ia=globalThis.__zod_globalConfig;function Qe(e){return e&&Object.assign(ia,e),ia}function Mr(e){const t=Object.values(e).filter(a=>typeof a=="number");return Object.entries(e).filter(([a,n])=>t.indexOf(+a)===-1).map(([a,n])=>n)}function qa(e,t){return typeof t=="bigint"?t.toString():t}function Za(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}throw new Error("cached value already set")}}}function Va(e){return e==null}function Ga(e){const t=e.startsWith("^")?1:0,a=e.endsWith("$")?e.length-1:e.length;return e.slice(t,a)}function Nd(e,t){const a=e/t,n=Math.round(a),r=Number.EPSILON*Math.max(Math.abs(a),1);return Math.abs(a-n)<r?0:a-n}var Br=Symbol("evaluating");function ue(e,t,a){let n;Object.defineProperty(e,t,{get(){if(n!==Br)return n===void 0&&(n=Br,n=a()),n},set(r){Object.defineProperty(e,t,{value:r})},configurable:!0})}function lt(e,t,a){Object.defineProperty(e,t,{value:a,writable:!0,enumerable:!0,configurable:!0})}function rt(...e){const t={};for(const a of e)Object.assign(t,Object.getOwnPropertyDescriptors(a));return Object.defineProperties({},t)}function Rr(e){return JSON.stringify(e)}function Md(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Or="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function oa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Bd=Za(()=>{if(ia.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch{return!1}});function kt(e){if(oa(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const a=t.prototype;return!(oa(a)===!1||Object.prototype.hasOwnProperty.call(a,"isPrototypeOf")===!1)}function $r(e){return kt(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Rd=new Set(["string","number","symbol"]);function sa(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function it(e,t,a){const n=new e._zod.constr(t??e._zod.def);return(!t||a?.parent)&&(n._zod.parent=e),n}function W(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Od(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var $d={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Fd(e,t){const a=e._zod.def,n=a.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");return it(e,rt(e._zod.def,{get shape(){const r={};for(const i in t){if(!(i in a.shape))throw new Error(`Unrecognized key: "${i}"`);t[i]&&(r[i]=a.shape[i])}return lt(this,"shape",r),r},checks:[]}))}function Dd(e,t){const a=e._zod.def,n=a.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");return it(e,rt(e._zod.def,{get shape(){const r={...e._zod.def.shape};for(const i in t){if(!(i in a.shape))throw new Error(`Unrecognized key: "${i}"`);t[i]&&delete r[i]}return lt(this,"shape",r),r},checks:[]}))}function Hd(e,t){if(!kt(t))throw new Error("Invalid input to extend: expected a plain object");const a=e._zod.def.checks;if(a&&a.length>0){const n=e._zod.def.shape;for(const r in t)if(Object.getOwnPropertyDescriptor(n,r)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return it(e,rt(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return lt(this,"shape",n),n}}))}function Ud(e,t){if(!kt(t))throw new Error("Invalid input to safeExtend: expected a plain object");return it(e,rt(e._zod.def,{get shape(){const a={...e._zod.def.shape,...t};return lt(this,"shape",a),a}}))}function jd(e,t){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");return it(e,rt(e._zod.def,{get shape(){const a={...e._zod.def.shape,...t._zod.def.shape};return lt(this,"shape",a),a},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function qd(e,t,a){const n=t._zod.def.checks;if(n&&n.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");return it(t,rt(t._zod.def,{get shape(){const r=t._zod.def.shape,i={...r};if(a)for(const o in a){if(!(o in r))throw new Error(`Unrecognized key: "${o}"`);a[o]&&(i[o]=e?new e({type:"optional",innerType:r[o]}):r[o])}else for(const o in r)i[o]=e?new e({type:"optional",innerType:r[o]}):r[o];return lt(this,"shape",i),i},checks:[]}))}function Zd(e,t,a){return it(t,rt(t._zod.def,{get shape(){const n=t._zod.def.shape,r={...n};if(a)for(const i in a){if(!(i in r))throw new Error(`Unrecognized key: "${i}"`);a[i]&&(r[i]=new e({type:"nonoptional",innerType:n[i]}))}else for(const i in n)r[i]=new e({type:"nonoptional",innerType:n[i]});return lt(this,"shape",r),r}}))}function St(e,t=0){if(e.aborted===!0)return!0;for(let a=t;a<e.issues.length;a++)if(e.issues[a]?.continue!==!0)return!0;return!1}function Vd(e,t=0){if(e.aborted===!0)return!0;for(let a=t;a<e.issues.length;a++)if(e.issues[a]?.continue===!1)return!0;return!1}function Ct(e,t){return t.map(a=>{var n;return(n=a).path??(n.path=[]),a.path.unshift(e),a})}function ca(e){return typeof e=="string"?e:e?.message}function et(e,t,a){const n=e.message?e.message:ca(e.inst?._zod.def?.error?.(e))??ca(t?.error?.(e))??ca(a.customError?.(e))??ca(a.localeError?.(e))??"Invalid input",{inst:r,continue:i,input:o,...s}=e;return s.path??(s.path=[]),s.message=n,t?.reportInput&&(s.input=o),s}function Wa(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function Dt(...e){const[t,a,n]=e;return typeof t=="string"?{message:t,code:"custom",input:a,inst:n}:{...t}}var Fr=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,qa,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Dr=T("$ZodError",Fr),Hr=T("$ZodError",Fr,{Parent:Error});function Gd(e,t=a=>a.message){const a={},n=[];for(const r of e.issues)r.path.length>0?(a[r.path[0]]=a[r.path[0]]||[],a[r.path[0]].push(t(r))):n.push(t(r));return{formErrors:n,fieldErrors:a}}function Wd(e,t=a=>a.message){const a={_errors:[]},n=(r,i=[])=>{for(const o of r.issues)if(o.code==="invalid_union"&&o.errors.length)o.errors.map(s=>n({issues:s},[...i,...o.path]));else if(o.code==="invalid_key")n({issues:o.issues},[...i,...o.path]);else if(o.code==="invalid_element")n({issues:o.issues},[...i,...o.path]);else{const s=[...i,...o.path];if(s.length===0)a._errors.push(t(o));else{let c=a,l=0;for(;l<s.length;){const g=s[l];l!==s.length-1?c[g]=c[g]||{_errors:[]}:(c[g]=c[g]||{_errors:[]},c[g]._errors.push(t(o))),c=c[g],l++}}}};return n(e),a}var Ka=e=>(t,a,n,r)=>{const i=n?{...n,async:!1}:{async:!1},o=t._zod.run({value:a,issues:[]},i);if(o instanceof Promise)throw new wt;if(o.issues.length){const s=new(r?.Err??e)(o.issues.map(c=>et(c,i,Qe())));throw Or(s,r?.callee),s}return o.value},Ya=e=>async(t,a,n,r)=>{const i=n?{...n,async:!0}:{async:!0};let o=t._zod.run({value:a,issues:[]},i);if(o instanceof Promise&&(o=await o),o.issues.length){const s=new(r?.Err??e)(o.issues.map(c=>et(c,i,Qe())));throw Or(s,r?.callee),s}return o.value},la=e=>(t,a,n)=>{const r=n?{...n,async:!1}:{async:!1},i=t._zod.run({value:a,issues:[]},r);if(i instanceof Promise)throw new wt;return i.issues.length?{success:!1,error:new(e??Dr)(i.issues.map(o=>et(o,r,Qe())))}:{success:!0,data:i.value}},Kd=la(Hr),ga=e=>async(t,a,n)=>{const r=n?{...n,async:!0}:{async:!0};let i=t._zod.run({value:a,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(o=>et(o,r,Qe())))}:{success:!0,data:i.value}},Yd=ga(Hr),Jd=e=>(t,a,n)=>{const r=n?{...n,direction:"backward"}:{direction:"backward"};return Ka(e)(t,a,r)},Xd=e=>(t,a,n)=>Ka(e)(t,a,n),Qd=e=>async(t,a,n)=>{const r=n?{...n,direction:"backward"}:{direction:"backward"};return Ya(e)(t,a,r)},ep=e=>async(t,a,n)=>Ya(e)(t,a,n),tp=e=>(t,a,n)=>{const r=n?{...n,direction:"backward"}:{direction:"backward"};return la(e)(t,a,r)},ap=e=>(t,a,n)=>la(e)(t,a,n),np=e=>async(t,a,n)=>{const r=n?{...n,direction:"backward"}:{direction:"backward"};return ga(e)(t,a,r)},rp=e=>async(t,a,n)=>ga(e)(t,a,n),ip=/^[cC][0-9a-z]{6,}$/,op=/^[0-9a-z]+$/,sp=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,cp=/^[0-9a-vA-V]{20}$/,lp=/^[A-Za-z0-9]{27}$/,gp=/^[a-zA-Z0-9_-]{21}$/,dp=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,pp=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Ur=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,hp=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,up="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function mp(){return new RegExp(up,"u")}var fp=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,bp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,vp=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,yp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,xp=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,jr=/^[A-Za-z0-9_-]*$/,_p=/^https?$/,wp=/^\+[1-9]\d{6,14}$/,qr="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",kp=new RegExp(`^${qr}$`);function Zr(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Sp(e){return new RegExp(`^${Zr(e)}$`)}function Cp(e){const t=Zr({precision:e.precision}),a=["Z"];e.local&&a.push(""),e.offset&&a.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const n=`${t}(?:${a.join("|")})`;return new RegExp(`^${qr}T(?:${n})$`)}var Ep=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Pp=/^-?\d+$/,Vr=/^-?\d+(?:\.\d+)?$/,Tp=/^(?:true|false)$/i,Ap=/^[^A-Z]*$/,Lp=/^[^a-z]*$/,Be=T("$ZodCheck",(e,t)=>{var a;e._zod??(e._zod={}),e._zod.def=t,(a=e._zod).onattach??(a.onattach=[])}),Gr={number:"number",bigint:"bigint",object:"date"},Wr=T("$ZodCheckLessThan",(e,t)=>{Be.init(e,t);const a=Gr[typeof t.value];e._zod.onattach.push(n=>{const r=n._zod.bag,i=(t.inclusive?r.maximum:r.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<i&&(t.inclusive?r.maximum=t.value:r.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:a,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Kr=T("$ZodCheckGreaterThan",(e,t)=>{Be.init(e,t);const a=Gr[typeof t.value];e._zod.onattach.push(n=>{const r=n._zod.bag,i=(t.inclusive?r.minimum:r.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>i&&(t.inclusive?r.minimum=t.value:r.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:a,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Ip=T("$ZodCheckMultipleOf",(e,t)=>{Be.init(e,t),e._zod.onattach.push(a=>{var n;(n=a._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=a=>{if(typeof a.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof a.value=="bigint"?a.value%t.value===BigInt(0):Nd(a.value,t.value)===0)||a.issues.push({origin:typeof a.value,code:"not_multiple_of",divisor:t.value,input:a.value,inst:e,continue:!t.abort})}}),zp=T("$ZodCheckNumberFormat",(e,t)=>{Be.init(e,t),t.format=t.format||"float64";const a=t.format?.includes("int"),n=a?"int":"number",[r,i]=$d[t.format];e._zod.onattach.push(o=>{const s=o._zod.bag;s.format=t.format,s.minimum=r,s.maximum=i,a&&(s.pattern=Pp)}),e._zod.check=o=>{const s=o.value;if(a){if(!Number.isInteger(s)){o.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}s<r&&o.issues.push({origin:"number",input:s,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),s>i&&o.issues.push({origin:"number",input:s,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}}),Np=T("$ZodCheckMaxLength",(e,t)=>{var a;Be.init(e,t),(a=e._zod.def).when??(a.when=n=>{const r=n.value;return!Va(r)&&r.length!==void 0}),e._zod.onattach.push(n=>{const r=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<r&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{const r=n.value;if(r.length<=t.maximum)return;const i=Wa(r);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Mp=T("$ZodCheckMinLength",(e,t)=>{var a;Be.init(e,t),(a=e._zod.def).when??(a.when=n=>{const r=n.value;return!Va(r)&&r.length!==void 0}),e._zod.onattach.push(n=>{const r=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>r&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{const r=n.value;if(r.length>=t.minimum)return;const i=Wa(r);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Bp=T("$ZodCheckLengthEquals",(e,t)=>{var a;Be.init(e,t),(a=e._zod.def).when??(a.when=n=>{const r=n.value;return!Va(r)&&r.length!==void 0}),e._zod.onattach.push(n=>{const r=n._zod.bag;r.minimum=t.length,r.maximum=t.length,r.length=t.length}),e._zod.check=n=>{const r=n.value,i=r.length;if(i===t.length)return;const o=Wa(r),s=i>t.length;n.issues.push({origin:o,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),da=T("$ZodCheckStringFormat",(e,t)=>{var a,n;Be.init(e,t),e._zod.onattach.push(r=>{const i=r._zod.bag;i.format=t.format,t.pattern&&(i.patterns??(i.patterns=new Set),i.patterns.add(t.pattern))}),t.pattern?(a=e._zod).check??(a.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:t.format,input:r.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),Rp=T("$ZodCheckRegex",(e,t)=>{da.init(e,t),e._zod.check=a=>{t.pattern.lastIndex=0,!t.pattern.test(a.value)&&a.issues.push({origin:"string",code:"invalid_format",format:"regex",input:a.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Op=T("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Ap),da.init(e,t)}),$p=T("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Lp),da.init(e,t)}),Fp=T("$ZodCheckIncludes",(e,t)=>{Be.init(e,t);const a=sa(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${a}`:a);t.pattern=n,e._zod.onattach.push(r=>{const i=r._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(n)}),e._zod.check=r=>{r.value.includes(t.includes,t.position)||r.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:r.value,inst:e,continue:!t.abort})}}),Dp=T("$ZodCheckStartsWith",(e,t)=>{Be.init(e,t);const a=new RegExp(`^${sa(t.prefix)}.*`);t.pattern??(t.pattern=a),e._zod.onattach.push(n=>{const r=n._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(a)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Hp=T("$ZodCheckEndsWith",(e,t)=>{Be.init(e,t);const a=new RegExp(`.*${sa(t.suffix)}$`);t.pattern??(t.pattern=a),e._zod.onattach.push(n=>{const r=n._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(a)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Up=T("$ZodCheckOverwrite",(e,t)=>{Be.init(e,t),e._zod.check=a=>{a.value=t.tx(a.value)}}),jp=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}const t=e.split(`
|
|
549
|
-
`).filter(r=>r),a=Math.min(...
|
|
550
|
-
`))}},
|
|
548
|
+
`).join("<br />"));this._ensureAssistantMessageRendered(h),this._drawer?.updateBotMessage(h.id,fe),this._drawer?.showRecoveryPillsOnly(ge)};if(s&&!L)if(c||this._hasUnavailableProductContext()){this._drawer?.setPills([]);const te=this._i18n.productNotFoundMessage;h.content=te,h.status="done",this._ensureAssistantMessageRendered(h),this._drawer?.updateBotMessage(h.id,te),this._markUnavailableProductContext()}else h.status="done";else if(O)this._drawer?.setPills([]),h.silent||q();else if(q(),$)return;s&&(this._contextPrimingInFlight=!1,this._flushQueuedUserMessages()),!he&&h.status==="streaming"&&(h.status="error")},onDone:()=>{if(K&&this._abortControllers.delete(K),!o&&i!==this._activeRequestThreadId)return;if(Y=!0,H&&this._panel&&this._drawer){const $=this._buildRenderContext();$.isStreaming=!1;const Z=H.elements[H.root],he=this._panel.toPanelSpec(H);this._applyPanelListHeadingToContext($,{kind:"spec",spec:he});const q=Z?.type??"ProductGrid";ee(he,$,q),Q(q,Z,"replace",!1),A=!0}H=null,I&&M(!1),C(),!o&&i===this._activeRequestThreadId&&(this._activeRequestThreadId=null),this._consecutiveErrorCount=0,this._lastErrorMessage="",r(!1),this._bridge?.send("loadingMessage",{text:null}),this._drawer?.removeTypingIndicator(),Uc(de,{drawer:this._drawer,ensureRendered:()=>{},cancelTypewriter:()=>{},sendSkipMessage:()=>this._sendMessage(this._i18n.beautyPhotoStepSkipMessage),isStreamDone:()=>!0});const _=A;if(E&&!A&&f(),E=!1,this._maybeHidePreservedMobilePanel(e.type,_),c&&!b&&!_){const $=this._i18n.productNotFoundMessage;h.content=$,this._ensureAssistantMessageRendered(h),this._drawer?.updateBotMessage(h.id,$),this._markUnavailableProductContext()}if(A=!1,s){this._contextPrimingInFlight=!1;const $=this._queuedUserMessages.length>0;this._flushQueuedUserMessages(),!$&&c&&this._ensurePdpPrimeSuggestedUiIfNeeded(l)}h.status==="streaming"&&(h.status="done",cn()),this._presentation.finalizeAssistantGroup(i);const z=this._shadow?.querySelector(".gengage-chat-comparison-toggle-btn--hidden");z&&(z.classList.remove("gengage-chat-comparison-toggle-btn--hidden"),z.classList.add("gengage-chat-comparison-toggle-btn--reveal")),this.emit("message",h);const L=this._currentPanelSource,O=L?this._clonePanelSourceForHistory(L):null;this._panel?.snapshotForMessage(h.id,O?{source:O,threadId:h.threadId,rebuild:()=>{const $=this._buildRenderContext();return this._renderPanelFromSource(O,$)}}:void 0),this._maybeAddPanelRestoreMessage(h),this._persistConversationState()}},y),this._abortControllers.add(K),!a?.silent&&!o){const _=K;this._drawer?.showStopButton(()=>{_.abort(),this._abortControllers.delete(_),this._drawer?.removeTypingIndicator(),r(!1),this._bridge?.send("loadingMessage",{text:null}),E&&!A&&(f(),E=!1),h.status==="streaming"&&(h.status="done")})}}_getVisibleMessages(){const e=this._messages.filter(n=>!n.silent);if(!this._currentThreadId)return e;const a=this._currentThreadId;return e.filter(n=>!n.threadId||n.threadId<=a)}_appendSimilarsToPanel(e,a){if(!this._drawer)return;const n=this._drawer.getPanelContentElement();if(!n)return;a.panelProductListHeading=this._i18n.similarProductsLabel??"Similar Products";const r=this._renderUISpec(e,a);r.classList.add("gengage-chat-product-details-similars"),n.appendChild(r),this._mergePanelSourceWithSimilars(e)}_coerceSkuKey(e){return typeof e=="string"?e.trim():typeof e=="number"&&Number.isFinite(e)?String(e).trim():""}_productSkuKey(e){return e?this._coerceSkuKey(e.sku):""}_pdpPageContextSkuKey(){const e=this.config.pageContext?.pageType;return typeof e!="string"||e.toLowerCase()!=="pdp"?null:this._coerceSkuKey(this.config.pageContext?.sku)||null}_productDetailsRecordFromSpec(e){if(!e)return null;const a=e.elements[e.root];if(!a||a.type!=="ProductDetailsPanel")return null;const n=Be(a.props);return Be(n?.product)??n??null}_productGridRecordFromSpec(e,a){if(!e)return null;const n=e.elements[e.root];if(!n||n.type!=="ProductGrid")return null;const r=Object.values(e.elements).filter(o=>o.type==="ProductCard").map(o=>Be(o.props?.product)).filter(o=>o!==null);if(r.length===0)return null;const i=this._coerceSkuKey(a);if(i){const o=r.find(s=>this._productRecordMatchesSku(s,i));if(o)return o}return r.length===1?r[0]:null}_productRecordMatchesSku(e,a){if(this._coerceSkuKey(e.sku)===a||this._coerceSkuKey(e.group_id??e.groupId)===a)return!0;const n=Be(e.extras);return this._coerceSkuKey(n?.group_id??n?.groupId)===a}_getCurrentPanelProductRecord(){const e=this._currentPanelSource;return e?e.kind==="spec"?this._productDetailsRecordFromSpec(e.spec):e.kind==="productDetailsWithSimilars"?this._productDetailsRecordFromSpec(e.pdpSpec):null:null}_getCurrentPanelProductGridRecord(e){const a=this._currentPanelSource;return a?a.kind==="spec"?this._productGridRecordFromSpec(a.spec,e):a.kind==="productDetailsWithSimilars"?this._productGridRecordFromSpec(a.similarsSpec,e):null:null}_panelSourceFromMessage(e){const a=e?.uiSpec;if(!a)return null;const n=a.elements[a.root];return!n||Br.has(n.type)?null:{kind:"spec",spec:a}}_getLatestProductDetailsRecord(){for(let e=this._messages.length-1;e>=0;e-=1){const a=this._productDetailsRecordFromSpec(this._messages[e]?.uiSpec);if(a)return a}return null}_getLatestProductGridRecord(e){for(let a=this._messages.length-1;a>=0;a-=1){const n=this._productGridRecordFromSpec(this._messages[a]?.uiSpec,e);if(n)return n}return null}_getInlinePdpProductRecord(){const e=this._pdpPageContextSkuKey();if(!e)return null;const a=this._currentInlineProductSummaryRecord;return a&&this._coerceSkuKey(a.sku)===e?a:null}_getCurrentPanelProductSku(){const e=this._getCurrentPanelProductRecord();return e&&this._coerceSkuKey(e.sku)||null}_activeSkuForProductSummaryClick(){const e=this._getCurrentPanelProductSku();return e||this._pdpPageContextSkuKey()}_mergePanelSourceWithSimilars(e){const a=this._currentPanelSource;a?.kind==="spec"&&this._panel?.currentType==="ProductDetailsPanel"&&(this._currentPanelSource={kind:"productDetailsWithSimilars",pdpSpec:a.spec,similarsSpec:e})}_renderProductDetailsWithSimilars(e,a,n){this._applyPanelListHeadingToContext(n,{kind:"productDetailsWithSimilars",pdpSpec:e,similarsSpec:a});const r=this._renderUISpec(e,n),i=this._renderUISpec(a,n);return i.classList.add("gengage-chat-product-details-similars"),r.appendChild(i),r}_applyPanelListHeadingToContext(e,a){if(e.panelProductListHeading=void 0,!!this._panel){if(a.kind==="spec"){const n=a.spec.elements[a.spec.root];n?.type==="ProductGrid"&&(n.children?.length??0)>0&&(e.panelProductListHeading=this._panel.titleForComponent("ProductGrid",n.props?.panelTitle??void 0))}else if(a.kind==="productDetailsWithSimilars"){const n=a.similarsSpec.elements[a.similarsSpec.root];n?.type==="ProductGrid"&&(n.children?.length??0)>0&&(e.panelProductListHeading=this._i18n.similarProductsLabel??"Similar Products")}}}_clonePanelSourceForHistory(e){try{return structuredClone(e)}catch{return e}}_renderPanelFromSource(e,a){return this._applyPanelListHeadingToContext(a,e),e.kind==="favorites"?this._buildFavoritesPageEl():e.kind==="history"?this._buildHistoryPageEl():e.kind==="productDetailsWithSimilars"?this._renderProductDetailsWithSimilars(e.pdpSpec,e.similarsSpec,a):this._renderUISpec(e.spec,a)}_handleRollback(e){const a=this._messages.find(n=>n.id===e);a?.threadId&&this._rollbackToThread(a.threadId)}_ensureMobileFullSheetForPanel(){!this._drawerVisible||!this._isMobileViewport||this._openState==="full"||(this._openState="full",this._applyOpenStateClasses())}_ensureMobilePanelOverlayVisible(){!this._drawerVisible||!this._isMobileViewport||(this._ensureMobileFullSheetForPanel(),this._drawer?.showMobilePanel())}_ensurePdpPrimeSuggestedUiIfNeeded(e){const a=this._resolvePdpPrimeSku(e);if(!a||!this._drawer||this._hasUnavailableProductContext())return;const n=this._buildPdpPrimeFindSimilarPayload(a,e),r=e!==void 0?this._productNumber(e,"review_count","reviewCount"):void 0,i="product",o=this._resolveContextualOpeningActions(i);if(o.length>0){this._drawer.setInputAreaChips(o.map(s=>({label:s.title,onAction:()=>this._sendAction(this._resolveContextualOpeningAction(s,i)),...s.icon?{icon:s.icon}:{}})));return}this._drawer.setInputAreaChips([...this.config.hideUserReviews!==!0&&r&&r>0?[{label:this._i18n.groundingReviewCta,icon:"review",onAction:()=>this._sendAction({title:this._i18n.customerReviewsTitle,type:"reviewSummary",payload:{sku:a}})}]:[],{label:this._i18n.findSimilarLabel,icon:"similar",onAction:()=>this._sendAction({title:this._i18n.findSimilarLabel,type:"findSimilar",payload:n})}])}_resolvePdpPrimeSku(e){return this.config.pageContext?.sku?this.config.pageContext.sku:e!==void 0?this._productString(e,"sku","id"):void 0}_buildPdpPrimeFindSimilarPayload(e,a){const n={sku:e};if(a===void 0)return n;const r=this._productString(a,"name","productName","product_name","title");return r!==void 0&&(n.product_name=r),n}_productString(e,...a){for(const n of a){const r=e[n];if(typeof r=="string"&&r.trim().length>0)return r.trim()}}_productNumber(e,...a){for(const n of a){const r=e[n];if(typeof r=="number"&&Number.isFinite(r))return r;if(typeof r=="string"&&r.trim().length>0){const i=Number(r);if(Number.isFinite(i))return i}}}_rollbackToThread(e){if(this._panel&&this._panel.threads.length>0&&!this._panel.threads.includes(e)&&!this._messages.some(s=>s.threadId===e))return;this._currentThreadId=e,this._extendedModeManager?.setHiddenByUser(!1),this._lastThreadId!=null&&e===this._lastThreadId?(this._presentation.setFocusedThreadId(e),this._drawer?.setPresentationFocus(e)):(this._presentation.releaseFocusedThread(),this._drawer?.setPresentationFocus(null)),this._drawer?.setFormerMessagesButtonVisible(!1);for(const s of this._messages){const c=this._shadow?.querySelector(`[data-message-id="${Ae(s.id)}"]`);c&&(s.threadId&&s.threadId>e?c.classList.add("gengage-chat-bubble--hidden"):c.classList.remove("gengage-chat-bubble--hidden"))}this._shadow?.querySelectorAll("[data-thread-id]").forEach(s=>{s instanceof HTMLElement&&s.dataset.threadId&&s.dataset.threadId>e?s.classList.add("gengage-chat-bubble--hidden"):s instanceof HTMLElement&&s.classList.remove("gengage-chat-bubble--hidden")});const a=this._messages.find(s=>s.role==="assistant"&&s.threadId===e),n=this._panel?.threads.includes(e)??!1,r=(a?this._panel?.sourceForMessage(a.id):null)??this._panel?.sourceForThread(e)??(n?this._panelSourceFromMessage(a):null);let i=a?this._panel?.restoreForMessage(a.id)??!1:!1;if(!i&&r){const s=this._buildRenderContext();this._drawer?.setPanelContent(this._renderPanelFromSource(r,s)),this._currentPanelSource=r,this._panel&&(this._panel.currentType=this._panel.componentTypeForSource(r)),i=!0}i||(this._drawer?.clearPanel(),this._currentPanelSource=null,this._drawer?.setPanelAiZoneState("hidden")),i&&(this._currentPanelSource=r,this._restorePanelAiZoneForThread(e));const o=this._panel.currentType??"";if(this._panel?.updateTopBar(o),this._drawer?.setPills([]),requestAnimationFrame(()=>{this._drawer?.scrollThreadIntoView(e,"auto")}),this._session?.db&&this.config.session?.sessionId){const s=this.config.session.sessionId;(async()=>{try{const c=await this._session?.db?.loadContext(s,e);c&&(this._lastBackendContext=c.context),await this._session?.db?.deleteContextsAfterThread(s,e)}catch{}})()}this._persistHistory()}_persistHistory(){if(!this._historyStorage)return;const e=this._activeHistorySessionId??this._historyStorage.findSessionId(this.config.session?.sessionId??"",this._chatCreatedAt)??this._historyStorage.createHistoryId(),a=this._historyStorage.saveSession({historyId:e,userId:this.config.session?.userId??"",appId:this.config.accountId,sourceSessionId:this.config.session?.sessionId??"",messages:this._messages,currentThreadId:this._currentThreadId,lastThreadId:this._lastThreadId,chatCreatedAt:this._chatCreatedAt,panelSnapshots:this._panel?.snapshots??new Map,panelSnapshotTypes:this._panel?.snapshotTypes??new Map,panelSnapshotSources:this._panel?.snapshotSourceMap()??new Map,panelThreads:this._panel?.threads??[],panelAiSpecByThread:this._panelAiSpecByThread,lastBackendContext:this._lastBackendContext,pageType:this.config.pageContext?.pageType,sku:this.config.pageContext?.sku,attachmentPlaceholder:this._i18n.historyImageAttachmentLabel});a&&(this._activeHistorySessionId=a.id)}_persistConversationState(){this._persistHistory(),this._persistToIndexedDB().catch(()=>{})}async _persistConversationStateForNavigation(){this._persistHistory(),await Promise.all([this._historyStorage?.flush(),this._persistToIndexedDB()])}_formatHistoryTimestamp(e){try{return new Intl.DateTimeFormat(Mt(this.config.locale),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(new Date(e))}catch{return e}}_resolveHistoryPreviewText(e){const a=(e.preview||"").trim();return a&&a!=="PanelRestoreCard"?a:e.title}_openHistoryPanel(e=!0){if(this._drawer){if(e&&this._currentPanelSource&&this._currentPanelSource.kind!=="history"){const a=this._drawer.getPanelTopBarTitle()??"";this._localPanelHistory.push({source:this._currentPanelSource,title:a}),this._localPanelHistory.length>xt._MAX_PANEL_HISTORY&&this._localPanelHistory.shift()}this._drawer.setPanelContent(this._buildHistoryPageEl()),this._currentPanelSource={kind:"history"},this._drawer.updatePanelTopBar(!0,!1,this._i18n.historyPageTitle)}}_buildHistoryPageEl(){const e=document.createElement("div");e.className="gengage-chat-history-page";const a=document.createElement("div");a.className="gengage-chat-history-actions";const n=document.createElement("button");n.type="button",n.className="gengage-chat-history-new-chat",n.textContent=this._i18n.newChatButton,n.addEventListener("click",()=>this._startNewChat()),a.appendChild(n),e.appendChild(a);const r=this._historyStorage?.listSessions()??[];if(r.length===0){const o=document.createElement("div");o.className="gengage-chat-history-empty",o.innerHTML='<div class="gengage-chat-history-empty-icon" aria-hidden="true"><svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8v5l3 2"/><path d="M3.05 11A9 9 0 1 1 5 17.5"/><path d="M3 8v4h4"/></svg></div>';const s=document.createElement("p");return s.textContent=this._i18n.emptyHistoryMessage,o.appendChild(s),e.appendChild(o),e}const i=document.createElement("div");i.className="gengage-chat-history-list";for(const o of r){const s=document.createElement("div");s.className="gengage-chat-history-item",o.id===this._activeHistorySessionId&&s.classList.add("gengage-chat-history-item--active");const c=document.createElement("button");c.type="button",c.className="gengage-chat-history-open",c.title=o.title,c.setAttribute("aria-label",`${this._i18n.historyAriaLabel}: ${o.title}`),c.addEventListener("click",()=>{this._loadHistorySession(o.id)});const l=document.createElement("div");l.className="gengage-chat-history-item-title-row";const d=document.createElement("span");d.className="gengage-chat-history-item-title",d.textContent=o.title,l.appendChild(d);const g=document.createElement("span");g.className="gengage-chat-history-item-meta",g.textContent=this._formatHistoryTimestamp(o.updatedAt),l.appendChild(g),c.appendChild(l);const p=document.createElement("p");p.className="gengage-chat-history-item-preview",p.textContent=this._resolveHistoryPreviewText(o),c.appendChild(p),s.appendChild(c);const u=document.createElement("button");u.type="button",u.className="gengage-chat-history-delete",u.setAttribute("aria-label",`${this._i18n.historyDeleteLabel}: ${o.title}`),u.title=this._i18n.historyDeleteLabel,u.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h18"/><path d="M8 6V4h8v2"/><path d="M19 6l-1 14H6L5 6"/><path d="M10 11v6"/><path d="M14 11v6"/></svg>',u.addEventListener("click",m=>{m.preventDefault(),m.stopPropagation(),window.confirm(this._i18n.historyDeleteConfirmMessage)&&this._deleteHistorySession(o.id)}),s.appendChild(u),i.appendChild(s)}return e.appendChild(i),e}_deleteHistorySession(e){if(!this._historyStorage)return;const a=e===this._activeHistorySessionId;if(this._historyStorage.deleteSession(e),a){this._activeHistorySessionId=null,this._startNewChat();return}this._currentPanelSource?.kind==="history"&&this._openHistoryPanel(!1)}async _loadHistorySession(e){const a=await this._historyStorage?.loadSession(e)??null;a&&(this._clearConversationState(!1),this._activeHistorySessionId=a.id,await this._restoreFromHistoryRecord(a))}async _restoreFromHistoryRecord(e){if(this._drawer?.lockScrollForRestore(),e.messages.length===0)return!1;this._markCurrentContextLaunchHandled(),this._currentThreadId=e.currentThreadId,this._lastThreadId=e.lastThreadId,this._currentThreadId&&this._lastThreadId&&this._currentThreadId>this._lastThreadId&&(this._currentThreadId=this._lastThreadId),this._chatCreatedAt=e.createdAt,this._lastBackendContext=e.lastBackendContext,e.panelThreads&&(this._panel.threads=[...e.panelThreads]);const a=this._panelThreadIdByMessageId(e.messages);if(e.panelSnapshotHtml)for(const[r,i]of Object.entries(e.panelSnapshotHtml)){const o=document.createElement("div");o.innerHTML=Ie(i),this._panel.snapshots.set(r,o)}if(e.panelSnapshotTypes)for(const[r,i]of Object.entries(e.panelSnapshotTypes))this._panel.snapshotTypes.set(r,i);this._restorePanelSnapshotSources(e.panelSnapshotSources,a),e.panelAiSpecByThread&&this._restorePanelAiSpecMap(e.panelAiSpecByThread);let n=0;for(const r of e.messages){const i={id:r.id,role:r.role,timestamp:r.timestamp,status:r.status};if(r.threadId!==void 0&&(i.threadId=r.threadId),r.content!==void 0&&(i.content=r.content),r.uiSpec!==void 0&&(i.uiSpec=r.uiSpec),r.frontendOnly&&(i.frontendOnly=!0),r.silent&&(i.silent=!0),r.renderHint!==void 0&&(i.renderHint=r.renderHint),r.photoAnalysis!==void 0&&(i.photoAnalysis=r.photoAnalysis),this._messages.push(i),!i.silent){const s=i.role!=="assistant"||!!i.content||!!i.attachment||this._isMessageHostedUISpec(i.uiSpec);i.role==="assistant"&&i.threadId&&s&&!this._threadsWithFirstBot.has(i.threadId)&&(this._threadsWithFirstBot.add(i.threadId),this._drawer?.markFirstBotMessage(i.id)),this._drawer?.addMessage(i),i.role==="assistant"&&i.threadId&&i.uiSpec&&(this._hydrateRestoredUISpecMetadata(i.id,i.threadId,i.uiSpec)||this._restoreInlineUISpec(i))}const o=parseInt(r.id.replace("msg-",""),10);!isNaN(o)&&o>n&&(n=o)}if(n>this._currentMessageId&&(this._currentMessageId=n),this._currentThreadId){const r=[...this._messages].reverse().find(i=>i.role==="assistant"&&i.threadId===this._currentThreadId&&!i.silent);r&&(this._panel.snapshots.has(r.id)||this._panel?.sourceForMessage(r.id))&&(this._panel?.restoreForMessage(r.id)??!1)&&(this._currentPanelSource=this._panel?.sourceForMessage(r.id)??this._panelSourceFromMessage(r),this._restorePanelAiZoneForThread(this._currentThreadId))}if(this._currentThreadId){const r=this._currentThreadId;for(const i of this._messages)i.threadId&&i.threadId>r&&this._shadow?.querySelector(`[data-message-id="${Ae(i.id)}"]`)?.classList.add("gengage-chat-bubble--hidden");this._shadow?.querySelectorAll("[data-thread-id]").forEach(i=>{i instanceof HTMLElement&&i.dataset.threadId&&i.dataset.threadId>r&&i.classList.add("gengage-chat-bubble--hidden")})}return this._presentation.releaseFocusedThread(),this._drawer?.setPresentationFocus(null),this._isMobileViewport&&this._drawer?.hasPanelContent()&&this._drawer.hideMobilePanel(),setTimeout(()=>{this._drawer?.scrollToLastThread()},550),!0}async _persistToIndexedDB(){!this._session||!this.config.session?.sessionId||await this._session.persist({userId:this.config.session.userId??"",appId:this.config.accountId,sessionId:this.config.session.sessionId,messages:this._messages,currentThreadId:this._currentThreadId,lastThreadId:this._lastThreadId,chatCreatedAt:this._chatCreatedAt,panelSnapshots:this._panel?.snapshots??new Map,panelSnapshotTypes:this._panel?.snapshotTypes??new Map,panelSnapshotSources:this._panel?.snapshotSourceMap()??new Map,panelThreads:this._panel?.threads??[],panelAiSpecByThread:this._panelAiSpecByThread,lastBackendContext:this._lastBackendContext,sku:this.config.pageContext?.sku})}_isSameOriginUrl(e){try{return e.trim()?new URL(e,window.location.href).origin===window.location.origin:!1}catch{return!1}}_enrichProductMentionsWithUrls(e){return e.map(a=>{const n=a.url?.trim();if(n&&ye(n))return n===a.url?a:{...a,url:n};const r=this._productMentionUrlForSku(a.sku);return r?{...a,url:r}:a})}_productMentionUrlForSku(e){const a=e.trim(),n=(this._skuToProductItem[e]??(a?this._skuToProductItem[a]:void 0))?.url;if(typeof n!="string")return;const r=n.trim();return r&&ye(r)?r:void 0}_handleProductNavClick(e){const a=this.config.isDemoWebsite===!0,n=!a&&this._isSameOriginUrl(e.url);if(!n){const o=this._coerceSkuKey(e.sku),s=this._activeSkuForProductSummaryClick();if(o&&s&&o===s)return}if(n){qe("gengage:similar:product-click",{sku:e.sku,url:e.url,sessionId:this.config.session?.sessionId??null,...e.name!==void 0&&e.name!==""?{productName:e.name}:{}}),this._saveSessionAndOpenURL(e.url);return}const r=e.url.trim();if(!a&&this.config.onProductNavigate!==void 0&&r.length>0&&ye(r)){xa(e.sku),this.config.onProductNavigate(r,e.sku,this.config.session?.sessionId??null);return}xa(e.sku);const i=e.name?.trim()?e.name.trim():e.sku;this._sendAction({title:i,type:"launchSingleProduct",payload:{sku:e.sku}})}_markUnavailableProductContext(){this._productContextUnavailableSku=this.config.pageContext?.sku??null}_clearUnavailableProductContext(){this._productContextUnavailableSku=null}_hasUnavailableProductContext(){const e=this.config.pageContext?.sku;return e!==void 0&&e.length>0&&this._productContextUnavailableSku===e}_ensureAssistantMessageRendered(e){if(!(this._shadow?.querySelector(`[data-message-id="${Ae(e.id)}"]`)||!this._drawer)){if(e.role==="assistant"&&e.threadId&&!this._threadsWithFirstBot.has(e.threadId)){this._threadsWithFirstBot.add(e.threadId),this._drawer.addMessage(e),this._drawer.markFirstBotMessage(e.id);return}this._drawer.addMessage(e)}}async _saveSessionAndOpenURL(e){this._session&&await this._session.saveAndOpenURL(e,()=>this._persistConversationStateForNavigation(),this._bridge)}async _navigateAssistantDriven(e,a={url:e}){try{this.saveSessionForNavigation()}catch{}try{await this._persistConversationStateForNavigation()}catch{}if(this._markAssistantSoftNavigationPending(),this._bridge?.send("navigate",a),!this._assistantSoftNavigationPending)return;const n=this._isRestoreMarkerFresh(),r=ka(e);!r&&n?this._scheduleAssistantSoftNavigationExpiry():r||this._clearAssistantSoftNavigationPending()}async _loadPayload(e,a){return this._session?this._session.loadPayload(e,a):null}async _restoreFromIndexedDB(e){if(!this._session?.db)return!1;const a=this.config.session?.sessionId;if(!a)return!1;const n=this.config.session?.userId??"",r=this.config.accountId;if(await this._session.loadFavorites(n,r),this._drawer?.updateFavoritesBadge(this._session.favoritedSkus.size),!e)return!1;const i=await this._session.db?.loadSession(n,r,a);if(!i||i.messages.length===0)return!1;const o=this.config.pageContext?.sku;if(o&&i.sku&&i.sku!==o)return!1;this._markCurrentContextLaunchHandled(),this._drawer?.lockScrollForRestore(),this._currentThreadId=i.currentThreadId,this._lastThreadId=i.lastThreadId,this._currentThreadId&&this._lastThreadId&&this._currentThreadId>this._lastThreadId&&(this._currentThreadId=this._lastThreadId),this._chatCreatedAt=i.createdAt,i.panelThreads&&(this._panel.threads=i.panelThreads);const s=this._panelThreadIdByMessageId(i.messages);if(i.panelSnapshotHtml)for(const[l,d]of Object.entries(i.panelSnapshotHtml)){const g=document.createElement("div");g.innerHTML=Ie(d),this._panel.snapshots.set(l,g)}if(i.panelSnapshotTypes)for(const[l,d]of Object.entries(i.panelSnapshotTypes))this._panel.snapshotTypes.set(l,d);this._restorePanelSnapshotSources(i.panelSnapshotSources,s),i.panelAiSpecByThread&&this._restorePanelAiSpecMap(i.panelAiSpecByThread);let c=0;for(const l of i.messages){const d={id:l.id,role:l.role,timestamp:l.timestamp,status:l.status};if(l.threadId!==void 0&&(d.threadId=l.threadId),l.content!==void 0&&(d.content=l.content),l.frontendOnly&&(d.frontendOnly=!0),l.silent&&(d.silent=!0),this._messages.push(d),d.silent)continue;if(d.role==="assistant"&&d.threadId){const u=await this._loadPayload(d.threadId,d.id);u&&(d.uiSpec=u,this._hydrateRestoredUISpecMetadata(d.id,d.threadId,u))}const g=d.role!=="assistant"||!!d.content||!!d.attachment||this._isMessageHostedUISpec(d.uiSpec);d.role==="assistant"&&d.threadId&&g&&!this._threadsWithFirstBot.has(d.threadId)&&(this._threadsWithFirstBot.add(d.threadId),this._drawer?.markFirstBotMessage(d.id)),this._drawer?.addMessage(d);const p=parseInt(l.id.replace("msg-",""),10);!isNaN(p)&&p>c&&(c=p),d.uiSpec&&(this._isMessageHostedUISpec(d.uiSpec)||this._restoreInlineUISpec(d),delete d.uiSpec)}if(c>this._currentMessageId&&(this._currentMessageId=c),this._currentThreadId){let l=await this._session.db?.loadContext(a,this._currentThreadId);l||(l=await this._session.db?.loadLatestContext(a)),l&&(this._lastBackendContext=l.context)}if(this._currentThreadId){const l=[...this._messages].reverse().find(d=>d.role==="assistant"&&d.threadId===this._currentThreadId&&!d.silent);l&&(this._panel.snapshots.has(l.id)||this._panel?.sourceForMessage(l.id))&&(this._panel?.restoreForMessage(l.id)??!1)&&(this._currentPanelSource=this._panel?.sourceForMessage(l.id)??this._panelSourceFromMessage(l),this._restorePanelAiZoneForThread(this._currentThreadId))}if(this._currentThreadId){const l=this._currentThreadId;for(const d of this._messages)d.threadId&&d.threadId>l&&this._shadow?.querySelector(`[data-message-id="${Ae(d.id)}"]`)?.classList.add("gengage-chat-bubble--hidden");this._shadow?.querySelectorAll("[data-thread-id]").forEach(d=>{d instanceof HTMLElement&&d.dataset.threadId&&d.dataset.threadId>l&&d.classList.add("gengage-chat-bubble--hidden")})}if(this._panel.threads.length>0&&this._currentThreadId){const l=this._panel.threads[this._panel.threads.length-1];if(l){const d=[...this._messages].reverse().find(p=>p.role==="assistant"&&p.threadId===l&&((this._panel?.snapshots.has(p.id)??!1)||this._panel?.sourceForMessage(p.id))),g=d?this._panel?.snapshotTypes.get(d.id):void 0;g&&this._panel?.updateTopBar(g)}}return this._presentation.releaseFocusedThread(),this._drawer?.setPresentationFocus(null),setTimeout(()=>{this._drawer?.scrollToLastThread()},550),this._activeHistorySessionId||this._persistHistory(),!0}_navigatePanelBack(){const e=this._localPanelHistory.pop();if(e){const a=this._buildRenderContext(),n=this._renderPanelFromSource(e.source,a);this._drawer?.setPanelContent(n),this._currentPanelSource=e.source;const r=this._localPanelHistory.length>0||(this._panel?.threads.length??0)>1;this._drawer?.updatePanelTopBar(r,!1,e.title);return}if(this._currentPanelSource?.kind==="favorites"||this._currentPanelSource?.kind==="history"){this._drawer?.clearPanel(),this._currentPanelSource=null;return}if(this._isMobileViewport){this._drawer?.hideMobilePanel();return}this._panel?.navigateBack()}_toggleComparisonSku(e){if(e==="")this._comparisonSelectMode=!this._comparisonSelectMode,this._comparisonSelectionWarning=null,this._comparisonSelectMode&&(Vd(this._currentThreadId??""),this._clearChoicePrompter()),this._comparisonSelectMode||(this._comparisonSelectedSkus=[],this._comparisonSelectionWarning=null,no());else if(this._comparisonSelectedSkus.indexOf(e)>=0)this._comparisonSelectedSkus=this._comparisonSelectedSkus.filter(a=>a!==e),this._comparisonSelectionWarning=null;else{if(this._comparisonSelectedSkus.length>=xt._MAX_COMPARISON_SELECTION){this._comparisonSelectionWarning=this._i18n.compareMaxHint??`You can select up to ${xt._MAX_COMPARISON_SELECTION} products`,this._comparisonRefreshRafId!==null&&cancelAnimationFrame(this._comparisonRefreshRafId),this._comparisonRefreshRafId=requestAnimationFrame(()=>{this._comparisonRefreshRafId=null,this._refreshComparisonUI()});return}this._comparisonSelectedSkus=[...this._comparisonSelectedSkus,e],this._comparisonSelectionWarning=null,to(e)}this._comparisonRefreshRafId!==null&&cancelAnimationFrame(this._comparisonRefreshRafId),this._comparisonRefreshRafId=requestAnimationFrame(()=>{this._comparisonRefreshRafId=null,this._refreshComparisonUI()})}_refreshComparisonUI(){const e=this._shadow?.querySelector(".gengage-chat-panel");if(!e){this._drawer?.setComparisonDockContent(null);return}const a=e.querySelector(".gengage-chat-product-grid-wrapper");if(!a){this._drawer?.setComparisonDockContent(null);return}const n=a.querySelectorAll(".gengage-chat-product-card[data-sku]");if(n.length===0){this._drawer?.setComparisonDockContent(null);return}const r=a.querySelector(".gengage-chat-comparison-toggle-btn");if(r&&r.classList.toggle("gengage-chat-comparison-toggle-btn--active",this._comparisonSelectMode),this._comparisonSelectMode)for(const i of n){if(i.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")){const p=i.parentElement,u=this._comparisonSelectedSkus.includes(i.dataset.sku);p.classList.toggle("gengage-chat-comparison-select-wrapper--selected",u);const m=p.querySelector(".gengage-chat-comparison-checkbox");if(m){m.dataset.selected=u?"true":"false",m.setAttribute("aria-pressed",u?"true":"false");const f=m.querySelector(".gengage-chat-comparison-checkbox-icon"),b=m.querySelector(".gengage-chat-comparison-checkbox-label");f&&(f.innerHTML=u?'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>':'<span class="gengage-chat-comparison-checkbox-dot"></span>'),b&&(b.textContent=u?this._i18n.comparisonSelectedLabel??"Selected":this._i18n.comparisonSelectLabel??"Select to compare")}continue}const o=i.dataset.sku,s=document.createElement("div");s.className="gengage-chat-comparison-select-wrapper";const c=this._comparisonSelectedSkus.includes(o);c&&s.classList.add("gengage-chat-comparison-select-wrapper--selected");const l=document.createElement("button");l.type="button",l.className="gengage-chat-comparison-checkbox",l.dataset.selected=c?"true":"false",l.setAttribute("aria-pressed",c?"true":"false");const d=document.createElement("span");d.className="gengage-chat-comparison-checkbox-icon",d.innerHTML=c?'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>':'<span class="gengage-chat-comparison-checkbox-dot"></span>';const g=document.createElement("span");g.className="gengage-chat-comparison-checkbox-label",g.textContent=c?this._i18n.comparisonSelectedLabel??"Selected":this._i18n.comparisonSelectLabel??"Select to compare",l.appendChild(d),l.appendChild(g),l.addEventListener("click",p=>{p.stopPropagation(),this._toggleComparisonSku(o)}),i.parentNode.insertBefore(s,i),s.appendChild(l),s.appendChild(i),s.classList.add("gds-clickable"),s.addEventListener("click",p=>{p.target.closest(".gengage-chat-comparison-checkbox")||(p.stopPropagation(),this._toggleComparisonSku(o))})}else{const i=a.querySelectorAll(".gengage-chat-comparison-select-wrapper");for(const o of i){const s=o.querySelector(".gengage-chat-product-card");s&&o.parentNode&&(o.parentNode.insertBefore(s,o),o.remove())}}if(a.querySelector(".gengage-chat-comparison-floating-btn")?.remove(),this._comparisonSelectMode){const i=Yn(this._comparisonSelectedSkus,this._buildRenderContext());this._isMobileViewport?(this._drawer?.setComparisonDockContent(i),this._ensureMobilePanelOverlayVisible()):(this._drawer?.setComparisonDockContent(null),a.appendChild(i))}else this._drawer?.setComparisonDockContent(null)}_clearChoicePrompter(){this._choicePrompterEl?.remove(),this._choicePrompterEl=null,this._shadow?.querySelectorAll(".gengage-chat-choice-prompter").forEach(e=>e.remove())}_mountChoicePrompter(){if(!this._choicePrompterEl)return!1;if(this._isMobileViewport)return this._drawer?.setComparisonDockContent(this._choicePrompterEl),this._ensureMobilePanelOverlayVisible(),!0;const e=this._shadow?.querySelector(".gengage-chat-panel-float");return e?(e.appendChild(this._choicePrompterEl),!0):(this._choicePrompterEl=null,!1)}_parseAddToCartActionPayload(e){if(typeof e!="object"||e===null)return null;const a=e,n=this._coerceAddToCartString(a.sku),r=this._coerceAddToCartString(a.cartCode??a.cart_code);let i=1;return typeof a.quantity=="number"&&Number.isFinite(a.quantity)&&a.quantity>0&&(i=Math.max(1,Math.floor(a.quantity))),!n||!r?null:{sku:n,cartCode:r,quantity:i}}_coerceAddToCartString(e){return typeof e=="string"&&e.length>0?e:typeof e=="number"&&Number.isFinite(e)?String(e):""}_maybeHandleDirectAddToCartCommand(e){if(Nr(e)!=="directAddToCart")return!1;const a=this._resolveCurrentProductAddToCartParams();return a?(this._runChatAddToCartFlow(a),!0):!1}_resolveCurrentProductAddToCartParams(){const e=Be(this.config.pageContext?.extra),a=this._activeSkuForProductSummaryClick()??this._coerceSkuKey(this._bridgeContext?.sku),n=this.config.pageContext?.pageType==="pdp",r=this._getCurrentPanelProductRecord(),i=n?this._getCurrentPanelProductGridRecord(a):null,o=n?this._getInlinePdpProductRecord():null;if(!r&&!i&&this._currentPanelSource&&!o)return null;const s=[r,i];n&&s.push(o),this._currentPanelSource||(s.push(this._getLatestProductDetailsRecord()),n&&s.push(this._getLatestProductGridRecord(a))),n&&s.push(Be(this._bridgeContext?.product),Be(this._bridgeContext?.productDetails),this._bridgeContext,Be(e?.product),Be(e?.productDetails),e);for(const c of s){const l=this._extractAddToCartParamsFromRecord(c,a);if(l)return l}return null}_extractAddToCartParamsFromRecord(e,a){if(!e||(e.inStock??e.in_stock)===!1)return null;const n=this._coerceSkuKey(e.sku??a),r=this._coerceAddToCartString(e.cartCode??e.cart_code);return!n||!r?null:{sku:n,cartCode:r,quantity:1}}_hasAddToCartConfirmationHandler(){return this.config.onAddToCart!==void 0||(this._eventCallbacks.get("gengage-cart-add")?.size??0)>0}_maybeHidePreservedMobilePanel(e,a){!this._isMobileViewport||e!=="addToCart"||a||this._drawer?.hasPanelContent()&&this._drawer.hideMobilePanel()}_addToCartRequestKey(e){return`${e.sku}\0${e.cartCode}\0${e.quantity}`}async _runChatAddToCartFlow(e){const a=this._addToCartRequestKey(e);if(this._pendingAddToCartKeys.has(a))return;this._pendingAddToCartKeys.add(a);const n={...e,sessionId:this.config.session?.sessionId??null};try{if(!this._hasAddToCartConfirmationHandler()){this._handleCallbackFailure("gengage-cart-add",n);return}const r=this._i18n.addingToCartToast??"Adding to cart...";if(this._drawer?.showCartToast(r,{tone:"neutral",autoHideMs:null}),this.config.onAddToCart!==void 0)try{await Promise.resolve(this.config.onAddToCart(e))}catch(o){console.error("[gengage] onAddToCart",o),this._drawer?.hideCartToast(),this._handleCallbackFailure("gengage-cart-add",n);return}if(!await this._runEventCallbacks("gengage-cart-add",n)){this._drawer?.hideCartToast();return}go(e.sku,e.quantity),qe("gengage:chat:add-to-cart",n),this._bridge?.send("addToCart",e),this._sendAction({title:this._i18n.addToCartButton??"Add to Cart",type:"addToCart",payload:{sku:e.sku,cart_code:e.cartCode,quantity:e.quantity}},{preservePanel:!0}),this._isMobileViewport&&(this._localPanelHistory=[],this._drawer?.hideMobilePanel());const i=this._i18n.addedToCartToast??"Added to cart";this._drawer?.showCartToast(i,{tone:"success"}),this._drawer?.flashCartBadge()}finally{this._pendingAddToCartKeys.delete(a)}}_buildRenderContext(){const e={locale:Mt(this.config.locale),onAction:a=>{if(a.type==="frontend_restore_panel_message"){this._restorePanelFromFrontendMessage(a.payload);return}if(Qi(a.title,a.type),a.type==="addToCart"){const r=this._parseAddToCartActionPayload(a.payload);if(r){this._runChatAddToCartFlow(r);return}}if(a.type==="launchSingleProduct"){const r=typeof a.payload=="object"&&a.payload!==null&&"sku"in a.payload?a.payload.sku:void 0,i=this._coerceSkuKey(r),o=this._activeSkuForProductSummaryClick();if(i&&o&&i===o)return;i&&xa(i,a.title)}if(a.type==="findSimilar"){const r=typeof a.payload=="object"&&a.payload!==null&&"sku"in a.payload?String(a.payload.sku):"";eo(r)}if(a.type==="getComparisonTable"){const r=a.payload,i=r&&typeof r=="object"?r:null,o=i&&typeof i.gengage_analytics_source=="string"?i.gengage_analytics_source:"";let s=[];i&&Array.isArray(i.sku_list)&&(s=i.sku_list.filter(c=>typeof c=="string")),o==="floating_compare_dock"?co(s):ao(s.length>0?s:this._comparisonSelectedSkus)}const n=a.type==="addToCart"||a.type==="like";this._sendAction(a,n?{preservePanel:!0}:void 0)},onProductClick:a=>{this._handleProductNavClick(a)},onAddToCart:a=>{this._runChatAddToCartFlow(a)},onProductSelect:a=>{const n=this._productSkuKey(a),r=this._activeSkuForProductSummaryClick();if(n&&r&&n===r)return;if(this._currentInlineProductSummaryRecord=a,this._currentPanelSource){const l=this._drawer?.getPanelTopBarTitle()??"";this._localPanelHistory.push({source:this._currentPanelSource,title:l}),this._localPanelHistory.length>xt._MAX_PANEL_HISTORY&&this._localPanelHistory.shift()}const i=this._buildRenderContext(),o={root:"root",elements:{root:{type:"ProductSummaryCard",props:{product:a}}}},s=this._shadow?.querySelector(".gengage-chat-messages");if(s){const l=this._renderUISpec(o,i);this._currentThreadId&&(l.dataset.threadId=this._currentThreadId),s.appendChild(l),this._scrollInlineIntoView(l,this._currentThreadId),this._drawer?.refreshPresentationCollapsed()}if(this.config.productDetailsExtended!==!0){this._clearAssistantPanelLikeStreamClearPanel();return}const c={root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:a}}}};this._drawer?.setPanelContent(this._renderUISpec(c,e)),this._currentPanelSource={kind:"spec",spec:c},this._panel&&(this._panel.currentType="ProductDetailsPanel"),this._drawer?.updatePanelTopBar(!0,!1,this._i18n.panelTitleProductDetails)},i18n:this._i18n,pricing:this.config.pricing,productPriceUi:this.config.productPriceUi,hideProductDiscountBadge:this.config.hideProductDiscountBadge,hideUserReviews:this.config.hideUserReviews,hideStockStatus:this.config.hideStockStatus,productSort:this._productSort,onSortChange:a=>{this._productSort=a},comparisonSelectMode:this._comparisonSelectMode,comparisonSelectedSkus:this._comparisonSelectedSkus,comparisonMaxSelection:xt._MAX_COMPARISON_SELECTION,comparisonSelectionWarning:this._comparisonSelectionWarning,onToggleComparisonSku:a=>{this._toggleComparisonSku(a)},favoritedSkus:this._session?.favoritedSkus??new Set,onFavoriteToggle:(a,n)=>{this._toggleProductFavorite(a,n)},isMobile:this._isMobileViewport};return e}async _toggleFavorite(e,a){if(!this._session)return;const n=this.config.session?.userId??"",r=this.config.accountId;await this._session.toggleFavorite(n,r,e,a),this._drawer?.updateFavoritesBadge(this._session.favoritedSkus.size)}_revertFavoriteHeartUi(e){const a=this._shadow?.querySelectorAll(`[data-gengage-favorite-sku="${Ae(e)}"]`);if(a?.length)for(const n of a){if(!(n instanceof HTMLButtonElement))continue;n.classList.toggle("gengage-chat-favorite-btn--active");const r=n.querySelector("svg");r&&r.setAttribute("fill",n.classList.contains("gengage-chat-favorite-btn--active")?"currentColor":"none")}}async _toggleProductFavorite(e,a){const n=!(this._session?.favoritedSkus.has(e)??!1),r={sku:e,product:a,favorited:n,sessionId:this.config.session?.sessionId??null};qe("gengage:chat:product-favorite",r),this._bridge?.send("productFavorite",r);const i=this._eventCallbacks.get("gengage-product-favorite");if(i&&i.size>0){for(const o of i)try{const s=o(r);if((s instanceof Promise?await s:s)===!1){this._revertFavoriteHeartUi(e),this._handleCallbackFailure("gengage-product-favorite",r);return}}catch{this._revertFavoriteHeartUi(e),this._handleCallbackFailure("gengage-product-favorite",r);return}this._session&&(n?this._session.favoritedSkus.add(e):this._session.favoritedSkus.delete(e),this._drawer?.updateFavoritesBadge(this._session.favoritedSkus.size));return}if(await this._toggleFavorite(e,a),n){io(e);const o=a.name??e;this._sendAction({title:o,type:"like",payload:{sku:e}},{preservePanel:!0})}}_openFavoritesPanel(){if(this._drawer){if(this._currentPanelSource){const e=this._drawer.getPanelTopBarTitle()??"";this._localPanelHistory.push({source:this._currentPanelSource,title:e}),this._localPanelHistory.length>xt._MAX_PANEL_HISTORY&&this._localPanelHistory.shift()}this._drawer.setPanelContent(this._buildFavoritesPageEl()),this._currentPanelSource={kind:"favorites"},this._drawer.updatePanelTopBar(!0,!1,this._i18n.favoritesPageTitle)}}_buildFavoritesPageEl(){const e=this._session?.getFavoriteProducts()??[];if(e.length===0){const i=document.createElement("div");i.className="gengage-chat-favorites-empty";const o=document.createElement("div");o.className="gengage-chat-favorites-empty-icon",o.innerHTML='<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>',i.appendChild(o);const s=document.createElement("p");return s.textContent=this._i18n.emptyFavoritesMessage,i.appendChild(s),i}const a={},n=[];for(const[i,o]of e.entries()){const s=`card_${i}`;n.push(s),a[s]={type:"ProductCard",props:{product:{sku:o.sku,name:o.name,imageUrl:o.imageUrl,price:o.price}}}}a.grid={type:"ProductGrid",children:n};const r={root:"grid",elements:a};return this._renderUISpec(r,this._buildRenderContext())}_isMessageHostedUISpec(e){if(!e)return!1;const a=e.elements[e.root];return!!a&&Br.has(a.type)}_isPanelAiSpec(e){if(!e)return!1;const a=e.elements[e.root];return a?.type==="AITopPicks"||a?.type==="AIGroupingCards"}_rememberPanelAiSpec(e,a){this._isPanelAiSpec(a)&&this._panelAiSpecByThread.set(e,a)}_panelThreadIdByMessageId(e){const a=new Map;for(const n of e)n.threadId&&a.set(n.id,n.threadId);return a}_restorePanelSnapshotSources(e,a){if(!(!e||!this._panel))for(const[n,r]of Object.entries(e)){const i=a.get(n);this._panel.registerSnapshotSource(n,{source:r,threadId:i,rebuild:()=>{const o=this._buildRenderContext();return this._renderPanelFromSource(r,o)}})}}_restorePanelAiSpecMap(e){for(const[a,n]of Object.entries(e))this._rememberPanelAiSpec(a,n)}_hydrateRestoredUISpecMetadata(e,a,n){const r=this._isMessageHostedUISpec(n);this._rememberPanelAiSpec(a,n);const i=n.elements[n.root];return i&&!r&&!this._panel?.snapshotTypes.has(e)&&this._panel?.snapshotTypes.set(e,i.type),r}_renderMessageUISpec(e){return!e.uiSpec||!this._isMessageHostedUISpec(e.uiSpec)?null:this._renderUISpec(e.uiSpec,this._buildRenderContext())}_maybeAddPanelRestoreMessage(e){if(!this._panel||!e.threadId||this._panel.snapshotTypes.get(e.id)!=="ProductGrid")return;const a=this._currentPanelSource;if(a?.kind!=="spec")return;const n=a.spec.elements[a.spec.root];if(!n||n.type!=="ProductGrid"||oa(n))return;const r=(n.children??[]).map(l=>{const d=a.spec.elements[l]?.props?.product;return d?{imageUrl:typeof d.imageUrl=="string"?d.imageUrl:void 0,name:typeof d.name=="string"?d.name:void 0}:null}).filter(l=>l!==null).slice(0,3);if(r.length===0)return;const i=typeof n.props?.panelTitle=="string"?n.props.panelTitle:void 0,o=this._panel.titleForComponent("ProductGrid",i),s=this._createMessage("assistant","");s.threadId=e.threadId,s.frontendOnly=!0,s.uiSpec={root:"root",elements:{root:{type:"PanelRestoreCard",props:{title:o,showTitle:!1,ctaLabel:this._i18n.showPanelAriaLabel??"Show Results",panelMessageId:s.id,highlightMessageId:s.id,threadId:e.threadId,products:r}}}},this._messages.push(s);const c=this._clonePanelSourceForHistory(a);this._panel.snapshotForMessage(s.id,{source:c,threadId:s.threadId,rebuild:()=>{const l=this._buildRenderContext();return this._renderPanelFromSource(c,l)}}),this._ensureAssistantMessageRendered(s)}_restorePanelFromFrontendMessage(e){const a=e&&typeof e=="object"?e:null;if(!a)return;const n=typeof a.panelMessageId=="string"?a.panelMessageId:"",r=typeof a.highlightMessageId=="string"?a.highlightMessageId:n,i=typeof a.threadId=="string"?a.threadId:"";if(!n)return;const o=()=>{if(this._panel?.snapshotTypes.get(n)==="ProductGrid"&&this._ensureMobilePanelOverlayVisible(),this._panel?.restoreForMessage(n,r)??!1){const s=this._messages.find(l=>l.id===n);this._currentPanelSource=this._panel?.sourceForMessage(n)??this._panelSourceFromMessage(s);const c=this._panel?.currentType??"";this._panel?.updateTopBar(c),i&&this._restorePanelAiZoneForThread(i)}};if(i&&this._currentThreadId!==i){this._rollbackToThread(i),requestAnimationFrame(o);return}o()}_restorePanelAiZoneForThread(e){const a=this._panelAiSpecByThread.get(e);if(!a||!this._drawer){this._drawer?.setPanelAiZoneState("hidden");return}const n=this._renderUISpec(a,this._buildRenderContext());this._drawer.setPanelAiZoneState("results",{resultEl:n})}async _runEventCallbacks(e,a){const n=this._eventCallbacks.get(e);if(!n||n.size===0)return!0;for(const r of n)try{if(await Promise.resolve(r(a))===!1)return this._handleCallbackFailure(e,a),!1}catch{return this._handleCallbackFailure(e,a),!1}return!0}_handleCallbackFailure(e,a){if(e==="gengage-cart-add"){const n=this._i18n.cartAddErrorMessage,r=this._createMessage("assistant",n);this._currentThreadId&&(r.threadId=this._currentThreadId),this._messages.push(r),this._drawer?.addMessage(r),this._persistConversationState()}if(e==="gengage-product-favorite"){const n=this._i18n.favoriteToggleErrorMessage,r=this._createMessage("assistant",n);this._currentThreadId&&(r.threadId=this._currentThreadId),this._messages.push(r),this._drawer?.addMessage(r),this._persistConversationState()}}_restoreInlineUISpec(e){if(!e.uiSpec||!this._drawer)return;const a=e.uiSpec,n=a.elements[a.root];if(!n)return;const r=n.type;if(r==="ActionButtons"||r==="ComparisonTable"||r==="ProductGrid"&&this._panel?.snapshotTypes.get(e.id)==="ProductGrid"||oa(n))return;const i=this._buildRenderContext(),o=this._shadow?.querySelector(".gengage-chat-messages");if(!o)return;if(r==="ProductDetailsPanel"){const c=n.props?.product;if(!c)return;this._currentInlineProductSummaryRecord=c;const l={root:"root",elements:{root:{type:"ProductSummaryCard",props:{product:c}}}},d=this._renderUISpec(l,i);e.threadId&&(d.dataset.threadId=e.threadId),o.appendChild(d),this._drawer?.refreshPresentationCollapsed();return}const s=this._renderUISpec(a,i);e.threadId&&(s.dataset.threadId=e.threadId),o.appendChild(s),this._drawer?.refreshPresentationCollapsed()}_createMessage(e,a){return this._currentMessageId++,{id:`msg-${this._currentMessageId}`,role:e,content:a,timestamp:Date.now(),status:"done"}}_resolveI18n(e){return{...mc(e.locale),...e.i18n}}_resolveUISpecRegistry(){return Ui(Xn(),this.config.renderer?.registry)}_renderUISpec(e,a){const n=e.elements[e.root];if(n?.type==="ProductSummaryCard"){const c=Be(n.props),l=Be(c?.product)??c;l&&(this._currentInlineProductSummaryRecord=l)}const r=this._resolveUISpecRegistry(),i=this.config.renderer?.unknownRenderer??za,o=(c,l)=>Qn(c,l,r,i),s=this.config.renderer?.renderUISpec;return s?s(e,a,{registry:r,unknownRenderer:i,defaultRender:o}):o(e,a)}};function Dg(){return new Or}var Fr;function T(t,e,a){function n(s,c){if(s._zod||Object.defineProperty(s,"_zod",{value:{def:c,constr:o,traits:new Set},enumerable:!1}),s._zod.traits.has(t))return;s._zod.traits.add(t),e(s,c);const l=o.prototype,d=Object.keys(l);for(let g=0;g<d.length;g++){const p=d[g];p in s||(s[p]=l[p].bind(s))}}const r=a?.Parent??Object;class i extends r{}Object.defineProperty(i,"name",{value:t});function o(s){var c;const l=a?.Parent?new i:this;n(l,s),(c=l._zod).deferred??(c.deferred=[]);for(const d of l._zod.deferred)d();return l}return Object.defineProperty(o,"init",{value:n}),Object.defineProperty(o,Symbol.hasInstance,{value:s=>a?.Parent&&s instanceof a.Parent?!0:s?._zod?.traits?.has(t)}),Object.defineProperty(o,"name",{value:t}),o}var Pt=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},$r=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}};(Fr=globalThis).__zod_globalConfig??(Fr.__zod_globalConfig={});var sa=globalThis.__zod_globalConfig;function rt(t){return t&&Object.assign(sa,t),sa}function Dr(t){const e=Object.values(t).filter(a=>typeof a=="number");return Object.entries(t).filter(([a,n])=>e.indexOf(+a)===-1).map(([a,n])=>n)}function Ga(t,e){return typeof e=="bigint"?e.toString():e}function Wa(t){return{get value(){{const e=t();return Object.defineProperty(this,"value",{value:e}),e}throw new Error("cached value already set")}}}function Ka(t){return t==null}function Ya(t){const e=t.startsWith("^")?1:0,a=t.endsWith("$")?t.length-1:t.length;return t.slice(e,a)}function Hg(t,e){const a=t/e,n=Math.round(a),r=Number.EPSILON*Math.max(Math.abs(a),1);return Math.abs(a-n)<r?0:a-n}var Hr=Symbol("evaluating");function pe(t,e,a){let n;Object.defineProperty(t,e,{get(){if(n!==Hr)return n===void 0&&(n=Hr,n=a()),n},set(r){Object.defineProperty(t,e,{value:r})},configurable:!0})}function ft(t,e,a){Object.defineProperty(t,e,{value:a,writable:!0,enumerable:!0,configurable:!0})}function lt(...t){const e={};for(const a of t)Object.assign(e,Object.getOwnPropertyDescriptors(a));return Object.defineProperties({},e)}function Ur(t){return JSON.stringify(t)}function Ug(t){return t.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var jr="captureStackTrace"in Error?Error.captureStackTrace:(...t)=>{};function ca(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var jg=Wa(()=>{if(sa.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch{return!1}});function Tt(t){if(ca(t)===!1)return!1;const e=t.constructor;if(e===void 0||typeof e!="function")return!0;const a=e.prototype;return!(ca(a)===!1||Object.prototype.hasOwnProperty.call(a,"isPrototypeOf")===!1)}function qr(t){return Tt(t)?{...t}:Array.isArray(t)?[...t]:t instanceof Map?new Map(t):t instanceof Set?new Set(t):t}var qg=new Set(["string","number","symbol"]);function la(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function dt(t,e,a){const n=new t._zod.constr(e??t._zod.def);return(!e||a?.parent)&&(n._zod.parent=t),n}function V(t){const e=t;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function Zg(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}var Vg={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Gg(t,e){const a=t._zod.def,n=a.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");return dt(t,lt(t._zod.def,{get shape(){const r={};for(const i in e){if(!(i in a.shape))throw new Error(`Unrecognized key: "${i}"`);e[i]&&(r[i]=a.shape[i])}return ft(this,"shape",r),r},checks:[]}))}function Wg(t,e){const a=t._zod.def,n=a.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");return dt(t,lt(t._zod.def,{get shape(){const r={...t._zod.def.shape};for(const i in e){if(!(i in a.shape))throw new Error(`Unrecognized key: "${i}"`);e[i]&&delete r[i]}return ft(this,"shape",r),r},checks:[]}))}function Kg(t,e){if(!Tt(e))throw new Error("Invalid input to extend: expected a plain object");const a=t._zod.def.checks;if(a&&a.length>0){const n=t._zod.def.shape;for(const r in e)if(Object.getOwnPropertyDescriptor(n,r)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return dt(t,lt(t._zod.def,{get shape(){const n={...t._zod.def.shape,...e};return ft(this,"shape",n),n}}))}function Yg(t,e){if(!Tt(e))throw new Error("Invalid input to safeExtend: expected a plain object");return dt(t,lt(t._zod.def,{get shape(){const a={...t._zod.def.shape,...e};return ft(this,"shape",a),a}}))}function Jg(t,e){if(t._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");return dt(t,lt(t._zod.def,{get shape(){const a={...t._zod.def.shape,...e._zod.def.shape};return ft(this,"shape",a),a},get catchall(){return e._zod.def.catchall},checks:e._zod.def.checks??[]}))}function Xg(t,e,a){const n=e._zod.def.checks;if(n&&n.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");return dt(e,lt(e._zod.def,{get shape(){const r=e._zod.def.shape,i={...r};if(a)for(const o in a){if(!(o in r))throw new Error(`Unrecognized key: "${o}"`);a[o]&&(i[o]=t?new t({type:"optional",innerType:r[o]}):r[o])}else for(const o in r)i[o]=t?new t({type:"optional",innerType:r[o]}):r[o];return ft(this,"shape",i),i},checks:[]}))}function Qg(t,e,a){return dt(e,lt(e._zod.def,{get shape(){const n=e._zod.def.shape,r={...n};if(a)for(const i in a){if(!(i in r))throw new Error(`Unrecognized key: "${i}"`);a[i]&&(r[i]=new t({type:"nonoptional",innerType:n[i]}))}else for(const i in n)r[i]=new t({type:"nonoptional",innerType:n[i]});return ft(this,"shape",r),r}}))}function At(t,e=0){if(t.aborted===!0)return!0;for(let a=e;a<t.issues.length;a++)if(t.issues[a]?.continue!==!0)return!0;return!1}function ep(t,e=0){if(t.aborted===!0)return!0;for(let a=e;a<t.issues.length;a++)if(t.issues[a]?.continue===!1)return!0;return!1}function Lt(t,e){return e.map(a=>{var n;return(n=a).path??(n.path=[]),a.path.unshift(t),a})}function da(t){return typeof t=="string"?t:t?.message}function it(t,e,a){const n=t.message?t.message:da(t.inst?._zod.def?.error?.(t))??da(e?.error?.(t))??da(a.customError?.(t))??da(a.localeError?.(t))??"Invalid input",{inst:r,continue:i,input:o,...s}=t;return s.path??(s.path=[]),s.message=n,e?.reportInput&&(s.input=o),s}function Ja(t){return Array.isArray(t)?"array":typeof t=="string"?"string":"unknown"}function jt(...t){const[e,a,n]=t;return typeof e=="string"?{message:e,code:"custom",input:a,inst:n}:{...e}}var Zr=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),t.message=JSON.stringify(e,Ga,2),Object.defineProperty(t,"toString",{value:()=>t.message,enumerable:!1})},Vr=T("$ZodError",Zr),Gr=T("$ZodError",Zr,{Parent:Error});function tp(t,e=a=>a.message){const a={},n=[];for(const r of t.issues)r.path.length>0?(a[r.path[0]]=a[r.path[0]]||[],a[r.path[0]].push(e(r))):n.push(e(r));return{formErrors:n,fieldErrors:a}}function ap(t,e=a=>a.message){const a={_errors:[]},n=(r,i=[])=>{for(const o of r.issues)if(o.code==="invalid_union"&&o.errors.length)o.errors.map(s=>n({issues:s},[...i,...o.path]));else if(o.code==="invalid_key")n({issues:o.issues},[...i,...o.path]);else if(o.code==="invalid_element")n({issues:o.issues},[...i,...o.path]);else{const s=[...i,...o.path];if(s.length===0)a._errors.push(e(o));else{let c=a,l=0;for(;l<s.length;){const d=s[l];l!==s.length-1?c[d]=c[d]||{_errors:[]}:(c[d]=c[d]||{_errors:[]},c[d]._errors.push(e(o))),c=c[d],l++}}}};return n(t),a}var Xa=t=>(e,a,n,r)=>{const i=n?{...n,async:!1}:{async:!1},o=e._zod.run({value:a,issues:[]},i);if(o instanceof Promise)throw new Pt;if(o.issues.length){const s=new(r?.Err??t)(o.issues.map(c=>it(c,i,rt())));throw jr(s,r?.callee),s}return o.value},Qa=t=>async(e,a,n,r)=>{const i=n?{...n,async:!0}:{async:!0};let o=e._zod.run({value:a,issues:[]},i);if(o instanceof Promise&&(o=await o),o.issues.length){const s=new(r?.Err??t)(o.issues.map(c=>it(c,i,rt())));throw jr(s,r?.callee),s}return o.value},ga=t=>(e,a,n)=>{const r=n?{...n,async:!1}:{async:!1},i=e._zod.run({value:a,issues:[]},r);if(i instanceof Promise)throw new Pt;return i.issues.length?{success:!1,error:new(t??Vr)(i.issues.map(o=>it(o,r,rt())))}:{success:!0,data:i.value}},np=ga(Gr),pa=t=>async(e,a,n)=>{const r=n?{...n,async:!0}:{async:!0};let i=e._zod.run({value:a,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new t(i.issues.map(o=>it(o,r,rt())))}:{success:!0,data:i.value}},rp=pa(Gr),ip=t=>(e,a,n)=>{const r=n?{...n,direction:"backward"}:{direction:"backward"};return Xa(t)(e,a,r)},op=t=>(e,a,n)=>Xa(t)(e,a,n),sp=t=>async(e,a,n)=>{const r=n?{...n,direction:"backward"}:{direction:"backward"};return Qa(t)(e,a,r)},cp=t=>async(e,a,n)=>Qa(t)(e,a,n),lp=t=>(e,a,n)=>{const r=n?{...n,direction:"backward"}:{direction:"backward"};return ga(t)(e,a,r)},dp=t=>(e,a,n)=>ga(t)(e,a,n),gp=t=>async(e,a,n)=>{const r=n?{...n,direction:"backward"}:{direction:"backward"};return pa(t)(e,a,r)},pp=t=>async(e,a,n)=>pa(t)(e,a,n),hp=/^[cC][0-9a-z]{6,}$/,up=/^[0-9a-z]+$/,mp=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,fp=/^[0-9a-vA-V]{20}$/,bp=/^[A-Za-z0-9]{27}$/,vp=/^[a-zA-Z0-9_-]{21}$/,yp=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,xp=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Wr=t=>t?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,_p=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,wp="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function kp(){return new RegExp(wp,"u")}var Sp=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Cp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Ep=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Pp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Tp=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Kr=/^[A-Za-z0-9_-]*$/,Ap=/^https?$/,Lp=/^\+[1-9]\d{6,14}$/,Yr="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Ip=new RegExp(`^${Yr}$`);function Jr(t){const e="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof t.precision=="number"?t.precision===-1?`${e}`:t.precision===0?`${e}:[0-5]\\d`:`${e}:[0-5]\\d\\.\\d{${t.precision}}`:`${e}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Np(t){return new RegExp(`^${Jr(t)}$`)}function zp(t){const e=Jr({precision:t.precision}),a=["Z"];t.local&&a.push(""),t.offset&&a.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const n=`${e}(?:${a.join("|")})`;return new RegExp(`^${Yr}T(?:${n})$`)}var Mp=t=>{const e=t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)},Bp=/^-?\d+$/,Xr=/^-?\d+(?:\.\d+)?$/,Rp=/^(?:true|false)$/i,Op=/^[^A-Z]*$/,Fp=/^[^a-z]*$/,Fe=T("$ZodCheck",(t,e)=>{var a;t._zod??(t._zod={}),t._zod.def=e,(a=t._zod).onattach??(a.onattach=[])}),Qr={number:"number",bigint:"bigint",object:"date"},ei=T("$ZodCheckLessThan",(t,e)=>{Fe.init(t,e);const a=Qr[typeof e.value];t._zod.onattach.push(n=>{const r=n._zod.bag,i=(e.inclusive?r.maximum:r.exclusiveMaximum)??Number.POSITIVE_INFINITY;e.value<i&&(e.inclusive?r.maximum=e.value:r.exclusiveMaximum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value<=e.value:n.value<e.value)||n.issues.push({origin:a,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),ti=T("$ZodCheckGreaterThan",(t,e)=>{Fe.init(t,e);const a=Qr[typeof e.value];t._zod.onattach.push(n=>{const r=n._zod.bag,i=(e.inclusive?r.minimum:r.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>i&&(e.inclusive?r.minimum=e.value:r.exclusiveMinimum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value>=e.value:n.value>e.value)||n.issues.push({origin:a,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),$p=T("$ZodCheckMultipleOf",(t,e)=>{Fe.init(t,e),t._zod.onattach.push(a=>{var n;(n=a._zod.bag).multipleOf??(n.multipleOf=e.value)}),t._zod.check=a=>{if(typeof a.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof a.value=="bigint"?a.value%e.value===BigInt(0):Hg(a.value,e.value)===0)||a.issues.push({origin:typeof a.value,code:"not_multiple_of",divisor:e.value,input:a.value,inst:t,continue:!e.abort})}}),Dp=T("$ZodCheckNumberFormat",(t,e)=>{Fe.init(t,e),e.format=e.format||"float64";const a=e.format?.includes("int"),n=a?"int":"number",[r,i]=Vg[e.format];t._zod.onattach.push(o=>{const s=o._zod.bag;s.format=e.format,s.minimum=r,s.maximum=i,a&&(s.pattern=Bp)}),t._zod.check=o=>{const s=o.value;if(a){if(!Number.isInteger(s)){o.issues.push({expected:n,format:e.format,code:"invalid_type",continue:!1,input:s,inst:t});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort}):o.issues.push({input:s,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort});return}}s<r&&o.issues.push({origin:"number",input:s,code:"too_small",minimum:r,inclusive:!0,inst:t,continue:!e.abort}),s>i&&o.issues.push({origin:"number",input:s,code:"too_big",maximum:i,inclusive:!0,inst:t,continue:!e.abort})}}),Hp=T("$ZodCheckMaxLength",(t,e)=>{var a;Fe.init(t,e),(a=t._zod.def).when??(a.when=n=>{const r=n.value;return!Ka(r)&&r.length!==void 0}),t._zod.onattach.push(n=>{const r=n._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum<r&&(n._zod.bag.maximum=e.maximum)}),t._zod.check=n=>{const r=n.value;if(r.length<=e.maximum)return;const i=Ja(r);n.issues.push({origin:i,code:"too_big",maximum:e.maximum,inclusive:!0,input:r,inst:t,continue:!e.abort})}}),Up=T("$ZodCheckMinLength",(t,e)=>{var a;Fe.init(t,e),(a=t._zod.def).when??(a.when=n=>{const r=n.value;return!Ka(r)&&r.length!==void 0}),t._zod.onattach.push(n=>{const r=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>r&&(n._zod.bag.minimum=e.minimum)}),t._zod.check=n=>{const r=n.value;if(r.length>=e.minimum)return;const i=Ja(r);n.issues.push({origin:i,code:"too_small",minimum:e.minimum,inclusive:!0,input:r,inst:t,continue:!e.abort})}}),jp=T("$ZodCheckLengthEquals",(t,e)=>{var a;Fe.init(t,e),(a=t._zod.def).when??(a.when=n=>{const r=n.value;return!Ka(r)&&r.length!==void 0}),t._zod.onattach.push(n=>{const r=n._zod.bag;r.minimum=e.length,r.maximum=e.length,r.length=e.length}),t._zod.check=n=>{const r=n.value,i=r.length;if(i===e.length)return;const o=Ja(r),s=i>e.length;n.issues.push({origin:o,...s?{code:"too_big",maximum:e.length}:{code:"too_small",minimum:e.length},inclusive:!0,exact:!0,input:n.value,inst:t,continue:!e.abort})}}),ha=T("$ZodCheckStringFormat",(t,e)=>{var a,n;Fe.init(t,e),t._zod.onattach.push(r=>{const i=r._zod.bag;i.format=e.format,e.pattern&&(i.patterns??(i.patterns=new Set),i.patterns.add(e.pattern))}),e.pattern?(a=t._zod).check??(a.check=r=>{e.pattern.lastIndex=0,!e.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:e.format,input:r.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:t,continue:!e.abort})}):(n=t._zod).check??(n.check=()=>{})}),qp=T("$ZodCheckRegex",(t,e)=>{ha.init(t,e),t._zod.check=a=>{e.pattern.lastIndex=0,!e.pattern.test(a.value)&&a.issues.push({origin:"string",code:"invalid_format",format:"regex",input:a.value,pattern:e.pattern.toString(),inst:t,continue:!e.abort})}}),Zp=T("$ZodCheckLowerCase",(t,e)=>{e.pattern??(e.pattern=Op),ha.init(t,e)}),Vp=T("$ZodCheckUpperCase",(t,e)=>{e.pattern??(e.pattern=Fp),ha.init(t,e)}),Gp=T("$ZodCheckIncludes",(t,e)=>{Fe.init(t,e);const a=la(e.includes),n=new RegExp(typeof e.position=="number"?`^.{${e.position}}${a}`:a);e.pattern=n,t._zod.onattach.push(r=>{const i=r._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(n)}),t._zod.check=r=>{r.value.includes(e.includes,e.position)||r.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:e.includes,input:r.value,inst:t,continue:!e.abort})}}),Wp=T("$ZodCheckStartsWith",(t,e)=>{Fe.init(t,e);const a=new RegExp(`^${la(e.prefix)}.*`);e.pattern??(e.pattern=a),t._zod.onattach.push(n=>{const r=n._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(a)}),t._zod.check=n=>{n.value.startsWith(e.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:e.prefix,input:n.value,inst:t,continue:!e.abort})}}),Kp=T("$ZodCheckEndsWith",(t,e)=>{Fe.init(t,e);const a=new RegExp(`.*${la(e.suffix)}$`);e.pattern??(e.pattern=a),t._zod.onattach.push(n=>{const r=n._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(a)}),t._zod.check=n=>{n.value.endsWith(e.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:e.suffix,input:n.value,inst:t,continue:!e.abort})}}),Yp=T("$ZodCheckOverwrite",(t,e)=>{Fe.init(t,e),t._zod.check=a=>{a.value=e.tx(a.value)}}),Jp=class{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}const e=t.split(`
|
|
549
|
+
`).filter(r=>r),a=Math.min(...e.map(r=>r.length-r.trimStart().length)),n=e.map(r=>r.slice(a)).map(r=>" ".repeat(this.indent*2)+r);for(const r of n)this.content.push(r)}compile(){const t=Function,e=this?.args,a=[...(this?.content??[""]).map(n=>` ${n}`)];return new t(...e,a.join(`
|
|
550
|
+
`))}},Xp={major:4,minor:4,patch:3},xe=T("$ZodType",(t,e)=>{var a;t??(t={}),t._zod.def=e,t._zod.bag=t._zod.bag||{},t._zod.version=Xp;const n=[...t._zod.def.checks??[]];t._zod.traits.has("$ZodCheck")&&n.unshift(t);for(const r of n)for(const i of r._zod.onattach)i(t);if(n.length===0)(a=t._zod).deferred??(a.deferred=[]),t._zod.deferred?.push(()=>{t._zod.run=t._zod.parse});else{const r=(o,s,c)=>{let l=At(o),d;for(const g of s){if(g._zod.def.when){if(ep(o)||!g._zod.def.when(o))continue}else if(l)continue;const p=o.issues.length,u=g._zod.check(o);if(u instanceof Promise&&c?.async===!1)throw new Pt;if(d||u instanceof Promise)d=(d??Promise.resolve()).then(async()=>{await u,o.issues.length!==p&&(l||(l=At(o,p)))});else{if(o.issues.length===p)continue;l||(l=At(o,p))}}return d?d.then(()=>o):o},i=(o,s,c)=>{if(At(o))return o.aborted=!0,o;const l=r(s,n,c);if(l instanceof Promise){if(c.async===!1)throw new Pt;return l.then(d=>t._zod.parse(d,c))}return t._zod.parse(l,c)};t._zod.run=(o,s)=>{if(s.skipChecks)return t._zod.parse(o,s);if(s.direction==="backward"){const l=t._zod.parse({value:o.value,issues:[]},{...s,skipChecks:!0});return l instanceof Promise?l.then(d=>i(d,o,s)):i(l,o,s)}const c=t._zod.parse(o,s);if(c instanceof Promise){if(s.async===!1)throw new Pt;return c.then(l=>r(l,n,s))}return r(c,n,s)}}pe(t,"~standard",()=>({validate:r=>{try{const i=np(t,r);return i.success?{value:i.data}:{issues:i.error?.issues}}catch{return rp(t,r).then(o=>o.success?{value:o.data}:{issues:o.error?.issues})}},vendor:"zod",version:1}))}),en=T("$ZodString",(t,e)=>{xe.init(t,e),t._zod.pattern=[...t?._zod.bag?.patterns??[]].pop()??Mp(t._zod.bag),t._zod.parse=(a,n)=>{if(e.coerce)try{a.value=String(a.value)}catch{}return typeof a.value=="string"||a.issues.push({expected:"string",code:"invalid_type",input:a.value,inst:t}),a}}),be=T("$ZodStringFormat",(t,e)=>{ha.init(t,e),en.init(t,e)}),Qp=T("$ZodGUID",(t,e)=>{e.pattern??(e.pattern=xp),be.init(t,e)}),eh=T("$ZodUUID",(t,e)=>{if(e.version){const a={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[e.version];if(a===void 0)throw new Error(`Invalid UUID version: "${e.version}"`);e.pattern??(e.pattern=Wr(a))}else e.pattern??(e.pattern=Wr());be.init(t,e)}),th=T("$ZodEmail",(t,e)=>{e.pattern??(e.pattern=_p),be.init(t,e)}),ah=T("$ZodURL",(t,e)=>{be.init(t,e),t._zod.check=a=>{try{const n=a.value.trim();if(!e.normalize&&e.protocol?.source===Ap.source&&!/^https?:\/\//i.test(n)){a.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:a.value,inst:t,continue:!e.abort});return}const r=new URL(n);e.hostname&&(e.hostname.lastIndex=0,e.hostname.test(r.hostname)||a.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:a.value,inst:t,continue:!e.abort})),e.protocol&&(e.protocol.lastIndex=0,e.protocol.test(r.protocol.endsWith(":")?r.protocol.slice(0,-1):r.protocol)||a.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:a.value,inst:t,continue:!e.abort})),e.normalize?a.value=r.href:a.value=n;return}catch{a.issues.push({code:"invalid_format",format:"url",input:a.value,inst:t,continue:!e.abort})}}}),nh=T("$ZodEmoji",(t,e)=>{e.pattern??(e.pattern=kp()),be.init(t,e)}),rh=T("$ZodNanoID",(t,e)=>{e.pattern??(e.pattern=vp),be.init(t,e)}),ih=T("$ZodCUID",(t,e)=>{e.pattern??(e.pattern=hp),be.init(t,e)}),oh=T("$ZodCUID2",(t,e)=>{e.pattern??(e.pattern=up),be.init(t,e)}),sh=T("$ZodULID",(t,e)=>{e.pattern??(e.pattern=mp),be.init(t,e)}),ch=T("$ZodXID",(t,e)=>{e.pattern??(e.pattern=fp),be.init(t,e)}),lh=T("$ZodKSUID",(t,e)=>{e.pattern??(e.pattern=bp),be.init(t,e)}),dh=T("$ZodISODateTime",(t,e)=>{e.pattern??(e.pattern=zp(e)),be.init(t,e)}),gh=T("$ZodISODate",(t,e)=>{e.pattern??(e.pattern=Ip),be.init(t,e)}),ph=T("$ZodISOTime",(t,e)=>{e.pattern??(e.pattern=Np(e)),be.init(t,e)}),hh=T("$ZodISODuration",(t,e)=>{e.pattern??(e.pattern=yp),be.init(t,e)}),uh=T("$ZodIPv4",(t,e)=>{e.pattern??(e.pattern=Sp),be.init(t,e),t._zod.bag.format="ipv4"}),mh=T("$ZodIPv6",(t,e)=>{e.pattern??(e.pattern=Cp),be.init(t,e),t._zod.bag.format="ipv6",t._zod.check=a=>{try{new URL(`http://[${a.value}]`)}catch{a.issues.push({code:"invalid_format",format:"ipv6",input:a.value,inst:t,continue:!e.abort})}}}),fh=T("$ZodCIDRv4",(t,e)=>{e.pattern??(e.pattern=Ep),be.init(t,e)}),bh=T("$ZodCIDRv6",(t,e)=>{e.pattern??(e.pattern=Pp),be.init(t,e),t._zod.check=a=>{const n=a.value.split("/");try{if(n.length!==2)throw new Error;const[r,i]=n;if(!i)throw new Error;const o=Number(i);if(`${o}`!==i)throw new Error;if(o<0||o>128)throw new Error;new URL(`http://[${r}]`)}catch{a.issues.push({code:"invalid_format",format:"cidrv6",input:a.value,inst:t,continue:!e.abort})}}});function ai(t){if(t==="")return!0;if(/\s/.test(t)||t.length%4!==0)return!1;try{return atob(t),!0}catch{return!1}}var vh=T("$ZodBase64",(t,e)=>{e.pattern??(e.pattern=Tp),be.init(t,e),t._zod.bag.contentEncoding="base64",t._zod.check=a=>{ai(a.value)||a.issues.push({code:"invalid_format",format:"base64",input:a.value,inst:t,continue:!e.abort})}});function yh(t){if(!Kr.test(t))return!1;const e=t.replace(/[-_]/g,a=>a==="-"?"+":"/");return ai(e.padEnd(Math.ceil(e.length/4)*4,"="))}var xh=T("$ZodBase64URL",(t,e)=>{e.pattern??(e.pattern=Kr),be.init(t,e),t._zod.bag.contentEncoding="base64url",t._zod.check=a=>{yh(a.value)||a.issues.push({code:"invalid_format",format:"base64url",input:a.value,inst:t,continue:!e.abort})}}),_h=T("$ZodE164",(t,e)=>{e.pattern??(e.pattern=Lp),be.init(t,e)});function wh(t,e=null){try{const a=t.split(".");if(a.length!==3)return!1;const[n]=a;if(!n)return!1;const r=JSON.parse(atob(n));return!("typ"in r&&r?.typ!=="JWT"||!r.alg||e&&(!("alg"in r)||r.alg!==e))}catch{return!1}}var kh=T("$ZodJWT",(t,e)=>{be.init(t,e),t._zod.check=a=>{wh(a.value,e.alg)||a.issues.push({code:"invalid_format",format:"jwt",input:a.value,inst:t,continue:!e.abort})}}),ni=T("$ZodNumber",(t,e)=>{xe.init(t,e),t._zod.pattern=t._zod.bag.pattern??Xr,t._zod.parse=(a,n)=>{if(e.coerce)try{a.value=Number(a.value)}catch{}const r=a.value;if(typeof r=="number"&&!Number.isNaN(r)&&Number.isFinite(r))return a;const i=typeof r=="number"?Number.isNaN(r)?"NaN":Number.isFinite(r)?void 0:"Infinity":void 0;return a.issues.push({expected:"number",code:"invalid_type",input:r,inst:t,...i?{received:i}:{}}),a}}),Sh=T("$ZodNumberFormat",(t,e)=>{Dp.init(t,e),ni.init(t,e)}),Ch=T("$ZodBoolean",(t,e)=>{xe.init(t,e),t._zod.pattern=Rp,t._zod.parse=(a,n)=>{if(e.coerce)try{a.value=!!a.value}catch{}const r=a.value;return typeof r=="boolean"||a.issues.push({expected:"boolean",code:"invalid_type",input:r,inst:t}),a}}),Eh=T("$ZodUnknown",(t,e)=>{xe.init(t,e),t._zod.parse=a=>a}),Ph=T("$ZodNever",(t,e)=>{xe.init(t,e),t._zod.parse=(a,n)=>(a.issues.push({expected:"never",code:"invalid_type",input:a.value,inst:t}),a)});function ri(t,e,a){t.issues.length&&e.issues.push(...Lt(a,t.issues)),e.value[a]=t.value}var Th=T("$ZodArray",(t,e)=>{xe.init(t,e),t._zod.parse=(a,n)=>{const r=a.value;if(!Array.isArray(r))return a.issues.push({expected:"array",code:"invalid_type",input:r,inst:t}),a;a.value=Array(r.length);const i=[];for(let o=0;o<r.length;o++){const s=r[o],c=e.element._zod.run({value:s,issues:[]},n);c instanceof Promise?i.push(c.then(l=>ri(l,a,o))):ri(c,a,o)}return i.length?Promise.all(i).then(()=>a):a}});function ua(t,e,a,n,r,i){const o=a in n;if(t.issues.length){if(r&&i&&!o)return;e.issues.push(...Lt(a,t.issues))}if(!o&&!r){t.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[a]});return}t.value===void 0?o&&(e.value[a]=void 0):e.value[a]=t.value}function ii(t){const e=Object.keys(t.shape);for(const n of e)if(!t.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);const a=Zg(t.shape);return{...t,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(a)}}function oi(t,e,a,n,r,i){const o=[],s=r.keySet,c=r.catchall._zod,l=c.def.type,d=c.optin==="optional",g=c.optout==="optional";for(const p in e){if(p==="__proto__"||s.has(p))continue;if(l==="never"){o.push(p);continue}const u=c.run({value:e[p],issues:[]},n);u instanceof Promise?t.push(u.then(m=>ua(m,a,p,e,d,g))):ua(u,a,p,e,d,g)}return o.length&&a.issues.push({code:"unrecognized_keys",keys:o,input:e,inst:i}),t.length?Promise.all(t).then(()=>a):a}var Ah=T("$ZodObject",(t,e)=>{if(xe.init(t,e),!Object.getOwnPropertyDescriptor(e,"shape")?.get){const o=e.shape;Object.defineProperty(e,"shape",{get:()=>{const s={...o};return Object.defineProperty(e,"shape",{value:s}),s}})}const a=Wa(()=>ii(e));pe(t._zod,"propValues",()=>{const o=e.shape,s={};for(const c in o){const l=o[c]._zod;if(l.values){s[c]??(s[c]=new Set);for(const d of l.values)s[c].add(d)}}return s});const n=ca,r=e.catchall;let i;t._zod.parse=(o,s)=>{i??(i=a.value);const c=o.value;if(!n(c))return o.issues.push({expected:"object",code:"invalid_type",input:c,inst:t}),o;o.value={};const l=[],d=i.shape;for(const g of i.keys){const p=d[g],u=p._zod.optin==="optional",m=p._zod.optout==="optional",f=p._zod.run({value:c[g],issues:[]},s);f instanceof Promise?l.push(f.then(b=>ua(b,o,g,c,u,m))):ua(f,o,g,c,u,m)}return r?oi(l,c,o,s,a.value,t):l.length?Promise.all(l).then(()=>o):o}}),Lh=T("$ZodObjectJIT",(t,e)=>{Ah.init(t,e);const a=t._zod.parse,n=Wa(()=>ii(e)),r=p=>{const u=new Jp(["shape","payload","ctx"]),m=n.value,f=x=>{const v=Ur(x);return`shape[${v}]._zod.run({ value: input[${v}], issues: [] }, ctx)`};u.write("const input = payload.value;");const b=Object.create(null);let h=0;for(const x of m.keys)b[x]=`key_${h++}`;u.write("const newResult = {};");for(const x of m.keys){const v=b[x],w=Ur(x),P=p[x],E=P?._zod?.optin==="optional",A=P?._zod?.optout==="optional";u.write(`const ${v} = ${f(x)};`),E&&A?u.write(`
|
|
551
551
|
if (${v}.issues.length) {
|
|
552
|
-
if (${
|
|
552
|
+
if (${w} in input) {
|
|
553
553
|
payload.issues = payload.issues.concat(${v}.issues.map(iss => ({
|
|
554
554
|
...iss,
|
|
555
|
-
path: iss.path ? [${
|
|
555
|
+
path: iss.path ? [${w}, ...iss.path] : [${w}]
|
|
556
556
|
})));
|
|
557
557
|
}
|
|
558
558
|
}
|
|
559
559
|
|
|
560
560
|
if (${v}.value === undefined) {
|
|
561
|
-
if (${
|
|
562
|
-
newResult[${
|
|
561
|
+
if (${w} in input) {
|
|
562
|
+
newResult[${w}] = undefined;
|
|
563
563
|
}
|
|
564
564
|
} else {
|
|
565
|
-
newResult[${
|
|
565
|
+
newResult[${w}] = ${v}.value;
|
|
566
566
|
}
|
|
567
567
|
|
|
568
|
-
`):
|
|
568
|
+
`):E?u.write(`
|
|
569
569
|
if (${v}.issues.length) {
|
|
570
570
|
payload.issues = payload.issues.concat(${v}.issues.map(iss => ({
|
|
571
571
|
...iss,
|
|
572
|
-
path: iss.path ? [${
|
|
572
|
+
path: iss.path ? [${w}, ...iss.path] : [${w}]
|
|
573
573
|
})));
|
|
574
574
|
}
|
|
575
575
|
|
|
576
576
|
if (${v}.value === undefined) {
|
|
577
|
-
if (${
|
|
578
|
-
newResult[${
|
|
577
|
+
if (${w} in input) {
|
|
578
|
+
newResult[${w}] = undefined;
|
|
579
579
|
}
|
|
580
580
|
} else {
|
|
581
|
-
newResult[${
|
|
581
|
+
newResult[${w}] = ${v}.value;
|
|
582
582
|
}
|
|
583
583
|
|
|
584
584
|
`):u.write(`
|
|
585
|
-
const ${v}_present = ${
|
|
585
|
+
const ${v}_present = ${w} in input;
|
|
586
586
|
if (${v}.issues.length) {
|
|
587
587
|
payload.issues = payload.issues.concat(${v}.issues.map(iss => ({
|
|
588
588
|
...iss,
|
|
589
|
-
path: iss.path ? [${
|
|
589
|
+
path: iss.path ? [${w}, ...iss.path] : [${w}]
|
|
590
590
|
})));
|
|
591
591
|
}
|
|
592
592
|
if (!${v}_present && !${v}.issues.length) {
|
|
@@ -594,18 +594,18 @@ button[data-gengage-part="chat-launcher-button"] img {
|
|
|
594
594
|
code: "invalid_type",
|
|
595
595
|
expected: "nonoptional",
|
|
596
596
|
input: undefined,
|
|
597
|
-
path: [${
|
|
597
|
+
path: [${w}]
|
|
598
598
|
});
|
|
599
599
|
}
|
|
600
600
|
|
|
601
601
|
if (${v}_present) {
|
|
602
602
|
if (${v}.value === undefined) {
|
|
603
|
-
newResult[${
|
|
603
|
+
newResult[${w}] = undefined;
|
|
604
604
|
} else {
|
|
605
|
-
newResult[${
|
|
605
|
+
newResult[${w}] = ${v}.value;
|
|
606
606
|
}
|
|
607
607
|
}
|
|
608
608
|
|
|
609
|
-
`)}u.write("payload.value = newResult;"),u.write("return payload;");const C=u.compile();return(x,v)=>C(p,x,v)};let i;const o=oa,s=!ia.jitless,l=s&&Bd.value,g=t.catchall;let d;e._zod.parse=(p,u)=>{d??(d=n.value);const f=p.value;return o(f)?s&&l&&u?.async===!1&&u.jitless!==!0?(i||(i=r(t.shape)),p=i(p,u),g?ei([],f,p,u,d,e):p):a(p,u):(p.issues.push({expected:"object",code:"invalid_type",input:f,inst:e}),p)}});function ti(e,t,a,n){for(const i of e)if(i.issues.length===0)return t.value=i.value,t;const r=e.filter(i=>!St(i));return r.length===1?(t.value=r[0].value,r[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:a,errors:e.map(i=>i.issues.map(o=>et(o,n,Qe())))}),t)}var kh=T("$ZodUnion",(e,t)=>{ye.init(e,t),ue(e._zod,"optin",()=>t.options.some(n=>n._zod.optin==="optional")?"optional":void 0),ue(e._zod,"optout",()=>t.options.some(n=>n._zod.optout==="optional")?"optional":void 0),ue(e._zod,"values",()=>{if(t.options.every(n=>n._zod.values))return new Set(t.options.flatMap(n=>Array.from(n._zod.values)))}),ue(e._zod,"pattern",()=>{if(t.options.every(n=>n._zod.pattern)){const n=t.options.map(r=>r._zod.pattern);return new RegExp(`^(${n.map(r=>Ga(r.source)).join("|")})$`)}});const a=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(n,r)=>{if(a)return a(n,r);let i=!1;const o=[];for(const s of t.options){const c=s._zod.run({value:n.value,issues:[]},r);if(c instanceof Promise)o.push(c),i=!0;else{if(c.issues.length===0)return c;o.push(c)}}return i?Promise.all(o).then(s=>ti(s,n,e,r)):ti(o,n,e,r)}}),Sh=T("$ZodIntersection",(e,t)=>{ye.init(e,t),e._zod.parse=(a,n)=>{const r=a.value,i=t.left._zod.run({value:r,issues:[]},n),o=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||o instanceof Promise?Promise.all([i,o]).then(([s,c])=>ai(a,s,c)):ai(a,i,o)}});function Xa(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(kt(e)&&kt(t)){const a=Object.keys(t),n=Object.keys(e).filter(i=>a.indexOf(i)!==-1),r={...e,...t};for(const i of n){const o=Xa(e[i],t[i]);if(!o.valid)return{valid:!1,mergeErrorPath:[i,...o.mergeErrorPath]};r[i]=o.data}return{valid:!0,data:r}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const a=[];for(let n=0;n<e.length;n++){const r=e[n],i=t[n],o=Xa(r,i);if(!o.valid)return{valid:!1,mergeErrorPath:[n,...o.mergeErrorPath]};a.push(o.data)}return{valid:!0,data:a}}return{valid:!1,mergeErrorPath:[]}}function ai(e,t,a){const n=new Map;let r;for(const s of t.issues)if(s.code==="unrecognized_keys"){r??(r=s);for(const c of s.keys)n.has(c)||n.set(c,{}),n.get(c).l=!0}else e.issues.push(s);for(const s of a.issues)if(s.code==="unrecognized_keys")for(const c of s.keys)n.has(c)||n.set(c,{}),n.get(c).r=!0;else e.issues.push(s);const i=[...n].filter(([,s])=>s.l&&s.r).map(([s])=>s);if(i.length&&r&&e.issues.push({...r,keys:i}),St(e))return e;const o=Xa(t.value,a.value);if(!o.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}var Ch=T("$ZodRecord",(e,t)=>{ye.init(e,t),e._zod.parse=(a,n)=>{const r=a.value;if(!kt(r))return a.issues.push({expected:"record",code:"invalid_type",input:r,inst:e}),a;const i=[],o=t.keyType._zod.values;if(o){a.value={};const s=new Set;for(const l of o)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){s.add(typeof l=="number"?l.toString():l);const g=t.keyType._zod.run({value:l,issues:[]},n);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(g.issues.length){a.issues.push({code:"invalid_key",origin:"record",issues:g.issues.map(u=>et(u,n,Qe())),input:l,path:[l],inst:e});continue}const d=g.value,p=t.valueType._zod.run({value:r[l],issues:[]},n);p instanceof Promise?i.push(p.then(u=>{u.issues.length&&a.issues.push(...Ct(l,u.issues)),a.value[d]=u.value})):(p.issues.length&&a.issues.push(...Ct(l,p.issues)),a.value[d]=p.value)}let c;for(const l in r)s.has(l)||(c=c??[],c.push(l));c&&c.length>0&&a.issues.push({code:"unrecognized_keys",input:r,inst:e,keys:c})}else{a.value={};for(const s of Reflect.ownKeys(r)){if(s==="__proto__"||!Object.prototype.propertyIsEnumerable.call(r,s))continue;let c=t.keyType._zod.run({value:s,issues:[]},n);if(c instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof s=="string"&&Vr.test(s)&&c.issues.length){const g=t.keyType._zod.run({value:Number(s),issues:[]},n);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");g.issues.length===0&&(c=g)}if(c.issues.length){t.mode==="loose"?a.value[s]=r[s]:a.issues.push({code:"invalid_key",origin:"record",issues:c.issues.map(g=>et(g,n,Qe())),input:s,path:[s],inst:e});continue}const l=t.valueType._zod.run({value:r[s],issues:[]},n);l instanceof Promise?i.push(l.then(g=>{g.issues.length&&a.issues.push(...Ct(s,g.issues)),a.value[c.value]=g.value})):(l.issues.length&&a.issues.push(...Ct(s,l.issues)),a.value[c.value]=l.value)}}return i.length?Promise.all(i).then(()=>a):a}}),Eh=T("$ZodEnum",(e,t)=>{ye.init(e,t);const a=Mr(t.entries),n=new Set(a);e._zod.values=n,e._zod.pattern=new RegExp(`^(${a.filter(r=>Rd.has(typeof r)).map(r=>typeof r=="string"?sa(r):r.toString()).join("|")})$`),e._zod.parse=(r,i)=>{const o=r.value;return n.has(o)||r.issues.push({code:"invalid_value",values:a,input:o,inst:e}),r}}),Ph=T("$ZodTransform",(e,t)=>{ye.init(e,t),e._zod.optin="optional",e._zod.parse=(a,n)=>{if(n.direction==="backward")throw new Nr(e.constructor.name);const r=t.transform(a.value,a);if(n.async)return(r instanceof Promise?r:Promise.resolve(r)).then(i=>(a.value=i,a.fallback=!0,a));if(r instanceof Promise)throw new wt;return a.value=r,a.fallback=!0,a}});function ni(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var ri=T("$ZodOptional",(e,t)=>{ye.init(e,t),e._zod.optin="optional",e._zod.optout="optional",ue(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),ue(e._zod,"pattern",()=>{const a=t.innerType._zod.pattern;return a?new RegExp(`^(${Ga(a.source)})?$`):void 0}),e._zod.parse=(a,n)=>{if(t.innerType._zod.optin==="optional"){const r=a.value,i=t.innerType._zod.run(a,n);return i instanceof Promise?i.then(o=>ni(o,r)):ni(i,r)}return a.value===void 0?a:t.innerType._zod.run(a,n)}}),Th=T("$ZodExactOptional",(e,t)=>{ri.init(e,t),ue(e._zod,"values",()=>t.innerType._zod.values),ue(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(a,n)=>t.innerType._zod.run(a,n)}),Ah=T("$ZodNullable",(e,t)=>{ye.init(e,t),ue(e._zod,"optin",()=>t.innerType._zod.optin),ue(e._zod,"optout",()=>t.innerType._zod.optout),ue(e._zod,"pattern",()=>{const a=t.innerType._zod.pattern;return a?new RegExp(`^(${Ga(a.source)}|null)$`):void 0}),ue(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(a,n)=>a.value===null?a:t.innerType._zod.run(a,n)}),Lh=T("$ZodDefault",(e,t)=>{ye.init(e,t),e._zod.optin="optional",ue(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(a,n)=>{if(n.direction==="backward")return t.innerType._zod.run(a,n);if(a.value===void 0)return a.value=t.defaultValue,a;const r=t.innerType._zod.run(a,n);return r instanceof Promise?r.then(i=>ii(i,t)):ii(r,t)}});function ii(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Ih=T("$ZodPrefault",(e,t)=>{ye.init(e,t),e._zod.optin="optional",ue(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(a,n)=>(n.direction==="backward"||a.value===void 0&&(a.value=t.defaultValue),t.innerType._zod.run(a,n))}),zh=T("$ZodNonOptional",(e,t)=>{ye.init(e,t),ue(e._zod,"values",()=>{const a=t.innerType._zod.values;return a?new Set([...a].filter(n=>n!==void 0)):void 0}),e._zod.parse=(a,n)=>{const r=t.innerType._zod.run(a,n);return r instanceof Promise?r.then(i=>oi(i,e)):oi(r,e)}});function oi(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var Nh=T("$ZodCatch",(e,t)=>{ye.init(e,t),e._zod.optin="optional",ue(e._zod,"optout",()=>t.innerType._zod.optout),ue(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(a,n)=>{if(n.direction==="backward")return t.innerType._zod.run(a,n);const r=t.innerType._zod.run(a,n);return r instanceof Promise?r.then(i=>(a.value=i.value,i.issues.length&&(a.value=t.catchValue({...a,error:{issues:i.issues.map(o=>et(o,n,Qe()))},input:a.value}),a.issues=[],a.fallback=!0),a)):(a.value=r.value,r.issues.length&&(a.value=t.catchValue({...a,error:{issues:r.issues.map(i=>et(i,n,Qe()))},input:a.value}),a.issues=[],a.fallback=!0),a)}}),Mh=T("$ZodPipe",(e,t)=>{ye.init(e,t),ue(e._zod,"values",()=>t.in._zod.values),ue(e._zod,"optin",()=>t.in._zod.optin),ue(e._zod,"optout",()=>t.out._zod.optout),ue(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(a,n)=>{if(n.direction==="backward"){const i=t.out._zod.run(a,n);return i instanceof Promise?i.then(o=>ha(o,t.in,n)):ha(i,t.in,n)}const r=t.in._zod.run(a,n);return r instanceof Promise?r.then(i=>ha(i,t.out,n)):ha(r,t.out,n)}});function ha(e,t,a){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},a)}var Bh=T("$ZodReadonly",(e,t)=>{ye.init(e,t),ue(e._zod,"propValues",()=>t.innerType._zod.propValues),ue(e._zod,"values",()=>t.innerType._zod.values),ue(e._zod,"optin",()=>t.innerType?._zod?.optin),ue(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(a,n)=>{if(n.direction==="backward")return t.innerType._zod.run(a,n);const r=t.innerType._zod.run(a,n);return r instanceof Promise?r.then(si):si(r)}});function si(e){return e.value=Object.freeze(e.value),e}var Rh=T("$ZodCustom",(e,t)=>{Be.init(e,t),ye.init(e,t),e._zod.parse=(a,n)=>a,e._zod.check=a=>{const n=a.value,r=t.fn(n);if(r instanceof Promise)return r.then(i=>ci(i,a,n,e));ci(r,a,n,e)}});function ci(e,t,a,n){if(!e){const r={code:"custom",input:a,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(r.params=n._zod.def.params),t.issues.push(Dt(r))}}var li,Oh=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){const a=t[0];return this._map.set(e,a),a&&typeof a=="object"&&"id"in a&&this._idmap.set(a.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){const t=this._map.get(e);return t&&typeof t=="object"&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){const t=e._zod.parent;if(t){const a={...this.get(t)??{}};delete a.id;const n={...a,...this._map.get(e)};return Object.keys(n).length?n:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function $h(){return new Oh}(li=globalThis).__zod_globalRegistry??(li.__zod_globalRegistry=$h());var Ht=globalThis.__zod_globalRegistry;function Fh(e,t){return new e({type:"string",...W(t)})}function Dh(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...W(t)})}function gi(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...W(t)})}function Hh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...W(t)})}function Uh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...W(t)})}function jh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...W(t)})}function qh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...W(t)})}function Zh(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...W(t)})}function Vh(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...W(t)})}function Gh(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...W(t)})}function Wh(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...W(t)})}function Kh(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...W(t)})}function Yh(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...W(t)})}function Jh(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...W(t)})}function Xh(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...W(t)})}function Qh(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...W(t)})}function eu(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...W(t)})}function tu(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...W(t)})}function au(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...W(t)})}function nu(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...W(t)})}function ru(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...W(t)})}function iu(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...W(t)})}function ou(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...W(t)})}function su(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...W(t)})}function cu(e,t){return new e({type:"string",format:"date",check:"string_format",...W(t)})}function lu(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...W(t)})}function gu(e,t){return new e({type:"string",format:"duration",check:"string_format",...W(t)})}function du(e,t){return new e({type:"number",checks:[],...W(t)})}function pu(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...W(t)})}function hu(e,t){return new e({type:"boolean",...W(t)})}function uu(e){return new e({type:"unknown"})}function mu(e,t){return new e({type:"never",...W(t)})}function di(e,t){return new Wr({check:"less_than",...W(t),value:e,inclusive:!1})}function Qa(e,t){return new Wr({check:"less_than",...W(t),value:e,inclusive:!0})}function pi(e,t){return new Kr({check:"greater_than",...W(t),value:e,inclusive:!1})}function en(e,t){return new Kr({check:"greater_than",...W(t),value:e,inclusive:!0})}function hi(e,t){return new Ip({check:"multiple_of",...W(t),value:e})}function ui(e,t){return new Np({check:"max_length",...W(t),maximum:e})}function ua(e,t){return new Mp({check:"min_length",...W(t),minimum:e})}function mi(e,t){return new Bp({check:"length_equals",...W(t),length:e})}function fu(e,t){return new Rp({check:"string_format",format:"regex",...W(t),pattern:e})}function bu(e){return new Op({check:"string_format",format:"lowercase",...W(e)})}function vu(e){return new $p({check:"string_format",format:"uppercase",...W(e)})}function yu(e,t){return new Fp({check:"string_format",format:"includes",...W(t),includes:e})}function xu(e,t){return new Dp({check:"string_format",format:"starts_with",...W(t),prefix:e})}function _u(e,t){return new Hp({check:"string_format",format:"ends_with",...W(t),suffix:e})}function Et(e){return new Up({check:"overwrite",tx:e})}function wu(e){return Et(t=>t.normalize(e))}function ku(){return Et(e=>e.trim())}function Su(){return Et(e=>e.toLowerCase())}function Cu(){return Et(e=>e.toUpperCase())}function Eu(){return Et(e=>Md(e))}function Pu(e,t,a){return new e({type:"array",element:t,...W(a)})}function Tu(e,t,a){return new e({type:"custom",check:"custom",fn:t,...W(a)})}function Au(e,t){const a=Lu(n=>(n.addIssue=r=>{if(typeof r=="string")n.issues.push(Dt(r,n.value,a._zod.def));else{const i=r;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=n.value),i.inst??(i.inst=a),i.continue??(i.continue=!a._zod.def.abort),n.issues.push(Dt(i))}},e(n.value,n)),t);return a}function Lu(e,t){const a=new Be({check:"custom",...W(t)});return a._zod.check=e,a}function fi(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Ht,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function we(e,t,a={path:[],schemaPath:[]}){var n;const r=e._zod.def,i=t.seen.get(e);if(i)return i.count++,a.schemaPath.includes(e)&&(i.cycle=a.path),i.schema;const o={schema:{},count:1,cycle:void 0,path:a.path};t.seen.set(e,o);const s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{const l={...a,schemaPath:[...a.schemaPath,e],path:a.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,l);else{const d=o.schema,p=t.processors[r.type];if(!p)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${r.type}`);p(e,t,d,l)}const g=e._zod.parent;g&&(o.ref||(o.ref=g),we(g,t,l),t.seen.get(g).isParent=!0)}const c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io==="input"&&Ae(e)&&(delete o.schema.examples,delete o.schema.default),t.io==="input"&&"_prefault"in o.schema&&((n=o.schema).default??(n.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function bi(e,t){const a=e.seen.get(t);if(!a)throw new Error("Unprocessed schema. This is a bug in Zod.");const n=new Map;for(const o of e.seen.entries()){const s=e.metadataRegistry.get(o[0])?.id;if(s){const c=n.get(s);if(c&&c!==o[0])throw new Error(`Duplicate schema id "${s}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(s,o[0])}}const r=o=>{const s=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const g=e.external.registry.get(o[0])?.id,d=e.external.uri??(u=>u);if(g)return{ref:d(g)};const p=o[1].defId??o[1].schema.id??`schema${e.counter++}`;return o[1].defId=p,{defId:p,ref:`${d("__shared")}#/${s}/${p}`}}if(o[1]===a)return{ref:"#"};const c=`#/${s}/`,l=o[1].schema.id??`__schema${e.counter++}`;return{defId:l,ref:c+l}},i=o=>{if(o[1].schema.$ref)return;const s=o[1],{ref:c,defId:l}=r(o);s.def={...s.schema},l&&(s.defId=l);const g=s.schema;for(const d in g)delete g[d];g.$ref=c};if(e.cycles==="throw")for(const o of e.seen.entries()){const s=o[1];if(s.cycle)throw new Error(`Cycle detected: #/${s.cycle?.join("/")}/<root>
|
|
609
|
+
`)}u.write("payload.value = newResult;"),u.write("return payload;");const y=u.compile();return(x,v)=>y(p,x,v)};let i;const o=ca,s=!sa.jitless,l=s&&jg.value,d=e.catchall;let g;t._zod.parse=(p,u)=>{g??(g=n.value);const m=p.value;return o(m)?s&&l&&u?.async===!1&&u.jitless!==!0?(i||(i=r(e.shape)),p=i(p,u),d?oi([],m,p,u,g,t):p):a(p,u):(p.issues.push({expected:"object",code:"invalid_type",input:m,inst:t}),p)}});function si(t,e,a,n){for(const i of t)if(i.issues.length===0)return e.value=i.value,e;const r=t.filter(i=>!At(i));return r.length===1?(e.value=r[0].value,r[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:a,errors:t.map(i=>i.issues.map(o=>it(o,n,rt())))}),e)}var Ih=T("$ZodUnion",(t,e)=>{xe.init(t,e),pe(t._zod,"optin",()=>e.options.some(n=>n._zod.optin==="optional")?"optional":void 0),pe(t._zod,"optout",()=>e.options.some(n=>n._zod.optout==="optional")?"optional":void 0),pe(t._zod,"values",()=>{if(e.options.every(n=>n._zod.values))return new Set(e.options.flatMap(n=>Array.from(n._zod.values)))}),pe(t._zod,"pattern",()=>{if(e.options.every(n=>n._zod.pattern)){const n=e.options.map(r=>r._zod.pattern);return new RegExp(`^(${n.map(r=>Ya(r.source)).join("|")})$`)}});const a=e.options.length===1?e.options[0]._zod.run:null;t._zod.parse=(n,r)=>{if(a)return a(n,r);let i=!1;const o=[];for(const s of e.options){const c=s._zod.run({value:n.value,issues:[]},r);if(c instanceof Promise)o.push(c),i=!0;else{if(c.issues.length===0)return c;o.push(c)}}return i?Promise.all(o).then(s=>si(s,n,t,r)):si(o,n,t,r)}}),Nh=T("$ZodIntersection",(t,e)=>{xe.init(t,e),t._zod.parse=(a,n)=>{const r=a.value,i=e.left._zod.run({value:r,issues:[]},n),o=e.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||o instanceof Promise?Promise.all([i,o]).then(([s,c])=>ci(a,s,c)):ci(a,i,o)}});function tn(t,e){if(t===e)return{valid:!0,data:t};if(t instanceof Date&&e instanceof Date&&+t==+e)return{valid:!0,data:t};if(Tt(t)&&Tt(e)){const a=Object.keys(e),n=Object.keys(t).filter(i=>a.indexOf(i)!==-1),r={...t,...e};for(const i of n){const o=tn(t[i],e[i]);if(!o.valid)return{valid:!1,mergeErrorPath:[i,...o.mergeErrorPath]};r[i]=o.data}return{valid:!0,data:r}}if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return{valid:!1,mergeErrorPath:[]};const a=[];for(let n=0;n<t.length;n++){const r=t[n],i=e[n],o=tn(r,i);if(!o.valid)return{valid:!1,mergeErrorPath:[n,...o.mergeErrorPath]};a.push(o.data)}return{valid:!0,data:a}}return{valid:!1,mergeErrorPath:[]}}function ci(t,e,a){const n=new Map;let r;for(const s of e.issues)if(s.code==="unrecognized_keys"){r??(r=s);for(const c of s.keys)n.has(c)||n.set(c,{}),n.get(c).l=!0}else t.issues.push(s);for(const s of a.issues)if(s.code==="unrecognized_keys")for(const c of s.keys)n.has(c)||n.set(c,{}),n.get(c).r=!0;else t.issues.push(s);const i=[...n].filter(([,s])=>s.l&&s.r).map(([s])=>s);if(i.length&&r&&t.issues.push({...r,keys:i}),At(t))return t;const o=tn(e.value,a.value);if(!o.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return t.value=o.data,t}var zh=T("$ZodRecord",(t,e)=>{xe.init(t,e),t._zod.parse=(a,n)=>{const r=a.value;if(!Tt(r))return a.issues.push({expected:"record",code:"invalid_type",input:r,inst:t}),a;const i=[],o=e.keyType._zod.values;if(o){a.value={};const s=new Set;for(const l of o)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){s.add(typeof l=="number"?l.toString():l);const d=e.keyType._zod.run({value:l,issues:[]},n);if(d instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(d.issues.length){a.issues.push({code:"invalid_key",origin:"record",issues:d.issues.map(u=>it(u,n,rt())),input:l,path:[l],inst:t});continue}const g=d.value,p=e.valueType._zod.run({value:r[l],issues:[]},n);p instanceof Promise?i.push(p.then(u=>{u.issues.length&&a.issues.push(...Lt(l,u.issues)),a.value[g]=u.value})):(p.issues.length&&a.issues.push(...Lt(l,p.issues)),a.value[g]=p.value)}let c;for(const l in r)s.has(l)||(c=c??[],c.push(l));c&&c.length>0&&a.issues.push({code:"unrecognized_keys",input:r,inst:t,keys:c})}else{a.value={};for(const s of Reflect.ownKeys(r)){if(s==="__proto__"||!Object.prototype.propertyIsEnumerable.call(r,s))continue;let c=e.keyType._zod.run({value:s,issues:[]},n);if(c instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof s=="string"&&Xr.test(s)&&c.issues.length){const d=e.keyType._zod.run({value:Number(s),issues:[]},n);if(d instanceof Promise)throw new Error("Async schemas not supported in object keys currently");d.issues.length===0&&(c=d)}if(c.issues.length){e.mode==="loose"?a.value[s]=r[s]:a.issues.push({code:"invalid_key",origin:"record",issues:c.issues.map(d=>it(d,n,rt())),input:s,path:[s],inst:t});continue}const l=e.valueType._zod.run({value:r[s],issues:[]},n);l instanceof Promise?i.push(l.then(d=>{d.issues.length&&a.issues.push(...Lt(s,d.issues)),a.value[c.value]=d.value})):(l.issues.length&&a.issues.push(...Lt(s,l.issues)),a.value[c.value]=l.value)}}return i.length?Promise.all(i).then(()=>a):a}}),Mh=T("$ZodEnum",(t,e)=>{xe.init(t,e);const a=Dr(e.entries),n=new Set(a);t._zod.values=n,t._zod.pattern=new RegExp(`^(${a.filter(r=>qg.has(typeof r)).map(r=>typeof r=="string"?la(r):r.toString()).join("|")})$`),t._zod.parse=(r,i)=>{const o=r.value;return n.has(o)||r.issues.push({code:"invalid_value",values:a,input:o,inst:t}),r}}),Bh=T("$ZodTransform",(t,e)=>{xe.init(t,e),t._zod.optin="optional",t._zod.parse=(a,n)=>{if(n.direction==="backward")throw new $r(t.constructor.name);const r=e.transform(a.value,a);if(n.async)return(r instanceof Promise?r:Promise.resolve(r)).then(i=>(a.value=i,a.fallback=!0,a));if(r instanceof Promise)throw new Pt;return a.value=r,a.fallback=!0,a}});function li(t,e){return e===void 0&&(t.issues.length||t.fallback)?{issues:[],value:void 0}:t}var di=T("$ZodOptional",(t,e)=>{xe.init(t,e),t._zod.optin="optional",t._zod.optout="optional",pe(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,void 0]):void 0),pe(t._zod,"pattern",()=>{const a=e.innerType._zod.pattern;return a?new RegExp(`^(${Ya(a.source)})?$`):void 0}),t._zod.parse=(a,n)=>{if(e.innerType._zod.optin==="optional"){const r=a.value,i=e.innerType._zod.run(a,n);return i instanceof Promise?i.then(o=>li(o,r)):li(i,r)}return a.value===void 0?a:e.innerType._zod.run(a,n)}}),Rh=T("$ZodExactOptional",(t,e)=>{di.init(t,e),pe(t._zod,"values",()=>e.innerType._zod.values),pe(t._zod,"pattern",()=>e.innerType._zod.pattern),t._zod.parse=(a,n)=>e.innerType._zod.run(a,n)}),Oh=T("$ZodNullable",(t,e)=>{xe.init(t,e),pe(t._zod,"optin",()=>e.innerType._zod.optin),pe(t._zod,"optout",()=>e.innerType._zod.optout),pe(t._zod,"pattern",()=>{const a=e.innerType._zod.pattern;return a?new RegExp(`^(${Ya(a.source)}|null)$`):void 0}),pe(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,null]):void 0),t._zod.parse=(a,n)=>a.value===null?a:e.innerType._zod.run(a,n)}),Fh=T("$ZodDefault",(t,e)=>{xe.init(t,e),t._zod.optin="optional",pe(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(a,n)=>{if(n.direction==="backward")return e.innerType._zod.run(a,n);if(a.value===void 0)return a.value=e.defaultValue,a;const r=e.innerType._zod.run(a,n);return r instanceof Promise?r.then(i=>gi(i,e)):gi(r,e)}});function gi(t,e){return t.value===void 0&&(t.value=e.defaultValue),t}var $h=T("$ZodPrefault",(t,e)=>{xe.init(t,e),t._zod.optin="optional",pe(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(a,n)=>(n.direction==="backward"||a.value===void 0&&(a.value=e.defaultValue),e.innerType._zod.run(a,n))}),Dh=T("$ZodNonOptional",(t,e)=>{xe.init(t,e),pe(t._zod,"values",()=>{const a=e.innerType._zod.values;return a?new Set([...a].filter(n=>n!==void 0)):void 0}),t._zod.parse=(a,n)=>{const r=e.innerType._zod.run(a,n);return r instanceof Promise?r.then(i=>pi(i,t)):pi(r,t)}});function pi(t,e){return!t.issues.length&&t.value===void 0&&t.issues.push({code:"invalid_type",expected:"nonoptional",input:t.value,inst:e}),t}var Hh=T("$ZodCatch",(t,e)=>{xe.init(t,e),t._zod.optin="optional",pe(t._zod,"optout",()=>e.innerType._zod.optout),pe(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(a,n)=>{if(n.direction==="backward")return e.innerType._zod.run(a,n);const r=e.innerType._zod.run(a,n);return r instanceof Promise?r.then(i=>(a.value=i.value,i.issues.length&&(a.value=e.catchValue({...a,error:{issues:i.issues.map(o=>it(o,n,rt()))},input:a.value}),a.issues=[],a.fallback=!0),a)):(a.value=r.value,r.issues.length&&(a.value=e.catchValue({...a,error:{issues:r.issues.map(i=>it(i,n,rt()))},input:a.value}),a.issues=[],a.fallback=!0),a)}}),Uh=T("$ZodPipe",(t,e)=>{xe.init(t,e),pe(t._zod,"values",()=>e.in._zod.values),pe(t._zod,"optin",()=>e.in._zod.optin),pe(t._zod,"optout",()=>e.out._zod.optout),pe(t._zod,"propValues",()=>e.in._zod.propValues),t._zod.parse=(a,n)=>{if(n.direction==="backward"){const i=e.out._zod.run(a,n);return i instanceof Promise?i.then(o=>ma(o,e.in,n)):ma(i,e.in,n)}const r=e.in._zod.run(a,n);return r instanceof Promise?r.then(i=>ma(i,e.out,n)):ma(r,e.out,n)}});function ma(t,e,a){return t.issues.length?(t.aborted=!0,t):e._zod.run({value:t.value,issues:t.issues,fallback:t.fallback},a)}var jh=T("$ZodReadonly",(t,e)=>{xe.init(t,e),pe(t._zod,"propValues",()=>e.innerType._zod.propValues),pe(t._zod,"values",()=>e.innerType._zod.values),pe(t._zod,"optin",()=>e.innerType?._zod?.optin),pe(t._zod,"optout",()=>e.innerType?._zod?.optout),t._zod.parse=(a,n)=>{if(n.direction==="backward")return e.innerType._zod.run(a,n);const r=e.innerType._zod.run(a,n);return r instanceof Promise?r.then(hi):hi(r)}});function hi(t){return t.value=Object.freeze(t.value),t}var qh=T("$ZodCustom",(t,e)=>{Fe.init(t,e),xe.init(t,e),t._zod.parse=(a,n)=>a,t._zod.check=a=>{const n=a.value,r=e.fn(n);if(r instanceof Promise)return r.then(i=>ui(i,a,n,t));ui(r,a,n,t)}});function ui(t,e,a,n){if(!t){const r={code:"custom",input:a,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(r.params=n._zod.def.params),e.issues.push(jt(r))}}var mi,Zh=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...e){const a=e[0];return this._map.set(t,a),a&&typeof a=="object"&&"id"in a&&this._idmap.set(a.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){const e=this._map.get(t);return e&&typeof e=="object"&&"id"in e&&this._idmap.delete(e.id),this._map.delete(t),this}get(t){const e=t._zod.parent;if(e){const a={...this.get(e)??{}};delete a.id;const n={...a,...this._map.get(t)};return Object.keys(n).length?n:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};function Vh(){return new Zh}(mi=globalThis).__zod_globalRegistry??(mi.__zod_globalRegistry=Vh());var qt=globalThis.__zod_globalRegistry;function Gh(t,e){return new t({type:"string",...V(e)})}function Wh(t,e){return new t({type:"string",format:"email",check:"string_format",abort:!1,...V(e)})}function fi(t,e){return new t({type:"string",format:"guid",check:"string_format",abort:!1,...V(e)})}function Kh(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,...V(e)})}function Yh(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...V(e)})}function Jh(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...V(e)})}function Xh(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...V(e)})}function Qh(t,e){return new t({type:"string",format:"url",check:"string_format",abort:!1,...V(e)})}function eu(t,e){return new t({type:"string",format:"emoji",check:"string_format",abort:!1,...V(e)})}function tu(t,e){return new t({type:"string",format:"nanoid",check:"string_format",abort:!1,...V(e)})}function au(t,e){return new t({type:"string",format:"cuid",check:"string_format",abort:!1,...V(e)})}function nu(t,e){return new t({type:"string",format:"cuid2",check:"string_format",abort:!1,...V(e)})}function ru(t,e){return new t({type:"string",format:"ulid",check:"string_format",abort:!1,...V(e)})}function iu(t,e){return new t({type:"string",format:"xid",check:"string_format",abort:!1,...V(e)})}function ou(t,e){return new t({type:"string",format:"ksuid",check:"string_format",abort:!1,...V(e)})}function su(t,e){return new t({type:"string",format:"ipv4",check:"string_format",abort:!1,...V(e)})}function cu(t,e){return new t({type:"string",format:"ipv6",check:"string_format",abort:!1,...V(e)})}function lu(t,e){return new t({type:"string",format:"cidrv4",check:"string_format",abort:!1,...V(e)})}function du(t,e){return new t({type:"string",format:"cidrv6",check:"string_format",abort:!1,...V(e)})}function gu(t,e){return new t({type:"string",format:"base64",check:"string_format",abort:!1,...V(e)})}function pu(t,e){return new t({type:"string",format:"base64url",check:"string_format",abort:!1,...V(e)})}function hu(t,e){return new t({type:"string",format:"e164",check:"string_format",abort:!1,...V(e)})}function uu(t,e){return new t({type:"string",format:"jwt",check:"string_format",abort:!1,...V(e)})}function mu(t,e){return new t({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...V(e)})}function fu(t,e){return new t({type:"string",format:"date",check:"string_format",...V(e)})}function bu(t,e){return new t({type:"string",format:"time",check:"string_format",precision:null,...V(e)})}function vu(t,e){return new t({type:"string",format:"duration",check:"string_format",...V(e)})}function yu(t,e){return new t({type:"number",checks:[],...V(e)})}function xu(t,e){return new t({type:"number",check:"number_format",abort:!1,format:"safeint",...V(e)})}function _u(t,e){return new t({type:"boolean",...V(e)})}function wu(t){return new t({type:"unknown"})}function ku(t,e){return new t({type:"never",...V(e)})}function bi(t,e){return new ei({check:"less_than",...V(e),value:t,inclusive:!1})}function an(t,e){return new ei({check:"less_than",...V(e),value:t,inclusive:!0})}function vi(t,e){return new ti({check:"greater_than",...V(e),value:t,inclusive:!1})}function nn(t,e){return new ti({check:"greater_than",...V(e),value:t,inclusive:!0})}function yi(t,e){return new $p({check:"multiple_of",...V(e),value:t})}function xi(t,e){return new Hp({check:"max_length",...V(e),maximum:t})}function fa(t,e){return new Up({check:"min_length",...V(e),minimum:t})}function _i(t,e){return new jp({check:"length_equals",...V(e),length:t})}function Su(t,e){return new qp({check:"string_format",format:"regex",...V(e),pattern:t})}function Cu(t){return new Zp({check:"string_format",format:"lowercase",...V(t)})}function Eu(t){return new Vp({check:"string_format",format:"uppercase",...V(t)})}function Pu(t,e){return new Gp({check:"string_format",format:"includes",...V(e),includes:t})}function Tu(t,e){return new Wp({check:"string_format",format:"starts_with",...V(e),prefix:t})}function Au(t,e){return new Kp({check:"string_format",format:"ends_with",...V(e),suffix:t})}function It(t){return new Yp({check:"overwrite",tx:t})}function Lu(t){return It(e=>e.normalize(t))}function Iu(){return It(t=>t.trim())}function Nu(){return It(t=>t.toLowerCase())}function zu(){return It(t=>t.toUpperCase())}function Mu(){return It(t=>Ug(t))}function Bu(t,e,a){return new t({type:"array",element:e,...V(a)})}function Ru(t,e,a){return new t({type:"custom",check:"custom",fn:e,...V(a)})}function Ou(t,e){const a=Fu(n=>(n.addIssue=r=>{if(typeof r=="string")n.issues.push(jt(r,n.value,a._zod.def));else{const i=r;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=n.value),i.inst??(i.inst=a),i.continue??(i.continue=!a._zod.def.abort),n.issues.push(jt(i))}},t(n.value,n)),e);return a}function Fu(t,e){const a=new Fe({check:"custom",...V(e)});return a._zod.check=t,a}function wi(t){let e=t?.target??"draft-2020-12";return e==="draft-4"&&(e="draft-04"),e==="draft-7"&&(e="draft-07"),{processors:t.processors??{},metadataRegistry:t?.metadata??qt,target:e,unrepresentable:t?.unrepresentable??"throw",override:t?.override??(()=>{}),io:t?.io??"output",counter:0,seen:new Map,cycles:t?.cycles??"ref",reused:t?.reused??"inline",external:t?.external??void 0}}function ke(t,e,a={path:[],schemaPath:[]}){var n;const r=t._zod.def,i=e.seen.get(t);if(i)return i.count++,a.schemaPath.includes(t)&&(i.cycle=a.path),i.schema;const o={schema:{},count:1,cycle:void 0,path:a.path};e.seen.set(t,o);const s=t._zod.toJSONSchema?.();if(s)o.schema=s;else{const l={...a,schemaPath:[...a.schemaPath,t],path:a.path};if(t._zod.processJSONSchema)t._zod.processJSONSchema(e,o.schema,l);else{const g=o.schema,p=e.processors[r.type];if(!p)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${r.type}`);p(t,e,g,l)}const d=t._zod.parent;d&&(o.ref||(o.ref=d),ke(d,e,l),e.seen.get(d).isParent=!0)}const c=e.metadataRegistry.get(t);return c&&Object.assign(o.schema,c),e.io==="input"&&Ne(t)&&(delete o.schema.examples,delete o.schema.default),e.io==="input"&&"_prefault"in o.schema&&((n=o.schema).default??(n.default=o.schema._prefault)),delete o.schema._prefault,e.seen.get(t).schema}function ki(t,e){const a=t.seen.get(e);if(!a)throw new Error("Unprocessed schema. This is a bug in Zod.");const n=new Map;for(const o of t.seen.entries()){const s=t.metadataRegistry.get(o[0])?.id;if(s){const c=n.get(s);if(c&&c!==o[0])throw new Error(`Duplicate schema id "${s}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(s,o[0])}}const r=o=>{const s=t.target==="draft-2020-12"?"$defs":"definitions";if(t.external){const d=t.external.registry.get(o[0])?.id,g=t.external.uri??(u=>u);if(d)return{ref:g(d)};const p=o[1].defId??o[1].schema.id??`schema${t.counter++}`;return o[1].defId=p,{defId:p,ref:`${g("__shared")}#/${s}/${p}`}}if(o[1]===a)return{ref:"#"};const c=`#/${s}/`,l=o[1].schema.id??`__schema${t.counter++}`;return{defId:l,ref:c+l}},i=o=>{if(o[1].schema.$ref)return;const s=o[1],{ref:c,defId:l}=r(o);s.def={...s.schema},l&&(s.defId=l);const d=s.schema;for(const g in d)delete d[g];d.$ref=c};if(t.cycles==="throw")for(const o of t.seen.entries()){const s=o[1];if(s.cycle)throw new Error(`Cycle detected: #/${s.cycle?.join("/")}/<root>
|
|
610
610
|
|
|
611
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const o of e.seen.entries()){const s=o[1];if(t===o[0]){i(o);continue}if(e.external){const c=e.external.registry.get(o[0])?.id;if(t!==o[0]&&c){i(o);continue}}if(e.metadataRegistry.get(o[0])?.id){i(o);continue}if(s.cycle){i(o);continue}if(s.count>1&&e.reused==="ref"){i(o);continue}}}function vi(e,t){const a=e.seen.get(t);if(!a)throw new Error("Unprocessed schema. This is a bug in Zod.");const n=s=>{const c=e.seen.get(s);if(c.ref===null)return;const l=c.def??c.schema,g={...l},d=c.ref;if(c.ref=null,d){n(d);const u=e.seen.get(d),f=u.schema;if(f.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(l.allOf=l.allOf??[],l.allOf.push(f)):Object.assign(l,f),Object.assign(l,g),s._zod.parent===d)for(const b in l)b==="$ref"||b==="allOf"||b in g||delete l[b];if(f.$ref&&u.def)for(const b in l)b==="$ref"||b==="allOf"||b in u.def&&JSON.stringify(l[b])===JSON.stringify(u.def[b])&&delete l[b]}const p=s._zod.parent;if(p&&p!==d){n(p);const u=e.seen.get(p);if(u?.schema.$ref&&(l.$ref=u.schema.$ref,u.def))for(const f in l)f==="$ref"||f==="allOf"||f in u.def&&JSON.stringify(l[f])===JSON.stringify(u.def[f])&&delete l[f]}e.override({zodSchema:s,jsonSchema:l,path:c.path??[]})};for(const s of[...e.seen.entries()].reverse())n(s[0]);const r={};if(e.target==="draft-2020-12"?r.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?r.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?r.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const s=e.external.registry.get(t)?.id;if(!s)throw new Error("Schema is missing an `id` property");r.$id=e.external.uri(s)}Object.assign(r,a.def??a.schema);const i=e.metadataRegistry.get(t)?.id;i!==void 0&&r.id===i&&delete r.id;const o=e.external?.defs??{};for(const s of e.seen.entries()){const c=s[1];c.def&&c.defId&&(c.def.id===c.defId&&delete c.def.id,o[c.defId]=c.def)}e.external||Object.keys(o).length>0&&(e.target==="draft-2020-12"?r.$defs=o:r.definitions=o);try{const s=JSON.parse(JSON.stringify(r));return Object.defineProperty(s,"~standard",{value:{...t["~standard"],jsonSchema:{input:ma(t,"input",e.processors),output:ma(t,"output",e.processors)}},enumerable:!1,writable:!1}),s}catch{throw new Error("Error converting schema to JSON.")}}function Ae(e,t){const a=t??{seen:new Set};if(a.seen.has(e))return!1;a.seen.add(e);const n=e._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return Ae(n.element,a);if(n.type==="set")return Ae(n.valueType,a);if(n.type==="lazy")return Ae(n.getter(),a);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault")return Ae(n.innerType,a);if(n.type==="intersection")return Ae(n.left,a)||Ae(n.right,a);if(n.type==="record"||n.type==="map")return Ae(n.keyType,a)||Ae(n.valueType,a);if(n.type==="pipe")return e._zod.traits.has("$ZodCodec")?!0:Ae(n.in,a)||Ae(n.out,a);if(n.type==="object"){for(const r in n.shape)if(Ae(n.shape[r],a))return!0;return!1}if(n.type==="union"){for(const r of n.options)if(Ae(r,a))return!0;return!1}if(n.type==="tuple"){for(const r of n.items)if(Ae(r,a))return!0;return!!(n.rest&&Ae(n.rest,a))}return!1}var Iu=(e,t={})=>a=>{const n=fi({...a,processors:t});return we(e,n),bi(n,e),vi(n,e)},ma=(e,t,a={})=>n=>{const{libraryOptions:r,target:i}=n??{},o=fi({...r??{},target:i,io:t,processors:a});return we(e,o),bi(o,e),vi(o,e)},zu={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Nu=(e,t,a,n)=>{const r=a;r.type="string";const{minimum:i,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof i=="number"&&(r.minLength=i),typeof o=="number"&&(r.maxLength=o),s&&(r.format=zu[s]??s,r.format===""&&delete r.format,s==="time"&&delete r.format),l&&(r.contentEncoding=l),c&&c.size>0){const g=[...c];g.length===1?r.pattern=g[0].source:g.length>1&&(r.allOf=[...g.map(d=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:d.source}))])}},Mu=(e,t,a,n)=>{const r=a,{minimum:i,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:g}=e._zod.bag;typeof s=="string"&&s.includes("int")?r.type="integer":r.type="number";const d=typeof g=="number"&&g>=(i??Number.NEGATIVE_INFINITY),p=typeof l=="number"&&l<=(o??Number.POSITIVE_INFINITY),u=t.target==="draft-04"||t.target==="openapi-3.0";d?u?(r.minimum=g,r.exclusiveMinimum=!0):r.exclusiveMinimum=g:typeof i=="number"&&(r.minimum=i),p?u?(r.maximum=l,r.exclusiveMaximum=!0):r.exclusiveMaximum=l:typeof o=="number"&&(r.maximum=o),typeof c=="number"&&(r.multipleOf=c)},Bu=(e,t,a,n)=>{a.type="boolean"},Ru=(e,t,a,n)=>{a.not={}},Ou=(e,t,a,n)=>{},$u=(e,t,a,n)=>{const r=e._zod.def,i=Mr(r.entries);i.every(o=>typeof o=="number")&&(a.type="number"),i.every(o=>typeof o=="string")&&(a.type="string"),a.enum=i},Fu=(e,t,a,n)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},Du=(e,t,a,n)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},Hu=(e,t,a,n)=>{const r=a,i=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o=="number"&&(r.minItems=o),typeof s=="number"&&(r.maxItems=s),r.type="array",r.items=we(i.element,t,{...n,path:[...n.path,"items"]})},Uu=(e,t,a,n)=>{const r=a,i=e._zod.def;r.type="object",r.properties={};const o=i.shape;for(const l in o)r.properties[l]=we(o[l],t,{...n,path:[...n.path,"properties",l]});const s=new Set(Object.keys(o)),c=new Set([...s].filter(l=>{const g=i.shape[l]._zod;return t.io==="input"?g.optin===void 0:g.optout===void 0}));c.size>0&&(r.required=Array.from(c)),i.catchall?._zod.def.type==="never"?r.additionalProperties=!1:i.catchall?i.catchall&&(r.additionalProperties=we(i.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):t.io==="output"&&(r.additionalProperties=!1)},ju=(e,t,a,n)=>{const r=e._zod.def,i=r.inclusive===!1,o=r.options.map((s,c)=>we(s,t,{...n,path:[...n.path,i?"oneOf":"anyOf",c]}));i?a.oneOf=o:a.anyOf=o},qu=(e,t,a,n)=>{const r=e._zod.def,i=we(r.left,t,{...n,path:[...n.path,"allOf",0]}),o=we(r.right,t,{...n,path:[...n.path,"allOf",1]}),s=c=>"allOf"in c&&Object.keys(c).length===1;a.allOf=[...s(i)?i.allOf:[i],...s(o)?o.allOf:[o]]},Zu=(e,t,a,n)=>{const r=a,i=e._zod.def;r.type="object";const o=i.keyType,s=o._zod.bag?.patterns;if(i.mode==="loose"&&s&&s.size>0){const l=we(i.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});r.patternProperties={};for(const g of s)r.patternProperties[g.source]=l}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(r.propertyNames=we(i.keyType,t,{...n,path:[...n.path,"propertyNames"]})),r.additionalProperties=we(i.valueType,t,{...n,path:[...n.path,"additionalProperties"]});const c=o._zod.values;if(c){const l=[...c].filter(g=>typeof g=="string"||typeof g=="number");l.length>0&&(r.required=l)}},Vu=(e,t,a,n)=>{const r=e._zod.def,i=we(r.innerType,t,n),o=t.seen.get(e);t.target==="openapi-3.0"?(o.ref=r.innerType,a.nullable=!0):a.anyOf=[i,{type:"null"}]},Gu=(e,t,a,n)=>{const r=e._zod.def;we(r.innerType,t,n);const i=t.seen.get(e);i.ref=r.innerType},Wu=(e,t,a,n)=>{const r=e._zod.def;we(r.innerType,t,n);const i=t.seen.get(e);i.ref=r.innerType,a.default=JSON.parse(JSON.stringify(r.defaultValue))},Ku=(e,t,a,n)=>{const r=e._zod.def;we(r.innerType,t,n);const i=t.seen.get(e);i.ref=r.innerType,t.io==="input"&&(a._prefault=JSON.parse(JSON.stringify(r.defaultValue)))},Yu=(e,t,a,n)=>{const r=e._zod.def;we(r.innerType,t,n);const i=t.seen.get(e);i.ref=r.innerType;let o;try{o=r.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}a.default=o},Ju=(e,t,a,n)=>{const r=e._zod.def,i=r.in._zod.traits.has("$ZodTransform"),o=t.io==="input"?i?r.out:r.in:r.out;we(o,t,n);const s=t.seen.get(e);s.ref=o},Xu=(e,t,a,n)=>{const r=e._zod.def;we(r.innerType,t,n);const i=t.seen.get(e);i.ref=r.innerType,a.readOnly=!0},yi=(e,t,a,n)=>{const r=e._zod.def;we(r.innerType,t,n);const i=t.seen.get(e);i.ref=r.innerType},Qu=T("ZodISODateTime",(e,t)=>{ah.init(e,t),be.init(e,t)});function em(e){return su(Qu,e)}var tm=T("ZodISODate",(e,t)=>{nh.init(e,t),be.init(e,t)});function am(e){return cu(tm,e)}var nm=T("ZodISOTime",(e,t)=>{rh.init(e,t),be.init(e,t)});function rm(e){return lu(nm,e)}var im=T("ZodISODuration",(e,t)=>{ih.init(e,t),be.init(e,t)});function om(e){return gu(im,e)}var sm=(e,t)=>{Dr.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:a=>Wd(e,a)},flatten:{value:a=>Gd(e,a)},addIssue:{value:a=>{e.issues.push(a),e.message=JSON.stringify(e.issues,qa,2)}},addIssues:{value:a=>{e.issues.push(...a),e.message=JSON.stringify(e.issues,qa,2)}},isEmpty:{get(){return e.issues.length===0}}})},$e=T("ZodError",sm,{Parent:Error}),cm=Ka($e),lm=Ya($e),gm=la($e),dm=ga($e),pm=Jd($e),hm=Xd($e),um=Qd($e),mm=ep($e),fm=tp($e),bm=ap($e),vm=np($e),ym=rp($e),xi=new WeakMap;function Ut(e,t,a){const n=Object.getPrototypeOf(e);let r=xi.get(n);if(r||(r=new Set,xi.set(n,r)),!r.has(t)){r.add(t);for(const i in a){const o=a[i];Object.defineProperty(n,i,{configurable:!0,enumerable:!1,get(){const s=o.bind(this);return Object.defineProperty(this,i,{configurable:!0,writable:!0,enumerable:!0,value:s}),s},set(s){Object.defineProperty(this,i,{configurable:!0,writable:!0,enumerable:!0,value:s})}})}}}var xe=T("ZodType",(e,t)=>(ye.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:ma(e,"input"),output:ma(e,"output")}}),e.toJSONSchema=Iu(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(a,n)=>cm(e,a,n,{callee:e.parse}),e.safeParse=(a,n)=>gm(e,a,n),e.parseAsync=async(a,n)=>lm(e,a,n,{callee:e.parseAsync}),e.safeParseAsync=async(a,n)=>dm(e,a,n),e.spa=e.safeParseAsync,e.encode=(a,n)=>pm(e,a,n),e.decode=(a,n)=>hm(e,a,n),e.encodeAsync=async(a,n)=>um(e,a,n),e.decodeAsync=async(a,n)=>mm(e,a,n),e.safeEncode=(a,n)=>fm(e,a,n),e.safeDecode=(a,n)=>bm(e,a,n),e.safeEncodeAsync=async(a,n)=>vm(e,a,n),e.safeDecodeAsync=async(a,n)=>ym(e,a,n),Ut(e,"ZodType",{check(...a){const n=this.def;return this.clone(rt(n,{checks:[...n.checks??[],...a.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0})},with(...a){return this.check(...a)},clone(a,n){return it(this,a,n)},brand(){return this},register(a,n){return a.add(this,n),this},refine(a,n){return this.check(df(a,n))},superRefine(a,n){return this.check(pf(a,n))},overwrite(a){return this.check(Et(a))},optional(){return Pi(this)},exactOptional(){return Jm(this)},nullable(){return Ti(this)},nullish(){return Pi(Ti(this))},nonoptional(a){return nf(this,a)},array(){return le(this)},or(a){return Pt([this,a])},and(a){return Gm(this,a)},transform(a){return Li(this,Km(a))},default(a){return ef(this,a)},prefault(a){return af(this,a)},catch(a){return of(this,a)},pipe(a){return Li(this,a)},readonly(){return lf(this)},describe(a){const n=this.clone();return Ht.add(n,{description:a}),n},meta(...a){if(a.length===0)return Ht.get(this);const n=this.clone();return Ht.add(n,a[0]),n},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(a){return a(this)}}),Object.defineProperty(e,"description",{get(){return Ht.get(e)?.description},configurable:!0}),e)),_i=T("_ZodString",(e,t)=>{Ja.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(n,r,i)=>Nu(e,n,r,i);const a=e._zod.bag;e.format=a.format??null,e.minLength=a.minimum??null,e.maxLength=a.maximum??null,Ut(e,"_ZodString",{regex(...n){return this.check(fu(...n))},includes(...n){return this.check(yu(...n))},startsWith(...n){return this.check(xu(...n))},endsWith(...n){return this.check(_u(...n))},min(...n){return this.check(ua(...n))},max(...n){return this.check(ui(...n))},length(...n){return this.check(mi(...n))},nonempty(...n){return this.check(ua(1,...n))},lowercase(n){return this.check(bu(n))},uppercase(n){return this.check(vu(n))},trim(){return this.check(ku())},normalize(...n){return this.check(wu(...n))},toLowerCase(){return this.check(Su())},toUpperCase(){return this.check(Cu())},slugify(){return this.check(Eu())}})}),xm=T("ZodString",(e,t)=>{Ja.init(e,t),_i.init(e,t),e.email=a=>e.check(Dh(_m,a)),e.url=a=>e.check(Zh(wm,a)),e.jwt=a=>e.check(ou(Om,a)),e.emoji=a=>e.check(Vh(km,a)),e.guid=a=>e.check(gi(wi,a)),e.uuid=a=>e.check(Hh(fa,a)),e.uuidv4=a=>e.check(Uh(fa,a)),e.uuidv6=a=>e.check(jh(fa,a)),e.uuidv7=a=>e.check(qh(fa,a)),e.nanoid=a=>e.check(Gh(Sm,a)),e.guid=a=>e.check(gi(wi,a)),e.cuid=a=>e.check(Wh(Cm,a)),e.cuid2=a=>e.check(Kh(Em,a)),e.ulid=a=>e.check(Yh(Pm,a)),e.base64=a=>e.check(nu(Mm,a)),e.base64url=a=>e.check(ru(Bm,a)),e.xid=a=>e.check(Jh(Tm,a)),e.ksuid=a=>e.check(Xh(Am,a)),e.ipv4=a=>e.check(Qh(Lm,a)),e.ipv6=a=>e.check(eu(Im,a)),e.cidrv4=a=>e.check(tu(zm,a)),e.cidrv6=a=>e.check(au(Nm,a)),e.e164=a=>e.check(iu(Rm,a)),e.datetime=a=>e.check(em(a)),e.date=a=>e.check(am(a)),e.time=a=>e.check(rm(a)),e.duration=a=>e.check(om(a))});function w(e){return Fh(xm,e)}var be=T("ZodStringFormat",(e,t)=>{fe.init(e,t),_i.init(e,t)}),_m=T("ZodEmail",(e,t)=>{Gp.init(e,t),be.init(e,t)}),wi=T("ZodGUID",(e,t)=>{Zp.init(e,t),be.init(e,t)}),fa=T("ZodUUID",(e,t)=>{Vp.init(e,t),be.init(e,t)}),wm=T("ZodURL",(e,t)=>{Wp.init(e,t),be.init(e,t)}),km=T("ZodEmoji",(e,t)=>{Kp.init(e,t),be.init(e,t)}),Sm=T("ZodNanoID",(e,t)=>{Yp.init(e,t),be.init(e,t)}),Cm=T("ZodCUID",(e,t)=>{Jp.init(e,t),be.init(e,t)}),Em=T("ZodCUID2",(e,t)=>{Xp.init(e,t),be.init(e,t)}),Pm=T("ZodULID",(e,t)=>{Qp.init(e,t),be.init(e,t)}),Tm=T("ZodXID",(e,t)=>{eh.init(e,t),be.init(e,t)}),Am=T("ZodKSUID",(e,t)=>{th.init(e,t),be.init(e,t)}),Lm=T("ZodIPv4",(e,t)=>{oh.init(e,t),be.init(e,t)}),Im=T("ZodIPv6",(e,t)=>{sh.init(e,t),be.init(e,t)}),zm=T("ZodCIDRv4",(e,t)=>{ch.init(e,t),be.init(e,t)}),Nm=T("ZodCIDRv6",(e,t)=>{lh.init(e,t),be.init(e,t)}),Mm=T("ZodBase64",(e,t)=>{gh.init(e,t),be.init(e,t)}),Bm=T("ZodBase64URL",(e,t)=>{ph.init(e,t),be.init(e,t)}),Rm=T("ZodE164",(e,t)=>{hh.init(e,t),be.init(e,t)}),Om=T("ZodJWT",(e,t)=>{mh.init(e,t),be.init(e,t)}),ki=T("ZodNumber",(e,t)=>{Jr.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(n,r,i)=>Mu(e,n,r,i),Ut(e,"ZodNumber",{gt(n,r){return this.check(pi(n,r))},gte(n,r){return this.check(en(n,r))},min(n,r){return this.check(en(n,r))},lt(n,r){return this.check(di(n,r))},lte(n,r){return this.check(Qa(n,r))},max(n,r){return this.check(Qa(n,r))},int(n){return this.check(Si(n))},safe(n){return this.check(Si(n))},positive(n){return this.check(pi(0,n))},nonnegative(n){return this.check(en(0,n))},negative(n){return this.check(di(0,n))},nonpositive(n){return this.check(Qa(0,n))},multipleOf(n,r){return this.check(hi(n,r))},step(n,r){return this.check(hi(n,r))},finite(){return this}});const a=e._zod.bag;e.minValue=Math.max(a.minimum??Number.NEGATIVE_INFINITY,a.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(a.maximum??Number.POSITIVE_INFINITY,a.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(a.format??"").includes("int")||Number.isSafeInteger(a.multipleOf??.5),e.isFinite=!0,e.format=a.format??null});function Ze(e){return du(ki,e)}var $m=T("ZodNumberFormat",(e,t)=>{fh.init(e,t),ki.init(e,t)});function Si(e){return pu($m,e)}var Fm=T("ZodBoolean",(e,t)=>{bh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Bu(e,a,n,r)});function ot(e){return hu(Fm,e)}var Dm=T("ZodUnknown",(e,t)=>{vh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Ou(e,a,n,r)});function Oe(){return uu(Dm)}var Hm=T("ZodNever",(e,t)=>{yh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Ru(e,a,n,r)});function Um(e){return mu(Hm,e)}var jm=T("ZodArray",(e,t)=>{xh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Hu(e,a,n,r),e.element=t.element,Ut(e,"ZodArray",{min(a,n){return this.check(ua(a,n))},nonempty(a){return this.check(ua(1,a))},max(a,n){return this.check(ui(a,n))},length(a,n){return this.check(mi(a,n))},unwrap(){return this.element}})});function le(e,t){return Pu(jm,e,t)}var qm=T("ZodObject",(e,t)=>{wh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Uu(e,a,n,r),ue(e,"shape",()=>t.shape),Ut(e,"ZodObject",{keyof(){return dt(Object.keys(this._zod.def.shape))},catchall(a){return this.clone({...this._zod.def,catchall:a})},passthrough(){return this.clone({...this._zod.def,catchall:Oe()})},loose(){return this.clone({...this._zod.def,catchall:Oe()})},strict(){return this.clone({...this._zod.def,catchall:Um()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(a){return Hd(this,a)},safeExtend(a){return Ud(this,a)},merge(a){return jd(this,a)},pick(a){return Fd(this,a)},omit(a){return Dd(this,a)},partial(...a){return qd(Ei,this,a[0])},required(...a){return Zd(Ai,this,a[0])}})});function ae(e,t){return new qm({type:"object",shape:e??{},...W(t)})}var Zm=T("ZodUnion",(e,t)=>{kh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>ju(e,a,n,r),e.options=t.options});function Pt(e,t){return new Zm({type:"union",options:e,...W(t)})}var Vm=T("ZodIntersection",(e,t)=>{Sh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>qu(e,a,n,r)});function Gm(e,t){return new Vm({type:"intersection",left:e,right:t})}var Ci=T("ZodRecord",(e,t)=>{Ch.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Zu(e,a,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function gt(e,t,a){return!t||!t._zod?new Ci({type:"record",keyType:w(),valueType:e,...W(t)}):new Ci({type:"record",keyType:e,valueType:t,...W(a)})}var tn=T("ZodEnum",(e,t)=>{Eh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(n,r,i)=>$u(e,n,r,i),e.enum=t.entries,e.options=Object.values(t.entries);const a=new Set(Object.keys(t.entries));e.extract=(n,r)=>{const i={};for(const o of n)if(a.has(o))i[o]=t.entries[o];else throw new Error(`Key ${o} not found in enum`);return new tn({...t,checks:[],...W(r),entries:i})},e.exclude=(n,r)=>{const i={...t.entries};for(const o of n)if(a.has(o))delete i[o];else throw new Error(`Key ${o} not found in enum`);return new tn({...t,checks:[],...W(r),entries:i})}});function dt(e,t){return new tn({type:"enum",entries:Array.isArray(e)?Object.fromEntries(e.map(a=>[a,a])):e,...W(t)})}var Wm=T("ZodTransform",(e,t)=>{Ph.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Du(e,a,n,r),e._zod.parse=(a,n)=>{if(n.direction==="backward")throw new Nr(e.constructor.name);a.addIssue=i=>{if(typeof i=="string")a.issues.push(Dt(i,a.value,t));else{const o=i;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=a.value),o.inst??(o.inst=e),a.issues.push(Dt(o))}};const r=t.transform(a.value,a);return r instanceof Promise?r.then(i=>(a.value=i,a.fallback=!0,a)):(a.value=r,a.fallback=!0,a)}});function Km(e){return new Wm({type:"transform",transform:e})}var Ei=T("ZodOptional",(e,t)=>{ri.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>yi(e,a,n,r),e.unwrap=()=>e._zod.def.innerType});function Pi(e){return new Ei({type:"optional",innerType:e})}var Ym=T("ZodExactOptional",(e,t)=>{Th.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>yi(e,a,n,r),e.unwrap=()=>e._zod.def.innerType});function Jm(e){return new Ym({type:"optional",innerType:e})}var Xm=T("ZodNullable",(e,t)=>{Ah.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Vu(e,a,n,r),e.unwrap=()=>e._zod.def.innerType});function Ti(e){return new Xm({type:"nullable",innerType:e})}var Qm=T("ZodDefault",(e,t)=>{Lh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Wu(e,a,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function ef(e,t){return new Qm({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():$r(t)}})}var tf=T("ZodPrefault",(e,t)=>{Ih.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Ku(e,a,n,r),e.unwrap=()=>e._zod.def.innerType});function af(e,t){return new tf({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():$r(t)}})}var Ai=T("ZodNonOptional",(e,t)=>{zh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Gu(e,a,n,r),e.unwrap=()=>e._zod.def.innerType});function nf(e,t){return new Ai({type:"nonoptional",innerType:e,...W(t)})}var rf=T("ZodCatch",(e,t)=>{Nh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Yu(e,a,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function of(e,t){return new rf({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var sf=T("ZodPipe",(e,t)=>{Mh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Ju(e,a,n,r),e.in=t.in,e.out=t.out});function Li(e,t){return new sf({type:"pipe",in:e,out:t})}var cf=T("ZodReadonly",(e,t)=>{Bh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Xu(e,a,n,r),e.unwrap=()=>e._zod.def.innerType});function lf(e){return new cf({type:"readonly",innerType:e})}var gf=T("ZodCustom",(e,t)=>{Rh.init(e,t),xe.init(e,t),e._zod.processJSONSchema=(a,n,r)=>Fu(e,a,n,r)});function df(e,t={}){return Tu(gf,e,t)}function pf(e,t){return Au(e,t)}var hf=ae({role:dt(["user","assistant"]),content:w(),timestamp:Ze().optional()}),uf=ae({sku:w(),name:w(),imageUrl:w().url().optional(),price:w().optional(),originalPrice:w().optional(),url:w().url(),ctaLabel:w().optional()}),Ii=ae({buttons:le(ae({label:w(),action:ae({title:w(),type:w(),payload:Oe().optional()})}))}),mf=Ii,ff=ae({}),bf=ae({label:w().optional()}),zi=ae({sku:w(),name:w(),price:w(),url:w().optional(),imageUrl:w().optional(),rating:Ze().optional(),reviewCount:Ze().optional()}),vf=ae({recommended:zi,products:le(zi),attributes:le(ae({label:w(),values:le(w())})),highlights:le(w()),specialCases:le(w()).optional(),recommendedText:w().optional(),winnerHits:gt(w(),ae({positive:le(w()).optional(),negative:le(w()).optional()})).optional(),productActions:gt(w(),ae({title:w(),type:w(),payload:Oe().optional()})).optional()}),yf=ae({label:w(),sentiment:dt(["positive","negative","neutral"]).optional()}),xf=ae({product:gt(w(),Oe()),role:w().optional(),reason:w().optional(),labels:le(yf).optional(),expertQualityScore:Ze().optional(),reviewHighlight:w().optional(),action:ae({title:w(),type:w(),payload:Oe().optional()}).optional()}),_f=ae({suggestions:le(xf)}),wf=ae({title:w().optional(),text:w().optional(),reviewCount:w().optional(),action:ae({title:w(),type:w(),payload:Oe().optional()})}),kf=ae({entries:le(ae({name:w(),image:w().optional(),description:w().optional(),action:ae({title:w(),type:w(),payload:Oe().optional()})}))}),Sf=ae({entries:le(ae({shortName:w(),detailedMessage:w().optional(),whyDifferent:w().optional(),image:w().optional(),action:ae({title:w(),type:w(),payload:Oe().optional()})}))}),Ni=ae({title:w(),type:w(),payload:Oe().optional()}),jt=ae({name:w().optional(),value:w().optional(),option_value:w().optional(),attribute_value:w().optional(),type:w().optional(),attribute:w().optional(),option_name:w().optional(),attribute_name:w().optional(),variant_name:w().optional(),sku:w().optional(),price:Pt([Ze(),w()]).optional(),price_discounted:Pt([Ze(),w()]).optional(),image:w().optional(),imageUrl:w().optional(),image_url:w().optional(),color:w().optional(),colour:w().optional(),color_hex:w().optional(),hex:w().optional(),swatch:w().optional(),swatchColor:w().optional(),in_stock:ot().optional(),inStock:ot().optional()}),Cf=ae({product:ae({sku:w().optional(),name:w().optional(),images:le(w()).optional(),imageUrl:w().optional(),rating:Ze().optional(),reviewCount:Ze().optional(),price:w().optional(),originalPrice:w().optional(),discountReason:w().optional(),discount_reason:w().optional(),campaignReason:w().optional(),campaign_reason:w().optional(),originalPriceStyle:dt(["strikethrough","inline"]).optional(),price_original_style:dt(["strikethrough","inline"]).optional(),price_discount_rate:Ze().optional(),price_async:ot().optional(),inStock:ot().optional(),promotions:le(w()).optional(),variants:le(jt).optional(),variantOptions:le(jt).optional(),variant_options:le(jt).optional(),productVariants:le(jt).optional(),product_variants:le(jt).optional(),url:w().optional(),cartCode:w().optional(),description:w().optional(),description_html:w().optional(),descriptionHtml:w().optional(),facet_hits:gt(w(),Oe()).optional(),facetHits:gt(w(),Oe()).optional(),features:le(ae({name:w().optional(),key:w().optional(),label:w().optional(),value:Pt([w(),Ze(),ot()]).optional()})).optional(),specifications:Pt([gt(w(),w()),le(ae({key:w(),value:w()}))]).optional()}).optional(),action:Ni.optional()}),Ef=ae({layout:dt(["grid","grouped"]).optional(),productSections:le(ae({title:w().optional(),children:le(w())})).optional(),panelTitle:w().optional(),endOfList:ot().optional(),rankingState:dt(["pending","final"]).optional(),sequenceId:w().optional()}),Pf=ae({review_class:w().optional(),review_text:w().optional(),review_rating:Pt([w(),Ze()]).optional(),review_tag:w().optional()}),Tf=ae({reviews:le(Pf).optional()}),Af=ae({groups:le(ae({groupName:w(),image:w().optional(),description:w().optional(),highlight:w().optional(),labels:le(w()).optional(),products:le(gt(w(),Oe())).optional()})).optional(),filterTags:le(ae({title:w(),action:Ni.optional()})).optional()}),Lf=ae({eyebrow:w().optional(),title:w().optional(),showTitle:ot().optional(),ctaLabel:w().optional(),panelMessageId:w(),highlightMessageId:w().optional(),threadId:w().optional(),products:le(ae({imageUrl:w().url().optional(),name:w().optional()})).optional()}),If=ae({summary:w(),strengths:le(w()).optional(),focus_points:le(w()).optional(),celeb_style:w().optional(),celeb_style_reason:w().optional(),next_question:w().optional(),style_images:le(w()).optional()}),zf=ae({processing:ot().optional(),title:w().optional(),description:w().optional(),upload_label:w().optional(),skip_label:w().optional()}),Nf={components:{MessageBubble:{schema:hf,description:"A single chat message bubble for user or assistant turns."},ProductCard:{schema:uf,description:"A product card rendered inline in the chat stream."},ActionButtons:{schema:Ii,description:"A horizontal row of quick-reply action buttons."},InlineQuestionButtons:{schema:mf,description:"Inline quick-question chips rendered inside the message flow."},TypingIndicator:{schema:ff,description:"An animated indicator shown while the assistant is typing."},Divider:{schema:bf,description:"A horizontal rule with an optional label."},ComparisonTable:{schema:vf,description:"A product comparison table with recommended pick, attribute rows, and highlights."},AITopPicks:{schema:_f,description:"Rich AI-curated product suggestion cards with roles, sentiment labels, scores, and review quotes."},GroundingReviewCard:{schema:wf,description:"A card showing review grounding data with review count and CTA."},AIGroupingCards:{schema:kf,description:"Category grouping cards with images and labels for product discovery."},AISuggestedSearchCards:{schema:Sf,description:"Suggested search cards with images, descriptions, and differentiation."},ProductDetailsPanel:{schema:Cf,description:"Full product detail view with images, specs, variants, and purchase actions."},ProductGrid:{schema:Ef,description:'A scrollable grid of ProductCard children with optional "more" pagination.'},ReviewHighlights:{schema:Tf,description:"A list of highlighted customer reviews with sentiment and ratings."},CategoriesContainer:{schema:Af,description:"Tabbed product groups with optional filter tag buttons."},PanelRestoreCard:{schema:Lf,description:"A frontend-owned transcript card that reopens a related panel snapshot."},PhotoAnalysisCard:{schema:If,description:"Structured photo analysis card with strengths, focus points, celeb vibe, and follow-up question."},BeautyPhotoStep:{schema:zf,description:"Transient selfie upload prompt for beauty consulting init flow."}}};Le.CHAT_SCROLL_ELEMENT_ID=Vt,Le.ChatPresentationState=Cr,Le.GengageChat=Ir,Le.chatCatalog=Nf,Le.createChatWidget=zd,Le.createDefaultChatUISpecRegistry=Yn,Le.createFloatingLauncher=ur,Le.createInlineLauncher=fr,Le.defaultChatUnknownUISpecRenderer=Aa,Le.getChatScrollElement=ic,Le.invalidateChatScrollCache=Ln,Le.isSimilarsAppendGrid=ra,Le.renderUISpec=Jn})(this.Gengage=this.Gengage||{});
|
|
611
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const o of t.seen.entries()){const s=o[1];if(e===o[0]){i(o);continue}if(t.external){const c=t.external.registry.get(o[0])?.id;if(e!==o[0]&&c){i(o);continue}}if(t.metadataRegistry.get(o[0])?.id){i(o);continue}if(s.cycle){i(o);continue}if(s.count>1&&t.reused==="ref"){i(o);continue}}}function Si(t,e){const a=t.seen.get(e);if(!a)throw new Error("Unprocessed schema. This is a bug in Zod.");const n=s=>{const c=t.seen.get(s);if(c.ref===null)return;const l=c.def??c.schema,d={...l},g=c.ref;if(c.ref=null,g){n(g);const u=t.seen.get(g),m=u.schema;if(m.$ref&&(t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0")?(l.allOf=l.allOf??[],l.allOf.push(m)):Object.assign(l,m),Object.assign(l,d),s._zod.parent===g)for(const f in l)f==="$ref"||f==="allOf"||f in d||delete l[f];if(m.$ref&&u.def)for(const f in l)f==="$ref"||f==="allOf"||f in u.def&&JSON.stringify(l[f])===JSON.stringify(u.def[f])&&delete l[f]}const p=s._zod.parent;if(p&&p!==g){n(p);const u=t.seen.get(p);if(u?.schema.$ref&&(l.$ref=u.schema.$ref,u.def))for(const m in l)m==="$ref"||m==="allOf"||m in u.def&&JSON.stringify(l[m])===JSON.stringify(u.def[m])&&delete l[m]}t.override({zodSchema:s,jsonSchema:l,path:c.path??[]})};for(const s of[...t.seen.entries()].reverse())n(s[0]);const r={};if(t.target==="draft-2020-12"?r.$schema="https://json-schema.org/draft/2020-12/schema":t.target==="draft-07"?r.$schema="http://json-schema.org/draft-07/schema#":t.target==="draft-04"?r.$schema="http://json-schema.org/draft-04/schema#":t.target,t.external?.uri){const s=t.external.registry.get(e)?.id;if(!s)throw new Error("Schema is missing an `id` property");r.$id=t.external.uri(s)}Object.assign(r,a.def??a.schema);const i=t.metadataRegistry.get(e)?.id;i!==void 0&&r.id===i&&delete r.id;const o=t.external?.defs??{};for(const s of t.seen.entries()){const c=s[1];c.def&&c.defId&&(c.def.id===c.defId&&delete c.def.id,o[c.defId]=c.def)}t.external||Object.keys(o).length>0&&(t.target==="draft-2020-12"?r.$defs=o:r.definitions=o);try{const s=JSON.parse(JSON.stringify(r));return Object.defineProperty(s,"~standard",{value:{...e["~standard"],jsonSchema:{input:ba(e,"input",t.processors),output:ba(e,"output",t.processors)}},enumerable:!1,writable:!1}),s}catch{throw new Error("Error converting schema to JSON.")}}function Ne(t,e){const a=e??{seen:new Set};if(a.seen.has(t))return!1;a.seen.add(t);const n=t._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return Ne(n.element,a);if(n.type==="set")return Ne(n.valueType,a);if(n.type==="lazy")return Ne(n.getter(),a);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault")return Ne(n.innerType,a);if(n.type==="intersection")return Ne(n.left,a)||Ne(n.right,a);if(n.type==="record"||n.type==="map")return Ne(n.keyType,a)||Ne(n.valueType,a);if(n.type==="pipe")return t._zod.traits.has("$ZodCodec")?!0:Ne(n.in,a)||Ne(n.out,a);if(n.type==="object"){for(const r in n.shape)if(Ne(n.shape[r],a))return!0;return!1}if(n.type==="union"){for(const r of n.options)if(Ne(r,a))return!0;return!1}if(n.type==="tuple"){for(const r of n.items)if(Ne(r,a))return!0;return!!(n.rest&&Ne(n.rest,a))}return!1}var $u=(t,e={})=>a=>{const n=wi({...a,processors:e});return ke(t,n),ki(n,t),Si(n,t)},ba=(t,e,a={})=>n=>{const{libraryOptions:r,target:i}=n??{},o=wi({...r??{},target:i,io:e,processors:a});return ke(t,o),ki(o,t),Si(o,t)},Du={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Hu=(t,e,a,n)=>{const r=a;r.type="string";const{minimum:i,maximum:o,format:s,patterns:c,contentEncoding:l}=t._zod.bag;if(typeof i=="number"&&(r.minLength=i),typeof o=="number"&&(r.maxLength=o),s&&(r.format=Du[s]??s,r.format===""&&delete r.format,s==="time"&&delete r.format),l&&(r.contentEncoding=l),c&&c.size>0){const d=[...c];d.length===1?r.pattern=d[0].source:d.length>1&&(r.allOf=[...d.map(g=>({...e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"?{type:"string"}:{},pattern:g.source}))])}},Uu=(t,e,a,n)=>{const r=a,{minimum:i,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:d}=t._zod.bag;typeof s=="string"&&s.includes("int")?r.type="integer":r.type="number";const g=typeof d=="number"&&d>=(i??Number.NEGATIVE_INFINITY),p=typeof l=="number"&&l<=(o??Number.POSITIVE_INFINITY),u=e.target==="draft-04"||e.target==="openapi-3.0";g?u?(r.minimum=d,r.exclusiveMinimum=!0):r.exclusiveMinimum=d:typeof i=="number"&&(r.minimum=i),p?u?(r.maximum=l,r.exclusiveMaximum=!0):r.exclusiveMaximum=l:typeof o=="number"&&(r.maximum=o),typeof c=="number"&&(r.multipleOf=c)},ju=(t,e,a,n)=>{a.type="boolean"},qu=(t,e,a,n)=>{a.not={}},Zu=(t,e,a,n)=>{},Vu=(t,e,a,n)=>{const r=t._zod.def,i=Dr(r.entries);i.every(o=>typeof o=="number")&&(a.type="number"),i.every(o=>typeof o=="string")&&(a.type="string"),a.enum=i},Gu=(t,e,a,n)=>{if(e.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},Wu=(t,e,a,n)=>{if(e.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},Ku=(t,e,a,n)=>{const r=a,i=t._zod.def,{minimum:o,maximum:s}=t._zod.bag;typeof o=="number"&&(r.minItems=o),typeof s=="number"&&(r.maxItems=s),r.type="array",r.items=ke(i.element,e,{...n,path:[...n.path,"items"]})},Yu=(t,e,a,n)=>{const r=a,i=t._zod.def;r.type="object",r.properties={};const o=i.shape;for(const l in o)r.properties[l]=ke(o[l],e,{...n,path:[...n.path,"properties",l]});const s=new Set(Object.keys(o)),c=new Set([...s].filter(l=>{const d=i.shape[l]._zod;return e.io==="input"?d.optin===void 0:d.optout===void 0}));c.size>0&&(r.required=Array.from(c)),i.catchall?._zod.def.type==="never"?r.additionalProperties=!1:i.catchall?i.catchall&&(r.additionalProperties=ke(i.catchall,e,{...n,path:[...n.path,"additionalProperties"]})):e.io==="output"&&(r.additionalProperties=!1)},Ju=(t,e,a,n)=>{const r=t._zod.def,i=r.inclusive===!1,o=r.options.map((s,c)=>ke(s,e,{...n,path:[...n.path,i?"oneOf":"anyOf",c]}));i?a.oneOf=o:a.anyOf=o},Xu=(t,e,a,n)=>{const r=t._zod.def,i=ke(r.left,e,{...n,path:[...n.path,"allOf",0]}),o=ke(r.right,e,{...n,path:[...n.path,"allOf",1]}),s=c=>"allOf"in c&&Object.keys(c).length===1;a.allOf=[...s(i)?i.allOf:[i],...s(o)?o.allOf:[o]]},Qu=(t,e,a,n)=>{const r=a,i=t._zod.def;r.type="object";const o=i.keyType,s=o._zod.bag?.patterns;if(i.mode==="loose"&&s&&s.size>0){const l=ke(i.valueType,e,{...n,path:[...n.path,"patternProperties","*"]});r.patternProperties={};for(const d of s)r.patternProperties[d.source]=l}else(e.target==="draft-07"||e.target==="draft-2020-12")&&(r.propertyNames=ke(i.keyType,e,{...n,path:[...n.path,"propertyNames"]})),r.additionalProperties=ke(i.valueType,e,{...n,path:[...n.path,"additionalProperties"]});const c=o._zod.values;if(c){const l=[...c].filter(d=>typeof d=="string"||typeof d=="number");l.length>0&&(r.required=l)}},em=(t,e,a,n)=>{const r=t._zod.def,i=ke(r.innerType,e,n),o=e.seen.get(t);e.target==="openapi-3.0"?(o.ref=r.innerType,a.nullable=!0):a.anyOf=[i,{type:"null"}]},tm=(t,e,a,n)=>{const r=t._zod.def;ke(r.innerType,e,n);const i=e.seen.get(t);i.ref=r.innerType},am=(t,e,a,n)=>{const r=t._zod.def;ke(r.innerType,e,n);const i=e.seen.get(t);i.ref=r.innerType,a.default=JSON.parse(JSON.stringify(r.defaultValue))},nm=(t,e,a,n)=>{const r=t._zod.def;ke(r.innerType,e,n);const i=e.seen.get(t);i.ref=r.innerType,e.io==="input"&&(a._prefault=JSON.parse(JSON.stringify(r.defaultValue)))},rm=(t,e,a,n)=>{const r=t._zod.def;ke(r.innerType,e,n);const i=e.seen.get(t);i.ref=r.innerType;let o;try{o=r.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}a.default=o},im=(t,e,a,n)=>{const r=t._zod.def,i=r.in._zod.traits.has("$ZodTransform"),o=e.io==="input"?i?r.out:r.in:r.out;ke(o,e,n);const s=e.seen.get(t);s.ref=o},om=(t,e,a,n)=>{const r=t._zod.def;ke(r.innerType,e,n);const i=e.seen.get(t);i.ref=r.innerType,a.readOnly=!0},Ci=(t,e,a,n)=>{const r=t._zod.def;ke(r.innerType,e,n);const i=e.seen.get(t);i.ref=r.innerType},sm=T("ZodISODateTime",(t,e)=>{dh.init(t,e),ve.init(t,e)});function cm(t){return mu(sm,t)}var lm=T("ZodISODate",(t,e)=>{gh.init(t,e),ve.init(t,e)});function dm(t){return fu(lm,t)}var gm=T("ZodISOTime",(t,e)=>{ph.init(t,e),ve.init(t,e)});function pm(t){return bu(gm,t)}var hm=T("ZodISODuration",(t,e)=>{hh.init(t,e),ve.init(t,e)});function um(t){return vu(hm,t)}var mm=(t,e)=>{Vr.init(t,e),t.name="ZodError",Object.defineProperties(t,{format:{value:a=>ap(t,a)},flatten:{value:a=>tp(t,a)},addIssue:{value:a=>{t.issues.push(a),t.message=JSON.stringify(t.issues,Ga,2)}},addIssues:{value:a=>{t.issues.push(...a),t.message=JSON.stringify(t.issues,Ga,2)}},isEmpty:{get(){return t.issues.length===0}}})},Ue=T("ZodError",mm,{Parent:Error}),fm=Xa(Ue),bm=Qa(Ue),vm=ga(Ue),ym=pa(Ue),xm=ip(Ue),_m=op(Ue),wm=sp(Ue),km=cp(Ue),Sm=lp(Ue),Cm=dp(Ue),Em=gp(Ue),Pm=pp(Ue),Ei=new WeakMap;function Zt(t,e,a){const n=Object.getPrototypeOf(t);let r=Ei.get(n);if(r||(r=new Set,Ei.set(n,r)),!r.has(e)){r.add(e);for(const i in a){const o=a[i];Object.defineProperty(n,i,{configurable:!0,enumerable:!1,get(){const s=o.bind(this);return Object.defineProperty(this,i,{configurable:!0,writable:!0,enumerable:!0,value:s}),s},set(s){Object.defineProperty(this,i,{configurable:!0,writable:!0,enumerable:!0,value:s})}})}}}var _e=T("ZodType",(t,e)=>(xe.init(t,e),Object.assign(t["~standard"],{jsonSchema:{input:ba(t,"input"),output:ba(t,"output")}}),t.toJSONSchema=$u(t,{}),t.def=e,t.type=e.type,Object.defineProperty(t,"_def",{value:e}),t.parse=(a,n)=>fm(t,a,n,{callee:t.parse}),t.safeParse=(a,n)=>vm(t,a,n),t.parseAsync=async(a,n)=>bm(t,a,n,{callee:t.parseAsync}),t.safeParseAsync=async(a,n)=>ym(t,a,n),t.spa=t.safeParseAsync,t.encode=(a,n)=>xm(t,a,n),t.decode=(a,n)=>_m(t,a,n),t.encodeAsync=async(a,n)=>wm(t,a,n),t.decodeAsync=async(a,n)=>km(t,a,n),t.safeEncode=(a,n)=>Sm(t,a,n),t.safeDecode=(a,n)=>Cm(t,a,n),t.safeEncodeAsync=async(a,n)=>Em(t,a,n),t.safeDecodeAsync=async(a,n)=>Pm(t,a,n),Zt(t,"ZodType",{check(...a){const n=this.def;return this.clone(lt(n,{checks:[...n.checks??[],...a.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0})},with(...a){return this.check(...a)},clone(a,n){return dt(this,a,n)},brand(){return this},register(a,n){return a.add(this,n),this},refine(a,n){return this.check(yf(a,n))},superRefine(a,n){return this.check(xf(a,n))},overwrite(a){return this.check(It(a))},optional(){return zi(this)},exactOptional(){return of(this)},nullable(){return Mi(this)},nullish(){return zi(Mi(this))},nonoptional(a){return pf(this,a)},array(){return ce(this)},or(a){return Nt([this,a])},and(a){return tf(this,a)},transform(a){return Ri(this,nf(a))},default(a){return lf(this,a)},prefault(a){return gf(this,a)},catch(a){return uf(this,a)},pipe(a){return Ri(this,a)},readonly(){return bf(this)},describe(a){const n=this.clone();return qt.add(n,{description:a}),n},meta(...a){if(a.length===0)return qt.get(this);const n=this.clone();return qt.add(n,a[0]),n},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(a){return a(this)}}),Object.defineProperty(t,"description",{get(){return qt.get(t)?.description},configurable:!0}),t)),Pi=T("_ZodString",(t,e)=>{en.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(n,r,i)=>Hu(t,n,r,i);const a=t._zod.bag;t.format=a.format??null,t.minLength=a.minimum??null,t.maxLength=a.maximum??null,Zt(t,"_ZodString",{regex(...n){return this.check(Su(...n))},includes(...n){return this.check(Pu(...n))},startsWith(...n){return this.check(Tu(...n))},endsWith(...n){return this.check(Au(...n))},min(...n){return this.check(fa(...n))},max(...n){return this.check(xi(...n))},length(...n){return this.check(_i(...n))},nonempty(...n){return this.check(fa(1,...n))},lowercase(n){return this.check(Cu(n))},uppercase(n){return this.check(Eu(n))},trim(){return this.check(Iu())},normalize(...n){return this.check(Lu(...n))},toLowerCase(){return this.check(Nu())},toUpperCase(){return this.check(zu())},slugify(){return this.check(Mu())}})}),Tm=T("ZodString",(t,e)=>{en.init(t,e),Pi.init(t,e),t.email=a=>t.check(Wh(Am,a)),t.url=a=>t.check(Qh(Lm,a)),t.jwt=a=>t.check(uu(Zm,a)),t.emoji=a=>t.check(eu(Im,a)),t.guid=a=>t.check(fi(Ti,a)),t.uuid=a=>t.check(Kh(va,a)),t.uuidv4=a=>t.check(Yh(va,a)),t.uuidv6=a=>t.check(Jh(va,a)),t.uuidv7=a=>t.check(Xh(va,a)),t.nanoid=a=>t.check(tu(Nm,a)),t.guid=a=>t.check(fi(Ti,a)),t.cuid=a=>t.check(au(zm,a)),t.cuid2=a=>t.check(nu(Mm,a)),t.ulid=a=>t.check(ru(Bm,a)),t.base64=a=>t.check(gu(Um,a)),t.base64url=a=>t.check(pu(jm,a)),t.xid=a=>t.check(iu(Rm,a)),t.ksuid=a=>t.check(ou(Om,a)),t.ipv4=a=>t.check(su(Fm,a)),t.ipv6=a=>t.check(cu($m,a)),t.cidrv4=a=>t.check(lu(Dm,a)),t.cidrv6=a=>t.check(du(Hm,a)),t.e164=a=>t.check(hu(qm,a)),t.datetime=a=>t.check(cm(a)),t.date=a=>t.check(dm(a)),t.time=a=>t.check(pm(a)),t.duration=a=>t.check(um(a))});function S(t){return Gh(Tm,t)}var ve=T("ZodStringFormat",(t,e)=>{be.init(t,e),Pi.init(t,e)}),Am=T("ZodEmail",(t,e)=>{th.init(t,e),ve.init(t,e)}),Ti=T("ZodGUID",(t,e)=>{Qp.init(t,e),ve.init(t,e)}),va=T("ZodUUID",(t,e)=>{eh.init(t,e),ve.init(t,e)}),Lm=T("ZodURL",(t,e)=>{ah.init(t,e),ve.init(t,e)}),Im=T("ZodEmoji",(t,e)=>{nh.init(t,e),ve.init(t,e)}),Nm=T("ZodNanoID",(t,e)=>{rh.init(t,e),ve.init(t,e)}),zm=T("ZodCUID",(t,e)=>{ih.init(t,e),ve.init(t,e)}),Mm=T("ZodCUID2",(t,e)=>{oh.init(t,e),ve.init(t,e)}),Bm=T("ZodULID",(t,e)=>{sh.init(t,e),ve.init(t,e)}),Rm=T("ZodXID",(t,e)=>{ch.init(t,e),ve.init(t,e)}),Om=T("ZodKSUID",(t,e)=>{lh.init(t,e),ve.init(t,e)}),Fm=T("ZodIPv4",(t,e)=>{uh.init(t,e),ve.init(t,e)}),$m=T("ZodIPv6",(t,e)=>{mh.init(t,e),ve.init(t,e)}),Dm=T("ZodCIDRv4",(t,e)=>{fh.init(t,e),ve.init(t,e)}),Hm=T("ZodCIDRv6",(t,e)=>{bh.init(t,e),ve.init(t,e)}),Um=T("ZodBase64",(t,e)=>{vh.init(t,e),ve.init(t,e)}),jm=T("ZodBase64URL",(t,e)=>{xh.init(t,e),ve.init(t,e)}),qm=T("ZodE164",(t,e)=>{_h.init(t,e),ve.init(t,e)}),Zm=T("ZodJWT",(t,e)=>{kh.init(t,e),ve.init(t,e)}),Ai=T("ZodNumber",(t,e)=>{ni.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(n,r,i)=>Uu(t,n,r,i),Zt(t,"ZodNumber",{gt(n,r){return this.check(vi(n,r))},gte(n,r){return this.check(nn(n,r))},min(n,r){return this.check(nn(n,r))},lt(n,r){return this.check(bi(n,r))},lte(n,r){return this.check(an(n,r))},max(n,r){return this.check(an(n,r))},int(n){return this.check(Li(n))},safe(n){return this.check(Li(n))},positive(n){return this.check(vi(0,n))},nonnegative(n){return this.check(nn(0,n))},negative(n){return this.check(bi(0,n))},nonpositive(n){return this.check(an(0,n))},multipleOf(n,r){return this.check(yi(n,r))},step(n,r){return this.check(yi(n,r))},finite(){return this}});const a=t._zod.bag;t.minValue=Math.max(a.minimum??Number.NEGATIVE_INFINITY,a.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,t.maxValue=Math.min(a.maximum??Number.POSITIVE_INFINITY,a.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,t.isInt=(a.format??"").includes("int")||Number.isSafeInteger(a.multipleOf??.5),t.isFinite=!0,t.format=a.format??null});function Ke(t){return yu(Ai,t)}var Vm=T("ZodNumberFormat",(t,e)=>{Sh.init(t,e),Ai.init(t,e)});function Li(t){return xu(Vm,t)}var Gm=T("ZodBoolean",(t,e)=>{Ch.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>ju(t,a,n,r)});function gt(t){return _u(Gm,t)}var Wm=T("ZodUnknown",(t,e)=>{Eh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>Zu(t,a,n,r)});function De(){return wu(Wm)}var Km=T("ZodNever",(t,e)=>{Ph.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>qu(t,a,n,r)});function Ym(t){return ku(Km,t)}var Jm=T("ZodArray",(t,e)=>{Th.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>Ku(t,a,n,r),t.element=e.element,Zt(t,"ZodArray",{min(a,n){return this.check(fa(a,n))},nonempty(a){return this.check(fa(1,a))},max(a,n){return this.check(xi(a,n))},length(a,n){return this.check(_i(a,n))},unwrap(){return this.element}})});function ce(t,e){return Bu(Jm,t,e)}var Xm=T("ZodObject",(t,e)=>{Lh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>Yu(t,a,n,r),pe(t,"shape",()=>e.shape),Zt(t,"ZodObject",{keyof(){return vt(Object.keys(this._zod.def.shape))},catchall(a){return this.clone({...this._zod.def,catchall:a})},passthrough(){return this.clone({...this._zod.def,catchall:De()})},loose(){return this.clone({...this._zod.def,catchall:De()})},strict(){return this.clone({...this._zod.def,catchall:Ym()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(a){return Kg(this,a)},safeExtend(a){return Yg(this,a)},merge(a){return Jg(this,a)},pick(a){return Gg(this,a)},omit(a){return Wg(this,a)},partial(...a){return Xg(Ni,this,a[0])},required(...a){return Qg(Bi,this,a[0])}})});function ae(t,e){return new Xm({type:"object",shape:t??{},...V(e)})}var Qm=T("ZodUnion",(t,e)=>{Ih.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>Ju(t,a,n,r),t.options=e.options});function Nt(t,e){return new Qm({type:"union",options:t,...V(e)})}var ef=T("ZodIntersection",(t,e)=>{Nh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>Xu(t,a,n,r)});function tf(t,e){return new ef({type:"intersection",left:t,right:e})}var Ii=T("ZodRecord",(t,e)=>{zh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>Qu(t,a,n,r),t.keyType=e.keyType,t.valueType=e.valueType});function bt(t,e,a){return!e||!e._zod?new Ii({type:"record",keyType:S(),valueType:t,...V(e)}):new Ii({type:"record",keyType:t,valueType:e,...V(a)})}var rn=T("ZodEnum",(t,e)=>{Mh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(n,r,i)=>Vu(t,n,r,i),t.enum=e.entries,t.options=Object.values(e.entries);const a=new Set(Object.keys(e.entries));t.extract=(n,r)=>{const i={};for(const o of n)if(a.has(o))i[o]=e.entries[o];else throw new Error(`Key ${o} not found in enum`);return new rn({...e,checks:[],...V(r),entries:i})},t.exclude=(n,r)=>{const i={...e.entries};for(const o of n)if(a.has(o))delete i[o];else throw new Error(`Key ${o} not found in enum`);return new rn({...e,checks:[],...V(r),entries:i})}});function vt(t,e){return new rn({type:"enum",entries:Array.isArray(t)?Object.fromEntries(t.map(a=>[a,a])):t,...V(e)})}var af=T("ZodTransform",(t,e)=>{Bh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>Wu(t,a,n,r),t._zod.parse=(a,n)=>{if(n.direction==="backward")throw new $r(t.constructor.name);a.addIssue=i=>{if(typeof i=="string")a.issues.push(jt(i,a.value,e));else{const o=i;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=a.value),o.inst??(o.inst=t),a.issues.push(jt(o))}};const r=e.transform(a.value,a);return r instanceof Promise?r.then(i=>(a.value=i,a.fallback=!0,a)):(a.value=r,a.fallback=!0,a)}});function nf(t){return new af({type:"transform",transform:t})}var Ni=T("ZodOptional",(t,e)=>{di.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>Ci(t,a,n,r),t.unwrap=()=>t._zod.def.innerType});function zi(t){return new Ni({type:"optional",innerType:t})}var rf=T("ZodExactOptional",(t,e)=>{Rh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>Ci(t,a,n,r),t.unwrap=()=>t._zod.def.innerType});function of(t){return new rf({type:"optional",innerType:t})}var sf=T("ZodNullable",(t,e)=>{Oh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>em(t,a,n,r),t.unwrap=()=>t._zod.def.innerType});function Mi(t){return new sf({type:"nullable",innerType:t})}var cf=T("ZodDefault",(t,e)=>{Fh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>am(t,a,n,r),t.unwrap=()=>t._zod.def.innerType,t.removeDefault=t.unwrap});function lf(t,e){return new cf({type:"default",innerType:t,get defaultValue(){return typeof e=="function"?e():qr(e)}})}var df=T("ZodPrefault",(t,e)=>{$h.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>nm(t,a,n,r),t.unwrap=()=>t._zod.def.innerType});function gf(t,e){return new df({type:"prefault",innerType:t,get defaultValue(){return typeof e=="function"?e():qr(e)}})}var Bi=T("ZodNonOptional",(t,e)=>{Dh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>tm(t,a,n,r),t.unwrap=()=>t._zod.def.innerType});function pf(t,e){return new Bi({type:"nonoptional",innerType:t,...V(e)})}var hf=T("ZodCatch",(t,e)=>{Hh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>rm(t,a,n,r),t.unwrap=()=>t._zod.def.innerType,t.removeCatch=t.unwrap});function uf(t,e){return new hf({type:"catch",innerType:t,catchValue:typeof e=="function"?e:()=>e})}var mf=T("ZodPipe",(t,e)=>{Uh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>im(t,a,n,r),t.in=e.in,t.out=e.out});function Ri(t,e){return new mf({type:"pipe",in:t,out:e})}var ff=T("ZodReadonly",(t,e)=>{jh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>om(t,a,n,r),t.unwrap=()=>t._zod.def.innerType});function bf(t){return new ff({type:"readonly",innerType:t})}var vf=T("ZodCustom",(t,e)=>{qh.init(t,e),_e.init(t,e),t._zod.processJSONSchema=(a,n,r)=>Gu(t,a,n,r)});function yf(t,e={}){return Ru(vf,t,e)}function xf(t,e){return Ou(t,e)}var _f=ae({role:vt(["user","assistant"]),content:S(),timestamp:Ke().optional()}),wf=ae({sku:S(),name:S(),imageUrl:S().url().optional(),price:S().optional(),originalPrice:S().optional(),url:S().url(),ctaLabel:S().optional()}),Oi=ae({buttons:ce(ae({label:S(),action:ae({title:S(),type:S(),payload:De().optional()})}))}),kf=Oi,Sf=ae({}),Cf=ae({label:S().optional()}),Fi=ae({sku:S(),name:S(),price:S(),url:S().optional(),imageUrl:S().optional(),rating:Ke().optional(),reviewCount:Ke().optional()}),Ef=ae({recommended:Fi,products:ce(Fi),attributes:ce(ae({label:S(),values:ce(S())})),highlights:ce(S()),specialCases:ce(S()).optional(),recommendedText:S().optional(),winnerHits:bt(S(),ae({positive:ce(S()).optional(),negative:ce(S()).optional()})).optional(),productActions:bt(S(),ae({title:S(),type:S(),payload:De().optional()})).optional()}),Pf=ae({label:S(),sentiment:vt(["positive","negative","neutral"]).optional()}),Tf=ae({product:bt(S(),De()),role:S().optional(),reason:S().optional(),labels:ce(Pf).optional(),expertQualityScore:Ke().optional(),reviewHighlight:S().optional(),action:ae({title:S(),type:S(),payload:De().optional()}).optional()}),Af=ae({suggestions:ce(Tf)}),Lf=ae({title:S().optional(),text:S().optional(),reviewCount:S().optional(),action:ae({title:S(),type:S(),payload:De().optional()})}),If=ae({entries:ce(ae({name:S(),image:S().optional(),description:S().optional(),action:ae({title:S(),type:S(),payload:De().optional()})}))}),Nf=ae({entries:ce(ae({shortName:S(),detailedMessage:S().optional(),whyDifferent:S().optional(),image:S().optional(),action:ae({title:S(),type:S(),payload:De().optional()})}))}),$i=ae({title:S(),type:S(),payload:De().optional()}),Vt=ae({name:S().optional(),value:S().optional(),option_value:S().optional(),attribute_value:S().optional(),type:S().optional(),attribute:S().optional(),option_name:S().optional(),attribute_name:S().optional(),variant_name:S().optional(),sku:S().optional(),price:Nt([Ke(),S()]).optional(),price_discounted:Nt([Ke(),S()]).optional(),image:S().optional(),imageUrl:S().optional(),image_url:S().optional(),color:S().optional(),colour:S().optional(),color_hex:S().optional(),hex:S().optional(),swatch:S().optional(),swatchColor:S().optional(),in_stock:gt().optional(),inStock:gt().optional()}),zf=ae({product:ae({sku:S().optional(),name:S().optional(),images:ce(S()).optional(),imageUrl:S().optional(),rating:Ke().optional(),reviewCount:Ke().optional(),price:S().optional(),originalPrice:S().optional(),discountReason:S().optional(),discount_reason:S().optional(),campaignReason:S().optional(),campaign_reason:S().optional(),originalPriceStyle:vt(["strikethrough","inline"]).optional(),price_original_style:vt(["strikethrough","inline"]).optional(),price_discount_rate:Ke().optional(),price_async:gt().optional(),inStock:gt().optional(),promotions:ce(S()).optional(),variants:ce(Vt).optional(),variantOptions:ce(Vt).optional(),variant_options:ce(Vt).optional(),productVariants:ce(Vt).optional(),product_variants:ce(Vt).optional(),url:S().optional(),cartCode:S().optional(),description:S().optional(),description_html:S().optional(),descriptionHtml:S().optional(),facet_hits:bt(S(),De()).optional(),facetHits:bt(S(),De()).optional(),features:ce(ae({name:S().optional(),key:S().optional(),label:S().optional(),value:Nt([S(),Ke(),gt()]).optional()})).optional(),specifications:Nt([bt(S(),S()),ce(ae({key:S(),value:S()}))]).optional()}).optional(),action:$i.optional()}),Mf=ae({layout:vt(["grid","grouped"]).optional(),productSections:ce(ae({title:S().optional(),children:ce(S())})).optional(),panelTitle:S().optional(),endOfList:gt().optional(),rankingState:vt(["pending","final"]).optional(),sequenceId:S().optional()}),Bf=ae({review_class:S().optional(),review_text:S().optional(),review_rating:Nt([S(),Ke()]).optional(),review_tag:S().optional()}),Rf=ae({reviews:ce(Bf).optional()}),Of=ae({groups:ce(ae({groupName:S(),image:S().optional(),description:S().optional(),highlight:S().optional(),labels:ce(S()).optional(),products:ce(bt(S(),De())).optional()})).optional(),filterTags:ce(ae({title:S(),action:$i.optional()})).optional()}),Ff=ae({eyebrow:S().optional(),title:S().optional(),showTitle:gt().optional(),ctaLabel:S().optional(),panelMessageId:S(),highlightMessageId:S().optional(),threadId:S().optional(),products:ce(ae({imageUrl:S().url().optional(),name:S().optional()})).optional()}),$f=ae({summary:S(),strengths:ce(S()).optional(),focus_points:ce(S()).optional(),celeb_style:S().optional(),celeb_style_reason:S().optional(),next_question:S().optional(),style_images:ce(S()).optional()}),Df=ae({processing:gt().optional(),title:S().optional(),description:S().optional(),upload_label:S().optional(),skip_label:S().optional()}),Hf={components:{MessageBubble:{schema:_f,description:"A single chat message bubble for user or assistant turns."},ProductCard:{schema:wf,description:"A product card rendered inline in the chat stream."},ActionButtons:{schema:Oi,description:"A horizontal row of quick-reply action buttons."},InlineQuestionButtons:{schema:kf,description:"Inline quick-question chips rendered inside the message flow."},TypingIndicator:{schema:Sf,description:"An animated indicator shown while the assistant is typing."},Divider:{schema:Cf,description:"A horizontal rule with an optional label."},ComparisonTable:{schema:Ef,description:"A product comparison table with recommended pick, attribute rows, and highlights."},AITopPicks:{schema:Af,description:"Rich AI-curated product suggestion cards with roles, sentiment labels, scores, and review quotes."},GroundingReviewCard:{schema:Lf,description:"A card showing review grounding data with review count and CTA."},AIGroupingCards:{schema:If,description:"Category grouping cards with images and labels for product discovery."},AISuggestedSearchCards:{schema:Nf,description:"Suggested search cards with images, descriptions, and differentiation."},ProductDetailsPanel:{schema:zf,description:"Full product detail view with images, specs, variants, and purchase actions."},ProductGrid:{schema:Mf,description:'A scrollable grid of ProductCard children with optional "more" pagination.'},ReviewHighlights:{schema:Rf,description:"A list of highlighted customer reviews with sentiment and ratings."},CategoriesContainer:{schema:Of,description:"Tabbed product groups with optional filter tag buttons."},PanelRestoreCard:{schema:Ff,description:"A frontend-owned transcript card that reopens a related panel snapshot."},PhotoAnalysisCard:{schema:$f,description:"Structured photo analysis card with strengths, focus points, celeb vibe, and follow-up question."},BeautyPhotoStep:{schema:Df,description:"Transient selfie upload prompt for beauty consulting init flow."}}};Me.CHAT_SCROLL_ELEMENT_ID=Wt,Me.ChatPresentationState=Ir,Me.GengageChat=Or,Me.chatCatalog=Hf,Me.createChatWidget=Dg,Me.createDefaultChatUISpecRegistry=Xn,Me.createFloatingLauncher=fr,Me.createInlineLauncher=vr,Me.defaultChatUnknownUISpecRenderer=za,Me.getChatScrollElement=pc,Me.invalidateChatScrollCache=Nn,Me.isSimilarsAppendGrid=oa,Me.renderUISpec=Qn})(this.Gengage=this.Gengage||{});
|