@linkshell/gateway 0.6.11 → 0.6.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/web-client/assets/Prototype-eb7Zpb4l.js +2 -0
- package/web-client/assets/index-Bt90ODyr.js +498 -0
- package/web-client/assets/index-UH0_druW.css +1 -0
- package/web-client/assets/{qr-scanner.min-CUJBiTnI.js → qr-scanner.min-tTey7ktN.js} +1 -1
- package/web-client/index.html +2 -2
- package/web-client/preview/bridge.js +12 -2
- package/web-client/preview/worker.js +58 -5
- package/web-client/assets/Prototype-jUvLvS7-.js +0 -2
- package/web-client/assets/index-DAGM5YJg.css +0 -1
- package/web-client/assets/index-E4E6ovrQ.js +0 -210
|
@@ -1,6 +1,52 @@
|
|
|
1
1
|
/* global clients */
|
|
2
2
|
const sessions = new Map();
|
|
3
3
|
const owners = new Map();
|
|
4
|
+
const recovering = new Map();
|
|
5
|
+
const viewPath = /^\/preview\/view\/([\w-]+)\/(.*)$/;
|
|
6
|
+
|
|
7
|
+
async function restoreSession(token) {
|
|
8
|
+
if (sessions.has(token)) return sessions.get(token);
|
|
9
|
+
if (recovering.has(token)) return recovering.get(token);
|
|
10
|
+
const task = (async () => {
|
|
11
|
+
// A worker's memory can disappear between requests; the live bridge owns the session.
|
|
12
|
+
const windows = await clients.matchAll({
|
|
13
|
+
type: "window",
|
|
14
|
+
includeUncontrolled: true,
|
|
15
|
+
});
|
|
16
|
+
const owner = windows.find((client) => {
|
|
17
|
+
const url = new URL(client.url);
|
|
18
|
+
return (
|
|
19
|
+
url.origin === self.location.origin &&
|
|
20
|
+
url.pathname === "/preview/bridge.html" &&
|
|
21
|
+
url.hash === `#${token}`
|
|
22
|
+
);
|
|
23
|
+
});
|
|
24
|
+
if (!owner) return;
|
|
25
|
+
const wire = new MessageChannel();
|
|
26
|
+
const bootstrap = await new Promise((resolve) => {
|
|
27
|
+
const timer = setTimeout(() => {
|
|
28
|
+
wire.port1.close();
|
|
29
|
+
resolve(undefined);
|
|
30
|
+
}, 5000);
|
|
31
|
+
wire.port1.onmessage = (event) => {
|
|
32
|
+
clearTimeout(timer);
|
|
33
|
+
wire.port1.close();
|
|
34
|
+
resolve(event.data?.bootstrap);
|
|
35
|
+
};
|
|
36
|
+
owner.postMessage({ type: "restore", token }, [wire.port2]);
|
|
37
|
+
});
|
|
38
|
+
if (typeof bootstrap !== "string") return;
|
|
39
|
+
const session = { owner: owner.id, bootstrap };
|
|
40
|
+
sessions.set(token, session);
|
|
41
|
+
return session;
|
|
42
|
+
})();
|
|
43
|
+
recovering.set(token, task);
|
|
44
|
+
try {
|
|
45
|
+
return await task;
|
|
46
|
+
} finally {
|
|
47
|
+
recovering.delete(token);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
4
50
|
self.addEventListener("install", () => {
|
|
5
51
|
void self.skipWaiting();
|
|
6
52
|
});
|
|
@@ -60,13 +106,20 @@ function navigationBootstrap(prefix) {
|
|
|
60
106
|
self.addEventListener("fetch", (event) => {
|
|
61
107
|
const url = new URL(event.request.url);
|
|
62
108
|
if (url.origin !== self.location.origin) return;
|
|
63
|
-
const match =
|
|
64
|
-
const token = match?.[1] ?? owners.get(event.clientId);
|
|
65
|
-
const session = sessions.get(token);
|
|
66
|
-
if (!session) return;
|
|
67
|
-
if (event.resultingClientId) owners.set(event.resultingClientId, token);
|
|
109
|
+
const match = viewPath.exec(url.pathname);
|
|
68
110
|
event.respondWith(
|
|
69
111
|
(async () => {
|
|
112
|
+
let token = match?.[1] ?? owners.get(event.clientId);
|
|
113
|
+
if (!token && event.clientId) {
|
|
114
|
+
const requester = await clients.get(event.clientId);
|
|
115
|
+
if (requester)
|
|
116
|
+
token = viewPath.exec(new URL(requester.url).pathname)?.[1];
|
|
117
|
+
}
|
|
118
|
+
if (!token) return fetch(event.request);
|
|
119
|
+
const session = await restoreSession(token);
|
|
120
|
+
if (!session)
|
|
121
|
+
return new Response("预览连接已关闭,请重新打开预览", { status: 503 });
|
|
122
|
+
if (event.resultingClientId) owners.set(event.resultingClientId, token);
|
|
70
123
|
const client = await clients.get(session.owner);
|
|
71
124
|
if (!client)
|
|
72
125
|
return new Response("工作台已关闭,请重新打开预览", { status: 503 });
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as i,j as s}from"./markdown-SZOrMO_3.js";import{d as U,i as gs,a as Ns,I as a,C as Y,b as bs,M as vs,o as ds,v as ks}from"./index-E4E6ovrQ.js";import"./account-R7yD1rZE.js";import"./terminal-DWFexEE4.js";const Cs=[{id:"auth",title:"完善登录续期与断线恢复",project:"linkshell",agent:"Claude",status:"waiting",detail:"等待确认 · 执行连接恢复测试",time:"刚刚"},{id:"web",title:"搭建网页端的会话工作区",project:"linkshell",agent:"Codex",status:"running",detail:"正在调整会话布局与响应式样式",time:"2 分钟前"},{id:"search",title:"优化文档搜索的键盘导航",project:"itool",agent:"Claude",status:"running",detail:"正在检查焦点切换与快捷键",time:"8 分钟前"},{id:"billing",title:"修复订阅页面的状态显示",project:"itool",agent:"Codex",status:"done",detail:"已完成 · 3 个文件变更",time:"32 分钟前"},{id:"docs",title:"补充自托管网关部署说明",project:"linkshell",agent:"Claude",status:"done",detail:"已完成 · 1 个文件变更",time:"1 小时前"}],B={waiting:"需要你",running:"进行中",done:"已完成"},hs=["src/auth/session.ts","src/connection/retry.ts","test/session.test.ts"];function ws({status:t}){return s.jsxs("span",{className:`badge ${t}`,children:[s.jsx("span",{className:"status-dot"}),B[t]]})}function I({agent:t}){const m=bs[t.toLowerCase()];return s.jsx("span",{className:`agent-mark ${t.toLowerCase()} ${m.full?"full-mark":""}`,children:s.jsx("img",{src:`data:image/svg+xml,${encodeURIComponent(m.svg)}`,alt:t})})}function js({title:t,subtitle:m,children:h,close:k}){return s.jsxs(vs,{title:t,close:k,children:[m&&s.jsx("p",{className:"muted modal-subtitle",children:m}),h]})}function ys({source:t,gateway:m,onConnect:h,close:k}){const[d,w]=i.useState(t),[u,y]=i.useState(t==="self-hosted"?m:""),[c,E]=i.useState(""),[N,p]=i.useState("");function S(f){if(f.preventDefault(),d==="official")return h(d,ds);try{const v=ks(u);if(v===ds)throw new Error("这是官方网关,请选择官方服务;私有部署请填写自己的网关地址");if(!/^\d{6}$/.test(c))throw new Error("请输入 6 位配对码;原型中可填写任意 6 位数字");h(d,v)}catch(v){p(v instanceof Error?v.message:"请检查网关设置")}}return s.jsxs(js,{title:"连接你的电脑",subtitle:"选择连接方式,工作台始终属于你。",close:k,children:[U==="official"?s.jsxs("div",{className:"source-options",children:[s.jsxs("button",{className:d==="official"?"source-option selected":"source-option",onClick:()=>{w("official"),p("")},"aria-pressed":d==="official",children:[s.jsx(a,{name:"globe",size:23}),s.jsx("strong",{children:"官方服务"}),s.jsx("span",{children:"登录账号,发现你的电脑"}),s.jsx("span",{className:"selection-dot"})]}),s.jsxs("button",{className:d==="self-hosted"?"source-option selected":"source-option",onClick:()=>{w("self-hosted"),p("")},"aria-pressed":d==="self-hosted",children:[s.jsx(a,{name:"server",size:23}),s.jsx("strong",{children:"自托管网关"}),s.jsx("span",{children:"使用自己的服务器与配对码"}),s.jsx("span",{className:"selection-dot"})]})]}):s.jsxs("div",{className:"private-note",children:[s.jsx(a,{name:"server"}),s.jsxs("div",{children:[s.jsx("strong",{children:"私有部署"}),s.jsx("p",{children:"此站点使用你配置的网关,无需 iTool 账号或官方订阅。"})]})]}),s.jsxs("form",{onSubmit:S,children:[d==="official"?s.jsxs("div",{className:"official-entry",children:[s.jsx("div",{className:"entry-symbol",children:s.jsx(a,{name:"computer",size:32})}),s.jsx("h3",{children:"你的电脑,登录后就在这里"}),s.jsxs("p",{children:["电脑端运行 ",s.jsx("code",{children:"linkshell login"}),",网页使用同一 iTool 账号。电脑接入官方网关需要有效的 Pro 订阅。"]}),s.jsxs("div",{className:"endpoint",children:[s.jsx("span",{className:"status-dot"}),"gateway.itool.tech ",s.jsx("span",{children:"官方网关"})]})]}):s.jsxs("div",{className:"pairing-form",children:[s.jsx("label",{htmlFor:"gateway",children:"网关地址"}),s.jsx("input",{id:"gateway",placeholder:"wss://gateway.example.com",value:u,onChange:f=>{y(f.target.value),p("")},autoComplete:"off",spellCheck:!1,required:!0}),s.jsx("p",{className:"field-hint",children:"填写部署网关的地址,不是当前网页的地址。"}),s.jsx("label",{htmlFor:"pairing-code",children:"电脑上的配对码"}),s.jsx("input",{id:"pairing-code",className:"code-input",inputMode:"numeric",placeholder:"000000",maxLength:6,value:c,onChange:f=>{E(f.target.value.replace(/\D/g,"")),p("")},required:!0}),s.jsxs("p",{className:"field-hint",children:["电脑连接该网关后运行 ",s.jsx("code",{children:"linkshell pair"})," 获取。真实配对码 10 分钟内有效。"]}),s.jsxs("div",{className:"private-note",children:[s.jsx(a,{name:"shield"}),s.jsx("span",{children:"无需官方账号与订阅。正式版仅与指定网关交换配对信息,不向它发送 iTool 登录凭证。"})]})]}),N&&s.jsx("p",{role:"alert",className:"form-error",children:N}),s.jsxs("button",{className:"button primary full",type:"submit",children:[d==="official"?"预览账号登录后的工作台":"预览配对后的工作台",s.jsx(a,{name:"arrow"})]}),s.jsx("p",{className:"prototype-note",children:"交互原型 · 不发起真实登录、配对或网络连接"})]})]})}function Ss({close:t,create:m}){const[h,k]=i.useState(""),[d,w]=i.useState("linkshell"),[u,y]=i.useState("Claude");return s.jsx(js,{title:"开始一个新任务",subtitle:"告诉 Agent 你想完成什么。",close:t,children:s.jsxs("form",{className:"new-form",onSubmit:c=>{c.preventDefault(),h.trim()&&m(h.trim(),d,u)},children:[s.jsx("label",{htmlFor:"task-prompt",children:"任务描述"}),s.jsx("textarea",{id:"task-prompt",autoFocus:!0,value:h,onChange:c=>k(c.target.value),placeholder:"例如:帮我检查这个项目的登录流程…",required:!0,rows:4}),s.jsxs("div",{className:"form-columns",children:[s.jsxs("label",{children:["项目",s.jsx(Y,{label:"项目",value:d,onValueChange:w,options:[{value:"linkshell",label:"linkshell"},{value:"itool",label:"itool"}]})]}),s.jsxs("label",{children:["Agent",s.jsx(Y,{label:"Agent",value:u,onValueChange:c=>y(c),options:[{value:"Claude",label:"Claude"},{value:"Codex",label:"Codex"}]})]})]}),s.jsxs("div",{className:"computer-inline",children:[s.jsx(a,{name:"computer"}),s.jsx("span",{children:"Studio Mac"}),s.jsx("span",{className:"online-dot"}),"演示电脑"]}),s.jsxs("button",{className:"button primary full",disabled:!h.trim(),children:["创建演示任务",s.jsx(a,{name:"arrow"})]}),s.jsx("p",{className:"prototype-note",children:"任务仅保存在本页,不会启动真实 Agent"})]})})}function Es(){const[t,m]=i.useState(U),[h,k]=i.useState(()=>window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light");i.useEffect(()=>{document.documentElement.dataset.theme=h},[h]);const[d,w]=i.useState(gs),[u,y]=i.useState(Cs),[c,E]=i.useState("home"),[N,p]=i.useState(null),[S,f]=i.useState("all"),[v,W]=i.useState(""),[_,x]=i.useState(U==="self-hosted"?"connect":null),[b,G]=i.useState("online"),[o,T]=i.useState(null),[M,J]=i.useState(!1),[q,Q]=i.useState(""),[X,xs]=i.useState([]),[L,Z]=i.useState({}),[ms,us]=i.useState({}),[ps,K]=i.useState({}),[D,z]=i.useState(""),[ss,F]=i.useState(!1),[R,es]=i.useState(!1),[O,fs]=i.useState(hs[0]),as=i.useRef(null),ns=i.useRef(null),ls=i.useRef(null),H=i.useRef(null),r=u.find(e=>e.id===c),j=b==="online",is=ms[c]??[],$=ps[c]??[],cs=u.filter(e=>e.status==="waiting"),ts=u.filter(e=>(!N||e.project===N)&&(S==="all"||e.status===S)&&`${e.title} ${e.project} ${e.agent}`.toLowerCase().includes(v.toLowerCase()));i.useEffect(()=>{const e=n=>{(n.metaKey||n.ctrlKey)&&n.key==="k"&&!document.querySelector("dialog[open]")&&(n.preventDefault(),E("home"),F(!1),requestAnimationFrame(()=>as.current?.focus()))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),i.useEffect(()=>{if(!D)return;const e=setTimeout(()=>z(""),3500);return()=>clearTimeout(e)},[D]),i.useEffect(()=>{H.current?.scrollTo({top:H.current.scrollHeight,behavior:"smooth"})},[c,is.length]);function g(e){E(e),F(!1),es(!1)}function rs(e,n,l){y(A=>A.map(C=>C.id===e?{...C,status:n,detail:l,time:"刚刚"}:C))}function V(e,n){us(l=>({...l,[e]:[...l[e]??[],n]}))}function P(e,n){j&&(rs(e,n?"running":"done",n?"已允许测试 · 演示运行中":"已拒绝本次测试 · 等待新指令"),V(e,{role:"assistant",text:n?"已记录允许执行。在正式连接中,这一步会交给电脑上的 Agent 继续处理。":"已记录拒绝执行。你可以补充要求,让 Agent 调整下一步计划。"}),z(n?"演示审批已通过":"演示审批已拒绝"))}function os(){if(!r||!j||!L[c]?.trim()&&!$.length)return;const e=[L[c]?.trim(),...$.map(n=>`附件:${n}(未上传)`)].filter(Boolean).join(`
|
|
2
|
-
`);V(c,{role:"user",text:e}),V(c,{role:"assistant",text:"消息已添加到本地演示会话。接入真实 Host 后,这里会显示 Agent 的实时回复。"}),Z(n=>({...n,[c]:""})),K(n=>({...n,[c]:[]})),ns.current?.focus()}return s.jsxs("div",{className:`app-shell ${ss?"nav-open":""}`,children:[ss&&s.jsx("button",{className:"nav-backdrop","aria-label":"关闭导航",onClick:()=>F(!1)}),s.jsxs("aside",{className:"sidebar",children:[s.jsxs("a",{className:"brand",href:"#",onClick:e=>{e.preventDefault(),p(null),g("home")},children:[s.jsx("img",{className:"brand-symbol",src:Ns,alt:""}),"LinkShell",s.jsx("span",{className:"brand-web",children:"web"})]}),s.jsxs("button",{className:"connection-switch",onClick:()=>x("connect"),children:[s.jsx("span",{className:`source-icon ${t}`,children:s.jsx(a,{name:t==="official"?"globe":"server"})}),s.jsxs("span",{children:[s.jsx("strong",{children:t==="official"?"官方工作空间":"自托管工作空间"}),s.jsx("small",{children:t==="official"?"iTool 账号 · 演示":"设备配对 · 演示"})]}),s.jsx(a,{name:"down",size:15})]}),s.jsxs("button",{className:"button new-task",onClick:()=>x("new"),children:[s.jsx(a,{name:"plus"}),"新建任务",s.jsx("span",{className:"new-task-corner",children:"↗"})]}),s.jsxs("nav",{"aria-label":"主导航",children:[s.jsxs("button",{className:`nav-item ${c==="home"&&!N?"active":""}`,onClick:()=>{p(null),f("all"),g("home")},children:[s.jsx(a,{name:"grid"}),"首页",s.jsx("span",{className:"nav-count",children:u.length})]}),s.jsxs("button",{className:`nav-item ${c==="computers"?"active":""}`,onClick:()=>g("computers"),children:[s.jsx(a,{name:"computer"}),"我的电脑",s.jsx("span",{className:"online-dot"})]})]}),s.jsxs("div",{className:"nav-section-label",children:["项目",s.jsx("span",{children:"2"})]}),["linkshell","itool"].map(e=>s.jsxs("div",{children:[s.jsxs("button",{className:`nav-item project-nav ${N===e&&c==="home"?"active":""}`,onClick:()=>{p(e),f("all"),g("home")},children:[s.jsx(a,{name:"folder"}),e,s.jsx(a,{name:"down",size:13})]}),s.jsx("div",{className:"recent-list",children:u.filter(n=>n.project===e).slice(0,2).map(n=>s.jsxs("button",{className:`recent-task ${c===n.id?"selected":""}`,onClick:()=>g(n.id),children:[s.jsx("span",{className:`tiny-status ${n.status}`}),s.jsx("span",{children:n.title})]},n.id))})]},e)),s.jsxs("div",{className:"sidebar-bottom",children:[s.jsxs("div",{className:"host-presence",children:[s.jsx("span",{className:j?"online-dot":"offline-dot"}),s.jsx("span",{children:"Studio Mac"}),s.jsx("small",{children:j?"演示在线":"连接待恢复"})]}),s.jsxs("button",{className:"profile-button",onClick:()=>x("connect"),children:[s.jsx("span",{className:"avatar",children:t==="official"?"L":s.jsx(a,{name:"server"})}),s.jsxs("span",{children:[s.jsx("strong",{children:t==="official"?"LinkShell 演示账号":"本浏览器"}),s.jsx("small",{children:t==="official"?"官方服务 · Pro":"自托管 · 无需官方订阅"})]}),s.jsx(a,{name:"settings",size:17})]})]})]}),s.jsxs("main",{className:"main",children:[s.jsxs("header",{className:"topbar",children:[s.jsxs("div",{className:"breadcrumbs",children:[s.jsx("button",{className:"icon-button mobile-menu",onClick:()=>F(!0),"aria-label":"打开导航",children:s.jsx(a,{name:"menu"})}),s.jsx("span",{children:"工作空间"}),s.jsx("span",{className:"breadcrumb-slash",children:"/"}),s.jsx("strong",{children:r?r.project:c==="computers"?"我的电脑":N??"概览"}),r&&s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"breadcrumb-slash",children:"/"}),s.jsx("span",{className:"breadcrumb-task",children:"会话"})]})]}),s.jsxs("div",{className:"topbar-right",children:[s.jsx("button",{className:"icon-button theme-switch","aria-label":h==="light"?"切换深色外观":"切换浅色外观",onClick:()=>k(h==="light"?"dark":"light"),children:s.jsx(a,{name:"moon"})}),s.jsxs("span",{className:"demo-tag",children:[s.jsx("span",{}),"交互原型"]}),s.jsx(Y,{label:"预览连接状态",value:b,onValueChange:e=>G(e),options:[{value:"online",label:"正常连接"},{value:"offline",label:"网络中断"},{value:"expired",label:t==="official"?"登录失效":"配对失效"},...t==="official"?[{value:"subscription",label:"Pro 到期"}]:[]]}),s.jsx("button",{className:"icon-button","aria-label":"连接设置",onClick:()=>x("connect"),children:s.jsx(a,{name:"settings"})})]})]}),b!=="online"&&s.jsxs("div",{className:`connection-banner ${b}`,role:"status",children:[s.jsx(a,{name:b==="offline"?"globe":"shield"}),s.jsx("span",{children:b==="offline"?"连接暂时中断,草稿已保留。正式版恢复连接后会自动补齐会话。":b==="subscription"?"演示:电脑的 Pro 订阅已到期,重新接入官方网关需要续订;已有记录仍可查看。":t==="official"?"演示:登录凭证已失效,需要重新登录。":"演示:此浏览器的配对已被撤销,需要重新配对。"}),s.jsx("button",{onClick:()=>b==="offline"?(G("online"),z("已恢复演示连接")):x("connect"),children:b==="offline"?"模拟恢复":"查看连接设置"})]}),!r&&c!=="computers"&&s.jsxs("div",{className:"overview page-enter",children:[s.jsxs("div",{className:"page-heading",children:[s.jsxs("div",{children:[s.jsx("h1",{children:N??"首页"}),s.jsxs("p",{className:"host-summary",children:[s.jsx("span",{className:j?"online-dot":"offline-dot"}),"Studio Mac",cs.length>0&&s.jsxs("span",{className:"waiting-copy",children:["· ",cs.length," 项需要你"]})]})]}),s.jsxs("button",{className:"button primary",onClick:()=>x("new"),children:[s.jsx(a,{name:"plus"}),"新建任务"]})]}),s.jsxs("div",{className:"home-controls",children:[s.jsxs("label",{className:"search-box",children:[s.jsx(a,{name:"search",size:18}),s.jsx("input",{ref:as,"aria-label":"搜索任务",placeholder:"搜索会话、项目或 Agent",value:v,onChange:e=>W(e.target.value)}),s.jsx("kbd",{children:"⌘ K"})]}),s.jsx("div",{className:"filters",role:"group","aria-label":"任务状态筛选",children:["all","running","waiting","done"].map(e=>s.jsx("button",{"aria-pressed":S===e,className:S===e?"selected":"",onClick:()=>f(e),children:e==="all"?"全部":B[e]},e))})]}),["waiting","running","done"].map(e=>{const n=ts.filter(l=>l.status===e);return n.length?s.jsxs("section",{className:"session-group",children:[s.jsxs("div",{className:`section-heading ${e==="waiting"?"waiting-heading":""}`,children:[s.jsxs("h2",{children:[e==="done"?"今天":B[e],s.jsx("span",{children:n.length})]}),e==="running"&&s.jsx("span",{className:"section-note",children:"Agent 正在电脑上工作"})]}),e==="waiting"?n.map(l=>s.jsxs("article",{className:"attention-card",children:[s.jsxs("button",{className:"attention-title",onClick:()=>g(l.id),children:[s.jsx(I,{agent:l.agent}),s.jsxs("span",{children:[s.jsx("strong",{children:l.title}),s.jsxs("small",{children:[l.project," · ",l.agent]})]}),s.jsx("time",{children:l.time}),s.jsx(a,{name:"chevron",size:16})]}),s.jsxs("div",{className:"permission-preview",children:[s.jsxs("div",{children:[s.jsx(a,{name:"shield",size:17}),s.jsx("strong",{children:"需要你的确认"})]}),s.jsx("code",{children:"pnpm --filter @linkshell/client-core test"})]}),s.jsxs("div",{className:"attention-actions",children:[s.jsxs("button",{className:"text-button",onClick:()=>g(l.id),children:["查看会话",s.jsx(a,{name:"chevron",size:13})]}),s.jsx("button",{className:"button secondary",disabled:!j,onClick:()=>P(l.id,!1),children:"拒绝"}),s.jsx("button",{className:"button primary",disabled:!j,onClick:()=>P(l.id,!0),children:"允许本次"})]})]},l.id)):s.jsx("div",{className:"task-list",children:n.map(l=>s.jsxs("button",{className:"task-row",onClick:()=>g(l.id),children:[s.jsxs("span",{className:"row-avatar",children:[s.jsx(I,{agent:l.agent}),s.jsx("span",{className:`tiny-status ${l.status}`})]}),s.jsxs("span",{className:"task-info",children:[s.jsx("strong",{children:l.title}),s.jsxs("span",{children:[s.jsx("span",{className:"project-label",children:l.project}),s.jsx("span",{className:"separator",children:"·"}),s.jsx("span",{className:l.status==="running"?"running-copy":"",children:l.detail})]})]}),s.jsxs("span",{className:"task-meta",children:[s.jsx("small",{children:l.time}),s.jsx("span",{children:l.agent})]}),s.jsx(a,{name:"chevron",size:14})]},l.id))})]},e):null}),!ts.length&&s.jsxs("div",{className:"empty-state",children:[s.jsx(a,{name:"search",size:28}),s.jsx("h3",{children:"没有找到会话"}),s.jsx("p",{children:"试试其他关键词或筛选条件。"}),s.jsx("button",{className:"text-button",onClick:()=>{f("all"),W("")},children:"清除筛选"})]}),s.jsxs("footer",{className:"page-footer",children:[s.jsx(a,{name:"shield",size:13}),s.jsx("span",{children:t==="official"?"官方网关 · 账号连接":"自托管网关 · 设备配对"}),s.jsx("span",{children:"演示数据"})]})]}),c==="computers"&&s.jsxs("div",{className:"overview page-enter",children:[s.jsxs("div",{className:"page-heading",children:[s.jsxs("div",{children:[s.jsx("h1",{children:"我的电脑"}),s.jsx("p",{className:"muted",children:"管理你的电脑与连接方式。"})]}),s.jsxs("button",{className:"button primary",onClick:()=>x("connect"),children:[s.jsx(a,{name:"plus"}),"连接电脑"]})]}),s.jsxs("div",{className:"connection-detail-card",children:[s.jsx("span",{className:"large-source-icon",children:s.jsx(a,{name:t==="official"?"globe":"server",size:28})}),s.jsxs("div",{children:[s.jsx("span",{className:"eyebrow",children:t==="official"?"OFFICIAL GATEWAY":"SELF-HOSTED GATEWAY"}),s.jsx("h2",{children:t==="official"?"LinkShell 官方服务":"你自己的网关"}),s.jsx("code",{children:d||"尚未设置网关"}),s.jsx("p",{className:"muted",children:t==="official"?"通过同一 iTool 账号发现电脑。电脑接入需要有效的 Pro 订阅。":"通过设备配对授权,无需官方账号或订阅。网关与数据由你管理。"})]}),s.jsx("button",{className:"button secondary",onClick:()=>x("connect"),children:"连接设置"})]}),s.jsx("div",{className:"computer-table",children:s.jsxs("div",{children:[s.jsx(a,{name:"computer",size:28}),s.jsxs("span",{children:[s.jsx("strong",{children:"Studio Mac"}),s.jsx("small",{children:"macOS · 演示电脑"})]}),s.jsxs("span",{className:`badge ${j?"running":"waiting"}`,children:[s.jsx("span",{className:"status-dot"}),j?"在线":"待恢复"]}),s.jsx("span",{className:"muted",children:t==="official"?"账号关联":"已配对(演示)"}),s.jsxs("button",{className:"button secondary",onClick:()=>{p(null),g("home")},children:["查看任务",s.jsx(a,{name:"arrow",size:16})]})]})}),s.jsxs("div",{className:"deployment-note",children:[s.jsx(a,{name:"shield"}),s.jsxs("div",{children:[s.jsx("strong",{children:"网页部署位置与网关地址是两个独立设置"}),s.jsx("p",{children:"官方网页可以连接自托管网关。私有部署默认只显示配对入口,并从公开配置读取网关地址;不依赖官方登录服务。正式版不会把官方账号凭证发送给自定义网关。"})]})]})]}),r&&s.jsxs("div",{className:"session-page page-enter",children:[s.jsxs("div",{className:"session-heading",children:[s.jsxs("div",{children:[s.jsxs("div",{className:"session-title",children:[s.jsx("h1",{children:r.title}),s.jsx(ws,{status:r.status})]}),s.jsxs("div",{className:"session-subtitle",children:[s.jsx(I,{agent:r.agent}),s.jsx("span",{children:r.agent}),s.jsx("span",{className:"separator",children:"/"}),s.jsx(a,{name:"computer",size:13}),s.jsx("span",{children:"Studio Mac"}),s.jsx("span",{className:"separator",children:"/"}),s.jsx(a,{name:"branch",size:13}),s.jsx("span",{children:"codex/session-recovery"})]})]}),s.jsxs("div",{className:"session-actions",children:[s.jsx("button",{className:`icon-button ${M?"pressed":""}`,"aria-label":"切换终端","aria-pressed":M,onClick:()=>J(!M),children:s.jsx(a,{name:"terminal"})}),s.jsx("button",{className:`icon-button ${o?"pressed":""}`,"aria-label":"切换文件面板","aria-pressed":!!o,onClick:()=>T(o?null:"changes"),children:s.jsx(a,{name:"panel"})})]})]}),s.jsxs("div",{className:`session-layout ${o?"with-panel":""}`,children:[s.jsxs("div",{className:"conversation-column",children:[s.jsxs("div",{className:"conversation",ref:H,children:[s.jsx("div",{className:"date-divider",children:s.jsx("span",{children:"今天 · 演示会话"})}),s.jsxs("div",{className:"user-message",children:[s.jsxs("span",{className:"message-label",children:["你 ",s.jsx("small",{children:"14:28"})]}),s.jsx("p",{children:r.id==="auth"?"帮我完善登录续期和断线恢复。希望登录一次之后能长期使用,临时网络失败也不要丢掉登录状态。":r.title})]}),s.jsxs("div",{className:"assistant-message",children:[s.jsxs("div",{className:"message-author",children:[s.jsx(I,{agent:r.agent}),s.jsx("strong",{children:r.agent}),s.jsx("span",{children:"14:29"})]}),r.id==="auth"?s.jsxs(s.Fragment,{children:[s.jsx("p",{children:r.id==="auth"?"我检查了当前的连接流程。问题出在刷新失败之后:临时网络错误被当成未登录处理,导致账号下的电脑暂时不可见。":"我会先梳理相关实现,确定改动范围,再逐步完成并验证。以下内容用于展示网页端的工具调用和文件变更布局。"}),s.jsx("p",{children:"这次会把登录状态和连接状态分开处理:"}),s.jsxs("ol",{className:"plan-list",children:[s.jsx("li",{children:"保留本地凭证,区分网络错误与凭证失效。"}),s.jsx("li",{children:"恢复连接时自动续期,重新订阅会话。"}),s.jsx("li",{children:"补齐断线期间的事件,避免消息重复。"})]}),s.jsxs("button",{className:"tool-call",onClick:()=>es(!R),"aria-expanded":R,children:[s.jsx("span",{className:"tool-check",children:s.jsx(a,{name:"check",size:14})}),s.jsx("span",{children:"已检查连接与会话逻辑"}),s.jsx("small",{children:"3 个文件"}),s.jsx(a,{name:R?"down":"chevron",size:14})]}),R&&s.jsxs("div",{className:"tool-output",children:[s.jsxs("code",{children:["read src/auth/session.ts",s.jsx("br",{}),"read src/connection/retry.ts",s.jsx("br",{}),"read test/session.test.ts"]}),s.jsx("p",{children:"演示工具记录,未读取或修改真实文件。"})]}),s.jsxs("div",{className:"change-summary",children:[s.jsx(a,{name:"file",size:16}),s.jsx("button",{onClick:()=>T("changes"),children:"查看 3 个文件变更"}),s.jsx("span",{className:"added",children:"+42"}),s.jsx("span",{className:"removed",children:"−12"})]}),s.jsx("p",{children:"改动已整理好,接下来需要执行测试来验证恢复流程。"}),r.status==="waiting"&&s.jsxs("div",{className:"approval-card",children:[s.jsxs("div",{className:"approval-heading",children:[s.jsx("span",{className:"approval-icon",children:s.jsx(a,{name:"shield",size:19})}),s.jsxs("div",{children:[s.jsx("strong",{children:"允许执行这条命令吗?"}),s.jsx("span",{children:"将在 Studio Mac 的 linkshell 项目中执行"})]}),s.jsx("span",{className:"badge waiting",children:"等待确认"})]}),s.jsx("pre",{children:"pnpm --filter @linkshell/client-core test"}),s.jsxs("div",{className:"approval-footer",children:[s.jsx("span",{children:"仅允许本次操作"}),s.jsx("button",{className:"button secondary",onClick:()=>P(r.id,!1),disabled:!j,children:"拒绝"}),s.jsxs("button",{className:"button primary",onClick:()=>P(r.id,!0),disabled:!j,children:[s.jsx(a,{name:"check",size:15}),"允许执行"]})]})]})]}):s.jsxs("p",{children:["这是一个本地演示会话。你可以在下方补充消息、切换文件面板或展开终端,体验工作区布局。接入 Host 后,这里会显示 ",r.agent," 的真实执行过程。"]})]}),is.map((e,n)=>s.jsxs("div",{className:e.role==="user"?"user-message":"assistant-message reply",children:[s.jsxs("span",{className:"message-label",children:[e.role==="user"?"你":r.agent,s.jsx("small",{children:"刚刚 · 本地演示"})]}),s.jsx("p",{children:e.text})]},`${c}-${n}`))]}),M&&s.jsxs("section",{className:"terminal-panel","aria-label":"演示终端",children:[s.jsxs("div",{className:"terminal-heading",children:[s.jsxs("span",{children:[s.jsx(a,{name:"terminal",size:14}),"终端",s.jsx("span",{className:"terminal-demo",children:"只演示 · 不执行命令"})]}),s.jsx("button",{className:"icon-button","aria-label":"关闭终端",onClick:()=>J(!1),children:s.jsx(a,{name:"close",size:15})})]}),s.jsxs("div",{className:"terminal-output",children:[s.jsxs("p",{children:[s.jsxs("span",{className:"terminal-green",children:["~/projects/",r.project]})," ","on"," ",s.jsx("span",{className:"terminal-blue",children:"codex/session-recovery"})]}),X.map((e,n)=>s.jsx("p",{children:e},n)),s.jsxs("form",{onSubmit:e=>{e.preventDefault(),q.trim()&&(xs([...X,`❯ ${q}`,"原型不执行命令。正式版将连接电脑上的 PTY 终端。"]),Q(""))},children:[s.jsx("span",{children:"❯"}),s.jsx("input",{"aria-label":"演示终端命令",value:q,onChange:e=>Q(e.target.value),spellCheck:!1,placeholder:"试着输入一条命令"})]})]})]}),s.jsxs("div",{className:"composer-wrap",children:[s.jsxs("div",{className:"composer",children:[$.length>0&&s.jsx("div",{className:"attachment-list",children:$.map((e,n)=>s.jsxs("span",{children:[s.jsx(a,{name:"file",size:13}),e,s.jsx("button",{"aria-label":`移除附件 ${e}`,onClick:()=>K(l=>({...l,[c]:$.filter((A,C)=>C!==n)})),children:s.jsx(a,{name:"close",size:12})})]},`${e}-${n}`))}),s.jsx("textarea",{ref:ns,"aria-label":"发送消息",value:L[c]??"",onChange:e=>Z(n=>({...n,[c]:e.target.value})),onKeyDown:e=>{e.key==="Enter"&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),os())},placeholder:j?"补充你的想法,或告诉 Agent 下一步做什么…":"连接中断也可以继续写,草稿会保留…",rows:2}),s.jsxs("div",{className:"composer-toolbar",children:[s.jsxs("div",{children:[s.jsx("input",{ref:ls,type:"file",multiple:!0,hidden:!0,onChange:e=>{const n=Array.from(e.target.files??[]).map(l=>l.name);K(l=>({...l,[c]:[...l[c]??[],...n]})),e.target.value=""}}),s.jsx("button",{className:"icon-button","aria-label":"添加演示附件",onClick:()=>ls.current?.click(),children:s.jsx(a,{name:"attach",size:17})}),s.jsxs("span",{className:"composer-agent",children:[r.agent,s.jsx("span",{className:"separator",children:"·"}),"默认模型"]})]}),s.jsxs("div",{children:[r.status==="running"&&s.jsx("button",{className:"icon-button","aria-label":"停止演示任务",disabled:!j,onClick:()=>{rs(r.id,"done","已停止 · 演示任务"),z("已停止演示任务")},children:s.jsx(a,{name:"stop",size:16})}),s.jsx("button",{className:"send-button","aria-label":"发送演示消息",disabled:!j||!L[c]?.trim()&&!$.length,onClick:os,children:s.jsx(a,{name:"send",size:19})})]})]})]}),s.jsxs("div",{className:"composer-caption",children:[s.jsx("span",{children:"Enter 发送 · Shift Enter 换行"}),s.jsx("span",{children:"演示消息不会发送到电脑"})]})]})]}),o&&s.jsxs("aside",{className:"file-panel",children:[s.jsxs("div",{className:"panel-tabs",children:[s.jsxs("button",{className:o==="changes"?"selected":"",onClick:()=>T("changes"),children:["变更",s.jsx("span",{children:"3"})]}),s.jsx("button",{className:o==="files"?"selected":"",onClick:()=>T("files"),children:"文件"}),s.jsx("button",{className:"icon-button","aria-label":"关闭文件面板",onClick:()=>T(null),children:s.jsx(a,{name:"close",size:15})})]}),s.jsxs("div",{className:"panel-project",children:[s.jsx(a,{name:"folder",size:15}),r.project,s.jsx("span",{children:"示例文件"})]}),s.jsx("div",{className:"file-list",children:hs.map((e,n)=>s.jsxs("button",{className:O===e?"selected":"",onClick:()=>fs(e),children:[s.jsx(a,{name:"file",size:14}),s.jsx("span",{children:e}),o==="changes"&&s.jsxs("small",{className:"added",children:["+",[18,16,8][n]]})]},e))}),s.jsxs("div",{className:"diff-heading",children:[s.jsx("span",{children:O.split("/").pop()}),s.jsx("span",{children:o==="changes"?"+18 −4":"TypeScript"})]}),s.jsxs("div",{className:"code-preview",children:[s.jsxs("div",{children:[s.jsx("span",{children:"01"}),s.jsx("code",{children:O.includes("test")?"it('retains the session', () => {":"async function reconnect() {"})]}),s.jsxs("div",{children:[s.jsx("span",{children:"02"}),s.jsx("code",{children:" const session = loadSession();"})]}),o==="changes"&&s.jsxs("div",{className:"diff-remove",children:[s.jsx("span",{children:"−"}),s.jsx("code",{children:" if (!token) signOut();"})]}),s.jsxs("div",{className:o==="changes"?"diff-add":"",children:[s.jsx("span",{children:"03"}),s.jsx("code",{children:" if (!session) return;"})]}),s.jsxs("div",{className:o==="changes"?"diff-add":"",children:[s.jsx("span",{children:"04"}),s.jsx("code",{children:" try {"})]}),s.jsxs("div",{className:o==="changes"?"diff-add":"",children:[s.jsx("span",{children:"05"}),s.jsx("code",{children:" await refreshSession();"})]}),s.jsxs("div",{className:o==="changes"?"diff-add":"",children:[s.jsx("span",{children:"06"}),s.jsx("code",{children:" await resumeConnection();"})]}),s.jsxs("div",{className:o==="changes"?"diff-add":"",children:[s.jsx("span",{children:"07"}),s.jsx("code",{children:" } catch (error) {"})]}),s.jsxs("div",{className:o==="changes"?"diff-add":"",children:[s.jsx("span",{children:"08"}),s.jsx("code",{children:" scheduleRetry(error);"})]}),s.jsxs("div",{children:[s.jsx("span",{children:"09"}),s.jsx("code",{children:" }"})]}),s.jsxs("div",{children:[s.jsx("span",{children:"10"}),s.jsx("code",{children:"}"})]})]}),s.jsxs("div",{className:"panel-bottom",children:[s.jsx(a,{name:"branch",size:14}),s.jsx("span",{children:"codex/session-recovery"}),s.jsx("span",{className:"added",children:"+42"}),s.jsx("span",{className:"removed",children:"−12"})]})]})]})]})]}),D&&s.jsxs("div",{className:"toast",role:"status",children:[s.jsx(a,{name:"check",size:16}),D]}),_==="connect"&&s.jsx(ys,{source:t,gateway:d,close:()=>x(null),onConnect:(e,n)=>{m(e),w(n),G("online"),x(null),z(e==="official"?"已切换到官方服务演示":"已切换到自托管演示,未发起真实配对")}}),_==="new"&&s.jsx(Ss,{close:()=>x(null),create:(e,n,l)=>{const A=crypto.randomUUID();y(C=>[{id:A,title:e,project:n,agent:l,status:"running",detail:"新建演示任务",time:"刚刚"},...C]),x(null),g(A),z("已创建本地演示任务")}})]})}export{Es as Prototype};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@layer base{.acp-settings{display:grid;gap:16px;margin:20px 0;max-width:760px}.acp-settings h3,.acp-settings h4{margin:0}.acp-settings form,.acp-section{display:grid;gap:12px;padding:16px;background:var(--card);border-radius:18px}.acp-settings label{display:grid;gap:7px;font-size:13px;color:var(--secondaryLabel)}.acp-settings input:not([type=checkbox]),.acp-settings select,.acp-settings textarea{width:100%;border:1px solid var(--separator);border-radius:10px;padding:10px;color:var(--label);background:var(--background)}.acp-settings .choice-option{display:flex;align-items:center;gap:8px}.code-input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.6;resize:vertical}.protocol-asset{display:grid;gap:8px;max-width:100%}.protocol-asset audio{max-width:100%}.acp-editor{display:grid;gap:12px;padding:16px}.acp-editor textarea{width:100%;min-height:320px;max-height:65vh;padding:14px;border:1px solid var(--separator);border-radius:12px;color:var(--label);background:var(--card)}.live-overview h2{font-size:21px;margin:18px 0 12px}.live-overview h3{font-size:17px;margin:18px 0 12px}.live-overview .task-list h3{margin:0}.computer-select-label{display:block;font-size:12px;color:var(--secondaryLabel);padding:12px 3px}.computer-select-label select{display:block;width:100%;margin-top:8px;padding:10px;border:0;border-radius:12px;background:var(--card);color:var(--label)}.welcome-live{margin:auto;max-width:560px;text-align:center;padding:35px;display:flex;align-items:center;flex-direction:column;gap:20px}.welcome-live>img{width:76px;height:76px;border-radius:21px}.welcome-live h1{font-size:28px}.welcome-live pre{background:var(--card);padding:20px;border-radius:18px;font-size:14px;line-height:1.8;text-align:left;max-width:100%;overflow:auto}.new-form input:not([type=checkbox]):not([type=radio]),.new-form select,.new-form textarea,.settings-panel input,.settings-panel textarea,.settings-panel select,.new-form>label,.settings-panel>label,.settings-panel form>label{display:block;margin:16px 0 9px;font-size:13px}.new-form>label>input,.new-form>label>select,.new-form>label>textarea,.settings-panel label>input,.settings-panel label>select,.settings-panel label>textarea{margin-top:8px}.new-form>.button.full{margin-top:18px}.new-form p a{color:var(--accent)}.development-connect{margin-top:20px;font-size:12px}.development-connect form{display:flex;gap:8px;margin:15px 0}.development-connect input{min-width:0;width:100%;background:var(--card);border:1px solid var(--separator);border-radius:10px;padding:10px}.loading-copy{padding:18px 0}.question-field{border:0;padding:0;margin:18px 0}.question-field legend{font-size:14px;font-weight:600;line-height:1.6;margin-bottom:10px}.question-field legend small{font-weight:400;color:var(--secondaryLabel)}.choice-option{display:flex!important;align-items:flex-start;gap:9px;line-height:1.6;margin:9px 0!important;font-size:14px!important}.choice-option input{flex-shrink:0;width:16px;height:16px;accent-color:var(--accent);margin-top:4px}.choice-option small{display:block;font-size:12px;color:var(--secondaryLabel)}.permission-buttons{display:flex;flex-wrap:wrap;gap:9px;margin-top:15px}.form-error{white-space:pre-wrap;overflow-wrap:anywhere}.live-session .conversation{min-height:0}.live-session .message-queue{max-height:16dvh;overflow-y:auto}.live-session .attachment-list{max-height:12dvh;overflow-y:auto}.file-highlight-line{background:var(--accentSoft);outline:1px solid var(--accent)}.live-session{min-width:0}.live-session .session-subtitle{max-width:650px}.live-session .session-subtitle>span:not(.agent-mark):not(.separator){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.branch-chip{background:var(--accentSoft);color:var(--accent);padding:3px 6px;border-radius:8px}.danger-text{color:var(--danger)!important}.handoff-bar{padding:10px 26px;display:flex;align-items:center;gap:15px;font-size:12px;background:var(--accentSoft);color:var(--secondaryLabel)}.live-timeline>article,.live-timeline>.notice-card,.live-timeline>.plan-card{margin-bottom:22px}.live-timeline .user-message .markdown{margin-top:7px}.markdown{font-size:16px;line-height:1.65;overflow-wrap:anywhere}.markdown p{margin:0 0 12px}.markdown p:last-child{margin-bottom:0}.markdown h1,.markdown h2,.markdown h3{font-size:1.1em;line-height:1.5;margin:20px 0 10px}.markdown ul,.markdown ol{padding-left:24px;margin:12px 0}.markdown a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.markdown pre{white-space:pre;overflow:auto;max-width:100%;font-size:12px;line-height:1.7;background:var(--code);color:var(--codeText);padding:15px;border-radius:14px;margin:14px 0}.markdown :not(pre)>code{font-size:.87em;background:var(--fill);padding:2px 4px;border-radius:5px}.markdown blockquote{border-left:3px solid var(--separator);margin:12px 0;padding:4px 15px;color:var(--secondaryLabel)}.markdown table{display:block;overflow:auto;border-collapse:collapse;font-size:13px;margin:15px 0}.markdown td,.markdown th{border:1px solid var(--separator);padding:8px 12px}.message-image{max-width:100%;max-height:500px;object-fit:contain;border-radius:16px;margin:12px 0}.resource-chip{display:inline-flex;font-size:12px;color:var(--accent);background:var(--accentSoft);padding:6px 9px;margin:5px;border-radius:9px;overflow-wrap:anywhere}.message-fork{font-size:11px;color:var(--secondaryLabel);padding:5px 0;margin-top:8px}.message-fork:hover{color:var(--accent)}.thought-block{color:var(--secondaryLabel);margin:12px 0 20px;font-size:13px}.thought-block summary{cursor:pointer;padding:8px 0}.thought-block .markdown{font-size:14px;padding-left:12px;border-left:2px solid var(--separator)}.timeline-divider{text-align:center;font-size:11px;color:var(--secondaryLabel);margin:25px 0}.notice-card{background:var(--card);border-radius:18px;padding:18px;margin:15px 0;overflow-wrap:anywhere}.notice-card>strong,.notice-card>summary{font-size:14px;font-weight:600}.notice-card>p{line-height:1.7;margin-top:8px}.notice-card pre,.tool-record pre,.task-output pre,.service-status{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;font-size:12px;background:var(--code);color:var(--codeText);padding:13px;border-radius:12px}.notice-card.error{background:var(--dangerSoft)}.notice-card.warning{background:var(--waitingSoft)}.plan-card{padding:17px;background:var(--inset);border-radius:16px;font-size:14px}.plan-card ul{list-style:none;padding:0;margin:10px 0 0}.plan-card li{display:flex;gap:10px;line-height:1.7;margin-top:7px}.plan-card li>span{color:var(--accent)}.tool-record{background:var(--inset);border-radius:16px;margin-bottom:14px;padding:13px}.tool-record>summary{list-style:none;display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px}.tool-record>summary>strong{flex:1;min-width:0;overflow-wrap:anywhere;font-weight:500}.tool-record>summary>small{font-size:10px;color:var(--secondaryLabel)}.tool-record>summary::-webkit-details-marker{display:none}.tool-record>summary:after{content:"⌄";color:var(--secondaryLabel)}.tool-state{color:var(--accent);flex-shrink:0}.completed>.tool-state,.completed>summary>.tool-state{color:var(--ok)}.failed>summary>.tool-state{color:var(--danger)}.tool-record>p{font-size:12px;margin-top:12px}.tool-record details{font-size:12px;margin-top:12px}.diff-block{background:var(--inset);border-radius:12px;margin:15px 0;overflow:hidden}.diff-block summary{cursor:pointer;padding:12px;font-size:12px;overflow-wrap:anywhere}.diff-block>pre{font-size:11px;line-height:1.7;padding:12px;margin:0;white-space:pre;overflow:auto}.diff-add-line{background:var(--diffAdd);color:var(--diffAddText);display:inline-block;min-width:100%}.diff-remove-line{background:var(--diffDel);color:var(--diffDelText);display:inline-block;min-width:100%}.before-after{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--separator)}.before-after>div{min-width:0;background:var(--plain)}.before-after small{display:block;padding:8px 12px;color:var(--secondaryLabel)}.before-after pre{font-size:11px;white-space:pre;overflow:auto;margin:0;padding:12px;line-height:1.8}.live-side-panel{border-left:.5px solid var(--separator);background:var(--card);display:flex;min-width:0;min-height:0;flex-direction:column}.live-side-panel>.browser-toolbar{border-bottom:.5px solid var(--separator);padding:10px 13px;margin:0}.side-panel-content{padding:16px;overflow:auto;flex:1;min-height:0}.side-panel-content h3{font-size:15px;margin-bottom:12px}.side-panel-content>.muted,.side-panel-content section>.muted{font-size:12px;margin:10px 0}.settings-panel p{font-size:12px;overflow-wrap:anywhere}.settings-panel textarea{resize:vertical}.settings-panel form>.button{margin-top:14px}.inline-form{display:flex;gap:8px;align-items:center;margin:15px 0}.inline-form input{flex:1}.browser-toolbar{display:flex;align-items:center;gap:10px;margin:15px 0;flex-wrap:wrap}.browser-toolbar>strong,.browser-toolbar>h2{margin:0 auto 0 0}.browser-toolbar .muted{font-size:12px}.browser-toolbar>input{max-width:300px}.browser-toolbar>label{font-size:11px;display:flex;gap:4px;align-items:center;white-space:nowrap}.path-label{flex:1;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow-wrap:anywhere;min-width:70px}.file-browser-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.remote-file-list{background:var(--card);border-radius:16px;overflow:hidden}.remote-file-list button{width:100%;display:flex;align-items:center;gap:8px;text-align:left;padding:12px;font-size:13px}.remote-file-list button>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.remote-file-list button small{color:var(--secondaryLabel);font-size:10px}.remote-file-list button svg{color:var(--accent)}.remote-file-list button:hover,.remote-file-list button.selected{background:var(--accentSoft)}.reader-meta{display:flex;gap:10px;align-items:center;font-size:13px;margin:15px 0}.reader-meta>span{margin-left:auto;color:var(--secondaryLabel);font-size:11px}.source-code{white-space:pre;overflow:auto;max-height:65vh;font-family:ui-monospace,Menlo,monospace;font-size:12px;line-height:1.8;background:var(--code);color:var(--codeText);padding:16px;border-radius:16px}.file-image{max-width:100%;max-height:65vh;object-fit:contain}.file-actions{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.file-reader{min-width:0}.message-queue{border-radius:14px;background:var(--accentSoft);padding:10px 12px;margin-bottom:10px;font-size:12px;max-height:150px;overflow:auto}.message-queue>strong{display:block;font-size:11px;margin-bottom:8px;color:var(--accent)}.message-queue>div{display:flex;align-items:center;gap:6px;padding:6px 0}.message-queue>div>span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.message-queue button{font-size:10px;color:var(--accent);flex-shrink:0}.context-meter{font-size:10px;color:var(--secondaryLabel)}.activity-list article{background:var(--inset);padding:12px;border-radius:14px;margin:12px 0}.activity-list article>button:first-child{display:flex;align-items:flex-start;flex-direction:column;gap:8px;text-align:left;width:100%}.activity-list strong{font-size:13px;font-weight:500;line-height:1.7}.activity-list small{font-size:11px;color:var(--secondaryLabel);overflow-wrap:anywhere}.activity-list details{font-size:12px;margin-top:10px}.activity-list pre{font-size:10px;white-space:pre-wrap;overflow-wrap:anywhere}.terminal-tabs{display:flex;gap:9px;flex-wrap:wrap;margin:16px 0}.terminal-tabs>div,.terminal-tabs>button{display:flex;align-items:center;gap:8px;background:var(--card);padding:7px 12px;border-radius:12px;font-size:13px}.terminal-tabs .selected{color:var(--accent);background:var(--accentSoft)}.terminal-tabs>div>button:first-child{display:block;text-align:left}.terminal-tabs small{display:block;font-size:10px;color:var(--secondaryLabel);margin-top:5px}.terminal-live{background:var(--code);color:var(--codeText);border-radius:16px;padding:12px;min-height:300px;height:55vh;display:flex;flex-direction:column;overflow:hidden}.xterm-mount{flex:1;min-height:0;width:100%;min-width:0}.terminal-live>.form-error{font-size:12px;color:#ff9a9a}.inline-terminal{margin:0 20px}.inline-terminal>.browser-toolbar{margin:3px 0;font-size:11px}.inline-terminal .terminal-live{height:200px;min-height:160px}.screen-page,.ports-page{height:100%;min-height:500px;display:flex;flex-direction:column}.screen-page iframe,.port-frame{flex:1;width:100%;min-height:500px;border:0;border-radius:20px;background:#000}.port-frame{background:var(--plain)}.computer-live-preview{width:100%;border-radius:14px}.agent-list{background:var(--card);border-radius:18px;padding:8px}.agent-list article{display:flex;gap:13px;padding:13px}.agent-list strong{font-size:14px}.agent-list p{font-size:12px;color:var(--secondaryLabel);margin-top:5px}.side-panel-content .file-actions{gap:5px}.side-panel-content .button{font-size:11px;min-height:33px;padding:8px 10px}.side-panel-content .browser-toolbar>label{font-size:10px}.side-panel-content .browser-toolbar{gap:7px}.live-session .session-layout.with-panel{grid-template-columns:minmax(0,1fr) 350px}.live-session .task-list .approval-card{margin:10px}.live-session .composer-caption span{font-size:10px}@media(max-width:1100px){.live-session .session-layout.with-panel{grid-template-columns:minmax(0,1fr) 310px}.live-session .session-subtitle{max-width:420px}.live-session .session-title h1{font-size:19px}.live-session .session-title .badge{display:none}}@media(max-width:990px){.live-session .session-layout.with-panel{grid-template-columns:minmax(0,1fr)}.live-side-panel{position:absolute;right:0;top:0;bottom:0;width:min(380px,100%);z-index:5;box-shadow:-10px 0 30px #0002}.markdown,.user-message p{font-size:15px}.live-session .session-subtitle{max-width:340px}.browser-toolbar>input{max-width:220px}}@media(max-width:720px){.welcome-live{padding:25px;gap:18px}.welcome-live h1{font-size:25px}.welcome-live p{font-size:14px}.topbar-right>.button{min-height:32px;font-size:11px;padding:7px 11px}.live-session .session-heading{padding:16px}.live-session .session-title h1{font-size:18px}.live-session .session-subtitle{max-width:220px}.live-session .session-subtitle>span:not(.agent-mark):not(.separator){max-width:150px}.question-field>input,.new-form input:not([type=checkbox]),.new-form textarea{font-size:16px}.markdown{font-size:16px}.browser-toolbar>input{max-width:100%}.terminal-live{height:50vh;min-height:260px}.screen-page iframe,.port-frame{min-height:450px}.inline-terminal{margin:0 12px}.context-meter{display:none}.composer-agent{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.live-side-panel,.inline-form{width:100%}.inline-form .button{min-height:37px;padding:8px 12px;font-size:12px}.message-queue>div{flex-wrap:wrap}.message-queue>div>span{min-width:100%}.before-after{grid-template-columns:1fr}}.qr-video{display:block;width:100%;max-height:240px;margin:15px 0;border-radius:16px;object-fit:cover}.qr-scan{margin-bottom:18px}.workflow-agent{border-top:.5px solid var(--separator);padding:12px 0;display:flex;flex-direction:column;align-items:flex-start;gap:7px}.workflow-agent p{font-size:12px;line-height:1.7;white-space:pre-wrap}.workflow-phase{font-size:12px;margin:8px 0;font-weight:600}.workflow-agent small{color:var(--secondaryLabel)}}/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--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-outline-style:solid;--tw-duration: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-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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-black:#000;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-xl:36rem;--container-5xl:64rem;--text-xs--line-height:calc(1 / .75);--text-sm--line-height:calc(1.25 / .875);--text-base--line-height: 1.5 ;--font-weight-normal:400;--font-weight-medium:500;--tracking-widest:.1em;--leading-snug:1.375;--leading-normal:1.5;--radius-md:10px;--blur-xs:4px;--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,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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;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:where(:not(iframe)){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}*{border-color:var(--separator)}:root{font-synthesis:none;color:var(--label);background:var(--background);--radius-card:22px;--radius-row:16px;--radius-control:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit;color:inherit}button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:0 0;border:0;transition:background .16s,opacity .16s,transform .16s}button:disabled{opacity:.45;cursor:not-allowed}button:active:not(:disabled){transform:scale(.985)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}svg{vertical-align:middle;flex-shrink:0}code,pre,kbd{font-family:ui-monospace,Menlo,Consolas,monospace}::selection{background:var(--accentSoft)}input::placeholder,textarea::placeholder{color:var(--secondaryLabel);opacity:.8}.muted{color:var(--secondaryLabel);line-height:1.65}.app-shell{grid-template-columns:246px minmax(0,1fr);height:100dvh;min-height:500px;display:grid}.sidebar{background:var(--background);border-right:1px solid var(--separator);flex-direction:column;min-height:0;padding:22px 16px 0;display:flex;overflow-y:auto}.brand{letter-spacing:-.7px;align-items:center;gap:10px;margin-bottom:24px;padding:0 8px;font-size:23px;font-weight:700;display:flex}.brand-symbol{border-radius:10px;width:36px;height:36px}.brand-web{letter-spacing:0;color:var(--secondaryLabel);background:var(--fill);border-radius:6px;align-self:center;padding:3px 6px;font-size:10px;font-weight:500}.connection-switch{text-align:left;background:var(--card);border-radius:16px;align-items:center;gap:9px;width:100%;margin-bottom:16px;padding:12px 10px;display:flex}.connection-switch>span:nth-child(2){flex:1;min-width:0}.connection-switch strong{font-size:13px;font-weight:600;display:block}.connection-switch small{color:var(--secondaryLabel);margin-top:4px;font-size:11px;display:block}.connection-switch>svg{color:var(--secondaryLabel)}.source-icon{width:29px;height:32px;color:var(--accent);place-items:center;display:grid}.button{white-space:nowrap;border-radius:22px;justify-content:center;align-items:center;gap:7px;min-height:40px;padding:9px 17px;font-size:14px;font-weight:600;display:inline-flex}.primary{background:var(--accent);color:#fff}.primary:hover:not(:disabled){filter:brightness(.96)}.secondary{background:var(--fill);color:var(--label)}.secondary:hover:not(:disabled){background:var(--fillStrong)}.new-task{background:var(--accent);color:#fff;width:100%;min-height:40px;margin-bottom:21px}.new-task-corner{display:none}nav{gap:4px;display:grid}.nav-item{width:100%;min-height:40px;color:var(--secondaryLabel);text-align:left;border-radius:12px;align-items:center;gap:10px;padding:0 11px;display:flex}.nav-item svg{color:var(--accent)}.nav-item:hover,.recent-task:hover{background:var(--fill)}.nav-item.active{background:var(--accentSoft);color:var(--accent);font-weight:600}.nav-count{background:var(--accentSoft);border-radius:6px;margin-left:auto;padding:2px 6px;font-size:11px;font-weight:500}.nav-item>.online-dot{margin-left:auto}.nav-section-label{color:var(--secondaryLabel);justify-content:space-between;margin:23px 0 8px;padding:0 12px;font-size:12px;font-weight:600;display:flex}.nav-section-label span{font-weight:400}.project-nav{min-height:35px;font-size:13px}.project-nav>svg:last-child{color:var(--tertiaryLabel);margin-left:auto}.recent-list{padding:1px 0 6px 13px}.recent-task{text-align:left;width:100%;min-height:34px;color:var(--secondaryLabel);border-radius:10px;align-items:center;gap:8px;padding:7px 9px;font-size:12px;display:flex}.recent-task>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.recent-task.selected{color:var(--accent);background:var(--accentSoft)}.tiny-status,.status-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.tiny-status.running{background:var(--running)}.tiny-status.waiting{background:var(--waiting)}.tiny-status.done{background:var(--ok)}.sidebar-bottom{margin-top:auto;padding-top:18px}.host-presence{color:var(--secondaryLabel);align-items:center;gap:8px;padding:11px 8px;font-size:11px;display:flex}.host-presence small{margin-left:auto;font-size:10px}.online-dot,.offline-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block}.online-dot{background:var(--ok)}.offline-dot{background:var(--waiting)}.profile-button{text-align:left;border-top:1px solid var(--separator);align-items:center;gap:9px;width:100%;padding:15px 3px 18px;display:flex}.avatar{background:var(--accentSoft);width:32px;height:32px;color:var(--accent);border-radius:50%;place-items:center;font-weight:600;display:grid}.profile-button>span:nth-child(2){flex:1}.profile-button strong{font-size:12px;font-weight:600;display:block}.profile-button small{color:var(--secondaryLabel);margin-top:4px;font-size:10px;display:block}.profile-button>svg{color:var(--secondaryLabel)}.main{flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.topbar{border-bottom:1px solid var(--separator);background:var(--background);flex-shrink:0;justify-content:space-between;align-items:center;height:58px;padding:0 32px;display:flex}.breadcrumbs{color:var(--secondaryLabel);align-items:center;gap:12px;font-size:12px;display:flex}.breadcrumbs strong{color:var(--label);font-weight:500}.breadcrumb-slash{color:var(--tertiaryLabel)}.topbar-right{align-items:center;gap:12px;display:flex}.demo-tag{color:var(--secondaryLabel);background:var(--fill);border-radius:6px;padding:4px 8px;font-size:11px}.demo-tag>span{display:none}.icon-button{width:34px;height:34px;color:var(--secondaryLabel);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.icon-button:hover,.icon-button.pressed{background:var(--fill);color:var(--accent)}.mobile-menu{display:none}.overview{flex:1;width:100%;padding:34px max(32px,50% - 510px) 24px;overflow-y:auto}.page-heading{justify-content:space-between;align-items:center;gap:15px;margin-bottom:25px;display:flex}.page-heading h1{letter-spacing:-.8px;font-size:30px;font-weight:700;line-height:1.25}.page-heading .muted{margin-top:9px;font-size:14px}.host-summary{color:var(--secondaryLabel);align-items:center;gap:6px;margin-top:10px;font-size:13px;display:flex}.waiting-copy,.waiting-heading h2{color:var(--waiting)}.waiting-copy{font-weight:600}.home-controls{justify-content:space-between;align-items:center;gap:20px;margin-bottom:27px;display:flex}.search-box{background:var(--fill);min-height:40px;color:var(--secondaryLabel);border-radius:12px;flex:1;align-items:center;gap:9px;max-width:390px;padding:0 13px;display:flex}.search-box input{background:0 0;border:0;outline:none;width:100%;min-width:0;padding:10px 0;font-size:13px}.search-box:focus-within{box-shadow:0 0 0 2px var(--accent)}.search-box input:focus-visible{outline:none}.search-box kbd{white-space:nowrap;color:var(--secondaryLabel);background:var(--card);border-radius:4px;padding:3px 4px;font-size:10px}.filters{background:var(--fill);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.filters button{white-space:nowrap;color:var(--secondaryLabel);border-radius:8px;padding:7px 12px;font-size:12px}.filters button.selected{background:var(--card);color:var(--label);font-weight:600;box-shadow:0 1px 4px #00000012}.session-group{margin-bottom:25px}.section-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:11px;padding:0 4px;display:flex}.section-heading h2{align-items:center;gap:9px;font-size:17px;font-weight:600;display:flex}.section-heading h2>span{background:var(--fill);min-width:20px;height:20px;color:var(--secondaryLabel);border-radius:7px;justify-content:center;align-items:center;font-size:11px;font-weight:500;display:inline-flex}.waiting-heading h2>span{background:var(--waitingSoft);color:var(--waiting)}.section-note{color:var(--secondaryLabel);font-size:12px}.attention-card{background:var(--card);border-radius:24px;margin-bottom:14px;padding:16px;box-shadow:0 0 0 1px #e8830c47,0 6px 20px #e8830c0b}.attention-title{text-align:left;align-items:center;gap:12px;width:100%;padding:2px 0 14px;display:flex}.attention-title>span:nth-child(2){flex:1;min-width:0}.attention-title strong{white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:600;display:block;overflow:hidden}.attention-title small{color:var(--secondaryLabel);margin-top:5px;font-size:12px;display:block}.attention-title time{color:var(--secondaryLabel);font-size:12px}.attention-title>svg{color:var(--tertiaryLabel)}.agent-mark{background:#f4f1ea;border-radius:26%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex;overflow:hidden;box-shadow:inset 0 0 0 .5px #00000012}.agent-mark img{width:62%;height:62%}.agent-mark.full-mark{background:0 0}.agent-mark.full-mark img{width:100%;height:100%}:root[data-theme=dark] .agent-mark.claude{background:#2a2926}.permission-preview{background:var(--waitingSoft);border-radius:16px;padding:12px 14px}.permission-preview>div{align-items:center;gap:7px;display:flex}.permission-preview svg{color:var(--waiting)}.permission-preview strong{font-size:14px;font-weight:600}.permission-preview code{overflow-wrap:anywhere;color:var(--codeText);margin-top:9px;font-size:12px;line-height:1.6;display:block}.attention-actions{justify-content:flex-end;align-items:center;gap:9px;margin-top:13px;display:flex}.attention-actions .text-button{margin-right:auto;font-size:13px}.attention-actions .button{min-height:36px;padding:8px 20px;font-size:13px}.task-list{background:var(--card);border-radius:20px;overflow:hidden}.task-row{text-align:left;align-items:center;gap:12px;width:100%;padding:17px;display:flex;position:relative}.task-row:not(:last-child):after{content:"";background:var(--separator);height:.5px;position:absolute;bottom:0;left:63px;right:0}.task-row:hover{background:var(--accentSoft)}.row-avatar{display:flex;position:relative}.row-avatar>.tiny-status{border:2px solid var(--card);width:10px;height:10px;position:absolute;bottom:-2px;right:-2px}.task-info{flex:1;min-width:0}.task-info strong{white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:600;line-height:1.4;display:block;overflow:hidden}.task-info>span{color:var(--secondaryLabel);white-space:nowrap;align-items:center;gap:4px;margin-top:5px;font-size:13px;display:flex;overflow:hidden}.task-info>span>span:last-child{text-overflow:ellipsis;overflow:hidden}.project-label{font-weight:500}.separator{color:var(--tertiaryLabel);padding:0 2px}.running-copy{color:var(--running)}.task-meta{color:var(--secondaryLabel);flex-direction:column;flex-shrink:0;align-items:flex-end;gap:7px;font-size:11px;display:flex}.task-meta small{font-size:12px}.task-row>svg{color:var(--tertiaryLabel)}.badge{white-space:nowrap;color:var(--secondaryLabel);background:var(--fill);border-radius:8px;align-items:center;gap:5px;padding:4px 7px;font-size:11px;display:inline-flex}.badge.waiting{color:var(--waiting);background:var(--waitingSoft)}.badge.running{color:var(--running);background:var(--accentSoft)}.badge.done{color:var(--ok);background:var(--okSoft)}.page-footer{color:var(--secondaryLabel);align-items:center;gap:7px;padding:2px 4px 10px;font-size:11px;display:flex}.page-footer>span:last-child{margin-left:auto}.connection-banner{color:var(--waiting);background:var(--waitingSoft);align-items:center;gap:10px;padding:12px 28px;font-size:12px;line-height:1.6;display:flex}.connection-banner>span{flex:1}.connection-banner>button{color:var(--accent);flex-shrink:0;font-size:12px;font-weight:500}.connection-detail-card{border-radius:var(--radius-card);background:var(--card);align-items:center;gap:22px;padding:26px;display:flex}.large-source-icon{background:var(--accentSoft);width:64px;height:64px;color:var(--accent);border-radius:18px;place-items:center;display:grid}.connection-detail-card>div{flex:1;min-width:0}.eyebrow{color:var(--secondaryLabel);letter-spacing:.4px;font-size:11px;font-weight:500}.connection-detail-card h2{margin:7px 0 10px;font-size:20px;font-weight:600}.connection-detail-card code{color:var(--secondaryLabel);overflow-wrap:anywhere;font-size:12px}.connection-detail-card p{margin-top:12px;font-size:13px}.computer-table{background:var(--card);border-radius:20px;margin-top:22px;padding:22px}.computer-table>div{align-items:center;gap:19px;display:flex}.computer-table>div>svg{color:var(--accent)}.computer-table strong{font-size:16px;font-weight:600}.computer-table small{color:var(--secondaryLabel);margin-top:5px;font-size:12px;display:block}.computer-table .muted{font-size:13px}.computer-table .button{margin-left:auto}.deployment-note{color:var(--secondaryLabel);align-items:flex-start;gap:11px;max-width:750px;padding:24px 8px;display:flex}.deployment-note strong{font-size:13px;font-weight:500}.deployment-note p{margin-top:8px;font-size:12px;line-height:1.8}.session-page{background:var(--plain);border-radius:22px;flex-direction:column;flex:1;min-height:0;margin:12px;display:flex;overflow:hidden}.session-heading{border-bottom:.5px solid var(--separator);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:22px 28px 18px;display:flex}.session-title{align-items:center;gap:12px;display:flex}.session-title h1{letter-spacing:-.5px;overflow-wrap:anywhere;font-size:22px;font-weight:700;line-height:1.35}.session-subtitle{color:var(--secondaryLabel);align-items:center;gap:6px;margin-top:10px;font-size:12px;display:flex}.session-subtitle .agent-mark{width:20px;height:20px}.session-actions{flex-shrink:0;gap:7px;display:flex}.session-actions .icon-button{background:var(--fill);color:var(--label);width:38px;height:38px}.session-actions .pressed{color:var(--accent);background:var(--accentSoft)}.session-layout{flex:1;grid-template-columns:minmax(0,1fr);min-height:0;display:grid}.session-layout.with-panel{grid-template-columns:minmax(0,1fr) 320px}.conversation-column{flex-direction:column;min-width:0;min-height:0;display:flex}.conversation{scroll-behavior:smooth;flex:1;padding:25px max(28px,50% - 380px) 30px;overflow-y:auto}.date-divider{text-align:center;color:var(--secondaryLabel);margin-bottom:25px;font-size:11px}.user-message{background:var(--userBubble);border-radius:22px;max-width:88%;margin:0 0 28px auto;padding:14px 18px}.message-label{color:var(--secondaryLabel);align-items:center;gap:9px;font-size:12px;font-weight:500;display:flex}.message-label small{font-size:11px;font-weight:400}.user-message p{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:7px;font-size:16px;line-height:1.65}.assistant-message{max-width:800px;margin:0 auto}.async-questions{gap:12px;margin-top:12px;display:grid}.async-questions small,.question-reply small{color:var(--secondaryLabel);margin-bottom:6px;font-size:12px;display:block}.async-options{flex-wrap:wrap;gap:8px;display:flex}.async-options button{background:var(--fill);min-height:40px;color:var(--label);border-radius:20px;padding:0 16px;font-size:14px}.async-options button:disabled:not(.chosen){opacity:.45}.async-options button.chosen{background:var(--accent);color:#fff}.question-reply+.question-reply{margin-top:10px}.message-author{align-items:center;gap:9px;margin-bottom:16px;display:flex}.message-author .agent-mark{width:27px;height:27px}.message-author strong{font-size:14px;font-weight:600}.message-author>span:last-child{color:var(--secondaryLabel);font-size:11px}.assistant-message>p{color:var(--label);white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:16px;font-size:16px;line-height:1.7}.plan-list{color:var(--label);margin:0 0 22px;padding-left:22px;font-size:15px;line-height:1.8}.plan-list li{margin-bottom:4px;padding-left:3px}.tool-call{text-align:left;background:var(--inset);width:100%;color:var(--secondaryLabel);border-radius:14px;align-items:center;gap:9px;padding:13px 14px;font-size:13px;display:flex}.tool-call>small{margin-left:auto;font-size:11px}.tool-check{background:var(--okSoft);width:20px;height:20px;color:var(--ok);border-radius:50%;place-items:center;display:grid}.tool-output{background:var(--inset);color:var(--codeText);border-radius:0 0 14px 14px;margin-top:-8px;padding:16px;font-size:12px;line-height:1.9}.tool-output p{color:var(--secondaryLabel);margin-top:10px;font-size:11px}.change-summary{color:var(--secondaryLabel);align-items:center;gap:9px;margin:13px 0 22px;font-size:12px;display:flex}.change-summary button{color:var(--accent);margin-right:auto;padding:0;font-size:12px}.added{color:var(--diffAddText)}.removed{color:var(--diffDelText)}.approval-card{background:var(--card);border:1px solid #e8830c47;border-radius:22px;margin:23px 0;padding:15px;box-shadow:0 6px 20px #e8830c0a}.approval-heading{align-items:center;gap:10px;margin-bottom:13px;display:flex}.approval-icon{color:var(--waiting);background:var(--waitingSoft);border-radius:12px;place-items:center;width:34px;height:34px;display:grid}.approval-heading>div{flex:1}.approval-heading strong{font-size:15px;font-weight:600;display:block}.approval-heading>div>span{color:var(--secondaryLabel);margin-top:5px;font-size:11px;line-height:1.6;display:block}.approval-card pre{color:var(--codeText);background:var(--waitingSoft);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:14px;margin:0 0 14px;padding:14px;font-size:12px;line-height:1.7}.approval-footer{align-items:center;gap:8px;display:flex}.approval-footer>span{color:var(--secondaryLabel);margin-right:auto;font-size:11px}.approval-footer .button{min-height:36px;padding:8px 15px;font-size:12px}.reply{padding:12px 0 20px}.reply p{margin-top:10px}.composer-wrap{background:var(--plain);flex-shrink:0;padding:12px 24px 14px}.composer{border:.5px solid var(--separator);background:var(--inset);border-radius:26px;padding:13px 13px 10px;box-shadow:0 3px 16px #00000005}.composer:focus-within{border-color:var(--accent)}.composer textarea{resize:none;background:0 0;border:0;outline:none;width:100%;min-height:52px;padding:2px 7px;font-size:15px;line-height:1.6;display:block}.composer textarea:focus-visible{outline:none}.composer-toolbar{justify-content:space-between;align-items:center;display:flex}.composer-toolbar>div{align-items:center;gap:8px;display:flex}.composer-agent{background:var(--fill);color:var(--secondaryLabel);border-radius:10px;align-items:center;padding:5px 8px;font-size:11px;display:inline-flex}.send-button{background:var(--accent);color:#fff;border-radius:50%;place-items:center;width:34px;height:34px;display:grid}.send-button:disabled{color:var(--secondaryLabel);background:var(--fillStrong)}.composer-caption{color:var(--secondaryLabel);justify-content:space-between;padding:9px 7px 0;font-size:10px;display:flex}.attachment-list{flex-wrap:wrap;gap:7px;margin:0 5px 10px;display:flex}.attachment-list>span{background:var(--card);overflow-wrap:anywhere;border-radius:8px;align-items:center;gap:6px;max-width:100%;padding:5px 8px;font-size:11px;display:flex}.attachment-list button{padding:2px;display:flex}.file-panel{background:var(--card);border-left:.5px solid var(--separator);flex-direction:column;min-width:0;display:flex;overflow-y:auto}.panel-tabs{border-bottom:.5px solid var(--separator);flex-shrink:0;align-items:center;gap:8px;height:52px;padding:0 13px;display:flex}.panel-tabs>button:not(.icon-button){color:var(--secondaryLabel);border-radius:10px;align-items:center;gap:5px;padding:7px 10px;font-size:12px;display:flex}.panel-tabs>button.selected{color:var(--accent);background:var(--accentSoft);font-weight:600}.panel-tabs>button>span{font-size:10px}.panel-tabs .icon-button{margin-left:auto}.panel-project{align-items:center;gap:7px;padding:18px 15px 12px;font-size:12px;display:flex}.panel-project>span{color:var(--secondaryLabel);margin-left:auto;font-size:10px}.file-list{padding:0 8px 15px}.file-list button{text-align:left;width:100%;color:var(--secondaryLabel);border-radius:9px;align-items:center;gap:8px;padding:10px 8px;font-size:11px;display:flex}.file-list button.selected{color:var(--accent);background:var(--accentSoft)}.file-list button span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-list small{margin-left:auto;font-size:10px}.diff-heading{color:var(--secondaryLabel);background:var(--inset);justify-content:space-between;gap:6px;padding:12px 15px;font-size:11px;display:flex}.code-preview{flex:1;padding:15px 0;font-size:10px;line-height:2.2;overflow-x:auto}.code-preview>div{white-space:pre;min-width:max-content;display:flex}.code-preview>div>span{text-align:right;width:32px;color:var(--secondaryLabel);flex-shrink:0;padding:0 8px}.code-preview code{color:var(--codeText);padding-right:13px}.code-preview .diff-add{background:var(--diffAdd)}.code-preview .diff-add code{color:var(--diffAddText)}.code-preview .diff-remove{background:var(--diffDel)}.code-preview .diff-remove code{color:var(--diffDelText)}.panel-bottom{border-top:.5px solid var(--separator);color:var(--secondaryLabel);align-items:center;gap:6px;padding:14px 11px;font-size:10px;display:flex}.panel-bottom>span:nth-child(2){white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.terminal-panel{color:#dddde6;background:#17181d;border-radius:16px;flex-direction:column;flex-shrink:0;max-height:180px;margin:0 24px;display:flex;overflow:hidden}.terminal-heading{background:#22232a;justify-content:space-between;align-items:center;padding:5px 12px;font-size:11px;display:flex}.terminal-heading>span{align-items:center;gap:6px;display:flex}.terminal-demo{color:#a0a1ad;margin-left:10px;font-size:10px}.terminal-heading .icon-button{color:#a6a7b3;width:26px;height:26px}.terminal-output{padding:12px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:1.9;overflow-y:auto}.terminal-output p{overflow-wrap:anywhere}.terminal-green{color:#7fddb4}.terminal-blue{color:#7d95ff}.terminal-output form{align-items:center;gap:8px;display:flex}.terminal-output input{background:0 0;border:0;outline:none;flex:1;min-width:0;padding:4px 0;font-family:inherit;font-size:11px}.modal-subtitle{margin-bottom:23px;font-size:14px}.source-options{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px;display:grid}.source-option{background:var(--sheetCard);text-align:left;border:1.5px solid #0000;border-radius:18px;flex-direction:column;align-items:flex-start;gap:10px;padding:17px 14px;display:flex;position:relative}.source-option>svg{color:var(--accent)}.source-option.selected{border-color:var(--accent);background:var(--accentSoft)}.source-option strong{font-size:14px;font-weight:600}.source-option>span:not(.selection-dot){color:var(--secondaryLabel);font-size:11px;line-height:1.6}.selection-dot{border:1px solid var(--separator);border-radius:50%;width:13px;height:13px;position:absolute;top:17px;right:13px}.selected .selection-dot{border:4px solid var(--accent);background:var(--card)}.official-entry{text-align:center;padding:13px 8px 24px}.entry-symbol{background:var(--accentSoft);width:60px;height:60px;color:var(--accent);border-radius:18px;place-items:center;margin:0 auto 16px;display:grid}.official-entry h3{margin-bottom:12px;font-size:17px;font-weight:600}.official-entry p{color:var(--secondaryLabel);max-width:360px;margin:auto;font-size:13px;line-height:1.8}.official-entry code{color:var(--codeText);font-size:12px}.endpoint{color:var(--secondaryLabel);background:var(--fill);border-radius:9px;align-items:center;gap:7px;margin-top:18px;padding:8px 10px;font-size:12px;display:inline-flex}.endpoint>.status-dot{color:var(--ok)}.endpoint>span:last-child{border-left:.5px solid var(--separator);padding-left:8px;font-size:10px}.full{width:100%}.prototype-note{color:var(--secondaryLabel);text-align:center;margin-top:13px;font-size:11px;line-height:1.8}.pairing-form label,.new-form>label{margin-bottom:9px;font-size:13px;font-weight:500;display:block}.pairing-form input,.new-form textarea,.new-form select{border:1px solid var(--separator);background:var(--sheetCard);border-radius:12px;width:100%;padding:12px 13px;font-size:14px}.field-hint{color:var(--secondaryLabel);margin:9px 0 21px;font-size:11px;line-height:1.8}.pairing-form .code-input{letter-spacing:12px;font-family:ui-monospace,Menlo,monospace;font-size:22px}.private-note{color:var(--secondaryLabel);background:var(--fill);border-radius:16px;align-items:flex-start;gap:10px;margin:14px 0 20px;padding:14px;font-size:12px;line-height:1.8;display:flex}.private-note>svg{color:var(--accent);margin-top:2px}.private-note strong{color:var(--label);font-weight:600}.form-error{color:var(--danger);margin-bottom:15px;font-size:12px;line-height:1.7}.new-form textarea{resize:vertical;min-height:115px;line-height:1.7}.form-columns{grid-template-columns:1fr 1fr;gap:15px;margin-top:20px;display:grid}.form-columns label{font-size:13px}.form-columns select{margin-top:8px}.computer-inline{color:var(--secondaryLabel);align-items:center;gap:8px;padding:21px 0;font-size:12px;display:flex}.computer-inline>.online-dot{margin-left:auto}.toast{z-index:50;background:var(--label);color:var(--plain);border-radius:18px;align-items:center;gap:9px;max-width:calc(100vw - 32px);padding:13px 20px;font-size:13px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 5px 30px #00000020}.empty-state{text-align:center;color:var(--secondaryLabel);padding:65px 15px}.empty-state h3{color:var(--label);margin:17px 0 10px;font-size:17px;font-weight:600}.empty-state p{font-size:14px}.text-button{color:var(--accent);align-items:center;gap:4px;padding:5px 0;font-size:13px;display:inline-flex}.empty-state .text-button{margin-top:14px}.page-enter{animation:.2s ease-out enter}@keyframes enter{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1600px){.session-layout.with-panel{grid-template-columns:minmax(0,1fr) 360px}.composer-wrap{align-self:center;width:100%;max-width:850px}}@media(max-width:1180px){.app-shell{grid-template-columns:220px minmax(0,1fr)}.sidebar{padding:20px 12px 0}.brand{gap:8px;font-size:22px}.overview{padding:28px 26px 24px}.home-controls{gap:15px}.filters button{padding:7px 9px}.session-layout.with-panel{grid-template-columns:minmax(0,1fr) 280px}.conversation{padding:23px 25px}.session-heading{padding:20px 24px 17px}.session-title h1{font-size:20px}.session-subtitle{font-size:11px}.approval-heading>.badge{display:none}.task-info>span{font-size:12px}.task-info strong{font-size:15px}}@media(max-width:990px){.home-controls{flex-direction:column;align-items:stretch;gap:13px}.search-box{max-width:none}.filters{align-self:flex-start}.filters button{padding:7px 15px}.section-note{display:none}.session-layout{position:relative}.session-layout.with-panel{grid-template-columns:minmax(0,1fr)}.file-panel{z-index:4;width:300px;position:absolute;top:0;bottom:0;right:0;box-shadow:-10px 0 30px #00000012}.session-title{gap:8px}.session-subtitle{flex-wrap:wrap}.connection-detail-card{flex-wrap:wrap;padding:22px}.connection-detail-card>.button{margin-left:auto}.computer-table>div{flex-wrap:wrap;gap:15px}.computer-table .muted,.breadcrumb-task{display:none}.topbar{padding:0 22px}.topbar-right{gap:8px}.connection-banner{padding:12px 20px}}@media(max-width:720px){.app-shell{min-height:0;display:block}.sidebar{z-index:10;visibility:hidden;width:246px;transition:transform .2s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.nav-open .sidebar{visibility:visible;transform:translate(0)}.nav-backdrop{z-index:9;background:#00000035;position:fixed;inset:0}.main{height:100dvh}.topbar{height:54px;padding:0 15px}.mobile-menu{margin-left:-5px;display:flex}.breadcrumbs{gap:8px;font-size:11px}.breadcrumbs>span:first-of-type,.breadcrumbs>.breadcrumb-slash:first-of-type{display:none}.topbar-right{gap:6px}.topbar-right>.icon-button:not(.theme-switch){display:none}.theme-switch{width:28px;height:28px}.demo-tag{padding:4px 6px;font-size:10px}.overview{padding:25px 18px 20px}.page-heading{margin-bottom:23px}.page-heading h1{font-size:28px}.page-heading .button{min-height:38px;padding:9px 15px;font-size:13px}.host-summary{font-size:12px}.filters button{padding:7px 16px}.home-controls{margin-bottom:25px}.section-heading h2{font-size:17px}.attention-card{padding:14px}.attention-title{gap:10px}.attention-title strong{font-size:15px}.attention-title small{font-size:12px}.attention-title time{display:none}.permission-preview code{font-size:11px}.attention-actions .button{min-height:36px;padding:8px 15px;font-size:12px}.attention-actions .text-button{font-size:12px}.task-row{gap:10px;padding:15px 13px}.task-row .agent-mark{width:28px;height:28px}.task-info strong{font-size:15px}.task-info>span{font-size:12px}.task-meta{max-width:55px;font-size:10px}.task-meta small{font-size:10px}.task-row>svg{display:none}.task-row:not(:last-child):after{left:51px}.session-page{border-radius:0;margin:0}.session-heading{padding:18px 18px 15px}.session-title h1{font-size:18px}.session-title>.badge{display:none}.session-actions{gap:5px}.session-actions .icon-button{width:34px;height:34px}.session-subtitle{gap:4px;font-size:11px}.session-subtitle>span:last-child,.session-subtitle>svg:last-of-type,.session-subtitle>.separator:last-of-type{display:none}.conversation{padding:21px 18px}.user-message{max-width:92%;padding:13px 15px}.user-message p,.assistant-message>p{font-size:16px}.plan-list{font-size:14px}.tool-call{gap:7px;font-size:12px}.tool-call small{font-size:10px}.approval-card{padding:13px}.approval-heading strong{font-size:14px}.approval-heading>div>span{font-size:10px}.approval-card pre{padding:12px;font-size:11px}.approval-footer>span{font-size:10px}.approval-footer .button{padding:8px 13px;font-size:11px}.composer-wrap{padding:8px 12px 12px}.composer{border-radius:24px;padding:11px 10px 8px}.composer textarea{font-size:16px}.composer-caption{padding:8px 3px 0;font-size:9px}.terminal-panel{max-height:160px;margin:0 12px}.terminal-demo{font-size:9px}.connection-banner{padding:10px 14px;font-size:11px}.connection-banner>button{max-width:60px;font-size:11px}.connection-detail-card{gap:14px;padding:20px}.large-source-icon{border-radius:14px;width:46px;height:46px}.connection-detail-card>.button{flex-basis:100%;margin:0}.connection-detail-card h2{font-size:18px}.connection-detail-card code{font-size:11px}.eyebrow{font-size:9px}.connection-detail-card p{font-size:12px}.computer-table{padding:18px}.computer-table .button{width:100%;margin:5px 0 0}.deployment-note{padding:24px 3px}.deployment-note p{font-size:12px}.modal-subtitle{font-size:13px}.source-option{padding:16px 13px}.source-option>span:not(.selection-dot){font-size:10px}.pairing-form input,.new-form textarea{font-size:16px}.new-form select{font-size:14px}.toast{width:max-content;font-size:12px;bottom:18px}.file-panel{width:min(300px,90vw)}}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}}@layer components;@layer utilities{.\@container\/field-group{container:field-group/inline-size}.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.top-1\/2{top:50%}.top-1\/3{top:33.3333%}.top-2{top:calc(var(--spacing) * 2)}.right-2{right:calc(var(--spacing) * 2)}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.order-first{order:-9999}.order-last{order:9999}.m-4{margin:calc(var(--spacing) * 4)}.m-7{margin:calc(var(--spacing) * 7)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.-my-2{margin-block:calc(var(--spacing) * -2)}.my-1{margin-block:var(--spacing)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.field-sizing-content{field-sizing:content}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-full{width:100%;height:100%}.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)!important}.h-auto{height:auto}.h-px{height:1px}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-popover-content-available-height\){max-height:var(--radix-popover-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[85dvh\]{max-height:85dvh}.max-h-\[min\(18rem\,35dvh\,var\(--radix-popover-content-available-height\)\)\]{max-height:min(18rem,35dvh,var(--radix-popover-content-available-height))}.min-h-16{min-height:calc(var(--spacing) * 16)}.w-\(--radix-dropdown-menu-trigger-width\){width:var(--radix-dropdown-menu-trigger-width)}.w-\(--radix-popover-trigger-width\){width:var(--radix-popover-trigger-width)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-72{width:calc(var(--spacing) * 72)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.min-w-0{min-width:0}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-\[96px\]{min-width:96px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.cursor-default{cursor:default}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:var(--spacing)}.scroll-py-1{scroll-padding-block:var(--spacing)}.list-disc{list-style-type:disc}.grid-rows-\[auto_1fr\]{grid-template-rows:auto 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.place-items-center{place-items:center}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.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-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\[calc\(var\(--radius\)-3px\)\]{border-radius:calc(var(--radius) - 3px)}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-lg{border-radius:12px}.rounded-lg\!{border-radius:12px!important}.rounded-md{border-radius:10px}.rounded-none{border-radius:0}.rounded-sm{border-radius:8px}.rounded-xl{border-radius:18px}.rounded-xl\!{border-radius:18px!important}.rounded-b-xl{border-bottom-right-radius:18px;border-bottom-left-radius:18px}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-border,.border-input,.border-input\/30{border-color:var(--separator)}@supports (color:color-mix(in lab,red,red)){.border-input\/30{border-color:color-mix(in oklab,var(--separator) 30%,transparent)}}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-border{background-color:var(--separator)}.bg-destructive\/10{background-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--danger) 10%,transparent)}}.bg-input\/30{background-color:var(--separator)}@supports (color:color-mix(in lab,red,red)){.bg-input\/30{background-color:color-mix(in oklab,var(--separator) 30%,transparent)}}.bg-muted,.bg-muted\/50{background-color:var(--fill)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--fill) 50%,transparent)}}.bg-popover{background-color:var(--card)}.bg-primary{background-color:var(--accent)}.bg-secondary{background-color:var(--fill)}.bg-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.p-0{padding:0}.p-1{padding:var(--spacing)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.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)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0{padding-bottom:0}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.text-center{text-align:center}.text-left{text-align:left}.text-base{font-size:16px;line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:14px;line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:12px;line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-destructive{color:var(--danger)}.text-foreground{color:var(--label)}.text-muted-foreground{color:var(--secondaryLabel)}.text-popover-foreground{color:var(--label)}.text-primary{color:var(--accent)}.text-primary-foreground{color:#fff}.text-secondary-foreground{color:var(--label)}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.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-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none\!{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + 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)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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)}.ring-foreground\/10{--tw-ring-color:var(--label)}@supports (color:color-mix(in lab,red,red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--label) 10%, transparent)}}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.paused{animation-play-state:paused}.running{animation-play-state:running}:is(.\*\:w-full>*){width:100%}.group-focus\/dropdown-menu-item\:text-accent-foreground:is(:where(.group\/dropdown-menu-item):focus *){color:var(--label)}.group-has-data-horizontal\/field\:text-balance:is(:where(.group\/field):has([data-horizontal]) *){text-wrap:balance}.group-has-data-\[slot\=command-shortcut\]\/command-item\:hidden:is(:where(.group\/command-item):has([data-slot=command-shortcut]) *){display:none}.group-has-\[\>input\]\/input-group\:pt-2:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing) * 2)}.group-has-\[\>input\]\/input-group\:pb-2:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing) * 2)}.group-data-\[checked\=true\]\/command-item\:opacity-100:is(:where(.group\/command-item)[data-checked=true] *){opacity:1}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\[disabled\=true\]\/field\:opacity-50:is(:where(.group\/field)[data-disabled=true] *),.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\[selected\=true\]\/command-item\:text-foreground:is(:where(.group\/command-item)[data-selected=true] *){color:var(--label)}.group-data-\[size\=sm\]\/alert-dialog-content\:grid:is(:where(.group\/alert-dialog-content)[data-size=sm] *){display:grid}.group-data-\[size\=sm\]\/alert-dialog-content\:grid-cols-2:is(:where(.group\/alert-dialog-content)[data-size=sm] *){grid-template-columns:repeat(2,minmax(0,1fr))}.group-data-\[variant\=outline\]\/field-group\:-mb-2:is(:where(.group\/field-group)[data-variant=outline] *){margin-bottom:calc(var(--spacing) * -2)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:14px;line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--label)}.placeholder\:text-muted-foreground::placeholder{color:var(--secondaryLabel)}.last\:mt-0:last-child{margin-top:0}@media(hover:hover){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:color-mix(in oklch,var(--secondary),var(--foreground) 5%)}}.hover\:bg-destructive\/20:hover{background-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--danger) 20%,transparent)}}.hover\:bg-muted:hover{background-color:var(--fill)}.hover\:bg-primary\/80:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--accent) 80%,transparent)}}.hover\:text-foreground:hover{color:var(--label)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:bg-accent:focus{background-color:var(--accentSoft)}.focus\:text-accent-foreground:focus,:is(.focus\:\*\*\:text-accent-foreground:focus *),:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--label)}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--danger) 40%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--accent)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + 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-visible\:ring-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--separator)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab,var(--separator) 50%,transparent)}}.disabled\:bg-transparent:disabled{background-color:#0000}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:12px}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:border-inherit:focus-within{border-color:inherit}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:ring-0:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + 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)}:where([data-slot=dialog-content]) .in-data-\[slot\=dialog-content\]\:rounded-lg\!{border-radius:12px!important}.has-disabled\:bg-input\/50:has(:disabled){background-color:var(--separator)}@supports (color:color-mix(in lab,red,red)){.has-disabled\:bg-input\/50:has(:disabled){background-color:color-mix(in oklab,var(--separator) 50%,transparent)}}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-checked\:border-primary\/30:has([data-checked]){border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.has-data-checked\:border-primary\/30:has([data-checked]){border-color:color-mix(in oklab,var(--accent) 30%,transparent)}}.has-data-checked\:bg-primary\/5:has([data-checked]){background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.has-data-checked\:bg-primary\/5:has([data-checked]){background-color:color-mix(in oklab,var(--accent) 5%,transparent)}}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[slot\=alert-dialog-media\]\:grid-rows-\[auto_auto_1fr\]:has([data-slot=alert-dialog-media]){grid-template-rows:auto auto 1fr}.has-data-\[slot\=alert-dialog-media\]\:gap-x-4:has([data-slot=alert-dialog-media]){column-gap:calc(var(--spacing) * 4)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--accent)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-3:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--danger)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-3:has([data-slot][aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>\[data-slot\=checkbox-group\]\]\:gap-3:has(>[data-slot=checkbox-group]){gap:calc(var(--spacing) * 3)}.has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\[\>\[data-slot\=field\]\]\:w-full:has(>[data-slot=field]){width:100%}.has-\[\>\[data-slot\=field\]\]\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\[\>\[data-slot\=field\]\]\:rounded-lg:has(>[data-slot=field]){border-radius:12px}.has-\[\>\[data-slot\=field\]\]\:border:has(>[data-slot=field]){border-style:var(--tw-border-style);border-width:1px}@media(hover:hover){.has-\[\>\[data-slot\=field\]\]\:not-has-\[\:disabled\,\[data-disabled\]\]\:hover\:bg-muted\/50:has(>[data-slot=field]):not(:has(:is(:disabled,[data-disabled]))):hover{background-color:var(--fill)}@supports (color:color-mix(in lab,red,red)){.has-\[\>\[data-slot\=field\]\]\:not-has-\[\:disabled\,\[data-disabled\]\]\:hover\:bg-muted\/50:has(>[data-slot=field]):not(:has(:is(:disabled,[data-disabled]))):hover{background-color:color-mix(in oklab,var(--fill) 50%,transparent)}}}.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:border-ring:has(>[data-slot=field]):has(:focus-visible){border-color:var(--accent)}.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:ring-3:has(>[data-slot=field]):has(:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:ring-ring\/50:has(>[data-slot=field]):has(:focus-visible){--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:ring-ring\/50:has(>[data-slot=field]):has(:focus-visible){--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.has-\[\>\[data-slot\=radio-group\]\]\:gap-3:has(>[data-slot=radio-group]){gap:calc(var(--spacing) * 3)}.has-\[\>button\]\:mr-\[-0\.3rem\]:has(>button){margin-right:-.3rem}.has-\[\>button\]\:ml-\[-0\.3rem\]:has(>button){margin-left:-.3rem}.has-\[\>kbd\]\:mr-\[-0\.15rem\]:has(>kbd){margin-right:-.15rem}.has-\[\>kbd\]\:ml-\[-0\.15rem\]:has(>kbd){margin-left:-.15rem}.has-\[\>svg\]\:p-0:has(>svg){padding:0}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.aria-expanded\:bg-muted[aria-expanded=true],.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--fill)}.aria-expanded\:text-foreground[aria-expanded=true],.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--label)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--danger)}.aria-invalid\:ring-0[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + 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)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.data-disabled\:pointer-events-none[data-disabled]{pointer-events:none}.data-disabled\:opacity-50[data-disabled]{opacity:.5}.data-horizontal\:h-px[data-horizontal]{height:1px}.data-horizontal\:w-full[data-horizontal]{width:100%}.data-inset\:pl-7[data-inset]{padding-left:calc(var(--spacing) * 7)}.data-placeholder\:text-muted-foreground[data-placeholder]{color:var(--secondaryLabel)}.data-vertical\:w-px[data-vertical]{width:1px}.data-vertical\:self-stretch[data-vertical]{align-self:stretch}.data-\[align-trigger\=true\]\:animate-none[data-align-trigger=true]{animation:none}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[invalid\=true\]\:text-destructive[data-invalid=true]{color:var(--danger)}.data-\[position\=popper\]\:h-\(--radix-select-trigger-height\)[data-position=popper]{height:var(--radix-select-trigger-height)}.data-\[position\=popper\]\:w-full[data-position=popper]{width:100%}.data-\[position\=popper\]\:min-w-\(--radix-select-trigger-width\)[data-position=popper]{min-width:var(--radix-select-trigger-width)}.data-\[selected\=true\]\:bg-muted[data-selected=true]{background-color:var(--fill)}.data-\[selected\=true\]\:text-foreground[data-selected=true]{color:var(--label)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-10[data-size=default]{height:calc(var(--spacing) * 10)}.data-\[size\=default\]\:max-w-xs[data-size=default]{max-width:var(--container-xs)}.data-\[size\=sm\]\:h-7[data-size=sm]{height:calc(var(--spacing) * 7)}.data-\[size\=sm\]\:max-w-xs[data-size=sm]{max-width:var(--container-xs)}.data-\[size\=sm\]\:rounded-\[min\(var\(--radius-md\)\,10px\)\][data-size=sm]{border-radius:min(var(--radius-md),10px)}.data-\[slot\=checkbox-group\]\:gap-3[data-slot=checkbox-group]{gap:calc(var(--spacing) * 3)}:is(.\*\:data-\[slot\=field\]\:p-2\.5>*)[data-slot=field]{padding:calc(var(--spacing) * 2.5)}:is(.\*\:data-\[slot\=field-group\]\:gap-4>*)[data-slot=field-group]{gap:calc(var(--spacing) * 4)}:is(.\*\:data-\[slot\=field-label\]\:flex-auto>*)[data-slot=field-label]{flex:auto}:is(.\*\:data-\[slot\=input-group-addon\]\:pl-2\!>*)[data-slot=input-group-addon]{padding-left:calc(var(--spacing) * 2)!important}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-1\.5>*)[data-slot=select-value]{gap:calc(var(--spacing) * 1.5)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:overflow-hidden[data-state=closed]{overflow:hidden}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accentSoft)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--label)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--danger)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--danger) 10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--danger)}.data-\[variant\=label\]\:text-sm[data-variant=label]{font-size:14px;line-height:var(--tw-leading,var(--text-sm--line-height))}.data-\[variant\=legend\]\:text-base[data-variant=legend]{font-size:16px;line-height:var(--tw-leading,var(--text-base--line-height))}.nth-last-2\:-mt-1:nth-last-child(2){margin-top:calc(var(--spacing) * -1)}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-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,)}}@media(min-width:40rem){.sm\:max-w-5xl{max-width:var(--container-5xl)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:row-span-2:is(:where(.group\/alert-dialog-content)[data-size=default] *){grid-row:span 2/span 2}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:place-items-start:is(:where(.group\/alert-dialog-content)[data-size=default] *){place-items:start}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:text-left:is(:where(.group\/alert-dialog-content)[data-size=default] *){text-align:left}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:group-has-data-\[slot\=alert-dialog-media\]\/alert-dialog-content\:col-start-2:is(:where(.group\/alert-dialog-content)[data-size=default] *):is(:where(.group\/alert-dialog-content):has([data-slot=alert-dialog-media]) *){grid-column-start:2}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:has-data-\[slot\=alert-dialog-media\]\:grid-rows-\[auto_1fr\]:is(:where(.group\/alert-dialog-content)[data-size=default] *):has([data-slot=alert-dialog-media]){grid-template-rows:auto 1fr}.data-\[size\=default\]\:sm\:max-w-sm[data-size=default]{max-width:var(--container-sm)}}@media(min-width:48rem){.md\:text-sm{font-size:14px;line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-pretty{text-wrap:pretty}}@container field-group (min-width:28rem){.\@md\/field-group\:flex-row{flex-direction:row}.\@md\/field-group\:items-center{align-items:center}:is(.\@md\/field-group\:\*\:w-auto>*){width:auto}.\@md\/field-group\:has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}:is(.\@md\/field-group\:\*\:data-\[slot\=field-label\]\:flex-auto>*)[data-slot=field-label]{flex:auto}}@media(prefers-color-scheme:dark){.dark\:border-input{border-color:var(--separator)}.dark\:bg-destructive\/20{background-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/20{background-color:color-mix(in oklab,var(--danger) 20%,transparent)}}.dark\:bg-input\/30{background-color:var(--separator)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30{background-color:color-mix(in oklab,var(--separator) 30%,transparent)}}.dark\:bg-transparent{background-color:#0000}@media(hover:hover){.dark\:hover\:bg-destructive\/30:hover{background-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-destructive\/30:hover{background-color:color-mix(in oklab,var(--danger) 30%,transparent)}}.dark\:hover\:bg-input\/50:hover{background-color:var(--separator)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:hover{background-color:color-mix(in oklab,var(--separator) 50%,transparent)}}.dark\:hover\:bg-muted\/50:hover{background-color:var(--fill)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--fill) 50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.dark\:disabled\:bg-input\/80:disabled{background-color:var(--separator)}@supports (color:color-mix(in lab,red,red)){.dark\:disabled\:bg-input\/80:disabled{background-color:color-mix(in oklab,var(--separator) 80%,transparent)}}.dark\:disabled\:bg-transparent:disabled{background-color:#0000}.dark\:has-disabled\:bg-input\/80:has(:disabled){background-color:var(--separator)}@supports (color:color-mix(in lab,red,red)){.dark\:has-disabled\:bg-input\/80:has(:disabled){background-color:color-mix(in oklab,var(--separator) 80%,transparent)}}.dark\:has-data-checked\:border-primary\/20:has([data-checked]){border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:has-data-checked\:border-primary\/20:has([data-checked]){border-color:color-mix(in oklab,var(--accent) 20%,transparent)}}.dark\:has-data-checked\:bg-primary\/10:has([data-checked]){background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:has-data-checked\:bg-primary\/10:has([data-checked]){background-color:color-mix(in oklab,var(--accent) 10%,transparent)}}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.dark\:aria-invalid\:border-destructive\/50[aria-invalid=true]{border-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50[aria-invalid=true]{border-color:color-mix(in oklab,var(--danger) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40[aria-invalid=true]{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20[data-variant=destructive]:focus{background-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--danger) 20%,transparent)}}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\.border-b\]\:pb-2.border-b{padding-bottom:calc(var(--spacing) * 2)}.\[\.border-t\]\:pt-2.border-t{padding-top:calc(var(--spacing) * 2)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:px-2 *)[cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:py-1\.5 *)[cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:text-xs *)[cmdk-group-heading]{font-size:12px;line-height:var(--tw-leading,var(--text-xs--line-height))}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:font-medium *)[cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:text-muted-foreground *)[cmdk-group-heading]{color:var(--secondaryLabel)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media(hover:hover){:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--label)}}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-\[selected\=true\]\:\*\:\[svg\]\:text-foreground[data-selected=true]>*):is(svg){color:var(--label)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:text-destructive[data-variant=destructive]>*):is(svg){color:var(--danger)}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.\[\&\>\.sr-only\]\:w-auto>.sr-only{width:auto}.has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content])>[role=checkbox],.has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content]) [role=radio]{margin-top:1px}@container field-group (min-width:28rem){.\@md\/field-group\:has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content])>[role=checkbox],.\@md\/field-group\:has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content]) [role=radio]{margin-top:1px}}.\[\&\>a\]\:underline>a{text-decoration-line:underline}.\[\&\>a\]\:underline-offset-4>a{text-underline-offset:4px}.\[\&\>a\:hover\]\:text-primary>a:hover{color:var(--accent)}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-1\.5:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-1\.5:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing) * 1.5)}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}[data-variant=legend]+.\[\[data-variant\=legend\]\+\&\]\:-mt-1\.5{margin-top:calc(var(--spacing) * -1.5)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{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}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
|