@eshal-bot/chat-widget 0.1.51 → 0.1.52

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.
@@ -7869,7 +7869,7 @@
7869
7869
  m$1.hydrateRoot;
7870
7870
  }
7871
7871
 
7872
- var css_248z$1 = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.chat-widget-root{--cw-primary:#2563eb;--cw-primary-hover:#1d4ed8;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.\\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\\!container{max-width:1536px!important}.container{max-width:1536px}}#chat-widget-root .chat-widget-root *{box-sizing:border-box;margin:0;padding:0}#chat-widget-root .chat-messages::-webkit-scrollbar{width:6px}#chat-widget-root .chat-messages::-webkit-scrollbar-track{background:transparent}#chat-widget-root .chat-messages::-webkit-scrollbar-thumb{background:rgba(156,163,175,.5);border-radius:10px}#chat-widget-root .chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(156,163,175,.7)}#chat-widget-root .dark .chat-messages::-webkit-scrollbar-thumb{background:rgba(75,85,99,.5)}#chat-widget-root .dark .chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(75,85,99,.7)}#chat-widget-root .pointer-events-none{pointer-events:none}#chat-widget-root .visible{visibility:visible}#chat-widget-root .static{position:static}#chat-widget-root .fixed{position:fixed}#chat-widget-root .absolute{position:absolute}#chat-widget-root .relative{position:relative}#chat-widget-root .sticky{position:sticky}#chat-widget-root .inset-0{inset:0}#chat-widget-root .-top-8{top:-2rem}#chat-widget-root .bottom-5{bottom:1.25rem}#chat-widget-root .bottom-full{bottom:100%}#chat-widget-root .left-0{left:0}#chat-widget-root .left-1\\/2{left:50%}#chat-widget-root .left-5{left:1.25rem}#chat-widget-root .right-0{right:0}#chat-widget-root .right-5{right:1.25rem}#chat-widget-root .top-1\\/2{top:50%}#chat-widget-root .top-5{top:1.25rem}#chat-widget-root .top-full{top:100%}#chat-widget-root .isolate{isolation:isolate}#chat-widget-root .z-10{z-index:10}#chat-widget-root .z-50{z-index:50}#chat-widget-root .z-\\[60\\]{z-index:60}#chat-widget-root .z-\\[999999\\]{z-index:999999}#chat-widget-root .z-\\[9999\\]{z-index:9999}#chat-widget-root .m-0{margin:0}#chat-widget-root .mx-2{margin-left:.5rem;margin-right:.5rem}#chat-widget-root .my-3{margin-bottom:.75rem;margin-top:.75rem}#chat-widget-root .my-4{margin-bottom:1rem;margin-top:1rem}#chat-widget-root .-mb-px{margin-bottom:-1px}#chat-widget-root .mb-1{margin-bottom:.25rem}#chat-widget-root .mb-2{margin-bottom:.5rem}#chat-widget-root .mb-3{margin-bottom:.75rem}#chat-widget-root .mb-4{margin-bottom:1rem}#chat-widget-root .mb-5{margin-bottom:1.25rem}#chat-widget-root .ml-0\\.5{margin-left:.125rem}#chat-widget-root .ml-1{margin-left:.25rem}#chat-widget-root .mt-1{margin-top:.25rem}#chat-widget-root .mt-1\\.5{margin-top:.375rem}#chat-widget-root .mt-2{margin-top:.5rem}#chat-widget-root .mt-3{margin-top:.75rem}#chat-widget-root .mt-4{margin-top:1rem}#chat-widget-root .block{display:block}#chat-widget-root .inline-block{display:inline-block}#chat-widget-root .inline{display:inline}#chat-widget-root .flex{display:flex}#chat-widget-root .inline-flex{display:inline-flex}#chat-widget-root .table{display:table}#chat-widget-root .hidden{display:none}#chat-widget-root .h-1\\.5{height:.375rem}#chat-widget-root .h-10{height:2.5rem}#chat-widget-root .h-12{height:3rem}#chat-widget-root .h-14{height:3.5rem}#chat-widget-root .h-16{height:4rem}#chat-widget-root .h-2{height:.5rem}#chat-widget-root .h-3{height:.75rem}#chat-widget-root .h-3\\.5{height:.875rem}#chat-widget-root .h-4{height:1rem}#chat-widget-root .h-5{height:1.25rem}#chat-widget-root .h-6{height:1.5rem}#chat-widget-root .h-7{height:1.75rem}#chat-widget-root .h-8{height:2rem}#chat-widget-root .h-\\[48px\\]{height:48px}#chat-widget-root .h-\\[650px\\]{height:650px}#chat-widget-root .h-auto{height:auto}#chat-widget-root .h-full{height:100%}#chat-widget-root .h-px{height:1px}#chat-widget-root .max-h-\\[85vh\\]{max-height:85vh}#chat-widget-root .min-h-0{min-height:0}#chat-widget-root .min-h-\\[48px\\]{min-height:48px}#chat-widget-root .w-1\\.5{width:.375rem}#chat-widget-root .w-10{width:2.5rem}#chat-widget-root .w-12{width:3rem}#chat-widget-root .w-14{width:3.5rem}#chat-widget-root .w-16{width:4rem}#chat-widget-root .w-2{width:.5rem}#chat-widget-root .w-3{width:.75rem}#chat-widget-root .w-3\\.5{width:.875rem}#chat-widget-root .w-4{width:1rem}#chat-widget-root .w-44{width:11rem}#chat-widget-root .w-5{width:1.25rem}#chat-widget-root .w-6{width:1.5rem}#chat-widget-root .w-7{width:1.75rem}#chat-widget-root .w-8{width:2rem}#chat-widget-root .w-80{width:20rem}#chat-widget-root .w-96{width:24rem}#chat-widget-root .w-\\[380px\\]{width:380px}#chat-widget-root .w-\\[48px\\]{width:48px}#chat-widget-root .w-full{width:100%}#chat-widget-root .min-w-0{min-width:0}#chat-widget-root .min-w-\\[60px\\]{min-width:60px}#chat-widget-root .min-w-full{min-width:100%}#chat-widget-root .max-w-\\[75\\%\\]{max-width:75%}#chat-widget-root .max-w-\\[85\\%\\]{max-width:85%}#chat-widget-root .max-w-\\[92vw\\]{max-width:92vw}#chat-widget-root .max-w-full{max-width:100%}#chat-widget-root .max-w-none{max-width:none}#chat-widget-root .max-w-sm{max-width:24rem}#chat-widget-root .max-w-xs{max-width:20rem}#chat-widget-root .flex-1{flex:1 1 0%}#chat-widget-root .flex-shrink-0{flex-shrink:0}#chat-widget-root .border-collapse{border-collapse:collapse}#chat-widget-root .-translate-x-1\\/2{--tw-translate-x:-50%}#chat-widget-root .-translate-x-1\\/2,#chat-widget-root .-translate-y-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .-translate-y-1\\/2{--tw-translate-y:-50%}#chat-widget-root .rotate-0{--tw-rotate:0deg}#chat-widget-root .rotate-0,#chat-widget-root .scale-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-0{--tw-scale-x:0;--tw-scale-y:0}#chat-widget-root .scale-100{--tw-scale-x:1;--tw-scale-y:1}#chat-widget-root .scale-100,#chat-widget-root .scale-110{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1}#chat-widget-root .scale-125{--tw-scale-x:1.25;--tw-scale-y:1.25}#chat-widget-root .scale-125,#chat-widget-root .scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-95{--tw-scale-x:.95;--tw-scale-y:.95}#chat-widget-root .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}#chat-widget-root .animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}#chat-widget-root .animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}#chat-widget-root .animate-spin{animation:spin 1s linear infinite}#chat-widget-root .cursor-not-allowed{cursor:not-allowed}#chat-widget-root .cursor-pointer{cursor:pointer}#chat-widget-root .resize-none{resize:none}#chat-widget-root .resize{resize:both}#chat-widget-root .list-decimal{list-style-type:decimal}#chat-widget-root .list-disc{list-style-type:disc}#chat-widget-root .list-none{list-style-type:none}#chat-widget-root .flex-row{flex-direction:row}#chat-widget-root .flex-row-reverse{flex-direction:row-reverse}#chat-widget-root .flex-col{flex-direction:column}#chat-widget-root .flex-wrap{flex-wrap:wrap}#chat-widget-root .items-start{align-items:flex-start}#chat-widget-root .items-end{align-items:flex-end}#chat-widget-root .items-center{align-items:center}#chat-widget-root .justify-center{justify-content:center}#chat-widget-root .justify-between{justify-content:space-between}#chat-widget-root .gap-0{gap:0}#chat-widget-root .gap-0\\.5{gap:.125rem}#chat-widget-root .gap-1{gap:.25rem}#chat-widget-root .gap-1\\.5{gap:.375rem}#chat-widget-root .gap-2{gap:.5rem}#chat-widget-root .gap-2\\.5{gap:.625rem}#chat-widget-root .gap-3{gap:.75rem}#chat-widget-root .gap-4{gap:1rem}#chat-widget-root .gap-6{gap:1.5rem}#chat-widget-root :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root .overflow-hidden{overflow:hidden}#chat-widget-root .overflow-visible{overflow:visible}#chat-widget-root .overflow-x-auto{overflow-x:auto}#chat-widget-root .overflow-y-auto{overflow-y:auto}#chat-widget-root .whitespace-normal{white-space:normal}#chat-widget-root .whitespace-nowrap{white-space:nowrap}#chat-widget-root .whitespace-pre-wrap{white-space:pre-wrap}#chat-widget-root .break-words{overflow-wrap:break-word}#chat-widget-root .rounded{border-radius:.25rem}#chat-widget-root .rounded-2xl{border-radius:1rem}#chat-widget-root .rounded-3xl{border-radius:1.5rem}#chat-widget-root .rounded-full{border-radius:9999px}#chat-widget-root .rounded-lg{border-radius:.5rem}#chat-widget-root .rounded-md{border-radius:.375rem}#chat-widget-root .rounded-xl{border-radius:.75rem}#chat-widget-root .rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}#chat-widget-root .rounded-tl-sm{border-top-left-radius:.125rem}#chat-widget-root .rounded-tr-sm{border-top-right-radius:.125rem}#chat-widget-root .border{border-width:1px}#chat-widget-root .border-0{border-width:0}#chat-widget-root .border-b{border-bottom-width:1px}#chat-widget-root .border-l-4{border-left-width:4px}#chat-widget-root .border-t{border-top-width:1px}#chat-widget-root .border-t-2{border-top-width:2px}#chat-widget-root .border-dotted{border-style:dotted}#chat-widget-root .border-none{border-style:none}#chat-widget-root .\\!border-red-500{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity,1))!important}#chat-widget-root .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}#chat-widget-root .border-blue-700\\/50{border-color:rgba(29,78,216,.5)}#chat-widget-root .border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-200\\/60{border-color:rgba(229,231,235,.6)}#chat-widget-root .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-700\\/50{border-color:rgba(55,65,81,.5)}#chat-widget-root .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}#chat-widget-root .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}#chat-widget-root .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}#chat-widget-root .bg-current{background-color:currentColor}#chat-widget-root .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-700\\/50{background-color:rgba(55,65,81,.5)}#chat-widget-root .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}#chat-widget-root .bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity,1))}#chat-widget-root .bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity,1))}#chat-widget-root .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}#chat-widget-root .bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}#chat-widget-root .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}#chat-widget-root .bg-slate-50\\/50{background-color:rgba(248,250,252,.5)}#chat-widget-root .bg-slate-800\\/50{background-color:rgba(30,41,59,.5)}#chat-widget-root .bg-transparent{background-color:transparent}#chat-widget-root .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}#chat-widget-root .bg-white\\/10{background-color:hsla(0,0%,100%,.1)}#chat-widget-root .bg-white\\/20{background-color:hsla(0,0%,100%,.2)}#chat-widget-root .bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}#chat-widget-root .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}#chat-widget-root .from-gray-50\\/50{--tw-gradient-from:rgba(249,250,251,.5) var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,250,251,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-white\\/0{--tw-gradient-from:hsla(0,0%,100%,0) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-white\\/10{--tw-gradient-from:hsla(0,0%,100%,.1) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-yellow-200{--tw-gradient-from:#fef08a var(--tw-gradient-from-position);--tw-gradient-to:hsla(53,98%,77%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .via-white\\/5{--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsla(0,0%,100%,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}#chat-widget-root .to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}#chat-widget-root .to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}#chat-widget-root .to-white\\/10{--tw-gradient-to:hsla(0,0%,100%,.1) var(--tw-gradient-to-position)}#chat-widget-root .to-yellow-400{--tw-gradient-to:#facc15 var(--tw-gradient-to-position)}#chat-widget-root .object-cover{-o-object-fit:cover;object-fit:cover}#chat-widget-root .p-0{padding:0}#chat-widget-root .p-0\\.5{padding:.125rem}#chat-widget-root .p-3{padding:.75rem}#chat-widget-root .p-5{padding:1.25rem}#chat-widget-root .p-6{padding:1.5rem}#chat-widget-root .p-8{padding:2rem}#chat-widget-root .px-1{padding-left:.25rem;padding-right:.25rem}#chat-widget-root .px-2{padding-left:.5rem;padding-right:.5rem}#chat-widget-root .px-3{padding-left:.75rem;padding-right:.75rem}#chat-widget-root .px-4{padding-left:1rem;padding-right:1rem}#chat-widget-root .px-5{padding-left:1.25rem;padding-right:1.25rem}#chat-widget-root .py-1{padding-bottom:.25rem;padding-top:.25rem}#chat-widget-root .py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}#chat-widget-root .py-12{padding-bottom:3rem;padding-top:3rem}#chat-widget-root .py-2{padding-bottom:.5rem;padding-top:.5rem}#chat-widget-root .py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}#chat-widget-root .py-3{padding-bottom:.75rem;padding-top:.75rem}#chat-widget-root .py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}#chat-widget-root .py-4{padding-bottom:1rem;padding-top:1rem}#chat-widget-root .pb-1{padding-bottom:.25rem}#chat-widget-root .pb-2{padding-bottom:.5rem}#chat-widget-root .pl-4{padding-left:1rem}#chat-widget-root .pl-\\[50px\\]{padding-left:50px}#chat-widget-root .pt-1{padding-top:.25rem}#chat-widget-root .text-left{text-align:left}#chat-widget-root .text-center{text-align:center}#chat-widget-root .text-right{text-align:right}#chat-widget-root .align-middle{vertical-align:middle}#chat-widget-root .align-text-bottom{vertical-align:text-bottom}#chat-widget-root .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}#chat-widget-root .text-2xl{font-size:1.5rem;line-height:2rem}#chat-widget-root .text-\\[10px\\]{font-size:10px}#chat-widget-root .text-\\[11px\\]{font-size:11px}#chat-widget-root .text-\\[15px\\]{font-size:15px}#chat-widget-root .text-base{font-size:1rem;line-height:1.5rem}#chat-widget-root .text-lg{font-size:1.125rem;line-height:1.75rem}#chat-widget-root .text-sm{font-size:.875rem;line-height:1.25rem}#chat-widget-root .text-xl{font-size:1.25rem;line-height:1.75rem}#chat-widget-root .text-xs{font-size:.75rem;line-height:1rem}#chat-widget-root .font-bold{font-weight:700}#chat-widget-root .font-medium{font-weight:500}#chat-widget-root .font-semibold{font-weight:600}#chat-widget-root .uppercase{text-transform:uppercase}#chat-widget-root .lowercase{text-transform:lowercase}#chat-widget-root .italic{font-style:italic}#chat-widget-root .tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}#chat-widget-root .leading-5{line-height:1.25rem}#chat-widget-root .leading-none{line-height:1}#chat-widget-root .leading-normal{line-height:1.5}#chat-widget-root .leading-relaxed{line-height:1.625}#chat-widget-root .leading-snug{line-height:1.375}#chat-widget-root .leading-tight{line-height:1.25}#chat-widget-root .tracking-wide{letter-spacing:.025em}#chat-widget-root .text-\\[\\#4A5568\\]{--tw-text-opacity:1;color:rgb(74 85 104/var(--tw-text-opacity,1))}#chat-widget-root .text-current{color:currentColor}#chat-widget-root .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-500\\/80{color:hsla(220,9%,46%,.8)}#chat-widget-root .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}#chat-widget-root .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}#chat-widget-root .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}#chat-widget-root .text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}#chat-widget-root .text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}#chat-widget-root .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}#chat-widget-root .text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}#chat-widget-root .no-underline{text-decoration-line:none}#chat-widget-root .placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}#chat-widget-root .placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}#chat-widget-root .opacity-0{opacity:0}#chat-widget-root .opacity-50{opacity:.5}#chat-widget-root .opacity-60{opacity:.6}#chat-widget-root .opacity-80{opacity:.8}#chat-widget-root .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}#chat-widget-root .shadow,#chat-widget-root .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}#chat-widget-root .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}#chat-widget-root .shadow-lg,#chat-widget-root .shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}#chat-widget-root .shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}#chat-widget-root .shadow-none,#chat-widget-root .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}#chat-widget-root .shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-black\\/20{--tw-shadow-color:rgba(0,0,0,.2);--tw-shadow:var(--tw-shadow-colored)}#chat-widget-root .shadow-gray-200\\/80{--tw-shadow-color:rgba(229,231,235,.8);--tw-shadow:var(--tw-shadow-colored)}#chat-widget-root .outline-none{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .ring-blue-100{--tw-ring-opacity:1;--tw-ring-color:rgb(219 234 254/var(--tw-ring-opacity,1))}#chat-widget-root .ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity,1))}#chat-widget-root .blur{--tw-blur:blur(8px)}#chat-widget-root .blur,#chat-widget-root .drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}#chat-widget-root .drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}#chat-widget-root .drop-shadow-md,#chat-widget-root .drop-shadow-sm{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .drop-shadow-sm{--tw-drop-shadow:drop-shadow(0 1px 1px rgba(0,0,0,.05))}#chat-widget-root .grayscale-\\[0\\.3\\]{--tw-grayscale:grayscale(0.3)}#chat-widget-root .filter,#chat-widget-root .grayscale-\\[0\\.3\\]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .backdrop-blur-sm{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}#chat-widget-root .transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .duration-150{transition-duration:.15s}#chat-widget-root .duration-200{transition-duration:.2s}#chat-widget-root .duration-300{transition-duration:.3s}#chat-widget-root .duration-500{transition-duration:.5s}#chat-widget-root :is(#chat-widget-root .animate-in){animation:slideIn .3s ease-out}#chat-widget-root :is(#chat-widget-root .transition-all){transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .\\[font-family\\:inherit\\]{font-family:inherit}#chat-widget-root .placeholder\\:text-\\[\\#8C8C8C\\]::-moz-placeholder{--tw-text-opacity:1;color:rgb(140 140 140/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-\\[\\#8C8C8C\\]::placeholder{--tw-text-opacity:1;color:rgb(140 140 140/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-\\[\\#A2A9B2\\]::-moz-placeholder{--tw-text-opacity:1;color:rgb(162 169 178/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-\\[\\#A2A9B2\\]::placeholder{--tw-text-opacity:1;color:rgb(162 169 178/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}#chat-widget-root .hover\\:scale-105:hover,#chat-widget-root .hover\\:scale-110:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .hover\\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}#chat-widget-root .hover\\:scale-\\[1\\.02\\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .hover\\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}#chat-widget-root .hover\\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}#chat-widget-root .hover\\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-blue-900\\/50:hover{background-color:rgba(30,58,138,.5)}#chat-widget-root .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-transparent:hover{background-color:transparent}#chat-widget-root .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:underline:hover{text-decoration-line:underline}#chat-widget-root .hover\\:opacity-80:hover{opacity:.8}#chat-widget-root .hover\\:opacity-90:hover{opacity:.9}#chat-widget-root .hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}#chat-widget-root .hover\\:shadow-md:hover,#chat-widget-root .hover\\:shadow-xl:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}#chat-widget-root .hover\\:grayscale-0:hover{--tw-grayscale:grayscale(0);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .focus\\:\\!border-red-500:focus{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity,1))!important}#chat-widget-root .focus\\:border-\\[\\#5A6069\\]:focus{--tw-border-opacity:1;border-color:rgb(90 96 105/var(--tw-border-opacity,1))}#chat-widget-root .focus\\:border-\\[\\#B0B0B0\\]:focus{--tw-border-opacity:1;border-color:rgb(176 176 176/var(--tw-border-opacity,1))}#chat-widget-root .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .focus-visible\\:ring-white\\/40:focus-visible{--tw-ring-color:hsla(0,0%,100%,.4)}#chat-widget-root .active\\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95}#chat-widget-root .active\\:scale-95:active,#chat-widget-root .active\\:scale-\\[0\\.98\\]:active{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .active\\:scale-\\[0\\.98\\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98}#chat-widget-root .active\\:outline-none:active{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .active\\:ring-0:active{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}#chat-widget-root .disabled\\:opacity-40:disabled{opacity:.4}#chat-widget-root .disabled\\:opacity-50:disabled{opacity:.5}#chat-widget-root .disabled\\:shadow-none:disabled{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root :is(.group:hover .group-hover\\:scale-100){--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root :is(.group:hover .group-hover\\:opacity-100){opacity:1}#chat-widget-root .dark\\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .dark\\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}#chat-widget-root .rtl\\:rounded-tl-2xl:where([dir=rtl],[dir=rtl] *){border-top-left-radius:1rem}#chat-widget-root .rtl\\:rounded-tr-sm:where([dir=rtl],[dir=rtl] *){border-top-right-radius:.125rem}#chat-widget-root .\\[\\&\\:first-child\\]\\:\\!mt-0:first-child{margin-top:0!important}#chat-widget-root :is(.\\[\\&\\>\\*\\:first-child\\]\\:\\!mt-0>:first-child){margin-top:0!important}#chat-widget-root :is(.\\[\\&\\>\\*\\:last-child\\]\\:\\!mb-0>:last-child){margin-bottom:0!important}";
7872
+ var css_248z$1 = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.chat-widget-root{--cw-primary:#2563eb;--cw-primary-hover:#1d4ed8;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.\\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\\!container{max-width:1536px!important}.container{max-width:1536px}}#chat-widget-root .chat-widget-root *{box-sizing:border-box;margin:0;padding:0}#chat-widget-root .chat-messages::-webkit-scrollbar{width:6px}#chat-widget-root .chat-messages::-webkit-scrollbar-track{background:transparent}#chat-widget-root .chat-messages::-webkit-scrollbar-thumb{background:rgba(156,163,175,.5);border-radius:10px}#chat-widget-root .chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(156,163,175,.7)}#chat-widget-root .dark .chat-messages::-webkit-scrollbar-thumb{background:rgba(75,85,99,.5)}#chat-widget-root .dark .chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(75,85,99,.7)}#chat-widget-root .pointer-events-none{pointer-events:none}#chat-widget-root .visible{visibility:visible}#chat-widget-root .collapse{visibility:collapse}#chat-widget-root .static{position:static}#chat-widget-root .fixed{position:fixed}#chat-widget-root .absolute{position:absolute}#chat-widget-root .relative{position:relative}#chat-widget-root .sticky{position:sticky}#chat-widget-root .inset-0{inset:0}#chat-widget-root .-top-8{top:-2rem}#chat-widget-root .bottom-5{bottom:1.25rem}#chat-widget-root .bottom-full{bottom:100%}#chat-widget-root .left-0{left:0}#chat-widget-root .left-1\\/2{left:50%}#chat-widget-root .left-5{left:1.25rem}#chat-widget-root .right-0{right:0}#chat-widget-root .right-5{right:1.25rem}#chat-widget-root .top-1\\/2{top:50%}#chat-widget-root .top-5{top:1.25rem}#chat-widget-root .top-full{top:100%}#chat-widget-root .isolate{isolation:isolate}#chat-widget-root .z-10{z-index:10}#chat-widget-root .z-50{z-index:50}#chat-widget-root .z-\\[60\\]{z-index:60}#chat-widget-root .z-\\[999999\\]{z-index:999999}#chat-widget-root .z-\\[9999\\]{z-index:9999}#chat-widget-root .m-0{margin:0}#chat-widget-root .mx-2{margin-left:.5rem;margin-right:.5rem}#chat-widget-root .my-3{margin-bottom:.75rem;margin-top:.75rem}#chat-widget-root .my-4{margin-bottom:1rem;margin-top:1rem}#chat-widget-root .-mb-px{margin-bottom:-1px}#chat-widget-root .mb-1{margin-bottom:.25rem}#chat-widget-root .mb-2{margin-bottom:.5rem}#chat-widget-root .mb-3{margin-bottom:.75rem}#chat-widget-root .mb-4{margin-bottom:1rem}#chat-widget-root .mb-5{margin-bottom:1.25rem}#chat-widget-root .ml-0\\.5{margin-left:.125rem}#chat-widget-root .ml-1{margin-left:.25rem}#chat-widget-root .mt-1{margin-top:.25rem}#chat-widget-root .mt-1\\.5{margin-top:.375rem}#chat-widget-root .mt-2{margin-top:.5rem}#chat-widget-root .mt-3{margin-top:.75rem}#chat-widget-root .mt-4{margin-top:1rem}#chat-widget-root .block{display:block}#chat-widget-root .inline-block{display:inline-block}#chat-widget-root .inline{display:inline}#chat-widget-root .flex{display:flex}#chat-widget-root .inline-flex{display:inline-flex}#chat-widget-root .table{display:table}#chat-widget-root .hidden{display:none}#chat-widget-root .h-1\\.5{height:.375rem}#chat-widget-root .h-10{height:2.5rem}#chat-widget-root .h-12{height:3rem}#chat-widget-root .h-14{height:3.5rem}#chat-widget-root .h-16{height:4rem}#chat-widget-root .h-2{height:.5rem}#chat-widget-root .h-3{height:.75rem}#chat-widget-root .h-3\\.5{height:.875rem}#chat-widget-root .h-4{height:1rem}#chat-widget-root .h-5{height:1.25rem}#chat-widget-root .h-6{height:1.5rem}#chat-widget-root .h-7{height:1.75rem}#chat-widget-root .h-8{height:2rem}#chat-widget-root .h-\\[48px\\]{height:48px}#chat-widget-root .h-\\[650px\\]{height:650px}#chat-widget-root .h-auto{height:auto}#chat-widget-root .h-full{height:100%}#chat-widget-root .h-px{height:1px}#chat-widget-root .max-h-\\[85vh\\]{max-height:85vh}#chat-widget-root .min-h-0{min-height:0}#chat-widget-root .min-h-\\[48px\\]{min-height:48px}#chat-widget-root .w-1\\.5{width:.375rem}#chat-widget-root .w-10{width:2.5rem}#chat-widget-root .w-12{width:3rem}#chat-widget-root .w-14{width:3.5rem}#chat-widget-root .w-16{width:4rem}#chat-widget-root .w-2{width:.5rem}#chat-widget-root .w-3{width:.75rem}#chat-widget-root .w-3\\.5{width:.875rem}#chat-widget-root .w-4{width:1rem}#chat-widget-root .w-44{width:11rem}#chat-widget-root .w-5{width:1.25rem}#chat-widget-root .w-6{width:1.5rem}#chat-widget-root .w-7{width:1.75rem}#chat-widget-root .w-8{width:2rem}#chat-widget-root .w-80{width:20rem}#chat-widget-root .w-96{width:24rem}#chat-widget-root .w-\\[380px\\]{width:380px}#chat-widget-root .w-\\[48px\\]{width:48px}#chat-widget-root .w-full{width:100%}#chat-widget-root .min-w-0{min-width:0}#chat-widget-root .min-w-\\[60px\\]{min-width:60px}#chat-widget-root .min-w-full{min-width:100%}#chat-widget-root .max-w-\\[75\\%\\]{max-width:75%}#chat-widget-root .max-w-\\[85\\%\\]{max-width:85%}#chat-widget-root .max-w-\\[92vw\\]{max-width:92vw}#chat-widget-root .max-w-full{max-width:100%}#chat-widget-root .max-w-none{max-width:none}#chat-widget-root .max-w-sm{max-width:24rem}#chat-widget-root .max-w-xs{max-width:20rem}#chat-widget-root .flex-1{flex:1 1 0%}#chat-widget-root .flex-shrink-0{flex-shrink:0}#chat-widget-root .border-collapse{border-collapse:collapse}#chat-widget-root .-translate-x-1\\/2{--tw-translate-x:-50%}#chat-widget-root .-translate-x-1\\/2,#chat-widget-root .-translate-y-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .-translate-y-1\\/2{--tw-translate-y:-50%}#chat-widget-root .rotate-0{--tw-rotate:0deg}#chat-widget-root .rotate-0,#chat-widget-root .scale-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-0{--tw-scale-x:0;--tw-scale-y:0}#chat-widget-root .scale-100{--tw-scale-x:1;--tw-scale-y:1}#chat-widget-root .scale-100,#chat-widget-root .scale-110{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1}#chat-widget-root .scale-125{--tw-scale-x:1.25;--tw-scale-y:1.25}#chat-widget-root .scale-125,#chat-widget-root .scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-95{--tw-scale-x:.95;--tw-scale-y:.95}#chat-widget-root .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}#chat-widget-root .animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}#chat-widget-root .animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}#chat-widget-root .animate-spin{animation:spin 1s linear infinite}#chat-widget-root .cursor-not-allowed{cursor:not-allowed}#chat-widget-root .cursor-pointer{cursor:pointer}#chat-widget-root .resize-none{resize:none}#chat-widget-root .resize{resize:both}#chat-widget-root .list-decimal{list-style-type:decimal}#chat-widget-root .list-disc{list-style-type:disc}#chat-widget-root .list-none{list-style-type:none}#chat-widget-root .flex-row{flex-direction:row}#chat-widget-root .flex-row-reverse{flex-direction:row-reverse}#chat-widget-root .flex-col{flex-direction:column}#chat-widget-root .flex-wrap{flex-wrap:wrap}#chat-widget-root .items-start{align-items:flex-start}#chat-widget-root .items-end{align-items:flex-end}#chat-widget-root .items-center{align-items:center}#chat-widget-root .justify-center{justify-content:center}#chat-widget-root .justify-between{justify-content:space-between}#chat-widget-root .gap-0{gap:0}#chat-widget-root .gap-0\\.5{gap:.125rem}#chat-widget-root .gap-1{gap:.25rem}#chat-widget-root .gap-1\\.5{gap:.375rem}#chat-widget-root .gap-2{gap:.5rem}#chat-widget-root .gap-2\\.5{gap:.625rem}#chat-widget-root .gap-3{gap:.75rem}#chat-widget-root .gap-4{gap:1rem}#chat-widget-root .gap-6{gap:1.5rem}#chat-widget-root :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root .overflow-hidden{overflow:hidden}#chat-widget-root .overflow-visible{overflow:visible}#chat-widget-root .overflow-x-auto{overflow-x:auto}#chat-widget-root .overflow-y-auto{overflow-y:auto}#chat-widget-root .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#chat-widget-root .whitespace-normal{white-space:normal}#chat-widget-root .whitespace-nowrap{white-space:nowrap}#chat-widget-root .whitespace-pre-wrap{white-space:pre-wrap}#chat-widget-root .break-words{overflow-wrap:break-word}#chat-widget-root .rounded{border-radius:.25rem}#chat-widget-root .rounded-2xl{border-radius:1rem}#chat-widget-root .rounded-3xl{border-radius:1.5rem}#chat-widget-root .rounded-full{border-radius:9999px}#chat-widget-root .rounded-lg{border-radius:.5rem}#chat-widget-root .rounded-md{border-radius:.375rem}#chat-widget-root .rounded-xl{border-radius:.75rem}#chat-widget-root .rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}#chat-widget-root .rounded-tl-sm{border-top-left-radius:.125rem}#chat-widget-root .rounded-tr-sm{border-top-right-radius:.125rem}#chat-widget-root .border{border-width:1px}#chat-widget-root .border-0{border-width:0}#chat-widget-root .border-b{border-bottom-width:1px}#chat-widget-root .border-l-4{border-left-width:4px}#chat-widget-root .border-t{border-top-width:1px}#chat-widget-root .border-t-2{border-top-width:2px}#chat-widget-root .border-dotted{border-style:dotted}#chat-widget-root .border-none{border-style:none}#chat-widget-root .\\!border-red-500{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity,1))!important}#chat-widget-root .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}#chat-widget-root .border-blue-700\\/50{border-color:rgba(29,78,216,.5)}#chat-widget-root .border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-200\\/60{border-color:rgba(229,231,235,.6)}#chat-widget-root .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-700\\/50{border-color:rgba(55,65,81,.5)}#chat-widget-root .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}#chat-widget-root .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}#chat-widget-root .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}#chat-widget-root .bg-current{background-color:currentColor}#chat-widget-root .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-700\\/50{background-color:rgba(55,65,81,.5)}#chat-widget-root .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}#chat-widget-root .bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity,1))}#chat-widget-root .bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity,1))}#chat-widget-root .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}#chat-widget-root .bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}#chat-widget-root .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}#chat-widget-root .bg-slate-50\\/50{background-color:rgba(248,250,252,.5)}#chat-widget-root .bg-slate-800\\/50{background-color:rgba(30,41,59,.5)}#chat-widget-root .bg-transparent{background-color:transparent}#chat-widget-root .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}#chat-widget-root .bg-white\\/10{background-color:hsla(0,0%,100%,.1)}#chat-widget-root .bg-white\\/20{background-color:hsla(0,0%,100%,.2)}#chat-widget-root .bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}#chat-widget-root .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}#chat-widget-root .from-gray-50\\/50{--tw-gradient-from:rgba(249,250,251,.5) var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,250,251,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-white\\/0{--tw-gradient-from:hsla(0,0%,100%,0) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-white\\/10{--tw-gradient-from:hsla(0,0%,100%,.1) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-yellow-200{--tw-gradient-from:#fef08a var(--tw-gradient-from-position);--tw-gradient-to:hsla(53,98%,77%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .via-white\\/5{--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsla(0,0%,100%,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}#chat-widget-root .to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}#chat-widget-root .to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}#chat-widget-root .to-white\\/10{--tw-gradient-to:hsla(0,0%,100%,.1) var(--tw-gradient-to-position)}#chat-widget-root .to-yellow-400{--tw-gradient-to:#facc15 var(--tw-gradient-to-position)}#chat-widget-root .object-cover{-o-object-fit:cover;object-fit:cover}#chat-widget-root .p-0{padding:0}#chat-widget-root .p-0\\.5{padding:.125rem}#chat-widget-root .p-3{padding:.75rem}#chat-widget-root .p-5{padding:1.25rem}#chat-widget-root .p-6{padding:1.5rem}#chat-widget-root .p-8{padding:2rem}#chat-widget-root .px-1{padding-left:.25rem;padding-right:.25rem}#chat-widget-root .px-2{padding-left:.5rem;padding-right:.5rem}#chat-widget-root .px-3{padding-left:.75rem;padding-right:.75rem}#chat-widget-root .px-4{padding-left:1rem;padding-right:1rem}#chat-widget-root .px-5{padding-left:1.25rem;padding-right:1.25rem}#chat-widget-root .py-1{padding-bottom:.25rem;padding-top:.25rem}#chat-widget-root .py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}#chat-widget-root .py-12{padding-bottom:3rem;padding-top:3rem}#chat-widget-root .py-2{padding-bottom:.5rem;padding-top:.5rem}#chat-widget-root .py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}#chat-widget-root .py-3{padding-bottom:.75rem;padding-top:.75rem}#chat-widget-root .py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}#chat-widget-root .py-4{padding-bottom:1rem;padding-top:1rem}#chat-widget-root .pb-1{padding-bottom:.25rem}#chat-widget-root .pb-2{padding-bottom:.5rem}#chat-widget-root .pl-4{padding-left:1rem}#chat-widget-root .pl-\\[50px\\]{padding-left:50px}#chat-widget-root .pt-1{padding-top:.25rem}#chat-widget-root .text-left{text-align:left}#chat-widget-root .text-center{text-align:center}#chat-widget-root .text-right{text-align:right}#chat-widget-root .align-middle{vertical-align:middle}#chat-widget-root .align-text-bottom{vertical-align:text-bottom}#chat-widget-root .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}#chat-widget-root .text-2xl{font-size:1.5rem;line-height:2rem}#chat-widget-root .text-\\[10px\\]{font-size:10px}#chat-widget-root .text-\\[11px\\]{font-size:11px}#chat-widget-root .text-\\[15px\\]{font-size:15px}#chat-widget-root .text-base{font-size:1rem;line-height:1.5rem}#chat-widget-root .text-lg{font-size:1.125rem;line-height:1.75rem}#chat-widget-root .text-sm{font-size:.875rem;line-height:1.25rem}#chat-widget-root .text-xl{font-size:1.25rem;line-height:1.75rem}#chat-widget-root .text-xs{font-size:.75rem;line-height:1rem}#chat-widget-root .font-bold{font-weight:700}#chat-widget-root .font-medium{font-weight:500}#chat-widget-root .font-semibold{font-weight:600}#chat-widget-root .uppercase{text-transform:uppercase}#chat-widget-root .lowercase{text-transform:lowercase}#chat-widget-root .italic{font-style:italic}#chat-widget-root .tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}#chat-widget-root .leading-5{line-height:1.25rem}#chat-widget-root .leading-none{line-height:1}#chat-widget-root .leading-normal{line-height:1.5}#chat-widget-root .leading-relaxed{line-height:1.625}#chat-widget-root .leading-snug{line-height:1.375}#chat-widget-root .leading-tight{line-height:1.25}#chat-widget-root .tracking-wide{letter-spacing:.025em}#chat-widget-root .text-\\[\\#4A5568\\]{--tw-text-opacity:1;color:rgb(74 85 104/var(--tw-text-opacity,1))}#chat-widget-root .text-current{color:currentColor}#chat-widget-root .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-500\\/80{color:hsla(220,9%,46%,.8)}#chat-widget-root .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}#chat-widget-root .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}#chat-widget-root .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}#chat-widget-root .text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}#chat-widget-root .text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}#chat-widget-root .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}#chat-widget-root .text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}#chat-widget-root .no-underline{text-decoration-line:none}#chat-widget-root .placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}#chat-widget-root .placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}#chat-widget-root .opacity-0{opacity:0}#chat-widget-root .opacity-50{opacity:.5}#chat-widget-root .opacity-60{opacity:.6}#chat-widget-root .opacity-80{opacity:.8}#chat-widget-root .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}#chat-widget-root .shadow,#chat-widget-root .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}#chat-widget-root .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}#chat-widget-root .shadow-lg,#chat-widget-root .shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}#chat-widget-root .shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}#chat-widget-root .shadow-none,#chat-widget-root .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}#chat-widget-root .shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-black\\/20{--tw-shadow-color:rgba(0,0,0,.2);--tw-shadow:var(--tw-shadow-colored)}#chat-widget-root .shadow-gray-200\\/80{--tw-shadow-color:rgba(229,231,235,.8);--tw-shadow:var(--tw-shadow-colored)}#chat-widget-root .outline-none{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .ring-blue-100{--tw-ring-opacity:1;--tw-ring-color:rgb(219 234 254/var(--tw-ring-opacity,1))}#chat-widget-root .ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity,1))}#chat-widget-root .blur{--tw-blur:blur(8px)}#chat-widget-root .blur,#chat-widget-root .drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}#chat-widget-root .drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}#chat-widget-root .drop-shadow-md,#chat-widget-root .drop-shadow-sm{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .drop-shadow-sm{--tw-drop-shadow:drop-shadow(0 1px 1px rgba(0,0,0,.05))}#chat-widget-root .grayscale-\\[0\\.3\\]{--tw-grayscale:grayscale(0.3)}#chat-widget-root .filter,#chat-widget-root .grayscale-\\[0\\.3\\]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .backdrop-blur-sm{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}#chat-widget-root .transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .duration-150{transition-duration:.15s}#chat-widget-root .duration-200{transition-duration:.2s}#chat-widget-root .duration-300{transition-duration:.3s}#chat-widget-root .duration-500{transition-duration:.5s}#chat-widget-root :is(#chat-widget-root .animate-in){animation:slideIn .3s ease-out}#chat-widget-root :is(#chat-widget-root .transition-all){transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .\\[font-family\\:inherit\\]{font-family:inherit}#chat-widget-root .placeholder\\:text-\\[\\#8C8C8C\\]::-moz-placeholder{--tw-text-opacity:1;color:rgb(140 140 140/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-\\[\\#8C8C8C\\]::placeholder{--tw-text-opacity:1;color:rgb(140 140 140/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-\\[\\#A2A9B2\\]::-moz-placeholder{--tw-text-opacity:1;color:rgb(162 169 178/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-\\[\\#A2A9B2\\]::placeholder{--tw-text-opacity:1;color:rgb(162 169 178/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}#chat-widget-root .hover\\:scale-105:hover,#chat-widget-root .hover\\:scale-110:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .hover\\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}#chat-widget-root .hover\\:scale-\\[1\\.02\\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .hover\\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}#chat-widget-root .hover\\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}#chat-widget-root .hover\\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-blue-900\\/50:hover{background-color:rgba(30,58,138,.5)}#chat-widget-root .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-transparent:hover{background-color:transparent}#chat-widget-root .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:underline:hover{text-decoration-line:underline}#chat-widget-root .hover\\:opacity-80:hover{opacity:.8}#chat-widget-root .hover\\:opacity-90:hover{opacity:.9}#chat-widget-root .hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}#chat-widget-root .hover\\:shadow-md:hover,#chat-widget-root .hover\\:shadow-xl:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}#chat-widget-root .hover\\:grayscale-0:hover{--tw-grayscale:grayscale(0);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .focus\\:\\!border-red-500:focus{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity,1))!important}#chat-widget-root .focus\\:border-\\[\\#5A6069\\]:focus{--tw-border-opacity:1;border-color:rgb(90 96 105/var(--tw-border-opacity,1))}#chat-widget-root .focus\\:border-\\[\\#B0B0B0\\]:focus{--tw-border-opacity:1;border-color:rgb(176 176 176/var(--tw-border-opacity,1))}#chat-widget-root .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .focus-visible\\:ring-white\\/40:focus-visible{--tw-ring-color:hsla(0,0%,100%,.4)}#chat-widget-root .active\\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95}#chat-widget-root .active\\:scale-95:active,#chat-widget-root .active\\:scale-\\[0\\.98\\]:active{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .active\\:scale-\\[0\\.98\\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98}#chat-widget-root .active\\:outline-none:active{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .active\\:ring-0:active{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}#chat-widget-root .disabled\\:opacity-40:disabled{opacity:.4}#chat-widget-root .disabled\\:opacity-50:disabled{opacity:.5}#chat-widget-root .disabled\\:shadow-none:disabled{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root :is(.group:hover .group-hover\\:scale-100){--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root :is(.group:hover .group-hover\\:opacity-100){opacity:1}#chat-widget-root .dark\\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .dark\\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}#chat-widget-root .rtl\\:rounded-tl-2xl:where([dir=rtl],[dir=rtl] *){border-top-left-radius:1rem}#chat-widget-root .rtl\\:rounded-tr-sm:where([dir=rtl],[dir=rtl] *){border-top-right-radius:.125rem}#chat-widget-root .\\[\\&\\:first-child\\]\\:\\!mt-0:first-child{margin-top:0!important}#chat-widget-root :is(.\\[\\&\\>\\*\\:first-child\\]\\:\\!mt-0>:first-child){margin-top:0!important}#chat-widget-root :is(.\\[\\&\\>\\*\\:last-child\\]\\:\\!mb-0>:last-child){margin-bottom:0!important}";
7873
7873
 
7874
7874
  var css_248z = ".chat-widget-root{position:fixed;z-index:999999}.chat-widget-container{color:var(--cw-text-color,inherit);font-family:var(\r\n --cw-font-family,-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif\r\n )}#chat-widget-root .chat-messages p{overflow-wrap:anywhere;word-break:break-word}textarea#chat-widget-input::-moz-placeholder{border:none;line-height:48px;outline:none}textarea#chat-widget-input::placeholder{border:none;line-height:48px;outline:none}textarea#chat-widget-input{border:none;line-height:48px;outline:none}@keyframes slideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}#chat-widget-root .scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}#chat-widget-root .scrollbar-hide::-webkit-scrollbar{display:none}@media print{.chat-widget-root{display:none!important}}";
7875
7875
 
@@ -54177,6 +54177,758 @@
54177
54177
  }, [fontFamily]);
54178
54178
  }
54179
54179
 
54180
+ function A2uiBlock(_ref) {
54181
+ let {
54182
+ spec,
54183
+ isDark = false,
54184
+ onButtonClick
54185
+ } = _ref;
54186
+ if (!spec || typeof spec !== 'object') return null;
54187
+ const t = String(spec.type || '').trim().toLowerCase();
54188
+
54189
+ // Charts (incl. graceful fallback for chart-shaped data with unknown type)
54190
+ const CHART_TYPES = new Set(['bar', 'line', 'area', 'pie', 'donut', 'scatter', 'bubble', 'radar', 'radial-bar', 'radial', 'radialbar', 'treemap', 'funnel', 'sankey', 'composed', 'waterfall', 'gauge', 'histogram', 'kpi']);
54191
+ if (t === 'kpi') return /*#__PURE__*/jsxRuntimeExports.jsx(Kpi, {
54192
+ spec: spec,
54193
+ isDark: isDark
54194
+ });
54195
+ if (CHART_TYPES.has(t) || Array.isArray(spec.data) && spec.data.length > 0) {
54196
+ return /*#__PURE__*/jsxRuntimeExports.jsx(Chart, {
54197
+ spec: spec,
54198
+ type: t,
54199
+ isDark: isDark
54200
+ });
54201
+ }
54202
+ if (t === 'table') return /*#__PURE__*/jsxRuntimeExports.jsx(Table, {
54203
+ spec: spec,
54204
+ isDark: isDark
54205
+ });
54206
+ if (t === 'alert') return /*#__PURE__*/jsxRuntimeExports.jsx(Alert, {
54207
+ spec: spec,
54208
+ isDark: isDark
54209
+ });
54210
+ if (t === 'card') return /*#__PURE__*/jsxRuntimeExports.jsx(Card, {
54211
+ spec: spec,
54212
+ isDark: isDark
54213
+ });
54214
+ if (t === 'button-group') return /*#__PURE__*/jsxRuntimeExports.jsx(ButtonGroup, {
54215
+ spec: spec,
54216
+ isDark: isDark,
54217
+ onButtonClick: onButtonClick
54218
+ });
54219
+ if (t === 'form') return /*#__PURE__*/jsxRuntimeExports.jsx(FormDisplay, {
54220
+ spec: spec,
54221
+ isDark: isDark
54222
+ });
54223
+ if (t === 'confirmation') return /*#__PURE__*/jsxRuntimeExports.jsx(Confirmation, {
54224
+ spec: spec,
54225
+ isDark: isDark,
54226
+ onButtonClick: onButtonClick
54227
+ });
54228
+
54229
+ // Unrecognised type — render the data (if any) as a labeled list. Never
54230
+ // fall through to raw JSON; that's the bug we're fixing.
54231
+ if (Array.isArray(spec.data) && spec.data.length > 0) {
54232
+ return /*#__PURE__*/jsxRuntimeExports.jsx(Chart, {
54233
+ spec: spec,
54234
+ type: "bar",
54235
+ isDark: isDark
54236
+ });
54237
+ }
54238
+ return null;
54239
+ }
54240
+
54241
+ // ── Shared helpers ────────────────────────────────────────────────────────
54242
+
54243
+ const PALETTE = ['#3b82f6', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6', '#ec4899', '#14b8a6', '#f97316', '#6366f1', '#84cc16'];
54244
+ const card = isDark => ({
54245
+ border: isDark ? '1px solid #374151' : '1px solid #e5e7eb',
54246
+ background: isDark ? '#1f2937' : '#ffffff',
54247
+ borderRadius: 8,
54248
+ padding: 12,
54249
+ margin: '8px 0',
54250
+ fontSize: 13,
54251
+ color: isDark ? '#f3f4f6' : '#111827'
54252
+ });
54253
+ function inferKeys(data, xKey, yKey) {
54254
+ // Resolve x/y keys defensively — the agent sometimes emits them, sometimes
54255
+ // we have to guess. Picks the first string-valued field for x and the
54256
+ // first numeric-valued field for y.
54257
+ if (!Array.isArray(data) || data.length === 0) return {
54258
+ x: 'name',
54259
+ y: 'value'
54260
+ };
54261
+ const sample = data[0] || {};
54262
+ if (xKey && Object.prototype.hasOwnProperty.call(sample, xKey)) {
54263
+ if (yKey && Object.prototype.hasOwnProperty.call(sample, yKey)) {
54264
+ return {
54265
+ x: xKey,
54266
+ y: yKey
54267
+ };
54268
+ }
54269
+ }
54270
+ let x = xKey || null;
54271
+ let y = yKey || null;
54272
+ for (const k of Object.keys(sample)) {
54273
+ const v = sample[k];
54274
+ if (x == null && (typeof v === 'string' || v == null)) x = k;
54275
+ if (y == null && typeof v === 'number' && Number.isFinite(v)) y = k;
54276
+ }
54277
+ return {
54278
+ x: x || 'name',
54279
+ y: y || 'value'
54280
+ };
54281
+ }
54282
+ function numericData(data, xKey, yKey) {
54283
+ return (data || []).map(row => {
54284
+ var _row$xKey;
54285
+ return {
54286
+ label: String((_row$xKey = row === null || row === void 0 ? void 0 : row[xKey]) !== null && _row$xKey !== void 0 ? _row$xKey : ''),
54287
+ value: Number(row === null || row === void 0 ? void 0 : row[yKey])
54288
+ };
54289
+ }).filter(d => Number.isFinite(d.value));
54290
+ }
54291
+
54292
+ // ── Chart (SVG: line / bar / pie / donut + everything-else fallback) ─────
54293
+
54294
+ function Chart(_ref2) {
54295
+ let {
54296
+ spec,
54297
+ type,
54298
+ isDark
54299
+ } = _ref2;
54300
+ const {
54301
+ x,
54302
+ y
54303
+ } = inferKeys(spec.data, spec.x, spec.y);
54304
+ const rows = numericData(spec.data, x, y);
54305
+ if (rows.length === 0) {
54306
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54307
+ style: card(isDark),
54308
+ children: [spec.title && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54309
+ style: {
54310
+ fontWeight: 600,
54311
+ marginBottom: 8
54312
+ },
54313
+ children: spec.title
54314
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54315
+ style: {
54316
+ color: isDark ? '#9ca3af' : '#6b7280',
54317
+ fontSize: 12
54318
+ },
54319
+ children: "No chartable data"
54320
+ })]
54321
+ });
54322
+ }
54323
+ const t = String(type || '').trim().toLowerCase();
54324
+ let body;
54325
+ if (t === 'pie' || t === 'donut') body = /*#__PURE__*/jsxRuntimeExports.jsx(PieSvg, {
54326
+ rows: rows,
54327
+ donut: t === 'donut',
54328
+ isDark: isDark
54329
+ });else if (t === 'line' || t === 'area') body = /*#__PURE__*/jsxRuntimeExports.jsx(LineSvg, {
54330
+ rows: rows,
54331
+ area: t === 'area',
54332
+ isDark: isDark
54333
+ });else body = /*#__PURE__*/jsxRuntimeExports.jsx(BarSvg, {
54334
+ rows: rows,
54335
+ isDark: isDark
54336
+ }); // bar + every fallback
54337
+
54338
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54339
+ style: card(isDark),
54340
+ children: [spec.title && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54341
+ style: {
54342
+ fontWeight: 600,
54343
+ marginBottom: 8
54344
+ },
54345
+ children: spec.title
54346
+ }), body]
54347
+ });
54348
+ }
54349
+ function BarSvg(_ref3) {
54350
+ let {
54351
+ rows,
54352
+ isDark
54353
+ } = _ref3;
54354
+ const w = 320;
54355
+ const h = 180;
54356
+ const padLeft = 8;
54357
+ const padRight = 8;
54358
+ const padTop = 8;
54359
+ const padBottom = 28;
54360
+ const innerW = w - padLeft - padRight;
54361
+ const innerH = h - padTop - padBottom;
54362
+ const maxV = Math.max(...rows.map(r => r.value), 0.0001);
54363
+ const bw = innerW / rows.length;
54364
+ const labelStroke = isDark ? '#9ca3af' : '#4b5563';
54365
+ const gridStroke = isDark ? '#374151' : '#e5e7eb';
54366
+ const fontColor = isDark ? '#d1d5db' : '#374151';
54367
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("svg", {
54368
+ viewBox: "0 0 ".concat(w, " ").concat(h),
54369
+ width: "100%",
54370
+ style: {
54371
+ display: 'block'
54372
+ },
54373
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx("line", {
54374
+ x1: padLeft,
54375
+ y1: padTop + innerH,
54376
+ x2: padLeft + innerW,
54377
+ y2: padTop + innerH,
54378
+ stroke: gridStroke,
54379
+ strokeWidth: "1"
54380
+ }), rows.map((r, i) => {
54381
+ const barH = r.value / maxV * innerH;
54382
+ const x = padLeft + i * bw + bw * 0.15;
54383
+ const yPos = padTop + (innerH - barH);
54384
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("g", {
54385
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx("rect", {
54386
+ x: x,
54387
+ y: yPos,
54388
+ width: bw * 0.7,
54389
+ height: barH,
54390
+ fill: PALETTE[i % PALETTE.length],
54391
+ rx: "2"
54392
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("text", {
54393
+ x: x + bw * 0.7 / 2,
54394
+ y: padTop + innerH + 14,
54395
+ fontSize: "9",
54396
+ fill: fontColor,
54397
+ textAnchor: "middle",
54398
+ children: truncate(r.label, 10)
54399
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("text", {
54400
+ x: x + bw * 0.7 / 2,
54401
+ y: yPos - 3,
54402
+ fontSize: "9",
54403
+ fill: labelStroke,
54404
+ textAnchor: "middle",
54405
+ children: formatNum(r.value)
54406
+ })]
54407
+ }, i);
54408
+ })]
54409
+ });
54410
+ }
54411
+ function LineSvg(_ref4) {
54412
+ let {
54413
+ rows,
54414
+ area,
54415
+ isDark
54416
+ } = _ref4;
54417
+ const w = 320;
54418
+ const h = 180;
54419
+ const padLeft = 28;
54420
+ const padRight = 12;
54421
+ const padTop = 12;
54422
+ const padBottom = 28;
54423
+ const innerW = w - padLeft - padRight;
54424
+ const innerH = h - padTop - padBottom;
54425
+ const vals = rows.map(r => r.value);
54426
+ const maxV = Math.max(...vals);
54427
+ const minV = Math.min(...vals, 0);
54428
+ const range = maxV - minV || 1;
54429
+ const gridStroke = isDark ? '#374151' : '#e5e7eb';
54430
+ const labelStroke = isDark ? '#9ca3af' : '#4b5563';
54431
+ const fontColor = isDark ? '#d1d5db' : '#374151';
54432
+ const lineColor = PALETTE[0];
54433
+ const xAt = i => padLeft + (rows.length > 1 ? i / (rows.length - 1) * innerW : innerW / 2);
54434
+ const yAt = v => padTop + innerH - (v - minV) / range * innerH;
54435
+ const points = rows.map((r, i) => "".concat(xAt(i), ",").concat(yAt(r.value))).join(' ');
54436
+ const areaPath = rows.length > 0 ? "M ".concat(xAt(0), ",").concat(padTop + innerH, " L ").concat(rows.map((r, i) => "".concat(xAt(i), ",").concat(yAt(r.value))).join(' L '), " L ").concat(xAt(rows.length - 1), ",").concat(padTop + innerH, " Z") : '';
54437
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("svg", {
54438
+ viewBox: "0 0 ".concat(w, " ").concat(h),
54439
+ width: "100%",
54440
+ style: {
54441
+ display: 'block'
54442
+ },
54443
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx("line", {
54444
+ x1: padLeft,
54445
+ y1: padTop,
54446
+ x2: padLeft,
54447
+ y2: padTop + innerH,
54448
+ stroke: gridStroke,
54449
+ strokeWidth: "1"
54450
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("line", {
54451
+ x1: padLeft,
54452
+ y1: padTop + innerH,
54453
+ x2: padLeft + innerW,
54454
+ y2: padTop + innerH,
54455
+ stroke: gridStroke,
54456
+ strokeWidth: "1"
54457
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("text", {
54458
+ x: padLeft - 4,
54459
+ y: padTop + 4,
54460
+ fontSize: "9",
54461
+ fill: labelStroke,
54462
+ textAnchor: "end",
54463
+ children: formatNum(maxV)
54464
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("text", {
54465
+ x: padLeft - 4,
54466
+ y: padTop + innerH,
54467
+ fontSize: "9",
54468
+ fill: labelStroke,
54469
+ textAnchor: "end",
54470
+ children: formatNum(minV)
54471
+ }), area && /*#__PURE__*/jsxRuntimeExports.jsx("path", {
54472
+ d: areaPath,
54473
+ fill: lineColor,
54474
+ fillOpacity: "0.15"
54475
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("polyline", {
54476
+ points: points,
54477
+ fill: "none",
54478
+ stroke: lineColor,
54479
+ strokeWidth: "2",
54480
+ strokeLinejoin: "round",
54481
+ strokeLinecap: "round"
54482
+ }), rows.map((r, i) => /*#__PURE__*/jsxRuntimeExports.jsxs("g", {
54483
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx("circle", {
54484
+ cx: xAt(i),
54485
+ cy: yAt(r.value),
54486
+ r: "3",
54487
+ fill: lineColor
54488
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("text", {
54489
+ x: xAt(i),
54490
+ y: padTop + innerH + 14,
54491
+ fontSize: "9",
54492
+ fill: fontColor,
54493
+ textAnchor: "middle",
54494
+ children: truncate(r.label, 10)
54495
+ })]
54496
+ }, i))]
54497
+ });
54498
+ }
54499
+ function PieSvg(_ref5) {
54500
+ let {
54501
+ rows,
54502
+ donut,
54503
+ isDark
54504
+ } = _ref5;
54505
+ const size = 200;
54506
+ const cx = size / 2;
54507
+ const cy = size / 2;
54508
+ const rOuter = size / 2 - 4;
54509
+ const rInner = donut ? rOuter * 0.55 : 0;
54510
+ const total = rows.reduce((s, r) => s + Math.max(0, r.value), 0);
54511
+ if (total <= 0) {
54512
+ return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54513
+ style: {
54514
+ color: isDark ? '#9ca3af' : '#6b7280',
54515
+ fontSize: 12
54516
+ },
54517
+ children: "Empty pie chart"
54518
+ });
54519
+ }
54520
+ let acc = 0;
54521
+ const slices = rows.map((r, i) => {
54522
+ const startA = acc / total * Math.PI * 2 - Math.PI / 2;
54523
+ acc += Math.max(0, r.value);
54524
+ const endA = acc / total * Math.PI * 2 - Math.PI / 2;
54525
+ const large = endA - startA > Math.PI ? 1 : 0;
54526
+ const x1 = cx + rOuter * Math.cos(startA);
54527
+ const y1 = cy + rOuter * Math.sin(startA);
54528
+ const x2 = cx + rOuter * Math.cos(endA);
54529
+ const y2 = cy + rOuter * Math.sin(endA);
54530
+ if (donut) {
54531
+ const ix1 = cx + rInner * Math.cos(endA);
54532
+ const iy1 = cy + rInner * Math.sin(endA);
54533
+ const ix2 = cx + rInner * Math.cos(startA);
54534
+ const iy2 = cy + rInner * Math.sin(startA);
54535
+ return {
54536
+ d: "M ".concat(x1, ",").concat(y1, " A ").concat(rOuter, ",").concat(rOuter, " 0 ").concat(large, " 1 ").concat(x2, ",").concat(y2, " L ").concat(ix1, ",").concat(iy1, " A ").concat(rInner, ",").concat(rInner, " 0 ").concat(large, " 0 ").concat(ix2, ",").concat(iy2, " Z"),
54537
+ color: PALETTE[i % PALETTE.length],
54538
+ label: r.label,
54539
+ value: r.value
54540
+ };
54541
+ }
54542
+ return {
54543
+ d: "M ".concat(cx, ",").concat(cy, " L ").concat(x1, ",").concat(y1, " A ").concat(rOuter, ",").concat(rOuter, " 0 ").concat(large, " 1 ").concat(x2, ",").concat(y2, " Z"),
54544
+ color: PALETTE[i % PALETTE.length],
54545
+ label: r.label,
54546
+ value: r.value
54547
+ };
54548
+ });
54549
+ const labelColor = isDark ? '#d1d5db' : '#374151';
54550
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54551
+ style: {
54552
+ display: 'flex',
54553
+ flexWrap: 'wrap',
54554
+ gap: 12,
54555
+ alignItems: 'center'
54556
+ },
54557
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx("svg", {
54558
+ viewBox: "0 0 ".concat(size, " ").concat(size),
54559
+ width: "160",
54560
+ style: {
54561
+ flexShrink: 0
54562
+ },
54563
+ children: slices.map((s, i) => /*#__PURE__*/jsxRuntimeExports.jsx("path", {
54564
+ d: s.d,
54565
+ fill: s.color,
54566
+ stroke: isDark ? '#1f2937' : '#fff',
54567
+ strokeWidth: "1"
54568
+ }, i))
54569
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54570
+ style: {
54571
+ minWidth: 100,
54572
+ flex: '1 1 auto'
54573
+ },
54574
+ children: slices.map((s, i) => /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54575
+ style: {
54576
+ display: 'flex',
54577
+ alignItems: 'center',
54578
+ gap: 6,
54579
+ marginBottom: 4,
54580
+ fontSize: 11
54581
+ },
54582
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx("span", {
54583
+ style: {
54584
+ display: 'inline-block',
54585
+ width: 10,
54586
+ height: 10,
54587
+ background: s.color,
54588
+ borderRadius: 2
54589
+ }
54590
+ }), /*#__PURE__*/jsxRuntimeExports.jsxs("span", {
54591
+ style: {
54592
+ color: labelColor
54593
+ },
54594
+ children: [truncate(s.label, 18), " ", /*#__PURE__*/jsxRuntimeExports.jsx("span", {
54595
+ style: {
54596
+ opacity: 0.7
54597
+ },
54598
+ children: formatNum(s.value)
54599
+ })]
54600
+ })]
54601
+ }, i))
54602
+ })]
54603
+ });
54604
+ }
54605
+
54606
+ // ── KPI / Table / Alert / Card / Buttons / Form / Confirmation ───────────
54607
+
54608
+ function Kpi(_ref6) {
54609
+ var _ref7, _ref8, _spec$value;
54610
+ let {
54611
+ spec,
54612
+ isDark
54613
+ } = _ref6;
54614
+ const value = (_ref7 = (_ref8 = (_spec$value = spec.value) !== null && _spec$value !== void 0 ? _spec$value : spec.amount) !== null && _ref8 !== void 0 ? _ref8 : spec.metric) !== null && _ref7 !== void 0 ? _ref7 : spec.kpi;
54615
+ const label = spec.label || spec.title || '';
54616
+ const delta = spec.delta != null ? Number(spec.delta) : null;
54617
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54618
+ style: card(isDark),
54619
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx("div", {
54620
+ style: {
54621
+ fontSize: 11,
54622
+ color: isDark ? '#9ca3af' : '#6b7280',
54623
+ textTransform: 'uppercase',
54624
+ letterSpacing: '0.05em'
54625
+ },
54626
+ children: label
54627
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54628
+ style: {
54629
+ fontSize: 24,
54630
+ fontWeight: 700,
54631
+ marginTop: 2
54632
+ },
54633
+ children: value != null ? String(value) : '—'
54634
+ }), delta != null && Number.isFinite(delta) && /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54635
+ style: {
54636
+ fontSize: 12,
54637
+ color: delta >= 0 ? '#10b981' : '#ef4444',
54638
+ marginTop: 2
54639
+ },
54640
+ children: [delta >= 0 ? '▲ ' : '▼ ', formatNum(Math.abs(delta))]
54641
+ })]
54642
+ });
54643
+ }
54644
+ function Table(_ref9) {
54645
+ let {
54646
+ spec,
54647
+ isDark
54648
+ } = _ref9;
54649
+ const cols = Array.isArray(spec.columns) && spec.columns.length > 0 ? spec.columns : Array.isArray(spec.data) && spec.data[0] ? Object.keys(spec.data[0]) : [];
54650
+ const rows = Array.isArray(spec.data) ? spec.data : Array.isArray(spec.rows) ? spec.rows : [];
54651
+ if (cols.length === 0 || rows.length === 0) {
54652
+ return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54653
+ style: card(isDark),
54654
+ children: /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54655
+ style: {
54656
+ color: isDark ? '#9ca3af' : '#6b7280',
54657
+ fontSize: 12
54658
+ },
54659
+ children: "Empty table"
54660
+ })
54661
+ });
54662
+ }
54663
+ const border = isDark ? '1px solid #374151' : '1px solid #e5e7eb';
54664
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54665
+ style: card(isDark),
54666
+ children: [spec.title && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54667
+ style: {
54668
+ fontWeight: 600,
54669
+ marginBottom: 8
54670
+ },
54671
+ children: spec.title
54672
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54673
+ style: {
54674
+ overflowX: 'auto'
54675
+ },
54676
+ children: /*#__PURE__*/jsxRuntimeExports.jsxs("table", {
54677
+ style: {
54678
+ borderCollapse: 'collapse',
54679
+ width: '100%',
54680
+ fontSize: 12
54681
+ },
54682
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx("thead", {
54683
+ children: /*#__PURE__*/jsxRuntimeExports.jsx("tr", {
54684
+ children: cols.map(c => /*#__PURE__*/jsxRuntimeExports.jsx("th", {
54685
+ style: {
54686
+ border,
54687
+ padding: '6px 8px',
54688
+ background: isDark ? '#111827' : '#f9fafb',
54689
+ textAlign: 'left',
54690
+ fontWeight: 600
54691
+ },
54692
+ children: c
54693
+ }, c))
54694
+ })
54695
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("tbody", {
54696
+ children: rows.map((row, i) => /*#__PURE__*/jsxRuntimeExports.jsx("tr", {
54697
+ children: cols.map(c => /*#__PURE__*/jsxRuntimeExports.jsx("td", {
54698
+ style: {
54699
+ border,
54700
+ padding: '6px 8px'
54701
+ },
54702
+ children: row && typeof row === 'object' ? formatCell(row[c]) : ''
54703
+ }, c))
54704
+ }, i))
54705
+ })]
54706
+ })
54707
+ })]
54708
+ });
54709
+ }
54710
+ function Alert(_ref0) {
54711
+ let {
54712
+ spec,
54713
+ isDark
54714
+ } = _ref0;
54715
+ const lvl = String(spec.level || 'info').toLowerCase();
54716
+ const palette = {
54717
+ info: {
54718
+ bg: isDark ? '#1e3a5f' : '#eff6ff',
54719
+ border: '#3b82f6',
54720
+ text: isDark ? '#dbeafe' : '#1e40af'
54721
+ },
54722
+ warn: {
54723
+ bg: isDark ? '#3d2e0a' : '#fef3c7',
54724
+ border: '#f59e0b',
54725
+ text: isDark ? '#fde68a' : '#92400e'
54726
+ },
54727
+ warning: {
54728
+ bg: isDark ? '#3d2e0a' : '#fef3c7',
54729
+ border: '#f59e0b',
54730
+ text: isDark ? '#fde68a' : '#92400e'
54731
+ },
54732
+ error: {
54733
+ bg: isDark ? '#3a1216' : '#fee2e2',
54734
+ border: '#ef4444',
54735
+ text: isDark ? '#fecaca' : '#991b1b'
54736
+ },
54737
+ success: {
54738
+ bg: isDark ? '#0e2e1d' : '#d1fae5',
54739
+ border: '#10b981',
54740
+ text: isDark ? '#a7f3d0' : '#065f46'
54741
+ }
54742
+ };
54743
+ const p = palette[lvl] || palette.info;
54744
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54745
+ style: _objectSpread2(_objectSpread2({}, card(isDark)), {}, {
54746
+ background: p.bg,
54747
+ borderLeft: "4px solid ".concat(p.border),
54748
+ color: p.text
54749
+ }),
54750
+ children: [spec.title && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54751
+ style: {
54752
+ fontWeight: 600,
54753
+ marginBottom: 4
54754
+ },
54755
+ children: spec.title
54756
+ }), spec.body && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54757
+ style: {
54758
+ fontSize: 12
54759
+ },
54760
+ children: String(spec.body)
54761
+ })]
54762
+ });
54763
+ }
54764
+ function Card(_ref1) {
54765
+ let {
54766
+ spec,
54767
+ isDark
54768
+ } = _ref1;
54769
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54770
+ style: card(isDark),
54771
+ children: [spec.title && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54772
+ style: {
54773
+ fontWeight: 600,
54774
+ marginBottom: 6
54775
+ },
54776
+ children: spec.title
54777
+ }), spec.body && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54778
+ style: {
54779
+ fontSize: 12
54780
+ },
54781
+ children: String(spec.body)
54782
+ })]
54783
+ });
54784
+ }
54785
+ function ButtonGroup(_ref10) {
54786
+ let {
54787
+ spec,
54788
+ isDark,
54789
+ onButtonClick
54790
+ } = _ref10;
54791
+ const buttons = Array.isArray(spec.buttons) ? spec.buttons : [];
54792
+ if (buttons.length === 0) return null;
54793
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54794
+ style: {
54795
+ margin: '8px 0'
54796
+ },
54797
+ children: [spec.title && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54798
+ style: {
54799
+ fontSize: 11,
54800
+ color: isDark ? '#9ca3af' : '#6b7280',
54801
+ textTransform: 'uppercase',
54802
+ letterSpacing: '0.05em',
54803
+ marginBottom: 6
54804
+ },
54805
+ children: spec.title
54806
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54807
+ style: {
54808
+ display: 'flex',
54809
+ flexWrap: 'wrap',
54810
+ gap: 6
54811
+ },
54812
+ children: buttons.map((b, i) => {
54813
+ var _ref13, _b$label2;
54814
+ return /*#__PURE__*/jsxRuntimeExports.jsx("button", {
54815
+ type: "button",
54816
+ onClick: onButtonClick ? () => {
54817
+ var _ref11, _b$value, _ref12, _b$label;
54818
+ return onButtonClick(String((_ref11 = (_b$value = b.value) !== null && _b$value !== void 0 ? _b$value : b.label) !== null && _ref11 !== void 0 ? _ref11 : ''), String((_ref12 = (_b$label = b.label) !== null && _b$label !== void 0 ? _b$label : b.value) !== null && _ref12 !== void 0 ? _ref12 : ''));
54819
+ } : undefined,
54820
+ disabled: !onButtonClick,
54821
+ style: {
54822
+ border: '1px solid ' + (isDark ? '#374151' : '#d1d5db'),
54823
+ background: isDark ? '#1f2937' : '#ffffff',
54824
+ color: isDark ? '#f3f4f6' : '#111827',
54825
+ padding: '6px 12px',
54826
+ borderRadius: 6,
54827
+ fontSize: 12,
54828
+ cursor: onButtonClick ? 'pointer' : 'default',
54829
+ opacity: onButtonClick ? 1 : 0.6
54830
+ },
54831
+ children: String((_ref13 = (_b$label2 = b.label) !== null && _b$label2 !== void 0 ? _b$label2 : b.value) !== null && _ref13 !== void 0 ? _ref13 : '')
54832
+ }, i);
54833
+ })
54834
+ })]
54835
+ });
54836
+ }
54837
+ function FormDisplay(_ref14) {
54838
+ let {
54839
+ spec,
54840
+ isDark
54841
+ } = _ref14;
54842
+ // Forms are read-only in the widget — the chat surface doesn't have a
54843
+ // form-submit channel, so we just render the fields for the user to read.
54844
+ const fields = Array.isArray(spec.fields) ? spec.fields : [];
54845
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54846
+ style: card(isDark),
54847
+ children: [spec.title && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54848
+ style: {
54849
+ fontWeight: 600,
54850
+ marginBottom: 8
54851
+ },
54852
+ children: spec.title
54853
+ }), fields.map((f, i) => {
54854
+ var _ref15, _f$value;
54855
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54856
+ style: {
54857
+ marginBottom: 4,
54858
+ fontSize: 12
54859
+ },
54860
+ children: [/*#__PURE__*/jsxRuntimeExports.jsxs("span", {
54861
+ style: {
54862
+ color: isDark ? '#9ca3af' : '#6b7280'
54863
+ },
54864
+ children: [f.label || f.name, ": "]
54865
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("span", {
54866
+ children: String((_ref15 = (_f$value = f.value) !== null && _f$value !== void 0 ? _f$value : f.placeholder) !== null && _ref15 !== void 0 ? _ref15 : '')
54867
+ })]
54868
+ }, i);
54869
+ })]
54870
+ });
54871
+ }
54872
+ function Confirmation(_ref16) {
54873
+ let {
54874
+ spec,
54875
+ isDark,
54876
+ onButtonClick
54877
+ } = _ref16;
54878
+ const yes = spec.yes || {
54879
+ label: 'Yes',
54880
+ value: 'yes'
54881
+ };
54882
+ const no = spec.no || {
54883
+ label: 'No',
54884
+ value: 'no'
54885
+ };
54886
+ return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
54887
+ style: card(isDark),
54888
+ children: [spec.title && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54889
+ style: {
54890
+ fontWeight: 600,
54891
+ marginBottom: 6
54892
+ },
54893
+ children: spec.title
54894
+ }), spec.body && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
54895
+ style: {
54896
+ fontSize: 12,
54897
+ marginBottom: 8
54898
+ },
54899
+ children: String(spec.body)
54900
+ }), /*#__PURE__*/jsxRuntimeExports.jsx(ButtonGroup, {
54901
+ spec: {
54902
+ buttons: [yes, no]
54903
+ },
54904
+ isDark: isDark,
54905
+ onButtonClick: onButtonClick
54906
+ })]
54907
+ });
54908
+ }
54909
+
54910
+ // ── Formatting helpers ────────────────────────────────────────────────────
54911
+
54912
+ function truncate(s, max) {
54913
+ if (typeof s !== 'string') return String(s !== null && s !== void 0 ? s : '');
54914
+ return s.length > max ? s.slice(0, max - 1) + '…' : s;
54915
+ }
54916
+ function formatNum(n) {
54917
+ if (!Number.isFinite(n)) return '';
54918
+ const abs = Math.abs(n);
54919
+ if (abs >= 1000000000) return (n / 1000000000).toFixed(1) + 'B';
54920
+ if (abs >= 1000000) return (n / 1000000).toFixed(1) + 'M';
54921
+ if (abs >= 1000) return (n / 1000).toFixed(1) + 'k';
54922
+ if (Number.isInteger(n)) return String(n);
54923
+ return n.toFixed(2);
54924
+ }
54925
+ function formatCell(v) {
54926
+ if (v == null) return '';
54927
+ if (typeof v === 'number') return Number.isInteger(v) ? String(v) : v.toFixed(2);
54928
+ if (typeof v === 'object') return JSON.stringify(v);
54929
+ return String(v);
54930
+ }
54931
+
54180
54932
  const _excluded$1 = ["node", "children"],
54181
54933
  _excluded2 = ["node", "children"],
54182
54934
  _excluded3 = ["node", "children"],
@@ -54190,6 +54942,19 @@
54190
54942
  _excluded1 = ["node", "children"],
54191
54943
  _excluded10 = ["node", "children"],
54192
54944
  _excluded11 = ["className", "children"];
54945
+ const A2UI_FENCE_LANGS = new Set(["eshal-ui", "eshal-chart", "chart"]);
54946
+
54947
+ // Pull a clean text payload out of ReactMarkdown's `children` prop — it's
54948
+ // usually a string for fenced code blocks but can be an array of nodes when
54949
+ // remark plugins pre-tokenise. Defensive coercion: anything non-string is
54950
+ // dropped so JSON.parse never sees React elements.
54951
+ function extractFenceText(children) {
54952
+ if (typeof children === "string") return children;
54953
+ if (Array.isArray(children)) {
54954
+ return children.map(c => typeof c === "string" ? c : "").join("");
54955
+ }
54956
+ return "";
54957
+ }
54193
54958
  const StreamingMarkdown = _ref => {
54194
54959
  let {
54195
54960
  content,
@@ -54557,11 +55322,34 @@
54557
55322
  children
54558
55323
  } = _ref12,
54559
55324
  props = _objectWithoutProperties$1(_ref12, _excluded11);
54560
- const match = /language-(\w+)/.exec(className || "");
55325
+ const match = /language-([\w-]+)/.exec(className || "");
55326
+ const lang = match ? match[1] : null;
55327
+
55328
+ // A2UI fence — render the JSON payload as a real visual block
55329
+ // (bar / line / pie chart / table / alert / KPI / card / button-
55330
+ // group). Falls through to the normal code-block rendering if
55331
+ // the JSON doesn't parse or the type is unrecognised — never
55332
+ // crashes the chat surface on a malformed fence. This is the
55333
+ // 12-06-2026 fix for the "graph responses show as raw JSON in
55334
+ // the embedded widget" bug.
55335
+ if (lang && A2UI_FENCE_LANGS.has(lang)) {
55336
+ const raw = extractFenceText(children).trim();
55337
+ try {
55338
+ const parsed = JSON.parse(raw);
55339
+ if (parsed && typeof parsed === "object") {
55340
+ return /*#__PURE__*/jsxRuntimeExports.jsx(A2uiBlock, {
55341
+ spec: parsed,
55342
+ isDark: isDark
55343
+ });
55344
+ }
55345
+ } catch (e) {
55346
+ // fall through to default code-block rendering
55347
+ }
55348
+ }
54561
55349
  if (match) {
54562
55350
  return /*#__PURE__*/jsxRuntimeExports.jsx(SyntaxHighlighter, _objectSpread2(_objectSpread2({
54563
55351
  style: oneDark,
54564
- language: match[1],
55352
+ language: lang,
54565
55353
  PreTag: "div",
54566
55354
  wrapLines: true
54567
55355
  }, props), {}, {
@@ -60071,10 +60859,14 @@
60071
60859
  }, [isCsatEnabled, showResolveForm, isConversationResolved, resolveRating, resolveFeedbackText]);
60072
60860
  const latestPromptSuggestions = reactExports.useMemo(() => {
60073
60861
  if (!messages || !Array.isArray(messages)) return [];
60862
+ // Reflect the LATEST assistant message's prompts ONLY — do NOT walk back
60863
+ // to an earlier turn. Walking back showed the PREVIOUS turn's chips
60864
+ // whenever the current answer's prompts were empty/late (the one-turn lag).
60074
60865
  for (let i = messages.length - 1; i >= 0; i -= 1) {
60075
- const msg = messages[i];
60076
- if ((msg === null || msg === void 0 ? void 0 : msg.role) === "assistant" && Array.isArray(msg.prompts) && msg.prompts.length > 0) {
60077
- return msg.prompts;
60866
+ var _messages$i;
60867
+ if (((_messages$i = messages[i]) === null || _messages$i === void 0 ? void 0 : _messages$i.role) === "assistant") {
60868
+ const p = messages[i].prompts;
60869
+ return Array.isArray(p) ? p : [];
60078
60870
  }
60079
60871
  }
60080
60872
  return [];
@@ -60090,6 +60882,18 @@
60090
60882
  stablePromptSuggestionsRef.current = [];
60091
60883
  }
60092
60884
  }, [latestPromptSuggestions, messages]);
60885
+
60886
+ // The moment a NEW user turn starts, drop the carried-over suggestions so a
60887
+ // late/empty current turn never leaves the PREVIOUS turn's chips showing
60888
+ // (the reported one-turn lag). They reappear when this turn yields prompts.
60889
+ // (`userMessageCount` is declared above.)
60890
+ const prevUserMessageCountRef = reactExports.useRef(userMessageCount);
60891
+ reactExports.useEffect(() => {
60892
+ if (userMessageCount !== prevUserMessageCountRef.current) {
60893
+ prevUserMessageCountRef.current = userMessageCount;
60894
+ stablePromptSuggestionsRef.current = [];
60895
+ }
60896
+ }, [userMessageCount]);
60093
60897
  const stablePromptSuggestions = latestPromptSuggestions.length > 0 ? latestPromptSuggestions : stablePromptSuggestionsRef.current;
60094
60898
  reactExports.useEffect(() => {
60095
60899
  if (!csatEnabled) return;
@@ -61898,6 +62702,16 @@
61898
62702
  })
61899
62703
  }];
61900
62704
 
62705
+ // Reorder the keyless cascade: freeipapi.com is currently the only one
62706
+ // reliably reachable from a browser — ip-api.com's free tier is HTTP-only
62707
+ // (→ HTTP 403 over HTTPS), ipwho.is → 403, ipapi.co → 429. Trying freeipapi
62708
+ // first avoids three doomed round-trips on every lookup. The rest stay as
62709
+ // fallback in case they recover or behave differently from another network.
62710
+ // NOTE: all IP providers locate the ISP gateway, not the device — for an
62711
+ // accurate end-user position use getBrowserLocation() (GPS + reverseGeocode).
62712
+ const FREE_ORDER = ["freeipapi.com", "ipwho.is", "ipapi.co", "ip-api.com"];
62713
+ freeProviders.sort((a, b) => FREE_ORDER.indexOf(a.name) - FREE_ORDER.indexOf(b.name));
62714
+
61901
62715
  // Key-based providers go first (more reliable, higher limits)
61902
62716
  return [...keyedProviders, ...freeProviders];
61903
62717
  }
@@ -61995,22 +62809,130 @@
61995
62809
  }));
61996
62810
  }
61997
62811
 
62812
+ // Default options for navigator.geolocation.getCurrentPosition.
62813
+ // enableHighAccuracy → prefer real GPS over coarse network positioning;
62814
+ // timeout 8s → don't hang forever waiting for a fix;
62815
+ // maximumAge 5 min → accept a recently-cached fix so a silent refresh
62816
+ // (permission already granted) resolves instantly.
62817
+ const DEFAULT_GEO_OPTIONS = {
62818
+ enableHighAccuracy: true,
62819
+ timeout: 8000,
62820
+ maximumAge: 5 * 60 * 1000
62821
+ };
62822
+
61998
62823
  /**
61999
- * Get browser-native geolocation (GPS / network-based, requires user permission)
62824
+ * Get browser-native geolocation (GPS / network-based).
62825
+ * Triggers the native permission prompt on first use for an origin (unless the
62826
+ * user already granted/denied). Resolves null — never rejects — on error,
62827
+ * denial, unsupported, or insecure (plain-HTTP) context, so callers can simply
62828
+ * fall back to IP geo.
62829
+ *
62830
+ * @param {PositionOptions} [options] - merged over DEFAULT_GEO_OPTIONS
62831
+ * @returns {Promise<{latitude:number, longitude:number, accuracy:number}|null>}
62000
62832
  */
62001
- function getBrowserGeolocation$1(options = {
62002
- timeout: 8000
62003
- }) {
62833
+ function getBrowserGeolocation$1(options = {}) {
62004
62834
  return new Promise(resolve => {
62005
- if (!navigator?.geolocation) return resolve(null);
62835
+ if (typeof navigator === "undefined" || !navigator.geolocation) return resolve(null);
62836
+ // getCurrentPosition only resolves in a secure context (HTTPS or
62837
+ // localhost). Bail early on plain HTTP rather than attempt a doomed prompt.
62838
+ if (typeof window !== "undefined" && window.isSecureContext === false) return resolve(null);
62006
62839
  navigator.geolocation.getCurrentPosition(pos => resolve({
62007
62840
  latitude: pos.coords.latitude,
62008
62841
  longitude: pos.coords.longitude,
62009
62842
  accuracy: pos.coords.accuracy
62010
- }), () => resolve(null), options);
62843
+ }), () => resolve(null), {
62844
+ ...DEFAULT_GEO_OPTIONS,
62845
+ ...options
62846
+ });
62011
62847
  });
62012
62848
  }
62013
62849
 
62850
+ /**
62851
+ * Query the current geolocation permission WITHOUT triggering a prompt.
62852
+ * Lets the host decide whether to ask: "granted" → fetch silently, "denied" →
62853
+ * skip (IP fallback), "prompt" → show your own pre-ask before getCurrentPosition.
62854
+ * Returns "unsupported" where the Permissions API is unavailable (e.g. older
62855
+ * Safari) so callers can treat it as "not known to be granted".
62856
+ * @returns {Promise<"granted"|"denied"|"prompt"|"unsupported">}
62857
+ */
62858
+ async function getGeolocationPermission$1() {
62859
+ try {
62860
+ if (typeof navigator === "undefined" || !navigator.permissions || !navigator.permissions.query) {
62861
+ return "unsupported";
62862
+ }
62863
+ const status = await navigator.permissions.query({
62864
+ name: "geolocation"
62865
+ });
62866
+ return status.state; // "granted" | "denied" | "prompt"
62867
+ } catch {
62868
+ return "unsupported";
62869
+ }
62870
+ }
62871
+
62872
+ /**
62873
+ * Reverse-geocode latitude/longitude → city / region / country.
62874
+ * Uses BigDataCloud's keyless, CORS-enabled *client* endpoint (no API key,
62875
+ * accurate to the city/state level). Resolves null on network failure or an
62876
+ * unusable response so the caller can keep any prior (IP-based) values.
62877
+ *
62878
+ * @param {number} latitude
62879
+ * @param {number} longitude
62880
+ * @param {Object} [options]
62881
+ * @param {number} [options.timeoutMs]
62882
+ * @param {string} [options.localityLanguage="en"]
62883
+ * @returns {Promise<{city,region,regionCode,country,countryCode,latitude,longitude}|null>}
62884
+ */
62885
+ async function reverseGeocode$1(latitude, longitude, options = {}) {
62886
+ if (typeof latitude !== "number" || typeof longitude !== "number") return null;
62887
+ const timeoutMs = options.timeoutMs || _globalConfig.timeoutMs || 5000;
62888
+ const lang = options.localityLanguage || "en";
62889
+ const url = "https://api.bigdatacloud.net/data/reverse-geocode-client" + `?latitude=${latitude}&longitude=${longitude}&localityLanguage=${lang}`;
62890
+ try {
62891
+ const d = await fetchWithTimeout(url, timeoutMs);
62892
+ const city = d.city || d.locality || "";
62893
+ // Treat an empty body (e.g. mid-ocean coords) as a miss, not a result.
62894
+ if (!city && !d.countryName) return null;
62895
+ return {
62896
+ city,
62897
+ region: d.principalSubdivision || "",
62898
+ regionCode: (d.principalSubdivisionCode || "").split("-").pop() || "",
62899
+ country: d.countryName || "",
62900
+ countryCode: d.countryCode || "",
62901
+ latitude,
62902
+ longitude
62903
+ };
62904
+ } catch {
62905
+ return null;
62906
+ }
62907
+ }
62908
+
62909
+ /**
62910
+ * High-level "exact location" helper. Gets the device GPS fix (prompting if
62911
+ * needed) and reverse-geocodes it. Returns a geo-shaped object tagged
62912
+ * source:"gps" when the place resolved; the bare coords (no source tag) when
62913
+ * only the fix succeeded but reverse-geocoding failed; or null when there is no
62914
+ * fix at all (denied / unsupported / insecure). This is the accurate-location
62915
+ * primitive — prefer it over IP geo for the real end-user position.
62916
+ *
62917
+ * @param {PositionOptions} [options]
62918
+ * @returns {Promise<Object|null>}
62919
+ */
62920
+ async function getBrowserLocation$1(options = {}) {
62921
+ const coords = await getBrowserGeolocation$1(options);
62922
+ if (!coords) return null;
62923
+ const place = await reverseGeocode$1(coords.latitude, coords.longitude, options);
62924
+ const hasPlace = !!(place && (place.city || place.country));
62925
+ return {
62926
+ ...(hasPlace ? place : {}),
62927
+ latitude: coords.latitude,
62928
+ longitude: coords.longitude,
62929
+ accuracy: coords.accuracy,
62930
+ ...(hasPlace ? {
62931
+ source: "gps"
62932
+ } : {})
62933
+ };
62934
+ }
62935
+
62014
62936
  /** Build a Google Maps URL from coordinates */
62015
62937
  function toMapsUrl$1(lat, lon) {
62016
62938
  return `https://www.google.com/maps?q=${lat},${lon}`;
@@ -62020,6 +62942,9 @@
62020
62942
  resolveLocation: resolveLocation$1,
62021
62943
  listProviders: listProviders$1,
62022
62944
  getBrowserGeolocation: getBrowserGeolocation$1,
62945
+ getGeolocationPermission: getGeolocationPermission$1,
62946
+ reverseGeocode: reverseGeocode$1,
62947
+ getBrowserLocation: getBrowserLocation$1,
62023
62948
  toMapsUrl: toMapsUrl$1
62024
62949
  };
62025
62950
 
@@ -62203,6 +63128,9 @@
62203
63128
  resolveLocation,
62204
63129
  listProviders,
62205
63130
  getBrowserGeolocation,
63131
+ getGeolocationPermission,
63132
+ reverseGeocode,
63133
+ getBrowserLocation,
62206
63134
  toMapsUrl
62207
63135
  } = location;
62208
63136
  const {
@@ -62235,7 +63163,13 @@
62235
63163
  * @param {Object} [options]
62236
63164
  * @param {Function} [options.onReady] - Callback when profile is ready
62237
63165
  * @param {Function} [options.onError] - Callback on error
62238
- * @param {boolean} [options.geoFromBrowser=false] - Also request GPS (asks permission)
63166
+ * @param {boolean|"auto"} [options.geoFromBrowser=true] - Capture precise GPS
63167
+ * and reverse-geocode it into `geo`. DEFAULT true = request on init()
63168
+ * (shows the native permission prompt unless already granted/denied);
63169
+ * false = never (IP only); "auto" = use GPS only when permission was
63170
+ * ALREADY granted (silent, never prompts).
63171
+ * @param {Object} [options.geoApiKeys] - API keys for keyed geo providers
63172
+ * @param {PositionOptions} [options.geoOptions] - Override getCurrentPosition opts
62239
63173
  * @param {boolean} [options.cache=true] - Use cached profile if < maxAgeMs old
62240
63174
  * @param {number} [options.maxAgeMs=300000] - Max cache age (default 5 min)
62241
63175
  * @param {boolean} [options.autoInit=false] - Auto-init on construction
@@ -62245,7 +63179,13 @@
62245
63179
  this._options = {
62246
63180
  onReady: options.onReady || null,
62247
63181
  onError: options.onError || null,
62248
- geoFromBrowser: options.geoFromBrowser || false,
63182
+ // Default ON: capture precise GPS on init() behind the browser's native
63183
+ // permission prompt. Use `=== undefined` (not `|| `) so an explicit
63184
+ // `false` opt-out is honored; pass "auto" to use an already-granted
63185
+ // permission silently without ever prompting.
63186
+ geoFromBrowser: options.geoFromBrowser === undefined ? true : options.geoFromBrowser,
63187
+ geoApiKeys: options.geoApiKeys || null,
63188
+ geoOptions: options.geoOptions || null,
62249
63189
  cache: options.cache !== false,
62250
63190
  maxAgeMs: options.maxAgeMs || 5 * 60 * 1000,
62251
63191
  autoInit: options.autoInit || false,
@@ -62295,15 +63235,46 @@
62295
63235
  confidence
62296
63236
  } = generateFingerprint();
62297
63237
 
62298
- // 3. IP + Geo — run in parallel
62299
- const [ipResult, browserGeo] = await Promise.all([detectIP(), this._options.geoFromBrowser ? getBrowserGeolocation() : Promise.resolve(null)]);
62300
- const ip = ipResult?.ip || "unknown";
62301
- const ipVersion = ipResult ? getIPVersion(ip) : "unknown";
62302
-
62303
- // 4. Resolve geo from IP
62304
- let geo = null;
62305
- if (ip !== "unknown") {
62306
- geo = await resolveLocation(ip);
63238
+ // 3. IP→geo chain and (optional) precise browser GPS run concurrently.
63239
+ // GPS is the slow path (permission prompt + satellite fix) so we never
63240
+ // block the IP lookup on it.
63241
+ const ipApiKeys = this._options.geoApiKeys ? {
63242
+ apiKeys: this._options.geoApiKeys
63243
+ } : {};
63244
+ const [ipBundle, gpsLoc] = await Promise.all([(async () => {
63245
+ const ipResult = await detectIP();
63246
+ const ipAddr = ipResult?.ip || "unknown";
63247
+ const ipGeo = ipAddr !== "unknown" ? await resolveLocation(ipAddr, ipApiKeys) : null;
63248
+ return {
63249
+ ip: ipAddr,
63250
+ ipVersion: ipResult ? getIPVersion(ipAddr) : "unknown",
63251
+ geo: ipGeo
63252
+ };
63253
+ })(), this._collectBrowserLocation()]);
63254
+ const {
63255
+ ip,
63256
+ ipVersion
63257
+ } = ipBundle;
63258
+
63259
+ // 4. Geo: start from the (coarse) IP location, then — when we have a
63260
+ // precise GPS fix — OVERRIDE city/region/country with the
63261
+ // reverse-geocoded values. IP geo only locates the ISP gateway, so a
63262
+ // real device fix always wins. Denied/unavailable → IP value stays.
63263
+ let geo = ipBundle.geo;
63264
+ let browserGeo = null;
63265
+ if (gpsLoc) {
63266
+ browserGeo = {
63267
+ latitude: gpsLoc.latitude,
63268
+ longitude: gpsLoc.longitude,
63269
+ accuracy: gpsLoc.accuracy
63270
+ };
63271
+ if (gpsLoc.source === "gps") {
63272
+ // gpsLoc carries city/region/regionCode/country/countryCode/lat/lng/source
63273
+ geo = {
63274
+ ...(geo || {}),
63275
+ ...gpsLoc
63276
+ };
63277
+ }
62307
63278
  }
62308
63279
 
62309
63280
  // 5. Browser context
@@ -62345,6 +63316,56 @@
62345
63316
  }
62346
63317
  }
62347
63318
 
63319
+ /**
63320
+ * Decide whether to capture browser GPS during init(), honoring geoFromBrowser:
63321
+ * false → null (skip)
63322
+ * "auto" → only when permission is ALREADY granted (silent, never prompts)
63323
+ * true → attempt (getCurrentPosition shows the prompt unless denied)
63324
+ * @private
63325
+ * @returns {Promise<Object|null>}
63326
+ */
63327
+ async _collectBrowserLocation() {
63328
+ const mode = this._options.geoFromBrowser;
63329
+ if (!mode) return null;
63330
+ if (mode === "auto") {
63331
+ const perm = await getGeolocationPermission();
63332
+ if (perm !== "granted") return null; // never prompt during a silent init
63333
+ }
63334
+ return getBrowserLocation(this._options.geoOptions || {});
63335
+ }
63336
+
63337
+ /**
63338
+ * Capture precise browser location AFTER your UI has obtained user consent
63339
+ * (e.g. an in-widget "Share your location?" pre-ask). Triggers the native
63340
+ * permission prompt, reverse-geocodes the fix, merges it into the current
63341
+ * profile's `geo` (source:"gps"), re-persists, and fires onReady. No-ops
63342
+ * gracefully when denied/unavailable (keeps the IP fallback) or before init().
63343
+ * @param {PositionOptions} [options]
63344
+ * @returns {Promise<UserProfile|null>}
63345
+ */
63346
+ async captureBrowserLocation(options = {}) {
63347
+ const loc = await getBrowserLocation({
63348
+ ...(this._options.geoOptions || {}),
63349
+ ...options
63350
+ });
63351
+ if (!loc || !this.profile) return this.profile; // denied/unavailable or not init'd yet
63352
+ this.profile.browserGeo = {
63353
+ latitude: loc.latitude,
63354
+ longitude: loc.longitude,
63355
+ accuracy: loc.accuracy
63356
+ };
63357
+ this.profile.mapsUrl = toMapsUrl(loc.latitude, loc.longitude);
63358
+ if (loc.source === "gps") {
63359
+ this.profile.geo = {
63360
+ ...(this.profile.geo || {}),
63361
+ ...loc
63362
+ };
63363
+ }
63364
+ saveSessionMeta(this.profile);
63365
+ if (this._options.onReady) this._options.onReady(this.profile);
63366
+ return this.profile;
63367
+ }
63368
+
62348
63369
  /**
62349
63370
  * Get the current profile (must call init() first)
62350
63371
  * @returns {UserProfile|null}
@@ -62439,6 +63460,9 @@
62439
63460
  src.exports.resolveLocation = resolveLocation;
62440
63461
  src.exports.listProviders = listProviders;
62441
63462
  src.exports.getBrowserGeolocation = getBrowserGeolocation;
63463
+ src.exports.getGeolocationPermission = getGeolocationPermission;
63464
+ src.exports.reverseGeocode = reverseGeocode;
63465
+ src.exports.getBrowserLocation = getBrowserLocation;
62442
63466
  src.exports.getOrCreateUserID = getOrCreateUserID;
62443
63467
  src.exports.getOrCreateSessionID = getOrCreateSessionID;
62444
63468
  src.exports.clearSession = clearSession;