@pillar-ai/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +129 -0
  2. package/dist/actions/definitions/analytics.d.ts +18 -0
  3. package/dist/actions/definitions/content.d.ts +40 -0
  4. package/dist/actions/definitions/index.d.ts +26 -0
  5. package/dist/actions/definitions/navigation.d.ts +65 -0
  6. package/dist/actions/definitions/settings.d.ts +162 -0
  7. package/dist/actions/definitions/sources.d.ts +44 -0
  8. package/dist/actions/definitions/support.d.ts +15 -0
  9. package/dist/actions/definitions/team.d.ts +120 -0
  10. package/dist/actions/index.d.ts +33 -0
  11. package/dist/actions/registry.d.ts +110 -0
  12. package/dist/actions/types.d.ts +388 -0
  13. package/dist/api/client.d.ts +186 -0
  14. package/dist/api/mcp-client.d.ts +226 -0
  15. package/dist/button/FloatingButton.d.ts +44 -0
  16. package/dist/cli/sync.d.ts +2 -0
  17. package/dist/components/Button/EdgeTrigger.d.ts +78 -0
  18. package/dist/components/Button/FloatingButton.d.ts +46 -0
  19. package/dist/components/Button/index.d.ts +5 -0
  20. package/dist/components/Cards/ConfirmActionCard.d.ts +23 -0
  21. package/dist/components/Cards/index.d.ts +6 -0
  22. package/dist/components/Panel/ChatInput.d.ts +5 -0
  23. package/dist/components/Panel/ContextTag.d.ts +18 -0
  24. package/dist/components/Panel/Header.d.ts +14 -0
  25. package/dist/components/Panel/Panel.d.ts +104 -0
  26. package/dist/components/Panel/PanelContent.d.ts +6 -0
  27. package/dist/components/Panel/TaskButton.d.ts +59 -0
  28. package/dist/components/Panel/UnifiedChatInput.d.ts +23 -0
  29. package/dist/components/Panel/WorkflowChecklist.d.ts +9 -0
  30. package/dist/components/Panel/index.d.ts +13 -0
  31. package/dist/components/Panel/styles.d.ts +20 -0
  32. package/dist/components/Plan/InlinePlanView.d.ts +24 -0
  33. package/dist/components/Plan/PlanStepItem.d.ts +18 -0
  34. package/dist/components/Plan/PlanView.d.ts +10 -0
  35. package/dist/components/Plan/index.d.ts +8 -0
  36. package/dist/components/TextSelection/TextSelectionManager.d.ts +34 -0
  37. package/dist/components/TextSelection/TextSelectionPopover.d.ts +14 -0
  38. package/dist/components/TextSelection/index.d.ts +6 -0
  39. package/dist/components/TextSelection/styles.d.ts +5 -0
  40. package/dist/components/Tooltips/Tooltip.d.ts +46 -0
  41. package/dist/components/Tooltips/TooltipManager.d.ts +41 -0
  42. package/dist/components/Tooltips/index.d.ts +6 -0
  43. package/dist/components/Tooltips/styles.d.ts +5 -0
  44. package/dist/components/Views/ArticleChatView.d.ts +9 -0
  45. package/dist/components/Views/ArticleView.d.ts +10 -0
  46. package/dist/components/Views/CategoryView.d.ts +11 -0
  47. package/dist/components/Views/ChatView.d.ts +5 -0
  48. package/dist/components/Views/DeveloperView.d.ts +6 -0
  49. package/dist/components/Views/HomeView.d.ts +5 -0
  50. package/dist/components/Views/SearchView.d.ts +10 -0
  51. package/dist/components/Views/index.d.ts +5 -0
  52. package/dist/components/context.d.ts +21 -0
  53. package/dist/components/index.d.ts +9 -0
  54. package/dist/components/shared/ArticleCard.d.ts +17 -0
  55. package/dist/components/shared/CategoryCard.d.ts +17 -0
  56. package/dist/components/shared/Empty.d.ts +11 -0
  57. package/dist/components/shared/Loading.d.ts +6 -0
  58. package/dist/components/shared/MessageInputArea.d.ts +19 -0
  59. package/dist/components/shared/QuestionChip.d.ts +14 -0
  60. package/dist/components/shared/index.d.ts +7 -0
  61. package/dist/content/extensions/AccordionNode.d.ts +10 -0
  62. package/dist/content/extensions/CalloutNode.d.ts +11 -0
  63. package/dist/content/extensions/index.d.ts +5 -0
  64. package/dist/content/index.d.ts +5 -0
  65. package/dist/content/renderer.d.ts +24 -0
  66. package/dist/core/Pillar.d.ts +454 -0
  67. package/dist/core/config.d.ts +253 -0
  68. package/dist/core/context.d.ts +71 -0
  69. package/dist/core/events.d.ts +228 -0
  70. package/dist/core/plan-executor.d.ts +101 -0
  71. package/dist/core/plan.d.ts +155 -0
  72. package/dist/core/workflow.d.ts +89 -0
  73. package/dist/index.d.ts +32 -0
  74. package/dist/panel/Panel.d.ts +53 -0
  75. package/dist/panel/PanelUI.d.ts +43 -0
  76. package/dist/panel/components/ArticleCard.d.ts +10 -0
  77. package/dist/panel/components/CategoryCard.d.ts +10 -0
  78. package/dist/panel/components/ChatInput.d.ts +36 -0
  79. package/dist/panel/components/Header.d.ts +16 -0
  80. package/dist/panel/components/SearchInput.d.ts +11 -0
  81. package/dist/panel/styles.d.ts +5 -0
  82. package/dist/panel/views/ArticleView.d.ts +21 -0
  83. package/dist/panel/views/CategoryView.d.ts +20 -0
  84. package/dist/panel/views/ChatView.d.ts +30 -0
  85. package/dist/panel/views/HomeView.d.ts +18 -0
  86. package/dist/panel/views/SearchView.d.ts +22 -0
  87. package/dist/pillar.esm.js +10338 -0
  88. package/dist/pillar.esm.js.map +1 -0
  89. package/dist/pillar.js +10362 -0
  90. package/dist/pillar.js.map +1 -0
  91. package/dist/pillar.min.js +2 -0
  92. package/dist/pillar.min.js.map +1 -0
  93. package/dist/store/chat.d.ts +85 -0
  94. package/dist/store/context.d.ts +46 -0
  95. package/dist/store/developer.d.ts +19 -0
  96. package/dist/store/index.d.ts +10 -0
  97. package/dist/store/panel.d.ts +43 -0
  98. package/dist/store/plan-persistence.d.ts +47 -0
  99. package/dist/store/plan.d.ts +45 -0
  100. package/dist/store/router.d.ts +18 -0
  101. package/dist/store/tooltips.d.ts +21 -0
  102. package/dist/store/workflow.d.ts +48 -0
  103. package/dist/tooltips/Tooltip.d.ts +63 -0
  104. package/dist/tooltips/TooltipManager.d.ts +42 -0
  105. package/dist/tooltips/styles.d.ts +5 -0
  106. package/dist/types/index.d.ts +4 -0
  107. package/dist/types/user-context.d.ts +29 -0
  108. package/dist/utils/dom.d.ts +46 -0
  109. package/dist/utils/markdown.d.ts +9 -0
  110. package/dist/utils/positioning.d.ts +52 -0
  111. package/dist/utils/urlParams.d.ts +27 -0
  112. package/package.json +86 -0
  113. package/src/actions/types.ts +468 -0
  114. package/src/cli/sync.ts +477 -0
@@ -0,0 +1,2 @@
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).Pillar={})}(this,function(e){"use strict";const n={actions:new Map,clientInfo:null};function t(e,t){n.clientInfo={platform:e,version:t}}function i(e){return n.actions.get(e)}function r(e){return n.actions.has(e)}class a{constructor(e){this.requestId=0,this.config=e}get baseUrl(){return`${this.config.apiBaseUrl}/mcp/`}get headers(){const e={"Content-Type":"application/json","X-Pillar-Key":this.config.publicKey,"x-customer-id":this.config.helpCenter};return this.config.platform&&(e["X-Pillar-Platform"]=this.config.platform),this.config.version&&(e["X-Pillar-Action-Version"]=this.config.version),e}nextId(){return++this.requestId}async callTool(e,n){const t={jsonrpc:"2.0",id:this.nextId(),method:"tools/call",params:{name:e,arguments:n}},i=await fetch(this.baseUrl,{method:"POST",headers:this.headers,body:JSON.stringify(t)});if(!i.ok){const e=await i.json().catch(()=>({}));throw new Error(e.error?.message||`MCP error: ${i.status}`)}const r=await i.json();if(r.error)throw new Error(r.error.message);return r.result}async callToolStream(e,n,t,i){const r=this.nextId(),a={jsonrpc:"2.0",id:r,method:"tools/call",params:{name:e,arguments:n,stream:!0}},l=await fetch(this.baseUrl,{method:"POST",headers:{...this.headers,Accept:"text/event-stream"},body:JSON.stringify(a),signal:i});if(!l.ok){const e=await l.text();throw new Error(`MCP streaming request failed: ${l.statusText} - ${e}`)}if(!l.body)throw new Error("Response body is null");const o=l.body.getReader(),s=new TextDecoder;let p="",c=[],d=null;try{for(;;){const{done:e,value:n}=await o.read();if(e)break;p+=s.decode(n,{stream:!0});const i=p.split("\n");p=i.pop()||"";for(const e of i)if(e.trim()&&e.startsWith("data: "))try{const n=e.substring(6),i=JSON.parse(n);if("2.0"===i.jsonrpc){if(i.error)throw t.onError?.(i.error.message||"Unknown error"),new Error(i.error.message);if("notifications/progress"===i.method){const e=i.params?.progress;if(e)if("token"===e.kind&&e.token)c.push(e.token),t.onToken?.(e.token);else if("plan_created"===e.kind&&e.plan)t.onPlan?.(e.plan);else{if("cancelled"===e.kind)break;t.onProgress?.(e)}}if(i.result&&i.id===r){d=i.result,d.structuredContent?.sources&&t.onSources?.(d.structuredContent.sources),d.structuredContent?.actions&&t.onActions?.(d.structuredContent.actions),d.structuredContent?.plan&&t.onPlan?.(d.structuredContent.plan);const e=d._meta?.conversation_id,n=d._meta?.query_log_id;t.onComplete?.(e,n)}}}catch(n){console.error("[MCPClient] Failed to parse event:",n,e)}}}catch(e){if("AbortError"===e.name)throw e;throw t.onError?.(e instanceof Error?e.message:"Stream reading failed"),e}finally{o.releaseLock()}return d||(d={content:[{type:"text",text:c.join("")}],isError:!1}),d}async uploadImage(e){const n=`${this.config.apiBaseUrl}/mcp/upload-image/`,t=new FormData;t.append("image",e);const i=await fetch(n,{method:"POST",headers:{"x-customer-id":this.config.helpCenter},body:t});if(!i.ok){const e=await i.json().catch(()=>({error:"Upload failed"}));throw new Error(e.error||"Upload failed")}return i.json()}async ask(e,n,t){const i={query:e};return t?.articleSlug&&(i.article_slug=t.articleSlug),t?.userContext&&t.userContext.length>0&&(i.user_context=t.userContext),t?.images&&t.images.length>0&&(i.images=t.images),this.callToolStream("ask",i,n,t?.signal)}async continuePlan(e,n,t){return await this.callTool("plans/continue",{plan_id:e,step_id:n,result:t})}async cancelPlan(e){return await this.callTool("plans/cancel",{plan_id:e})}async getPlan(e){return await this.callTool("plans/get",{plan_id:e})}async startPlan(e){return await this.callTool("plans/start",{plan_id:e})}async retryStep(e,n){return await this.callTool("plans/retry-step",{plan_id:e,step_id:n})}async failStep(e,n,t){return await this.callTool("plans/fail-step",{plan_id:e,step_id:n,error_message:t||""})}async skipStep(e,n){return await this.callTool("plans/skip-step",{plan_id:e,step_id:n})}sendActionResult(e,n){const t={jsonrpc:"2.0",id:this.nextId(),method:"action/result",params:{action_name:e,result:n}};fetch(this.baseUrl,{method:"POST",headers:this.headers,body:JSON.stringify(t)}).catch(e=>{console.error("[MCPClient] Failed to send action result:",e)})}}function l(e){return{id:e.id,name:e.name,taskType:e.action_type,data:e.data,autoRun:e.auto_run,autoComplete:e.auto_complete}}class o{constructor(e){this.abortControllers=new Map,this.config=e,this.mcpClient=new a(e)}get baseUrl(){return`${this.config.apiBaseUrl}/api/v1/help-center`}getVisitorId(){if("undefined"==typeof window)return"";const e="pillar_visitor_id";try{let n=localStorage.getItem(e);return n||(n=crypto.randomUUID(),localStorage.setItem(e,n)),n}catch{return""}}getSessionId(){if("undefined"==typeof window)return"";const e="pillar_session_id";try{let n=sessionStorage.getItem(e);return n||(n=crypto.randomUUID(),sessionStorage.setItem(e,n)),n}catch{return""}}getPageUrl(){return"undefined"==typeof window?"":window.location.href}get headers(){const e={"Content-Type":"application/json","X-Pillar-Key":this.config.publicKey,"x-customer-id":this.config.helpCenter,"x-visitor-id":this.getVisitorId(),"x-session-id":this.getSessionId(),"x-page-url":this.getPageUrl()};return this.config.platform&&(e["X-Pillar-Platform"]=this.config.platform),this.config.version&&(e["X-Pillar-Action-Version"]=this.config.version),e}async fetch(e,n={},t){if(t){this.abortControllers.get(t)?.abort();const e=new AbortController;this.abortControllers.set(t,e),n.signal=e.signal}const i=`${this.baseUrl}${e}`;try{const e=await fetch(i,{...n,headers:{...this.headers,...n.headers}});if(!e.ok){const n=await e.json().catch(()=>({}));throw new Error(n.detail||n.message||`API error: ${e.status}`)}return e.json()}catch(n){if("AbortError"===n.name)throw n;throw console.error(`[Pillar API] Error fetching ${e}:`,n),n}finally{t&&this.abortControllers.delete(t)}}async fetchEmbedConfig(){try{const e=await fetch(`${this.config.apiBaseUrl}/api/public/products/${this.config.helpCenter}/embed-config/`,{method:"GET",headers:{"Content-Type":"application/json","X-Pillar-Key":this.config.publicKey}});return e.ok?await e.json():(console.warn("[Pillar] Failed to fetch embed config:",e.status),null)}catch(e){return console.warn("[Pillar] Failed to fetch embed config:",e),null}}async getTooltips(e){const n=e?.length?`?ids=${e.join(",")}`:"";return this.fetch(`/sdk/tooltips/${n}`)}async getSuggestedQuestions(){try{const e=await this.mcpClient.callTool("suggest_questions",{}),n=e.structuredContent?.questions;return Array.isArray(n)?n:[]}catch(e){return console.warn("[Pillar] Failed to get suggested questions:",e),[]}}async uploadImage(e){return this.mcpClient.uploadImage(e)}async chat(e,n=[],t,i,r,a,o,s,p,c){let d="",u=[],h=[];try{const n=await this.mcpClient.ask(e,{onToken:e=>{d+=e,t?.(e)},onSources:e=>{u=e},onActions:e=>{h=e.map(l),a?.(h)},onPlan:e=>{o?.(e)},onProgress:e=>{c?.(e)},onError:e=>{console.error("[Pillar API] MCP chat error:",e)}},{articleSlug:i,userContext:s,images:p});d||"text"!==n.content[0]?.type||(d=n.content[0].text||"");const r=n._meta||{};return{message:d,sources:u,actions:h,conversationId:r.conversation_id,messageId:r.query_log_id}}catch(e){throw console.error("[Pillar API] Chat error:",e),e}}async chatLegacy(e,n=[],t,i,r){const a=`${this.baseUrl}/ai/chat/`,l=await fetch(a,{method:"POST",headers:this.headers,body:JSON.stringify({message:e,history:n,context:this.config.context,...i&&{article_slug:i},...r&&{conversation_id:r}})});if(!l.ok){const e=await l.json().catch(()=>({}));throw new Error(e.detail||e.message||`Chat error: ${l.status}`)}if(t&&l.headers.get("content-type")?.includes("text/event-stream"))return this.handleStreamingChat(l,t);const o=await l.json();return{message:o.answer||o.message,sources:o.sources,workflow:o.workflow||o.structuredContent?.workflow,conversationId:o.conversation_id,messageId:o.message_id}}async handleStreamingChat(e,n){const t=e.body?.getReader();if(!t)throw new Error("No response body");const i=new TextDecoder;let r,a,l,o="",s=[];try{for(;;){const{done:e,value:p}=await t.read();if(e)break;const c=i.decode(p,{stream:!0}).split("\n");for(const e of c)if(e.startsWith("data: ")){const t=e.slice(6);if("[DONE]"===t)continue;try{const e=JSON.parse(t);e.content&&(o+=e.content,n(e.content)),e.sources&&(s=e.sources),e.workflow&&(r=e.workflow),e.structuredContent?.workflow&&(r=e.structuredContent.workflow),e.conversation_id&&(a=e.conversation_id),e.message_id&&(l=e.message_id)}catch{o+=t,n(t)}}}}finally{t.releaseLock()}return{message:o,sources:s,workflow:r,conversationId:a,messageId:l}}async submitFeedback(e,n,t){try{await this.fetch("/ai/feedback/",{method:"POST",body:JSON.stringify({message_id:e,feedback:n,...t&&{comment:t}})})}catch(e){console.warn("[Pillar] Feedback submission failed:",e)}}async confirmTaskExecution(e,n,t){try{const i={status:n,error:t?.error,duration_ms:t?.duration_ms,session_id:t?.session_id,conversation_id:t?.conversation_id,metadata:t};await this.fetch(`/tasks/${e}/confirm/`,{method:"POST",body:JSON.stringify(i)})}catch(e){console.warn("[Pillar] Failed to confirm task execution:",e)}}async getSuggestions(e,n){try{return(await this.fetch("/suggestions/",{method:"POST",body:JSON.stringify({context:e,user_profile:n})})).suggestions||[]}catch(e){return console.warn("[Pillar] Failed to get suggestions:",e),[]}}async chatWithContext(e,n=[],t,i,r,a,o){let s="",p=[],c=[];try{const n=await this.mcpClient.callToolStream("ask",{query:e,context:{product:t,user_profile:i},...a&&{conversation_id:a}},{onToken:e=>{s+=e,r?.(e)},onSources:e=>{p=e},onActions:e=>{c=e.map(l),o?.(c)},onError:e=>{console.error("[Pillar API] MCP chat with context error:",e)}});s||"text"!==n.content[0]?.type||(s=n.content[0].text||"");const d=n._meta||{};return{message:s,sources:p,actions:c,conversationId:d.conversation_id,messageId:d.query_log_id}}catch(e){throw console.error("[Pillar API] Chat with context error:",e),e}}cancelAllRequests(){this.abortControllers.forEach(e=>e.abort()),this.abortControllers.clear()}}var s,p,c,d,u,h,f,g,_,m,v,b,x,y={},w=[],k=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,S=Array.isArray;function C(e,n){for(var t in n)e[t]=n[t];return e}function P(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function E(e,n,t,i,r){var a={type:e,props:n,key:t,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==r?++c:r,__i:-1,__u:0};return null==r&&null!=p.vnode&&p.vnode(a),a}function T(e){return e.children}function $(e,n){this.props=e,this.context=n}function z(e,n){if(null==n)return e.__?z(e.__,e.__i+1):null;for(var t;n<e.__k.length;n++)if(null!=(t=e.__k[n])&&null!=t.__e)return t.__e;return"function"==typeof e.type?z(e):null}function M(e){var n,t;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,n=0;n<e.__k.length;n++)if(null!=(t=e.__k[n])&&null!=t.__e){e.__e=e.__c.base=t.__e;break}return M(e)}}function A(e){(!e.__d&&(e.__d=!0)&&u.push(e)&&!I.__r++||h!=p.debounceRendering)&&((h=p.debounceRendering)||f)(I)}function I(){for(var e,n,t,i,r,a,l,o=1;u.length;)u.length>o&&u.sort(g),e=u.shift(),o=u.length,e.__d&&(t=void 0,i=void 0,r=(i=(n=e).__v).__e,a=[],l=[],n.__P&&((t=C({},i)).__v=i.__v+1,p.vnode&&p.vnode(t),q(n.__P,t,i,n.__n,n.__P.namespaceURI,32&i.__u?[r]:null,a,null==r?z(i):r,!!(32&i.__u),l),t.__v=i.__v,t.__.__k[t.__i]=t,N(a,t,l),i.__e=i.__=null,t.__e!=r&&M(t)));I.__r=0}function R(e,n,t,i,r,a,l,o,s,p,c){var d,u,h,f,g,_,m,v=i&&i.__k||w,b=n.length;for(s=function(e,n,t,i,r){var a,l,o,s,p,c=t.length,d=c,u=0;for(e.__k=new Array(r),a=0;a<r;a++)null!=(l=n[a])&&"boolean"!=typeof l&&"function"!=typeof l?("string"==typeof l||"number"==typeof l||"bigint"==typeof l||l.constructor==String?l=e.__k[a]=E(null,l,null,null,null):S(l)?l=e.__k[a]=E(T,{children:l},null,null,null):void 0===l.constructor&&l.__b>0?l=e.__k[a]=E(l.type,l.props,l.key,l.ref?l.ref:null,l.__v):e.__k[a]=l,s=a+u,l.__=e,l.__b=e.__b+1,o=null,-1!=(p=l.__i=B(l,t,s,d))&&(d--,(o=t[p])&&(o.__u|=2)),null==o||null==o.__v?(-1==p&&(r>c?u--:r<c&&u++),"function"!=typeof l.type&&(l.__u|=4)):p!=s&&(p==s-1?u--:p==s+1?u++:(p>s?u--:u++,l.__u|=4))):e.__k[a]=null;if(d)for(a=0;a<c;a++)null!=(o=t[a])&&!(2&o.__u)&&(o.__e==i&&(i=z(o)),W(o,o));return i}(t,n,v,s,b),d=0;d<b;d++)null!=(h=t.__k[d])&&(u=-1==h.__i?y:v[h.__i]||y,h.__i=d,_=q(e,h,u,r,a,l,o,s,p,c),f=h.__e,h.ref&&u.ref!=h.ref&&(u.ref&&F(u.ref,null,h),c.push(h.ref,h.__c||f,h)),null==g&&null!=f&&(g=f),(m=!!(4&h.__u))||u.__k===h.__k?s=L(h,s,e,m):"function"==typeof h.type&&void 0!==_?s=_:f&&(s=f.nextSibling),h.__u&=-7);return t.__e=g,s}function L(e,n,t,i){var r,a;if("function"==typeof e.type){for(r=e.__k,a=0;r&&a<r.length;a++)r[a]&&(r[a].__=e,n=L(r[a],n,t,i));return n}e.__e!=n&&(i&&(n&&e.type&&!n.parentNode&&(n=z(e)),t.insertBefore(e.__e,n||null)),n=e.__e);do{n=n&&n.nextSibling}while(null!=n&&8==n.nodeType);return n}function B(e,n,t,i){var r,a,l,o=e.key,s=e.type,p=n[t],c=null!=p&&!(2&p.__u);if(null===p&&null==o||c&&o==p.key&&s==p.type)return t;if(i>(c?1:0))for(r=t-1,a=t+1;r>=0||a<n.length;)if(null!=(p=n[l=r>=0?r--:a++])&&!(2&p.__u)&&o==p.key&&s==p.type)return l;return-1}function j(e,n,t){"-"==n[0]?e.setProperty(n,null==t?"":t):e[n]=null==t?"":"number"!=typeof t||k.test(n)?t:t+"px"}function H(e,n,t,i,r){var a,l;e:if("style"==n)if("string"==typeof t)e.style.cssText=t;else{if("string"==typeof i&&(e.style.cssText=i=""),i)for(n in i)t&&n in t||j(e.style,n,"");if(t)for(n in t)i&&t[n]==i[n]||j(e.style,n,t[n])}else if("o"==n[0]&&"n"==n[1])a=n!=(n=n.replace(_,"$1")),l=n.toLowerCase(),n=l in e||"onFocusOut"==n||"onFocusIn"==n?l.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+a]=t,t?i?t.u=i.u:(t.u=m,e.addEventListener(n,a?b:v,a)):e.removeEventListener(n,a?b:v,a);else{if("http://www.w3.org/2000/svg"==r)n=n.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!=n&&"height"!=n&&"href"!=n&&"list"!=n&&"form"!=n&&"tabIndex"!=n&&"download"!=n&&"rowSpan"!=n&&"colSpan"!=n&&"role"!=n&&"popover"!=n&&n in e)try{e[n]=null==t?"":t;break e}catch(e){}"function"==typeof t||(null==t||!1===t&&"-"!=n[4]?e.removeAttribute(n):e.setAttribute(n,"popover"==n&&1==t?"":t))}}function D(e){return function(n){if(this.l){var t=this.l[n.type+e];if(null==n.t)n.t=m++;else if(n.t<t.u)return;return t(p.event?p.event(n):n)}}}function q(e,n,t,i,r,a,l,o,c,d){var u,h,f,g,_,m,v,b,x,w,k,E,M,A,I,L,B,j=n.type;if(void 0!==n.constructor)return null;128&t.__u&&(c=!!(32&t.__u),a=[o=n.__e=t.__e]),(u=p.__b)&&u(n);e:if("function"==typeof j)try{if(b=n.props,x="prototype"in j&&j.prototype.render,w=(u=j.contextType)&&i[u.__c],k=u?w?w.props.value:u.__:i,t.__c?v=(h=n.__c=t.__c).__=h.__E:(x?n.__c=h=new j(b,k):(n.__c=h=new $(b,k),h.constructor=j,h.render=V),w&&w.sub(h),h.state||(h.state={}),h.__n=i,f=h.__d=!0,h.__h=[],h._sb=[]),x&&null==h.__s&&(h.__s=h.state),x&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=C({},h.__s)),C(h.__s,j.getDerivedStateFromProps(b,h.__s))),g=h.props,_=h.state,h.__v=n,f)x&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),x&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(x&&null==j.getDerivedStateFromProps&&b!==g&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,k),n.__v==t.__v||!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,k)){for(n.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),n.__e=t.__e,n.__k=t.__k,n.__k.some(function(e){e&&(e.__=n)}),E=0;E<h._sb.length;E++)h.__h.push(h._sb[E]);h._sb=[],h.__h.length&&l.push(h);break e}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,k),x&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(g,_,m)})}if(h.context=k,h.props=b,h.__P=e,h.__e=!1,M=p.__r,A=0,x){for(h.state=h.__s,h.__d=!1,M&&M(n),u=h.render(h.props,h.state,h.context),I=0;I<h._sb.length;I++)h.__h.push(h._sb[I]);h._sb=[]}else do{h.__d=!1,M&&M(n),u=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=C(C({},i),h.getChildContext())),x&&!f&&null!=h.getSnapshotBeforeUpdate&&(m=h.getSnapshotBeforeUpdate(g,_)),L=u,null!=u&&u.type===T&&null==u.key&&(L=U(u.props.children)),o=R(e,S(L)?L:[L],n,t,i,r,a,l,o,c,d),h.base=n.__e,n.__u&=-161,h.__h.length&&l.push(h),v&&(h.__E=h.__=null)}catch(e){if(n.__v=null,c||null!=a)if(e.then){for(n.__u|=c?160:128;o&&8==o.nodeType&&o.nextSibling;)o=o.nextSibling;a[a.indexOf(o)]=null,n.__e=o}else{for(B=a.length;B--;)P(a[B]);O(n)}else n.__e=t.__e,n.__k=t.__k,e.then||O(n);p.__e(e,n,t)}else null==a&&n.__v==t.__v?(n.__k=t.__k,n.__e=t.__e):o=n.__e=function(e,n,t,i,r,a,l,o,c){var d,u,h,f,g,_,m,v=t.props||y,b=n.props,x=n.type;if("svg"==x?r="http://www.w3.org/2000/svg":"math"==x?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),null!=a)for(d=0;d<a.length;d++)if((g=a[d])&&"setAttribute"in g==!!x&&(x?g.localName==x:3==g.nodeType)){e=g,a[d]=null;break}if(null==e){if(null==x)return document.createTextNode(b);e=document.createElementNS(r,x,b.is&&b),o&&(p.__m&&p.__m(n,a),o=!1),a=null}if(null==x)v===b||o&&e.data==b||(e.data=b);else{if(a=a&&s.call(e.childNodes),!o&&null!=a)for(v={},d=0;d<e.attributes.length;d++)v[(g=e.attributes[d]).name]=g.value;for(d in v)if(g=v[d],"children"==d);else if("dangerouslySetInnerHTML"==d)h=g;else if(!(d in b)){if("value"==d&&"defaultValue"in b||"checked"==d&&"defaultChecked"in b)continue;H(e,d,null,g,r)}for(d in b)g=b[d],"children"==d?f=g:"dangerouslySetInnerHTML"==d?u=g:"value"==d?_=g:"checked"==d?m=g:o&&"function"!=typeof g||v[d]===g||H(e,d,g,v[d],r);if(u)o||h&&(u.__html==h.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),n.__k=[];else if(h&&(e.innerHTML=""),R("template"==n.type?e.content:e,S(f)?f:[f],n,t,i,"foreignObject"==x?"http://www.w3.org/1999/xhtml":r,a,l,a?a[0]:t.__k&&z(t,0),o,c),null!=a)for(d=a.length;d--;)P(a[d]);o||(d="value","progress"==x&&null==_?e.removeAttribute("value"):null!=_&&(_!==e[d]||"progress"==x&&!_||"option"==x&&_!=v[d])&&H(e,d,_,v[d],r),d="checked",null!=m&&m!=e[d]&&H(e,d,m,v[d],r))}return e}(t.__e,n,t,i,r,a,l,c,d);return(u=p.diffed)&&u(n),128&n.__u?void 0:o}function O(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(O)}function N(e,n,t){for(var i=0;i<t.length;i++)F(t[i],t[++i],t[++i]);p.__c&&p.__c(n,e),e.some(function(n){try{e=n.__h,n.__h=[],e.some(function(e){e.call(n)})}catch(e){p.__e(e,n.__v)}})}function U(e){return"object"!=typeof e||null==e||e.__b&&e.__b>0?e:S(e)?e.map(U):C({},e)}function F(e,n,t){try{if("function"==typeof e){var i="function"==typeof e.__u;i&&e.__u(),i&&null==n||(e.__u=e(n))}else e.current=n}catch(e){p.__e(e,t)}}function W(e,n,t){var i,r;if(p.unmount&&p.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||F(i,null,n)),null!=(i=e.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){p.__e(e,n)}i.base=i.__P=null}if(i=e.__k)for(r=0;r<i.length;r++)i[r]&&W(i[r],n,t||"function"!=typeof e.type);t||P(e.__e),e.__c=e.__=e.__e=void 0}function V(e,n,t){return this.constructor(e,t)}function K(e,n,t){var i,r,a;n==document&&(n=document.documentElement),p.__&&p.__(e,n),i=!1?null:n.__k,r=[],a=[],q(n,e=n.__k=function(e,n,t){var i,r,a,l={};for(a in n)"key"==a?i=n[a]:"ref"==a?r=n[a]:l[a]=n[a];if(arguments.length>2&&(l.children=arguments.length>3?s.call(arguments,2):t),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===l[a]&&(l[a]=e.defaultProps[a]);return E(e,l,i,r,null)}(T,null,[e]),i||y,y,n.namespaceURI,i?null:n.firstChild?s.call(n.childNodes):null,r,i?i.__e:n.firstChild,false,a),N(r,e,a)}s=w.slice,p={__e:function(e,n,t,i){for(var r,a,l;n=n.__;)if((r=n.__c)&&!r.__)try{if((a=r.constructor)&&null!=a.getDerivedStateFromError&&(r.setState(a.getDerivedStateFromError(e)),l=r.__d),null!=r.componentDidCatch&&(r.componentDidCatch(e,i||{}),l=r.__d),l)return r.__E=r}catch(n){e=n}throw e}},c=0,d=function(e){return null!=e&&void 0===e.constructor},$.prototype.setState=function(e,n){var t;t=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=C({},this.state),"function"==typeof e&&(e=e(C({},t),this.props)),e&&C(t,e),null!=e&&this.__v&&(n&&this._sb.push(n),A(this))},$.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),A(this))},$.prototype.render=T,u=[],f="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g=function(e,n){return e.__v.__b-n.__v.__b},I.__r=0,_=/(PointerCapture)$|Capture$/i,m=0,v=D(!1),b=D(!0),x=0;var Z=0;function X(e,n,t,i,r,a){n||(n={});var l,o,s=n;if("ref"in s)for(o in s={},n)"ref"==o?l=n[o]:s[o]=n[o];var c={type:e,props:s,key:t,ref:l,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Z,__i:-1,__u:0,__source:r,__self:a};if("function"==typeof e&&(l=e.defaultProps))for(o in l)void 0===s[o]&&(s[o]=l[o]);return p.vnode&&p.vnode(c),c}var Q,G,Y,J,ee=0,ne=[],te=p,ie=te.__b,re=te.__r,ae=te.diffed,le=te.__c,oe=te.unmount,se=te.__;function pe(e,n){te.__h&&te.__h(G,e,ee||n),ee=0;var t=G.__H||(G.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({}),t.__[e]}function ce(e){return ee=1,function(e,n){var t=pe(Q++,2);if(t.t=e,!t.__c&&(t.__=[ye(void 0,n),function(e){var n=t.__N?t.__N[0]:t.__[0],i=t.t(n,e);n!==i&&(t.__N=[i,t.__[1]],t.__c.setState({}))}],t.__c=G,!G.__f)){var i=function(e,n,i){if(!t.__c.__H)return!0;var a=t.__c.__H.__.filter(function(e){return!!e.__c});if(a.every(function(e){return!e.__N}))return!r||r.call(this,e,n,i);var l=t.__c.props!==e;return a.forEach(function(e){if(e.__N){var n=e.__[0];e.__=e.__N,e.__N=void 0,n!==e.__[0]&&(l=!0)}}),r&&r.call(this,e,n,i)||l};G.__f=!0;var r=G.shouldComponentUpdate,a=G.componentWillUpdate;G.componentWillUpdate=function(e,n,t){if(this.__e){var l=r;r=void 0,i(e,n,t),r=l}a&&a.call(this,e,n,t)},G.shouldComponentUpdate=i}return t.__N||t.__}(ye,e)}function de(e,n){var t=pe(Q++,3);!te.__s&&xe(t.__H,n)&&(t.__=e,t.u=n,G.__H.__h.push(t))}function ue(e){return ee=5,he(function(){return{current:e}},[])}function he(e,n){var t=pe(Q++,7);return xe(t.__H,n)&&(t.__=e(),t.__H=n,t.__h=e),t.__}function fe(e,n){return ee=8,he(function(){return e},n)}function ge(){for(var e;e=ne.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ve),e.__H.__h.forEach(be),e.__H.__h=[]}catch(n){e.__H.__h=[],te.__e(n,e.__v)}}te.__b=function(e){G=null,ie&&ie(e)},te.__=function(e,n){e&&n.__k&&n.__k.__m&&(e.__m=n.__k.__m),se&&se(e,n)},te.__r=function(e){re&&re(e),Q=0;var n=(G=e.__c).__H;n&&(Y===G?(n.__h=[],G.__h=[],n.__.forEach(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(n.__h.forEach(ve),n.__h.forEach(be),n.__h=[],Q=0)),Y=G},te.diffed=function(e){ae&&ae(e);var n=e.__c;n&&n.__H&&(n.__H.__h.length&&(1!==ne.push(n)&&J===te.requestAnimationFrame||((J=te.requestAnimationFrame)||me)(ge)),n.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Y=G=null},te.__c=function(e,n){n.some(function(e){try{e.__h.forEach(ve),e.__h=e.__h.filter(function(e){return!e.__||be(e)})}catch(t){n.some(function(e){e.__h&&(e.__h=[])}),n=[],te.__e(t,e.__v)}}),le&&le(e,n)},te.unmount=function(e){oe&&oe(e);var n,t=e.__c;t&&t.__H&&(t.__H.__.forEach(function(e){try{ve(e)}catch(e){n=e}}),t.__H=void 0,n&&te.__e(n,t.__v))};var _e="function"==typeof requestAnimationFrame;function me(e){var n,t=function(){clearTimeout(i),_e&&cancelAnimationFrame(n),setTimeout(e)},i=setTimeout(t,35);_e&&(n=requestAnimationFrame(t))}function ve(e){var n=G,t=e.__c;"function"==typeof t&&(e.__c=void 0,t()),G=n}function be(e){var n=G;e.__c=e.__(),G=n}function xe(e,n){return!e||e.length!==n.length||n.some(function(n,t){return n!==e[t]})}function ye(e,n){return"function"==typeof n?n(e):n}var we=Symbol.for("preact-signals");function ke(){if(Te>1)Te--;else{for(var e,n=!1;void 0!==Ee;){var t=Ee;for(Ee=void 0,$e++;void 0!==t;){var i=t.o;if(t.o=void 0,t.f&=-3,!(8&t.f)&&Re(t))try{t.c()}catch(t){n||(e=t,n=!0)}t=i}}if($e=0,Te--,n)throw e}}var Se=void 0;function Ce(e){var n=Se;Se=void 0;try{return e()}finally{Se=n}}var Pe,Ee=void 0,Te=0,$e=0,ze=0;function Me(e){if(void 0!==Se){var n=e.n;if(void 0===n||n.t!==Se)return n={i:0,S:e,p:Se.s,n:void 0,t:Se,e:void 0,x:void 0,r:n},void 0!==Se.s&&(Se.s.n=n),Se.s=n,e.n=n,32&Se.f&&e.S(n),n;if(-1===n.i)return n.i=0,void 0!==n.n&&(n.n.p=n.p,void 0!==n.p&&(n.p.n=n.n),n.p=Se.s,n.n=void 0,Se.s.n=n,Se.s=n),n}}function Ae(e,n){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.W=null==n?void 0:n.watched,this.Z=null==n?void 0:n.unwatched,this.name=null==n?void 0:n.name}function Ie(e,n){return new Ae(e,n)}function Re(e){for(var n=e.s;void 0!==n;n=n.n)if(n.S.i!==n.i||!n.S.h()||n.S.i!==n.i)return!0;return!1}function Le(e){for(var n=e.s;void 0!==n;n=n.n){var t=n.S.n;if(void 0!==t&&(n.r=t),n.S.n=n,n.i=-1,void 0===n.n){e.s=n;break}}}function Be(e){for(var n=e.s,t=void 0;void 0!==n;){var i=n.p;-1===n.i?(n.S.U(n),void 0!==i&&(i.n=n.n),void 0!==n.n&&(n.n.p=i)):t=n,n.S.n=n.r,void 0!==n.r&&(n.r=void 0),n=i}e.s=t}function je(e,n){Ae.call(this,void 0),this.x=e,this.s=void 0,this.g=ze-1,this.f=4,this.W=null==n?void 0:n.watched,this.Z=null==n?void 0:n.unwatched,this.name=null==n?void 0:n.name}function He(e,n){return new je(e,n)}function De(e){var n=e.u;if(e.u=void 0,"function"==typeof n){Te++;var t=Se;Se=void 0;try{n()}catch(n){throw e.f&=-2,e.f|=8,qe(e),n}finally{Se=t,ke()}}}function qe(e){for(var n=e.s;void 0!==n;n=n.n)n.S.U(n);e.x=void 0,e.s=void 0,De(e)}function Oe(e){if(Se!==this)throw new Error("Out-of-order effect");Be(this),Se=e,this.f&=-2,8&this.f&&qe(this),ke()}function Ne(e,n){this.x=e,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32,this.name=null==n?void 0:n.name}function Ue(e,n){var t=new Ne(e,n);try{t.c()}catch(e){throw t.d(),e}var i=t.d.bind(t);return i[Symbol.dispose]=i,i}function Fe(e,n){p[e]=n.bind(null,p[e]||function(){})}function We(e){Pe&&Pe(),Pe=e&&e.S()}function Ve(e){var n=this,t=e.data,i=function(e){return he(function(){return Ie(e)},[])}(t);i.value=t;var r=he(function(){for(var e=n.__v;e=e.__;)if(e.__c){e.__c.__$f|=4;break}return n.__$u.c=function(){var e,t=n.__$u.S(),i=r.value;t(),d(i)||3!==(null==(e=n.base)?void 0:e.nodeType)?(n.__$f|=1,n.setState({})):n.base.data=i},He(function(){var e=i.value.value;return 0===e?0:!0===e?"":e||""})},[]);return r.value}function Ke(e,n,t,i){var r=n in e&&void 0===e.ownerSVGElement,a=Ie(t);return{o:function(e,n){a.value=e,i=n},d:Ue(function(){var t=a.value.value;i[n]!==t&&(i[n]=t,r?e[n]=t:t?e.setAttribute(n,t):e.removeAttribute(n))})}}Ae.prototype.brand=we,Ae.prototype.h=function(){return!0},Ae.prototype.S=function(e){var n=this,t=this.t;t!==e&&void 0===e.e&&(e.x=t,this.t=e,void 0!==t?t.e=e:Ce(function(){var e;null==(e=n.W)||e.call(n)}))},Ae.prototype.U=function(e){var n=this;if(void 0!==this.t){var t=e.e,i=e.x;void 0!==t&&(t.x=i,e.e=void 0),void 0!==i&&(i.e=t,e.x=void 0),e===this.t&&(this.t=i,void 0===i&&Ce(function(){var e;null==(e=n.Z)||e.call(n)}))}},Ae.prototype.subscribe=function(e){var n=this;return Ue(function(){var t=n.value,i=Se;Se=void 0;try{e(t)}finally{Se=i}},{name:"sub"})},Ae.prototype.valueOf=function(){return this.value},Ae.prototype.toString=function(){return this.value+""},Ae.prototype.toJSON=function(){return this.value},Ae.prototype.peek=function(){var e=Se;Se=void 0;try{return this.value}finally{Se=e}},Object.defineProperty(Ae.prototype,"value",{get:function(){var e=Me(this);return void 0!==e&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if($e>100)throw new Error("Cycle detected");this.v=e,this.i++,ze++,Te++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N()}finally{ke()}}}}),je.prototype=new Ae,je.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if(32==(36&this.f))return!0;if(this.f&=-5,this.g===ze)return!0;if(this.g=ze,this.f|=1,this.i>0&&!Re(this))return this.f&=-2,!0;var e=Se;try{Le(this),Se=this;var n=this.x();(16&this.f||this.v!==n||0===this.i)&&(this.v=n,this.f&=-17,this.i++)}catch(e){this.v=e,this.f|=16,this.i++}return Se=e,Be(this),this.f&=-2,!0},je.prototype.S=function(e){if(void 0===this.t){this.f|=36;for(var n=this.s;void 0!==n;n=n.n)n.S.S(n)}Ae.prototype.S.call(this,e)},je.prototype.U=function(e){if(void 0!==this.t&&(Ae.prototype.U.call(this,e),void 0===this.t)){this.f&=-33;for(var n=this.s;void 0!==n;n=n.n)n.S.U(n)}},je.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;void 0!==e;e=e.x)e.t.N()}},Object.defineProperty(je.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var e=Me(this);if(this.h(),void 0!==e&&(e.i=this.i),16&this.f)throw this.v;return this.v}}),Ne.prototype.c=function(){var e=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var n=this.x();"function"==typeof n&&(this.u=n)}finally{e()}},Ne.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,De(this),Le(this),Te++;var e=Se;return Se=this,Oe.bind(this,e)},Ne.prototype.N=function(){2&this.f||(this.f|=2,this.o=Ee,Ee=this)},Ne.prototype.d=function(){this.f|=8,1&this.f||qe(this)},Ne.prototype.dispose=function(){this.d()},Ve.displayName="_st",Object.defineProperties(Ae.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:Ve},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}}),Fe("__b",function(e,n){if("string"==typeof n.type){var t,i=n.props;for(var r in i)if("children"!==r){var a=i[r];a instanceof Ae&&(t||(n.__np=t={}),t[r]=a,i[r]=a.peek())}}e(n)}),Fe("__r",function(e,n){We();var t,i=n.__c;i&&(i.__$f&=-2,void 0===(t=i.__$u)&&(i.__$u=t=function(){var e;return Ue(function(){e=this}),e.c=function(){i.__$f|=1,i.setState({})},e}())),We(t),e(n)}),Fe("__e",function(e,n,t,i){We(),e(n,t,i)}),Fe("diffed",function(e,n){var t;if(We(),"string"==typeof n.type&&(t=n.__e)){var i=n.__np,r=n.props;if(i){var a=t.U;if(a)for(var l in a){var o=a[l];void 0===o||l in i||(o.d(),a[l]=void 0)}else t.U=a={};for(var s in i){var p=a[s],c=i[s];void 0===p?(p=Ke(t,s,c,r),a[s]=p):p.o(c,r)}}}e(n)}),Fe("unmount",function(e,n){if("string"==typeof n.type){var t=n.__e;if(t){var i=t.U;if(i)for(var r in t.U=void 0,i){var a=i[r];a&&a.d()}}}else{var l=n.__c;if(l){var o=l.__$u;o&&(l.__$u=void 0,o.d())}}e(n)}),Fe("__h",function(e,n,t,i){(i<3||9===i)&&(n.__$f|=2),e(n,t,i)}),$.prototype.shouldComponentUpdate=function(e,n){var t=this.__$u,i=t&&void 0!==t.s;for(var r in n)return!0;if(this.__f||"boolean"==typeof this.u&&!0===this.u){if(!(i||2&this.__$f||4&this.__$f))return!0;if(1&this.__$f)return!0}else{if(!(i||4&this.__$f))return!0;if(3&this.__$f)return!0}for(var a in e)if("__source"!==a&&e[a]!==this.props[a])return!0;for(var l in this.props)if(!(l in e))return!0;return!1};const Ze=Ie(!1),Xe=Ie("assistant"),Qe=Ie("right"),Ge=Ie("overlay"),Ye=Ie(380),Je=Ie(1200),en=Ie(!0),nn=Ie("undefined"!=typeof window?window.innerWidth:1920);let tn=null;const rn=He(()=>{const e=Je.value;return!1!==e&&nn.value<e}),an=He(()=>rn.value?"overlay":Ge.value);He(()=>{const e=["pillar-panel",`pillar-panel--${Qe.value}`];return Ze.value&&e.push("pillar-panel--open"),e.join(" ")});const ln=()=>{Ze.value=!1,"overlay"===an.value&&(document.body.style.overflow="")},on=()=>{Ze.value=!1,Xe.value="assistant",document.body.style.overflow=""};function sn(e,n,t){const i=document.createElement("style");return t&&(i.id=t),i.textContent=n,e instanceof Document?e.head.appendChild(i):e.appendChild(i),i}const pn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>',cn={assistant:pn,support:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 18v-6a9 9 0 0 1 18 0v6"></path><path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path></svg>'};function dn({position:e,tabs:n,currentActiveTab:t,onTabClick:i,panelOpen:r,panelWidthPx:a,theme:l}){const o=fe(e=>{i(e)},[i]),s=["pillar-edge-sidebar",`pillar-edge-sidebar--${e}`,"pillar-edge-sidebar--mounted",r&&"pillar-edge-sidebar--panel-open","light"===l&&"pillar-edge-sidebar--light","dark"===l&&"pillar-edge-sidebar--dark"].filter(Boolean).join(" "),p={"--pillar-panel-width":`${a}px`},c=n.filter(e=>e.enabled).sort((e,n)=>e.order-n.order);return X("div",{class:s,style:p,children:c.map(e=>{return X("button",{class:["pillar-edge-trigger",r&&t===e.id&&"pillar-edge-trigger--active"].filter(Boolean).join(" "),onClick:()=>o(e.id),"aria-label":e.label||"Help",type:"button",children:[X("span",{class:"pillar-edge-trigger__icon",dangerouslySetInnerHTML:{__html:(n=e.id,cn[n]||pn)}}),X("span",{class:"pillar-edge-trigger__label",children:e.label})]},e.id);var n})})}class un{constructor(e,n,t){this.container=null,this.stylesInjected=!1,this.themeStylesInjected=!1,this._isHidden=!1,this.unsubscribeOpen=null,this.unsubscribeWidth=null,this.unsubscribeHoverMode=null,this.unsubscribeActiveTab=null,this.themeObserver=null,this.currentTheme="light",this.handleTabClick=e=>{(e=>{Xe.value=e})(e),Ze.value||this.onClick(),this.render()},this.config=e,this.onClick=n,this.rootContainer=t||null}getEdgePosition(){return this.config.floatingButton.position.includes("left")?"left":"right"}detectTheme(){const e=document.documentElement;if(e.classList.contains("dark"))return"dark";return"dark"===e.getAttribute("data-theme")||"dark"===e.style.colorScheme?"dark":"light"}init(){if(this.stylesInjected||(sn(document,"\n/* Sidebar container - always visible, shifts when panel opens */\n.pillar-edge-sidebar {\n position: fixed;\n top: 0;\n bottom: 0;\n width: 48px;\n z-index: 100000;\n display: flex;\n flex-direction: column;\n align-items: center;\n background: var(--pillar-bg);\n border-left: 1px solid var(--pillar-border);\n transition: right 0.3s ease, left 0.3s ease;\n}\n\n.pillar-edge-sidebar--right {\n right: 0;\n border-left: 1px solid var(--pillar-border);\n border-right: none;\n}\n\n.pillar-edge-sidebar--left {\n left: 0;\n border-right: 1px solid var(--pillar-border);\n border-left: none;\n}\n\n/* When panel is open, shift the trigger to sit at the panel's outer edge */\n.pillar-edge-sidebar--right.pillar-edge-sidebar--panel-open {\n right: var(--pillar-panel-width, 380px);\n}\n\n.pillar-edge-sidebar--left.pillar-edge-sidebar--panel-open {\n left: var(--pillar-panel-width, 380px);\n}\n\n/* The trigger button - vertical sideways text */\n.pillar-edge-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 8px;\n margin-top: 8px;\n font-family: var(--pillar-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif);\n font-size: 12px;\n font-weight: 500;\n color: var(--pillar-text-muted);\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: background 0.15s ease, color 0.15s ease;\n outline: none;\n gap: 8px;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n}\n\n.pillar-edge-trigger:hover {\n background: var(--pillar-bg-secondary);\n color: var(--pillar-primary);\n}\n\n.pillar-edge-trigger--active {\n background: var(--pillar-primary-light, rgba(194, 65, 12, 0.1));\n color: var(--pillar-primary);\n}\n\n.pillar-edge-trigger--active .pillar-edge-trigger__icon {\n opacity: 1;\n color: var(--pillar-primary);\n}\n\n.pillar-edge-trigger:focus-visible {\n background: var(--pillar-bg-secondary);\n box-shadow: 0 0 0 2px var(--pillar-primary);\n}\n\n.pillar-edge-trigger__icon {\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n opacity: 0.8;\n}\n\n.pillar-edge-trigger:hover .pillar-edge-trigger__icon {\n opacity: 1;\n color: var(--pillar-primary);\n}\n\n.pillar-edge-trigger__label {\n white-space: nowrap;\n letter-spacing: 0.5px;\n}\n\n/* Animation on mount */\n@keyframes pillar-sidebar-mount {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n.pillar-edge-sidebar--mounted {\n animation: pillar-sidebar-mount 0.2s ease forwards;\n}\n","pillar-edge-trigger-styles"),this.stylesInjected=!0),!this.themeStylesInjected){const e=function(e,n){const t=e=>{const n=[];return e.primary&&n.push(`--pillar-primary: ${e.primary};`),e.primaryHover&&n.push(`--pillar-primary-hover: ${e.primaryHover};`),e.background&&n.push(`--pillar-bg: ${e.background};`),e.backgroundSecondary&&n.push(`--pillar-bg-secondary: ${e.backgroundSecondary};`),e.text&&n.push(`--pillar-text: ${e.text};`),e.textMuted&&n.push(`--pillar-text-muted: ${e.textMuted};`),e.border&&n.push(`--pillar-border: ${e.border};`),e.borderLight&&n.push(`--pillar-border-light: ${e.borderLight};`),n.join("\n ")},i=t(e),r=t(n);let a="";return i&&(a+=`\n.pillar-edge-sidebar,\n.pillar-edge-sidebar--light {\n ${i}\n}\n`),r&&(a+=`\n.pillar-edge-sidebar--dark {\n ${r}\n}\n`),a}(this.config.theme.colors,this.config.theme.darkColors);e&&sn(document,e,"pillar-edge-trigger-theme"),this.themeStylesInjected=!0}this.container=document.createElement("div"),this.container.id="pillar-edge-trigger-container";(this.rootContainer||document.body).appendChild(this.container),this.currentTheme=this.detectTheme(),this.applyLayoutPadding(),this.render(),this.unsubscribeOpen=Ze.subscribe(()=>{this.render(),queueMicrotask(()=>this.applyLayoutPadding())}),this.unsubscribeWidth=Ye.subscribe(()=>{this.render(),queueMicrotask(()=>this.applyLayoutPadding())}),this.unsubscribeHoverMode=rn.subscribe(()=>{queueMicrotask(()=>this.applyLayoutPadding())}),this.unsubscribeActiveTab=Xe.subscribe(()=>{this.render()}),this.themeObserver=new MutationObserver(()=>{const e=this.detectTheme();e!==this.currentTheme&&(this.currentTheme=e,this.render())}),this.themeObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["class","data-theme","style"]})}applyLayoutPadding(){if(this._isHidden)return;const e=this.getEdgePosition(),n=Ye.value,t=rn.value;let i=48;Ze.value&&!t&&(i=n+48),document.documentElement.style.transition="padding 0.3s ease","right"===e?document.documentElement.style.paddingRight=`${i}px`:document.documentElement.style.paddingLeft=`${i}px`}removeLayoutPadding(){"right"===this.getEdgePosition()?document.documentElement.style.paddingRight="":document.documentElement.style.paddingLeft=""}setOpen(e){this.render()}show(){this._isHidden=!1,this.container&&(this.container.style.display=""),this.applyLayoutPadding()}hide(){this._isHidden=!0,this.container&&(this.container.style.display="none"),this.removeLayoutPadding()}setPosition(e){this.removeLayoutPadding(),this.config.floatingButton.position=e,this.applyLayoutPadding(),this.render()}setLabel(e){this.config.floatingButton.label=e,this.render()}destroy(){this.unsubscribeOpen?.(),this.unsubscribeOpen=null,this.unsubscribeWidth?.(),this.unsubscribeWidth=null,this.unsubscribeHoverMode?.(),this.unsubscribeHoverMode=null,this.unsubscribeActiveTab?.(),this.unsubscribeActiveTab=null,this.themeObserver?.disconnect(),this.themeObserver=null,this.removeLayoutPadding(),this.container&&(K(null,this.container),this.container.remove()),this.container=null,document.getElementById("pillar-edge-trigger-styles")?.remove(),document.getElementById("pillar-edge-trigger-theme")?.remove(),this.stylesInjected=!1,this.themeStylesInjected=!1}render(){if(!this.container||this._isHidden)return;K(X(dn,{position:this.getEdgePosition(),tabs:this.config.sidebarTabs,currentActiveTab:Xe.value,onTabClick:this.handleTabClick,panelOpen:Ze.value,panelWidthPx:Ye.value,theme:this.currentTheme}),this.container)}}function hn({position:e,label:n,onClick:t,panelOpen:i}){const r=fe(()=>{t()},[t]),a=i?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>';return X("button",{class:["pillar-floating-button",`pillar-floating-button--${e}`,"pillar-floating-button--mounted",!n&&"pillar-floating-button--icon-only"].filter(Boolean).join(" "),onClick:r,"aria-label":n||"Help",type:"button",children:[X("span",{class:"pillar-floating-button__icon",dangerouslySetInnerHTML:{__html:a}}),n&&X("span",{class:"pillar-floating-button__label",children:n})]})}class fn{constructor(e,n){this.container=null,this.stylesInjected=!1,this._isHidden=!1,this.config=e,this.onClick=n}init(){this.stylesInjected||(sn(document,"\n.pillar-floating-button {\n position: fixed;\n z-index: 99998;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 20px;\n height: 48px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 15px;\n font-weight: 500;\n color: #ffffff;\n background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);\n border: none;\n border-radius: 24px;\n cursor: pointer;\n box-shadow: 0 4px 14px rgba(37, 99, 235, 0.4), 0 2px 6px rgba(0, 0, 0, 0.1);\n transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;\n outline: none;\n}\n\n.pillar-floating-button:hover {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(37, 99, 235, 0.5), 0 4px 8px rgba(0, 0, 0, 0.15);\n}\n\n.pillar-floating-button:active {\n transform: translateY(0);\n box-shadow: 0 2px 8px rgba(37, 99, 235, 0.3), 0 1px 4px rgba(0, 0, 0, 0.1);\n}\n\n.pillar-floating-button:focus-visible {\n box-shadow: 0 4px 14px rgba(37, 99, 235, 0.4), 0 0 0 3px rgba(37, 99, 235, 0.3);\n}\n\n.pillar-floating-button--icon-only {\n width: 56px;\n height: 56px;\n padding: 0;\n border-radius: 28px;\n justify-content: center;\n}\n\n.pillar-floating-button__icon {\n width: 22px;\n height: 22px;\n flex-shrink: 0;\n}\n\n.pillar-floating-button__label {\n white-space: nowrap;\n}\n\n/* Positions */\n.pillar-floating-button--bottom-right {\n bottom: 24px;\n right: 24px;\n}\n\n.pillar-floating-button--bottom-left {\n bottom: 24px;\n left: 24px;\n}\n\n.pillar-floating-button--top-right {\n top: 24px;\n right: 24px;\n}\n\n.pillar-floating-button--top-left {\n top: 24px;\n left: 24px;\n}\n\n/* Hidden state when panel is open */\n.pillar-floating-button--hidden {\n transform: scale(0.8);\n opacity: 0;\n pointer-events: none;\n}\n\n/* Animation on mount */\n@keyframes pillar-button-mount {\n from {\n transform: scale(0.8);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.pillar-floating-button--mounted {\n animation: pillar-button-mount 0.3s ease forwards;\n}\n","pillar-floating-button-styles"),this.stylesInjected=!0),this.container=document.createElement("div"),this.container.id="pillar-floating-button-container",document.body.appendChild(this.container),this.render(),Ze.subscribe(()=>{this.render()})}setOpen(e){this.render()}show(){this._isHidden=!1,this.container&&(this.container.style.display="")}hide(){this._isHidden=!0,this.container&&(this.container.style.display="none")}setPosition(e){this.config.floatingButton.position=e,this.render()}setLabel(e){this.config.floatingButton.label=e,this.render()}destroy(){this.container&&(K(null,this.container),this.container.remove()),this.container=null,document.getElementById("pillar-floating-button-styles")?.remove(),this.stylesInjected=!1}render(){if(!this.container||this._isHidden)return;const{position:e,label:n}=this.config.floatingButton;K(X(hn,{position:e,label:n,onClick:this.onClick,panelOpen:Ze.value}),this.container)}}function gn(e){return"highlighted_text"===e.type}const _n=Ie([]),mn=Ie(null),vn=Ie(!1),bn=Ie({kind:null}),xn=Ie(!1),yn=Ie([]),wn=Ie([]),kn=Ie(""),Sn=Ie(null),Cn=Ie(0),Pn=Ie([]),En=Ie([]),Tn=Ie([]),$n=He(()=>Tn.value.some(e=>"uploading"===e.status)),zn=(e,n,t,i)=>{Tn.value=Tn.value.map(r=>r.id===e?{...r,status:n,url:t,error:i}:r)},Mn=()=>{Tn.value.forEach(e=>URL.revokeObjectURL(e.preview)),Tn.value=[]};He(()=>_n.value.length>0);const An=(e,n,t,i)=>{const r=_n.value;if(r.length>0&&"assistant"===r[r.length-1].role){const a=r[r.length-1];_n.value=[...r.slice(0,-1),{role:"assistant",content:e,id:n??a.id,actions:t??a.actions,sources:i??a.sources,actionStatus:a.actionStatus}]}},In=e=>{vn.value=e},Rn=e=>{Sn.value=e},Ln=()=>{Cn.value+=1},Bn=e=>{Pn.value=Pn.value.filter(n=>n.id!==e)},jn=()=>{_n.value=[],mn.value=null,vn.value=!1,bn.value={kind:null},xn.value=!1,yn.value=[],wn.value=[],kn.value="",Sn.value=null,Pn.value=[],En.value=[],Mn()},Hn=Ie([]),Dn=Ie({type:"home"}),qn=He(()=>Hn.value.length>0),On=He(()=>"home"===Dn.value.type),Nn=(e,n)=>{Hn.value=[...Hn.value,{...Dn.value}],Dn.value={type:e,params:n}},Un=()=>{const e=Hn.value;if(e.length>0){"chat"===Dn.value.type&&jn();const n=e[e.length-1];Dn.value=n,Hn.value=e.slice(0,-1)}},Fn=()=>{"chat"===Dn.value.type&&jn(),Hn.value=[],Dn.value={type:"home"}},Wn=()=>{Hn.value=[],Dn.value={type:"home"}},Vn=()=>{Nn("chat")},Kn='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20,6 9,17 4,12"/></svg>',Zn='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>';function Xn(e){return e.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function Qn(e,n){const t=document.createElement("div");t.className="pillar-confirm-card";const i=Xn(e.data?.card_type||e.name),r=e.data||{};let a="idle",l="";const o=()=>{if("success"!==a){if("error"===a)return t.innerHTML=`\n <div class="pillar-confirm-card__content">\n <div class="pillar-confirm-card__header">\n <span class="pillar-confirm-card__title">${i}</span>\n </div>\n <div class="pillar-confirm-card__error">\n <span>${l||"An error occurred"}</span>\n </div>\n <div class="pillar-confirm-card__actions">\n <button type="button" class="pillar-confirm-card__btn pillar-confirm-card__btn--secondary js-cancel">\n ${Zn} Dismiss\n </button>\n </div>\n </div>\n `,void t.querySelector(".js-cancel")?.addEventListener("click",n.onCancel);t.innerHTML=`\n <div class="pillar-confirm-card__content">\n <div class="pillar-confirm-card__header">\n <span class="pillar-confirm-card__title">${i}</span>\n </div>\n ${function(e){const n=Object.entries(e).filter(([e])=>"card_type"!==e).slice(0,5);return 0===n.length?"":`\n <div class="pillar-confirm-card__data">\n ${n.map(([e,n])=>{const t=Array.isArray(n)?n.join(", "):String(n);return`\n <div class="pillar-confirm-card__data-row">\n <span class="pillar-confirm-card__data-key">${Xn(e)}:</span>\n <span class="pillar-confirm-card__data-value">${t}</span>\n </div>\n `}).join("")}\n </div>\n `}(r)}\n <div class="pillar-confirm-card__actions">\n <button type="button" class="pillar-confirm-card__btn pillar-confirm-card__btn--secondary js-cancel" ${"loading"===a?"disabled":""}>\n ${Zn} Cancel\n </button>\n <button type="button" class="pillar-confirm-card__btn pillar-confirm-card__btn--primary js-confirm" ${"loading"===a?"disabled":""}>\n ${"loading"===a?'<span class="pillar-confirm-card__spinner"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="2" x2="12" y2="6"/><line x1="12" y1="18" x2="12" y2="22"/><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"/><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"/><line x1="2" y1="12" x2="6" y2="12"/><line x1="18" y1="12" x2="22" y2="12"/><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"/><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"/></svg></span>':Kn} \n ${"loading"===a?"Processing...":"Confirm"}\n </button>\n </div>\n </div>\n `,t.querySelector(".js-cancel")?.addEventListener("click",n.onCancel),t.querySelector(".js-confirm")?.addEventListener("click",()=>{n.onConfirm(r)})}else t.innerHTML=`\n <div class="pillar-confirm-card__success">\n <span class="pillar-confirm-card__success-icon">${Kn}</span>\n <span>Completed</span>\n </div>\n `};if(o(),n.onStateChange){const e=n.onStateChange;n.onStateChange=(n,t)=>{"loading"===n?a="loading":"success"===n?a="success":"error"===n&&(a="error",l=t||""),o(),e(n,t)}}return t}const Gn="\n/* Confirm Action Card */\n.pillar-confirm-card-wrapper {\n margin-top: 12px;\n}\n\n.pillar-confirm-card {\n background: var(--pillar-bg-secondary, #f9fafb);\n border: 1px solid var(--pillar-border, #e5e7eb);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.pillar-confirm-card__content {\n padding: 16px;\n}\n\n.pillar-confirm-card__header {\n margin-bottom: 12px;\n}\n\n.pillar-confirm-card__title {\n font-size: 14px;\n font-weight: 600;\n color: var(--pillar-text-primary, #111827);\n}\n\n.pillar-confirm-card__data {\n background: var(--pillar-bg-primary, #ffffff);\n border: 1px solid var(--pillar-border, #e5e7eb);\n border-radius: 8px;\n padding: 12px;\n margin-bottom: 12px;\n}\n\n.pillar-confirm-card__data-row {\n display: flex;\n gap: 8px;\n font-size: 13px;\n margin-bottom: 4px;\n}\n\n.pillar-confirm-card__data-row:last-child {\n margin-bottom: 0;\n}\n\n.pillar-confirm-card__data-key {\n color: var(--pillar-text-secondary, #6b7280);\n flex-shrink: 0;\n}\n\n.pillar-confirm-card__data-value {\n color: var(--pillar-text-primary, #111827);\n word-break: break-word;\n}\n\n.pillar-confirm-card__actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n}\n\n.pillar-confirm-card__btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n font-size: 13px;\n font-weight: 500;\n font-family: inherit;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.15s ease;\n border: 1px solid transparent;\n}\n\n.pillar-confirm-card__btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.pillar-confirm-card__btn svg {\n width: 16px;\n height: 16px;\n}\n\n.pillar-confirm-card__btn--primary {\n background: var(--pillar-primary, #2563eb);\n color: #ffffff;\n border-color: var(--pillar-primary, #2563eb);\n}\n\n.pillar-confirm-card__btn--primary:hover:not(:disabled) {\n background: var(--pillar-primary-hover, #1d4ed8);\n border-color: var(--pillar-primary-hover, #1d4ed8);\n}\n\n.pillar-confirm-card__btn--secondary {\n background: var(--pillar-bg-primary, #ffffff);\n color: var(--pillar-text-secondary, #6b7280);\n border-color: var(--pillar-border, #e5e7eb);\n}\n\n.pillar-confirm-card__btn--secondary:hover:not(:disabled) {\n background: var(--pillar-bg-secondary, #f9fafb);\n}\n\n.pillar-confirm-card__success {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 16px;\n color: #059669;\n font-weight: 500;\n}\n\n.pillar-confirm-card__success-icon svg {\n width: 20px;\n height: 20px;\n}\n\n.pillar-confirm-card__error {\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 8px;\n padding: 12px;\n margin-bottom: 12px;\n color: #dc2626;\n font-size: 13px;\n}\n\n.pillar-confirm-card__spinner {\n display: inline-flex;\n animation: pillar-spin 1s linear infinite;\n}\n\n@keyframes pillar-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n",Yn=function(e){function n(e){var t,i;return this.getChildContext||(t=new Set,(i={})[n.__c]=this,this.getChildContext=function(){return i},this.componentWillUnmount=function(){t=null},this.shouldComponentUpdate=function(e){this.props.value!=e.value&&t.forEach(function(e){e.__e=!0,A(e)})},this.sub=function(e){t.add(e);var n=e.componentWillUnmount;e.componentWillUnmount=function(){t&&t.delete(e),n&&n.call(e)}}),e.children}return n.__c="__cC"+x++,n.__=e,n.Provider=n.__l=(n.Consumer=function(e,n){return e.children(n)}).contextType=n,n}(null);function Jn({api:e,events:n,children:t}){return X(Yn.Provider,{value:{api:e,events:n},children:t})}function et(){const e=function(e){var n=G.context[e.__c],t=pe(Q++,9);return t.c=e,n?(null==t.__&&(t.__=!0,n.sub(G)),n.props.value):e.__}(Yn);if(!e)throw new Error("usePillar must be used within a PillarProvider");return e}function nt(){return et().api}const tt="\n/* Inline Plan Container */\n.pillar-inline-plan {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 8px 0;\n}\n\n/* Steps list */\n.pillar-inline-plan__steps {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n/* Individual step */\n.pillar-inline-plan__step {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 8px;\n border-radius: 6px;\n font-size: 13px;\n background: transparent;\n transition: all 0.15s ease;\n}\n\n.pillar-inline-plan__step-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--pillar-text-tertiary, #9ca3af);\n}\n\n.pillar-inline-plan__step-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.pillar-inline-plan__step-text {\n color: var(--pillar-text-primary, #374151);\n line-height: 1.4;\n}\n\n.pillar-inline-plan__step-instruction {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.pillar-inline-plan__action-badge {\n display: inline-block;\n padding: 1px 5px;\n font-size: 9px;\n font-weight: 600;\n text-transform: uppercase;\n background: var(--pillar-warning, #f59e0b);\n color: white;\n border-radius: 3px;\n flex-shrink: 0;\n}\n\n.pillar-inline-plan__instruction-text {\n font-size: 11px;\n color: var(--pillar-text-secondary, #6b7280);\n}\n\n.pillar-inline-plan__step-actions {\n display: flex;\n gap: 4px;\n}\n\n/* Step states */\n.pillar-inline-plan__step--pending {\n opacity: 0.6;\n}\n\n.pillar-inline-plan__step--ready .pillar-inline-plan__step-icon {\n color: var(--pillar-primary, #2563eb);\n}\n\n.pillar-inline-plan__step--awaiting_confirmation {\n background: var(--pillar-bg-warning-subtle, rgba(251, 191, 36, 0.1));\n}\n\n.pillar-inline-plan__step--awaiting_confirmation .pillar-inline-plan__step-icon {\n color: var(--pillar-warning-dark, #d97706);\n}\n\n.pillar-inline-plan__step--executing .pillar-inline-plan__step-icon,\n.pillar-inline-plan__step--awaiting_result .pillar-inline-plan__step-icon {\n color: var(--pillar-primary, #2563eb);\n}\n\n.pillar-inline-plan__step--completed .pillar-inline-plan__step-icon {\n color: var(--pillar-success, #059669);\n}\n\n.pillar-inline-plan__step--completed .pillar-inline-plan__step-text {\n text-decoration: line-through;\n color: var(--pillar-text-secondary, #6b7280);\n}\n\n.pillar-inline-plan__step--skipped {\n opacity: 0.5;\n}\n\n.pillar-inline-plan__step--skipped .pillar-inline-plan__step-text {\n text-decoration: line-through;\n}\n\n.pillar-inline-plan__step--failed {\n background: var(--pillar-bg-danger-subtle, rgba(220, 38, 38, 0.1));\n}\n\n.pillar-inline-plan__step--failed .pillar-inline-plan__step-icon {\n color: var(--pillar-danger, #dc2626);\n}\n\n/* Buttons */\n.pillar-inline-plan__btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 3px 8px;\n font-size: 11px;\n font-weight: 500;\n font-family: inherit;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.15s ease;\n border: none;\n}\n\n.pillar-inline-plan__btn--confirm {\n background: var(--pillar-success, #059669);\n color: #ffffff;\n min-width: 24px;\n}\n\n.pillar-inline-plan__btn--confirm:hover {\n background: var(--pillar-success-hover, #047857);\n}\n\n.pillar-inline-plan__btn--skip {\n background: transparent;\n color: var(--pillar-text-secondary, #6b7280);\n border: 1px solid var(--pillar-border, #d1d5db);\n}\n\n.pillar-inline-plan__btn--skip:hover {\n background: var(--pillar-bg-tertiary, #f3f4f6);\n}\n\n.pillar-inline-plan__btn--retry {\n background: var(--pillar-danger, #dc2626);\n color: #ffffff;\n}\n\n.pillar-inline-plan__btn--retry:hover {\n background: var(--pillar-danger-hover, #b91c1c);\n}\n\n.pillar-inline-plan__btn--done {\n background: var(--pillar-primary, #2563eb);\n color: #ffffff;\n}\n\n.pillar-inline-plan__btn--done:hover {\n background: var(--pillar-primary-hover, #1d4ed8);\n}\n\n.pillar-inline-plan__btn--start {\n background: var(--pillar-primary, #2563eb);\n color: #ffffff;\n}\n\n.pillar-inline-plan__btn--start:hover {\n background: var(--pillar-primary-hover, #1d4ed8);\n}\n\n.pillar-inline-plan__btn--cancel {\n background: transparent;\n color: var(--pillar-text-secondary, #6b7280);\n border: 1px solid var(--pillar-border, #d1d5db);\n}\n\n.pillar-inline-plan__btn--cancel:hover {\n background: var(--pillar-bg-tertiary, #f3f4f6);\n color: var(--pillar-danger, #dc2626);\n border-color: var(--pillar-danger, #dc2626);\n}\n\n/* Footer */\n.pillar-inline-plan__footer {\n display: flex;\n gap: 8px;\n padding-top: 6px;\n}\n\n/* Status messages */\n.pillar-inline-plan__status {\n font-size: 12px;\n font-weight: 500;\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.pillar-inline-plan__status--success {\n color: var(--pillar-success, #059669);\n background: var(--pillar-bg-success-subtle, rgba(5, 150, 105, 0.1));\n}\n\n.pillar-inline-plan__status--error {\n color: var(--pillar-danger, #dc2626);\n background: var(--pillar-bg-danger-subtle, rgba(220, 38, 38, 0.1));\n}\n\n.pillar-inline-plan__status--cancelled {\n color: var(--pillar-text-tertiary, #9ca3af);\n background: var(--pillar-bg-tertiary, #f3f4f6);\n}\n\n/* Spinner animation */\n@keyframes pillar-inline-plan-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n.pillar-inline-plan__spinner {\n animation: pillar-inline-plan-spin 1s linear infinite;\n}\n",it={pending:'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/></svg>',ready:'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="4" fill="currentColor"/></svg>',awaiting_confirmation:'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>',executing:'<svg class="pillar-plan-step__spinner" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"/></svg>',awaiting_result:'<svg class="pillar-plan-step__spinner" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"/></svg>',completed:'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="9,12 12,15 16,10"/></svg>',skipped:'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10" stroke-dasharray="4,2"/><line x1="8" y1="12" x2="16" y2="12"/></svg>',failed:'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="15" y1="9" x2="9" y2="15"/><line x1="9" y1="9" x2="15" y2="15"/></svg>'};function rt(e){switch(e){case"pending":default:return it.pending;case"ready":return it.ready;case"awaiting_confirmation":return it.awaiting_confirmation;case"executing":return it.executing;case"awaiting_result":return it.awaiting_result;case"completed":return it.completed;case"skipped":return it.skipped;case"failed":return it.failed}}function at({step:e,onConfirm:n,onSkip:t,onRetry:i,onDone:r}){"ready"===e.status||"executing"===e.status||"awaiting_confirmation"===e.status||e.status;const a="failed"===e.status&&e.is_retriable&&e.retry_count<e.max_retries;return X("div",{class:`pillar-plan-step pillar-plan-step--${e.status}`,children:[X("div",{class:"pillar-plan-step__icon",children:X("span",{dangerouslySetInnerHTML:{__html:rt(e.status)}})}),X("div",{class:"pillar-plan-step__content",children:[X("div",{class:"pillar-plan-step__description",children:e.description}),"awaiting_confirmation"===e.status&&X("div",{class:"pillar-plan-step__actions",children:[X("button",{type:"button",class:"pillar-plan-step__confirm-btn",onClick:()=>{n(e.id)},children:"Confirm"}),X("button",{type:"button",class:"pillar-plan-step__skip-btn",onClick:()=>{t(e.id)},children:"Skip"})]}),"executing"===e.status&&X("div",{class:"pillar-plan-step__status-text",children:"Running..."}),"awaiting_result"===e.status&&X("div",{class:"pillar-plan-step__awaiting-container",children:[X("div",{class:"pillar-plan-step__instruction-row",children:[X("span",{class:"pillar-plan-step__action-badge",children:"In Progress"}),X("span",{class:"pillar-plan-step__instruction",children:"Complete this step to continue"})]}),X("button",{type:"button",class:"pillar-plan-step__done-btn",onClick:()=>{r?.(e.id)},children:"Done"})]}),"failed"===e.status&&X("div",{class:"pillar-plan-step__error-container",children:[e.error_message&&X("div",{class:"pillar-plan-step__error",children:e.error_message}),a&&X("div",{class:"pillar-plan-step__retry-info",children:[X("span",{class:"pillar-plan-step__retry-count",children:["Attempt ",e.retry_count+1," of ",e.max_retries+1]}),X("button",{type:"button",class:"pillar-plan-step__retry-btn",onClick:()=>{i?.(e.id)},children:"Retry"})]}),!a&&e.retry_count>=e.max_retries&&X("div",{class:"pillar-plan-step__retry-exhausted",children:"All retry attempts exhausted"})]})]})]})}const lt="\n/* Individual Step */\n.pillar-plan-step {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n background: var(--pillar-bg-primary, #ffffff);\n border: 1px solid var(--pillar-border, #e5e7eb);\n border-radius: 8px;\n transition: all 0.15s ease;\n}\n\n.pillar-plan-step__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n color: var(--pillar-text-tertiary, #9ca3af);\n}\n\n.pillar-plan-step__icon svg {\n width: 18px;\n height: 18px;\n}\n\n.pillar-plan-step__content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.pillar-plan-step__description {\n font-size: 13px;\n font-weight: 500;\n color: var(--pillar-text-primary, #374151);\n line-height: 1.4;\n}\n\n.pillar-plan-step__status-text {\n font-size: 12px;\n color: var(--pillar-primary, #2563eb);\n font-style: italic;\n}\n\n.pillar-plan-step__error {\n font-size: 12px;\n color: var(--pillar-danger, #dc2626);\n}\n\n.pillar-plan-step__actions {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n/* Step States */\n.pillar-plan-step--pending {\n opacity: 0.6;\n}\n\n.pillar-plan-step--ready {\n background: var(--pillar-bg-info-subtle, #eff6ff);\n border-color: var(--pillar-info, #93c5fd);\n}\n\n.pillar-plan-step--ready .pillar-plan-step__icon {\n color: var(--pillar-primary, #2563eb);\n}\n\n.pillar-plan-step--awaiting_confirmation {\n background: var(--pillar-bg-warning-subtle, #fef3c7);\n border-color: var(--pillar-warning, #fcd34d);\n}\n\n.pillar-plan-step--awaiting_confirmation .pillar-plan-step__icon {\n color: var(--pillar-warning-dark, #d97706);\n}\n\n.pillar-plan-step--executing,\n.pillar-plan-step--awaiting_result {\n background: var(--pillar-bg-info-subtle, #eff6ff);\n border-color: var(--pillar-info, #93c5fd);\n}\n\n.pillar-plan-step--executing .pillar-plan-step__icon,\n.pillar-plan-step--awaiting_result .pillar-plan-step__icon {\n color: var(--pillar-primary, #2563eb);\n}\n\n.pillar-plan-step--completed .pillar-plan-step__icon {\n color: var(--pillar-success, #059669);\n}\n\n.pillar-plan-step--completed .pillar-plan-step__description {\n text-decoration: line-through;\n color: var(--pillar-text-secondary, #6b7280);\n}\n\n.pillar-plan-step--skipped {\n opacity: 0.5;\n}\n\n.pillar-plan-step--skipped .pillar-plan-step__icon {\n color: var(--pillar-text-tertiary, #9ca3af);\n}\n\n.pillar-plan-step--skipped .pillar-plan-step__description {\n text-decoration: line-through;\n color: var(--pillar-text-tertiary, #9ca3af);\n}\n\n.pillar-plan-step--failed {\n background: var(--pillar-bg-danger-subtle, #fef2f2);\n border-color: var(--pillar-danger-light, #fca5a5);\n}\n\n.pillar-plan-step--failed .pillar-plan-step__icon {\n color: var(--pillar-danger, #dc2626);\n}\n\n/* Error Container */\n.pillar-plan-step__error-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.pillar-plan-step__retry-info {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 2px;\n}\n\n.pillar-plan-step__retry-count {\n font-size: 11px;\n color: var(--pillar-text-tertiary, #9ca3af);\n}\n\n.pillar-plan-step__retry-exhausted {\n font-size: 11px;\n color: var(--pillar-text-tertiary, #9ca3af);\n font-style: italic;\n margin-top: 2px;\n}\n\n/* Retry Button */\n.pillar-plan-step__retry-btn {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n font-size: 11px;\n font-weight: 600;\n font-family: inherit;\n background: var(--pillar-danger, #dc2626);\n color: #ffffff;\n border: none;\n border-radius: 5px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.pillar-plan-step__retry-btn:hover {\n background: var(--pillar-danger-hover, #b91c1c);\n}\n\n/* Confirm Button */\n.pillar-plan-step__confirm-btn {\n display: inline-flex;\n align-items: center;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 600;\n font-family: inherit;\n background: var(--pillar-primary, #2563eb);\n color: #ffffff;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.pillar-plan-step__confirm-btn:hover {\n background: var(--pillar-primary-hover, #1d4ed8);\n}\n\n/* Skip Button */\n.pillar-plan-step__skip-btn {\n display: inline-flex;\n align-items: center;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 500;\n font-family: inherit;\n background: transparent;\n color: var(--pillar-text-secondary, #6b7280);\n border: 1px solid var(--pillar-border, #d1d5db);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.pillar-plan-step__skip-btn:hover {\n background: var(--pillar-bg-tertiary, #f3f4f6);\n color: var(--pillar-text-primary, #374151);\n}\n\n/* Awaiting Result Container */\n.pillar-plan-step__awaiting-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.pillar-plan-step__instruction-row {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.pillar-plan-step__action-badge {\n display: inline-block;\n padding: 2px 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n background: var(--pillar-warning, #f59e0b);\n color: white;\n border-radius: 3px;\n flex-shrink: 0;\n}\n\n.pillar-plan-step__instruction {\n font-size: 12px;\n color: var(--pillar-text-secondary, #6b7280);\n}\n\n/* Done Button */\n.pillar-plan-step__done-btn {\n display: inline-flex;\n align-items: center;\n align-self: flex-start;\n padding: 6px 14px;\n font-size: 12px;\n font-weight: 600;\n font-family: inherit;\n background: var(--pillar-primary, #2563eb);\n color: #ffffff;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.pillar-plan-step__done-btn:hover {\n background: var(--pillar-primary-hover, #1d4ed8);\n}\n\n/* Spinner Animation for Executing Step */\n@keyframes pillar-plan-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.pillar-plan-step__spinner {\n animation: pillar-plan-spin 1s linear infinite;\n}\n",ot=Ie(null),st=Ie([]),pt=He(()=>null!==ot.value);He(()=>ot.value&&ot.value.steps.find(e=>"ready"===e.status||"executing"===e.status||"awaiting_confirmation"===e.status)||null),He(()=>ot.value?ot.value.steps.filter(e=>"completed"===e.status||"skipped"===e.status).length:0);const ct=He(()=>ot.value&&0!==ot.value.total_steps?ot.value.completed_steps/ot.value.total_steps:0);function dt(e){ot.value&&(st.value=[...st.value,ot.value]),ot.value=e}function ut(e){ot.value=e}function ht(e,n){if(!ot.value)return;const t=ot.value.steps.map(t=>t.id===e?{...t,...n}:t);let i=ot.value.completed_steps;"completed"===n.status&&(i=t.filter(e=>"completed"===e.status).length),ot.value={...ot.value,steps:t,completed_steps:i}}function ft(e=!0){ot.value&&e&&(st.value=[...st.value,ot.value]),ot.value=null}He(()=>"awaiting_start"===ot.value?.status);const gt={plan:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h11"/></svg>'};function _t(){const e=ot.value;if(!e)return null;const n="awaiting_start"===e.status,t="executing"===e.status,i=ct.value,r=Br.getInstance(),a=(e,n)=>{r?.confirmPlanStep(e,n)},l=e=>{r?.skipPlanStep(e)},o=e=>{r?.retryPlanStep(e)},s=e=>{r?.markPlanStepDone(e)};return X("div",{class:"pillar-plan",children:[X("div",{class:"pillar-plan__header",children:[X("div",{class:"pillar-plan__icon",children:X("span",{dangerouslySetInnerHTML:{__html:gt.plan}})}),X("div",{class:"pillar-plan__title",children:e.goal}),X("div",{class:"pillar-plan__progress",children:[e.completed_steps,"/",e.total_steps]})]}),t&&X("div",{class:"pillar-plan__progress-bar",children:X("div",{class:"pillar-plan__progress-fill",style:{width:100*i+"%"}})}),X("div",{class:"pillar-plan__steps",children:e.steps.map(e=>X(at,{step:e,onConfirm:a,onSkip:l,onRetry:o,onDone:s},e.id))}),X("div",{class:"pillar-plan__footer",children:[n&&X("button",{type:"button",class:"pillar-plan__start-btn",onClick:()=>{r?.startPlan()},children:"Start Plan"}),X("button",{type:"button",class:"pillar-plan__cancel-btn",onClick:()=>{r?.cancelPlan()},children:"Cancel"})]})]})}const mt="\n/* Plan Container */\n.pillar-plan {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px;\n background: var(--pillar-bg-secondary, #f9fafb);\n border: 1px solid var(--pillar-border, #e5e7eb);\n border-radius: 12px;\n margin: 12px 0;\n}\n\n/* Header */\n.pillar-plan__header {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.pillar-plan__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--pillar-text-secondary, #6b7280);\n}\n\n.pillar-plan__title {\n flex: 1;\n font-size: 14px;\n font-weight: 600;\n color: var(--pillar-text-primary, #1a1a1a);\n line-height: 1.4;\n}\n\n.pillar-plan__progress {\n font-size: 12px;\n font-weight: 500;\n color: var(--pillar-text-secondary, #6b7280);\n padding: 2px 8px;\n background: var(--pillar-bg-tertiary, #e5e7eb);\n border-radius: 10px;\n}\n\n/* Progress Bar */\n.pillar-plan__progress-bar {\n height: 4px;\n background: var(--pillar-bg-tertiary, #e5e7eb);\n border-radius: 2px;\n overflow: hidden;\n}\n\n.pillar-plan__progress-fill {\n height: 100%;\n background: var(--pillar-primary, #2563eb);\n border-radius: 2px;\n transition: width 0.3s ease;\n}\n\n/* Steps List */\n.pillar-plan__steps {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n/* Footer */\n.pillar-plan__footer {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--pillar-border, #e5e7eb);\n}\n\n/* Start Button */\n.pillar-plan__start-btn {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n font-family: inherit;\n background: var(--pillar-primary, #2563eb);\n color: #ffffff;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.pillar-plan__start-btn:hover {\n background: var(--pillar-primary-hover, #1d4ed8);\n}\n\n/* Cancel Button */\n.pillar-plan__cancel-btn {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 500;\n font-family: inherit;\n background: transparent;\n color: var(--pillar-text-secondary, #6b7280);\n border: 1px solid var(--pillar-border, #d1d5db);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.pillar-plan__cancel-btn:hover {\n background: var(--pillar-bg-tertiary, #f3f4f6);\n color: var(--pillar-danger, #dc2626);\n border-color: var(--pillar-danger, #dc2626);\n}\n",vt={home:"Assistant",chat:"Assistant"};function bt({currentView:e,customTitle:n,hideNavigation:t=!1}){const i=!t&&qn.value,r=!t&&!On.value,a=n||vt[e];return X("header",{class:"_pillar-header pillar-header",children:[X("div",{class:"_pillar-header-left pillar-header-left",children:[i&&X("button",{class:"_pillar-icon-btn pillar-icon-btn pillar-back-btn",onClick:()=>{Un()},"aria-label":"Go back",type:"button",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M9.707 16.707a1 1 0 01-1.414 0l-6-6a1 1 0 010-1.414l6-6a1 1 0 011.414 1.414L5.414 9H17a1 1 0 110 2H5.414l4.293 4.293a1 1 0 010 1.414z" clip-rule="evenodd"/></svg>'}}),r&&X("button",{class:"_pillar-icon-btn pillar-icon-btn pillar-home-btn",onClick:()=>{Fn()},"aria-label":"Go to home",type:"button",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 20 20" fill="currentColor"><path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z"/></svg>'}}),X("span",{class:"_pillar-header-title pillar-header-title",children:a})]}),X("button",{class:"_pillar-icon-btn pillar-icon-btn pillar-close-btn",onClick:()=>{ln()},"aria-label":"Close assistant panel",type:"button",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/></svg>'}})]})}const xt='<svg viewBox="0 0 24 24" fill="currentColor"><path d="M4.583 17.321C3.553 16.227 3 15 3 13.011c0-3.5 2.457-6.637 6.03-8.188l.893 1.378c-3.335 1.804-3.987 4.145-4.247 5.621.537-.278 1.24-.375 1.929-.311 1.804.167 3.226 1.648 3.226 3.489a3.5 3.5 0 01-3.5 3.5c-1.073 0-2.099-.49-2.748-1.179zm10 0C13.553 16.227 13 15 13 13.011c0-3.5 2.457-6.637 6.03-8.188l.893 1.378c-3.335 1.804-3.987 4.145-4.247 5.621.537-.278 1.24-.375 1.929-.311 1.804.167 3.226 1.648 3.226 3.489a3.5 3.5 0 01-3.5 3.5c-1.073 0-2.099-.49-2.748-1.179z"/></svg>';function yt({context:e,onRemove:n,readOnly:t=!1}){const i="highlighted_text"===(r=e).type?r.text_content.length>40?r.text_content.substring(0,40)+"...":r.text_content:"Context";var r;const a=function(e){return gn(e),xt}(e),l=function(e){if(gn(e)){const n=e.url_origin?`\nFrom: ${e.url_origin}`:"";return`"${e.text_content}"${n}`}return""}(e);return X("div",{class:"_pillar-context-tag pillar-context-tag",title:l,children:[X("span",{class:"_pillar-context-tag-icon pillar-context-tag-icon",dangerouslySetInnerHTML:{__html:a}}),X("span",{class:"_pillar-context-tag-label pillar-context-tag-label",children:i}),!t&&n&&X("button",{class:"_pillar-context-tag-remove pillar-context-tag-remove",onClick:t=>{t.preventDefault(),t.stopPropagation(),n?.(e.id)},"aria-label":"Remove context",type:"button",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>'}})]})}function wt({contexts:e,onRemove:n,readOnly:t=!1}){return 0===e.length?null:X("div",{class:"_pillar-context-tag-list pillar-context-tag-list",children:e.map(e=>X(yt,{context:e,onRemove:n,readOnly:t},e.id))})}const kt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg>';function St({placeholder:e="Ask anything...",disabled:n=!1,onSubmit:t,showContextTags:i=!0,showImageUpload:r=!0,className:a=""}){const l=nt(),o=ue(null),s=ue(null),[p,c]=ce(""),[d,u]=ce(!1),h=fe(()=>{const e=o.current;if(!e)return;e.style.height="41px";const n=e.scrollHeight;n>146?(e.style.height="146px",e.style.overflowY="auto"):(e.style.height=`${n}px`,e.style.overflowY="hidden")},[]),f=fe(async e=>{if(Tn.value.length>=4)return;const n=`img-${Date.now()}-${Math.random().toString(36).slice(2)}`,t=URL.createObjectURL(e);var i;i={id:n,file:e,preview:t,status:"uploading"},Tn.value.length>=4||(Tn.value=[...Tn.value,i]);try{const t=await l.uploadImage(e);zn(n,"ready",t.url)}catch(e){const t=e instanceof Error?e.message:"Upload failed";zn(n,"error",void 0,t)}},[l]),g=fe(e=>{const n=Array.from(e).filter(e=>e.type.startsWith("image/")),t=4-Tn.value.length;n.slice(0,t).forEach(f)},[f]),_=fe(e=>{const n=e.clipboardData?.items;if(!n)return;const t=[];for(const e of n)if(e.type.startsWith("image/")){const n=e.getAsFile();n&&t.push(n)}t.length>0&&(e.preventDefault(),g(t))},[g]),m=fe(e=>{e.preventDefault(),e.stopPropagation(),u(!0)},[]),v=fe(e=>{e.preventDefault(),e.stopPropagation(),u(!1)},[]),b=fe(e=>{e.preventDefault(),e.stopPropagation(),u(!1);const n=e.dataTransfer?.files;n&&g(n)},[g]),x=fe(e=>{const n=e.target;n.files&&(g(n.files),n.value="")},[g]),y=fe(()=>{s.current?.click()},[]),w=fe(()=>{const e=p.trim(),n=[...Pn.value],i=Tn.value.filter(e=>"ready"===e.status&&e.url).map(e=>({url:e.url,detail:"low"})),r=n.length>0,a=i.length>0;var l;(e||r||a)&&($n.value||(r&&(Pn.value=[]),Mn(),t?t(e,n,i):(r&&(l=n,En.value=l),Rn(e),Vn()),c(""),o.current&&(o.current.style.height="41px",o.current.style.overflowY="hidden")))},[p,t]),k=$n.value,S=p.trim()||Pn.value.length>0||Tn.value.some(e=>"ready"===e.status);return X("div",{class:`_pillar-unified-input-wrapper pillar-unified-input-wrapper ${d?"_pillar-unified-input-wrapper--dragging":""} ${a}`.trim(),onDragOver:m,onDragLeave:v,onDrop:b,children:[X("input",{ref:s,type:"file",accept:"image/*",multiple:!0,onChange:x,style:{display:"none"}}),Tn.value.length>0&&X("div",{class:"_pillar-chat-images-preview pillar-chat-images-preview",children:Tn.value.map(e=>X("div",{class:"_pillar-chat-image-thumb pillar-chat-image-thumb",children:[X("img",{src:e.preview,alt:"Upload preview"}),"uploading"===e.status&&X("div",{class:"_pillar-chat-image-loading pillar-chat-image-loading",children:X("div",{class:"_pillar-loading-spinner pillar-loading-spinner",style:{width:"16px",height:"16px"}})}),"error"===e.status&&X("div",{class:"_pillar-chat-image-error pillar-chat-image-error",title:e.error,children:"!"}),X("button",{type:"button",class:"_pillar-chat-image-remove pillar-chat-image-remove",onClick:()=>(e=>{const n=Tn.value.find(n=>n.id===e);n&&URL.revokeObjectURL(n.preview),Tn.value=Tn.value.filter(n=>n.id!==e)})(e.id),"aria-label":"Remove image",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>'}})]},e.id))}),i&&X(wt,{contexts:Pn.value,onRemove:Bn}),X("textarea",{ref:o,class:"_pillar-unified-input pillar-unified-input",placeholder:d?"Drop image here...":e,value:p,onInput:e=>{const n=e.target;c(n.value),h()},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),w())},onPaste:_,disabled:n,style:{height:"41px"}}),X("div",{class:"_pillar-unified-input-row pillar-unified-input-row",children:[r&&X("button",{type:"button",class:"_pillar-chat-image-btn pillar-chat-image-btn",onClick:y,disabled:n||k||Tn.value.length>=4,"aria-label":"Attach image",title:"Attach image (max 4)",dangerouslySetInnerHTML:{__html:kt}}),X("button",{type:"button",class:"_pillar-unified-send-btn pillar-unified-send-btn",onClick:w,disabled:n||k||!S,"aria-label":"Send message",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg>'}})]}),d&&X("div",{class:"_pillar-chat-drop-overlay pillar-chat-drop-overlay",children:[X("span",{dangerouslySetInnerHTML:{__html:kt}}),X("span",{children:"Drop image here"})]})]})}function Ct({text:e,onClick:n}){return X("button",{type:"button",class:"_pillar-question-chip pillar-question-chip",onClick:n,children:[X("span",{class:"_pillar-question-chip-text pillar-question-chip-text",children:e}),X("span",{class:"_pillar-question-chip-arrow pillar-question-chip-arrow",children:"→"})]})}function Pt(){return X("div",{class:"_pillar-question-chip-skeleton pillar-question-chip-skeleton",children:X("div",{class:"_pillar-question-chip-skeleton-bar pillar-question-chip-skeleton-bar"})})}function Et(){const e=nt(),[n,t]=ce(null),[i,r]=ce(!0);de(()=>{let n=!0;return(async()=>{try{const i=await e.getSuggestedQuestions();n&&(t(i),r(!1))}catch(e){n&&(console.error("[Pillar] Failed to load suggested questions:",e),t([]),r(!1))}})(),()=>{n=!1}},[e]);return X("div",{class:"_pillar-home-view pillar-home-view",children:[X("div",{class:"_pillar-home-view-header pillar-home-view-header",children:[X("div",{class:"_pillar-home-view-icon",children:"💬"}),X("h2",{class:"_pillar-home-view-title pillar-home-view-title",children:"How can I help?"})]}),X("div",{class:"_pillar-home-view-questions pillar-home-view-questions",children:i?X(T,{children:[X(Pt,{}),X(Pt,{}),X(Pt,{})]}):n&&n.length>0?n.map(e=>X(Ct,{text:e.text,onClick:()=>(e=>{Rn(e.text),Vn()})(e)},e.id)):null}),X("div",{style:{marginTop:"auto"},children:X(St,{placeholder:"Ask anything... (paste or drop images)"})})]})}function Tt(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var $t={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function zt(e){$t=e}var Mt={exec:()=>null};function At(e,n=""){let t="string"==typeof e?e:e.source,i={replace:(e,n)=>{let r="string"==typeof n?n:n.source;return r=r.replace(Rt.caret,"$1"),t=t.replace(e,r),i},getRegex:()=>new RegExp(t,n)};return i}var It=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),Rt={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},Lt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Bt=/(?:[*+-]|\d{1,9}[.)])/,jt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Ht=At(jt).replace(/bull/g,Bt).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Dt=At(jt).replace(/bull/g,Bt).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),qt=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Ot=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Nt=At(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ot).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Ut=At(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Bt).getRegex(),Ft="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Wt=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Vt=At("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",Wt).replace("tag",Ft).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Kt=At(qt).replace("hr",Lt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ft).getRegex(),Zt={blockquote:At(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Kt).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:Nt,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:Lt,html:Vt,lheading:Ht,list:Ut,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:Kt,table:Mt,text:/^[^\n]+/},Xt=At("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Lt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ft).getRegex(),Qt={...Zt,lheading:Dt,table:Xt,paragraph:At(qt).replace("hr",Lt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Xt).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ft).getRegex()},Gt={...Zt,html:At("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Wt).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Mt,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:At(qt).replace("hr",Lt).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Ht).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Yt=/^( {2,}|\\)\n(?!\s*$)/,Jt=/[\p{P}\p{S}]/u,ei=/[\s\p{P}\p{S}]/u,ni=/[^\s\p{P}\p{S}]/u,ti=At(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,ei).getRegex(),ii=/(?!~)[\p{P}\p{S}]/u,ri=At(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",It?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),ai=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,li=At(ai,"u").replace(/punct/g,Jt).getRegex(),oi=At(ai,"u").replace(/punct/g,ii).getRegex(),si="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",pi=At(si,"gu").replace(/notPunctSpace/g,ni).replace(/punctSpace/g,ei).replace(/punct/g,Jt).getRegex(),ci=At(si,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,ii).getRegex(),di=At("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,ni).replace(/punctSpace/g,ei).replace(/punct/g,Jt).getRegex(),ui=At(/\\(punct)/,"gu").replace(/punct/g,Jt).getRegex(),hi=At(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),fi=At(Wt).replace("(?:--\x3e|$)","--\x3e").getRegex(),gi=At("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",fi).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),_i=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,mi=At(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",_i).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),vi=At(/^!?\[(label)\]\[(ref)\]/).replace("label",_i).replace("ref",Ot).getRegex(),bi=At(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ot).getRegex(),xi=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,yi={_backpedal:Mt,anyPunctuation:ui,autolink:hi,blockSkip:ri,br:Yt,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:Mt,emStrongLDelim:li,emStrongRDelimAst:pi,emStrongRDelimUnd:di,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:mi,nolink:bi,punctuation:ti,reflink:vi,reflinkSearch:At("reflink|nolink(?!\\()","g").replace("reflink",vi).replace("nolink",bi).getRegex(),tag:gi,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,url:Mt},wi={...yi,link:At(/^!?\[(label)\]\((.*?)\)/).replace("label",_i).getRegex(),reflink:At(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",_i).getRegex()},ki={...yi,emStrongRDelimAst:ci,emStrongLDelim:oi,url:At(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",xi).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:At(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",xi).getRegex()},Si={...ki,br:At(Yt).replace("{2,}","*").getRegex(),text:At(ki.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Ci={normal:Zt,gfm:Qt,pedantic:Gt},Pi={normal:yi,gfm:ki,breaks:Si,pedantic:wi},Ei={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Ti=e=>Ei[e];function $i(e,n){if(n){if(Rt.escapeTest.test(e))return e.replace(Rt.escapeReplace,Ti)}else if(Rt.escapeTestNoEncode.test(e))return e.replace(Rt.escapeReplaceNoEncode,Ti);return e}function zi(e){try{e=encodeURI(e).replace(Rt.percentDecode,"%")}catch{return null}return e}function Mi(e,n){let t=e.replace(Rt.findPipe,(e,n,t)=>{let i=!1,r=n;for(;--r>=0&&"\\"===t[r];)i=!i;return i?"|":" |"}),i=t.split(Rt.splitPipe),r=0;if(i[0].trim()||i.shift(),i.length>0&&!i.at(-1)?.trim()&&i.pop(),n)if(i.length>n)i.splice(n);else for(;i.length<n;)i.push("");for(;r<i.length;r++)i[r]=i[r].trim().replace(Rt.slashPipe,"|");return i}function Ai(e,n,t){let i=e.length;if(0===i)return"";let r=0;for(;r<i;){if(e.charAt(i-r-1)!==n)break;r++}return e.slice(0,i-r)}function Ii(e,n,t,i,r){let a=n.href,l=n.title||null,o=e[1].replace(r.other.outputLinkReplace,"$1");i.state.inLink=!0;let s={type:"!"===e[0].charAt(0)?"image":"link",raw:t,href:a,title:l,text:o,tokens:i.inlineTokens(o)};return i.state.inLink=!1,s}var Ri=class{options;rules;lexer;constructor(e){this.options=e||$t}space(e){let n=this.rules.block.newline.exec(e);if(n&&n[0].length>0)return{type:"space",raw:n[0]}}code(e){let n=this.rules.block.code.exec(e);if(n){let e=n[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?e:Ai(e,"\n")}}}fences(e){let n=this.rules.block.fences.exec(e);if(n){let e=n[0],t=function(e,n,t){let i=e.match(t.other.indentCodeCompensation);if(null===i)return n;let r=i[1];return n.split("\n").map(e=>{let n=e.match(t.other.beginningSpace);if(null===n)return e;let[i]=n;return i.length>=r.length?e.slice(r.length):e}).join("\n")}(e,n[3]||"",this.rules);return{type:"code",raw:e,lang:n[2]?n[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):n[2],text:t}}}heading(e){let n=this.rules.block.heading.exec(e);if(n){let e=n[2].trim();if(this.rules.other.endingHash.test(e)){let n=Ai(e,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(e=n.trim())}return{type:"heading",raw:n[0],depth:n[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let n=this.rules.block.hr.exec(e);if(n)return{type:"hr",raw:Ai(n[0],"\n")}}blockquote(e){let n=this.rules.block.blockquote.exec(e);if(n){let e=Ai(n[0],"\n").split("\n"),t="",i="",r=[];for(;e.length>0;){let n,a=!1,l=[];for(n=0;n<e.length;n++)if(this.rules.other.blockquoteStart.test(e[n]))l.push(e[n]),a=!0;else{if(a)break;l.push(e[n])}e=e.slice(n);let o=l.join("\n"),s=o.replace(this.rules.other.blockquoteSetextReplace,"\n $1").replace(this.rules.other.blockquoteSetextReplace2,"");t=t?`${t}\n${o}`:o,i=i?`${i}\n${s}`:s;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(s,r,!0),this.lexer.state.top=p,0===e.length)break;let c=r.at(-1);if("code"===c?.type)break;if("blockquote"===c?.type){let n=c,a=n.raw+"\n"+e.join("\n"),l=this.blockquote(a);r[r.length-1]=l,t=t.substring(0,t.length-n.raw.length)+l.raw,i=i.substring(0,i.length-n.text.length)+l.text;break}if("list"===c?.type){let n=c,a=n.raw+"\n"+e.join("\n"),l=this.list(a);r[r.length-1]=l,t=t.substring(0,t.length-c.raw.length)+l.raw,i=i.substring(0,i.length-n.raw.length)+l.raw,e=a.substring(r.at(-1).raw.length).split("\n");continue}}return{type:"blockquote",raw:t,tokens:r,text:i}}}list(e){let n=this.rules.block.list.exec(e);if(n){let t=n[1].trim(),i=t.length>1,r={type:"list",raw:"",ordered:i,start:i?+t.slice(0,-1):"",loose:!1,items:[]};t=i?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=i?t:"[*+-]");let a=this.rules.other.listItemRegex(t),l=!1;for(;e;){let t=!1,i="",o="";if(!(n=a.exec(e))||this.rules.block.hr.test(e))break;i=n[0],e=e.substring(i.length);let s=n[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,e=>" ".repeat(3*e.length)),p=e.split("\n",1)[0],c=!s.trim(),d=0;if(this.options.pedantic?(d=2,o=s.trimStart()):c?d=n[1].length+1:(d=n[2].search(this.rules.other.nonSpaceChar),d=d>4?1:d,o=s.slice(d),d+=n[1].length),c&&this.rules.other.blankLine.test(p)&&(i+=p+"\n",e=e.substring(p.length+1),t=!0),!t){let n=this.rules.other.nextBulletRegex(d),t=this.rules.other.hrRegex(d),r=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),l=this.rules.other.htmlBeginRegex(d);for(;e;){let u,h=e.split("\n",1)[0];if(p=h,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),u=p):u=p.replace(this.rules.other.tabCharGlobal," "),r.test(p)||a.test(p)||l.test(p)||n.test(p)||t.test(p))break;if(u.search(this.rules.other.nonSpaceChar)>=d||!p.trim())o+="\n"+u.slice(d);else{if(c||s.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||r.test(s)||a.test(s)||t.test(s))break;o+="\n"+p}!c&&!p.trim()&&(c=!0),i+=h+"\n",e=e.substring(h.length+1),s=u.slice(d)}}r.loose||(l?r.loose=!0:this.rules.other.doubleBlankLine.test(i)&&(l=!0)),r.items.push({type:"list_item",raw:i,task:!!this.options.gfm&&this.rules.other.listIsTask.test(o),loose:!1,text:o,tokens:[]}),r.raw+=i}let o=r.items.at(-1);if(!o)return;o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd(),r.raw=r.raw.trimEnd();for(let e of r.items){if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),e.task){if(e.text=e.text.replace(this.rules.other.listReplaceTask,""),"text"===e.tokens[0]?.type||"paragraph"===e.tokens[0]?.type){e.tokens[0].raw=e.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),e.tokens[0].text=e.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,"");break}}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:"checkbox",raw:n[0]+" ",checked:"[ ]"!==n[0]};e.checked=t.checked,r.loose?e.tokens[0]&&["paragraph","text"].includes(e.tokens[0].type)&&"tokens"in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:"paragraph",raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}if(!r.loose){let n=e.tokens.filter(e=>"space"===e.type),t=n.length>0&&n.some(e=>this.rules.other.anyLine.test(e.raw));r.loose=t}}if(r.loose)for(let e of r.items){e.loose=!0;for(let n of e.tokens)"text"===n.type&&(n.type="paragraph")}return r}}html(e){let n=this.rules.block.html.exec(e);if(n)return{type:"html",block:!0,raw:n[0],pre:"pre"===n[1]||"script"===n[1]||"style"===n[1],text:n[0]}}def(e){let n=this.rules.block.def.exec(e);if(n){let e=n[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),t=n[2]?n[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=n[3]?n[3].substring(1,n[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):n[3];return{type:"def",tag:e,raw:n[0],href:t,title:i}}}table(e){let n=this.rules.block.table.exec(e);if(!n||!this.rules.other.tableDelimiter.test(n[2]))return;let t=Mi(n[1]),i=n[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=n[3]?.trim()?n[3].replace(this.rules.other.tableRowBlankLine,"").split("\n"):[],a={type:"table",raw:n[0],header:[],align:[],rows:[]};if(t.length===i.length){for(let e of i)this.rules.other.tableAlignRight.test(e)?a.align.push("right"):this.rules.other.tableAlignCenter.test(e)?a.align.push("center"):this.rules.other.tableAlignLeft.test(e)?a.align.push("left"):a.align.push(null);for(let e=0;e<t.length;e++)a.header.push({text:t[e],tokens:this.lexer.inline(t[e]),header:!0,align:a.align[e]});for(let e of r)a.rows.push(Mi(e,a.header.length).map((e,n)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[n]})));return a}}lheading(e){let n=this.rules.block.lheading.exec(e);if(n)return{type:"heading",raw:n[0],depth:"="===n[2].charAt(0)?1:2,text:n[1],tokens:this.lexer.inline(n[1])}}paragraph(e){let n=this.rules.block.paragraph.exec(e);if(n){let e="\n"===n[1].charAt(n[1].length-1)?n[1].slice(0,-1):n[1];return{type:"paragraph",raw:n[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let n=this.rules.block.text.exec(e);if(n)return{type:"text",raw:n[0],text:n[0],tokens:this.lexer.inline(n[0])}}escape(e){let n=this.rules.inline.escape.exec(e);if(n)return{type:"escape",raw:n[0],text:n[1]}}tag(e){let n=this.rules.inline.tag.exec(e);if(n)return!this.lexer.state.inLink&&this.rules.other.startATag.test(n[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(n[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(n[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(n[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:n[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:n[0]}}link(e){let n=this.rules.inline.link.exec(e);if(n){let e=n[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let n=Ai(e.slice(0,-1),"\\");if((e.length-n.length)%2==0)return}else{let e=function(e,n){if(-1===e.indexOf(n[1]))return-1;let t=0;for(let i=0;i<e.length;i++)if("\\"===e[i])i++;else if(e[i]===n[0])t++;else if(e[i]===n[1]&&(t--,t<0))return i;return t>0?-2:-1}(n[2],"()");if(-2===e)return;if(e>-1){let t=(0===n[0].indexOf("!")?5:4)+n[1].length+e;n[2]=n[2].substring(0,e),n[0]=n[0].substring(0,t).trim(),n[3]=""}}let t=n[2],i="";if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(t);e&&(t=e[1],i=e[3])}else i=n[3]?n[3].slice(1,-1):"";return t=t.trim(),this.rules.other.startAngleBracket.test(t)&&(t=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?t.slice(1):t.slice(1,-1)),Ii(n,{href:t&&t.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},n[0],this.lexer,this.rules)}}reflink(e,n){let t;if((t=this.rules.inline.reflink.exec(e))||(t=this.rules.inline.nolink.exec(e))){let e=n[(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!e){let e=t[0].charAt(0);return{type:"text",raw:e,text:e}}return Ii(t,e,t[0],this.lexer,this.rules)}}emStrong(e,n,t=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!(!i||i[3]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!i[1]&&!i[2]||!t||this.rules.inline.punctuation.exec(t))){let t,r,a=[...i[0]].length-1,l=a,o=0,s="*"===i[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(s.lastIndex=0,n=n.slice(-1*e.length+a);null!=(i=s.exec(n));){if(t=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!t)continue;if(r=[...t].length,i[3]||i[4]){l+=r;continue}if((i[5]||i[6])&&a%3&&!((a+r)%3)){o+=r;continue}if(l-=r,l>0)continue;r=Math.min(r,r+l+o);let n=[...i[0]][0].length,s=e.slice(0,a+i.index+n+r);if(Math.min(a,r)%2){let e=s.slice(1,-1);return{type:"em",raw:s,text:e,tokens:this.lexer.inlineTokens(e)}}let p=s.slice(2,-2);return{type:"strong",raw:s,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(e){let n=this.rules.inline.code.exec(e);if(n){let e=n[2].replace(this.rules.other.newLineCharGlobal," "),t=this.rules.other.nonSpaceChar.test(e),i=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return t&&i&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:n[0],text:e}}}br(e){let n=this.rules.inline.br.exec(e);if(n)return{type:"br",raw:n[0]}}del(e){let n=this.rules.inline.del.exec(e);if(n)return{type:"del",raw:n[0],text:n[2],tokens:this.lexer.inlineTokens(n[2])}}autolink(e){let n=this.rules.inline.autolink.exec(e);if(n){let e,t;return"@"===n[2]?(e=n[1],t="mailto:"+e):(e=n[1],t=e),{type:"link",raw:n[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let n;if(n=this.rules.inline.url.exec(e)){let e,t;if("@"===n[2])e=n[0],t="mailto:"+e;else{let i;do{i=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])?.[0]??""}while(i!==n[0]);e=n[0],t="www."===n[1]?"http://"+n[0]:n[0]}return{type:"link",raw:n[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){let n=this.rules.inline.text.exec(e);if(n){let e=this.lexer.state.inRawBlock;return{type:"text",raw:n[0],text:n[0],escaped:e}}}},Li=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||$t,this.options.tokenizer=this.options.tokenizer||new Ri,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:Rt,block:Ci.normal,inline:Pi.normal};this.options.pedantic?(n.block=Ci.pedantic,n.inline=Pi.pedantic):this.options.gfm&&(n.block=Ci.gfm,this.options.breaks?n.inline=Pi.breaks:n.inline=Pi.gfm),this.tokenizer.rules=n}static get rules(){return{block:Ci,inline:Pi}}static lex(n,t){return new e(t).lex(n)}static lexInline(n,t){return new e(t).inlineTokens(n)}lex(e){e=e.replace(Rt.carriageReturn,"\n"),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let n=this.inlineQueue[e];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,n=[],t=!1){for(this.options.pedantic&&(e=e.replace(Rt.tabCharGlobal," ").replace(Rt.spaceLine,""));e;){let i;if(this.options.extensions?.block?.some(t=>!!(i=t.call({lexer:this},e,n))&&(e=e.substring(i.raw.length),n.push(i),!0)))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let t=n.at(-1);1===i.raw.length&&void 0!==t?t.raw+="\n":n.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let t=n.at(-1);"paragraph"===t?.type||"text"===t?.type?(t.raw+=(t.raw.endsWith("\n")?"":"\n")+i.raw,t.text+="\n"+i.text,this.inlineQueue.at(-1).src=t.text):n.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let t=n.at(-1);"paragraph"===t?.type||"text"===t?.type?(t.raw+=(t.raw.endsWith("\n")?"":"\n")+i.raw,t.text+="\n"+i.raw,this.inlineQueue.at(-1).src=t.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},n.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),n.push(i);continue}let r=e;if(this.options.extensions?.startBlock){let n,t=1/0,i=e.slice(1);this.options.extensions.startBlock.forEach(e=>{n=e.call({lexer:this},i),"number"==typeof n&&n>=0&&(t=Math.min(t,n))}),t<1/0&&t>=0&&(r=e.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(r))){let a=n.at(-1);t&&"paragraph"===a?.type?(a.raw+=(a.raw.endsWith("\n")?"":"\n")+i.raw,a.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):n.push(i),t=r.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let t=n.at(-1);"text"===t?.type?(t.raw+=(t.raw.endsWith("\n")?"":"\n")+i.raw,t.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=t.text):n.push(i);continue}if(e){let n="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(n);break}throw new Error(n)}}return this.state.top=!0,n}inline(e,n=[]){return this.inlineQueue.push({src:e,tokens:n}),n}inlineTokens(e,n=[]){let t,i=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(i));)e.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.anyPunctuation.exec(i));)i=i.slice(0,r.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(i));)t=r[2]?r[2].length:0,i=i.slice(0,r.index+t)+"["+"a".repeat(r[0].length-t-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=this.options.hooks?.emStrongMask?.call({lexer:this},i)??i;let a=!1,l="";for(;e;){let t;if(a||(l=""),a=!1,this.options.extensions?.inline?.some(i=>!!(t=i.call({lexer:this},e,n))&&(e=e.substring(t.raw.length),n.push(t),!0)))continue;if(t=this.tokenizer.escape(e)){e=e.substring(t.raw.length),n.push(t);continue}if(t=this.tokenizer.tag(e)){e=e.substring(t.raw.length),n.push(t);continue}if(t=this.tokenizer.link(e)){e=e.substring(t.raw.length),n.push(t);continue}if(t=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(t.raw.length);let i=n.at(-1);"text"===t.type&&"text"===i?.type?(i.raw+=t.raw,i.text+=t.text):n.push(t);continue}if(t=this.tokenizer.emStrong(e,i,l)){e=e.substring(t.raw.length),n.push(t);continue}if(t=this.tokenizer.codespan(e)){e=e.substring(t.raw.length),n.push(t);continue}if(t=this.tokenizer.br(e)){e=e.substring(t.raw.length),n.push(t);continue}if(t=this.tokenizer.del(e)){e=e.substring(t.raw.length),n.push(t);continue}if(t=this.tokenizer.autolink(e)){e=e.substring(t.raw.length),n.push(t);continue}if(!this.state.inLink&&(t=this.tokenizer.url(e))){e=e.substring(t.raw.length),n.push(t);continue}let r=e;if(this.options.extensions?.startInline){let n,t=1/0,i=e.slice(1);this.options.extensions.startInline.forEach(e=>{n=e.call({lexer:this},i),"number"==typeof n&&n>=0&&(t=Math.min(t,n))}),t<1/0&&t>=0&&(r=e.substring(0,t+1))}if(t=this.tokenizer.inlineText(r)){e=e.substring(t.raw.length),"_"!==t.raw.slice(-1)&&(l=t.raw.slice(-1)),a=!0;let i=n.at(-1);"text"===i?.type?(i.raw+=t.raw,i.text+=t.text):n.push(t);continue}if(e){let n="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(n);break}throw new Error(n)}}return n}},Bi=class{options;parser;constructor(e){this.options=e||$t}space(e){return""}code({text:e,lang:n,escaped:t}){let i=(n||"").match(Rt.notSpaceStart)?.[0],r=e.replace(Rt.endingNewline,"")+"\n";return i?'<pre><code class="language-'+$i(i)+'">'+(t?r:$i(r,!0))+"</code></pre>\n":"<pre><code>"+(t?r:$i(r,!0))+"</code></pre>\n"}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:n}){return`<h${n}>${this.parser.parseInline(e)}</h${n}>\n`}hr(e){return"<hr>\n"}list(e){let n=e.ordered,t=e.start,i="";for(let n=0;n<e.items.length;n++){let t=e.items[n];i+=this.listitem(t)}let r=n?"ol":"ul";return"<"+r+(n&&1!==t?' start="'+t+'"':"")+">\n"+i+"</"+r+">\n"}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>\n`}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let n="",t="";for(let n=0;n<e.header.length;n++)t+=this.tablecell(e.header[n]);n+=this.tablerow({text:t});let i="";for(let n=0;n<e.rows.length;n++){let r=e.rows[n];t="";for(let e=0;e<r.length;e++)t+=this.tablecell(r[e]);i+=this.tablerow({text:t})}return i&&(i=`<tbody>${i}</tbody>`),"<table>\n<thead>\n"+n+"</thead>\n"+i+"</table>\n"}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let n=this.parser.parseInline(e.tokens),t=e.header?"th":"td";return(e.align?`<${t} align="${e.align}">`:`<${t}>`)+n+`</${t}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${$i(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:n,tokens:t}){let i=this.parser.parseInline(t),r=zi(e);if(null===r)return i;let a='<a href="'+(e=r)+'"';return n&&(a+=' title="'+$i(n)+'"'),a+=">"+i+"</a>",a}image({href:e,title:n,text:t,tokens:i}){i&&(t=this.parser.parseInline(i,this.parser.textRenderer));let r=zi(e);if(null===r)return $i(t);let a=`<img src="${e=r}" alt="${t}"`;return n&&(a+=` title="${$i(n)}"`),a+=">",a}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:$i(e.text)}},ji=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},Hi=class e{options;renderer;textRenderer;constructor(e){this.options=e||$t,this.options.renderer=this.options.renderer||new Bi,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new ji}static parse(n,t){return new e(t).parse(n)}static parseInline(n,t){return new e(t).parseInline(n)}parse(e){let n="";for(let t=0;t<e.length;t++){let i=e[t];if(this.options.extensions?.renderers?.[i.type]){let e=i,t=this.options.extensions.renderers[e.type].call({parser:this},e);if(!1!==t||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(e.type)){n+=t||"";continue}}let r=i;switch(r.type){case"space":n+=this.renderer.space(r);break;case"hr":n+=this.renderer.hr(r);break;case"heading":n+=this.renderer.heading(r);break;case"code":n+=this.renderer.code(r);break;case"table":n+=this.renderer.table(r);break;case"blockquote":n+=this.renderer.blockquote(r);break;case"list":n+=this.renderer.list(r);break;case"checkbox":n+=this.renderer.checkbox(r);break;case"html":n+=this.renderer.html(r);break;case"def":n+=this.renderer.def(r);break;case"paragraph":n+=this.renderer.paragraph(r);break;case"text":n+=this.renderer.text(r);break;default:{let e='Token with "'+r.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw new Error(e)}}}return n}parseInline(e,n=this.renderer){let t="";for(let i=0;i<e.length;i++){let r=e[i];if(this.options.extensions?.renderers?.[r.type]){let e=this.options.extensions.renderers[r.type].call({parser:this},r);if(!1!==e||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(r.type)){t+=e||"";continue}}let a=r;switch(a.type){case"escape":case"text":t+=n.text(a);break;case"html":t+=n.html(a);break;case"link":t+=n.link(a);break;case"image":t+=n.image(a);break;case"checkbox":t+=n.checkbox(a);break;case"strong":t+=n.strong(a);break;case"em":t+=n.em(a);break;case"codespan":t+=n.codespan(a);break;case"br":t+=n.br(a);break;case"del":t+=n.del(a);break;default:{let e='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw new Error(e)}}}return t}},Di=class{options;block;constructor(e){this.options=e||$t}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?Li.lex:Li.lexInline}provideParser(){return this.block?Hi.parse:Hi.parseInline}},qi=new class{defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Hi;Renderer=Bi;TextRenderer=ji;Lexer=Li;Tokenizer=Ri;Hooks=Di;constructor(...e){this.use(...e)}walkTokens(e,n){let t=[];for(let i of e)switch(t=t.concat(n.call(this,i)),i.type){case"table":{let e=i;for(let i of e.header)t=t.concat(this.walkTokens(i.tokens,n));for(let i of e.rows)for(let e of i)t=t.concat(this.walkTokens(e.tokens,n));break}case"list":{let e=i;t=t.concat(this.walkTokens(e.items,n));break}default:{let e=i;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(i=>{let r=e[i].flat(1/0);t=t.concat(this.walkTokens(r,n))}):e.tokens&&(t=t.concat(this.walkTokens(e.tokens,n)))}}return t}use(...e){let n=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let t={...e};if(t.async=this.defaults.async||t.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){let t=n.renderers[e.name];n.renderers[e.name]=t?function(...n){let i=e.renderer.apply(this,n);return!1===i&&(i=t.apply(this,n)),i}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");let t=n[e.level];t?t.unshift(e.tokenizer):n[e.level]=[e.tokenizer],e.start&&("block"===e.level?n.startBlock?n.startBlock.push(e.start):n.startBlock=[e.start]:"inline"===e.level&&(n.startInline?n.startInline.push(e.start):n.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(n.childTokens[e.name]=e.childTokens)}),t.extensions=n),e.renderer){let n=this.defaults.renderer||new Bi(this.defaults);for(let t in e.renderer){if(!(t in n))throw new Error(`renderer '${t}' does not exist`);if(["options","parser"].includes(t))continue;let i=t,r=e.renderer[i],a=n[i];n[i]=(...e)=>{let t=r.apply(n,e);return!1===t&&(t=a.apply(n,e)),t||""}}t.renderer=n}if(e.tokenizer){let n=this.defaults.tokenizer||new Ri(this.defaults);for(let t in e.tokenizer){if(!(t in n))throw new Error(`tokenizer '${t}' does not exist`);if(["options","rules","lexer"].includes(t))continue;let i=t,r=e.tokenizer[i],a=n[i];n[i]=(...e)=>{let t=r.apply(n,e);return!1===t&&(t=a.apply(n,e)),t}}t.tokenizer=n}if(e.hooks){let n=this.defaults.hooks||new Di;for(let t in e.hooks){if(!(t in n))throw new Error(`hook '${t}' does not exist`);if(["options","block"].includes(t))continue;let i=t,r=e.hooks[i],a=n[i];Di.passThroughHooks.has(t)?n[i]=e=>{if(this.defaults.async&&Di.passThroughHooksRespectAsync.has(t))return(async()=>{let t=await r.call(n,e);return a.call(n,t)})();let i=r.call(n,e);return a.call(n,i)}:n[i]=(...e)=>{if(this.defaults.async)return(async()=>{let t=await r.apply(n,e);return!1===t&&(t=await a.apply(n,e)),t})();let t=r.apply(n,e);return!1===t&&(t=a.apply(n,e)),t}}t.hooks=n}if(e.walkTokens){let n=this.defaults.walkTokens,i=e.walkTokens;t.walkTokens=function(e){let t=[];return t.push(i.call(this,e)),n&&(t=t.concat(n.call(this,e))),t}}this.defaults={...this.defaults,...t}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,n){return Li.lex(e,n??this.defaults)}parser(e,n){return Hi.parse(e,n??this.defaults)}parseMarkdown(e){return(n,t)=>{let i={...t},r={...this.defaults,...i},a=this.onError(!!r.silent,!!r.async);if(!0===this.defaults.async&&!1===i.async)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||null===n)return a(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof n)return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=e),r.async)return(async()=>{let t=r.hooks?await r.hooks.preprocess(n):n,i=await(r.hooks?await r.hooks.provideLexer():e?Li.lex:Li.lexInline)(t,r),a=r.hooks?await r.hooks.processAllTokens(i):i;r.walkTokens&&await Promise.all(this.walkTokens(a,r.walkTokens));let l=await(r.hooks?await r.hooks.provideParser():e?Hi.parse:Hi.parseInline)(a,r);return r.hooks?await r.hooks.postprocess(l):l})().catch(a);try{r.hooks&&(n=r.hooks.preprocess(n));let t=(r.hooks?r.hooks.provideLexer():e?Li.lex:Li.lexInline)(n,r);r.hooks&&(t=r.hooks.processAllTokens(t)),r.walkTokens&&this.walkTokens(t,r.walkTokens);let i=(r.hooks?r.hooks.provideParser():e?Hi.parse:Hi.parseInline)(t,r);return r.hooks&&(i=r.hooks.postprocess(i)),i}catch(e){return a(e)}}}onError(e,n){return t=>{if(t.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let e="<p>An error occurred:</p><pre>"+$i(t.message+"",!0)+"</pre>";return n?Promise.resolve(e):e}if(n)return Promise.reject(t);throw t}}};function Oi(e,n){return qi.parse(e,n)}function Ni(e){try{return Oi.parse(e)}catch(n){return console.error("[Pillar] Markdown parsing error:",n),e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\n/g,"<br>")}}Oi.options=Oi.setOptions=function(e){return qi.setOptions(e),Oi.defaults=qi.defaults,zt(Oi.defaults),Oi},Oi.getDefaults=Tt,Oi.defaults=$t,Oi.use=function(...e){return qi.use(...e),Oi.defaults=qi.defaults,zt(Oi.defaults),Oi},Oi.walkTokens=function(e,n){return qi.walkTokens(e,n)},Oi.parseInline=qi.parseInline,Oi.Parser=Hi,Oi.parser=Hi.parse,Oi.Renderer=Bi,Oi.TextRenderer=ji,Oi.Lexer=Li,Oi.lexer=Li.lex,Oi.Tokenizer=Ri,Oi.Hooks=Di,Oi.parse=Oi,Oi.options,Oi.setOptions,Oi.use,Oi.walkTokens,Oi.parseInline,Hi.parse,Li.lex,Oi.setOptions({gfm:!0,breaks:!0});const Ui={navigate:"arrow-right",open_modal:"layout",fill_form:"edit",trigger_action:"zap",copy_text:"copy",external_link:"external-link",start_tutorial:"play-circle"},Fi={"arrow-right":'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12,5 19,12 12,19"/></svg>',"user-plus":'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="8.5" cy="7" r="4"/><line x1="20" y1="8" x2="20" y2="14"/><line x1="23" y1="11" x2="17" y2="11"/></svg>',settings:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>',"external-link":'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15,3 21,3 21,9"/><line x1="10" y1="14" x2="21" y2="3"/></svg>',"play-circle":'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polygon points="10,8 16,12 10,16 10,8"/></svg>',zap:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13,2 3,14 12,14 11,22 21,10 12,10 13,2"/></svg>',"message-circle":'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"/></svg>',download:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7,10 12,15 17,10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>',copy:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>',layout:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><line x1="3" y1="9" x2="21" y2="9"/><line x1="9" y1="21" x2="9" y2="9"/></svg>',edit:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>'};function Wi(e){const{task:n,onExecute:t}=e,i=document.createElement("button");i.className=function(e="primary"){return`pillar-task-btn pillar-task-btn--${e}`}(n.buttonVariant||"primary"),i.type="button";const r=n.icon||((a=n.taskType)&&Ui[a]||"zap");var a;if(r&&Fi[r]){const e=document.createElement("span");e.className="pillar-task-btn__icon",e.innerHTML=Fi[r],i.appendChild(e)}const l=n.label||n.name.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");const o=document.createElement("span");return o.className="pillar-task-btn__label",o.textContent=l,i.appendChild(o),i.addEventListener("click",()=>{const e=Br.getInstance();if(e){const t=n.data||{},i=n.path||t.path,r=n.externalUrl||t.url,a={id:n.id,name:n.name,data:t,taskType:n.taskType,path:i,externalUrl:r};e.executeTask(a)}t?.()}),i}const Vi="\n/* Task Button Component */\n.pillar-task-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n font-size: 13px;\n font-weight: 500;\n font-family: inherit;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.15s ease;\n border: 1px solid transparent;\n text-decoration: none;\n}\n\n.pillar-task-btn__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.pillar-task-btn__icon svg {\n width: 16px;\n height: 16px;\n}\n\n.pillar-task-btn__label {\n white-space: nowrap;\n}\n\n/* Primary variant (default) */\n.pillar-task-btn--primary {\n background: #2563eb;\n color: #ffffff;\n border-color: #2563eb;\n}\n\n.pillar-task-btn--primary:hover {\n background: #1d4ed8;\n border-color: #1d4ed8;\n}\n\n/* Default variant */\n.pillar-task-btn--default {\n background: #f3f4f6;\n color: #1a1a1a;\n border-color: #e5e7eb;\n}\n\n.pillar-task-btn--default:hover {\n background: #e5e7eb;\n}\n\n/* Secondary variant */\n.pillar-task-btn--secondary {\n background: #eff6ff;\n color: #2563eb;\n border-color: #dbeafe;\n}\n\n.pillar-task-btn--secondary:hover {\n background: #dbeafe;\n}\n\n/* Outline variant */\n.pillar-task-btn--outline {\n background: transparent;\n color: #2563eb;\n border-color: #2563eb;\n}\n\n.pillar-task-btn--outline:hover {\n background: #eff6ff;\n}\n\n/* Ghost variant */\n.pillar-task-btn--ghost {\n background: transparent;\n color: #6b7280;\n border-color: transparent;\n}\n\n.pillar-task-btn--ghost:hover {\n background: #f3f4f6;\n color: #1a1a1a;\n}\n\n/* Task button group */\n.pillar-task-btn-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 12px;\n}\n\n/* Task suggestion card in chat */\n.pillar-task-suggestion {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 12px;\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n margin-top: 12px;\n}\n\n.pillar-task-suggestion__header {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: #6b7280;\n}\n\n.pillar-task-suggestion__header svg {\n width: 14px;\n height: 14px;\n}\n\n.pillar-task-suggestion__description {\n font-size: 13px;\n color: #374151;\n}\n";function Ki(){const e=nt(),n=ue(null),t=ue(!1);de(()=>{if(t.current)return;const e=Sn.value,n=En.value;e&&(t.current=!0,Sn.value=null,En.value=[],a(e,n.length>0?n:void 0))},[]),de(()=>{n.current&&(n.current.scrollTop=n.current.scrollHeight)},[_n.value]),de(()=>{const e=Br.getInstance();if(!e)return;const n=e.on("task:complete",({name:e,success:n})=>{((e,n,t)=>{const i=_n.value;for(let r=i.length-1;r>=0;r--){const a=i[r];if(a.actionStatus?.[e]){const l={...a.actionStatus,[e]:{status:n?"success":"failed",completedAt:Date.now(),errorMessage:t}};return void(_n.value=[...i.slice(0,r),{...a,actionStatus:l},...i.slice(r+1)])}}})(e,n);const t=function(e,n){const t=e.replace(/_/g," ").toLowerCase();return n?t.startsWith("open ")?`Opened ${t.slice(5)}`:t.startsWith("go to ")?`Navigated to ${t.slice(6)}`:t.startsWith("navigate to ")?`Navigated to ${t.slice(12)}`:"Done!":`Failed to ${t}`}(e,n);((e,n)=>{const t=_n.value;for(let i=t.length-1;i>=0;i--){const r=t[i];if(r.actionStatus?.[e])return void(_n.value=[...t.slice(0,i),{...r,content:n},...t.slice(i+1)])}})(e,t)});return n},[]);const i=fe(e=>{console.log("[Pillar] Plan received:",e.id,e.goal);const n=Br.getInstance();n&&n.handlePlanReceived(e)},[]),r=fe(e=>{const n=Br.getInstance();console.log("[Pillar] handleActionsReceived called with",e.length,"actions"),console.log("[Pillar] Actions detail:",e.map(e=>({name:e.name,autoRun:e.autoRun})));const t=e.filter(e=>!0===e.autoRun),i=e.filter(e=>!e.autoRun);return console.log("[Pillar] Auto-run actions:",t.length,", Manual actions:",i.length),n&&t.length>0?(console.log("[Pillar] Executing auto-run actions..."),t.forEach(e=>{const t=e.data||{},i=t.path,r=t.url,a=_n.value.length-1;a>=0&&((e,n)=>{const t=_n.value;if(e>=0&&e<t.length){const i=t[e],r={...i.actionStatus||{},[n]:{status:"pending"}};_n.value=[...t.slice(0,e),{...i,actionStatus:r},...t.slice(e+1)]}})(a,e.name),console.log("[Pillar] Executing action:",e.name),n.executeTask({id:e.id,name:e.name,taskType:e.taskType,data:t,path:i,externalUrl:r})}),[]):n?i:(console.warn("[Pillar] No Pillar instance available for auto-run"),e)},[]),a=fe(async(n,t,a)=>{var l,o,s;((e,n,t)=>{_n.value=[..._n.value,{role:"user",content:e,userContext:n&&n.length>0?n:void 0,images:t&&t.length>0?t:void 0}]})(n,t,a),In(!0),l="",_n.value=[..._n.value,{role:"assistant",content:l,id:o}];try{let l="",o=[];const p=_n.value.slice(0,-1),c=await e.chat(n,p,e=>{l+=e,An(l)},void 0,mn.value,e=>{o=r(e)},i,t,a,e=>{var n;n={kind:e.kind,message:e.message},bn.value=n});let d=o;c.actions&&c.actions.length>0&&(d=r(c.actions)),An(c.message,c.messageId,d,c.sources),c.conversationId&&(s=c.conversationId,mn.value=s)}catch(e){console.error("[Pillar] Chat error:",e),An("Sorry, I encountered an error. Please try again.")}finally{In(!1),bn.value={kind:null}}},[e,r]),l=fe(async(n,t)=>{((e,n)=>{_n.value=_n.value.map(t=>t.id===e?{...t,feedback:n}:t)})(n,t),await e.submitFeedback(n,t)},[e]),o=fe((e,n,t)=>{vn.value||a(e,n.length>0?n:void 0,t.length>0?t:void 0)},[a]),s=ue(new Map);return de(()=>{const e=Br.getInstance();_n.value.forEach((n,t)=>{if("assistant"===n.role&&n.actions&&n.actions.length>0){const i=s.current.get(t);if(i&&0===i.children.length){const t=n.actions.filter(e=>"inline_ui"===e.taskType),r=n.actions.filter(e=>"inline_ui"!==e.taskType);if(t.forEach(n=>{const t=function(e,n,t){const i=document.createElement("div");i.className="pillar-confirm-card-wrapper";const r=e.data?.card_type||e.name,a=Br.getInstance(),l=a?.getCardRenderer(r),o={onConfirm:t=>{n(t||e.data)},onCancel:t,onStateChange:(e,n)=>{console.log(`[Pillar] Card state changed to ${e}${n?`: ${n}`:""}`)}};if(l)try{const n=l(i,e.data||{},o);i._cleanup=n||void 0}catch(e){console.error("[Pillar] Custom card renderer error:",e)}else{const n=Qn(e,o);i.appendChild(n)}return i}(n,t=>{e&&e.executeTask({id:n.id,name:n.name,taskType:n.taskType,data:t||n.data||{}})},()=>{console.log("[Pillar] Confirm action cancelled:",n.name)});i.appendChild(t)}),r.length>0){const e=function(e){const n=document.createElement("div");return n.className="pillar-task-btn-group",e.forEach(e=>{const t=Wi({task:e});n.appendChild(t)}),n}(r);i.appendChild(e)}}}})},[_n.value]),X("div",{class:"_pillar-chat-view pillar-chat-view",children:[X("div",{class:"_pillar-chat-view-messages pillar-chat-view-messages",ref:n,children:[0===_n.value.length&&X("div",{class:"_pillar-chat-view-welcome pillar-chat-view-welcome",children:[X("div",{class:"_pillar-chat-view-welcome-icon pillar-chat-view-welcome-icon",children:"💬"}),X("div",{class:"_pillar-chat-view-welcome-title pillar-chat-view-welcome-title",children:"Ask a question"}),X("div",{class:"_pillar-chat-view-welcome-text pillar-chat-view-welcome-text",children:"Ask me anything about how to use this product."})]}),_n.value.map((e,n)=>X("div",{class:`_pillar-chat-view-message pillar-chat-view-message _pillar-chat-view-message--${e.role} pillar-chat-view-message--${e.role}`,children:"user"===e.role?X("div",{class:"_pillar-message-user pillar-message-user",children:[e.userContext&&e.userContext.length>0&&X(wt,{contexts:e.userContext,readOnly:!0}),e.images&&e.images.length>0&&X("div",{class:"_pillar-message-user-images pillar-message-user-images",children:e.images.map((e,n)=>X("img",{src:e.url,alt:`Attachment ${n+1}`,class:"_pillar-message-user-image pillar-message-user-image"},n))}),e.content]}):X("div",{class:"_pillar-message-assistant-wrapper pillar-message-assistant-wrapper",children:[X("div",{class:"_pillar-message-assistant-content pillar-message-assistant-content",children:[e.content?X("div",{class:"_pillar-message-assistant pillar-message-assistant",dangerouslySetInnerHTML:{__html:Ni(e.content)}}):X("div",{class:"_pillar-progress-indicator pillar-progress-indicator",children:[X("div",{class:"_pillar-loading-spinner pillar-loading-spinner"}),X("span",{class:"_pillar-progress-message pillar-progress-message",children:bn.value.message||"Thinking..."})]}),e.actionStatus&&Object.keys(e.actionStatus).length>0&&X("span",{class:"_pillar-action-status pillar-action-status",children:Object.entries(e.actionStatus).map(([e,n])=>X("span",{class:`_pillar-action-status-indicator pillar-action-status-indicator _pillar-action-status-indicator--${n.status} pillar-action-status-indicator--${n.status}`,title:"failed"===n.status?n.errorMessage:e,dangerouslySetInnerHTML:{__html:"success"===n.status?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>':"failed"===n.status?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><path d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83" opacity="0.3"/><path d="M12 2v4"/></svg>'}},e))})]}),e.id&&e.content&&X("div",{class:"_pillar-feedback-icons pillar-feedback-icons",children:[X("button",{class:"_pillar-feedback-btn pillar-feedback-btn "+("up"===e.feedback?"_pillar-feedback-btn--active pillar-feedback-btn--active":""),onClick:()=>l(e.id,"up"),"aria-label":"Helpful",title:"Helpful",type:"button",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"/></svg>'}}),X("button",{class:"_pillar-feedback-btn pillar-feedback-btn "+("down"===e.feedback?"_pillar-feedback-btn--active pillar-feedback-btn--active":""),onClick:()=>l(e.id,"down"),"aria-label":"Not helpful",title:"Not helpful",type:"button",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"/></svg>'}})]}),e.sources&&e.sources.length>0&&X("div",{class:"_pillar-chat-sources pillar-chat-sources",children:[X("div",{class:"_pillar-chat-sources-title pillar-chat-sources-title",children:"Sources"}),e.sources.map(e=>X("div",{class:"_pillar-chat-source pillar-chat-source",children:e.title},e.slug))]}),e.actions&&e.actions.length>0&&X("div",{class:"_pillar-chat-actions pillar-chat-actions",children:[X("div",{class:"_pillar-chat-actions-title pillar-chat-actions-title",children:"Suggested actions"}),X("div",{ref:e=>{e&&s.current.set(n,e)},class:"_pillar-chat-actions-buttons pillar-chat-actions-buttons"})]})]})},n)),pt.value&&X(_t,{})]}),X("div",{class:"_pillar-chat-view-input-area pillar-chat-view-input-area",children:[X(St,{placeholder:"Ask a question... (paste or drop images)",disabled:vn.value,onSubmit:o}),_n.value.length>0&&X("div",{class:"_pillar-chat-view-input-footer pillar-chat-view-input-footer",children:X("button",{class:"_pillar-chat-view-new-chat-btn pillar-chat-view-new-chat-btn",onClick:Fn,type:"button",children:[X("span",{class:"_pillar-chat-view-new-chat-icon",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>'}}),"New chat"]})})]})]})}function Zi(){const e=Dn.value,n=Xe.value,t=(()=>{if("assistant"!==n)return n.charAt(0).toUpperCase()+n.slice(1)})(),i="chat"===e.type,r="home"===e.type;return X("div","assistant"!==n?{class:"_pillar-panel-ui pillar-panel-ui",children:[X(bt,{currentView:"home",customTitle:t}),X("div",{class:"_pillar-content pillar-content",children:"support"===n?X("div",{style:{padding:"24px",textAlign:"center"},children:[X("h2",{style:{fontSize:"18px",fontWeight:"600",marginBottom:"8px"},children:"Hello World"}),X("p",{style:{color:"var(--pillar-text-muted)",fontSize:"14px"},children:"Support tab content goes here."})]}):null})]}:{class:"_pillar-panel-ui pillar-panel-ui",children:[X(bt,{currentView:e.type,customTitle:t,hideNavigation:i}),X("div",{class:"_pillar-content pillar-content",children:(()=>{switch(e.type){case"home":default:return X(Et,{});case"chat":return X(Ki,{})}})()}),!i&&!r&&X("div",{class:"_pillar-chat-input-area pillar-chat-input-area",children:X(St,{placeholder:"Ask a question..."})})]})}function Xi(e,n=""){const t=[];return e.primary&&t.push(`--pillar-primary${n}: ${e.primary};`),e.primaryHover&&t.push(`--pillar-primary-hover${n}: ${e.primaryHover};`),e.background&&t.push(`--pillar-bg${n}: ${e.background};`),e.backgroundSecondary&&t.push(`--pillar-bg-secondary${n}: ${e.backgroundSecondary};`),e.text&&t.push(`--pillar-text${n}: ${e.text};`),e.textMuted&&t.push(`--pillar-text-muted${n}: ${e.textMuted};`),e.border&&t.push(`--pillar-border${n}: ${e.border};`),e.borderLight&&t.push(`--pillar-border-light${n}: ${e.borderLight};`),t.join("\n ")}function Qi(e){const n=Xi(e.colors),t=Xi(e.darkColors);let i="";return n&&(i+=`\n:host {\n ${n}\n}\n`),t&&(i+=`\n@media (prefers-color-scheme: dark) {\n :host:not([data-theme="light"]) {\n ${t}\n }\n}\n:host([data-theme="dark"]) {\n ${t}\n}\n`),i}const Gi="\n/* ============================================================================\n CSS Custom Properties (Variables)\n Users can override these to customize colors\n ============================================================================ */\n\n:host {\n /* Core colors - Light mode (default) */\n --pillar-primary: #2563eb;\n --pillar-primary-hover: #1d4ed8;\n --pillar-primary-light: #eff6ff;\n --pillar-primary-light-hover: #dbeafe;\n \n --pillar-bg: #ffffff;\n --pillar-bg-secondary: #f9fafb;\n --pillar-bg-tertiary: #f3f4f6;\n \n --pillar-text: #1a1a1a;\n --pillar-text-secondary: #374151;\n --pillar-text-muted: #6b7280;\n --pillar-text-placeholder: #9ca3af;\n \n --pillar-border: #e5e7eb;\n --pillar-border-light: #f3f4f6;\n \n /* Shadows */\n --pillar-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --pillar-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n \n /* Code blocks */\n --pillar-code-bg: #1f2937;\n --pillar-code-text: #e5e7eb;\n \n /* Scrollbar */\n --pillar-scrollbar-track: transparent;\n --pillar-scrollbar-thumb: #d1d5db;\n --pillar-scrollbar-thumb-hover: #9ca3af;\n \n /* Spacing (can be customized) */\n --pillar-panel-width: 380px;\n --pillar-spacing-xs: 4px;\n --pillar-spacing-sm: 8px;\n --pillar-spacing-md: 12px;\n --pillar-spacing-lg: 16px;\n --pillar-spacing-xl: 20px;\n --pillar-spacing-2xl: 24px;\n \n /* Border radius */\n --pillar-radius-sm: 4px;\n --pillar-radius-md: 6px;\n --pillar-radius-lg: 8px;\n --pillar-radius-xl: 10px;\n --pillar-radius-full: 9999px;\n \n /* Typography */\n --pillar-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n --pillar-font-mono: 'SF Mono', Consolas, monospace;\n --pillar-font-size-xs: 11px;\n --pillar-font-size-sm: 12px;\n --pillar-font-size-base: 14px;\n --pillar-font-size-md: 15px;\n --pillar-font-size-lg: 16px;\n --pillar-font-size-xl: 18px;\n --pillar-font-size-2xl: 20px;\n \n /* Animation */\n --pillar-transition-fast: 0.15s ease;\n --pillar-transition-normal: 0.3s ease;\n}\n\n/* Dark mode - Auto-detect from system preference */\n@media (prefers-color-scheme: dark) {\n :host:not([data-theme=\"light\"]) {\n --pillar-primary: #3b82f6;\n --pillar-primary-hover: #60a5fa;\n --pillar-primary-light: #1e3a5f;\n --pillar-primary-light-hover: #1e4976;\n \n --pillar-bg: #1a1a1a;\n --pillar-bg-secondary: #262626;\n --pillar-bg-tertiary: #333333;\n \n --pillar-text: #f5f5f5;\n --pillar-text-secondary: #e5e5e5;\n --pillar-text-muted: #a3a3a3;\n --pillar-text-placeholder: #737373;\n \n --pillar-border: #404040;\n --pillar-border-light: #333333;\n \n --pillar-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);\n --pillar-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4);\n \n --pillar-code-bg: #0d0d0d;\n --pillar-code-text: #e5e7eb;\n \n --pillar-scrollbar-thumb: #525252;\n --pillar-scrollbar-thumb-hover: #737373;\n }\n}\n\n/* Dark mode - Manual override */\n:host([data-theme=\"dark\"]) {\n --pillar-primary: #3b82f6;\n --pillar-primary-hover: #60a5fa;\n --pillar-primary-light: #1e3a5f;\n --pillar-primary-light-hover: #1e4976;\n \n --pillar-bg: #1a1a1a;\n --pillar-bg-secondary: #262626;\n --pillar-bg-tertiary: #333333;\n \n --pillar-text: #f5f5f5;\n --pillar-text-secondary: #e5e5e5;\n --pillar-text-muted: #a3a3a3;\n --pillar-text-placeholder: #737373;\n \n --pillar-border: #404040;\n --pillar-border-light: #333333;\n \n --pillar-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);\n --pillar-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4);\n \n --pillar-code-bg: #0d0d0d;\n --pillar-code-text: #e5e7eb;\n \n --pillar-scrollbar-thumb: #525252;\n --pillar-scrollbar-thumb-hover: #737373;\n}\n\n/* ============================================================================\n Base Styles\n Note: No CSS reset - we rely on explicit styles for SDK components\n and allow custom cards to inherit host app styling (Tailwind, etc.)\n ============================================================================ */\n\n:host {\n font-family: var(--pillar-font-family);\n font-size: var(--pillar-font-size-base);\n line-height: 1.5;\n color: var(--pillar-text);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* ============================================================================\n Panel Container\n Internal: _pillar-panel | Public: pillar-panel\n ============================================================================ */\n\n._pillar-panel {\n position: fixed;\n top: 0;\n bottom: 0;\n width: var(--pillar-panel-width);\n max-width: 100vw;\n background: var(--pillar-bg);\n border-left: 1px solid var(--pillar-border);\n display: flex;\n flex-direction: column;\n z-index: 99999;\n transform: translateX(100%);\n transition: transform var(--pillar-transition-normal);\n}\n\n._pillar-panel--right {\n right: 0;\n}\n\n._pillar-panel--left {\n left: 0;\n border-left: none;\n border-right: 1px solid var(--pillar-border);\n transform: translateX(-100%);\n}\n\n._pillar-panel--open {\n transform: translateX(0);\n}\n\n._pillar-panel--manual {\n position: static;\n transform: none;\n height: 100%;\n}\n\n._pillar-panel-root {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n._pillar-panel-ui {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n/* Public override classes - empty by default */\n.pillar-panel {}\n.pillar-panel-root {}\n.pillar-panel-ui {}\n\n/* ============================================================================\n Backdrop\n ============================================================================ */\n\n._pillar-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.3);\n opacity: 0;\n visibility: hidden;\n transition: opacity var(--pillar-transition-normal), visibility var(--pillar-transition-normal);\n z-index: 99998;\n}\n\n._pillar-backdrop--visible {\n opacity: 1;\n visibility: visible;\n}\n\n.pillar-backdrop {}\n\n/* ============================================================================\n Header\n Internal: _pillar-header | Public: pillar-header\n ============================================================================ */\n\n._pillar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--pillar-spacing-lg) var(--pillar-spacing-xl);\n border-bottom: 1px solid var(--pillar-border);\n flex-shrink: 0;\n background: var(--pillar-bg);\n}\n\n._pillar-header-left {\n display: flex;\n align-items: center;\n gap: var(--pillar-spacing-sm);\n}\n\n._pillar-header-title {\n font-size: var(--pillar-font-size-lg);\n font-weight: 600;\n color: var(--pillar-text);\n}\n\n/* Public override classes */\n.pillar-header {}\n.pillar-header-left {}\n.pillar-header-title {}\n\n/* ============================================================================\n Icon Buttons (back, home, close)\n Internal: _pillar-icon-btn | Public: pillar-icon-btn\n ============================================================================ */\n\n._pillar-icon-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n color: var(--pillar-text-muted);\n background: none;\n border: none;\n border-radius: var(--pillar-radius-md);\n cursor: pointer;\n transition: color var(--pillar-transition-fast), background var(--pillar-transition-fast);\n}\n\n._pillar-icon-btn:hover {\n color: var(--pillar-text);\n background: var(--pillar-bg-tertiary);\n}\n\n._pillar-icon-btn svg {\n width: 20px;\n height: 20px;\n}\n\n.pillar-icon-btn {}\n.pillar-back-btn {}\n.pillar-home-btn {}\n.pillar-close-btn {}\n\n/* ============================================================================\n Content Area\n Internal: _pillar-content | Public: pillar-content\n ============================================================================ */\n\n._pillar-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 0;\n}\n\n.pillar-content {}\n\n/* ============================================================================\n Search Input\n Internal: _pillar-search | Public: pillar-search\n ============================================================================ */\n\n._pillar-search {\n position: relative;\n padding: var(--pillar-spacing-lg) var(--pillar-spacing-xl);\n}\n\n._pillar-search-input {\n width: 100%;\n padding: 10px 12px 10px 40px;\n font-size: var(--pillar-font-size-base);\n font-family: var(--pillar-font-family);\n color: var(--pillar-text);\n background: var(--pillar-bg-secondary);\n border: 1px solid var(--pillar-border);\n border-radius: var(--pillar-radius-lg);\n outline: none;\n transition: border-color var(--pillar-transition-fast), box-shadow var(--pillar-transition-fast);\n}\n\n._pillar-search-input:focus {\n border-color: var(--pillar-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n._pillar-search-input::placeholder {\n color: var(--pillar-text-placeholder);\n}\n\n._pillar-search-icon {\n position: absolute;\n left: 32px;\n top: 50%;\n transform: translateY(-50%);\n width: 18px;\n height: 18px;\n color: var(--pillar-text-placeholder);\n pointer-events: none;\n}\n\n._pillar-search-icon svg {\n width: 18px;\n height: 18px;\n}\n\n.pillar-search {}\n.pillar-search-input {}\n.pillar-search-icon {}\n\n/* ============================================================================\n Chat Input (Persistent Bottom)\n Internal: _pillar-chat-input | Public: pillar-chat-input\n ============================================================================ */\n\n._pillar-chat-input-container {\n flex-shrink: 0;\n border-top: 1px solid var(--pillar-border);\n background: var(--pillar-bg);\n display: flex;\n flex-direction: column;\n max-height: 50%;\n transition: max-height var(--pillar-transition-normal);\n}\n\n._pillar-chat-input-container--expanded {\n max-height: 60%;\n}\n\n._pillar-chat-input-messages {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n max-height: 0;\n transition: max-height var(--pillar-transition-normal), padding var(--pillar-transition-normal);\n}\n\n._pillar-chat-input-container--expanded ._pillar-chat-input-messages {\n max-height: 300px;\n padding: var(--pillar-spacing-lg) var(--pillar-spacing-xl);\n}\n\n._pillar-chat-input-message {\n margin-bottom: var(--pillar-spacing-md);\n}\n\n._pillar-chat-input-message--user {\n text-align: right;\n}\n\n._pillar-chat-input-message-content {\n display: inline-block;\n max-width: 85%;\n padding: 10px 14px;\n border-radius: var(--pillar-spacing-lg);\n font-size: var(--pillar-font-size-base);\n line-height: 1.5;\n}\n\n._pillar-chat-input-message--user ._pillar-chat-input-message-content {\n background: var(--pillar-primary);\n color: #ffffff;\n border-bottom-right-radius: var(--pillar-radius-sm);\n}\n\n._pillar-chat-input-message--assistant ._pillar-chat-input-message-content {\n background: var(--pillar-bg-tertiary);\n color: var(--pillar-text);\n border-bottom-left-radius: var(--pillar-radius-sm);\n}\n\n._pillar-chat-input-sources {\n margin-top: var(--pillar-spacing-sm);\n padding-top: var(--pillar-spacing-sm);\n border-top: 1px solid var(--pillar-border);\n}\n\n._pillar-chat-input-sources-title {\n font-size: var(--pillar-font-size-xs);\n font-weight: 500;\n color: var(--pillar-text-muted);\n margin-bottom: 6px;\n}\n\n._pillar-chat-input-source {\n display: block;\n padding: 6px 10px;\n margin-bottom: var(--pillar-spacing-xs);\n font-size: var(--pillar-font-size-sm);\n color: var(--pillar-primary);\n background: var(--pillar-primary-light);\n border-radius: var(--pillar-radius-md);\n text-decoration: none;\n cursor: pointer;\n}\n\n._pillar-chat-input-source:hover {\n background: var(--pillar-primary-light-hover);\n}\n\n._pillar-chat-input-area {\n padding: var(--pillar-spacing-md) var(--pillar-spacing-lg);\n}\n\n._pillar-chat-input-wrapper {\n display: flex;\n flex-direction: column;\n background: var(--pillar-bg-secondary);\n border: 1px solid var(--pillar-border);\n border-radius: var(--pillar-radius-xl);\n transition: border-color var(--pillar-transition-fast), box-shadow var(--pillar-transition-fast);\n}\n\n._pillar-chat-input-wrapper:focus-within {\n border-color: var(--pillar-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n._pillar-chat-input-textarea {\n display: block;\n width: 100%;\n padding: 12px 14px 8px;\n font-size: var(--pillar-font-size-base);\n font-family: var(--pillar-font-family);\n line-height: 1.5;\n color: var(--pillar-text);\n background: transparent;\n border: none;\n outline: none;\n resize: none;\n overflow-y: hidden;\n box-sizing: border-box;\n}\n\n._pillar-chat-input-textarea::placeholder {\n color: var(--pillar-text-placeholder);\n}\n\n.pillar-chat-input-container {}\n.pillar-chat-input-messages {}\n.pillar-chat-input-message {}\n.pillar-chat-input-message-content {}\n.pillar-chat-input-sources {}\n.pillar-chat-input-area {}\n.pillar-chat-input-wrapper {}\n.pillar-chat-input-textarea {}\n\n/* ============================================================================\n Chat Input Footer (contains send button)\n ============================================================================ */\n\n._pillar-chat-input-footer {\n display: flex;\n justify-content: flex-end;\n padding: 8px 10px;\n}\n\n/* ============================================================================\n Send Button - In footer row, right aligned\n Internal: _pillar-send-btn | Public: pillar-send-btn\n ============================================================================ */\n\n._pillar-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n color: var(--pillar-text-muted);\n background: var(--pillar-bg-tertiary);\n border: none;\n border-radius: var(--pillar-radius-md);\n cursor: pointer;\n flex-shrink: 0;\n transition: all var(--pillar-transition-fast);\n}\n\n._pillar-send-btn:hover:not(:disabled) {\n color: #ffffff;\n background: var(--pillar-primary);\n}\n\n._pillar-send-btn:disabled {\n color: var(--pillar-text-placeholder);\n background: var(--pillar-bg-tertiary);\n cursor: not-allowed;\n}\n\n._pillar-send-btn svg {\n width: 16px;\n height: 16px;\n}\n\n.pillar-send-btn {}\n.pillar-chat-input-footer {}\n\n/* ============================================================================\n Loading States\n Internal: _pillar-loading | Public: pillar-loading\n ============================================================================ */\n\n._pillar-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px var(--pillar-spacing-xl);\n color: var(--pillar-text-muted);\n}\n\n._pillar-loading-spinner {\n width: 24px;\n height: 24px;\n border: 2px solid var(--pillar-border);\n border-top-color: var(--pillar-primary);\n border-radius: 50%;\n animation: pillar-spin 0.8s linear infinite;\n}\n\n@keyframes pillar-spin {\n to { transform: rotate(360deg); }\n}\n\n.pillar-loading {}\n.pillar-loading-spinner {}\n\n/* ============================================================================\n Progress Indicator (AI activity status)\n Internal: _pillar-progress | Public: pillar-progress\n ============================================================================ */\n\n._pillar-progress-indicator {\n display: flex;\n align-items: center;\n gap: var(--pillar-spacing-sm);\n padding: var(--pillar-spacing-sm) 0;\n}\n\n._pillar-progress-indicator ._pillar-loading-spinner {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n}\n\n._pillar-progress-message {\n font-size: var(--pillar-font-size-sm);\n color: var(--pillar-text-muted);\n font-style: italic;\n}\n\n.pillar-progress-indicator {}\n.pillar-progress-message {}\n\n/* ============================================================================\n Empty States\n Internal: _pillar-empty | Public: pillar-empty\n ============================================================================ */\n\n._pillar-empty {\n padding: 40px var(--pillar-spacing-xl);\n text-align: center;\n color: var(--pillar-text-muted);\n}\n\n._pillar-empty-icon {\n width: 48px;\n height: 48px;\n margin: 0 auto var(--pillar-spacing-lg);\n color: var(--pillar-border);\n}\n\n._pillar-empty-title {\n font-size: var(--pillar-font-size-lg);\n font-weight: 500;\n color: var(--pillar-text);\n margin-bottom: var(--pillar-spacing-xs);\n}\n\n._pillar-empty-description {\n font-size: var(--pillar-font-size-base);\n}\n\n.pillar-empty {}\n.pillar-empty-icon {}\n.pillar-empty-title {}\n.pillar-empty-description {}\n\n/* ============================================================================\n Section Titles\n Internal: _pillar-section-title | Public: pillar-section-title\n ============================================================================ */\n\n._pillar-section-title {\n padding: var(--pillar-spacing-md) var(--pillar-spacing-xl) var(--pillar-spacing-sm);\n font-size: var(--pillar-font-size-xs);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--pillar-text-muted);\n}\n\n.pillar-section-title {}\n\n/* ============================================================================\n Related Articles\n ============================================================================ */\n\n._pillar-related-articles {\n border-top: 1px solid var(--pillar-border);\n margin-top: var(--pillar-spacing-2xl);\n padding-top: var(--pillar-spacing-sm);\n}\n\n.pillar-related-articles {}\n\n/* ============================================================================\n Scrollbar Styling\n ============================================================================ */\n\n._pillar-content::-webkit-scrollbar,\n._pillar-chat-input-messages::-webkit-scrollbar {\n width: 6px;\n}\n\n._pillar-content::-webkit-scrollbar-track,\n._pillar-chat-input-messages::-webkit-scrollbar-track {\n background: var(--pillar-scrollbar-track);\n}\n\n._pillar-content::-webkit-scrollbar-thumb,\n._pillar-chat-input-messages::-webkit-scrollbar-thumb {\n background: var(--pillar-scrollbar-thumb);\n border-radius: 3px;\n}\n\n._pillar-content::-webkit-scrollbar-thumb:hover,\n._pillar-chat-input-messages::-webkit-scrollbar-thumb:hover {\n background: var(--pillar-scrollbar-thumb-hover);\n}\n\n/* ============================================================================\n Home View\n ============================================================================ */\n\n._pillar-home-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: var(--pillar-spacing-xl);\n}\n\n._pillar-home-view-header {\n text-align: center;\n padding: var(--pillar-spacing-2xl) 0;\n}\n\n._pillar-home-view-icon {\n font-size: 40px;\n margin-bottom: var(--pillar-spacing-md);\n}\n\n._pillar-home-view-title {\n font-size: var(--pillar-font-size-xl);\n font-weight: 600;\n color: var(--pillar-text);\n margin: 0;\n}\n\n._pillar-home-view-questions {\n display: flex;\n flex-direction: column;\n gap: var(--pillar-spacing-sm);\n margin-bottom: var(--pillar-spacing-xl);\n}\n\n._pillar-home-view-input-wrapper {\n margin-top: auto;\n display: flex;\n flex-direction: column;\n background: var(--pillar-bg-secondary);\n border: 1px solid var(--pillar-border);\n border-radius: var(--pillar-radius-xl);\n transition: border-color var(--pillar-transition-fast), box-shadow var(--pillar-transition-fast);\n}\n\n._pillar-home-view-input-wrapper:focus-within {\n border-color: var(--pillar-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n._pillar-home-view-input {\n display: block;\n width: 100%;\n padding: 12px 14px 8px;\n font-size: var(--pillar-font-size-base);\n font-family: var(--pillar-font-family);\n line-height: 1.5;\n color: var(--pillar-text);\n background: transparent;\n border: none;\n outline: none;\n resize: none;\n overflow-y: hidden;\n box-sizing: border-box;\n}\n\n._pillar-home-view-input::placeholder {\n color: var(--pillar-text-placeholder);\n}\n\n._pillar-home-view-input-row {\n display: flex;\n justify-content: flex-end;\n padding: 8px 10px;\n}\n\n._pillar-home-view-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n color: var(--pillar-text-muted);\n background: var(--pillar-bg-tertiary);\n border: none;\n border-radius: var(--pillar-radius-md);\n cursor: pointer;\n flex-shrink: 0;\n transition: all var(--pillar-transition-fast);\n}\n\n._pillar-home-view-send-btn:hover:not(:disabled) {\n color: #ffffff;\n background: var(--pillar-primary);\n}\n\n._pillar-home-view-send-btn:disabled {\n color: var(--pillar-text-placeholder);\n background: var(--pillar-bg-tertiary);\n cursor: not-allowed;\n}\n\n._pillar-home-view-send-btn svg {\n width: 16px;\n height: 16px;\n}\n\n.pillar-home-view {}\n.pillar-home-view-header {}\n.pillar-home-view-title {}\n.pillar-home-view-questions {}\n.pillar-home-view-input-wrapper {}\n.pillar-home-view-input {}\n.pillar-home-view-send-btn {}\n\n/* ============================================================================\n Question Chip\n ============================================================================ */\n\n._pillar-question-chip {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: var(--pillar-spacing-md) var(--pillar-spacing-lg);\n font-size: var(--pillar-font-size-base);\n font-family: var(--pillar-font-family);\n text-align: left;\n color: var(--pillar-text);\n background: var(--pillar-bg-secondary);\n border: 1px solid var(--pillar-border);\n border-radius: var(--pillar-radius-lg);\n cursor: pointer;\n transition: background var(--pillar-transition-fast), border-color var(--pillar-transition-fast);\n}\n\n._pillar-question-chip:hover {\n border-color: var(--pillar-primary);\n}\n\n._pillar-question-chip-text {\n flex: 1;\n}\n\n._pillar-question-chip-arrow {\n color: var(--pillar-text-muted);\n margin-left: var(--pillar-spacing-sm);\n transition: color var(--pillar-transition-fast), transform var(--pillar-transition-fast);\n}\n\n._pillar-question-chip:hover ._pillar-question-chip-arrow {\n color: var(--pillar-primary);\n transform: translateX(2px);\n}\n\n._pillar-question-chip-skeleton {\n height: 44px;\n background: var(--pillar-bg-secondary);\n border: 1px solid var(--pillar-border);\n border-radius: var(--pillar-radius-lg);\n overflow: hidden;\n}\n\n._pillar-question-chip-skeleton-bar {\n width: 60%;\n height: 14px;\n margin: 15px var(--pillar-spacing-lg);\n background: linear-gradient(90deg, var(--pillar-border) 25%, var(--pillar-bg-tertiary) 50%, var(--pillar-border) 75%);\n background-size: 200% 100%;\n animation: pillar-shimmer 1.5s infinite;\n border-radius: var(--pillar-radius-sm);\n}\n\n@keyframes pillar-shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.pillar-question-chip {}\n.pillar-question-chip-text {}\n.pillar-question-chip-arrow {}\n.pillar-question-chip-skeleton {}\n.pillar-question-chip-skeleton-bar {}\n\n/* ============================================================================\n Standalone Chat View\n Internal: _pillar-chat-view | Public: pillar-chat-view\n ============================================================================ */\n\n._pillar-chat-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n._pillar-chat-view-messages {\n flex: 1;\n overflow-y: auto;\n padding: var(--pillar-spacing-xl);\n display: flex;\n flex-direction: column;\n}\n\n._pillar-chat-view-welcome {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px var(--pillar-spacing-xl);\n text-align: center;\n flex: 1;\n}\n\n._pillar-chat-view-welcome-icon {\n font-size: 48px;\n margin-bottom: var(--pillar-spacing-lg);\n}\n\n._pillar-chat-view-welcome-title {\n font-size: var(--pillar-font-size-xl);\n font-weight: 600;\n color: var(--pillar-text);\n margin-bottom: var(--pillar-spacing-sm);\n}\n\n._pillar-chat-view-welcome-text {\n font-size: var(--pillar-font-size-base);\n color: var(--pillar-text-muted);\n max-width: 280px;\n}\n\n._pillar-chat-view-message {\n margin-bottom: var(--pillar-spacing-lg);\n}\n\n._pillar-chat-view-message--user {\n text-align: right;\n}\n\n._pillar-chat-view-message--assistant {\n text-align: left;\n}\n\n.pillar-chat-view {}\n.pillar-chat-view-messages {}\n.pillar-chat-view-welcome {}\n.pillar-chat-view-message {}\n\n/* ============================================================================\n User Message Bubble\n Internal: _pillar-message-user | Public: pillar-message-user\n ============================================================================ */\n\n._pillar-message-user {\n display: inline-block;\n max-width: 85%;\n padding: 10px 14px;\n border-radius: var(--pillar-spacing-lg);\n border-bottom-right-radius: var(--pillar-radius-sm);\n font-size: var(--pillar-font-size-base);\n line-height: 1.5;\n background: var(--pillar-primary);\n color: #ffffff;\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n._pillar-message-user-images {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-bottom: var(--pillar-spacing-sm);\n}\n\n._pillar-message-user-image {\n max-width: 120px;\n max-height: 120px;\n border-radius: var(--pillar-radius-md);\n object-fit: cover;\n}\n\n.pillar-message-user {}\n.pillar-message-user-images {}\n.pillar-message-user-image {}\n\n/* ============================================================================\n AI Response\n Internal: _pillar-message-assistant | Public: pillar-message-assistant\n ============================================================================ */\n\n._pillar-message-assistant {\n font-size: var(--pillar-font-size-base);\n line-height: 1.6;\n color: var(--pillar-text-secondary);\n}\n\n._pillar-message-assistant p {\n margin: 0 0 var(--pillar-spacing-md);\n}\n\n._pillar-message-assistant p:last-child {\n margin-bottom: 0;\n}\n\n._pillar-message-assistant h2 {\n font-size: var(--pillar-font-size-lg);\n font-weight: 600;\n color: var(--pillar-text);\n margin: var(--pillar-spacing-lg) 0 var(--pillar-spacing-sm);\n}\n\n._pillar-message-assistant h3 {\n font-size: var(--pillar-font-size-md);\n font-weight: 600;\n color: var(--pillar-text);\n margin: 14px 0 6px;\n}\n\n._pillar-message-assistant h4 {\n font-size: var(--pillar-font-size-base);\n font-weight: 600;\n color: var(--pillar-text);\n margin: var(--pillar-spacing-md) 0 6px;\n}\n\n._pillar-message-assistant ul,\n._pillar-message-assistant ol {\n margin: 0 0 var(--pillar-spacing-md);\n padding-left: var(--pillar-spacing-2xl);\n list-style-position: outside;\n}\n\n._pillar-message-assistant ul {\n list-style-type: disc;\n}\n\n._pillar-message-assistant ol {\n list-style-type: decimal;\n}\n\n._pillar-message-assistant li {\n margin-bottom: var(--pillar-spacing-xs);\n}\n\n._pillar-message-assistant code {\n padding: 2px 6px;\n font-size: var(--pillar-font-size-sm);\n background: var(--pillar-bg-tertiary);\n border-radius: var(--pillar-radius-sm);\n font-family: var(--pillar-font-mono);\n color: var(--pillar-text);\n}\n\n._pillar-message-assistant pre {\n margin: var(--pillar-spacing-md) 0;\n padding: var(--pillar-spacing-md) 14px;\n background: var(--pillar-code-bg);\n border-radius: var(--pillar-radius-lg);\n overflow-x: auto;\n}\n\n._pillar-message-assistant pre code {\n padding: 0;\n background: none;\n color: var(--pillar-code-text);\n font-size: var(--pillar-font-size-sm);\n line-height: 1.5;\n}\n\n._pillar-message-assistant a {\n color: var(--pillar-primary);\n text-decoration: none;\n}\n\n._pillar-message-assistant a:hover {\n text-decoration: underline;\n}\n\n._pillar-message-assistant strong {\n font-weight: 600;\n color: var(--pillar-text);\n}\n\n._pillar-message-assistant em {\n font-style: italic;\n}\n\n.pillar-message-assistant {}\n\n/* ============================================================================\n Chat Sources\n Internal: _pillar-chat-sources | Public: pillar-chat-sources\n ============================================================================ */\n\n._pillar-chat-sources {\n margin-top: var(--pillar-spacing-md);\n padding-top: var(--pillar-spacing-md);\n border-top: 1px solid var(--pillar-border);\n}\n\n._pillar-chat-sources-title {\n font-size: var(--pillar-font-size-xs);\n font-weight: 500;\n color: var(--pillar-text-muted);\n margin-bottom: var(--pillar-spacing-sm);\n}\n\n._pillar-chat-source {\n display: block;\n padding: var(--pillar-spacing-sm) var(--pillar-spacing-md);\n margin-bottom: 6px;\n font-size: var(--pillar-font-size-sm);\n color: var(--pillar-primary);\n background: var(--pillar-primary-light);\n border-radius: var(--pillar-radius-lg);\n text-decoration: none;\n cursor: pointer;\n transition: background var(--pillar-transition-fast);\n}\n\n._pillar-chat-source:hover {\n background: var(--pillar-primary-light-hover);\n}\n\n.pillar-chat-sources {}\n.pillar-chat-sources-title {}\n.pillar-chat-source {}\n\n/* ============================================================================\n Chat Actions (Suggested action buttons)\n Internal: _pillar-chat-actions | Public: pillar-chat-actions\n ============================================================================ */\n\n._pillar-chat-actions {\n margin-top: var(--pillar-spacing-md);\n padding-top: var(--pillar-spacing-md);\n border-top: 1px solid var(--pillar-border);\n}\n\n._pillar-chat-actions-title {\n font-size: var(--pillar-font-size-xs);\n font-weight: 500;\n color: var(--pillar-text-muted);\n margin-bottom: var(--pillar-spacing-sm);\n}\n\n._pillar-chat-actions-buttons {\n display: flex;\n flex-direction: column;\n gap: var(--pillar-spacing-sm);\n}\n\n/* Task buttons should wrap horizontally */\n._pillar-chat-actions-buttons > ._pillar-task-button-group {\n display: flex;\n flex-wrap: wrap;\n gap: var(--pillar-spacing-sm);\n}\n\n/* Confirm cards take full width */\n._pillar-chat-actions-buttons > .pillar-confirm-card-wrapper {\n width: 100%;\n}\n\n.pillar-chat-actions {}\n.pillar-chat-actions-title {}\n.pillar-chat-actions-buttons {}\n\n/* ============================================================================\n Chat View Input Area - Cursor-style design\n ============================================================================ */\n\n._pillar-chat-view-input-area {\n flex-shrink: 0;\n padding: var(--pillar-spacing-md) var(--pillar-spacing-lg);\n border-top: 1px solid var(--pillar-border);\n background: var(--pillar-bg);\n}\n\n._pillar-chat-view-input-wrapper {\n display: flex;\n flex-direction: column;\n background: var(--pillar-bg-secondary);\n border: 1px solid var(--pillar-border);\n border-radius: var(--pillar-radius-xl);\n transition: border-color var(--pillar-transition-fast), box-shadow var(--pillar-transition-fast);\n}\n\n._pillar-chat-view-input-wrapper:focus-within {\n border-color: var(--pillar-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n._pillar-chat-view-input {\n display: block;\n width: 100%;\n padding: 12px 14px 8px;\n font-size: var(--pillar-font-size-base);\n font-family: var(--pillar-font-family);\n line-height: 1.5;\n color: var(--pillar-text);\n background: transparent;\n border: none;\n outline: none;\n resize: none;\n overflow-y: hidden;\n box-sizing: border-box;\n}\n\n._pillar-chat-view-input::placeholder {\n color: var(--pillar-text-placeholder);\n}\n\n._pillar-chat-view-input-row {\n display: flex;\n justify-content: flex-end;\n padding: 8px 10px;\n}\n\n._pillar-chat-view-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n color: var(--pillar-text-muted);\n background: var(--pillar-bg-tertiary);\n border: none;\n border-radius: var(--pillar-radius-md);\n cursor: pointer;\n flex-shrink: 0;\n transition: all var(--pillar-transition-fast);\n}\n\n._pillar-chat-view-send-btn:hover:not(:disabled) {\n color: #ffffff;\n background: var(--pillar-primary);\n}\n\n._pillar-chat-view-send-btn:active:not(:disabled) {\n transform: scale(0.95);\n}\n\n._pillar-chat-view-send-btn:disabled {\n color: var(--pillar-text-placeholder);\n background: var(--pillar-bg-tertiary);\n cursor: not-allowed;\n}\n\n._pillar-chat-view-send-btn svg {\n width: 16px;\n height: 16px;\n}\n\n.pillar-chat-view-input-area {}\n.pillar-chat-view-input-wrapper {}\n.pillar-chat-view-input {}\n.pillar-chat-view-send-btn {}\n.pillar-chat-view-input-footer {}\n.pillar-chat-view-new-chat-btn {}\n\n/* New chat button styling */\n._pillar-chat-view-input-footer {\n display: flex;\n justify-content: center;\n margin-top: var(--pillar-spacing-sm);\n}\n\n._pillar-chat-view-new-chat-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n font-size: var(--pillar-font-size-sm);\n font-weight: 500;\n font-family: var(--pillar-font-family);\n color: var(--pillar-text-muted);\n background: transparent;\n border: 1px solid var(--pillar-border);\n border-radius: var(--pillar-radius-lg);\n cursor: pointer;\n transition: all var(--pillar-transition-fast);\n}\n\n._pillar-chat-view-new-chat-btn:hover {\n color: var(--pillar-text);\n background: var(--pillar-bg-secondary);\n border-color: var(--pillar-text-muted);\n}\n\n._pillar-chat-view-new-chat-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._pillar-chat-view-new-chat-icon svg {\n width: 14px;\n height: 14px;\n}\n\n/* Scrollbar for chat view */\n._pillar-chat-view-messages::-webkit-scrollbar {\n width: 6px;\n}\n\n._pillar-chat-view-messages::-webkit-scrollbar-track {\n background: var(--pillar-scrollbar-track);\n}\n\n._pillar-chat-view-messages::-webkit-scrollbar-thumb {\n background: var(--pillar-scrollbar-thumb);\n border-radius: 3px;\n}\n\n._pillar-chat-view-messages::-webkit-scrollbar-thumb:hover {\n background: var(--pillar-scrollbar-thumb-hover);\n}\n\n/* ============================================================================\n Chat Image Upload\n ============================================================================ */\n\n._pillar-chat-view-input-area--dragging {\n position: relative;\n background: rgba(37, 99, 235, 0.05);\n}\n\n._pillar-chat-drop-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n background: rgba(37, 99, 235, 0.1);\n border: 2px dashed var(--pillar-primary);\n border-radius: var(--pillar-radius-lg);\n color: var(--pillar-primary);\n font-size: var(--pillar-font-size-sm);\n font-weight: 500;\n z-index: 10;\n pointer-events: none;\n}\n\n._pillar-chat-drop-overlay svg {\n width: 24px;\n height: 24px;\n}\n\n._pillar-chat-images-preview {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n padding: 12px 12px 4px 12px;\n}\n\n._pillar-chat-image-thumb {\n position: relative;\n width: 56px;\n height: 56px;\n border-radius: var(--pillar-radius-md);\n overflow: hidden;\n border: 1px solid var(--pillar-border);\n}\n\n._pillar-chat-image-thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n._pillar-chat-image-loading {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._pillar-chat-image-error {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(239, 68, 68, 0.3);\n color: #dc2626;\n font-weight: bold;\n font-size: 14px;\n}\n\n._pillar-chat-image-remove {\n position: absolute;\n top: 2px;\n right: 2px;\n width: 18px;\n height: 18px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.6);\n border: none;\n border-radius: 50%;\n color: white;\n cursor: pointer;\n opacity: 0;\n transition: opacity var(--pillar-transition-fast);\n}\n\n._pillar-chat-image-thumb:hover ._pillar-chat-image-remove {\n opacity: 1;\n}\n\n._pillar-chat-image-remove svg {\n width: 10px;\n height: 10px;\n}\n\n._pillar-chat-image-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n padding: 0;\n color: var(--pillar-text-muted);\n background: transparent;\n border: none;\n border-radius: var(--pillar-radius-md);\n cursor: pointer;\n transition: color var(--pillar-transition-fast);\n}\n\n._pillar-chat-image-btn:hover:not(:disabled) {\n color: var(--pillar-text);\n}\n\n._pillar-chat-image-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n._pillar-chat-image-btn svg {\n width: 18px;\n height: 18px;\n}\n\n.pillar-chat-images-preview {}\n.pillar-chat-image-thumb {}\n.pillar-chat-image-remove {}\n.pillar-chat-image-btn {}\n.pillar-chat-drop-overlay {}\n\n/* ============================================================================\n Legacy Class Mappings (for backward compatibility)\n Maps old BEM-style class names to new internal classes\n ============================================================================ */\n\n.pillar-panel { }\n.pillar-panel--right { }\n.pillar-panel--left { }\n.pillar-panel--open { }\n.pillar-panel--manual { }\n.pillar-panel-root { }\n.pillar-panel-ui { }\n.pillar-panel__header { }\n.pillar-panel__header-left { }\n.pillar-panel__back-btn { }\n.pillar-panel__home-btn { }\n.pillar-panel__title { }\n.pillar-panel__close-btn { }\n.pillar-panel__content { }\n.pillar-search { }\n.pillar-search__input { }\n.pillar-search__icon { }\n.pillar-category-card { }\n.pillar-category-card__icon { }\n.pillar-category-card__content { }\n.pillar-category-card__title { }\n.pillar-category-card__description { }\n.pillar-category-card__count { }\n.pillar-article-card { }\n.pillar-article-card__title { }\n.pillar-article-card__excerpt { }\n.pillar-article-card__meta { }\n.pillar-article { }\n.pillar-article__title { }\n.pillar-article__content { }\n.pillar-category-header { }\n.pillar-category-header__title { }\n.pillar-category-header__description { }\n.pillar-chat-input-container { }\n.pillar-chat-input-container--expanded { }\n.pillar-chat-input__messages { }\n.pillar-chat-input__message { }\n.pillar-chat-input__message--user { }\n.pillar-chat-input__message--assistant { }\n.pillar-chat-input__message-content { }\n.pillar-chat-input__sources { }\n.pillar-chat-input__sources-title { }\n.pillar-chat-input__source { }\n.pillar-chat-input__area { }\n.pillar-chat-input__wrapper { }\n.pillar-chat-input__input { }\n.pillar-chat-input__send-btn { }\n.pillar-loading { }\n.pillar-loading__spinner { }\n.pillar-empty { }\n.pillar-empty__icon { }\n.pillar-empty__title { }\n.pillar-empty__description { }\n.pillar-section-title { }\n.pillar-related-articles { }\n.pillar-home-view { }\n.pillar-chat-view { }\n.pillar-chat-view__messages { }\n.pillar-chat-view__welcome { }\n.pillar-chat-view__welcome-icon { }\n.pillar-chat-view__welcome-title { }\n.pillar-chat-view__welcome-text { }\n.pillar-chat-view__message { }\n.pillar-chat-view__message--user { }\n.pillar-chat-view__message--assistant { }\n.pillar-chat-view__user-bubble { }\n.pillar-chat-view__ai-response { }\n.pillar-chat-view__sources { }\n.pillar-chat-view__sources-title { }\n.pillar-chat-view__source { }\n.pillar-chat-view__input-area { }\n.pillar-chat-view__input-wrapper { }\n.pillar-chat-view__input { }\n.pillar-chat-view__send-btn { }\n.pillar-backdrop { }\n.pillar-backdrop--visible { }\n\n/* ============================================================================\n Task Button Component\n ============================================================================ */\n\n.pillar-task-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n font-size: 13px;\n font-weight: 500;\n font-family: inherit;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.15s ease;\n border: 1px solid transparent;\n text-decoration: none;\n}\n\n.pillar-task-btn__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.pillar-task-btn__icon svg {\n width: 16px;\n height: 16px;\n}\n\n.pillar-task-btn__label {\n white-space: nowrap;\n}\n\n/* Primary variant (default) */\n.pillar-task-btn--primary {\n background: #2563eb;\n color: #ffffff;\n border-color: #2563eb;\n}\n\n.pillar-task-btn--primary:hover {\n background: #1d4ed8;\n border-color: #1d4ed8;\n}\n\n/* Default variant */\n.pillar-task-btn--default {\n background: #f3f4f6;\n color: #1a1a1a;\n border-color: #e5e7eb;\n}\n\n.pillar-task-btn--default:hover {\n background: #e5e7eb;\n}\n\n/* Secondary variant */\n.pillar-task-btn--secondary {\n background: #eff6ff;\n color: #2563eb;\n border-color: #dbeafe;\n}\n\n.pillar-task-btn--secondary:hover {\n background: #dbeafe;\n}\n\n/* Outline variant */\n.pillar-task-btn--outline {\n background: transparent;\n color: #2563eb;\n border-color: #2563eb;\n}\n\n.pillar-task-btn--outline:hover {\n background: #eff6ff;\n}\n\n/* Ghost variant */\n.pillar-task-btn--ghost {\n background: transparent;\n color: #6b7280;\n border-color: transparent;\n}\n\n.pillar-task-btn--ghost:hover {\n background: #f3f4f6;\n color: #1a1a1a;\n}\n\n/* Task button group */\n.pillar-task-btn-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 12px;\n}\n\n/* Task suggestion card in chat */\n.pillar-task-suggestion {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 12px;\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n margin-top: 12px;\n}\n\n.pillar-task-suggestion__header {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: #6b7280;\n}\n\n.pillar-task-suggestion__header svg {\n width: 14px;\n height: 14px;\n}\n\n.pillar-task-suggestion__description {\n font-size: 13px;\n color: #374151;\n}\n\n/* ============================================================================\n Feedback Icons\n Internal: _pillar-feedback | Public: pillar-feedback\n ============================================================================ */\n\n._pillar-message-assistant-wrapper {\n position: relative;\n}\n\n._pillar-feedback-icons {\n display: flex;\n gap: 4px;\n margin-top: var(--pillar-spacing-sm);\n justify-content: flex-end;\n}\n\n._pillar-feedback-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n background: transparent;\n border: 1px solid var(--pillar-border);\n border-radius: var(--pillar-radius-md);\n cursor: pointer;\n color: var(--pillar-text-placeholder);\n transition: all var(--pillar-transition-fast);\n}\n\n._pillar-feedback-btn:hover {\n color: var(--pillar-text-muted);\n background: var(--pillar-bg-secondary);\n border-color: var(--pillar-border);\n}\n\n._pillar-feedback-btn--active {\n color: var(--pillar-primary);\n background: var(--pillar-primary-light);\n border-color: var(--pillar-primary);\n}\n\n._pillar-feedback-btn--active:hover {\n color: var(--pillar-primary);\n background: var(--pillar-primary-light-hover);\n}\n\n._pillar-feedback-btn svg {\n width: 14px;\n height: 14px;\n}\n\n.pillar-feedback-icons {}\n.pillar-feedback-btn {}\n.pillar-message-assistant-wrapper {}\n\n/* ============================================================================\n Action Status Indicators\n Internal: _pillar-action-status | Public: pillar-action-status\n Shows completion status for auto-run actions (checkmark, X, or spinner)\n ============================================================================ */\n\n._pillar-message-assistant-content {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n._pillar-action-status {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n margin-top: 2px;\n}\n\n._pillar-action-status-indicator {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n}\n\n._pillar-action-status-indicator svg {\n width: 16px;\n height: 16px;\n}\n\n._pillar-action-status-indicator--success {\n color: #22c55e;\n}\n\n._pillar-action-status-indicator--failed {\n color: #ef4444;\n}\n\n._pillar-action-status-indicator--pending {\n color: var(--pillar-text-muted);\n animation: pillar-spin 1s linear infinite;\n}\n\n@keyframes pillar-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n.pillar-action-status {}\n.pillar-action-status-indicator {}\n.pillar-message-assistant-content {}\n\n/* ============================================================================\n Context Tags\n Internal: _pillar-context-tag | Public: pillar-context-tag\n Removable chips for user context items (highlighted text, etc.)\n ============================================================================ */\n\n._pillar-context-tag-list {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 8px 14px 0;\n}\n\n._pillar-context-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n max-width: 200px;\n padding: 4px 6px 4px 8px;\n font-size: var(--pillar-font-size-sm);\n color: var(--pillar-text-secondary);\n background: var(--pillar-bg-tertiary);\n border: 1px solid var(--pillar-border);\n border-radius: var(--pillar-radius-md);\n cursor: default;\n transition: all var(--pillar-transition-fast);\n}\n\n._pillar-context-tag:hover {\n background: var(--pillar-bg-secondary);\n border-color: var(--pillar-text-muted);\n}\n\n._pillar-context-tag-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n flex-shrink: 0;\n color: var(--pillar-primary);\n}\n\n._pillar-context-tag-icon svg {\n width: 12px;\n height: 12px;\n}\n\n._pillar-context-tag-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n line-height: 1.3;\n}\n\n._pillar-context-tag-remove {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n margin-left: 2px;\n color: var(--pillar-text-placeholder);\n background: transparent;\n border: none;\n border-radius: var(--pillar-radius-sm);\n cursor: pointer;\n flex-shrink: 0;\n transition: all var(--pillar-transition-fast);\n}\n\n._pillar-context-tag-remove:hover {\n color: var(--pillar-text);\n background: var(--pillar-border);\n}\n\n._pillar-context-tag-remove svg {\n width: 12px;\n height: 12px;\n}\n\n.pillar-context-tag-list {}\n.pillar-context-tag {}\n.pillar-context-tag-icon {}\n.pillar-context-tag-label {}\n.pillar-context-tag-remove {}\n\n/* Context tags inside user message bubbles need inverted colors */\n._pillar-message-user ._pillar-context-tag-list {\n padding: 0 0 8px 0;\n}\n\n._pillar-message-user ._pillar-context-tag {\n background: rgba(255, 255, 255, 0.2);\n border-color: rgba(255, 255, 255, 0.3);\n color: #ffffff;\n}\n\n._pillar-message-user ._pillar-context-tag:hover {\n background: rgba(255, 255, 255, 0.3);\n border-color: rgba(255, 255, 255, 0.4);\n}\n\n._pillar-message-user ._pillar-context-tag-icon {\n color: #ffffff;\n}\n\n._pillar-message-user ._pillar-context-tag-label {\n color: #ffffff;\n}\n\n/* ============================================================================\n Unified Chat Input\n Internal: _pillar-unified-input | Public: pillar-unified-input\n Reusable input component with context tag support\n ============================================================================ */\n\n._pillar-unified-input-wrapper {\n display: flex;\n flex-direction: column;\n background: var(--pillar-bg-secondary);\n border: 1px solid var(--pillar-border);\n border-radius: var(--pillar-radius-xl);\n transition: border-color var(--pillar-transition-fast), box-shadow var(--pillar-transition-fast);\n}\n\n._pillar-unified-input-wrapper:focus-within {\n border-color: var(--pillar-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n._pillar-unified-input {\n display: block;\n width: 100%;\n padding: 12px 14px 8px;\n font-size: var(--pillar-font-size-base);\n font-family: var(--pillar-font-family);\n line-height: 1.5;\n color: var(--pillar-text);\n background: transparent;\n border: none;\n outline: none;\n resize: none;\n overflow-y: hidden;\n box-sizing: border-box;\n}\n\n._pillar-unified-input::placeholder {\n color: var(--pillar-text-placeholder);\n}\n\n._pillar-unified-input:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n._pillar-unified-input-row {\n display: flex;\n justify-content: flex-end;\n padding: 8px 10px;\n}\n\n._pillar-unified-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n color: #ffffff;\n background: var(--pillar-primary);\n border: none;\n border-radius: var(--pillar-radius-md);\n cursor: pointer;\n flex-shrink: 0;\n transition: all var(--pillar-transition-fast);\n}\n\n._pillar-unified-send-btn:hover:not(:disabled) {\n background: var(--pillar-primary-hover);\n}\n\n._pillar-unified-send-btn:disabled {\n color: var(--pillar-text-placeholder);\n background: var(--pillar-bg-tertiary);\n cursor: not-allowed;\n}\n\n._pillar-unified-send-btn svg {\n width: 16px;\n height: 16px;\n}\n\n.pillar-unified-input-wrapper {}\n.pillar-unified-input {}\n.pillar-unified-input-row {}\n.pillar-unified-send-btn {}\n",Yi=Ie(null),Ji=Ie([]);He(()=>null!==Yi.value),He(()=>Yi.value&&Yi.value.steps[Yi.value.current_step]||null);const er=He(()=>Yi.value?Yi.value.steps.filter(e=>"completed"===e.status||"skipped"===e.status).length:0);function nr(e,n){if(!Yi.value)return;const t=Yi.value.steps.map((t,i)=>i===e?{...t,status:n}:t);Yi.value={...Yi.value,steps:t}}function tr(){if(!Yi.value)return null;const e=Yi.value.current_step+1;if(e>=Yi.value.steps.length)return null;const n=Yi.value.steps[e].auto_run?"active":"awaiting_initiation",t=Yi.value.steps.map((t,i)=>i===e?{...t,status:n}:t);return Yi.value={...Yi.value,steps:t,current_step:e},Yi.value.steps[e]}function ir(){if(!Yi.value)return null;const e=Yi.value;return Ji.value=[...Ji.value,e],Yi.value=null,e}He(()=>Yi.value?er.value/Yi.value.total_steps:0);const rr="\n/* Workflow Checklist Container */\n.pillar-workflow {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px;\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n margin: 12px 0;\n}\n\n/* Header */\n.pillar-workflow__header {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.pillar-workflow__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n}\n\n.pillar-workflow__title {\n flex: 1;\n font-size: 14px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.pillar-workflow__progress {\n font-size: 12px;\n font-weight: 500;\n color: #6b7280;\n padding: 2px 8px;\n background: #e5e7eb;\n border-radius: 10px;\n}\n\n.pillar-workflow__description {\n font-size: 13px;\n color: #6b7280;\n}\n\n/* Steps List */\n.pillar-workflow__steps {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n/* Individual Step */\n.pillar-workflow-step {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n background: #ffffff;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n transition: all 0.15s ease;\n}\n\n.pillar-workflow-step__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n color: #9ca3af;\n}\n\n.pillar-workflow-step__icon svg {\n width: 18px;\n height: 18px;\n}\n\n.pillar-workflow-step__content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.pillar-workflow-step__label {\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n}\n\n.pillar-workflow-step__note {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.pillar-workflow-step__status-text {\n font-size: 12px;\n color: #2563eb;\n font-style: italic;\n}\n\n.pillar-workflow-step__actions {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n/* Step States */\n.pillar-workflow-step--pending {\n opacity: 0.6;\n}\n\n.pillar-workflow-step--awaiting_initiation {\n background: #fef3c7;\n border-color: #fcd34d;\n}\n\n.pillar-workflow-step--awaiting_initiation .pillar-workflow-step__icon {\n color: #d97706;\n}\n\n.pillar-workflow-step--active {\n background: #eff6ff;\n border-color: #93c5fd;\n}\n\n.pillar-workflow-step--active .pillar-workflow-step__icon {\n color: #2563eb;\n}\n\n.pillar-workflow-step--completed .pillar-workflow-step__icon {\n color: #059669;\n}\n\n.pillar-workflow-step--completed .pillar-workflow-step__label {\n text-decoration: line-through;\n color: #6b7280;\n}\n\n.pillar-workflow-step--skipped {\n opacity: 0.5;\n}\n\n.pillar-workflow-step--skipped .pillar-workflow-step__icon {\n color: #9ca3af;\n}\n\n.pillar-workflow-step--skipped .pillar-workflow-step__label {\n text-decoration: line-through;\n color: #9ca3af;\n}\n\n.pillar-workflow-step--failed {\n background: #fef2f2;\n border-color: #fca5a5;\n}\n\n.pillar-workflow-step--failed .pillar-workflow-step__icon {\n color: #dc2626;\n}\n\n/* Start Button */\n.pillar-workflow-step__start-btn {\n display: inline-flex;\n align-items: center;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 600;\n font-family: inherit;\n background: #2563eb;\n color: #ffffff;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.pillar-workflow-step__start-btn:hover {\n background: #1d4ed8;\n}\n\n/* Skip Button */\n.pillar-workflow-step__skip-btn {\n display: inline-flex;\n align-items: center;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 500;\n font-family: inherit;\n background: transparent;\n color: #6b7280;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.pillar-workflow-step__skip-btn:hover {\n background: #f3f4f6;\n color: #374151;\n}\n\n/* Spinner Animation for Active Step */\n@keyframes pillar-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.pillar-workflow-step__spinner {\n animation: pillar-spin 1s linear infinite;\n}\n\n/* Footer */\n.pillar-workflow__footer {\n display: flex;\n justify-content: flex-end;\n padding-top: 8px;\n border-top: 1px solid #e5e7eb;\n}\n\n.pillar-workflow__cancel-btn {\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 500;\n font-family: inherit;\n background: transparent;\n color: #9ca3af;\n border: none;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.pillar-workflow__cancel-btn:hover {\n color: #dc2626;\n}\n";class ar{constructor(e,n,t,i){this.host=null,this.shadow=null,this.backdrop=null,this.panelElement=null,this.renderRoot=null,this.unsubscribe=null,this.isManualMount=!1,this.themeObserver=null,this.handleKeyDown=e=>{"Escape"===e.key&&Ze.value&&ln()},this.config=e,this.api=n,this.events=t,this.rootContainer=i||null,this.isManualMount="manual"===e.panel.container}detectThemeFromDOM(){const e=document.documentElement;if(e.classList.contains("dark"))return"dark";return"dark"===e.getAttribute("data-theme")||"dark"===e.style.colorScheme?"dark":"light"}get isOpen(){return Ze.value}async init(){var e,n,t;e=this.config.panel.position,Qe.value=e,(e=>{Ge.value=e})(this.config.panel.mode),(e=>{Ye.value=e})(this.config.panel.width),n=this.config.panel.hoverBreakpoint,Je.value=n,t=this.config.panel.hoverBackdrop,en.value=t,(()=>{if("undefined"==typeof window)return;tn?.();const e=()=>{nn.value=window.innerWidth};nn.value=window.innerWidth,window.addEventListener("resize",e),tn=()=>{window.removeEventListener("resize",e)}})(),this.createHost(),this.isManualMount||this.createBackdrop(),this.createPanel(),this.renderPreact(),this.bindEvents(),this.subscribeToState()}open(e){if(Ze.value)return e?.view&&Nn(e.view),void(e?.focusInput&&Ln());Ze.value=!0,"overlay"===an.value&&(document.body.style.overflow="hidden"),e?.view&&Nn(e.view),e?.focusInput?Ln():this.setupFocusTrap()}close(){Ze.value&&ln()}navigate(e,n){Ze.value?Nn(e,n):this.open({view:e})}destroy(){this.close(),this.isManualMount||this.removePushModeStyles(),this.unsubscribe?.(),this.unsubscribe=null,tn?.(),tn=null,this.themeObserver?.disconnect(),this.themeObserver=null,this.renderRoot&&K(null,this.renderRoot),this.backdrop?.remove(),this.host?.remove(),document.getElementById("pillar-sdk-styles")?.remove(),document.getElementById("pillar-sdk-theme")?.remove(),document.getElementById("pillar-sdk-custom")?.remove(),this.host=null,this.shadow=null,this.backdrop=null,this.panelElement=null,this.renderRoot=null,document.removeEventListener("keydown",this.handleKeyDown),on(),Wn(),jn()}subscribeToState(){if(this.isManualMount)return void(this.unsubscribe=Ze.subscribe(e=>{e||this.events.emit("panel:close")}));let e=Ze.value,n=an.value;const t=()=>{const e=Ze.value,n="push"===an.value,t=Ye.value,i=Qe.value,r=rn.value&&en.value;e?(n?(this.applyPushModeStyles(t,i),this.backdrop?.classList.remove("_pillar-backdrop--visible","pillar-backdrop--visible")):(this.removePushModeStyles(),r?this.backdrop?.classList.add("_pillar-backdrop--visible","pillar-backdrop--visible"):this.backdrop?.classList.remove("_pillar-backdrop--visible","pillar-backdrop--visible")),this.panelElement?.classList.add("_pillar-panel--open","pillar-panel--open")):(this.removePushModeStyles(),this.backdrop?.classList.remove("_pillar-backdrop--visible","pillar-backdrop--visible"),this.panelElement?.classList.remove("_pillar-panel--open","pillar-panel--open"))},i=Ze.subscribe(n=>{n!==e&&(e=n,t(),n||(setTimeout(()=>{Ze.value||(Wn(),jn())},300),this.events.emit("panel:close")))}),r=an.subscribe(e=>{e!==n&&(n=e,t())});this.unsubscribe=()=>{i(),r()}}applyPushModeStyles(e,n){document.documentElement.style.transition="padding 0.3s ease","right"===n?document.documentElement.style.paddingRight=`${e}px`:document.documentElement.style.paddingLeft=`${e}px`}removePushModeStyles(){document.documentElement.style.paddingLeft="",document.documentElement.style.paddingRight="",setTimeout(()=>{Ze.value||(document.documentElement.style.transition="")},300)}get renderContainer(){return this.shadow||this.host}transformStylesForRegularDOM(e){return e.replace(/:host\(([^)]+)\)/g,"[data-pillar-panel]$1").replace(/:host-context\(([^)]+)\)/g,"$1 [data-pillar-panel]").replace(/:host:not\(([^)]+)\)/g,"[data-pillar-panel]:not($1)").replace(/:host/g,"[data-pillar-panel]")}injectStylesIntoHead(){const e="pillar-sdk-styles";if(document.getElementById(e))return;const n=Gi+Vi+rr+Gn+mt+lt+tt,t=this.transformStylesForRegularDOM(n),i=document.createElement("style");i.id=e,i.textContent=t,document.head.appendChild(i);const r=Qi(this.config.theme);if(r){const e=document.createElement("style");e.id="pillar-sdk-theme",e.textContent=this.transformStylesForRegularDOM(r),document.head.appendChild(e)}if(this.config.customCSS){const e=document.createElement("style");e.id="pillar-sdk-custom",e.textContent=this.transformStylesForRegularDOM(this.config.customCSS),document.head.appendChild(e)}}injectStylesIntoShadow(){if(!this.shadow)return;const e=document.createElement("style");e.textContent=Gi+Vi+rr+Gn+mt+lt+tt,this.shadow.appendChild(e);const n=Qi(this.config.theme);if(n){const e=document.createElement("style");e.textContent=n,e.setAttribute("data-pillar-theme",""),this.shadow.appendChild(e)}if(this.config.customCSS){const e=document.createElement("style");e.textContent=this.config.customCSS,e.setAttribute("data-pillar-custom",""),this.shadow.appendChild(e)}}createHost(){this.host=document.createElement("div"),this.host.className="pillar-panel-host",this.host.setAttribute("data-pillar-panel",""),this.config.panel.useShadowDOM?(this.shadow=this.host.attachShadow({mode:"open"}),this.injectStylesIntoShadow()):(this.shadow=null,this.injectStylesIntoHead()),this.applyThemeMode(),this.setupThemeObserver();const e=this.config.panel.container;if("manual"===e)return;const n=this.rootContainer||document.body;let t=null;"string"==typeof e?(t=document.querySelector(e),t||(console.warn(`[Pillar] Container element not found: ${e}, falling back to root container`),t=n)):t=e instanceof HTMLElement?e:n,t.appendChild(this.host)}mountTo(e){this.host?(this.host.parentElement&&this.host.parentElement.removeChild(this.host),e.appendChild(this.host)):console.warn("[Pillar] Panel host not created yet")}getHostElement(){return this.host}createBackdrop(){this.backdrop=document.createElement("div"),this.backdrop.className="_pillar-backdrop pillar-backdrop",this.backdrop.style.cssText="\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.3);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n z-index: 99998;\n ",this.backdrop.addEventListener("click",()=>{ln()}),document.body.appendChild(this.backdrop)}createPanel(){const e=this.renderContainer;if(!e)return;this.panelElement=document.createElement("div");const n=this.isManualMount?" _pillar-panel--manual pillar-panel--manual":"",t=`_pillar-panel--${Qe.value} pillar-panel--${Qe.value}`;this.panelElement.className=`_pillar-panel pillar-panel ${t}${n}`,this.panelElement.style.setProperty("--pillar-panel-width",`${Ye.value}px`),this.panelElement.setAttribute("role","dialog"),this.panelElement.setAttribute("aria-modal","true"),this.panelElement.setAttribute("aria-label","Assistant panel"),this.renderRoot=document.createElement("div"),this.renderRoot.className="_pillar-panel-root pillar-panel-root",this.panelElement.appendChild(this.renderRoot),e.appendChild(this.panelElement)}renderPreact(){this.renderRoot&&K(X(Jn,{api:this.api,events:this.events,children:X(Zi,{})}),this.renderRoot)}bindEvents(){document.addEventListener("keydown",this.handleKeyDown)}setupFocusTrap(){setTimeout(()=>{const e=this.renderContainer,n=e?.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');n?.focus()},100)}applyThemeMode(){if(!this.host)return;const e=this.config.theme.mode;if("light"===e||"dark"===e)this.host.setAttribute("data-theme",e);else{const e=this.detectThemeFromDOM();this.host.setAttribute("data-theme",e)}}setupThemeObserver(){"auto"===this.config.theme.mode&&(this.themeObserver=new MutationObserver(()=>{this.applyThemeMode()}),this.themeObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["class","data-theme","style"]}))}setTheme(e){this.config={...this.config,theme:{...this.config.theme,...e,colors:{...this.config.theme.colors,...e.colors},darkColors:{...this.config.theme.darkColors,...e.darkColors}}},this.applyThemeMode();const n=Qi(this.config.theme);if(this.shadow){const e=this.shadow.querySelector("style[data-pillar-theme]");if(e&&n)e.textContent=n;else if(n&&!e){const e=document.createElement("style");e.textContent=n,e.setAttribute("data-pillar-theme","");const t=this.shadow.querySelector("style");t?.nextSibling?this.shadow.insertBefore(e,t.nextSibling):this.shadow.appendChild(e)}}else{const e=this.transformStylesForRegularDOM(n),t=document.getElementById("pillar-sdk-theme");if(t&&e)t.textContent=e;else if(e&&!t){const n=document.createElement("style");n.id="pillar-sdk-theme",n.textContent=e,document.head.appendChild(n)}}}}function lr({label:e,x:n,y:t,isVisible:i,onClick:r}){const a=ue(null),[l,o]=ce({x:n,y:t}),[s,p]=ce(!1),c=fe(()=>{if(!a.current||!i)return;const e=a.current.getBoundingClientRect(),r=window.innerWidth;let l=n,s=t,c=!1;l=n-e.width/2,l<10?l=10:l+e.width>r-10&&(l=r-e.width-10),s=t-e.height-10,s<10&&(s=t+10,c=!0),o({x:l,y:s}),p(c)},[n,t,i]);de(()=>{i&&requestAnimationFrame(c)},[i,c,n,t]);return X("div",{ref:a,class:`pillar-text-selection-popover${i?" pillar-text-selection-popover--visible":""}${s?" pillar-text-selection-popover--below":""}`,style:{left:`${l.x}px`,top:`${l.y}px`},onClick:e=>{e.preventDefault(),e.stopPropagation(),r()},role:"button",tabIndex:0,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),r())},children:[X("div",{class:"pillar-text-selection-popover__content",children:[X("span",{class:"pillar-text-selection-popover__icon",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 20 20" fill="currentColor"><path d="M10 2a1 1 0 011 1v1.323l3.954 1.582 1.599-.8a1 1 0 01.894 1.79l-1.233.616 1.738 5.42a1 1 0 01-.285 1.05A3.989 3.989 0 0115 15a3.989 3.989 0 01-2.667-1.019 1 1 0 01-.285-1.05l1.715-5.349L10 6.477l-3.763 1.105 1.715 5.349a1 1 0 01-.285 1.05A3.989 3.989 0 015 15a3.989 3.989 0 01-2.667-1.019 1 1 0 01-.285-1.05l1.738-5.42-1.233-.617a1 1 0 01.894-1.788l1.599.799L9 4.323V3a1 1 0 011-1z"/></svg>'}}),X("span",{children:e})]}),X("div",{class:"pillar-text-selection-popover__arrow"})]})}const or="pillar-text-selection-styles";class sr{constructor(e,n,t){this.container=null,this.isVisible=!1,this.currentSelection="",this.stylesInjected=!1,this.handleMouseUp=e=>{setTimeout(()=>{this.checkSelection(e)},10)},this.handleMouseDown=e=>{e.target.closest(".pillar-text-selection-popover")||this.hidePopover()},this.handleKeyDown=e=>{"Escape"===e.key&&this.hidePopover()},this.handleScroll=()=>{this.isVisible&&this.hidePopover()},this.handlePopoverClick=()=>{this.currentSelection&&(this.events.emit("textSelection:click",{text:this.currentSelection}),(e=>{const n={...e,id:`ctx_${Date.now()}_${Math.random().toString(36).substring(2,9)}`};Pn.value=[...Pn.value,n]})({type:"highlighted_text",url_origin:window.location.href,text_content:this.currentSelection}),this.hidePopover(),window.getSelection()?.removeAllRanges(),this.openPanel())},this.config=e,this.events=n,this.openPanel=t}init(){this.stylesInjected||(sn(document,"\n/* Pillar Text Selection Popover Styles */\n.pillar-text-selection-popover {\n position: absolute;\n z-index: 99999;\n padding: 6px 12px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 13px;\n font-weight: 500;\n line-height: 1;\n color: #ffffff;\n background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);\n border-radius: 6px;\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3), 0 2px 4px rgba(0, 0, 0, 0.1);\n pointer-events: auto;\n opacity: 0;\n transform: translateY(4px) scale(0.95);\n transition: opacity 0.15s ease, transform 0.15s ease;\n cursor: pointer;\n user-select: none;\n}\n\n.pillar-text-selection-popover.pillar-text-selection-popover--visible {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n\n.pillar-text-selection-popover:hover {\n background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);\n box-shadow: 0 6px 16px rgba(99, 102, 241, 0.4), 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.pillar-text-selection-popover:active {\n transform: translateY(0) scale(0.98);\n}\n\n.pillar-text-selection-popover__content {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.pillar-text-selection-popover__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n}\n\n.pillar-text-selection-popover__icon svg {\n width: 100%;\n height: 100%;\n}\n\n/* Arrow pointing down to selection */\n.pillar-text-selection-popover__arrow {\n position: absolute;\n bottom: -5px;\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n width: 10px;\n height: 10px;\n background: linear-gradient(135deg, #8b5cf6 0%, #8b5cf6 100%);\n}\n\n.pillar-text-selection-popover--below .pillar-text-selection-popover__arrow {\n bottom: auto;\n top: -5px;\n background: linear-gradient(135deg, #6366f1 0%, #6366f1 100%);\n}\n",or),this.stylesInjected=!0),this.container=document.createElement("div"),this.container.id="pillar-text-selection-container",document.body.appendChild(this.container),this.bindEvents()}destroy(){this.unbindEvents(),this.container&&(K(null,this.container),this.container.remove(),this.container=null),document.getElementById(or)?.remove(),this.stylesInjected=!1,this.isVisible=!1,this.currentSelection=""}bindEvents(){document.addEventListener("mouseup",this.handleMouseUp),document.addEventListener("mousedown",this.handleMouseDown),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("scroll",this.handleScroll,!0)}unbindEvents(){document.removeEventListener("mouseup",this.handleMouseUp),document.removeEventListener("mousedown",this.handleMouseDown),document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("scroll",this.handleScroll,!0)}checkSelection(e){const n=window.getSelection();if(!n||n.isCollapsed)return;const t=n.toString().trim();if(t.length<3)return;const i=n.getRangeAt(0),r=i.commonAncestorContainer,a=r instanceof Element?r:r.parentElement;if(a?.closest("[data-pillar-panel]")||a?.closest(".pillar-panel-host"))return;const l=i.getBoundingClientRect(),o=l.left+l.width/2,s=l.top+window.scrollY;this.currentSelection=t,this.showPopover(o,s)}showPopover(e,n){this.container&&(this.isVisible=!0,K(X(lr,{label:this.config.textSelection.label,x:e,y:n,isVisible:!0,onClick:this.handlePopoverClick}),this.container),this.events.emit("textSelection:shown",{text:this.currentSelection}))}hidePopover(){this.container&&this.isVisible&&(this.isVisible=!1,K(X(lr,{label:this.config.textSelection.label,x:0,y:0,isVisible:!1,onClick:()=>{}}),this.container))}}function pr(){return{x:window.scrollX,y:window.scrollY,width:window.innerWidth,height:window.innerHeight}}function cr(e,n,t){const{alignment:i="center",offset:r=8,padding:a=8,arrowSize:l=8}=t,o=pr(),s=function(e,n,t){if("auto"!==t.position)return t.position;const i=function(e,n,t=8){return{top:e.y-n.y-t,bottom:n.y+n.height-(e.y+e.height)-t,left:e.x-n.x-t,right:n.x+n.width-(e.x+e.width)-t,auto:0}}(e,pr(),t.padding),r=t.offset||8,a=i.top>=n.height+r,l=i.bottom>=n.height+r,o=i.left>=n.width+r,s=i.right>=n.width+r;if(l)return"bottom";if(a)return"top";if(s)return"right";if(o)return"left";const p=Object.entries(i).filter(([e])=>"auto"!==e).sort(([,e],[,n])=>n-e);return p[0][0]}(e,n,t);let p,c,d=0,u=0;switch(s){case"top":u=e.y-n.height-r,d=dr(e,n,i),p=e.x+e.width/2-l/2;break;case"bottom":u=e.y+e.height+r,d=dr(e,n,i),p=e.x+e.width/2-l/2;break;case"left":d=e.x-n.width-r,u=ur(e,n,i),c=e.y+e.height/2-l/2;break;case"right":d=e.x+e.width+r,u=ur(e,n,i),c=e.y+e.height/2-l/2}return d=Math.max(o.x+a,Math.min(d,o.x+o.width-n.width-a)),u=Math.max(o.y+a,Math.min(u,o.y+o.height-n.height-a)),void 0!==p&&(p=Math.max(d+l,Math.min(p,d+n.width-2*l)),p-=d),void 0!==c&&(c=Math.max(u+l,Math.min(c,u+n.height-2*l)),c-=u),{x:d,y:u,position:s,arrowX:p,arrowY:c}}function dr(e,n,t){switch(t){case"start":return e.x;case"end":return e.x+e.width-n.width;default:return e.x+e.width/2-n.width/2}}function ur(e,n,t){switch(t){case"start":return e.y;case"end":return e.y+e.height-n.height;default:return e.y+e.height/2-n.height/2}}function hr({data:e,anchor:n,trigger:t,position:i,isVisible:r,onLearnMore:a,onHide:l,onMouseEnter:o,onMouseLeave:s}){const p=ue(null),c=ue(null),[d,u]=ce(i),[h,f]=ce({left:0,top:0}),[g,_]=ce({}),m=fe(()=>{if(!p.current||!r)return;const e=function(e){const n=e.getBoundingClientRect();return{x:n.left+window.scrollX,y:n.top+window.scrollY,width:n.width,height:n.height}}(n),t=p.current.getBoundingClientRect(),a=cr(e,{width:t.width,height:t.height},{position:i,offset:10,arrowSize:12});f({left:a.x,top:a.y}),u(a.position),void 0!==a.arrowX&&_({left:a.arrowX}),void 0!==a.arrowY&&_({top:a.arrowY})},[n,i,r]);de(()=>{if(r)return requestAnimationFrame(m),window.addEventListener("scroll",m,!0),window.addEventListener("resize",m),()=>{window.removeEventListener("scroll",m,!0),window.removeEventListener("resize",m)}},[r,m]);return X("div",{ref:p,class:`pillar-tooltip pillar-tooltip--${d}${r?" pillar-tooltip--visible":""}`,role:"tooltip",style:{left:`${h.left}px`,top:`${h.top}px`},onMouseEnter:o,onMouseLeave:s,children:[X("div",{class:"pillar-tooltip__content",dangerouslySetInnerHTML:{__html:e.content_html||e.content}}),e.show_learn_more&&e.article_slug&&X("button",{class:"pillar-tooltip__learn-more",onClick:n=>{n.stopPropagation(),e.article_slug&&a?.(e.article_slug)},type:"button",children:[e.article_title||"Learn more",X("span",{dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z" clip-rule="evenodd"></path></svg>'}})]}),"click"===t&&X("button",{class:"pillar-tooltip__close",onClick:e=>{e.stopPropagation(),l()},"aria-label":"Close tooltip",type:"button",dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path></svg>'}}),X("div",{ref:c,class:"pillar-tooltip__arrow",style:g})]})}class fr{constructor(e,n,t){this.container=null,this.iconElement=null,this.isVisible=!1,this.hideTimeout=null,this.handleMouseEnter=()=>{this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null),this.show()},this.handleMouseLeave=()=>{this.hideTimeout=setTimeout(()=>this.hide(),100)},this.handleTooltipMouseEnter=()=>{this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null)},this.handleTooltipMouseLeave=()=>{this.hideTimeout=setTimeout(()=>this.hide(),100)},this.handleClick=e=>{e.stopPropagation(),this.toggle()},this.handleDocumentClick=()=>{this.isVisible&&this.hide()},this.handleFocus=()=>{this.show()},this.handleBlur=()=>{this.hide()},this.handleKeyDown=e=>{"Escape"===e.key&&this.isVisible&&this.hide()},this.id=`tooltip-${Math.random().toString(36).slice(2,9)}`,this.data=e,this.anchor=n,this.options=t}init(){this.container=document.createElement("div"),this.container.id=this.id,document.body.appendChild(this.container),"icon"===this.options.trigger&&this.createIcon(),this.bindEvents()}show(){this.isVisible||(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null),this.isVisible=!0,this.renderTooltip(),this.options.onShow?.())}hide(){this.isVisible&&(this.isVisible=!1,this.renderTooltip(),this.hideTimeout=setTimeout(()=>{this.options.onHide?.()},150))}toggle(){this.isVisible?this.hide():this.show()}destroy(){this.hideTimeout&&clearTimeout(this.hideTimeout),this.unbindEvents(),this.container&&(K(null,this.container),this.container.remove()),this.iconElement?.remove(),this.container=null,this.iconElement=null}renderTooltip(){if(!this.container)return;const e="hover"===this.options.trigger?{onMouseEnter:this.handleTooltipMouseEnter,onMouseLeave:this.handleTooltipMouseLeave}:{};K(X(hr,{data:this.data,anchor:this.anchor,trigger:this.options.trigger,position:this.options.position,isVisible:this.isVisible,onLearnMore:this.options.onLearnMore,onHide:()=>this.hide(),...e}),this.container)}createIcon(){const e=document.createElement("span");e.className="pillar-tooltip-icon",e.innerHTML='<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clip-rule="evenodd"></path></svg>',e.setAttribute("aria-label","More information"),e.setAttribute("role","button"),e.setAttribute("tabindex","0"),this.anchor.insertAdjacentElement("afterend",e),this.iconElement=e}bindEvents(){const e="icon"===this.options.trigger?this.iconElement:this.anchor;if(e){switch(this.options.trigger){case"hover":e.addEventListener("mouseenter",this.handleMouseEnter),e.addEventListener("mouseleave",this.handleMouseLeave);break;case"click":case"icon":e.addEventListener("click",this.handleClick),document.addEventListener("click",this.handleDocumentClick);break;case"focus":e.addEventListener("focus",this.handleFocus),e.addEventListener("blur",this.handleBlur)}document.addEventListener("keydown",this.handleKeyDown)}}unbindEvents(){const e="icon"===this.options.trigger?this.iconElement:this.anchor;e&&(e.removeEventListener("mouseenter",this.handleMouseEnter),e.removeEventListener("mouseleave",this.handleMouseLeave),e.removeEventListener("click",this.handleClick),e.removeEventListener("focus",this.handleFocus),e.removeEventListener("blur",this.handleBlur),document.removeEventListener("click",this.handleDocumentClick),document.removeEventListener("keydown",this.handleKeyDown))}}const gr="data-pillar-tooltip";class _r{constructor(e,n,t){this.tooltips=new Map,this.tooltipData=new Map,this.observer=null,this.stylesInjected=!1,this.config=e,this.api=n,this.events=t}async init(){this.stylesInjected||(sn(document,"\n/* Pillar Tooltip Styles */\n.pillar-tooltip {\n position: absolute;\n z-index: 99999;\n max-width: 320px;\n padding: 12px 16px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: #1a1a1a;\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.05);\n pointer-events: auto;\n opacity: 0;\n transform: scale(0.95);\n transition: opacity 0.15s ease, transform 0.15s ease;\n}\n\n.pillar-tooltip.pillar-tooltip--visible {\n opacity: 1;\n transform: scale(1);\n}\n\n.pillar-tooltip__content {\n margin: 0;\n}\n\n.pillar-tooltip__content p {\n margin: 0 0 8px;\n}\n\n.pillar-tooltip__content p:last-child {\n margin-bottom: 0;\n}\n\n.pillar-tooltip__content a {\n color: #2563eb;\n text-decoration: none;\n}\n\n.pillar-tooltip__content a:hover {\n text-decoration: underline;\n}\n\n.pillar-tooltip__learn-more {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-top: 12px;\n padding: 6px 12px;\n font-size: 13px;\n font-weight: 500;\n color: #2563eb;\n background: #eff6ff;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.pillar-tooltip__learn-more:hover {\n background: #dbeafe;\n}\n\n.pillar-tooltip__learn-more svg {\n width: 14px;\n height: 14px;\n}\n\n/* Arrow */\n.pillar-tooltip__arrow {\n position: absolute;\n width: 12px;\n height: 12px;\n background: #ffffff;\n transform: rotate(45deg);\n box-shadow: -1px -1px 0 0 rgba(0, 0, 0, 0.05);\n}\n\n.pillar-tooltip--top .pillar-tooltip__arrow {\n bottom: -6px;\n box-shadow: 1px 1px 0 0 rgba(0, 0, 0, 0.05);\n}\n\n.pillar-tooltip--bottom .pillar-tooltip__arrow {\n top: -6px;\n}\n\n.pillar-tooltip--left .pillar-tooltip__arrow {\n right: -6px;\n box-shadow: 1px -1px 0 0 rgba(0, 0, 0, 0.05);\n}\n\n.pillar-tooltip--right .pillar-tooltip__arrow {\n left: -6px;\n box-shadow: -1px 1px 0 0 rgba(0, 0, 0, 0.05);\n}\n\n/* Tooltip Icon (for icon trigger) */\n.pillar-tooltip-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-left: 4px;\n vertical-align: middle;\n color: #6b7280;\n cursor: help;\n transition: color 0.15s ease;\n}\n\n.pillar-tooltip-icon:hover {\n color: #2563eb;\n}\n\n.pillar-tooltip-icon svg {\n width: 100%;\n height: 100%;\n}\n\n/* Close button */\n.pillar-tooltip__close {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n color: #9ca3af;\n background: none;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n transition: color 0.15s ease, background 0.15s ease;\n}\n\n.pillar-tooltip__close:hover {\n color: #1a1a1a;\n background: #f3f4f6;\n}\n\n.pillar-tooltip__close svg {\n width: 12px;\n height: 12px;\n}\n","pillar-tooltip-styles"),this.stylesInjected=!0),await this.scan(),this.setupObserver()}async scan(){const e=document.querySelectorAll(`[${gr}]`);if(0===e.length)return;const n=new Set;if(e.forEach(e=>{const t=e.getAttribute(gr);t&&!this.tooltipData.has(t)&&n.add(t)}),n.size>0)try{(await this.api.getTooltips(Array.from(n))).forEach(e=>{this.tooltipData.set(e.tooltip_id,e)})}catch(e){console.warn("[Pillar] Failed to fetch tooltip data:",e)}e.forEach(e=>{const n=e.getAttribute(gr);if(!n)return;const t=this.getElementKey(e);if(this.tooltips.has(t))return;const i=this.tooltipData.get(n);i?this.createTooltip(e,i):console.warn(`[Pillar] No data found for tooltip: ${n}`)})}show(e){for(const[n,t]of this.tooltips){const i=document.querySelector(`[data-pillar-tooltip-key="${n}"]`),r=i?.getAttribute(gr);if(r===e)return void t.show()}}hide(e){for(const[n,t]of this.tooltips){const i=document.querySelector(`[data-pillar-tooltip-key="${n}"]`),r=i?.getAttribute(gr);if(r===e)return void t.hide()}}destroy(){this.observer?.disconnect(),this.observer=null,this.tooltips.forEach(e=>e.destroy()),this.tooltips.clear(),this.tooltipData.clear(),document.getElementById("pillar-tooltip-styles")?.remove(),this.stylesInjected=!1}createTooltip(e,n){const t=e.getAttribute("data-pillar-trigger")||n.trigger||this.config.tooltips.defaultTrigger,i=e.getAttribute("data-pillar-position")||n.position||"auto",r=new fr(n,e,{trigger:t,position:i,onLearnMore:()=>{this.events.emit("tooltip:click",{tooltipId:n.tooltip_id}),Promise.resolve().then(function(){return jr}).then(({Pillar:e})=>{e.getInstance()?.open()})},onShow:()=>{this.events.emit("tooltip:shown",{tooltipId:n.tooltip_id})},onHide:()=>{this.events.emit("tooltip:hidden",{tooltipId:n.tooltip_id})}});r.init(),this.tooltips.set(this.getElementKey(e),r)}setupObserver(){this.observer=new MutationObserver(e=>{let n=!1;for(const t of e){for(const e of t.addedNodes)if(e instanceof HTMLElement&&(e.hasAttribute(gr)||e.querySelector(`[${gr}]`))){n=!0;break}for(const e of t.removedNodes)e instanceof HTMLElement&&this.handleRemovedElement(e);if(n)break}n&&this.scan()}),this.observer.observe(document.body,{childList:!0,subtree:!0})}handleRemovedElement(e){const n=this.getElementKey(e);this.tooltips.has(n)&&(this.tooltips.get(n)?.destroy(),this.tooltips.delete(n)),e.querySelectorAll(`[${gr}]`).forEach(e=>{const n=this.getElementKey(e);this.tooltips.has(n)&&(this.tooltips.get(n)?.destroy(),this.tooltips.delete(n))})}getElementKey(e){let n=e.dataset.pillarTooltipKey;return n||(n=`tooltip-${Math.random().toString(36).slice(2,9)}`,e.dataset.pillarTooltipKey=n),n}}const mr={recentActions:[]},vr={},br=Ie({...mr}),xr=Ie({...vr});He(()=>{const e=br.value;return!!(e.currentPage||e.currentFeature||e.userRole||e.errorState||e.recentActions&&e.recentActions.length>0)}),He(()=>!!br.value.errorState);const yr="pillar-";const wr=[{id:"assistant",label:"Assistant",enabled:!0,order:0}],kr="https://api.trypillar.com",Sr={enabled:!0,position:"right",mode:"push",width:380,useShadowDOM:!1,hoverBreakpoint:1200,hoverBackdrop:!0},Cr={enabled:!0,position:"bottom-right",label:"Assistant",style:"edge"},Pr={enabled:!0,defaultTrigger:"hover"},Er={enabled:!0,prefix:"pillar-",clearAfterOpen:!0},Tr={enabled:!0,label:"Ask AI"},$r={mode:"auto"};function zr(e){if(!e||0===e.length)return wr;const n=new Map;for(const e of wr)n.set(e.id,{...e});for(const t of e)n.set(t.id,{...t});const t=n.get("assistant");return t&&(t.enabled=!0),Array.from(n.values()).sort((e,n)=>e.order-n.order)}function Mr(e){return{helpCenter:e.helpCenter,publicKey:e.publicKey,apiBaseUrl:e.apiBaseUrl||kr,platform:e.platform||"web",version:e.version,panel:{...Sr,...e.panel},floatingButton:{...Cr,...e.floatingButton},tooltips:{...Pr,...e.tooltips},urlParams:{...Er,...e.urlParams},textSelection:{...Tr,...e.textSelection},sidebarTabs:zr(e.sidebarTabs),theme:{mode:e.theme?.mode??$r.mode,colors:{...e.theme?.colors},darkColors:{...e.theme?.darkColors}},customCSS:e.customCSS,context:e.context||{},onReady:e.onReady,onError:e.onError}}class Ar{constructor(){this.listeners=new Map}on(e,n){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(n),()=>{this.off(e,n)}}off(e,n){const t=this.listeners.get(e);t&&t.delete(n)}emit(e,n){const t=this.listeners.get(e);t&&t.forEach(t=>{try{t(n)}catch(n){console.error(`[Pillar] Error in event handler for "${e}":`,n)}})}removeAllListeners(e){e?this.listeners.delete(e):this.listeners.clear()}}function Ir(e){if(e)try{const n=Rr(e);localStorage.removeItem(n),console.log("[PlanPersistence] Cleared saved plan")}catch(e){console.warn("[PlanPersistence] Failed to clear plan:",e)}}function Rr(e){return`pillar:active_plan:${e}`}class Lr{constructor(e,n,t){this.mcpClient=e,this.events=n,this.siteId=t}async handlePlanReceived(e){console.log(`[PlanExecutor] Received plan: ${e.id}, auto_execute=${e.auto_execute}, status=${e.status}`),dt(e),this.persistPlan(e),e.auto_execute&&"executing"===e.status&&(this.events.emit("plan:start",e),await this.executeNextStep())}async recoverPlan(){const e=function(e){if(!e)return null;try{const n=Rr(e),t=localStorage.getItem(n);if(!t)return null;const i=JSON.parse(t);if(1!==i.version)return console.warn("[PlanPersistence] Stored plan has incompatible version, clearing"),Ir(e),null;if(i.siteId!==e)return console.warn("[PlanPersistence] Stored plan is for different site, clearing"),Ir(e),null;const r=new Date(i.storedAt),a=new Date,l=i.plan.timeout_minutes||30,o=(a.getTime()-r.getTime())/6e4;return o>l?(console.warn(`[PlanPersistence] Stored plan has timed out (${Math.round(o)} minutes old, timeout: ${l} minutes)`),Ir(e),null):(console.log(`[PlanPersistence] Loaded plan ${i.plan.id} from localStorage`),i.plan)}catch(n){return console.warn("[PlanPersistence] Failed to load plan:",n),Ir(e),null}}(this.siteId);if(!e)return console.log("[PlanExecutor] No saved plan found"),null;console.log(`[PlanExecutor] Found saved plan ${e.id}, fetching latest state from server`);try{const n=(await this.mcpClient.getPlan(e.id)).plan;return["planning","ready","executing","awaiting_start","awaiting_input","awaiting_result"].includes(n.status)?(dt(n),this.events.emit("plan:updated",n),console.log(`[PlanExecutor] Recovered plan ${n.id} with status ${n.status}`),"executing"===n.status&&await this.executeNextStep(),n):(console.log(`[PlanExecutor] Plan ${n.id} is no longer active (status: ${n.status}), clearing`),Ir(this.siteId),null)}catch(e){return console.error("[PlanExecutor] Failed to recover plan from server:",e),Ir(this.siteId),null}}persistPlan(e){!function(e,n){if(!e||!n)return;if(["planning","ready","executing","awaiting_start","awaiting_input","awaiting_result"].includes(e.status))try{const t={version:1,plan:e,siteId:n,storedAt:(new Date).toISOString()},i=Rr(n);localStorage.setItem(i,JSON.stringify(t)),console.log(`[PlanPersistence] Saved plan ${e.id} to localStorage`)}catch(e){console.warn("[PlanPersistence] Failed to save plan:",e)}else Ir(n)}(e,this.siteId)}async startPlan(){const e=ot.value;if(e)if("awaiting_start"===e.status)try{const n=await this.mcpClient.startPlan(e.id);ut(n.plan),this.events.emit("plan:start",n.plan),await this.executeNextStep()}catch(n){console.error("[PlanExecutor] Failed to start plan:",n),this.events.emit("plan:error",{plan:e,error:n instanceof Error?n:new Error(String(n))})}else console.warn(`[PlanExecutor] Plan ${e.id} is not in awaiting_start status`);else console.warn("[PlanExecutor] No active plan to start")}async executeNextStep(){const e=ot.value;if(!e)return;let n=e.steps.find(e=>"ready"===e.status);if(n||(n=e.steps.find(e=>"awaiting_confirmation"===e.status&&e.requires_user_confirmation)),!n){const n=e.steps.every(e=>"completed"===e.status||"skipped"===e.status||"failed"===e.status);return void(n&&(console.log(`[PlanExecutor] Plan ${e.id} complete`),this.events.emit("plan:complete",e),ft(),Ir(this.siteId)))}if(n.requires_user_confirmation&&"awaiting_confirmation"!==n.status)return ht(n.id,{status:"awaiting_confirmation"}),void this.events.emit("plan:step:confirm",{plan:ot.value,step:n});"awaiting_confirmation"!==n.status&&await this.executeStep(n)}async confirmStep(e,n){const t=ot.value;if(!t)return;const i=t.steps.find(n=>n.id===e);if(!i)return void console.warn(`[PlanExecutor] Step ${e} not found`);n&&ht(e,{action_data:{...i.action_data,...n}});const r=ot.value,a=r?.steps.find(n=>n.id===e);a&&await this.executeStep(a)}async skipStep(e){const n=ot.value;if(!n)return;const t=n.steps.find(n=>n.id===e);if(t)try{const i=await this.mcpClient.skipStep(n.id,e);ut(i.plan),this.events.emit("plan:step:skip",{plan:i.plan,step:t}),await this.executeNextStep()}catch(n){console.error("[PlanExecutor] Failed to skip step:",n),ht(e,{status:"skipped"}),this.events.emit("plan:step:skip",{plan:ot.value,step:t}),await this.executeNextStep()}else console.warn(`[PlanExecutor] Step ${e} not found`)}async retryStep(e){const n=ot.value;if(!n)return;const t=n.steps.find(n=>n.id===e);if(t)if(t.is_retriable)if(t.retry_count>=t.max_retries)console.warn(`[PlanExecutor] Step ${e} has exceeded max retries (${t.retry_count}/${t.max_retries})`);else try{const i=await this.mcpClient.retryStep(n.id,e);ut(i.plan);const r=i.plan.steps.find(n=>n.id===e);this.events.emit("plan:step:retry",{plan:i.plan,step:r||t,retryCount:r?.retry_count||t.retry_count+1}),await this.executeNextStep()}catch(e){console.error("[PlanExecutor] Failed to retry step:",e),this.events.emit("plan:error",{plan:ot.value,error:e instanceof Error?e:new Error(String(e))})}else console.warn(`[PlanExecutor] Step ${e} is not retriable`);else console.warn(`[PlanExecutor] Step ${e} not found`)}async cancel(){const e=ot.value;if(e)try{const n=await this.mcpClient.cancelPlan(e.id);ut(n.plan),this.events.emit("plan:cancel",n.plan),ft(!0),Ir(this.siteId)}catch(n){console.error("[PlanExecutor] Failed to cancel plan:",n),this.events.emit("plan:cancel",e),ft(!0),Ir(this.siteId)}else console.warn("[PlanExecutor] No active plan to cancel")}async completeStepByAction(e,n=!0,t){const i=ot.value;if(!i)return void console.warn("[PlanExecutor] No active plan");const r=i.steps.find(n=>n.action_name===e&&"awaiting_result"===n.status);r?(console.log(`[PlanExecutor] Completing step ${r.index} (${e}) via callback`),n?await this.markStepComplete(r.id,t):(ht(r.id,{status:"failed",result:{error:"Action failed by host app"}}),this.events.emit("plan:step:failed",{plan:ot.value,step:ot.value.steps.find(e=>e.id===r.id),error:new Error("Action failed by host app"),canRetry:r.is_retriable}))):console.warn(`[PlanExecutor] No awaiting step found for action: ${e}`)}async markStepDone(e){const n=ot.value;if(!n)return void console.warn("[PlanExecutor] No active plan");const t=n.steps.find(n=>n.id===e);t?"awaiting_result"===t.status?(console.log(`[PlanExecutor] Marking step ${t.index} as done via UI button`),await this.markStepComplete(e)):console.warn(`[PlanExecutor] Step ${e} is not awaiting result (status: ${t.status})`):console.warn(`[PlanExecutor] Step ${e} not found`)}async markStepComplete(e,n){ht(e,{status:"completed",result:n});const t=ot.value,i=t.steps.find(n=>n.id===e);this.events.emit("plan:step:complete",{plan:t,step:i,success:!0}),await this.executeNextStep()}async executeStep(e){const n=ot.value;if(n){console.log(`[PlanExecutor] Executing step ${e.index}: ${e.action_name}`),ht(e.id,{status:"executing"}),this.events.emit("plan:step:active",{plan:ot.value,step:e});try{const t=r(e.action_name)?i(e.action_name):void 0,a=t?.handler;let l;if(a){if(l=await a(e.action_data),t?.returns&&void 0!==l){const{default:n}=await Promise.resolve().then(function(){return jr}),t=n.getInstance();t&&t.sendActionResult(e.action_name,l)}}else{const{default:n}=await Promise.resolve().then(function(){return jr}),t=n.getInstance();if(!t)throw new Error(`No handler for action: ${e.action_name} (Pillar not initialized)`);{const n=e.action_type,i=e.action_data?.path,r=e.action_data?.url;console.log(`[PlanExecutor] Executing via Pillar.executeTask: ${e.action_name}`),t.executeTask({id:e.id,name:e.action_name,taskType:n,path:i,externalUrl:r,data:e.action_data||{}}),l={executed:!0,action:e.action_name}}}if(e.requires_result_feedback){console.log(`[PlanExecutor] Sending step ${e.index} result to server`);const t=await this.mcpClient.continuePlan(n.id,e.id,l);ut(t.plan),this.events.emit("plan:updated",t.plan)}else if(e.auto_complete){ht(e.id,{status:"completed",result:l});const n=ot.value,t=n?.steps.find(n=>n.id===e.id);this.events.emit("plan:step:complete",{plan:n,step:t||e,success:!0}),await this.executeNextStep()}else console.log(`[PlanExecutor] Step ${e.index} awaiting callback (auto_complete=false)`),ht(e.id,{status:"awaiting_result",result:l}),this.events.emit("plan:step:active",{plan:ot.value,step:e})}catch(t){console.error(`[PlanExecutor] Step ${e.index} failed:`,t);const i=t instanceof Error?t.message:"Unknown error";try{ut((await this.mcpClient.failStep(n.id,e.id,i)).plan)}catch(n){console.error("[PlanExecutor] Failed to notify server of step failure:",n),ht(e.id,{status:"failed",error_message:i})}const r=ot.value,a=r?.steps.find(n=>n.id===e.id),l=a?a.is_retriable&&a.retry_count<a.max_retries:e.is_retriable&&e.retry_count<e.max_retries;this.events.emit("plan:step:failed",{plan:r,step:a||e,error:t instanceof Error?t:new Error(String(t)),canRetry:l}),this.events.emit("plan:step:complete",{plan:r,step:a||e,success:!1}),l||this.events.emit("plan:error",{plan:r,error:t instanceof Error?t:new Error(String(t))})}}}getActivePlan(){return ot.value}}class Br{constructor(){this._state="uninitialized",this._config=null,this._api=null,this._mcpClient=null,this._planExecutor=null,this._tooltipManager=null,this._textSelectionManager=null,this._panel=null,this._floatingButton=null,this._initPromise=null,this._rootContainer=null,this._unsubscribeHoverMode=null,this._productContext={...mr},this._userProfile={...vr},this._taskHandlers=new Map,this._anyTaskHandler=null,this._cardRenderers=new Map,this._events=new Ar}_createRootContainer(){let e=document.getElementById("pillar-root");if(e)return this._subscribeToHoverModeForRoot(e),e;e=document.createElement("div"),e.id="pillar-root";const n=rn.value?"20":"-1";return e.style.cssText=`isolation: isolate; z-index: ${n}; position: relative;`,document.body.appendChild(e),this._subscribeToHoverModeForRoot(e),e}_subscribeToHoverModeForRoot(e){this._unsubscribeHoverMode?.(),this._unsubscribeHoverMode=rn.subscribe(n=>{e.style.zIndex=n?"20":"-1"})}static async init(e){if(!e.helpCenter||!e.publicKey)throw new Error("[Pillar] helpCenter and publicKey are required");return Br.instance||(Br.instance=new Br),await Br.instance._init(e),Br.instance}static getInstance(){return Br.instance}static destroy(){Br.instance&&(Br.instance._destroy(),Br.instance=null)}get state(){return this._state}get isReady(){return"ready"===this._state}get isPanelOpen(){return Ze.value}get config(){return this._config}on(e,n){return this._events.on(e,n)}open(e){this._panel&&(this._panel.open(e),this._events.emit("panel:open"))}close(){this._panel&&(this._panel.close(),this._events.emit("panel:close"))}toggle(){this.isPanelOpen?this.close():this.open()}navigate(e,n){this._panel?.navigate(e,n),this._events.emit("panel:navigate",{view:e,params:n})}setContext(e){this._config&&(this._config.context={...this._config.context,...e})}setTheme(e){this._config&&(this._config.theme={...this._config.theme,...e,mode:e.mode??this._config.theme.mode,colors:{...this._config.theme.colors,...e.colors},darkColors:{...this._config.theme.darkColors,...e.darkColors}},this._panel?.setTheme(this._config.theme),this._events.emit("theme:change",{theme:this._config.theme}))}setTextSelectionEnabled(e){if(!this._config)return;this._config.textSelection.enabled!==e&&(this._config.textSelection.enabled=e,e?this._config.panel.enabled&&!this._textSelectionManager&&(this._textSelectionManager=new sr(this._config,this._events,()=>this.open()),this._textSelectionManager.init()):this._textSelectionManager&&(this._textSelectionManager.destroy(),this._textSelectionManager=null),this._events.emit("textSelection:change",{enabled:e}))}scanTooltips(){this._tooltipManager?.scan()}showTooltip(e){this._tooltipManager?.show(e)}hideTooltip(e){this._tooltipManager?.hide(e)}mountPanelTo(e){this._panel?.mountTo(e)}getPanelHostElement(){return this._panel?.getHostElement()??null}get productContext(){return{...this._productContext}}get userProfile(){return{...this._userProfile}}setProductContext(e){this._productContext={...e,recentActions:e.recentActions||[]},(e=>{br.value={...e,recentActions:e.recentActions||[]}})(this._productContext),this._events.emit("context:change",{context:this._productContext})}updateContext(e){this._productContext={...this._productContext,...e},(e=>{br.value={...br.value,...e}})(e),this._events.emit("context:change",{context:this._productContext})}setUserProfile(e){this._userProfile={...e},(e=>{xr.value={...e}})(this._userProfile),this._events.emit("profile:change",{profile:this._userProfile})}reportAction(e,n){const t=[...(this._productContext.recentActions||[]).slice(-9),e];this._productContext={...this._productContext,recentActions:t},(e=>{const n=br.value.recentActions||[];br.value={...br.value,recentActions:[...n.slice(-9),e]}})(e),this._events.emit("action:report",{action:e,metadata:n})}clearErrorState(){if(this._productContext.errorState){const{errorState:e,...n}=this._productContext;this._productContext=n,(()=>{const{errorState:e,...n}=br.value;br.value=n})(),this._events.emit("context:change",{context:this._productContext})}}setErrorState(e,n){this._productContext={...this._productContext,errorState:{code:e,message:n}},((e,n)=>{br.value={...br.value,errorState:{code:e,message:n}}})(e,n),this._events.emit("context:change",{context:this._productContext})}async getSuggestions(){if(!this._api)return console.warn("[Pillar] SDK not initialized, cannot get suggestions"),[];try{return await this._api.getSuggestions(this._productContext,this._userProfile)}catch(e){return console.error("[Pillar] Failed to get suggestions:",e),[]}}getAssistantContext(){return{product:this._productContext,user:this._userProfile}}onTask(e,n){return this._taskHandlers.set(e,n),()=>this._taskHandlers.delete(e)}onAnyTask(e){return this._anyTaskHandler=e,()=>{this._anyTaskHandler=null}}offTask(e){this._taskHandlers.delete(e)}executeTask(e){const{name:n,data:t,taskType:a,path:l,externalUrl:o}=e;if(this._events.emit("task:execute",e),this._anyTaskHandler)try{this._anyTaskHandler(n,t)}catch(e){console.error("[Pillar] Error in onAnyTask handler:",e)}const s=r(n)?i(n):void 0,p=s?.handler,c=this._taskHandlers.get(n),d=a?this._taskHandlers.get(a):void 0,u=p||c||d;if(u)try{const e=u("navigate"===a&&l?{...t,path:l}:t);s?.returns&&void 0!==e&&Promise.resolve(e).then(e=>{void 0!==e&&this.sendActionResult(n,e)}).catch(e=>{console.error(`[Pillar] Error in query action "${n}":`,e)}),this._events.emit("task:complete",{name:n,success:!0,data:t})}catch(e){console.error(`[Pillar] Error executing task "${n}":`,e),this._events.emit("task:complete",{name:n,success:!1,data:t})}else switch(a){case"navigate":l&&"undefined"!=typeof window&&(console.warn("[Pillar] No 'navigate' handler registered. Using window.location.href as fallback."),window.location.href=l,this._events.emit("task:complete",{name:n,success:!0,data:t}));break;case"external_link":o&&"undefined"!=typeof window&&(window.open(o,"_blank","noopener,noreferrer"),this._events.emit("task:complete",{name:n,success:!0,data:t}));break;case"copy_text":t.text&&"undefined"!=typeof navigator&&navigator.clipboard&&navigator.clipboard.writeText(String(t.text)).then(()=>{this._events.emit("task:complete",{name:n,success:!0,data:t})}).catch(()=>{this._events.emit("task:complete",{name:n,success:!1,data:t})});break;default:console.warn(`[Pillar] No handler registered for task "${n}". Register one with pillar.onTask('${n}', handler) or defineActions()`),this._events.emit("task:complete",{name:n,success:!1,data:{error:"No handler registered"}})}}completeTask(e,n=!0,t){this._events.emit("task:complete",{name:e,success:n,data:t})}confirmTaskExecution(e,n,t){e?this._api?this._api.confirmTaskExecution(e,n,t):console.warn("[Pillar] SDK not initialized, cannot confirm task execution"):console.warn("[Pillar] confirmTaskExecution called without taskId")}registerCard(e,n){return this._cardRenderers.set(e,n),()=>this._cardRenderers.delete(e)}getCardRenderer(e){return this._cardRenderers.get(e)}hasCardRenderer(e){return this._cardRenderers.has(e)}get workflow(){return Yi.value}startWorkflow(e){!function(e){Yi.value&&(Ji.value=[...Ji.value,Yi.value]);const n=e.steps.map((e,n)=>0===n?{...e,status:e.auto_run?"active":"awaiting_initiation"}:{...e,status:"pending"});Yi.value={...e,steps:n,current_step:0}}(e),this._events.emit("workflow:start",Yi.value);const n=Yi.value.steps[0];n.auto_run&&this._executeWorkflowStep(n)}initiateWorkflowStep(e){const n=Yi.value;if(!n)return void console.warn("[Pillar] No active workflow");const t=e??n.current_step,i=n.steps[t];i?"awaiting_initiation"===i.status?this._executeWorkflowStep(i):console.warn(`[Pillar] Step ${t} is not awaiting initiation`):console.warn(`[Pillar] Invalid step index: ${t}`)}confirmWorkflowStep(e,n){const t=Yi.value;if(!t)return;const i=n??t.current_step;if(t.steps[i],nr(i,e?"completed":"failed"),this._events.emit("workflow:step:complete",{workflow:Yi.value,step:Yi.value.steps[i],success:e}),!e)return;const r=tr();if(!r)return this._events.emit("workflow:complete",Yi.value),void ir();this._events.emit("workflow:step:active",{workflow:Yi.value,step:r}),r.auto_run&&this._executeWorkflowStep(r)}skipWorkflowStep(e){const n=Yi.value;if(!n)return;const t=e??n.current_step;n.steps[t],nr(t,"skipped"),this._events.emit("workflow:step:skip",{workflow:Yi.value,step:Yi.value.steps[t]});const i=tr();if(!i)return this._events.emit("workflow:complete",Yi.value),void ir();this._events.emit("workflow:step:active",{workflow:Yi.value,step:i}),i.auto_run&&this._executeWorkflowStep(i)}cancelWorkflow(){const e=Yi.value;e&&(this._events.emit("workflow:cancel",e),function(){if(!Yi.value)return null;const e=Yi.value;Yi.value=null}())}_executeWorkflowStep(e){nr(e.index,"active"),this.executeTask({id:e.task_id,name:e.task_name,taskType:e.task_type,data:e.data,path:e.data?.path,externalUrl:e.data?.url}),e.auto_complete&&setTimeout(()=>{this.confirmWorkflowStep(!0,e.index)},100)}get activePlan(){return ot.value}handlePlanReceived(e){this._planExecutor?.handlePlanReceived(e)}async startPlan(){await(this._planExecutor?.startPlan())}async confirmPlanStep(e,n){await(this._planExecutor?.confirmStep(e,n))}async skipPlanStep(e){await(this._planExecutor?.skipStep(e))}async retryPlanStep(e){await(this._planExecutor?.retryStep(e))}async cancelPlan(){await(this._planExecutor?.cancel())}async completePlanStepByAction(e,n=!0,t){await(this._planExecutor?.completeStepByAction(e,n,t))}async markPlanStepDone(e){await(this._planExecutor?.markStepDone(e))}sendActionResult(e,n){this._mcpClient?(this._mcpClient.sendActionResult(e,n),this._events.emit("action:result",{actionName:e,result:n})):console.warn("[Pillar] SDK not initialized, cannot send action result")}async _init(e){if("initializing"===this._state&&this._initPromise)return console.log("[Pillar] Already initializing, waiting for completion"),void await this._initPromise;"ready"!==this._state?(this._state="initializing",this._initPromise=this._doInit(e),await this._initPromise):console.log("[Pillar] Already initialized")}async _doInit(e){try{await new Promise(e=>{"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>e(),{once:!0}):e()});const n=Mr(e),i=new o(n),r=function(e,n){if(!n)return e;const t={...e};return n.panel&&(t.panel={...n.panel,...e.panel}),n.floatingButton&&(t.floatingButton={...n.floatingButton,...e.floatingButton}),n.sidebarTabs&&!e.sidebarTabs&&(t.sidebarTabs=n.sidebarTabs),n.theme?.colors?.primary&&(t.theme={...t.theme,colors:{primary:e.theme?.colors?.primary??n.theme.colors.primary,...e.theme?.colors}}),t}(e,await i.fetchEmbedConfig().catch(e=>(console.warn("[Pillar] Failed to fetch server config, using local config only:",e),null)));this._config=Mr(r),this._config.platform&&this._config.version&&t(this._config.platform,this._config.version),this._api=new o(this._config),this._mcpClient=new a(this._config),this._planExecutor=new Lr(this._mcpClient,this._events,this._config.helpCenter),this._rootContainer=this._createRootContainer(),this._config.tooltips.enabled&&(this._tooltipManager=new _r(this._config,this._api,this._events),await this._tooltipManager.init()),this._config.panel.enabled&&(this._panel=new ar(this._config,this._api,this._events,this._rootContainer),await this._panel.init()),this._config.floatingButton.enabled&&("edge"===this._config.floatingButton.style?this._floatingButton=new un(this._config,()=>this.toggle(),this._rootContainer):this._floatingButton=new fn(this._config,()=>this.toggle()),this._floatingButton.init()),this._config.textSelection.enabled&&this._config.panel.enabled&&(this._textSelectionManager=new sr(this._config,this._events,()=>this.open()),this._textSelectionManager.init()),this._state="ready",this._events.emit("ready"),this._config.onReady?.(),console.log("[Pillar] SDK initialized successfully"),await(this._planExecutor?.recoverPlan()),this._config.urlParams.enabled&&await this._handleUrlParams()}catch(e){this._state="error";const n=e instanceof Error?e:new Error(String(e));throw this._events.emit("error",n),this._config?.onError?.(n),console.error("[Pillar] Failed to initialize:",e),e}}async _handleUrlParams(){if(!this._config)return;(function(e=yr){if("undefined"==typeof window||!window.location)return{};const n=new URLSearchParams(window.location.search),t={};n.has(`${e}open`)&&(t.open=!0);const i=n.get(`${e}article`);i&&(t.article=i);const r=n.get(`${e}article-id`);r&&!t.article&&(t.article=r);const a=n.get(`${e}category`);a&&(t.category=a);const l=n.get(`${e}search`);return l&&(t.search=l),t})(this._config.urlParams.prefix).open&&(this.open(),this._config.urlParams.clearAfterOpen&&function(e=yr){if("undefined"==typeof window||!window.location||!window.history)return;const n=new URL(window.location.href),t=[`${e}open`,`${e}article`,`${e}article-id`,`${e}category`,`${e}search`];let i=!1;for(const e of t)n.searchParams.has(e)&&(n.searchParams.delete(e),i=!0);i&&window.history.replaceState({},"",n.toString())}(this._config.urlParams.prefix))}_destroy(){this._tooltipManager?.destroy(),this._textSelectionManager?.destroy(),this._panel?.destroy(),this._floatingButton?.destroy(),this._api?.cancelAllRequests(),this._events.removeAllListeners(),this._unsubscribeHoverMode?.(),this._unsubscribeHoverMode=null,this._rootContainer?.remove(),this._rootContainer=null,on(),Wn(),jn(),br.value={...mr},xr.value={...vr},Yi.value=null,Ji.value=[],ot.value=null,st.value=[],this._productContext={...mr},this._userProfile={...vr},this._taskHandlers.clear(),this._anyTaskHandler=null,this._tooltipManager=null,this._textSelectionManager=null,this._panel=null,this._floatingButton=null,this._api=null,this._mcpClient=null,this._planExecutor=null,this._config=null,this._state="uninitialized",console.log("[Pillar] SDK destroyed")}}Br.instance=null;var jr=Object.freeze({__proto__:null,Pillar:Br,default:Br});if("undefined"!=typeof window){window.Pillar=Br;const e=()=>{const e=document.currentScript;if(e){const n=e.dataset.helpCenter,t=e.dataset.publicKey;n&&t&&Br.init({helpCenter:n,publicKey:t}).catch(console.error)}};if("loading"===document.readyState)document.addEventListener("DOMContentLoaded",e);else{const e=document.querySelectorAll("script[data-help-center][data-public-key]");if(e.length>0){const n=e[e.length-1],t=n.dataset.helpCenter,i=n.dataset.publicKey;t&&i&&Br.init({helpCenter:t,publicKey:i}).catch(console.error)}}}e.APIClient=o,e.DEFAULT_SIDEBAR_TABS=wr,e.EventEmitter=Ar,e.Pillar=Br,e.clearRegistry=function(){n.actions.clear(),n.clientInfo=null},e.default=Br,e.defineActions=function(e){for(const[t,i]of Object.entries(e))n.actions.has(t)&&console.warn(`[Pillar] Action "${t}" is already registered. Overwriting.`),n.actions.set(t,i);return e},e.getActionCount=function(){return n.actions.size},e.getActionDefinition=i,e.getActionNames=function(){return Array.from(n.actions.keys())},e.getClientInfo=function(){return n.clientInfo},e.getHandler=function(e){const t=n.actions.get(e);return t?.handler},e.getManifest=function(e,t,i){const r=[];for(const[e,t]of n.actions){const n={name:e,description:t.description,type:t.type};t.examples?.length&&(n.examples=t.examples),t.path&&(n.path=t.path),t.externalUrl&&(n.external_url=t.externalUrl),t.autoRun&&(n.auto_run=t.autoRun),t.autoComplete&&(n.auto_complete=t.autoComplete),t.returns&&(n.returns_data=t.returns),t.dataSchema&&(n.data_schema=t.dataSchema),t.defaultData&&(n.default_data=t.defaultData),t.requiredContext&&(n.required_context=t.requiredContext),r.push(n)}return{platform:e,version:t,gitSha:i,generatedAt:(new Date).toISOString(),actions:r}},e.hasAction=r,e.setClientInfo=t,Object.defineProperty(e,"__esModule",{value:!0})});
2
+ //# sourceMappingURL=pillar.min.js.map