@vionwilliams/agent-os 1.0.0-alpha.28 → 1.0.0-alpha.45

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.
@@ -0,0 +1,15 @@
1
+ import{i as e,n as t,t as n}from"./jsx-runtime-CUBmso4R.js";import{n as r,r as i,t as a}from"./plus-BsmKZIhy.js";var o=i(`clipboard`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}]]),s=i(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),c=i(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),l=i(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),u=i(`pencil-line`,[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]),ee=i(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),te=i(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),ne=i(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),re=i(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),ie=i(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),d=e(t(),1),f=n();function ae({title:e,collapsed:t,children:n}){return(0,f.jsxs)(`section`,{className:`aiw-sidebar-section`,children:[!t&&(0,f.jsx)(`h2`,{children:e}),(0,f.jsx)(`div`,{children:n})]})}var p=`deepseek-reasoner`,m=`/api/chat-canvas`,h=`stc-canvas.deepseek-settings`,g=`chat-canvas.skill-prompts`,oe=`chat-canvas.behavior-settings`,_={enabled:!1,apiKey:``,apiKeyConfigured:!1,apiKeyPreview:``,model:p,endpoint:`https://api.deepseek.com/chat/completions`},se={prompts:`提问记录`,skills:`Skill Prompt`,status:`会话状态`},ce={model:`Model API`,behavior:`Chat Behavior`,skills:`Skill Prompts`,privacy:`Data & Privacy`},v={streamOutput:!0,cleanMarkdown:!0,defaultLanguage:`auto`,responseLength:`balanced`,autoScroll:!0},le=220,ue=96,y=[{id:`skill-product-review`,title:`产品评审`,description:`从目标用户、流程、信息架构、风险和体验完整度评估方案。`,prompt:`请从目标用户、核心流程、信息架构、交互效率、视觉规范、潜在风险这几个角度评估下面的产品方案:
2
+
3
+ {{内容}}`,updatedAt:`default`},{id:`skill-code-review`,title:`代码审查`,description:`按 bug、回归风险、测试缺口优先做代码 review。`,prompt:`请以代码审查视角检查下面的改动,优先指出 bug、行为回归、边界条件和缺失测试:
4
+
5
+ {{内容}}`,updatedAt:`default`},{id:`skill-summary`,title:`总结提炼`,description:`把长内容压缩为结论、依据和下一步。`,prompt:`请把下面内容提炼成:1. 核心结论;2. 关键依据;3. 风险或不确定性;4. 下一步建议。
6
+
7
+ {{内容}}`,updatedAt:`default`}];async function b(e,t){let n=await fetch(e,{...t,headers:{"Content-Type":`application/json`,...t?.headers??{}}}),r=await n.json().catch(()=>({}));if(!n.ok){let e=typeof r?.error==`string`?r.error:`HTTP ${n.status}`;throw Error(e)}return r}function de(e){return{..._,...e,apiKey:``,enabled:!!e.enabled,apiKeyConfigured:!!e.apiKeyConfigured,apiKeyPreview:e.apiKeyPreview??``,model:x(e.model),endpoint:e.endpoint||_.endpoint}}async function fe(e){let t=window.localStorage.getItem(h);if(!t)return e;try{let n=JSON.parse(t);if(e.apiKeyConfigured||e.updatedAt)return window.localStorage.removeItem(h),e;let r=await b(`${m}/settings`,{method:`PUT`,body:JSON.stringify({enabled:!!n.enabled,apiKey:typeof n.apiKey==`string`?n.apiKey:``,model:x(n.model),endpoint:n.endpoint||_.endpoint})});return window.localStorage.removeItem(h),de(r.settings)}catch{return window.localStorage.removeItem(h),e}}function pe(){return _}function x(e){let t=e?.trim();return!t||t===`deepseek-chat`?p:t}async function S(e){try{return await b(`${m}/settings/test`,{method:`POST`,body:JSON.stringify({...e,model:x(e.model),endpoint:e.endpoint.trim()||_.endpoint})})}catch(e){return{ok:!1,message:`测试失败:${C(e)}。`}}}function C(e){return e instanceof Error?e.message:`未知错误`}function w(e){return me(e).trim()}function me(e){return e.blocks.map(e=>e.text).join(`
8
+
9
+ `)}function he(e,t){let n=w(e);return e.role===`assistant`&&t.cleanMarkdown?ge(n):n}function ge(e){return _e(e).trim()}function _e(e){return e.replace(/```[\w-]*\n?/g,``).replace(/\n?```/g,``).replace(/`([^`]+)`/g,`$1`).replace(/\*\*([^*]+)\*\*/g,`$1`).replace(/\*([^*\n]+)\*/g,`$1`).replace(/__([^_]+)__/g,`$1`).replace(/_([^_\n]+)_/g,`$1`).replace(/^\s{0,3}#{1,6}\s+/gm,``).replace(/^\s*[-*+]\s+/gm,``).replace(/^\s*[•·]\s+/gm,``).replace(/^\s*>\s?/gm,``).replace(/^\s*\d+[.)、]\s+/gm,``).replace(/\[([^\]]+)\]\([^)]+\)/g,`$1`).replace(/[*_]{1,}/g,``).replace(/^\s*[-*+]\s*$/gm,``).replace(/^\s*[•·]\s*$/gm,``).replace(/\n{3,}/g,`
10
+
11
+ `)}async function ve(e,t){let n=await fetch(`${m}/chat/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!n.ok)throw Error(`HTTP ${n.status}`);if(!n.body)throw Error(`stream body is empty`);let r=n.body.getReader(),i=new TextDecoder,a=``,o=null,s=!1,c=e=>{let n=e.split(/\r?\n/),r=n.find(e=>e.startsWith(`event:`))?.slice(6).trim()||`message`,i=n.filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trim()).join(`
12
+ `);if(!i)return;let a=JSON.parse(i);if(r===`delta`&&a&&typeof a==`object`&&`text`in a){let e=_e(String(a.text??``));e&&(s=!0,t(e));return}if(r===`done`){o=a;return}if(r===`error`){let e=a&&typeof a==`object`&&`error`in a?String(a.error):`流式输出失败`,t=Error(e);throw t.streamStarted=s,t}};for(;;){let{done:e,value:t}=await r.read();if(e)break;a+=i.decode(t,{stream:!0});let n=a.split(/\n\n/);a=n.pop()??``;for(let e of n)e.trim()&&c(e)}if(a.trim()&&c(a),!o)throw Error(`stream ended without final payload`);return o}function ye(e){return!!(e&&typeof e==`object`&&`streamStarted`in e&&e.streamStarted)}function T(e){return String(e??``).replace(/新的推理会话/g,`新的对话`).replace(/新的 STC 思考会话/g,`新的对话`).replace(/STC Canvas/g,`Chat Canvas`).replace(/HTML 待生成/g,`未保存`).replace(/HTML/g,`聊天`)}function E(e){let t=e.trim();if(!t)return 0;let n=(t.match(/[\u4e00-\u9fff]/g)??[]).length,r=t.replace(/[\u4e00-\u9fff]/g,` `).trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil(n*.65+r*1.35))}function D(e){return e<=0?`$0.0000`:`$${(e/1e6*.55).toFixed(4)}`}function be(e){return e.filter(e=>e.role===`user`).map((e,t)=>{let n=w(e);return{id:e.id,index:t+1,text:n,createdAt:e.createdAt,estimatedTokens:E(n)}})}function O(e){let t=new Date(e);return Number.isNaN(t.getTime())?e||`刚刚`:t.toLocaleString(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`})}function k(){return{title:``,description:``,prompt:``}}function xe(){if(typeof window>`u`)return v;try{let e=window.localStorage.getItem(oe);if(!e)return v;let t=JSON.parse(e);return{...v,streamOutput:typeof t.streamOutput==`boolean`?t.streamOutput:v.streamOutput,cleanMarkdown:typeof t.cleanMarkdown==`boolean`?t.cleanMarkdown:v.cleanMarkdown,defaultLanguage:t.defaultLanguage===`zh-CN`||t.defaultLanguage===`en`?t.defaultLanguage:`auto`,responseLength:t.responseLength===`concise`||t.responseLength===`detailed`?t.responseLength:`balanced`,autoScroll:typeof t.autoScroll==`boolean`?t.autoScroll:v.autoScroll}}catch{return v}}function Se(e){typeof window>`u`||window.localStorage.setItem(oe,JSON.stringify(e))}function Ce(e,t,n=`text/plain;charset=utf-8`){let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(i)}function we(e){if(!e)return`# Chat Canvas
13
+
14
+ 当前没有载入会话。`;let t=[`# ${T(e.title)}`,``,`- Created: ${e.createdAt}`,`- Updated: ${e.updatedAt}`,``];for(let n of e.messages){let e=n.role===`user`?`User`:n.role===`assistant`?`Assistant`:`System`;t.push(`## ${e}`,``,w(n),``)}return t.join(`
15
+ `)}function Te(){if(typeof window>`u`)return y;try{let e=window.localStorage.getItem(g);if(!e)return y;let t=JSON.parse(e).filter(e=>e?.id&&e?.title&&e?.prompt);return t.length>0?t:y}catch{return y}}function Ee(e){typeof window>`u`||window.localStorage.setItem(g,JSON.stringify(e))}function De(e){return{id:e.id||`skill-${Date.now()}`,title:e.title.trim(),description:e.description.trim(),prompt:e.prompt.trim(),updatedAt:new Date().toISOString()}}function Oe(e,t){let n=t.trim();return e.includes(`{{内容}}`)?e.replace(`{{内容}}`,n):n?`${e.trim()}\n\n${n}`:e.trim()}function A(){let e=(0,d.useRef)(null),t=(0,d.useRef)(null),n=(0,d.useRef)(!0),i=(0,d.useRef)({}),p=(0,d.useRef)(null),h=(0,d.useRef)(null),[g,oe]=(0,d.useState)(!1),[_,x]=(0,d.useState)(``),[S,_e]=(0,d.useState)(`prompts`),[E,D]=(0,d.useState)(!1),[O,A]=(0,d.useState)(``),[,j]=(0,d.useState)(``),[M,N]=(0,d.useState)(!1),[P,Ie]=(0,d.useState)(`model`),[F,I]=(0,d.useState)(!1),[Le,L]=(0,d.useState)(null),[R,Re]=(0,d.useState)(()=>pe()),[z,ze]=(0,d.useState)(()=>xe()),[B,Be]=(0,d.useState)(``),[Ve,V]=(0,d.useState)({}),[He,H]=(0,d.useState)([]),[U,Ue]=(0,d.useState)(null),[W,G]=(0,d.useState)([]),[We,Ge]=(0,d.useState)(``),[Ke,qe]=(0,d.useState)(``),[K,Je]=(0,d.useState)(()=>Te()),[q,J]=(0,d.useState)(()=>k()),[Y,X]=(0,d.useState)(null),Ye=T(U?.title??He.find(e=>e.id===B)?.title??`新的对话`),Xe=He.filter(e=>`${e.title} ${e.meta}`.toLowerCase().includes(_.toLowerCase())),Ze=(0,d.useMemo)(()=>W.length<=le?W:W.slice(-le),[W]),Qe=(0,d.useMemo)(()=>be(W),[W]),Z=(0,d.useCallback)(()=>{p.current=null;let e=i.current;Object.keys(e).length&&(G(t=>t.map(t=>{let n=e[t.id];return n===void 0?t:{...t,blocks:[{type:`markdown`,text:n}]}})),i.current={})},[]),$e=(0,d.useCallback)((e,t)=>{i.current[e]=`${i.current[e]??``}${t}`,p.current===null&&(p.current=window.requestAnimationFrame(()=>{Z()}))},[Z]),Q=(0,d.useCallback)(e=>{if(e){delete i.current[e];return}i.current={}},[]),et=(0,d.useCallback)(()=>{let t=e.current;if(!t){n.current=!0;return}n.current=t.scrollHeight-t.scrollTop-t.clientHeight<=ue},[]),$=e=>{Be(e.id),Ue(e),G(e.messages),V({source:e.lastModelSource,model:e.lastModel,error:e.lastError}),Q()};(0,d.useEffect)(()=>{let e=!1;async function t(){try{let[t,n]=await Promise.all([b(`${m}/sessions`),b(`${m}/settings`)]);if(e)return;H(t.sessions),Be(t.currentSessionId);let r=await fe(de(n.settings));if(e)return;Re(r);let i=await b(`${m}/sessions/${encodeURIComponent(t.currentSessionId)}`);e||$(i.session)}catch(t){e||j(`聊天 API 暂不可用,等待后端连接:${C(t)}`)}}return t(),()=>{e=!0}},[]),(0,d.useEffect)(()=>{let e=()=>L(null),t=t=>{t.key===`Escape`&&e()};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[]),(0,d.useEffect)(()=>()=>{p.current!==null&&(cancelAnimationFrame(p.current),p.current=null),h.current!==null&&(cancelAnimationFrame(h.current),h.current=null)},[]),(0,d.useEffect)(()=>{let t=e.current;!t||!z.autoScroll||!n.current||h.current===null&&(h.current=window.requestAnimationFrame(()=>{h.current=null,t&&t.scrollTo({top:t.scrollHeight,behavior:`auto`})}))},[Ze,z.autoScroll]),(0,d.useEffect)(()=>{let e=t.current;if(!e)return;e.style.height=`auto`;let n=Math.min(Math.max(e.scrollHeight,36),180);e.style.height=`${n}px`,e.style.overflowY=e.scrollHeight>180?`auto`:`hidden`},[O]);let tt=async()=>{let e=O.trim();if(!e||F)return;let t=Date.now(),r=`user-${t}`,a=`assistant-${t}`,o=new Date().toISOString();A(``),Q(a),I(!0),G(t=>[...t,{id:r,role:`user`,createdAt:o,blocks:[{type:`markdown`,text:e}]},{id:a,role:`assistant`,createdAt:o,status:`loading`,blocks:[{type:`markdown`,text:``}]}]),i.current[a]=``,n.current=!0,j(z.streamOutput?R.enabled?`正在流式请求模型回复...`:`正在流式生成本地回复...`:R.enabled?`正在请求模型回复...`:`正在生成本地回复...`);try{if(!z.streamOutput){let t=await b(`${m}/chat`,{method:`POST`,body:JSON.stringify({sessionId:B,message:e,model:R.model})});$(t.session);let n=t.generationMeta.source===`model`?`模型 ${t.generationMeta.model??R.model}`:`fallback`;V(t.generationMeta),j(t.generationMeta.error?`已生成普通文本回复(${n}):${t.generationMeta.error}`:`已生成普通文本回复(${n})。`),Z(),H((await b(`${m}/sessions`)).sessions);return}let t=await ve({sessionId:B,message:e,model:R.model},e=>{$e(a,e)});$(t.session),Z();let n=t.generationMeta.source===`model`?`模型 ${t.generationMeta.model??R.model}`:`fallback`;V(t.generationMeta),j(t.generationMeta.error?`已流式生成文本回复(${n}):${t.generationMeta.error}`:`已流式生成文本回复(${n})。`),H((await b(`${m}/sessions`)).sessions)}catch(t){if(!ye(t))try{let t=await b(`${m}/chat`,{method:`POST`,body:JSON.stringify({sessionId:B,message:e,model:R.model})});$(t.session);let n=t.generationMeta.source===`model`?`模型 ${t.generationMeta.model??R.model}`:`fallback`;V(t.generationMeta),j(t.generationMeta.error?`流式接口失败,已用普通文本回复(${n}):${t.generationMeta.error}`:`流式接口失败,已用普通文本回复(${n})。`),Z(),H((await b(`${m}/sessions`)).sessions);return}catch(e){Q(a),G(t=>t.map(t=>t.id===a?{id:a,role:`assistant`,createdAt:o,status:`error`,blocks:[{type:`markdown`,text:`后端文本接口失败:${C(e)}`}]}:t)),j(`文本回复失败:${C(e)}`),Z();return}let n=i.current[a]??``;Q(a),G(e=>e.map(e=>e.id===a?{...e,status:`error`,blocks:[{type:`markdown`,text:`${w(e)}${n}\n\n流式输出中断:${C(t)}`.trim()}]}:e)),j(`流式输出中断:${C(t)}`),Z()}finally{I(!1)}},nt=async e=>{try{await navigator.clipboard.writeText(he(e,z)),j(`已复制消息。`)}catch(e){j(`复制失败:${C(e)}`)}},rt=async(e,t=`内容`)=>{try{await navigator.clipboard.writeText(e),j(`已复制${t}。`)}catch(e){j(`复制失败:${C(e)}`)}},it=e=>{A(e),window.setTimeout(()=>{t.current?.focus()},0)},at=t=>{let n=e.current?.querySelector(`[data-message-id="${t}"]`);if(!n){j(`当前消息不在可定位范围内。`);return}n.scrollIntoView({block:`center`,behavior:`smooth`}),n.classList.add(`is-highlighted`),window.setTimeout(()=>n.classList.remove(`is-highlighted`),1400)},ot=()=>{if(!q.title.trim()||!q.prompt.trim()){j(`Skill Prompt 需要填写名称和提示词内容。`);return}let e=De(q),t=Y?K.map(t=>t.id===Y?e:t):[e,...K];Je(t),Ee(t),X(null),J(k()),j(Y?`已更新 Skill Prompt。`:`已新增 Skill Prompt。`)},st=e=>{X(e.id),J({id:e.id,title:e.title,description:e.description,prompt:e.prompt})},ct=e=>{if(!window.confirm(`删除「${e.title}」?`))return;let t=K.filter(t=>t.id!==e.id);Je(t),Ee(t),Y===e.id&&(X(null),J(k())),j(`已删除 Skill Prompt。`)},lt=e=>{it(Oe(e.prompt,O)),j(`已套用「${e.title}」。`)},ut=e=>{ze(e),Se(e),j(`已保存聊天行为偏好。`)},dt=()=>{window.confirm(`恢复默认 Skill Prompt?这会覆盖当前本地 Skill Prompt 列表。`)&&(Je(y),Ee(y),X(null),J(k()),j(`已恢复默认 Skill Prompt。`))},ft=()=>{let e=U??{id:B||`current-session`,title:Ye,messages:W,artifactVersions:[]};Ce(`${T(Ye)}.json`,JSON.stringify(e,null,2),`application/json;charset=utf-8`),j(`已导出当前会话 JSON。`)},pt=()=>{Ce(`${T(Ye)}.md`,we(U),`text/markdown;charset=utf-8`),j(`已导出当前会话 Markdown。`)},mt=()=>{let e=He.find(e=>e.id===B);if(!e){j(`当前没有可删除的会话。`);return}bt(e)},ht=async e=>{if(F||e.role!==`assistant`)return;let t=W.findIndex(t=>t.id===e.id),n=[...W.slice(0,t)].reverse().find(e=>e.role===`user`),r=n?w(n):``;if(!r){j(`没有找到可用于重新生成的上一条用户消息。`);return}I(!0),G(t=>t.map(t=>t.id===e.id?{...t,status:`loading`,blocks:[{type:`markdown`,text:``}]}:t)),Q(e.id),i.current[e.id]=``,j(z.streamOutput?R.enabled?`正在流式重新生成模型回复...`:`正在流式重新生成本地回复...`:R.enabled?`正在重新生成模型回复...`:`正在重新生成本地回复...`);try{if(!z.streamOutput){let t=await b(`${m}/chat`,{method:`POST`,body:JSON.stringify({sessionId:B,message:r,model:R.model,regenerateMessageId:e.id})});$(t.session),V(t.generationMeta),j(t.generationMeta.error?`已重新生成普通文本回复:${t.generationMeta.error}`:`已重新生成普通文本回复。`),Z();return}let t=await ve({sessionId:B,message:r,model:R.model,regenerateMessageId:e.id},t=>{$e(e.id,t)});$(t.session),Z(),V(t.generationMeta),j(t.generationMeta.error?`已流式重新生成文本回复:${t.generationMeta.error}`:`已流式重新生成文本回复。`),Q(e.id)}catch(t){if(!ye(t))try{let t=await b(`${m}/chat`,{method:`POST`,body:JSON.stringify({sessionId:B,message:r,model:R.model,regenerateMessageId:e.id})});$(t.session),V(t.generationMeta),j(t.generationMeta.error?`流式重新生成失败,已用普通文本回复:${t.generationMeta.error}`:`流式重新生成失败,已用普通文本回复。`),Z();return}catch(t){Q(e.id),G(n=>n.map(n=>n.id===e.id?{...n,status:`error`,blocks:[{type:`markdown`,text:`重新生成失败:${C(t)}`}]}:n)),j(`重新生成失败:${C(t)}`),Q(e.id),Z();return}let n=i.current[e.id]??``;Q(e.id),G(r=>r.map(r=>r.id===e.id?{...r,status:`error`,blocks:[{type:`markdown`,text:`${me(r)}${n}\n\n流式输出中断:${C(t)}`.trim()}]}:r)),j(`流式重新生成中断:${C(t)}`),Z()}finally{I(!1)}},gt=()=>{D(!1),N(!0)},_t=()=>{N(!1)},vt=async e=>{_t(),L(null);try{let t=await b(`${m}/sessions/${encodeURIComponent(e)}`);$(t.session),H(t=>t.map(t=>({...t,status:t.id===e?`active`:t.status===`active`?`saved`:t.status}))),j(`已打开「${t.session.title}」。`)}catch(e){j(`会话打开失败:${C(e)}`)}},yt=async e=>{L(null);let t=window.prompt(`重命名会话`,e.title)?.trim();if(!(!t||t===e.title))try{let n=await b(`${m}/sessions/${encodeURIComponent(e.id)}`,{method:`PATCH`,body:JSON.stringify({title:t})});H((await b(`${m}/sessions`)).sessions),e.id===B&&$(n.session),j(`已重命名为「${n.session.title}」。`)}catch(e){j(`重命名失败:${C(e)}`)}},bt=async e=>{if(L(null),window.confirm(`删除「${T(e.title)}」?此操作会移除该会话的消息和预览版本。`))try{let t=await b(`${m}/sessions/${encodeURIComponent(e.id)}`,{method:`DELETE`});H(t.sessions),$(t.session),j(`会话已删除。`)}catch(e){j(`删除会话失败:${C(e)}`)}},xt=async()=>{L(null);try{let e=await b(`${m}/sessions`,{method:`POST`,body:JSON.stringify({})});H((await b(`${m}/sessions`)).sessions),$(e.session),D(!1),j(`已创建新的对话。`)}catch(e){j(`新建会话失败:${C(e)}`)}};return(0,f.jsxs)(`div`,{className:`stc-canvas ${g?`is-sidebar-collapsed`:``} ${M?`is-settings-view`:``}`,children:[(0,f.jsxs)(`aside`,{className:`stc-sidebar`,"aria-label":`Chat sessions`,children:[(0,f.jsxs)(`div`,{className:`stc-brand-row`,children:[!g&&(0,f.jsxs)(`div`,{className:`stc-brand-copy`,children:[(0,f.jsx)(`strong`,{children:`Chat Canvas`}),(0,f.jsx)(`span`,{children:`AI Workspace`})]}),(0,f.jsx)(`button`,{type:`button`,className:`stc-icon-button`,onClick:()=>oe(e=>!e),"aria-label":g?`展开左侧栏`:`折叠左侧栏`,title:g?`展开左侧栏`:`折叠左侧栏`,children:g?(0,f.jsx)(l,{size:16}):(0,f.jsx)(c,{size:16})})]}),(0,f.jsxs)(`button`,{type:`button`,className:`stc-new-chat`,onClick:()=>void xt(),children:[(0,f.jsx)(a,{size:16}),!g&&(0,f.jsx)(`span`,{children:`新建对话`})]}),(0,f.jsxs)(`label`,{className:`stc-search`,children:[(0,f.jsx)(te,{size:15}),(0,f.jsx)(`input`,{value:_,onChange:e=>x(e.target.value),placeholder:g?``:`搜索对话...`,"aria-label":`搜索对话`})]}),(0,f.jsx)(`div`,{className:`stc-sidebar-scroll`,children:(0,f.jsx)(ae,{title:`Conversations`,collapsed:g,children:Xe.map(e=>(0,f.jsxs)(`div`,{className:`stc-chat-item ${e.status===`active`?`is-active`:``}`,title:T(e.title),children:[(0,f.jsx)(`button`,{type:`button`,className:`stc-chat-main`,onClick:()=>void vt(e.id),children:!g&&(0,f.jsxs)(`span`,{className:`stc-chat-copy`,children:[(0,f.jsx)(`strong`,{children:T(e.title)}),(0,f.jsx)(`small`,{children:T(e.meta)})]})}),!g&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`button`,{type:`button`,className:`stc-chat-more`,"aria-haspopup":`menu`,"aria-expanded":Le===e.id,"aria-label":`打开 ${e.title} 的会话操作`,onClick:t=>{t.stopPropagation(),L(t=>t===e.id?null:e.id)},children:(0,f.jsx)(s,{size:17})}),Le===e.id&&(0,f.jsxs)(`div`,{className:`stc-chat-menu`,role:`menu`,onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:[(0,f.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>void yt(e),children:[(0,f.jsx)(u,{size:14}),`重命名`]}),(0,f.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`is-danger`,onClick:()=>void bt(e),children:[(0,f.jsx)(ie,{size:14}),`删除`]})]})]})]},e.id))})}),(0,f.jsx)(`div`,{className:`stc-sidebar-footer`,children:(0,f.jsxs)(`button`,{type:`button`,className:`stc-footer-action ${M?`is-active`:``}`,title:`设置`,onClick:gt,children:[(0,f.jsx)(re,{size:16}),!g&&(0,f.jsx)(`span`,{children:`设置`})]})})]}),M?(0,f.jsxs)(`main`,{className:`stc-settings-page`,"aria-label":`Settings`,children:[(0,f.jsxs)(`header`,{className:`stc-settings-page-header`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`span`,{children:`Settings`}),(0,f.jsx)(`h1`,{children:`设置`})]}),(0,f.jsx)(`button`,{type:`button`,className:`stc-secondary-button`,onClick:_t,children:`返回工作台`})]}),(0,f.jsxs)(`div`,{className:`stc-settings-page-body`,children:[(0,f.jsx)(`nav`,{className:`stc-settings-nav`,"aria-label":`Settings sections`,children:Object.keys(ce).map(e=>(0,f.jsx)(`button`,{type:`button`,className:P===e?`is-active`:``,onClick:()=>Ie(e),children:ce[e]},e))}),P===`model`&&(0,f.jsx)(ke,{settings:R,onCancel:_t,onSave:async e=>{let t=await b(`${m}/settings`,{method:`PUT`,body:JSON.stringify(e)});Re(de(t.settings)),j(t.settings.enabled?`DeepSeek API 已启用。`:`DeepSeek API 已保存,当前未启用。`)}}),P===`behavior`&&(0,f.jsx)(Ae,{settings:z,onSave:ut,onReset:()=>ut(v)}),P===`skills`&&(0,f.jsx)(je,{prompts:K,draft:q,editingSkillId:Y,onDraftChange:J,onSave:ot,onCancelEdit:()=>{X(null),J(k())},onEdit:st,onDelete:ct,onUse:lt,onReset:dt}),P===`privacy`&&(0,f.jsx)(Me,{session:U,sessions:He,messages:W,prompts:Qe,skillPrompts:K,behavior:z,onExportJson:ft,onExportMarkdown:pt,onDeleteCurrentSession:mt,onResetBehavior:()=>ut(v),onResetSkills:dt})]})]}):(0,f.jsxs)(`main`,{className:`stc-workspace`,children:[(0,f.jsxs)(`header`,{className:`stc-thread-header`,children:[(0,f.jsx)(`div`,{children:(0,f.jsx)(`h1`,{children:Ye})}),(0,f.jsx)(`div`,{className:`stc-header-actions`,children:(0,f.jsxs)(`button`,{type:`button`,className:`stc-secondary-button stc-mobile-output-button`,onClick:()=>D(!0),children:[(0,f.jsx)(r,{size:15}),`辅助栏`]})})]}),(0,f.jsxs)(`section`,{ref:e,className:`stc-message-stream`,"aria-label":`Conversation workspace`,onScroll:()=>{et()},children:[Ze.length===0&&(0,f.jsxs)(`div`,{className:`stc-empty-thread`,children:[(0,f.jsx)(`strong`,{children:`新的对话`}),(0,f.jsx)(`p`,{children:`输入问题后,AI 会以普通文本方式回复。后续可以再围绕聊天体验继续增强。`})]}),Ze.map(e=>(0,f.jsx)(`article`,{"data-message-id":e.id,className:`stc-message is-${e.role} ${e.status?`is-${e.status}`:``}`,children:(0,f.jsxs)(`div`,{className:`stc-message-text`,children:[e.blocks.map((t,n)=>{let r=e.role===`assistant`&&z.cleanMarkdown?ge(t.text):t.text,i=e.status===`loading`?`正在生成回复...`:e.status===`error`?`回复失败,请检查后端服务或模型配置。`:``;return(0,f.jsx)(`div`,{className:`stc-message-bubble`,children:r||i},`${e.id}-${n}`)}),(0,f.jsxs)(`div`,{className:`stc-message-actions`,children:[(0,f.jsxs)(`button`,{type:`button`,onClick:()=>void nt(e),children:[(0,f.jsx)(o,{size:13}),`复制`]}),e.role===`assistant`&&(0,f.jsxs)(`button`,{type:`button`,onClick:()=>void ht(e),disabled:F,children:[(0,f.jsx)(ee,{size:13}),`重新生成`]})]})]})},e.id))]}),(0,f.jsxs)(`footer`,{className:`stc-composer`,children:[(0,f.jsxs)(`div`,{className:`stc-composer-shell ${O.trim()?`has-content`:``}`,children:[(0,f.jsx)(`button`,{type:`button`,className:`stc-composer-tool-button`,title:`添加附件`,"aria-label":`添加附件`,children:(0,f.jsx)(a,{size:24})}),(0,f.jsx)(`textarea`,{ref:t,value:O,onChange:e=>A(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),tt())},placeholder:`输入内容`,rows:1,disabled:F}),(0,f.jsx)(`button`,{type:`button`,className:`stc-send-button`,onClick:()=>void tt(),"aria-label":`发送`,disabled:F||!O.trim(),children:(0,f.jsx)(ne,{size:18})})]}),(0,f.jsx)(`p`,{className:`stc-composer-hint`,children:`Chat Canvas 也可能会犯错,请核查重要信息。`})]})]}),!M&&(0,f.jsxs)(`aside`,{className:`stc-output ${E?`is-open`:``}`,"aria-label":`对话辅助栏`,children:[(0,f.jsx)(`div`,{className:`stc-tabbar`,role:`tablist`,"aria-label":`对话辅助栏`,children:Object.keys(se).map(e=>(0,f.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":S===e,className:S===e?`is-active`:``,onClick:()=>_e(e),children:se[e]},e))}),(0,f.jsxs)(`div`,{className:`stc-output-body`,children:[S===`prompts`&&(0,f.jsx)(Ne,{prompts:Qe,searchQuery:We,onSearchChange:Ge,onLocate:at,onReuse:e=>it(e),onCopy:e=>void rt(e,`提示词`)}),S===`skills`&&(0,f.jsx)(Pe,{prompts:K,searchQuery:Ke,onSearchChange:qe,draft:q,editingSkillId:Y,onDraftChange:J,onSave:ot,onCancelEdit:()=>{X(null),J(k())},onUse:lt,onCopy:e=>void rt(e,`Skill Prompt`),onEdit:st,onDelete:ct}),S===`status`&&(0,f.jsx)(Fe,{session:U,messages:W,prompts:Qe,settings:R,generationMeta:Ve})]})]}),!M&&E&&(0,f.jsx)(`button`,{type:`button`,className:`stc-output-backdrop`,"aria-label":`关闭右侧产物浮层`,onClick:()=>D(!1)})]})}function ke({settings:e,onSave:t,onCancel:n}){let[r,i]=(0,d.useState)(e),[a,o]=(0,d.useState)(!1),[s,c]=(0,d.useState)(!1),[l,u]=(0,d.useState)(null);(0,d.useEffect)(()=>{i({...e,model:x(e.model)}),u(null)},[e]);let ee=async()=>{o(!0),u(null);try{u(await S({...r,model:x(r.model),endpoint:r.endpoint.trim()||_.endpoint}))}finally{o(!1)}},te=async()=>{c(!0),u(null);try{await t({...r,apiKey:r.apiKey.trim(),model:x(r.model),endpoint:r.endpoint.trim()||_.endpoint}),i(e=>({...e,apiKey:``}))}catch(e){u({ok:!1,message:`保存失败:${C(e)}`})}finally{c(!1)}};return(0,f.jsxs)(`section`,{className:`stc-settings-card`,"aria-label":`DeepSeek API 设置`,children:[(0,f.jsx)(`header`,{children:(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`span`,{children:`Model API`}),(0,f.jsx)(`h2`,{children:`DeepSeek 设置`})]})}),(0,f.jsxs)(`label`,{className:`stc-settings-switch`,children:[(0,f.jsx)(`input`,{type:`checkbox`,checked:r.enabled,onChange:e=>i(t=>({...t,enabled:e.target.checked}))}),(0,f.jsx)(`span`,{children:`启用 DeepSeek 作为聊天模型`})]}),(0,f.jsxs)(`label`,{className:`stc-settings-field`,children:[(0,f.jsx)(`span`,{children:`API Key`}),(0,f.jsx)(`input`,{type:`password`,value:r.apiKey,onChange:e=>i(t=>({...t,apiKey:e.target.value})),placeholder:r.apiKeyConfigured?`已配置 ${r.apiKeyPreview}`:`sk-...`,autoComplete:`off`})]}),(0,f.jsxs)(`label`,{className:`stc-settings-field`,children:[(0,f.jsx)(`span`,{children:`模型`}),(0,f.jsx)(`input`,{value:r.model,onChange:e=>i(t=>({...t,model:e.target.value})),placeholder:p})]}),(0,f.jsxs)(`div`,{className:`stc-model-preset-row`,children:[(0,f.jsx)(`button`,{type:`button`,className:x(r.model)===p?`is-active`:``,onClick:()=>i(e=>({...e,model:p})),children:`V4 Pro Think`}),(0,f.jsx)(`span`,{children:x(r.model)})]}),(0,f.jsxs)(`label`,{className:`stc-settings-field`,children:[(0,f.jsx)(`span`,{children:`Endpoint`}),(0,f.jsx)(`input`,{value:r.endpoint,onChange:e=>i(t=>({...t,endpoint:e.target.value})),placeholder:`https://api.deepseek.com/chat/completions`})]}),(0,f.jsx)(`p`,{children:`当前后端只生成普通文本回复。 未启用模型 API 或请求失败时,会自动回退本地文本回复。`}),l&&(0,f.jsx)(`div`,{className:`stc-settings-test-result ${l.ok?`is-pass`:`is-fail`}`,children:l.message}),(0,f.jsxs)(`div`,{className:`stc-settings-actions`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:n,children:`取消`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>void ee(),disabled:a,children:a?`测试中...`:`测试验证`}),(0,f.jsx)(`button`,{type:`button`,disabled:s,onClick:()=>void te(),children:s?`保存中...`:`保存设置`})]})]})}function Ae({settings:e,onSave:t,onReset:n}){let[r,i]=(0,d.useState)(e);return(0,d.useEffect)(()=>{i(e)},[e]),(0,f.jsxs)(`section`,{className:`stc-settings-card`,"aria-label":`聊天行为设置`,children:[(0,f.jsx)(`header`,{children:(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`span`,{children:`Chat Behavior`}),(0,f.jsx)(`h2`,{children:`聊天行为`})]})}),(0,f.jsxs)(`div`,{className:`stc-settings-grid`,children:[(0,f.jsxs)(`label`,{className:`stc-settings-check-row`,children:[(0,f.jsx)(`input`,{type:`checkbox`,checked:r.streamOutput,onChange:e=>i(t=>({...t,streamOutput:e.target.checked}))}),(0,f.jsxs)(`span`,{children:[(0,f.jsx)(`strong`,{children:`启用流式输出`}),(0,f.jsx)(`small`,{children:`打开后回复会逐步出现;关闭后等待完整回复一次性显示。`})]})]}),(0,f.jsxs)(`label`,{className:`stc-settings-check-row`,children:[(0,f.jsx)(`input`,{type:`checkbox`,checked:r.cleanMarkdown,onChange:e=>i(t=>({...t,cleanMarkdown:e.target.checked}))}),(0,f.jsxs)(`span`,{children:[(0,f.jsx)(`strong`,{children:`清理 Markdown 符号`}),(0,f.jsx)(`small`,{children:`隐藏 **、-、# 等格式符号,让聊天区保持纯文字阅读。`})]})]}),(0,f.jsxs)(`label`,{className:`stc-settings-check-row`,children:[(0,f.jsx)(`input`,{type:`checkbox`,checked:r.autoScroll,onChange:e=>i(t=>({...t,autoScroll:e.target.checked}))}),(0,f.jsxs)(`span`,{children:[(0,f.jsx)(`strong`,{children:`自动跟随最新回复`}),(0,f.jsx)(`small`,{children:`生成过程中保持滚动到底部,便于连续阅读。`})]})]})]}),(0,f.jsxs)(`label`,{className:`stc-settings-field`,children:[(0,f.jsx)(`span`,{children:`默认回复语言`}),(0,f.jsxs)(`select`,{value:r.defaultLanguage,onChange:e=>i(t=>({...t,defaultLanguage:e.target.value})),children:[(0,f.jsx)(`option`,{value:`auto`,children:`自动跟随提问`}),(0,f.jsx)(`option`,{value:`zh-CN`,children:`中文`}),(0,f.jsx)(`option`,{value:`en`,children:`English`})]})]}),(0,f.jsxs)(`label`,{className:`stc-settings-field`,children:[(0,f.jsx)(`span`,{children:`回复长度偏好`}),(0,f.jsxs)(`select`,{value:r.responseLength,onChange:e=>i(t=>({...t,responseLength:e.target.value})),children:[(0,f.jsx)(`option`,{value:`concise`,children:`简洁`}),(0,f.jsx)(`option`,{value:`balanced`,children:`均衡`}),(0,f.jsx)(`option`,{value:`detailed`,children:`详细`})]})]}),(0,f.jsx)(`p`,{children:`语言和长度偏好已先保存在本地,后续接入系统提示词时会进入模型请求上下文。`}),(0,f.jsxs)(`div`,{className:`stc-settings-actions`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:n,children:`恢复默认`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>t(r),children:`保存偏好`})]})]})}function je({prompts:e,draft:t,editingSkillId:n,onDraftChange:r,onSave:i,onCancelEdit:a,onEdit:o,onDelete:s,onUse:c,onReset:l}){return(0,f.jsxs)(`section`,{className:`stc-settings-card`,"aria-label":`Skill Prompt 设置`,children:[(0,f.jsx)(`header`,{children:(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`span`,{children:`Skill Prompts`}),(0,f.jsx)(`h2`,{children:`提示词技能`})]})}),(0,f.jsxs)(`div`,{className:`stc-settings-skill-form`,children:[(0,f.jsx)(`input`,{value:t.title,onChange:e=>r({...t,title:e.target.value}),placeholder:`技能名称,例如:产品评审`}),(0,f.jsx)(`input`,{value:t.description,onChange:e=>r({...t,description:e.target.value}),placeholder:`一句话说明适用场景`}),(0,f.jsx)(`textarea`,{value:t.prompt,onChange:e=>r({...t,prompt:e.target.value}),placeholder:`提示词内容,可用 {{内容}} 作为当前输入的插入位置`,rows:4}),(0,f.jsxs)(`div`,{className:`stc-settings-actions`,children:[n&&(0,f.jsx)(`button`,{type:`button`,onClick:a,children:`取消编辑`}),(0,f.jsx)(`button`,{type:`button`,onClick:i,children:n?`保存修改`:`新增技能`})]})]}),(0,f.jsx)(`div`,{className:`stc-settings-list`,children:e.map(e=>(0,f.jsxs)(`article`,{className:`stc-settings-list-item`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`strong`,{children:e.title}),(0,f.jsx)(`span`,{children:e.description||e.prompt})]}),(0,f.jsxs)(`div`,{className:`stc-settings-inline-actions`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:()=>c(e),children:`套用`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>o(e),children:`编辑`}),(0,f.jsx)(`button`,{type:`button`,className:`is-danger`,onClick:()=>s(e),children:`删除`})]})]},e.id))}),(0,f.jsx)(`div`,{className:`stc-settings-actions`,children:(0,f.jsx)(`button`,{type:`button`,onClick:l,children:`恢复默认 Skill Prompt`})})]})}function Me({session:e,sessions:t,messages:n,prompts:r,skillPrompts:i,behavior:a,onExportJson:o,onExportMarkdown:s,onDeleteCurrentSession:c,onResetBehavior:l,onResetSkills:u}){let ee=n.reduce((e,t)=>e+E(w(t)),0);return(0,f.jsxs)(`section`,{className:`stc-settings-card`,"aria-label":`数据与隐私设置`,children:[(0,f.jsx)(`header`,{children:(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`span`,{children:`Data & Privacy`}),(0,f.jsx)(`h2`,{children:`数据与隐私`})]})}),(0,f.jsxs)(`div`,{className:`stc-settings-summary-grid`,children:[(0,f.jsx)(N,{label:`会话数`,value:`${t.length}`,detail:`保存在本地 Chat Canvas store`}),(0,f.jsx)(N,{label:`当前消息`,value:`${n.length}`,detail:`${r.length} 条提问 · 约 ${ee} tokens`}),(0,f.jsx)(N,{label:`Skill Prompt`,value:`${i.length}`,detail:`保存在浏览器 localStorage`}),(0,f.jsx)(N,{label:`输出模式`,value:a.streamOutput?`流式`:`普通`,detail:a.cleanMarkdown?`纯文字展示`:`保留原始文本`})]}),(0,f.jsxs)(`div`,{className:`stc-settings-list`,children:[(0,f.jsxs)(`article`,{className:`stc-settings-list-item`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`strong`,{children:`导出当前会话`}),(0,f.jsx)(`span`,{children:T(e?.title??`新的对话`)})]}),(0,f.jsxs)(`div`,{className:`stc-settings-inline-actions`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:s,children:`Markdown`}),(0,f.jsx)(`button`,{type:`button`,onClick:o,children:`JSON`})]})]}),(0,f.jsxs)(`article`,{className:`stc-settings-list-item`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`strong`,{children:`重置本地偏好`}),(0,f.jsx)(`span`,{children:`恢复聊天行为和 Skill Prompt 的默认配置。`})]}),(0,f.jsxs)(`div`,{className:`stc-settings-inline-actions`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:l,children:`聊天偏好`}),(0,f.jsx)(`button`,{type:`button`,onClick:u,children:`Skill Prompt`})]})]}),(0,f.jsxs)(`article`,{className:`stc-settings-list-item`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`strong`,{children:`删除当前会话`}),(0,f.jsx)(`span`,{children:`移除当前对话的消息和预览版本,删除前会二次确认。`})]}),(0,f.jsx)(`div`,{className:`stc-settings-inline-actions`,children:(0,f.jsx)(`button`,{type:`button`,className:`is-danger`,onClick:c,children:`删除`})})]})]}),(0,f.jsx)(`p`,{children:`API Key 保存在后端设置 store,前端只显示脱敏状态;Skill Prompt 和聊天行为偏好保存在当前浏览器。`})]})}function Ne({prompts:e,searchQuery:t,onSearchChange:n,onLocate:r,onReuse:i,onCopy:a}){let o=e.filter(e=>e.text.toLowerCase().includes(t.toLowerCase()));return(0,f.jsxs)(`section`,{className:`stc-utility-panel`,"aria-label":`提问记录`,children:[(0,f.jsx)(j,{title:`提问记录`,description:`只保留这段对话里你的原始提问,方便在长回复中快速回看、定位和复用。`}),(0,f.jsxs)(`label`,{className:`stc-panel-search`,children:[(0,f.jsx)(te,{size:14}),(0,f.jsx)(`input`,{value:t,onChange:e=>n(e.target.value),placeholder:`搜索你的提问...`})]}),o.length===0?(0,f.jsx)(M,{title:`暂无提问`,description:`发送第一条消息后,这里会自动收集你的提问记录。`}):(0,f.jsx)(`div`,{className:`stc-prompt-list`,children:o.map(e=>(0,f.jsxs)(`article`,{className:`stc-prompt-card`,children:[(0,f.jsxs)(`header`,{children:[(0,f.jsxs)(`span`,{children:[`Prompt `,e.index]}),(0,f.jsxs)(`small`,{children:[O(e.createdAt),` · 约 `,e.estimatedTokens,` tokens`]})]}),(0,f.jsx)(`p`,{children:e.text}),(0,f.jsxs)(`div`,{className:`stc-card-actions`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),children:`定位`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>i(e.text),children:`复用`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>a(e.text),children:`复制`})]})]},e.id))})]})}function Pe({prompts:e,searchQuery:t,onSearchChange:n,draft:r,editingSkillId:i,onDraftChange:a,onSave:o,onCancelEdit:s,onUse:c,onCopy:l,onEdit:u,onDelete:ee}){let ne=t.toLowerCase(),re=e.filter(e=>`${e.title} ${e.description} ${e.prompt}`.toLowerCase().includes(ne));return(0,f.jsxs)(`section`,{className:`stc-utility-panel`,"aria-label":`Skill Prompt`,children:[(0,f.jsx)(j,{title:`Skill Prompt`,description:`沉淀常用提示词技能,点击套用会填入底部输入框;模板可用 {{内容}} 作为当前输入的占位。`}),(0,f.jsxs)(`div`,{className:`stc-skill-form`,children:[(0,f.jsx)(`input`,{value:r.title,onChange:e=>a({...r,title:e.target.value}),placeholder:`技能名称,例如:产品评审`}),(0,f.jsx)(`input`,{value:r.description,onChange:e=>a({...r,description:e.target.value}),placeholder:`一句话说明这个提示词适合什么场景`}),(0,f.jsx)(`textarea`,{value:r.prompt,onChange:e=>a({...r,prompt:e.target.value}),placeholder:`写入提示词内容,可使用 {{内容}} 作为当前输入的插入位置`,rows:5}),(0,f.jsxs)(`div`,{className:`stc-card-actions`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:o,children:i?`保存修改`:`新增技能`}),i&&(0,f.jsx)(`button`,{type:`button`,onClick:s,children:`取消编辑`})]})]}),(0,f.jsxs)(`label`,{className:`stc-panel-search`,children:[(0,f.jsx)(te,{size:14}),(0,f.jsx)(`input`,{value:t,onChange:e=>n(e.target.value),placeholder:`搜索 Skill Prompt...`})]}),(0,f.jsx)(`div`,{className:`stc-skill-list`,children:re.map(e=>(0,f.jsxs)(`article`,{className:`stc-skill-card`,children:[(0,f.jsx)(`header`,{children:(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`strong`,{children:e.title}),e.description&&(0,f.jsx)(`span`,{children:e.description})]})}),(0,f.jsx)(`p`,{children:e.prompt}),(0,f.jsxs)(`div`,{className:`stc-card-actions`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:()=>c(e),children:`套用`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>l(e.prompt),children:`复制`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>u(e),children:`编辑`}),(0,f.jsx)(`button`,{type:`button`,className:`is-danger`,onClick:()=>ee(e),children:`删除`})]})]},e.id))})]})}function Fe({session:e,messages:t,prompts:n,settings:r,generationMeta:i}){let a=t.filter(e=>e.role===`assistant`).length,o=t.reduce((e,t)=>e+E(w(t)),0),s=Math.min(100,Math.round(o/64e3*100)),c=i.source===`model`?`模型回复${i.model?` · ${i.model}`:``}`:i.source===`fallback`?`本地 fallback`:`尚未生成`;return(0,f.jsxs)(`section`,{className:`stc-utility-panel`,"aria-label":`会话状态`,children:[(0,f.jsx)(j,{title:`会话状态`,description:`这里显示当前对话的运行概况。Token 和成本为前端估算,后续接入模型 usage 后可替换为精确值。`}),(0,f.jsxs)(`div`,{className:`stc-status-grid`,children:[(0,f.jsx)(N,{label:`消息数`,value:`${t.length}`,detail:`${n.length} 条提问 · ${a} 条回复`}),(0,f.jsx)(N,{label:`估算 Token`,value:`${o}`,detail:`约 ${s}% / 64k context`}),(0,f.jsx)(N,{label:`估算成本`,value:D(o),detail:`按百万 token 估算,非账单金额`}),(0,f.jsx)(N,{label:`模型`,value:r.enabled?`DeepSeek`:`本地 fallback`,detail:r.enabled?x(r.model):`模型 API 未启用`})]}),(0,f.jsxs)(`div`,{className:`stc-status-list`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`span`,{children:`当前会话`}),(0,f.jsx)(`strong`,{children:T(e?.title??`新的对话`)})]}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`span`,{children:`创建时间`}),(0,f.jsx)(`strong`,{children:e?.createdAt?O(e.createdAt):`尚未载入`})]}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`span`,{children:`更新时间`}),(0,f.jsx)(`strong`,{children:e?.updatedAt?O(e.updatedAt):`尚未载入`})]}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`span`,{children:`最近生成`}),(0,f.jsx)(`strong`,{children:c})]}),(0,f.jsxs)(`div`,{className:i.error?`is-warn`:`is-pass`,children:[(0,f.jsx)(`span`,{children:`最近错误`}),(0,f.jsx)(`strong`,{children:i.error||`无错误记录`})]})]})]})}function j({title:e,description:t}){return(0,f.jsxs)(`header`,{className:`stc-panel-intro`,children:[(0,f.jsx)(`h2`,{children:e}),(0,f.jsx)(`p`,{children:t})]})}function M({title:e,description:t}){return(0,f.jsxs)(`div`,{className:`stc-utility-empty`,children:[(0,f.jsx)(`strong`,{children:e}),(0,f.jsx)(`p`,{children:t})]})}function N({label:e,value:t,detail:n}){return(0,f.jsxs)(`div`,{className:`stc-status-metric`,children:[(0,f.jsx)(`span`,{children:e}),(0,f.jsx)(`strong`,{children:t}),(0,f.jsx)(`small`,{children:n})]})}export{A as default};
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-divide-x-reverse:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-950:oklch(27.9% .077 45.635);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-800:oklch(39.8% .195 277.366);--color-indigo-900:oklch(35.9% .144 278.697);--color-purple-500:oklch(62.7% .265 303.9);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xl:36rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-2xl:40px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-3{top:calc(var(--spacing) * 3)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-6{top:calc(var(--spacing) * 6)}.top-\[-20\%\]{top:-20%}.right-0\.5{right:calc(var(--spacing) * .5)}.right-\[-10\%\]{right:-10%}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-\[-20\%\]{bottom:-20%}.bottom-\[calc\(100\%\+8px\)\]{bottom:calc(100% + 8px)}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-\[-10\%\]{left:-10%}.left-\[9px\]{left:9px}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-\[5px\]{margin-top:5px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-\[2px\]{margin-bottom:2px}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-\[50vw\]{height:50vw}.h-\[56px\]{height:56px}.h-\[320px\]{height:320px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-28{max-height:calc(var(--spacing) * 28)}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-\[42vh\]{max-height:42vh}.max-h-\[56px\]{max-height:56px}.max-h-\[82vh\]{max-height:82vh}.max-h-\[calc\(100vh-150px\)\]{max-height:calc(100vh - 150px)}.max-h-\[calc\(100vh-152px\)\]{max-height:calc(100vh - 152px)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-\[54px\]{min-height:54px}.min-h-\[56px\]{min-height:56px}.min-h-\[64px\]{min-height:64px}.min-h-\[70px\]{min-height:70px}.min-h-\[86px\]{min-height:86px}.min-h-\[110px\]{min-height:110px}.min-h-\[116px\]{min-height:116px}.min-h-screen{min-height:100vh}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-\[2px\]{width:2px}.w-\[50vw\]{width:50vw}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[82\%\]{max-width:82%}.max-w-\[190px\]{max-width:190px}.max-w-\[220px\]{max-width:220px}.max-w-\[260px\]{max-width:260px}.max-w-\[332px\]{max-width:332px}.max-w-\[392px\]{max-width:392px}.max-w-\[1480px\]{max-width:1480px}.max-w-\[1680px\]{max-width:1680px}.max-w-full{max-width:100%}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[148px\]{min-width:148px}.min-w-\[196px\]{min-width:196px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.animate-\[pulse_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite pulse}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-decimal{list-style-type:decimal}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-slate-200\/80>:not(:last-child)){border-color:#e2e8f0cc}@supports (color:color-mix(in lab, red, red)){:where(.divide-slate-200\/80>:not(:last-child)){border-color:color-mix(in oklab, var(--color-slate-200) 80%, transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[20px\]{border-radius:20px}.rounded-\[22px\]{border-radius:22px}.rounded-\[28px\]{border-radius:28px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-tl-sm{border-top-left-radius:var(--radius-sm)}.rounded-tr-sm{border-top-right-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-200\/70{border-color:#fee685b3}@supports (color:color-mix(in lab, red, red)){.border-amber-200\/70{border-color:color-mix(in oklab, var(--color-amber-200) 70%, transparent)}}.border-amber-300\/60{border-color:#ffd23699}@supports (color:color-mix(in lab, red, red)){.border-amber-300\/60{border-color:color-mix(in oklab, var(--color-amber-300) 60%, transparent)}}.border-amber-400\/70{border-color:#fcbb00b3}@supports (color:color-mix(in lab, red, red)){.border-amber-400\/70{border-color:color-mix(in oklab, var(--color-amber-400) 70%, transparent)}}.border-amber-500\/25{border-color:#f99c0040}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/25{border-color:color-mix(in oklab, var(--color-amber-500) 25%, transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/30{border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.border-emerald-100{border-color:var(--color-emerald-100)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-200\/50{border-color:#a4f4cf80}@supports (color:color-mix(in lab, red, red)){.border-emerald-200\/50{border-color:color-mix(in oklab, var(--color-emerald-200) 50%, transparent)}}.border-emerald-400{border-color:var(--color-emerald-400)}.border-emerald-500\/25{border-color:#00bb7f40}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/25{border-color:color-mix(in oklab, var(--color-emerald-500) 25%, transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/30{border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.border-emerald-500\/35{border-color:#00bb7f59}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/35{border-color:color-mix(in oklab, var(--color-emerald-500) 35%, transparent)}}.border-indigo-100{border-color:var(--color-indigo-100)}.border-indigo-200{border-color:var(--color-indigo-200)}.border-indigo-200\/50{border-color:#c7d2ff80}@supports (color:color-mix(in lab, red, red)){.border-indigo-200\/50{border-color:color-mix(in oklab, var(--color-indigo-200) 50%, transparent)}}.border-indigo-300{border-color:var(--color-indigo-300)}.border-indigo-400{border-color:var(--color-indigo-400)}.border-indigo-400\/30{border-color:#7d87ff4d}@supports (color:color-mix(in lab, red, red)){.border-indigo-400\/30{border-color:color-mix(in oklab, var(--color-indigo-400) 30%, transparent)}}.border-indigo-500\/25{border-color:#625fff40}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\/25{border-color:color-mix(in oklab, var(--color-indigo-500) 25%, transparent)}}.border-indigo-500\/30{border-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\/30{border-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.border-indigo-500\/40{border-color:#625fff66}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\/40{border-color:color-mix(in oklab, var(--color-indigo-500) 40%, transparent)}}.border-indigo-500\/50{border-color:#625fff80}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\/50{border-color:color-mix(in oklab, var(--color-indigo-500) 50%, transparent)}}.border-rose-100{border-color:var(--color-rose-100)}.border-rose-200{border-color:var(--color-rose-200)}.border-rose-200\/50{border-color:#ffccd380}@supports (color:color-mix(in lab, red, red)){.border-rose-200\/50{border-color:color-mix(in oklab, var(--color-rose-200) 50%, transparent)}}.border-rose-400{border-color:var(--color-rose-400)}.border-rose-500\/25{border-color:#ff235740}@supports (color:color-mix(in lab, red, red)){.border-rose-500\/25{border-color:color-mix(in oklab, var(--color-rose-500) 25%, transparent)}}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.border-rose-500\/30{border-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-200\/50{border-color:#e2e8f080}@supports (color:color-mix(in lab, red, red)){.border-slate-200\/50{border-color:color-mix(in oklab, var(--color-slate-200) 50%, transparent)}}.border-slate-200\/60{border-color:#e2e8f099}@supports (color:color-mix(in lab, red, red)){.border-slate-200\/60{border-color:color-mix(in oklab, var(--color-slate-200) 60%, transparent)}}.border-slate-200\/80{border-color:#e2e8f0cc}@supports (color:color-mix(in lab, red, red)){.border-slate-200\/80{border-color:color-mix(in oklab, var(--color-slate-200) 80%, transparent)}}.border-slate-800{border-color:var(--color-slate-800)}.border-zinc-700{border-color:var(--color-zinc-700)}.border-zinc-800{border-color:var(--color-zinc-800)}.border-zinc-800\/90{border-color:#27272ae6}@supports (color:color-mix(in lab, red, red)){.border-zinc-800\/90{border-color:color-mix(in oklab, var(--color-zinc-800) 90%, transparent)}}.bg-\[\#0c0c0e\]\/95{background-color:oklab(15.527% .00115445 -.00405315/.95)}.bg-\[\#08080a\]{background-color:#08080a}.bg-\[\#111113\]{background-color:#111113}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-50\/80{background-color:#fffbebcc}@supports (color:color-mix(in lab, red, red)){.bg-amber-50\/80{background-color:color-mix(in oklab, var(--color-amber-50) 80%, transparent)}}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.bg-black\/20{background-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.bg-black\/25{background-color:#00000040}@supports (color:color-mix(in lab, red, red)){.bg-black\/25{background-color:color-mix(in oklab, var(--color-black) 25%, transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.bg-black\/30{background-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-black\/65{background-color:#000000a6}@supports (color:color-mix(in lab, red, red)){.bg-black\/65{background-color:color-mix(in oklab, var(--color-black) 65%, transparent)}}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\/60{background-color:#ecfdf599}@supports (color:color-mix(in lab, red, red)){.bg-emerald-50\/60{background-color:color-mix(in oklab, var(--color-emerald-50) 60%, transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/10{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.bg-emerald-500\/\[0\.035\]{background-color:#00bb7f09}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/\[0\.035\]{background-color:color-mix(in oklab, var(--color-emerald-500) 3.5%, transparent)}}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-400{background-color:var(--color-indigo-400)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-500\/5{background-color:#625fff0d}@supports (color:color-mix(in lab, red, red)){.bg-indigo-500\/5{background-color:color-mix(in oklab, var(--color-indigo-500) 5%, transparent)}}.bg-indigo-500\/10{background-color:#625fff1a}@supports (color:color-mix(in lab, red, red)){.bg-indigo-500\/10{background-color:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.bg-indigo-500\/15{background-color:#625fff26}@supports (color:color-mix(in lab, red, red)){.bg-indigo-500\/15{background-color:color-mix(in oklab, var(--color-indigo-500) 15%, transparent)}}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-50\/60{background-color:#fff1f299}@supports (color:color-mix(in lab, red, red)){.bg-rose-50\/60{background-color:color-mix(in oklab, var(--color-rose-50) 60%, transparent)}}.bg-rose-500{background-color:var(--color-rose-500)}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab, red, red)){.bg-rose-500\/10{background-color:color-mix(in oklab, var(--color-rose-500) 10%, transparent)}}.bg-rose-500\/20{background-color:#ff235733}@supports (color:color-mix(in lab, red, red)){.bg-rose-500\/20{background-color:color-mix(in oklab, var(--color-rose-500) 20%, transparent)}}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-300\/20{background-color:#cad5e233}@supports (color:color-mix(in lab, red, red)){.bg-slate-300\/20{background-color:color-mix(in oklab, var(--color-slate-300) 20%, transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/70{background-color:#0f172bb3}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\/70{background-color:color-mix(in oklab, var(--color-slate-900) 70%, transparent)}}.bg-slate-950{background-color:var(--color-slate-950)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.bg-white\/40{background-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-white\/50{background-color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-white\/60{background-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.bg-zinc-800{background-color:var(--color-zinc-800)}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-zinc-950{background-color:var(--color-zinc-950)}.bg-zinc-950\/70{background-color:#09090bb3}@supports (color:color-mix(in lab, red, red)){.bg-zinc-950\/70{background-color:color-mix(in oklab, var(--color-zinc-950) 70%, transparent)}}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-indigo-500{--tw-gradient-from:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-50{--tw-gradient-from:var(--color-slate-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-200{--tw-gradient-from:var(--color-slate-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-slate-50\/95{--tw-gradient-via:#f8fafcf2}@supports (color:color-mix(in lab, red, red)){.via-slate-50\/95{--tw-gradient-via:color-mix(in oklab, var(--color-slate-50) 95%, transparent)}}.via-slate-50\/95{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-slate-300\/80{--tw-gradient-via:#cad5e2cc}@supports (color:color-mix(in lab, red, red)){.via-slate-300\/80{--tw-gradient-via:color-mix(in oklab, var(--color-slate-300) 80%, transparent)}}.via-slate-300\/80{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-purple-500{--tw-gradient-to:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-100{color:var(--color-amber-100)}.text-amber-200{color:var(--color-amber-200)}.text-amber-500{color:var(--color-amber-500)}.text-amber-700{color:var(--color-amber-700)}.text-amber-700\/70{color:#b75000b3}@supports (color:color-mix(in lab, red, red)){.text-amber-700\/70{color:color-mix(in oklab, var(--color-amber-700) 70%, transparent)}}.text-amber-700\/80{color:#b75000cc}@supports (color:color-mix(in lab, red, red)){.text-amber-700\/80{color:color-mix(in oklab, var(--color-amber-700) 80%, transparent)}}.text-amber-800{color:var(--color-amber-800)}.text-amber-800\/80{color:#953d00cc}@supports (color:color-mix(in lab, red, red)){.text-amber-800\/80{color:color-mix(in oklab, var(--color-amber-800) 80%, transparent)}}.text-amber-950{color:var(--color-amber-950)}.text-emerald-100{color:var(--color-emerald-100)}.text-emerald-200{color:var(--color-emerald-200)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-indigo-100{color:var(--color-indigo-100)}.text-indigo-100\/80{color:#e0e7ffcc}@supports (color:color-mix(in lab, red, red)){.text-indigo-100\/80{color:color-mix(in oklab, var(--color-indigo-100) 80%, transparent)}}.text-indigo-200{color:var(--color-indigo-200)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-500{color:var(--color-indigo-500)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-indigo-700\/70{color:#432dd7b3}@supports (color:color-mix(in lab, red, red)){.text-indigo-700\/70{color:color-mix(in oklab, var(--color-indigo-700) 70%, transparent)}}.text-indigo-800{color:var(--color-indigo-800)}.text-inherit{color:inherit}.text-rose-100{color:var(--color-rose-100)}.text-rose-200{color:var(--color-rose-200)}.text-rose-500{color:var(--color-rose-500)}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-slate-200{color:var(--color-slate-200)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-slate-950{color:var(--color-slate-950)}.text-white{color:var(--color-white)}.text-zinc-100{color:var(--color-zinc-100)}.text-zinc-200{color:var(--color-zinc-200)}.text-zinc-300{color:var(--color-zinc-300)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(99\,102\,241\,0\.5\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#6366f180);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(99\,102\,241\,0\.3\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#6366f14d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_16px_32px_rgba\(0\,0\,0\,0\.16\)\]{--tw-shadow:0 16px 32px var(--tw-shadow-color,#00000029);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_18px_40px_rgba\(16\,185\,129\,0\.1\)\]{--tw-shadow:0 18px 40px var(--tw-shadow-color,#10b9811a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-indigo-500\/5{--tw-shadow-color:#625fff0d}@supports (color:color-mix(in lab, red, red)){.shadow-indigo-500\/5{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-500) 5%, transparent) var(--tw-shadow-alpha), transparent)}}.blur-\[100px\]{--tw-blur:blur(100px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[120px\]{--tw-blur:blur(120px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.selection\:bg-indigo-500\/30 ::selection{background-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.selection\:bg-indigo-500\/30 ::selection{background-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.selection\:bg-indigo-500\/30::selection{background-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.selection\:bg-indigo-500\/30::selection{background-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.placeholder\:text-slate-400::placeholder{color:var(--color-slate-400)}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-emerald-500\/40:hover{border-color:#00bb7f66}@supports (color:color-mix(in lab, red, red)){.hover\:border-emerald-500\/40:hover{border-color:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.hover\:border-indigo-200:hover{border-color:var(--color-indigo-200)}.hover\:border-indigo-300:hover{border-color:var(--color-indigo-300)}.hover\:border-indigo-500\/40:hover{border-color:#625fff66}@supports (color:color-mix(in lab, red, red)){.hover\:border-indigo-500\/40:hover{border-color:color-mix(in oklab, var(--color-indigo-500) 40%, transparent)}}.hover\:border-indigo-500\/50:hover{border-color:#625fff80}@supports (color:color-mix(in lab, red, red)){.hover\:border-indigo-500\/50:hover{border-color:color-mix(in oklab, var(--color-indigo-500) 50%, transparent)}}.hover\:border-rose-200:hover{border-color:var(--color-rose-200)}.hover\:border-rose-500\/50:hover{border-color:#ff235780}@supports (color:color-mix(in lab, red, red)){.hover\:border-rose-500\/50:hover{border-color:color-mix(in oklab, var(--color-rose-500) 50%, transparent)}}.hover\:border-slate-300:hover{border-color:var(--color-slate-300)}.hover\:border-zinc-700:hover{border-color:var(--color-zinc-700)}.hover\:bg-emerald-500\/20:hover{background-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-emerald-500\/20:hover{background-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)}}.hover\:bg-indigo-400:hover{background-color:var(--color-indigo-400)}.hover\:bg-indigo-500:hover{background-color:var(--color-indigo-500)}.hover\:bg-rose-500\/20:hover{background-color:#ff235733}@supports (color:color-mix(in lab, red, red)){.hover\:bg-rose-500\/20:hover{background-color:color-mix(in oklab, var(--color-rose-500) 20%, transparent)}}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.hover\:bg-zinc-900:hover{background-color:var(--color-zinc-900)}.hover\:text-indigo-100:hover{color:var(--color-indigo-100)}.hover\:text-indigo-600:hover{color:var(--color-indigo-600)}.hover\:text-rose-500:hover{color:var(--color-rose-500)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:text-slate-800:hover{color:var(--color-slate-800)}.hover\:text-slate-900:hover{color:var(--color-slate-900)}.hover\:text-zinc-100:hover{color:var(--color-zinc-100)}.hover\:text-zinc-200:hover{color:var(--color-zinc-200)}.hover\:opacity-100:hover{opacity:1}}.focus\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-emerald-400\/30:focus{--tw-ring-color:#00d2944d}@supports (color:color-mix(in lab, red, red)){.focus\:ring-emerald-400\/30:focus{--tw-ring-color:color-mix(in oklab, var(--color-emerald-400) 30%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-45:disabled{opacity:.45}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (width>=48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-\[0\.95fr_1\.2fr_0\.95fr\]{grid-template-columns:.95fr 1.2fr .95fr}:where(.md\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.md\:divide-y-0>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(0px * var(--tw-divide-y-reverse));border-bottom-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)))}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:py-0{padding-block:calc(var(--spacing) * 0)}.md\:pt-0{padding-top:calc(var(--spacing) * 0)}}@media (width>=64rem){.lg\:grid-cols-\[0\.8fr_1\.35fr_1fr\]{grid-template-columns:.8fr 1.35fr 1fr}.lg\:grid-cols-\[360px_minmax\(0\,1fr\)_360px\]{grid-template-columns:360px minmax(0,1fr) 360px}.lg\:p-8{padding:calc(var(--spacing) * 8)}}@media (width>=80rem){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-color-scheme:dark){:where(.dark\:divide-zinc-800\/60>:not(:last-child)){border-color:#27272a99}@supports (color:color-mix(in lab, red, red)){:where(.dark\:divide-zinc-800\/60>:not(:last-child)){border-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)}}.dark\:border-amber-300\/50{border-color:#ffd23680}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-300\/50{border-color:color-mix(in oklab, var(--color-amber-300) 50%, transparent)}}.dark\:border-amber-400\/15{border-color:#fcbb0026}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-400\/15{border-color:color-mix(in oklab, var(--color-amber-400) 15%, transparent)}}.dark\:border-amber-400\/25{border-color:#fcbb0040}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-400\/25{border-color:color-mix(in oklab, var(--color-amber-400) 25%, transparent)}}.dark\:border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-500\/20{border-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.dark\:border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-500\/30{border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.dark\:border-emerald-500{border-color:var(--color-emerald-500)}.dark\:border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-500\/20{border-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)}}.dark\:border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-500\/30{border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.dark\:border-indigo-500{border-color:var(--color-indigo-500)}.dark\:border-indigo-500\/20{border-color:#625fff33}@supports (color:color-mix(in lab, red, red)){.dark\:border-indigo-500\/20{border-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}.dark\:border-indigo-500\/30{border-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-indigo-500\/30{border-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.dark\:border-indigo-500\/40{border-color:#625fff66}@supports (color:color-mix(in lab, red, red)){.dark\:border-indigo-500\/40{border-color:color-mix(in oklab, var(--color-indigo-500) 40%, transparent)}}.dark\:border-rose-500{border-color:var(--color-rose-500)}.dark\:border-rose-500\/20{border-color:#ff235733}@supports (color:color-mix(in lab, red, red)){.dark\:border-rose-500\/20{border-color:color-mix(in oklab, var(--color-rose-500) 20%, transparent)}}.dark\:border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.dark\:border-rose-500\/30{border-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.dark\:border-zinc-700{border-color:var(--color-zinc-700)}.dark\:border-zinc-800{border-color:var(--color-zinc-800)}.dark\:border-zinc-800\/80{border-color:#27272acc}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-800\/80{border-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)}}.dark\:border-zinc-900{border-color:var(--color-zinc-900)}.dark\:bg-\[\#0c0c0e\]{background-color:#0c0c0e}.dark\:bg-\[\#0c0c0e\]\/50{background-color:oklab(15.527% .00115445 -.00405315/.5)}.dark\:bg-\[\#0c0c0e\]\/60{background-color:oklab(15.527% .00115445 -.00405315/.6)}.dark\:bg-\[\#0d0d10\]{background-color:#0d0d10}.dark\:bg-\[\#000000\]{background-color:#000}.dark\:bg-\[\#050507\]{background-color:#050507}.dark\:bg-\[\#101014\]{background-color:#101014}.dark\:bg-\[\#111115\]{background-color:#111115}.dark\:bg-\[\#131316\]{background-color:#131316}.dark\:bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.dark\:bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-500\/15{background-color:color-mix(in oklab, var(--color-amber-500) 15%, transparent)}}.dark\:bg-amber-500\/\[0\.08\]{background-color:#f99c0014}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-500\/\[0\.08\]{background-color:color-mix(in oklab, var(--color-amber-500) 8%, transparent)}}.dark\:bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.dark\:bg-emerald-500\/5{background-color:#00bb7f0d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-500\/5{background-color:color-mix(in oklab, var(--color-emerald-500) 5%, transparent)}}.dark\:bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-500\/10{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.dark\:bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-500\/15{background-color:color-mix(in oklab, var(--color-emerald-500) 15%, transparent)}}.dark\:bg-indigo-400{background-color:var(--color-indigo-400)}.dark\:bg-indigo-500\/10{background-color:#625fff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-500\/10{background-color:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.dark\:bg-indigo-500\/15{background-color:#625fff26}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-500\/15{background-color:color-mix(in oklab, var(--color-indigo-500) 15%, transparent)}}.dark\:bg-indigo-500\/20{background-color:#625fff33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-500\/20{background-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}.dark\:bg-indigo-900\/10{background-color:#312c851a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-900\/10{background-color:color-mix(in oklab, var(--color-indigo-900) 10%, transparent)}}.dark\:bg-rose-500\/5{background-color:#ff23570d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-rose-500\/5{background-color:color-mix(in oklab, var(--color-rose-500) 5%, transparent)}}.dark\:bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-rose-500\/10{background-color:color-mix(in oklab, var(--color-rose-500) 10%, transparent)}}.dark\:bg-white{background-color:var(--color-white)}.dark\:bg-zinc-800{background-color:var(--color-zinc-800)}.dark\:bg-zinc-800\/20{background-color:#27272a33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/20{background-color:color-mix(in oklab, var(--color-zinc-800) 20%, transparent)}}.dark\:bg-zinc-800\/80{background-color:#27272acc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/80{background-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)}}.dark\:bg-zinc-900{background-color:var(--color-zinc-900)}.dark\:bg-zinc-900\/50{background-color:#18181b80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/50{background-color:color-mix(in oklab, var(--color-zinc-900) 50%, transparent)}}.dark\:bg-zinc-900\/90{background-color:#18181be6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/90{background-color:color-mix(in oklab, var(--color-zinc-900) 90%, transparent)}}.dark\:bg-zinc-950{background-color:var(--color-zinc-950)}.dark\:from-\[\#0c0c0e\]{--tw-gradient-from:#0c0c0e;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-zinc-800{--tw-gradient-from:var(--color-zinc-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:via-\[\#0c0c0e\]\/95{--tw-gradient-via:oklab(15.527% .00115445 -.00405315/.95);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:via-zinc-700\/50{--tw-gradient-via:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\:via-zinc-700\/50{--tw-gradient-via:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}.dark\:via-zinc-700\/50{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:text-amber-50{color:var(--color-amber-50)}.dark\:text-amber-100{color:var(--color-amber-100)}.dark\:text-amber-200{color:var(--color-amber-200)}.dark\:text-amber-200\/70{color:#fee685b3}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-200\/70{color:color-mix(in oklab, var(--color-amber-200) 70%, transparent)}}.dark\:text-amber-200\/80{color:#fee685cc}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-200\/80{color:color-mix(in oklab, var(--color-amber-200) 80%, transparent)}}.dark\:text-amber-300{color:var(--color-amber-300)}.dark\:text-amber-300\/70{color:#ffd236b3}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-300\/70{color:color-mix(in oklab, var(--color-amber-300) 70%, transparent)}}.dark\:text-amber-400{color:var(--color-amber-400)}.dark\:text-black{color:var(--color-black)}.dark\:text-emerald-100{color:var(--color-emerald-100)}.dark\:text-emerald-200{color:var(--color-emerald-200)}.dark\:text-emerald-300{color:var(--color-emerald-300)}.dark\:text-emerald-400{color:var(--color-emerald-400)}.dark\:text-indigo-100{color:var(--color-indigo-100)}.dark\:text-indigo-200{color:var(--color-indigo-200)}.dark\:text-indigo-200\/70{color:#c7d2ffb3}@supports (color:color-mix(in lab, red, red)){.dark\:text-indigo-200\/70{color:color-mix(in oklab, var(--color-indigo-200) 70%, transparent)}}.dark\:text-indigo-300{color:var(--color-indigo-300)}.dark\:text-indigo-400{color:var(--color-indigo-400)}.dark\:text-rose-200{color:var(--color-rose-200)}.dark\:text-rose-300{color:var(--color-rose-300)}.dark\:text-rose-400{color:var(--color-rose-400)}.dark\:text-white{color:var(--color-white)}.dark\:text-zinc-100{color:var(--color-zinc-100)}.dark\:text-zinc-200{color:var(--color-zinc-200)}.dark\:text-zinc-300{color:var(--color-zinc-300)}.dark\:text-zinc-400{color:var(--color-zinc-400)}.dark\:text-zinc-500{color:var(--color-zinc-500)}.dark\:text-zinc-600{color:var(--color-zinc-600)}.dark\:text-zinc-950{color:var(--color-zinc-950)}.dark\:shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_16px_32px_rgba\(0\,0\,0\,0\.35\)\]{--tw-shadow:0 16px 32px var(--tw-shadow-color,#00000059);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:placeholder\:text-zinc-500::placeholder{color:var(--color-zinc-500)}@media (hover:hover){.dark\:hover\:border-indigo-500\/30:hover{border-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:border-indigo-500\/30:hover{border-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.dark\:hover\:border-rose-500\/30:hover{border-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:border-rose-500\/30:hover{border-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.dark\:hover\:border-zinc-700:hover{border-color:var(--color-zinc-700)}.dark\:hover\:border-zinc-700\/90:hover{border-color:#3f3f46e6}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:border-zinc-700\/90:hover{border-color:color-mix(in oklab, var(--color-zinc-700) 90%, transparent)}}.dark\:hover\:bg-zinc-200:hover{background-color:var(--color-zinc-200)}.dark\:hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.dark\:hover\:bg-zinc-900:hover{background-color:var(--color-zinc-900)}.dark\:hover\:bg-zinc-900\/35:hover{background-color:#18181b59}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-zinc-900\/35:hover{background-color:color-mix(in oklab, var(--color-zinc-900) 35%, transparent)}}.dark\:hover\:text-indigo-200:hover{color:var(--color-indigo-200)}.dark\:hover\:text-indigo-300:hover{color:var(--color-indigo-300)}.dark\:hover\:text-rose-400:hover{color:var(--color-rose-400)}.dark\:hover\:text-zinc-100:hover{color:var(--color-zinc-100)}.dark\:hover\:text-zinc-200:hover{color:var(--color-zinc-200)}.dark\:hover\:text-zinc-300:hover{color:var(--color-zinc-300)}}}}html,body,#root{height:100%}body{margin:0;overflow:hidden}.scrollbar-hide{scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}.panel-line-clamp-1,.panel-line-clamp-2,.panel-line-clamp-3{overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.panel-line-clamp-1{-webkit-line-clamp:1}.panel-line-clamp-2{-webkit-line-clamp:2}.panel-line-clamp-3{-webkit-line-clamp:3}.panel-flow-line{position:relative}.panel-flow-line:after{content:"";background:#3b82f6;border-radius:999px;width:6px;height:6px;animation:2.4s linear infinite panel-flow-pulse;position:absolute;top:calc(50% - 3px);left:18%;box-shadow:0 0 12px #3b82f6b8}@keyframes panel-flow-pulse{0%{opacity:0;transform:translate(0)}18%{opacity:1}82%{opacity:1}to{opacity:0;transform:translate(72px)}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}