@hellcoder/companion 0.101.1 → 0.101.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AgentsPage-Dip6GwSo.js → AgentsPage-DUxEE2pw.js} +1 -1
- package/dist/assets/{CronManager-D7D1S2fl.js → CronManager-DcSFDMXq.js} +1 -1
- package/dist/assets/{IntegrationsPage-DyariDmY.js → IntegrationsPage-CAab6Gwf.js} +1 -1
- package/dist/assets/{LinearOAuthSettingsPage-CRsH-fPb.js → LinearOAuthSettingsPage-D-r1Gopp.js} +1 -1
- package/dist/assets/{LinearSettingsPage-Dxa5KY7K.js → LinearSettingsPage-uXiz8zeK.js} +1 -1
- package/dist/assets/{Playground-YAyooYRl.js → Playground-SMf-3HEN.js} +1 -1
- package/dist/assets/{PromptsPage-CTv7juDj.js → PromptsPage-UG9a3mdC.js} +1 -1
- package/dist/assets/{RunsPage-198ELTCe.js → RunsPage-Deu_F1YC.js} +1 -1
- package/dist/assets/{SandboxManager-D6gFBQz-.js → SandboxManager-DX-9MEyk.js} +1 -1
- package/dist/assets/{SettingsPage-YzTFD1Nf.js → SettingsPage-C9KPMBFt.js} +1 -1
- package/dist/assets/{TailscalePage-Df6sKIU9.js → TailscalePage-DyNlSnUc.js} +1 -1
- package/dist/assets/index-BVs_mQXt.css +1 -0
- package/dist/assets/{index-B713LzqR.js → index-v7VXwTts.js} +28 -28
- package/dist/assets/{sw-register-C1Ldwl48.js → sw-register-CVI3QpGl.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/sw.js +1 -1
- package/package.json +1 -1
- package/dist/assets/index-B8CS4Xf1.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as n,a as c,j as e}from"./index-
|
|
1
|
+
import{r as n,a as c,j as e}from"./index-v7VXwTts.js";function X({embedded:f=!1}){const[u,C]=n.useState([]),[V,W]=n.useState(!0),[v,l]=n.useState(""),[o,M]=n.useState(!1),[k,R]=n.useState(!1),[b,B]=n.useState(null),[s,E]=n.useState(null),i=n.useRef(null),[p,I]=n.useState(""),[T,D]=n.useState(""),[j,y]=n.useState(null),[P,$]=n.useState(""),[N,H]=n.useState(""),[h,w]=n.useState(null),[m,d]=n.useState(null),x=n.useRef({}),[S,z]=n.useState(""),g=n.useCallback(()=>{c.listSandboxes().then(C).catch(()=>{}).finally(()=>W(!1))},[]);n.useEffect(()=>{g(),c.getContainerStatus().then(t=>B(t.available)).catch(()=>B(!1)),c.getImageStatus("the-companion:latest").then(t=>E(t)).catch(()=>{}),c.getHome().then(({cwd:t})=>z(t)).catch(()=>{})},[g]),n.useEffect(()=>{if(!s||s.status!=="pulling"){i.current&&(clearInterval(i.current),i.current=null);return}return i.current||(i.current=setInterval(()=>{c.getImageStatus("the-companion:latest").then(t=>E(t)).catch(()=>{})},2e3)),()=>{i.current&&(clearInterval(i.current),i.current=null)}},[s]);function L(){c.pullImage("the-companion:latest").then(t=>{t.state&&E(t.state)}).catch(()=>{})}async function A(){const t=p.trim();if(t){R(!0);try{await c.createSandbox(t,{initScript:T||void 0}),I(""),D(""),M(!1),l(""),g()}catch(r){l(r instanceof Error?r.message:String(r))}finally{R(!1)}}}function Z(t){x.current={},y(t.slug),$(t.name),H(t.initScript||""),d(null),l("")}function q(){x.current={},y(null),d(null),w(null),l("")}async function K(){if(j){x.current={},w(null);try{await c.updateSandbox(j,{name:P.trim()||void 0,initScript:N||void 0}),y(null),d(null),l(""),g()}catch(t){l(t instanceof Error?t.message:String(t))}}}async function U(t){try{await c.deleteSandbox(t),j===t&&y(null),g()}catch(r){l(r instanceof Error?r.message:String(r))}}async function F(t){if(!S)return;const r={};x.current=r,w(t),d(null);try{const a=await c.testInitScript(t,S,N);if(x.current!==r)return;d(a)}catch(a){if(x.current!==r)return;d({success:!1,exitCode:-1,output:a instanceof Error?a.message:String(a)})}finally{x.current===r&&w(null)}}const G=b===null?null:b?e.jsx("span",{className:"text-[10px] px-2 py-1 rounded-md bg-green-500/10 text-green-500 font-medium",children:"Docker"}):e.jsx("span",{className:"text-[10px] px-2 py-1 rounded-md bg-amber-500/10 text-amber-500 font-medium",children:"No Docker"});function J(){if(!b)return null;const t=(s==null?void 0:s.status)==="pulling";return e.jsxs("div",{className:"rounded-xl bg-cc-card p-3 sm:p-4 mb-5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx("span",{className:"text-[11px] font-medium text-cc-muted",children:"Base Image"}),e.jsx("code",{className:"text-[10px] font-mono-code text-cc-fg",children:"the-companion:latest"}),(s==null?void 0:s.status)==="ready"&&e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-green-500/10 text-green-500",children:"Ready"}),(s==null?void 0:s.status)==="pulling"&&e.jsxs("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-amber-500/10 text-amber-500 flex items-center gap-1",children:[e.jsx("span",{className:"w-2.5 h-2.5 border border-amber-500/30 border-t-amber-500 rounded-full animate-spin"}),"Pulling..."]}),(s==null?void 0:s.status)==="error"&&e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-cc-error/10 text-cc-error",children:"Pull failed"}),(!s||s.status==="idle")&&e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-cc-hover text-cc-muted",children:"Not downloaded"})]}),(s==null?void 0:s.status)!=="ready"&&e.jsx("button",{onClick:L,disabled:t,className:`text-xs px-3 py-2 min-h-[36px] rounded-lg transition-colors shrink-0 ${t?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-blue-500/10 text-blue-400 hover:bg-blue-500/20 cursor-pointer"}`,children:t?"Pulling...":"Pull"})]}),t&&(s==null?void 0:s.progress)&&s.progress.length>0&&e.jsx("pre",{className:"mt-2 px-3 py-2 text-[10px] font-mono-code bg-cc-code-bg rounded-lg text-cc-muted max-h-[120px] overflow-auto whitespace-pre-wrap",children:s.progress.slice(-20).join(`
|
|
2
2
|
`)}),(s==null?void 0:s.status)==="error"&&s.error&&e.jsx("p",{className:"mt-2 text-[10px] text-cc-error",children:s.error})]})}return f?e.jsx("div",{className:"h-full bg-cc-bg text-cc-fg font-sans-ui antialiased overflow-y-auto overflow-x-hidden",children:e.jsxs("div",{className:"max-w-2xl mx-auto px-4 sm:px-6 py-6 sm:py-10 pb-safe",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3 mb-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-lg font-semibold text-cc-fg",children:"Sandboxes"}),e.jsx("p",{className:"mt-0.5 text-[13px] text-cc-muted leading-relaxed",children:"Reusable sandbox configurations for containerized sessions."})]}),e.jsx("div",{className:"flex items-center gap-2 shrink-0",children:G})]}),J(),e.jsxs("div",{className:"flex items-center gap-2 mt-4 mb-5",children:[e.jsx("div",{className:"flex-1"}),e.jsxs("button",{onClick:()=>M(!o),className:`flex items-center gap-1.5 px-3.5 py-2.5 min-h-[44px] rounded-lg text-sm font-medium transition-colors cursor-pointer shrink-0 ${o?"bg-cc-active text-cc-fg":"bg-cc-primary hover:bg-cc-primary-hover text-white"}`,children:[e.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"w-4 h-4",children:o?e.jsx("path",{d:"M18 6 6 18M6 6l12 12"}):e.jsx("path",{d:"M12 5v14M5 12h14"})}),e.jsx("span",{className:"hidden sm:inline",children:o?"Cancel":"New Sandbox"})]})]}),o&&e.jsxs("div",{className:"mb-6 rounded-xl bg-cc-card p-4 sm:p-5 space-y-3",style:{animation:"fadeSlideIn 150ms ease-out"},children:[e.jsx("input",{type:"text",value:p,onChange:t=>I(t.target.value),placeholder:"Sandbox name (e.g. node-project)",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary/40 transition-shadow",onKeyDown:t=>{t.key==="Enter"&&p.trim()&&A()}}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[11px] font-medium text-cc-muted mb-1",children:"Init Script (optional)"}),e.jsx("textarea",{value:T,onChange:t=>D(t.target.value),placeholder:`# Runs inside the container before Claude starts
|
|
3
3
|
# Example:
|
|
4
4
|
bun install
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as s,u as o,g as st,a as n,j as e,n as ct,b as nt,s as ot}from"./index-B713LzqR.js";const Z=[{id:"general",label:"General"},{id:"webhooks",label:"Webhooks"},{id:"authentication",label:"Authentication"},{id:"notifications",label:"Notifications"},{id:"providers",label:"Providers"},{id:"anthropic",label:"Anthropic"},{id:"ai-validation",label:"AI Validation"},{id:"updates",label:"Updates"},{id:"telemetry",label:"Telemetry"},{id:"environments",label:"Environments"}];function it({embedded:ee=!1}){const[p,te]=s.useState(""),[se,ce]=s.useState("claude-sonnet-4-6"),[d,ne]=s.useState(!1),[w,Le]=s.useState(!0),[g,C]=s.useState(!1),[oe,b]=s.useState(""),[ae,y]=s.useState(!1),Fe=o(t=>t.darkMode),Ke=o(t=>t.toggleDarkMode),ie=o(t=>t.diffBase),Me=o(t=>t.setDiffBase),Be=o(t=>t.notificationSound),He=o(t=>t.toggleNotificationSound),re=o(t=>t.notificationDesktop),le=o(t=>t.setNotificationDesktop),a=o(t=>t.updateInfo),I=o(t=>t.setUpdateInfo),Qe=o(t=>t.setUpdateOverlayActive),_e=typeof Notification<"u",[x,v]=s.useState("stable"),[S,V]=s.useState(!1),[de,R]=s.useState("loopback"),[P,ue]=s.useState(!1),[O,xe]=s.useState(!1),[pe,j]=s.useState(""),[me,A]=s.useState(""),[he,Ge]=s.useState(st()),[U,D]=s.useState(!1),[$,L]=s.useState(!0),[F,K]=s.useState(!1),[T,M]=s.useState(""),[fe,ge]=s.useState("general"),[qe,be]=s.useState(!1),[B,ye]=s.useState(!1),[k,m]=s.useState(null),[h,ve]=s.useState(""),[H,je]=s.useState(!1),[f,ke]=s.useState(""),[Q,Ne]=s.useState(!1),[_,we]=s.useState(!1),[Ye,G]=s.useState(!1),[Ce,Se]=s.useState(""),[We,Ae]=s.useState(!1),[Je,Ue]=s.useState(!1),[N,Te]=s.useState(null),[q,Ee]=s.useState(!1),[u,Ie]=s.useState(null),[E,ze]=s.useState(0),[Y,Ve]=s.useState(!1),[W,Re]=s.useState(!1),[Xe,Pe]=s.useState(!1),Oe=s.useRef(null),J=s.useRef({});s.useEffect(()=>{const t=Oe.current;if(!t)return;const c=new IntersectionObserver(i=>{var $e;let r=null;for(const X of i)X.isIntersecting&&(!r||X.boundingClientRect.top<r.boundingClientRect.top)&&(r=X);($e=r==null?void 0:r.target)!=null&&$e.id&&ge(r.target.id)},{root:t,rootMargin:"-10% 0px -70% 0px",threshold:0});for(const i of Z){const r=J.current[i.id];r&&c.observe(r)}return()=>c.disconnect()},[w]);const De=s.useCallback(t=>{ge(t);const c=J.current[t];c&&c.scrollIntoView({behavior:"smooth",block:"start"})},[]);s.useEffect(()=>{n.getSettings().then(t=>{ne(t.anthropicApiKeyConfigured),je(t.claudeCodeOAuthTokenConfigured),Ne(t.openaiApiKeyConfigured),ce(t.anthropicModel||"claude-sonnet-4-6"),typeof t.aiValidationEnabled=="boolean"&&D(t.aiValidationEnabled),typeof t.aiValidationAutoApprove=="boolean"&&L(t.aiValidationAutoApprove),typeof t.aiValidationAutoDeny=="boolean"&&K(t.aiValidationAutoDeny),(t.updateChannel==="stable"||t.updateChannel==="prerelease")&&v(t.updateChannel),typeof t.dockerAutoUpdate=="boolean"&&V(t.dockerAutoUpdate),(t.cliBridgeMode==="loopback"||t.cliBridgeMode==="jsonHandoff")&&R(t.cliBridgeMode),typeof t.publicUrl=="string"&&(M(t.publicUrl),o.getState().setPublicUrl(t.publicUrl))}).catch(t=>b(t instanceof Error?t.message:String(t))).finally(()=>Le(!1)),n.getAuthToken().then(t=>Te(t.token)).catch(()=>{})},[]);async function Ze(t){t.preventDefault(),C(!0),b(""),y(!1);try{const c=p.trim(),i={anthropicModel:se.trim()||"claude-sonnet-4-6"};c&&(i.anthropicApiKey=c);const r=await n.updateSettings(i);ne(r.anthropicApiKeyConfigured),te(""),y(!0),setTimeout(()=>y(!1),1800)}catch(c){b(c instanceof Error?c.message:String(c))}finally{C(!1)}}async function z(t){const c=t==="aiValidationEnabled"?U:t==="aiValidationAutoApprove"?$:F,i=!c;t==="aiValidationEnabled"?D(i):t==="aiValidationAutoApprove"?L(i):K(i);try{await n.updateSettings({[t]:i})}catch{t==="aiValidationEnabled"?D(c):t==="aiValidationAutoApprove"?L(c):K(c)}}async function et(){ue(!0),j(""),A("");try{const t=await n.forceCheckForUpdate();I(t),t.updateAvailable&&t.latestVersion?j(`Update v${t.latestVersion} is available.`):j("You are up to date.")}catch(t){A(t instanceof Error?t.message:String(t))}finally{ue(!1)}}async function tt(){xe(!0),j(""),A("");try{localStorage.setItem("companion_docker_prompt_pending","1");const t=await n.triggerUpdate();j(t.message),Qe(!0)}catch(t){localStorage.removeItem("companion_docker_prompt_pending"),A(t instanceof Error?t.message:String(t)),xe(!1)}}const l=s.useCallback(t=>c=>{J.current[t]=c},[]);return e.jsxs("div",{className:`${ee?"h-full":"h-[100dvh]"} bg-cc-bg text-cc-fg font-sans-ui antialiased flex flex-col`,children:[e.jsx("div",{className:"shrink-0 max-w-5xl w-full mx-auto px-4 sm:px-8 pt-6 sm:pt-10",children:e.jsxs("div",{className:"flex items-start justify-between gap-3 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl font-semibold text-cc-fg",children:"Settings"}),e.jsx("p",{className:"mt-1 text-sm text-cc-muted",children:"Configure API access, notifications, appearance, and workspace defaults."})]}),!ee&&e.jsx("button",{onClick:()=>{const t=o.getState().currentSessionId;t?ct(t):nt()},className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm text-cc-muted hover:text-cc-fg hover:bg-cc-hover transition-colors cursor-pointer",children:"Back"})]})}),e.jsx("div",{className:"sm:hidden shrink-0 border-b border-cc-border",children:e.jsx("nav",{className:"flex gap-1 px-4 py-2 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden","aria-label":"Settings categories",children:Z.map(t=>e.jsx("button",{type:"button",onClick:()=>De(t.id),className:`shrink-0 px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors cursor-pointer ${fe===t.id?"text-cc-primary bg-cc-primary/8":"text-cc-muted hover:text-cc-fg hover:bg-cc-hover"}`,children:t.label},t.id))})}),e.jsxs("div",{className:"flex-1 min-h-0 flex max-w-5xl w-full mx-auto",children:[e.jsx("nav",{className:"hidden sm:flex flex-col gap-0.5 w-44 shrink-0 pt-2 pr-6 pl-8 sticky top-0 self-start","aria-label":"Settings categories",children:Z.map(t=>e.jsx("button",{type:"button",onClick:()=>De(t.id),className:`text-left px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors cursor-pointer ${fe===t.id?"text-cc-primary bg-cc-primary/8":"text-cc-muted hover:text-cc-fg hover:bg-cc-hover"}`,children:t.label},t.id))}),e.jsx("div",{ref:Oe,className:"flex-1 min-w-0 overflow-y-auto px-4 sm:px-8 sm:pl-0 pb-safe",children:e.jsxs("div",{className:"space-y-10 py-4 sm:py-2",children:[e.jsxs("section",{id:"general",ref:l("general"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"General"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("button",{type:"button",onClick:Ke,className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg text-sm bg-cc-hover text-cc-fg hover:bg-cc-active transition-colors cursor-pointer",children:[e.jsx("span",{children:"Theme"}),e.jsx("span",{className:"text-xs text-cc-muted",children:Fe?"Dark":"Light"})]}),e.jsxs("button",{type:"button",onClick:()=>Me(ie==="last-commit"?"default-branch":"last-commit"),className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg text-sm bg-cc-hover text-cc-fg hover:bg-cc-active transition-colors cursor-pointer",children:[e.jsx("span",{children:"Diff compare against"}),e.jsx("span",{className:"text-xs text-cc-muted",children:ie==="last-commit"?"Last commit (HEAD)":"Default branch"})]}),e.jsx("p",{className:"text-xs text-cc-muted px-1",children:"Last commit shows only uncommitted changes. Default branch shows all changes since diverging from main."}),e.jsx("div",{className:"pt-3 border-t border-cc-border",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"block text-sm font-medium",children:"Claude Code bridge mode"}),e.jsx("p",{className:"mt-0.5 text-xs text-cc-muted",children:'How the Companion hands the bridge URL to the spawned Claude Code CLI. Loopback is the default fix for Claude Code v1.2.1+ which rejects the literal "localhost". JSON handoff is the more robust just-every/code-style approach: writes a temp descriptor with a one-shot token and passes its path via CLAUDE_BRIDGE_CONFIG.'})]}),e.jsxs("select",{"aria-label":"CLI bridge mode",value:de,onChange:async t=>{const c=t.target.value==="jsonHandoff"?"jsonHandoff":"loopback",i=de;R(c);try{await n.updateSettings({cliBridgeMode:c})}catch{R(i)}},className:"ml-3 px-2 py-1.5 text-xs bg-cc-bg rounded-lg border border-cc-border text-cc-fg focus:outline-none focus:ring-1 focus:ring-cc-primary",children:[e.jsx("option",{value:"loopback",children:"Loopback (default)"}),e.jsx("option",{value:"jsonHandoff",children:"JSON handoff (experimental)"})]})]})})]})]}),e.jsxs("section",{id:"webhooks",ref:l("webhooks"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Webhooks"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs text-cc-muted",children:"The public URL is used for webhook URLs that external services (Linear, GitHub) send events to. Set this to the externally-reachable address of your Companion instance."}),e.jsxs("p",{className:"text-xs text-cc-muted",children:["Tip:"," ",e.jsx("a",{href:"#/integrations/tailscale",className:"text-cc-primary hover:underline",children:"Use the Tailscale integration"})," ","to get an HTTPS URL automatically."]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-cc-fg mb-1.5",htmlFor:"public-url",children:"Public URL"}),e.jsx("input",{id:"public-url",type:"url","aria-label":"Public URL",value:T,onChange:t=>M(t.target.value),placeholder:"https://your-domain.example.com",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg border border-cc-border text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary font-mono-code"}),e.jsx("p",{className:"mt-1.5 text-[10px] text-cc-muted",children:T?`Using: ${T}`:`Fallback: ${typeof window<"u"?window.location.origin:"http://localhost:3456"}`})]}),e.jsx("button",{type:"button",onClick:async()=>{C(!0),b("");try{const t=await n.updateSettings({publicUrl:T.trim()});M(t.publicUrl),o.getState().setPublicUrl(t.publicUrl),y(!0),setTimeout(()=>y(!1),1800)}catch(t){b(t instanceof Error?t.message:String(t))}finally{C(!1)}},disabled:g,className:"px-4 py-2 min-h-[44px] rounded-lg text-sm font-medium bg-cc-primary text-white hover:opacity-90 transition-opacity disabled:opacity-50 cursor-pointer",children:g?"Saving...":ae?"Saved!":"Save Public URL"})]})]}),e.jsxs("section",{id:"authentication",ref:l("authentication"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Authentication"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs text-cc-muted",children:"Use the auth token or QR code to connect additional devices (e.g. mobile over Tailscale)."}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1.5",children:"Auth Token"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex-1 px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg font-mono-code select-all break-all flex items-center",children:N?q?N:"••••••••••••••••":e.jsx("span",{className:"text-cc-muted",children:"Loading..."})}),e.jsx("button",{type:"button",onClick:()=>Ee(t=>!t),className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors cursor-pointer",title:q?"Hide token":"Show token",children:q?"Hide":"Show"}),e.jsx("button",{type:"button",onClick:()=>{N&&navigator.clipboard.writeText(N).then(()=>{Pe(!0),setTimeout(()=>Pe(!1),1500)})},disabled:!N,className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed",title:"Copy token to clipboard",children:Xe?"Copied":"Copy"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1.5",children:"Mobile Login QR"}),u&&u.length>0?e.jsxs("div",{className:"space-y-3",children:[u.length>1&&e.jsx("div",{className:"flex gap-1",children:u.map((t,c)=>e.jsx("button",{type:"button",onClick:()=>ze(c),className:`px-3 py-1.5 rounded-md text-xs font-medium transition-colors cursor-pointer ${c===E?"bg-cc-primary text-white":"bg-cc-hover text-cc-muted hover:text-cc-fg"}`,children:t.label},t.label))}),e.jsx("div",{className:"inline-block rounded-lg bg-white p-2",children:e.jsx("img",{src:u[E].qrDataUrl,alt:`QR code for ${u[E].label} login`,className:"w-48 h-48"})}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-bg text-sm font-mono-code text-cc-fg break-all select-all",children:u[E].url}),e.jsx("p",{className:"text-xs text-cc-muted",children:"Scan with your phone's camera app — it will open the URL and auto-authenticate."})]}):u&&u.length===0?e.jsx("p",{className:"text-xs text-cc-muted",children:"No remote addresses detected (LAN or Tailscale). Connect to a network to generate a QR code."}):e.jsx("button",{type:"button",onClick:async()=>{Ve(!0);try{const t=await n.getAuthQr();Ie(t.qrCodes)}catch{}finally{Ve(!1)}},disabled:Y,className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${Y?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-hover hover:bg-cc-active text-cc-fg cursor-pointer"}`,children:Y?"Generating...":"Show QR Code"})]}),e.jsxs("div",{className:"pt-2",children:[e.jsx("button",{type:"button",onClick:async()=>{if(confirm("Regenerate auth token? All existing sessions on other devices will be signed out.")){Re(!0);try{const t=await n.regenerateAuthToken();Te(t.token),Ee(!0),Ie(null)}catch{}finally{Re(!1)}}},disabled:W,className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${W?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-error/10 hover:bg-cc-error/20 text-cc-error cursor-pointer"}`,children:W?"Regenerating...":"Regenerate Token"}),e.jsx("p",{className:"mt-1.5 text-xs text-cc-muted",children:"Creates a new token. All other signed-in devices will need to re-authenticate."})]})]})]}),e.jsxs("section",{id:"notifications",ref:l("notifications"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Notifications"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("button",{type:"button",onClick:He,className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg text-sm bg-cc-hover text-cc-fg hover:bg-cc-active transition-colors cursor-pointer",children:[e.jsx("span",{children:"Sound"}),e.jsx("span",{className:"text-xs text-cc-muted",children:Be?"On":"Off"})]}),_e&&e.jsxs("button",{type:"button",onClick:async()=>{if(re)le(!1);else{if(Notification.permission!=="granted"&&await Notification.requestPermission()!=="granted")return;le(!0)}},className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg text-sm bg-cc-hover text-cc-fg hover:bg-cc-active transition-colors cursor-pointer",children:[e.jsx("span",{children:"Desktop Alerts"}),e.jsx("span",{className:"text-xs text-cc-muted",children:re?"On":"Off"})]})]})]}),e.jsxs("section",{id:"providers",ref:l("providers"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Providers"}),e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-xs text-cc-muted",children:"Configure authentication tokens for Claude Code and Codex. These are injected into sessions automatically."}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"block text-sm font-medium",htmlFor:"claude-code-token",children:"Claude Code OAuth Token"}),e.jsxs("p",{className:"text-xs text-cc-muted",children:["Run ",e.jsx("code",{className:"font-mono-code bg-cc-code-bg px-1 py-0.5 rounded text-cc-code-fg",children:"claude setup-token"})," in your terminal, then paste the token here."]}),e.jsx("input",{id:"claude-code-token",type:"password",value:H&&!We&&!h?"••••••••••••••••":h,onChange:t=>ve(t.target.value),onFocus:()=>Ae(!0),onBlur:()=>Ae(!1),placeholder:H?"Enter a new token to replace":"Paste token from claude setup-token",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary/40 transition-shadow"}),e.jsx("p",{className:"text-xs text-cc-muted",children:H?"Claude Code token configured":"Claude Code token not configured"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"block text-sm font-medium",htmlFor:"openai-api-key",children:"OpenAI API Key (Codex)"}),e.jsxs("p",{className:"text-xs text-cc-muted",children:["Used to authenticate Codex sessions. You can also use ",e.jsx("code",{className:"font-mono-code bg-cc-code-bg px-1 py-0.5 rounded text-cc-code-fg",children:"codex --login"})," for device-based auth."]}),e.jsx("input",{id:"openai-api-key",type:"password",value:Q&&!Je&&!f?"••••••••••••••••":f,onChange:t=>ke(t.target.value),onFocus:()=>Ue(!0),onBlur:()=>Ue(!1),placeholder:Q?"Enter a new key to replace":"sk-...",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary/40 transition-shadow"}),e.jsx("p",{className:"text-xs text-cc-muted",children:Q?"OpenAI key configured":"OpenAI key not configured"})]}),Ce&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-error/10 border border-cc-error/20 text-xs text-cc-error",children:Ce}),Ye&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-success/10 border border-cc-success/20 text-xs text-cc-success",children:"Provider settings saved."}),e.jsx("button",{type:"button",disabled:_||!h.trim()&&!f.trim(),onClick:async()=>{we(!0),Se(""),G(!1);try{const t={};h.trim()&&(t.claudeCodeOAuthToken=h.trim()),f.trim()&&(t.openaiApiKey=f.trim());const c=await n.updateSettings(t);je(c.claudeCodeOAuthTokenConfigured),Ne(c.openaiApiKeyConfigured),ve(""),ke(""),G(!0),setTimeout(()=>G(!1),1800)}catch(t){Se(t instanceof Error?t.message:String(t))}finally{we(!1)}},className:`px-4 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${_||!h.trim()&&!f.trim()?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-primary hover:bg-cc-primary-hover text-white cursor-pointer"}`,children:_?"Saving...":"Save Provider Settings"})]})]}),e.jsxs("section",{id:"anthropic",ref:l("anthropic"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Anthropic"}),e.jsxs("form",{onSubmit:Ze,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1.5",htmlFor:"anthropic-key",children:"Anthropic API Key"}),e.jsx("input",{id:"anthropic-key",type:"password",value:d&&!qe&&!p?"••••••••••••••••":p,onChange:t=>{te(t.target.value),m(null)},onFocus:()=>be(!0),onBlur:()=>be(!1),placeholder:d?"Enter a new key to replace":"sk-ant-api03-...",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary/40 transition-shadow"}),e.jsx("p",{className:"mt-1.5 text-xs text-cc-muted",children:"Auto-renaming is disabled until this key is configured."})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1.5",htmlFor:"anthropic-model",children:"Anthropic Model"}),e.jsx("input",{id:"anthropic-model",type:"text",value:se,onChange:t=>ce(t.target.value),placeholder:"claude-sonnet-4-6",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary/40 transition-shadow"})]}),oe&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-error/10 border border-cc-error/20 text-xs text-cc-error",children:oe}),ae&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-success/10 border border-cc-success/20 text-xs text-cc-success",children:"Settings saved."}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs text-cc-muted",children:w?"Loading...":d?"Anthropic key configured":"Anthropic key not configured"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{type:"button",disabled:B||!p.trim(),onClick:async()=>{ye(!0),m(null);try{const t=await n.verifyAnthropicKey(p.trim());m(t),setTimeout(()=>m(null),5e3)}catch(t){m({valid:!1,error:t instanceof Error?t.message:String(t)}),setTimeout(()=>m(null),5e3)}finally{ye(!1)}},className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${B||!p.trim()?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-hover hover:bg-cc-active text-cc-fg cursor-pointer"}`,children:B?"Verifying...":"Verify"}),e.jsx("button",{type:"submit",disabled:g||w,className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${g||w?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-primary hover:bg-cc-primary-hover text-white cursor-pointer"}`,children:g?"Saving...":"Save"})]})]}),k&&e.jsx("div",{className:`px-3 py-2 rounded-lg text-xs ${k.valid?"bg-cc-success/10 border border-cc-success/20 text-cc-success":"bg-cc-error/10 border border-cc-error/20 text-cc-error"}`,children:k.valid?"API key is valid.":`Invalid API key${k.error?`: ${k.error}`:"."}`})]})]}),e.jsxs("section",{id:"ai-validation",ref:l("ai-validation"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"AI Validation"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-cc-muted leading-relaxed",children:"When enabled, an AI model evaluates tool calls before they execute. Safe operations are auto-approved, dangerous ones are blocked, and uncertain cases are shown to you with a recommendation. Requires an Anthropic API key. These settings serve as defaults for new sessions. Each session can override AI validation independently via the shield icon in the session header."}),e.jsxs("button",{type:"button",onClick:()=>z("aiValidationEnabled"),disabled:!d,className:`w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg transition-colors ${d?"bg-cc-hover hover:bg-cc-active text-cc-fg cursor-pointer":"bg-cc-hover text-cc-muted cursor-not-allowed opacity-60"}`,children:[e.jsx("span",{className:"text-sm",children:"AI Validation Mode"}),e.jsx("span",{className:`text-xs font-medium ${U&&d?"text-cc-success":"text-cc-muted"}`,children:U&&d?"On":"Off"})]}),!d&&e.jsx("p",{className:"text-[11px] text-cc-warning",children:"Configure an Anthropic API key above to enable AI validation."}),U&&d&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",onClick:()=>z("aiValidationAutoApprove"),className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors cursor-pointer",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm",children:"Auto-approve safe tools"}),e.jsx("p",{className:"text-[11px] text-cc-muted mt-0.5",children:"Automatically allow read-only tools and benign commands"})]}),e.jsx("span",{className:`text-xs font-medium ${$?"text-cc-success":"text-cc-muted"}`,children:$?"On":"Off"})]}),e.jsxs("button",{type:"button",onClick:()=>z("aiValidationAutoDeny"),className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors cursor-pointer",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm",children:"Auto-deny dangerous tools"}),e.jsx("p",{className:"text-[11px] text-cc-muted mt-0.5",children:"Automatically block destructive commands like rm -rf"})]}),e.jsx("span",{className:`text-xs font-medium ${F?"text-cc-success":"text-cc-muted"}`,children:F?"On":"Off"})]})]})]})]}),e.jsxs("section",{id:"updates",ref:l("updates"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Updates"}),e.jsxs("div",{className:"space-y-3",children:[a?e.jsxs("p",{className:"text-xs text-cc-muted",children:["Current version: v",a.currentVersion,a.latestVersion?` • Latest: v${a.latestVersion}`:"",a.channel==="prerelease"?" (prerelease)":""]}):e.jsx("p",{className:"text-xs text-cc-muted",children:"Version information not loaded yet."}),e.jsxs("div",{children:[e.jsx("span",{id:"update-channel-label",className:"block text-sm font-medium mb-1.5",children:"Update Channel"}),e.jsxs("div",{className:"flex gap-1",role:"radiogroup","aria-labelledby":"update-channel-label",children:[e.jsx("button",{type:"button",role:"radio","aria-checked":x==="stable",onClick:async()=>{if(x!=="stable"){v("stable");try{await n.updateSettings({updateChannel:"stable"})}catch{v("prerelease");return}try{const t=await n.forceCheckForUpdate();I(t)}catch{}}},className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors cursor-pointer ${x==="stable"?"bg-cc-primary text-white":"bg-cc-hover text-cc-muted hover:text-cc-fg hover:bg-cc-active"}`,children:"Stable"}),e.jsx("button",{type:"button",role:"radio","aria-checked":x==="prerelease",onClick:async()=>{if(x!=="prerelease"){v("prerelease");try{await n.updateSettings({updateChannel:"prerelease"})}catch{v("stable");return}try{const t=await n.forceCheckForUpdate();I(t)}catch{}}},className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors cursor-pointer ${x==="prerelease"?"bg-cc-primary text-white":"bg-cc-hover text-cc-muted hover:text-cc-fg hover:bg-cc-active"}`,children:"Prerelease"})]}),e.jsx("p",{className:"mt-1.5 text-xs text-cc-muted",children:x==="prerelease"?"Tracking prerelease channel. You will receive preview builds from the latest main branch.":"Tracking stable channel. You will only receive versioned releases."})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"block text-sm font-medium",children:"Auto-update Docker image"}),e.jsx("p",{className:"mt-0.5 text-xs text-cc-muted",children:"Automatically re-pull the sandbox Docker image when updating The Companion"})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":S,onClick:async()=>{const t=!S;V(t);try{await n.updateSettings({dockerAutoUpdate:t})}catch{V(!t)}},className:`relative inline-flex h-6 w-11 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors ${S?"bg-cc-primary":"bg-cc-hover"}`,children:e.jsx("span",{className:`pointer-events-none inline-block h-5 w-5 rounded-full bg-white shadow transform transition-transform ${S?"translate-x-5":"translate-x-0"}`})})]}),me&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-error/10 border border-cc-error/20 text-xs text-cc-error",children:me}),pe&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-success/10 border border-cc-success/20 text-xs text-cc-success",children:pe}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("button",{type:"button",onClick:et,disabled:P,className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${P?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-hover hover:bg-cc-active text-cc-fg cursor-pointer"}`,children:P?"Checking...":"Check for updates"}),a!=null&&a.isServiceMode?e.jsx("button",{type:"button",onClick:tt,disabled:O||a.updateInProgress||!a.updateAvailable,className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${O||a.updateInProgress||!a.updateAvailable?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-primary hover:bg-cc-primary-hover text-white cursor-pointer"}`,children:O||a.updateInProgress?"Updating...":"Update & Restart"}):e.jsxs("p",{className:"text-xs text-cc-muted self-center",children:["Install service mode with ",e.jsx("code",{className:"font-mono-code bg-cc-code-bg px-1 py-0.5 rounded text-cc-code-fg",children:"the-companion install"})," to enable one-click updates."]})]})]})]}),e.jsxs("section",{id:"telemetry",ref:l("telemetry"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Telemetry"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-cc-muted",children:"Anonymous product analytics and crash reports via PostHog to improve reliability."}),e.jsxs("button",{type:"button",onClick:()=>{const t=!he;ot(t),Ge(t)},className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg text-sm bg-cc-hover text-cc-fg hover:bg-cc-active transition-colors cursor-pointer",children:[e.jsx("span",{children:"Usage analytics and errors"}),e.jsx("span",{className:"text-xs text-cc-muted",children:he?"On":"Off"})]}),e.jsx("p",{className:"text-xs text-cc-muted",children:"Browser Do Not Track is respected automatically."})]})]}),e.jsxs("section",{id:"environments",ref:l("environments"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Environments"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-cc-muted",children:"Manage reusable environment profiles used when creating sessions."}),e.jsx("button",{type:"button",onClick:()=>{window.location.hash="#/environments"},className:"px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium bg-cc-primary hover:bg-cc-primary-hover text-white transition-colors cursor-pointer",children:"Open Environments Page"})]})]})]})})]})]})}export{it as SettingsPage};
|
|
1
|
+
import{r as s,u as o,g as st,a as n,j as e,n as ct,b as nt,s as ot}from"./index-v7VXwTts.js";const Z=[{id:"general",label:"General"},{id:"webhooks",label:"Webhooks"},{id:"authentication",label:"Authentication"},{id:"notifications",label:"Notifications"},{id:"providers",label:"Providers"},{id:"anthropic",label:"Anthropic"},{id:"ai-validation",label:"AI Validation"},{id:"updates",label:"Updates"},{id:"telemetry",label:"Telemetry"},{id:"environments",label:"Environments"}];function it({embedded:ee=!1}){const[p,te]=s.useState(""),[se,ce]=s.useState("claude-sonnet-4-6"),[d,ne]=s.useState(!1),[w,Le]=s.useState(!0),[g,C]=s.useState(!1),[oe,b]=s.useState(""),[ae,y]=s.useState(!1),Fe=o(t=>t.darkMode),Ke=o(t=>t.toggleDarkMode),ie=o(t=>t.diffBase),Me=o(t=>t.setDiffBase),Be=o(t=>t.notificationSound),He=o(t=>t.toggleNotificationSound),re=o(t=>t.notificationDesktop),le=o(t=>t.setNotificationDesktop),a=o(t=>t.updateInfo),I=o(t=>t.setUpdateInfo),Qe=o(t=>t.setUpdateOverlayActive),_e=typeof Notification<"u",[x,v]=s.useState("stable"),[S,V]=s.useState(!1),[de,R]=s.useState("loopback"),[P,ue]=s.useState(!1),[O,xe]=s.useState(!1),[pe,j]=s.useState(""),[me,A]=s.useState(""),[he,Ge]=s.useState(st()),[U,D]=s.useState(!1),[$,L]=s.useState(!0),[F,K]=s.useState(!1),[T,M]=s.useState(""),[fe,ge]=s.useState("general"),[qe,be]=s.useState(!1),[B,ye]=s.useState(!1),[k,m]=s.useState(null),[h,ve]=s.useState(""),[H,je]=s.useState(!1),[f,ke]=s.useState(""),[Q,Ne]=s.useState(!1),[_,we]=s.useState(!1),[Ye,G]=s.useState(!1),[Ce,Se]=s.useState(""),[We,Ae]=s.useState(!1),[Je,Ue]=s.useState(!1),[N,Te]=s.useState(null),[q,Ee]=s.useState(!1),[u,Ie]=s.useState(null),[E,ze]=s.useState(0),[Y,Ve]=s.useState(!1),[W,Re]=s.useState(!1),[Xe,Pe]=s.useState(!1),Oe=s.useRef(null),J=s.useRef({});s.useEffect(()=>{const t=Oe.current;if(!t)return;const c=new IntersectionObserver(i=>{var $e;let r=null;for(const X of i)X.isIntersecting&&(!r||X.boundingClientRect.top<r.boundingClientRect.top)&&(r=X);($e=r==null?void 0:r.target)!=null&&$e.id&&ge(r.target.id)},{root:t,rootMargin:"-10% 0px -70% 0px",threshold:0});for(const i of Z){const r=J.current[i.id];r&&c.observe(r)}return()=>c.disconnect()},[w]);const De=s.useCallback(t=>{ge(t);const c=J.current[t];c&&c.scrollIntoView({behavior:"smooth",block:"start"})},[]);s.useEffect(()=>{n.getSettings().then(t=>{ne(t.anthropicApiKeyConfigured),je(t.claudeCodeOAuthTokenConfigured),Ne(t.openaiApiKeyConfigured),ce(t.anthropicModel||"claude-sonnet-4-6"),typeof t.aiValidationEnabled=="boolean"&&D(t.aiValidationEnabled),typeof t.aiValidationAutoApprove=="boolean"&&L(t.aiValidationAutoApprove),typeof t.aiValidationAutoDeny=="boolean"&&K(t.aiValidationAutoDeny),(t.updateChannel==="stable"||t.updateChannel==="prerelease")&&v(t.updateChannel),typeof t.dockerAutoUpdate=="boolean"&&V(t.dockerAutoUpdate),(t.cliBridgeMode==="loopback"||t.cliBridgeMode==="jsonHandoff")&&R(t.cliBridgeMode),typeof t.publicUrl=="string"&&(M(t.publicUrl),o.getState().setPublicUrl(t.publicUrl))}).catch(t=>b(t instanceof Error?t.message:String(t))).finally(()=>Le(!1)),n.getAuthToken().then(t=>Te(t.token)).catch(()=>{})},[]);async function Ze(t){t.preventDefault(),C(!0),b(""),y(!1);try{const c=p.trim(),i={anthropicModel:se.trim()||"claude-sonnet-4-6"};c&&(i.anthropicApiKey=c);const r=await n.updateSettings(i);ne(r.anthropicApiKeyConfigured),te(""),y(!0),setTimeout(()=>y(!1),1800)}catch(c){b(c instanceof Error?c.message:String(c))}finally{C(!1)}}async function z(t){const c=t==="aiValidationEnabled"?U:t==="aiValidationAutoApprove"?$:F,i=!c;t==="aiValidationEnabled"?D(i):t==="aiValidationAutoApprove"?L(i):K(i);try{await n.updateSettings({[t]:i})}catch{t==="aiValidationEnabled"?D(c):t==="aiValidationAutoApprove"?L(c):K(c)}}async function et(){ue(!0),j(""),A("");try{const t=await n.forceCheckForUpdate();I(t),t.updateAvailable&&t.latestVersion?j(`Update v${t.latestVersion} is available.`):j("You are up to date.")}catch(t){A(t instanceof Error?t.message:String(t))}finally{ue(!1)}}async function tt(){xe(!0),j(""),A("");try{localStorage.setItem("companion_docker_prompt_pending","1");const t=await n.triggerUpdate();j(t.message),Qe(!0)}catch(t){localStorage.removeItem("companion_docker_prompt_pending"),A(t instanceof Error?t.message:String(t)),xe(!1)}}const l=s.useCallback(t=>c=>{J.current[t]=c},[]);return e.jsxs("div",{className:`${ee?"h-full":"h-[100dvh]"} bg-cc-bg text-cc-fg font-sans-ui antialiased flex flex-col`,children:[e.jsx("div",{className:"shrink-0 max-w-5xl w-full mx-auto px-4 sm:px-8 pt-6 sm:pt-10",children:e.jsxs("div",{className:"flex items-start justify-between gap-3 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl font-semibold text-cc-fg",children:"Settings"}),e.jsx("p",{className:"mt-1 text-sm text-cc-muted",children:"Configure API access, notifications, appearance, and workspace defaults."})]}),!ee&&e.jsx("button",{onClick:()=>{const t=o.getState().currentSessionId;t?ct(t):nt()},className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm text-cc-muted hover:text-cc-fg hover:bg-cc-hover transition-colors cursor-pointer",children:"Back"})]})}),e.jsx("div",{className:"sm:hidden shrink-0 border-b border-cc-border",children:e.jsx("nav",{className:"flex gap-1 px-4 py-2 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden","aria-label":"Settings categories",children:Z.map(t=>e.jsx("button",{type:"button",onClick:()=>De(t.id),className:`shrink-0 px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors cursor-pointer ${fe===t.id?"text-cc-primary bg-cc-primary/8":"text-cc-muted hover:text-cc-fg hover:bg-cc-hover"}`,children:t.label},t.id))})}),e.jsxs("div",{className:"flex-1 min-h-0 flex max-w-5xl w-full mx-auto",children:[e.jsx("nav",{className:"hidden sm:flex flex-col gap-0.5 w-44 shrink-0 pt-2 pr-6 pl-8 sticky top-0 self-start","aria-label":"Settings categories",children:Z.map(t=>e.jsx("button",{type:"button",onClick:()=>De(t.id),className:`text-left px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors cursor-pointer ${fe===t.id?"text-cc-primary bg-cc-primary/8":"text-cc-muted hover:text-cc-fg hover:bg-cc-hover"}`,children:t.label},t.id))}),e.jsx("div",{ref:Oe,className:"flex-1 min-w-0 overflow-y-auto px-4 sm:px-8 sm:pl-0 pb-safe",children:e.jsxs("div",{className:"space-y-10 py-4 sm:py-2",children:[e.jsxs("section",{id:"general",ref:l("general"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"General"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("button",{type:"button",onClick:Ke,className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg text-sm bg-cc-hover text-cc-fg hover:bg-cc-active transition-colors cursor-pointer",children:[e.jsx("span",{children:"Theme"}),e.jsx("span",{className:"text-xs text-cc-muted",children:Fe?"Dark":"Light"})]}),e.jsxs("button",{type:"button",onClick:()=>Me(ie==="last-commit"?"default-branch":"last-commit"),className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg text-sm bg-cc-hover text-cc-fg hover:bg-cc-active transition-colors cursor-pointer",children:[e.jsx("span",{children:"Diff compare against"}),e.jsx("span",{className:"text-xs text-cc-muted",children:ie==="last-commit"?"Last commit (HEAD)":"Default branch"})]}),e.jsx("p",{className:"text-xs text-cc-muted px-1",children:"Last commit shows only uncommitted changes. Default branch shows all changes since diverging from main."}),e.jsx("div",{className:"pt-3 border-t border-cc-border",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"block text-sm font-medium",children:"Claude Code bridge mode"}),e.jsx("p",{className:"mt-0.5 text-xs text-cc-muted",children:'How the Companion hands the bridge URL to the spawned Claude Code CLI. Loopback is the default fix for Claude Code v1.2.1+ which rejects the literal "localhost". JSON handoff is the more robust just-every/code-style approach: writes a temp descriptor with a one-shot token and passes its path via CLAUDE_BRIDGE_CONFIG.'})]}),e.jsxs("select",{"aria-label":"CLI bridge mode",value:de,onChange:async t=>{const c=t.target.value==="jsonHandoff"?"jsonHandoff":"loopback",i=de;R(c);try{await n.updateSettings({cliBridgeMode:c})}catch{R(i)}},className:"ml-3 px-2 py-1.5 text-xs bg-cc-bg rounded-lg border border-cc-border text-cc-fg focus:outline-none focus:ring-1 focus:ring-cc-primary",children:[e.jsx("option",{value:"loopback",children:"Loopback (default)"}),e.jsx("option",{value:"jsonHandoff",children:"JSON handoff (experimental)"})]})]})})]})]}),e.jsxs("section",{id:"webhooks",ref:l("webhooks"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Webhooks"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs text-cc-muted",children:"The public URL is used for webhook URLs that external services (Linear, GitHub) send events to. Set this to the externally-reachable address of your Companion instance."}),e.jsxs("p",{className:"text-xs text-cc-muted",children:["Tip:"," ",e.jsx("a",{href:"#/integrations/tailscale",className:"text-cc-primary hover:underline",children:"Use the Tailscale integration"})," ","to get an HTTPS URL automatically."]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-cc-fg mb-1.5",htmlFor:"public-url",children:"Public URL"}),e.jsx("input",{id:"public-url",type:"url","aria-label":"Public URL",value:T,onChange:t=>M(t.target.value),placeholder:"https://your-domain.example.com",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg border border-cc-border text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary font-mono-code"}),e.jsx("p",{className:"mt-1.5 text-[10px] text-cc-muted",children:T?`Using: ${T}`:`Fallback: ${typeof window<"u"?window.location.origin:"http://localhost:3456"}`})]}),e.jsx("button",{type:"button",onClick:async()=>{C(!0),b("");try{const t=await n.updateSettings({publicUrl:T.trim()});M(t.publicUrl),o.getState().setPublicUrl(t.publicUrl),y(!0),setTimeout(()=>y(!1),1800)}catch(t){b(t instanceof Error?t.message:String(t))}finally{C(!1)}},disabled:g,className:"px-4 py-2 min-h-[44px] rounded-lg text-sm font-medium bg-cc-primary text-white hover:opacity-90 transition-opacity disabled:opacity-50 cursor-pointer",children:g?"Saving...":ae?"Saved!":"Save Public URL"})]})]}),e.jsxs("section",{id:"authentication",ref:l("authentication"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Authentication"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs text-cc-muted",children:"Use the auth token or QR code to connect additional devices (e.g. mobile over Tailscale)."}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1.5",children:"Auth Token"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex-1 px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg font-mono-code select-all break-all flex items-center",children:N?q?N:"••••••••••••••••":e.jsx("span",{className:"text-cc-muted",children:"Loading..."})}),e.jsx("button",{type:"button",onClick:()=>Ee(t=>!t),className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors cursor-pointer",title:q?"Hide token":"Show token",children:q?"Hide":"Show"}),e.jsx("button",{type:"button",onClick:()=>{N&&navigator.clipboard.writeText(N).then(()=>{Pe(!0),setTimeout(()=>Pe(!1),1500)})},disabled:!N,className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed",title:"Copy token to clipboard",children:Xe?"Copied":"Copy"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1.5",children:"Mobile Login QR"}),u&&u.length>0?e.jsxs("div",{className:"space-y-3",children:[u.length>1&&e.jsx("div",{className:"flex gap-1",children:u.map((t,c)=>e.jsx("button",{type:"button",onClick:()=>ze(c),className:`px-3 py-1.5 rounded-md text-xs font-medium transition-colors cursor-pointer ${c===E?"bg-cc-primary text-white":"bg-cc-hover text-cc-muted hover:text-cc-fg"}`,children:t.label},t.label))}),e.jsx("div",{className:"inline-block rounded-lg bg-white p-2",children:e.jsx("img",{src:u[E].qrDataUrl,alt:`QR code for ${u[E].label} login`,className:"w-48 h-48"})}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-bg text-sm font-mono-code text-cc-fg break-all select-all",children:u[E].url}),e.jsx("p",{className:"text-xs text-cc-muted",children:"Scan with your phone's camera app — it will open the URL and auto-authenticate."})]}):u&&u.length===0?e.jsx("p",{className:"text-xs text-cc-muted",children:"No remote addresses detected (LAN or Tailscale). Connect to a network to generate a QR code."}):e.jsx("button",{type:"button",onClick:async()=>{Ve(!0);try{const t=await n.getAuthQr();Ie(t.qrCodes)}catch{}finally{Ve(!1)}},disabled:Y,className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${Y?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-hover hover:bg-cc-active text-cc-fg cursor-pointer"}`,children:Y?"Generating...":"Show QR Code"})]}),e.jsxs("div",{className:"pt-2",children:[e.jsx("button",{type:"button",onClick:async()=>{if(confirm("Regenerate auth token? All existing sessions on other devices will be signed out.")){Re(!0);try{const t=await n.regenerateAuthToken();Te(t.token),Ee(!0),Ie(null)}catch{}finally{Re(!1)}}},disabled:W,className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${W?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-error/10 hover:bg-cc-error/20 text-cc-error cursor-pointer"}`,children:W?"Regenerating...":"Regenerate Token"}),e.jsx("p",{className:"mt-1.5 text-xs text-cc-muted",children:"Creates a new token. All other signed-in devices will need to re-authenticate."})]})]})]}),e.jsxs("section",{id:"notifications",ref:l("notifications"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Notifications"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("button",{type:"button",onClick:He,className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg text-sm bg-cc-hover text-cc-fg hover:bg-cc-active transition-colors cursor-pointer",children:[e.jsx("span",{children:"Sound"}),e.jsx("span",{className:"text-xs text-cc-muted",children:Be?"On":"Off"})]}),_e&&e.jsxs("button",{type:"button",onClick:async()=>{if(re)le(!1);else{if(Notification.permission!=="granted"&&await Notification.requestPermission()!=="granted")return;le(!0)}},className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg text-sm bg-cc-hover text-cc-fg hover:bg-cc-active transition-colors cursor-pointer",children:[e.jsx("span",{children:"Desktop Alerts"}),e.jsx("span",{className:"text-xs text-cc-muted",children:re?"On":"Off"})]})]})]}),e.jsxs("section",{id:"providers",ref:l("providers"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Providers"}),e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-xs text-cc-muted",children:"Configure authentication tokens for Claude Code and Codex. These are injected into sessions automatically."}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"block text-sm font-medium",htmlFor:"claude-code-token",children:"Claude Code OAuth Token"}),e.jsxs("p",{className:"text-xs text-cc-muted",children:["Run ",e.jsx("code",{className:"font-mono-code bg-cc-code-bg px-1 py-0.5 rounded text-cc-code-fg",children:"claude setup-token"})," in your terminal, then paste the token here."]}),e.jsx("input",{id:"claude-code-token",type:"password",value:H&&!We&&!h?"••••••••••••••••":h,onChange:t=>ve(t.target.value),onFocus:()=>Ae(!0),onBlur:()=>Ae(!1),placeholder:H?"Enter a new token to replace":"Paste token from claude setup-token",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary/40 transition-shadow"}),e.jsx("p",{className:"text-xs text-cc-muted",children:H?"Claude Code token configured":"Claude Code token not configured"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"block text-sm font-medium",htmlFor:"openai-api-key",children:"OpenAI API Key (Codex)"}),e.jsxs("p",{className:"text-xs text-cc-muted",children:["Used to authenticate Codex sessions. You can also use ",e.jsx("code",{className:"font-mono-code bg-cc-code-bg px-1 py-0.5 rounded text-cc-code-fg",children:"codex --login"})," for device-based auth."]}),e.jsx("input",{id:"openai-api-key",type:"password",value:Q&&!Je&&!f?"••••••••••••••••":f,onChange:t=>ke(t.target.value),onFocus:()=>Ue(!0),onBlur:()=>Ue(!1),placeholder:Q?"Enter a new key to replace":"sk-...",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary/40 transition-shadow"}),e.jsx("p",{className:"text-xs text-cc-muted",children:Q?"OpenAI key configured":"OpenAI key not configured"})]}),Ce&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-error/10 border border-cc-error/20 text-xs text-cc-error",children:Ce}),Ye&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-success/10 border border-cc-success/20 text-xs text-cc-success",children:"Provider settings saved."}),e.jsx("button",{type:"button",disabled:_||!h.trim()&&!f.trim(),onClick:async()=>{we(!0),Se(""),G(!1);try{const t={};h.trim()&&(t.claudeCodeOAuthToken=h.trim()),f.trim()&&(t.openaiApiKey=f.trim());const c=await n.updateSettings(t);je(c.claudeCodeOAuthTokenConfigured),Ne(c.openaiApiKeyConfigured),ve(""),ke(""),G(!0),setTimeout(()=>G(!1),1800)}catch(t){Se(t instanceof Error?t.message:String(t))}finally{we(!1)}},className:`px-4 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${_||!h.trim()&&!f.trim()?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-primary hover:bg-cc-primary-hover text-white cursor-pointer"}`,children:_?"Saving...":"Save Provider Settings"})]})]}),e.jsxs("section",{id:"anthropic",ref:l("anthropic"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Anthropic"}),e.jsxs("form",{onSubmit:Ze,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1.5",htmlFor:"anthropic-key",children:"Anthropic API Key"}),e.jsx("input",{id:"anthropic-key",type:"password",value:d&&!qe&&!p?"••••••••••••••••":p,onChange:t=>{te(t.target.value),m(null)},onFocus:()=>be(!0),onBlur:()=>be(!1),placeholder:d?"Enter a new key to replace":"sk-ant-api03-...",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary/40 transition-shadow"}),e.jsx("p",{className:"mt-1.5 text-xs text-cc-muted",children:"Auto-renaming is disabled until this key is configured."})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1.5",htmlFor:"anthropic-model",children:"Anthropic Model"}),e.jsx("input",{id:"anthropic-model",type:"text",value:se,onChange:t=>ce(t.target.value),placeholder:"claude-sonnet-4-6",className:"w-full px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg text-cc-fg placeholder:text-cc-muted focus:outline-none focus:ring-1 focus:ring-cc-primary/40 transition-shadow"})]}),oe&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-error/10 border border-cc-error/20 text-xs text-cc-error",children:oe}),ae&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-success/10 border border-cc-success/20 text-xs text-cc-success",children:"Settings saved."}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs text-cc-muted",children:w?"Loading...":d?"Anthropic key configured":"Anthropic key not configured"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{type:"button",disabled:B||!p.trim(),onClick:async()=>{ye(!0),m(null);try{const t=await n.verifyAnthropicKey(p.trim());m(t),setTimeout(()=>m(null),5e3)}catch(t){m({valid:!1,error:t instanceof Error?t.message:String(t)}),setTimeout(()=>m(null),5e3)}finally{ye(!1)}},className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${B||!p.trim()?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-hover hover:bg-cc-active text-cc-fg cursor-pointer"}`,children:B?"Verifying...":"Verify"}),e.jsx("button",{type:"submit",disabled:g||w,className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${g||w?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-primary hover:bg-cc-primary-hover text-white cursor-pointer"}`,children:g?"Saving...":"Save"})]})]}),k&&e.jsx("div",{className:`px-3 py-2 rounded-lg text-xs ${k.valid?"bg-cc-success/10 border border-cc-success/20 text-cc-success":"bg-cc-error/10 border border-cc-error/20 text-cc-error"}`,children:k.valid?"API key is valid.":`Invalid API key${k.error?`: ${k.error}`:"."}`})]})]}),e.jsxs("section",{id:"ai-validation",ref:l("ai-validation"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"AI Validation"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-cc-muted leading-relaxed",children:"When enabled, an AI model evaluates tool calls before they execute. Safe operations are auto-approved, dangerous ones are blocked, and uncertain cases are shown to you with a recommendation. Requires an Anthropic API key. These settings serve as defaults for new sessions. Each session can override AI validation independently via the shield icon in the session header."}),e.jsxs("button",{type:"button",onClick:()=>z("aiValidationEnabled"),disabled:!d,className:`w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg transition-colors ${d?"bg-cc-hover hover:bg-cc-active text-cc-fg cursor-pointer":"bg-cc-hover text-cc-muted cursor-not-allowed opacity-60"}`,children:[e.jsx("span",{className:"text-sm",children:"AI Validation Mode"}),e.jsx("span",{className:`text-xs font-medium ${U&&d?"text-cc-success":"text-cc-muted"}`,children:U&&d?"On":"Off"})]}),!d&&e.jsx("p",{className:"text-[11px] text-cc-warning",children:"Configure an Anthropic API key above to enable AI validation."}),U&&d&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",onClick:()=>z("aiValidationAutoApprove"),className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors cursor-pointer",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm",children:"Auto-approve safe tools"}),e.jsx("p",{className:"text-[11px] text-cc-muted mt-0.5",children:"Automatically allow read-only tools and benign commands"})]}),e.jsx("span",{className:`text-xs font-medium ${$?"text-cc-success":"text-cc-muted"}`,children:$?"On":"Off"})]}),e.jsxs("button",{type:"button",onClick:()=>z("aiValidationAutoDeny"),className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors cursor-pointer",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm",children:"Auto-deny dangerous tools"}),e.jsx("p",{className:"text-[11px] text-cc-muted mt-0.5",children:"Automatically block destructive commands like rm -rf"})]}),e.jsx("span",{className:`text-xs font-medium ${F?"text-cc-success":"text-cc-muted"}`,children:F?"On":"Off"})]})]})]})]}),e.jsxs("section",{id:"updates",ref:l("updates"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Updates"}),e.jsxs("div",{className:"space-y-3",children:[a?e.jsxs("p",{className:"text-xs text-cc-muted",children:["Current version: v",a.currentVersion,a.latestVersion?` • Latest: v${a.latestVersion}`:"",a.channel==="prerelease"?" (prerelease)":""]}):e.jsx("p",{className:"text-xs text-cc-muted",children:"Version information not loaded yet."}),e.jsxs("div",{children:[e.jsx("span",{id:"update-channel-label",className:"block text-sm font-medium mb-1.5",children:"Update Channel"}),e.jsxs("div",{className:"flex gap-1",role:"radiogroup","aria-labelledby":"update-channel-label",children:[e.jsx("button",{type:"button",role:"radio","aria-checked":x==="stable",onClick:async()=>{if(x!=="stable"){v("stable");try{await n.updateSettings({updateChannel:"stable"})}catch{v("prerelease");return}try{const t=await n.forceCheckForUpdate();I(t)}catch{}}},className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors cursor-pointer ${x==="stable"?"bg-cc-primary text-white":"bg-cc-hover text-cc-muted hover:text-cc-fg hover:bg-cc-active"}`,children:"Stable"}),e.jsx("button",{type:"button",role:"radio","aria-checked":x==="prerelease",onClick:async()=>{if(x!=="prerelease"){v("prerelease");try{await n.updateSettings({updateChannel:"prerelease"})}catch{v("stable");return}try{const t=await n.forceCheckForUpdate();I(t)}catch{}}},className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors cursor-pointer ${x==="prerelease"?"bg-cc-primary text-white":"bg-cc-hover text-cc-muted hover:text-cc-fg hover:bg-cc-active"}`,children:"Prerelease"})]}),e.jsx("p",{className:"mt-1.5 text-xs text-cc-muted",children:x==="prerelease"?"Tracking prerelease channel. You will receive preview builds from the latest main branch.":"Tracking stable channel. You will only receive versioned releases."})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"block text-sm font-medium",children:"Auto-update Docker image"}),e.jsx("p",{className:"mt-0.5 text-xs text-cc-muted",children:"Automatically re-pull the sandbox Docker image when updating The Companion"})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":S,onClick:async()=>{const t=!S;V(t);try{await n.updateSettings({dockerAutoUpdate:t})}catch{V(!t)}},className:`relative inline-flex h-6 w-11 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors ${S?"bg-cc-primary":"bg-cc-hover"}`,children:e.jsx("span",{className:`pointer-events-none inline-block h-5 w-5 rounded-full bg-white shadow transform transition-transform ${S?"translate-x-5":"translate-x-0"}`})})]}),me&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-error/10 border border-cc-error/20 text-xs text-cc-error",children:me}),pe&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-success/10 border border-cc-success/20 text-xs text-cc-success",children:pe}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("button",{type:"button",onClick:et,disabled:P,className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${P?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-hover hover:bg-cc-active text-cc-fg cursor-pointer"}`,children:P?"Checking...":"Check for updates"}),a!=null&&a.isServiceMode?e.jsx("button",{type:"button",onClick:tt,disabled:O||a.updateInProgress||!a.updateAvailable,className:`px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${O||a.updateInProgress||!a.updateAvailable?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-primary hover:bg-cc-primary-hover text-white cursor-pointer"}`,children:O||a.updateInProgress?"Updating...":"Update & Restart"}):e.jsxs("p",{className:"text-xs text-cc-muted self-center",children:["Install service mode with ",e.jsx("code",{className:"font-mono-code bg-cc-code-bg px-1 py-0.5 rounded text-cc-code-fg",children:"the-companion install"})," to enable one-click updates."]})]})]})]}),e.jsxs("section",{id:"telemetry",ref:l("telemetry"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Telemetry"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-cc-muted",children:"Anonymous product analytics and crash reports via PostHog to improve reliability."}),e.jsxs("button",{type:"button",onClick:()=>{const t=!he;ot(t),Ge(t)},className:"w-full flex items-center justify-between px-3 py-3 min-h-[44px] rounded-lg text-sm bg-cc-hover text-cc-fg hover:bg-cc-active transition-colors cursor-pointer",children:[e.jsx("span",{children:"Usage analytics and errors"}),e.jsx("span",{className:"text-xs text-cc-muted",children:he?"On":"Off"})]}),e.jsx("p",{className:"text-xs text-cc-muted",children:"Browser Do Not Track is respected automatically."})]})]}),e.jsxs("section",{id:"environments",ref:l("environments"),children:[e.jsx("h2",{className:"text-sm font-semibold text-cc-fg mb-4",children:"Environments"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-cc-muted",children:"Manage reusable environment profiles used when creating sessions."}),e.jsx("button",{type:"button",onClick:()=>{window.location.hash="#/environments"},className:"px-3 py-2 min-h-[44px] rounded-lg text-sm font-medium bg-cc-primary hover:bg-cc-primary-hover text-white transition-colors cursor-pointer",children:"Open Environments Page"})]})]})]})})]})]})}export{it as SettingsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as l,a as i,j as e,u as d,n as N,b as y}from"./index-B713LzqR.js";function T({embedded:x=!1}){const[t,r]=l.useState(null),[a,h]=l.useState(!0),[c,o]=l.useState(!1),[g,m]=l.useState(!1);l.useEffect(()=>{i.getTailscaleStatus().then(r).catch(()=>r(null)).finally(()=>h(!1))},[]);async function u(){const s=await i.getTailscaleStatus().catch(()=>null);s&&r(s)}async function p(){o(!0);try{const s=await i.startTailscaleFunnel();r(s),s.funnelUrl&&!s.error&&!s.warning&&d.getState().setPublicUrl(s.funnelUrl)}catch(s){await u(),r(n=>n?{...n,error:s instanceof Error?s.message:String(s)}:null)}finally{o(!1)}}async function b(){o(!0);try{const s=await i.stopTailscaleFunnel();r(s);const n=d.getState().publicUrl;(!n||n===(t==null?void 0:t.funnelUrl))&&d.getState().setPublicUrl("")}catch(s){await u(),r(n=>n?{...n,error:s instanceof Error?s.message:String(s)}:null)}finally{o(!1)}}function f(){t!=null&&t.funnelUrl&&navigator.clipboard.writeText(t.funnelUrl).then(()=>{m(!0),setTimeout(()=>m(!1),1800)}).catch(()=>{})}const j=t?t.installed?t.connected?t.funnelActive?"Funnel active":"Ready":"Not connected":"Not installed":"Loading...",v=t?!t.installed||!t.connected?"text-cc-muted":t.funnelActive?"text-cc-success":"text-amber-500":"text-cc-muted";return e.jsx("div",{className:`${x?"h-full":"h-[100dvh]"} bg-cc-bg text-cc-fg font-sans-ui antialiased overflow-y-auto`,children:e.jsxs("div",{className:"max-w-5xl mx-auto px-4 sm:px-8 py-6 sm:py-10 pb-safe",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl font-semibold text-cc-fg",children:"Tailscale Settings"}),e.jsx("p",{className:"mt-1 text-sm text-cc-muted",children:"Expose your Companion over HTTPS with Tailscale Funnel."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>{window.location.hash="#/integrations"},className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm text-cc-muted hover:text-cc-fg hover:bg-cc-hover transition-colors cursor-pointer",children:"Integrations"}),!x&&e.jsx("button",{onClick:()=>{const s=d.getState().currentSessionId;s?N(s):y()},className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm text-cc-muted hover:text-cc-fg hover:bg-cc-hover transition-colors cursor-pointer",children:"Back"})]})]}),e.jsxs("section",{className:"relative overflow-hidden bg-cc-card border border-cc-border rounded-xl p-4 sm:p-6 mb-4",children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none bg-[radial-gradient(circle_at_top_right,rgba(6,182,212,0.1),transparent_45%)]"}),e.jsxs("div",{className:"relative flex items-start justify-between gap-4 flex-wrap",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-2.5 py-1 rounded-full border border-cc-border bg-cc-hover/60 text-xs text-cc-muted",children:[e.jsx("svg",{className:"w-3.5 h-3.5 text-cc-fg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"})}),e.jsx("span",{children:"Tailscale Integration"})]}),e.jsx("h2",{className:"mt-3 text-lg sm:text-xl font-semibold text-cc-fg",children:"HTTPS access in one click"}),e.jsx("p",{className:"mt-1.5 text-sm text-cc-muted max-w-2xl",children:"Tailscale Funnel exposes your Companion to the internet over HTTPS with automatic TLS certificates. No configuration needed."}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2 text-[11px]",children:[e.jsx("span",{className:"px-2 py-1 rounded-md bg-cc-hover text-cc-muted",children:"Automatic TLS"}),e.jsx("span",{className:"px-2 py-1 rounded-md bg-cc-hover text-cc-muted",children:"Stable *.ts.net domain"}),e.jsx("span",{className:"px-2 py-1 rounded-md bg-cc-hover text-cc-muted",children:"No API keys needed"})]})]}),e.jsxs("div",{className:"shrink-0 rounded-xl border border-cc-border bg-cc-bg px-3 py-2 text-right min-w-[170px]",children:[e.jsx("p",{className:"text-[11px] text-cc-muted uppercase tracking-wide",children:"Status"}),e.jsx("p",{className:`mt-1 text-sm font-medium ${v}`,children:j}),e.jsx("p",{className:"mt-0.5 text-[11px] text-cc-muted truncate",children:(t==null?void 0:t.dnsName)||"No machine name"})]})]})]}),e.jsxs("div",{className:"bg-cc-card border border-cc-border rounded-xl p-4 sm:p-5 space-y-4",children:[e.jsxs("h2",{className:"text-sm font-semibold text-cc-fg flex items-center gap-2",children:[e.jsx("svg",{className:"w-4 h-4 text-cc-fg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"})}),e.jsx("span",{children:"Tailscale Funnel"})]}),a&&e.jsx("p",{className:"text-sm text-cc-muted",children:"Checking Tailscale status..."}),!a&&!t&&e.jsx("p",{className:"text-sm text-cc-muted",children:"Could not check Tailscale status."}),!a&&t&&!t.installed&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-cc-muted",children:"Tailscale is not installed on this machine. Install it to enable one-click HTTPS."}),e.jsxs("a",{href:"https://tailscale.com/download",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 px-4 py-2.5 min-h-[44px] rounded-lg text-sm font-medium bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors",children:["Install Tailscale",e.jsxs("svg",{className:"w-3.5 h-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),e.jsx("polyline",{points:"15 3 21 3 21 9"}),e.jsx("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]})]})]}),!a&&t&&t.installed&&!t.connected&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-cc-muted",children:"Tailscale is installed but not connected to a tailnet."}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-hover text-xs text-cc-fg font-mono-code",children:"tailscale up"}),e.jsx("p",{className:"text-xs text-cc-muted",children:"Run this command to connect to your Tailscale network."})]}),!a&&t&&t.installed&&t.connected&&!t.funnelActive&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("p",{className:"text-sm text-cc-muted",children:["Tailscale is connected as ",e.jsx("span",{className:"font-medium text-cc-fg",children:t.dnsName}),". Enable Funnel to expose your Companion over HTTPS."]}),t.needsOperatorMode&&!t.error&&e.jsxs("div",{className:"space-y-2 px-3 py-3 rounded-lg bg-amber-500/10 border border-amber-500/20",children:[e.jsx("p",{className:"text-xs text-amber-500 font-medium",children:"Setup needed: Tailscale operator mode"}),e.jsx("p",{className:"text-xs text-cc-muted",children:"On Linux, Tailscale requires operator mode to manage Funnel. Run this command first:"}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-hover text-xs text-cc-fg font-mono-code",children:"sudo tailscale set --operator=$USER"})]}),e.jsx("button",{type:"button",onClick:p,disabled:c,className:`px-4 py-2.5 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${c?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-primary hover:bg-cc-primary-hover text-white cursor-pointer"}`,children:c?"Starting...":"Enable HTTPS via Tailscale Funnel"})]}),!a&&t&&t.installed&&t.connected&&t.funnelActive&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-cc-muted",children:"Funnel is active. Your Companion is accessible at:"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("a",{href:t.funnelUrl||"#",target:"_blank",rel:"noopener noreferrer",className:"flex-1 px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg border border-cc-border text-cc-primary font-mono-code truncate flex items-center hover:underline",children:t.funnelUrl}),e.jsx("button",{type:"button",onClick:f,className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors cursor-pointer",children:g?"Copied!":"Copy"})]}),e.jsx("p",{className:"text-xs text-cc-muted",children:"This URL has been automatically set as your Public URL in Settings."}),e.jsx("button",{type:"button",onClick:b,disabled:c,className:`px-4 py-2.5 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${c?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-error/10 hover:bg-cc-error/20 text-cc-error cursor-pointer"}`,children:c?"Stopping...":"Disable Funnel"})]}),(t==null?void 0:t.error)&&t.needsOperatorMode&&e.jsxs("div",{className:"space-y-3 px-3 py-3 rounded-lg bg-amber-500/10 border border-amber-500/20",children:[e.jsx("p",{className:"text-sm font-medium text-amber-500",children:"Operator mode required"}),e.jsx("p",{className:"text-xs text-cc-muted",children:"On Linux, Tailscale requires operator mode to manage Funnel without sudo. Run this command once in your terminal:"}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-hover text-xs text-cc-fg font-mono-code",children:"sudo tailscale set --operator=$USER"}),e.jsx("p",{className:"text-xs text-cc-muted",children:"After running the command, click Retry to enable Funnel."}),e.jsx("button",{type:"button",onClick:p,disabled:c,className:`px-4 py-2.5 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${c?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-primary hover:bg-cc-primary-hover text-white cursor-pointer"}`,children:c?"Retrying...":"Retry"})]}),(t==null?void 0:t.warning)&&e.jsxs("div",{className:"space-y-2 px-3 py-3 rounded-lg bg-amber-500/10 border border-amber-500/20",children:[e.jsx("p",{className:"text-sm font-medium text-amber-500",children:"URL may not be publicly accessible"}),e.jsx("p",{className:"text-xs text-cc-muted",children:t.warning}),e.jsxs("a",{href:"https://login.tailscale.com/admin/acls",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs text-cc-primary hover:underline",children:["Open Tailscale admin console",e.jsxs("svg",{className:"w-3 h-3",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),e.jsx("polyline",{points:"15 3 21 3 21 9"}),e.jsx("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]})]})]}),(t==null?void 0:t.error)&&!t.needsOperatorMode&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-error/10 border border-cc-error/20 text-xs text-cc-error",children:t.error})]}),e.jsxs("section",{className:"mt-4 grid grid-cols-1 md:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"bg-cc-card border border-cc-border rounded-xl p-4",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-cc-muted",children:"1. Install"}),e.jsx("p",{className:"mt-1 text-sm text-cc-fg",children:"Install Tailscale on your machine and sign in."})]}),e.jsxs("div",{className:"bg-cc-card border border-cc-border rounded-xl p-4",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-cc-muted",children:"2. Enable"}),e.jsx("p",{className:"mt-1 text-sm text-cc-fg",children:"One click to get an HTTPS URL with automatic TLS."})]}),e.jsxs("div",{className:"bg-cc-card border border-cc-border rounded-xl p-4",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-cc-muted",children:"3. Done"}),e.jsx("p",{className:"mt-1 text-sm text-cc-fg",children:"Webhooks and remote access just work."})]})]})]})})}export{T as TailscalePage};
|
|
1
|
+
import{r as l,a as i,j as e,u as d,n as N,b as y}from"./index-v7VXwTts.js";function T({embedded:x=!1}){const[t,r]=l.useState(null),[a,h]=l.useState(!0),[c,o]=l.useState(!1),[g,m]=l.useState(!1);l.useEffect(()=>{i.getTailscaleStatus().then(r).catch(()=>r(null)).finally(()=>h(!1))},[]);async function u(){const s=await i.getTailscaleStatus().catch(()=>null);s&&r(s)}async function p(){o(!0);try{const s=await i.startTailscaleFunnel();r(s),s.funnelUrl&&!s.error&&!s.warning&&d.getState().setPublicUrl(s.funnelUrl)}catch(s){await u(),r(n=>n?{...n,error:s instanceof Error?s.message:String(s)}:null)}finally{o(!1)}}async function b(){o(!0);try{const s=await i.stopTailscaleFunnel();r(s);const n=d.getState().publicUrl;(!n||n===(t==null?void 0:t.funnelUrl))&&d.getState().setPublicUrl("")}catch(s){await u(),r(n=>n?{...n,error:s instanceof Error?s.message:String(s)}:null)}finally{o(!1)}}function f(){t!=null&&t.funnelUrl&&navigator.clipboard.writeText(t.funnelUrl).then(()=>{m(!0),setTimeout(()=>m(!1),1800)}).catch(()=>{})}const j=t?t.installed?t.connected?t.funnelActive?"Funnel active":"Ready":"Not connected":"Not installed":"Loading...",v=t?!t.installed||!t.connected?"text-cc-muted":t.funnelActive?"text-cc-success":"text-amber-500":"text-cc-muted";return e.jsx("div",{className:`${x?"h-full":"h-[100dvh]"} bg-cc-bg text-cc-fg font-sans-ui antialiased overflow-y-auto`,children:e.jsxs("div",{className:"max-w-5xl mx-auto px-4 sm:px-8 py-6 sm:py-10 pb-safe",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl font-semibold text-cc-fg",children:"Tailscale Settings"}),e.jsx("p",{className:"mt-1 text-sm text-cc-muted",children:"Expose your Companion over HTTPS with Tailscale Funnel."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>{window.location.hash="#/integrations"},className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm text-cc-muted hover:text-cc-fg hover:bg-cc-hover transition-colors cursor-pointer",children:"Integrations"}),!x&&e.jsx("button",{onClick:()=>{const s=d.getState().currentSessionId;s?N(s):y()},className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm text-cc-muted hover:text-cc-fg hover:bg-cc-hover transition-colors cursor-pointer",children:"Back"})]})]}),e.jsxs("section",{className:"relative overflow-hidden bg-cc-card border border-cc-border rounded-xl p-4 sm:p-6 mb-4",children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none bg-[radial-gradient(circle_at_top_right,rgba(6,182,212,0.1),transparent_45%)]"}),e.jsxs("div",{className:"relative flex items-start justify-between gap-4 flex-wrap",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-2.5 py-1 rounded-full border border-cc-border bg-cc-hover/60 text-xs text-cc-muted",children:[e.jsx("svg",{className:"w-3.5 h-3.5 text-cc-fg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"})}),e.jsx("span",{children:"Tailscale Integration"})]}),e.jsx("h2",{className:"mt-3 text-lg sm:text-xl font-semibold text-cc-fg",children:"HTTPS access in one click"}),e.jsx("p",{className:"mt-1.5 text-sm text-cc-muted max-w-2xl",children:"Tailscale Funnel exposes your Companion to the internet over HTTPS with automatic TLS certificates. No configuration needed."}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2 text-[11px]",children:[e.jsx("span",{className:"px-2 py-1 rounded-md bg-cc-hover text-cc-muted",children:"Automatic TLS"}),e.jsx("span",{className:"px-2 py-1 rounded-md bg-cc-hover text-cc-muted",children:"Stable *.ts.net domain"}),e.jsx("span",{className:"px-2 py-1 rounded-md bg-cc-hover text-cc-muted",children:"No API keys needed"})]})]}),e.jsxs("div",{className:"shrink-0 rounded-xl border border-cc-border bg-cc-bg px-3 py-2 text-right min-w-[170px]",children:[e.jsx("p",{className:"text-[11px] text-cc-muted uppercase tracking-wide",children:"Status"}),e.jsx("p",{className:`mt-1 text-sm font-medium ${v}`,children:j}),e.jsx("p",{className:"mt-0.5 text-[11px] text-cc-muted truncate",children:(t==null?void 0:t.dnsName)||"No machine name"})]})]})]}),e.jsxs("div",{className:"bg-cc-card border border-cc-border rounded-xl p-4 sm:p-5 space-y-4",children:[e.jsxs("h2",{className:"text-sm font-semibold text-cc-fg flex items-center gap-2",children:[e.jsx("svg",{className:"w-4 h-4 text-cc-fg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"})}),e.jsx("span",{children:"Tailscale Funnel"})]}),a&&e.jsx("p",{className:"text-sm text-cc-muted",children:"Checking Tailscale status..."}),!a&&!t&&e.jsx("p",{className:"text-sm text-cc-muted",children:"Could not check Tailscale status."}),!a&&t&&!t.installed&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-cc-muted",children:"Tailscale is not installed on this machine. Install it to enable one-click HTTPS."}),e.jsxs("a",{href:"https://tailscale.com/download",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 px-4 py-2.5 min-h-[44px] rounded-lg text-sm font-medium bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors",children:["Install Tailscale",e.jsxs("svg",{className:"w-3.5 h-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),e.jsx("polyline",{points:"15 3 21 3 21 9"}),e.jsx("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]})]})]}),!a&&t&&t.installed&&!t.connected&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-cc-muted",children:"Tailscale is installed but not connected to a tailnet."}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-hover text-xs text-cc-fg font-mono-code",children:"tailscale up"}),e.jsx("p",{className:"text-xs text-cc-muted",children:"Run this command to connect to your Tailscale network."})]}),!a&&t&&t.installed&&t.connected&&!t.funnelActive&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("p",{className:"text-sm text-cc-muted",children:["Tailscale is connected as ",e.jsx("span",{className:"font-medium text-cc-fg",children:t.dnsName}),". Enable Funnel to expose your Companion over HTTPS."]}),t.needsOperatorMode&&!t.error&&e.jsxs("div",{className:"space-y-2 px-3 py-3 rounded-lg bg-amber-500/10 border border-amber-500/20",children:[e.jsx("p",{className:"text-xs text-amber-500 font-medium",children:"Setup needed: Tailscale operator mode"}),e.jsx("p",{className:"text-xs text-cc-muted",children:"On Linux, Tailscale requires operator mode to manage Funnel. Run this command first:"}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-hover text-xs text-cc-fg font-mono-code",children:"sudo tailscale set --operator=$USER"})]}),e.jsx("button",{type:"button",onClick:p,disabled:c,className:`px-4 py-2.5 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${c?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-primary hover:bg-cc-primary-hover text-white cursor-pointer"}`,children:c?"Starting...":"Enable HTTPS via Tailscale Funnel"})]}),!a&&t&&t.installed&&t.connected&&t.funnelActive&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-cc-muted",children:"Funnel is active. Your Companion is accessible at:"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("a",{href:t.funnelUrl||"#",target:"_blank",rel:"noopener noreferrer",className:"flex-1 px-3 py-2.5 min-h-[44px] text-sm bg-cc-bg rounded-lg border border-cc-border text-cc-primary font-mono-code truncate flex items-center hover:underline",children:t.funnelUrl}),e.jsx("button",{type:"button",onClick:f,className:"px-3 py-2.5 min-h-[44px] rounded-lg text-sm bg-cc-hover hover:bg-cc-active text-cc-fg transition-colors cursor-pointer",children:g?"Copied!":"Copy"})]}),e.jsx("p",{className:"text-xs text-cc-muted",children:"This URL has been automatically set as your Public URL in Settings."}),e.jsx("button",{type:"button",onClick:b,disabled:c,className:`px-4 py-2.5 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${c?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-error/10 hover:bg-cc-error/20 text-cc-error cursor-pointer"}`,children:c?"Stopping...":"Disable Funnel"})]}),(t==null?void 0:t.error)&&t.needsOperatorMode&&e.jsxs("div",{className:"space-y-3 px-3 py-3 rounded-lg bg-amber-500/10 border border-amber-500/20",children:[e.jsx("p",{className:"text-sm font-medium text-amber-500",children:"Operator mode required"}),e.jsx("p",{className:"text-xs text-cc-muted",children:"On Linux, Tailscale requires operator mode to manage Funnel without sudo. Run this command once in your terminal:"}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-hover text-xs text-cc-fg font-mono-code",children:"sudo tailscale set --operator=$USER"}),e.jsx("p",{className:"text-xs text-cc-muted",children:"After running the command, click Retry to enable Funnel."}),e.jsx("button",{type:"button",onClick:p,disabled:c,className:`px-4 py-2.5 min-h-[44px] rounded-lg text-sm font-medium transition-colors ${c?"bg-cc-hover text-cc-muted cursor-not-allowed":"bg-cc-primary hover:bg-cc-primary-hover text-white cursor-pointer"}`,children:c?"Retrying...":"Retry"})]}),(t==null?void 0:t.warning)&&e.jsxs("div",{className:"space-y-2 px-3 py-3 rounded-lg bg-amber-500/10 border border-amber-500/20",children:[e.jsx("p",{className:"text-sm font-medium text-amber-500",children:"URL may not be publicly accessible"}),e.jsx("p",{className:"text-xs text-cc-muted",children:t.warning}),e.jsxs("a",{href:"https://login.tailscale.com/admin/acls",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs text-cc-primary hover:underline",children:["Open Tailscale admin console",e.jsxs("svg",{className:"w-3 h-3",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),e.jsx("polyline",{points:"15 3 21 3 21 9"}),e.jsx("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]})]})]}),(t==null?void 0:t.error)&&!t.needsOperatorMode&&e.jsx("div",{className:"px-3 py-2 rounded-lg bg-cc-error/10 border border-cc-error/20 text-xs text-cc-error",children:t.error})]}),e.jsxs("section",{className:"mt-4 grid grid-cols-1 md:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"bg-cc-card border border-cc-border rounded-xl p-4",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-cc-muted",children:"1. Install"}),e.jsx("p",{className:"mt-1 text-sm text-cc-fg",children:"Install Tailscale on your machine and sign in."})]}),e.jsxs("div",{className:"bg-cc-card border border-cc-border rounded-xl p-4",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-cc-muted",children:"2. Enable"}),e.jsx("p",{className:"mt-1 text-sm text-cc-fg",children:"One click to get an HTTPS URL with automatic TLS."})]}),e.jsxs("div",{className:"bg-cc-card border border-cc-border rounded-xl p-4",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-cc-muted",children:"3. Done"}),e.jsx("p",{className:"mt-1 text-sm text-cc-fg",children:"Webhooks and remote access just work."})]})]})]})})}export{T as TailscalePage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.1 | 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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-900:oklch(41.4% .112 45.904);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-sky-500:oklch(68.5% .169 237.323);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-lg:16px;--blur-xl:24px;--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);--color-cc-bg:#faf9f6;--color-cc-fg:#141413;--color-cc-card:#fff;--color-cc-primary:#d97757;--color-cc-primary-hover:#e08b6b;--color-cc-user-bubble:#f0efe8;--color-cc-border:#1f1e1d1f;--color-cc-muted:#6f6e69;--color-cc-sidebar:#f5f4ef;--color-cc-input-bg:#fff;--color-cc-code-bg:#f5f4ef;--color-cc-code-fg:#2d2d2d;--color-cc-hover:#1f1e1d0d;--color-cc-active:#1f1e1d17;--color-cc-success:#2d7d46;--color-cc-error:#c53030;--color-cc-warning:#b7791f;--color-cc-sidebar-footer:#edece5;--color-cc-separator:#1f1e1d1a;--color-cc-info:#2b6cb0;--color-cc-merged:#805ad5;--color-cc-codex:#10a37f;--color-cc-primary-btn:#ad5535;--color-cc-primary-btn-hover:#b85c3a;--color-cc-codex-btn:#0a7d5f;--color-cc-codex-btn-hover:#0b8362}}@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%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:focus-visible{outline:2px solid var(--color-cc-primary);outline-offset:2px}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.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}.sticky{position:sticky}.-inset-3{inset:calc(var(--spacing) * -3)}.inset-0{top:0;right:0;bottom:0;left:0}.inset-4{inset:calc(var(--spacing) * 4)}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.-top-1{top:calc(var(--spacing) * -1)}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-9{top:calc(var(--spacing) * 9)}.top-12{top:calc(var(--spacing) * 12)}.top-\[2px\]{top:2px}.top-\[3px\]{top:3px}.top-\[44px\]{top:44px}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1{right:calc(var(--spacing) * -1)}.-right-1\.5{right:calc(var(--spacing) * -1.5)}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-7{right:calc(var(--spacing) * 7)}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-full{bottom:100%}.left-0{left:0}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.left-\[2px\]{left:2px}.left-\[3px\]{left:3px}.left-\[17px\]{left:17px}.left-\[19px\]{left:19px}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-m-4{margin:calc(var(--spacing) * -4)}.m-0{margin:0}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.-mx-0\.5{margin-inline:calc(var(--spacing) * -.5)}.mx-0{margin-inline:0}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:var(--spacing)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-6{margin-inline:calc(var(--spacing) * 6)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-2\.5{margin-block:calc(var(--spacing) * 2.5)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-0{margin-top:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-\[-18px\]{margin-top:-18px}.mt-px{margin-top:1px}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-9{margin-left:calc(var(--spacing) * 9)}.ml-10{margin-left:calc(var(--spacing) * 10)}.ml-\[26px\]{margin-left:26px}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-0{height:0}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-2\/5{height:40%}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-\[2px\]{height:2px}.h-\[3px\]{height:3px}.h-\[7px\]{height:7px}.h-\[12vh\]{height:12vh}.h-\[14px\]{height:14px}.h-\[15px\]{height:15px}.h-\[18px\]{height:18px}.h-\[38\%\]{height:38%}.h-\[70vh\]{height:70vh}.h-\[100dvh\]{height:100dvh}.h-\[300px\]{height:300px}.h-\[320px\]{height:320px}.h-\[360px\]{height:360px}.h-\[400px\]{height:400px}.h-\[620px\]{height:620px}.h-\[min\(520px\,90dvh\)\]{height:min(520px,90dvh)}.h-full{height:100%}.h-px{height:1px}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-52{max-height:calc(var(--spacing) * 52)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[60dvh\]{max-height:60dvh}.max-h-\[70\%\]{max-height:70%}.max-h-\[80px\]{max-height:80px}.max-h-\[90dvh\]{max-height:90dvh}.max-h-\[120px\]{max-height:120px}.max-h-\[150px\]{max-height:150px}.max-h-\[160px\]{max-height:160px}.max-h-\[180px\]{max-height:180px}.max-h-\[200px\]{max-height:200px}.max-h-\[240px\]{max-height:240px}.max-h-\[300px\]{max-height:300px}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-\[24px\]{min-height:24px}.min-h-\[32px\]{min-height:32px}.min-h-\[36px\]{min-height:36px}.min-h-\[40px\]{min-height:40px}.min-h-\[44px\]{min-height:44px}.min-h-\[52px\]{min-height:52px}.min-h-\[220px\]{min-height:220px}.min-h-\[320px\]{min-height:320px}.min-h-\[420px\]{min-height:420px}.w-0{width:0}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/5{width:40%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-4\.5{width:calc(var(--spacing) * 4.5)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-28{width:calc(var(--spacing) * 28)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[3px\]{width:3px}.w-\[7px\]{width:7px}.w-\[14px\]{width:14px}.w-\[15px\]{width:15px}.w-\[18px\]{width:18px}.w-\[40px\]{width:40px}.w-\[42\%\]{width:42%}.w-\[90vw\]{width:90vw}.w-\[100px\]{width:100px}.w-\[180px\]{width:180px}.w-\[216px\]{width:216px}.w-\[220px\]{width:220px}.w-\[240px\]{width:240px}.w-\[280px\]{width:280px}.w-\[320px\]{width:320px}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[40\%\]{max-width:40%}.max-w-\[70\%\]{max-width:70%}.max-w-\[80px\]{max-width:80px}.max-w-\[85\%\]{max-width:85%}.max-w-\[100px\]{max-width:100px}.max-w-\[120px\]{max-width:120px}.max-w-\[140px\]{max-width:140px}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[260px\]{max-width:260px}.max-w-\[280px\]{max-width:280px}.max-w-\[320px\]{max-width:320px}.max-w-\[360px\]{max-width:360px}.max-w-\[520px\]{max-width:520px}.max-w-\[720px\]{max-width:720px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-\[15px\]{min-width:15px}.min-w-\[32px\]{min-width:32px}.min-w-\[36px\]{min-width:36px}.min-w-\[40px\]{min-width:40px}.min-w-\[44px\]{min-width:44px}.min-w-\[54px\]{min-width:54px}.min-w-\[160px\]{min-width:160px}.min-w-\[170px\]{min-width:170px}.min-w-\[176px\]{min-width:176px}.min-w-\[300px\]{min-width:300px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.origin-top-right{transform-origin:100% 0}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[2px\]{--tw-translate-x:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[16px\]{--tw-translate-x:16px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;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:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[fadeIn_150ms_ease-out\]{animation:.15s ease-out fadeIn}.animate-\[fadeSlideIn_0\.2s_ease-out\]{animation:.2s ease-out fadeSlideIn}.animate-\[fadeSlideIn_0\.3s_ease-out\]{animation:.3s ease-out fadeSlideIn}.animate-\[fadeSlideIn_0\.15s_ease-out\]{animation:.15s ease-out fadeSlideIn}.animate-\[gentle-bounce_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite gentle-bounce}.animate-\[menu-appear_150ms_ease-out\]{animation:.15s ease-out menu-appear}.animate-\[pulse-dot_0\.8s_ease-in-out_infinite\]{animation:.8s ease-in-out infinite pulse-dot}.animate-\[pulse-dot_1\.5s_ease-in-out_infinite\]{animation:1.5s ease-in-out infinite pulse-dot}.animate-\[pulse-dot_1s_ease-in-out_infinite\]{animation:1s ease-in-out infinite pulse-dot}.animate-\[ring-pulse_1\.5s_ease-out_infinite\]{animation:1.5s ease-out infinite ring-pulse}.animate-\[typing-breathe_1\.5s_ease-in-out_infinite\]{animation:1.5s ease-in-out infinite typing-breathe}.animate-\[userSlideIn_0\.3s_ease-out\]{animation:.3s ease-out userSlideIn}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.\[scrollbar-width\:none\]{scrollbar-width:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[auto_auto_minmax\(0\,1fr\)\]{grid-template-columns:auto auto minmax(0,1fr)}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:0}.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-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-px{gap:1px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-cc-border>:not(:last-child)){border-color:var(--color-cc-border)}:where(.divide-cc-border\/50>:not(:last-child)){border-color:#1f1e1d10}@supports (color:color-mix(in lab,red,red)){:where(.divide-cc-border\/50>:not(:last-child)){border-color:color-mix(in oklab,var(--color-cc-border) 50%,transparent)}}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-none{overscroll-behavior:none}.overscroll-y-contain{overscroll-behavior-y:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[10px\]{border-radius:10px}.rounded-\[12px\]{border-radius:12px}.rounded-\[14px\]{border-radius:14px}.rounded-\[16px\]{border-radius:16px}.rounded-\[24px\]{border-radius:24px}.rounded-\[28px\]{border-radius:28px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-\[14px\]{border-top-left-radius:14px;border-top-right-radius:14px}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-br-\[6px\]{border-bottom-right-radius:6px}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-\[1\.5px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:1.5px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.border-amber-500\/25{border-color:#f99c0040}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/25{border-color:color-mix(in oklab,var(--color-amber-500) 25%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-cc-border{border-color:var(--color-cc-border)}.border-cc-border\/20{border-color:#1f1e1d06}@supports (color:color-mix(in lab,red,red)){.border-cc-border\/20{border-color:color-mix(in oklab,var(--color-cc-border) 20%,transparent)}}.border-cc-border\/30{border-color:#1f1e1d09}@supports (color:color-mix(in lab,red,red)){.border-cc-border\/30{border-color:color-mix(in oklab,var(--color-cc-border) 30%,transparent)}}.border-cc-border\/40{border-color:#1f1e1d0c}@supports (color:color-mix(in lab,red,red)){.border-cc-border\/40{border-color:color-mix(in oklab,var(--color-cc-border) 40%,transparent)}}.border-cc-border\/50{border-color:#1f1e1d10}@supports (color:color-mix(in lab,red,red)){.border-cc-border\/50{border-color:color-mix(in oklab,var(--color-cc-border) 50%,transparent)}}.border-cc-border\/60{border-color:#1f1e1d13}@supports (color:color-mix(in lab,red,red)){.border-cc-border\/60{border-color:color-mix(in oklab,var(--color-cc-border) 60%,transparent)}}.border-cc-border\/70{border-color:#1f1e1d16}@supports (color:color-mix(in lab,red,red)){.border-cc-border\/70{border-color:color-mix(in oklab,var(--color-cc-border) 70%,transparent)}}.border-cc-border\/80{border-color:#1f1e1d19}@supports (color:color-mix(in lab,red,red)){.border-cc-border\/80{border-color:color-mix(in oklab,var(--color-cc-border) 80%,transparent)}}.border-cc-error\/20{border-color:#c5303033}@supports (color:color-mix(in lab,red,red)){.border-cc-error\/20{border-color:color-mix(in oklab,var(--color-cc-error) 20%,transparent)}}.border-cc-error\/30{border-color:#c530304d}@supports (color:color-mix(in lab,red,red)){.border-cc-error\/30{border-color:color-mix(in oklab,var(--color-cc-error) 30%,transparent)}}.border-cc-muted{border-color:var(--color-cc-muted)}.border-cc-muted\/25{border-color:#6f6e6940}@supports (color:color-mix(in lab,red,red)){.border-cc-muted\/25{border-color:color-mix(in oklab,var(--color-cc-muted) 25%,transparent)}}.border-cc-muted\/40{border-color:#6f6e6966}@supports (color:color-mix(in lab,red,red)){.border-cc-muted\/40{border-color:color-mix(in oklab,var(--color-cc-muted) 40%,transparent)}}.border-cc-primary{border-color:var(--color-cc-primary)}.border-cc-primary\/10{border-color:#d977571a}@supports (color:color-mix(in lab,red,red)){.border-cc-primary\/10{border-color:color-mix(in oklab,var(--color-cc-primary) 10%,transparent)}}.border-cc-primary\/15{border-color:#d9775726}@supports (color:color-mix(in lab,red,red)){.border-cc-primary\/15{border-color:color-mix(in oklab,var(--color-cc-primary) 15%,transparent)}}.border-cc-primary\/20{border-color:#d9775733}@supports (color:color-mix(in lab,red,red)){.border-cc-primary\/20{border-color:color-mix(in oklab,var(--color-cc-primary) 20%,transparent)}}.border-cc-primary\/28{border-color:#d9775747}@supports (color:color-mix(in lab,red,red)){.border-cc-primary\/28{border-color:color-mix(in oklab,var(--color-cc-primary) 28%,transparent)}}.border-cc-primary\/30{border-color:#d977574d}@supports (color:color-mix(in lab,red,red)){.border-cc-primary\/30{border-color:color-mix(in oklab,var(--color-cc-primary) 30%,transparent)}}.border-cc-primary\/35{border-color:#d9775759}@supports (color:color-mix(in lab,red,red)){.border-cc-primary\/35{border-color:color-mix(in oklab,var(--color-cc-primary) 35%,transparent)}}.border-cc-primary\/40{border-color:#d9775766}@supports (color:color-mix(in lab,red,red)){.border-cc-primary\/40{border-color:color-mix(in oklab,var(--color-cc-primary) 40%,transparent)}}.border-cc-primary\/50{border-color:#d9775780}@supports (color:color-mix(in lab,red,red)){.border-cc-primary\/50{border-color:color-mix(in oklab,var(--color-cc-primary) 50%,transparent)}}.border-cc-separator{border-color:var(--color-cc-separator)}.border-cc-success{border-color:var(--color-cc-success)}.border-cc-success\/20{border-color:#2d7d4633}@supports (color:color-mix(in lab,red,red)){.border-cc-success\/20{border-color:color-mix(in oklab,var(--color-cc-success) 20%,transparent)}}.border-cc-success\/30{border-color:#2d7d464d}@supports (color:color-mix(in lab,red,red)){.border-cc-success\/30{border-color:color-mix(in oklab,var(--color-cc-success) 30%,transparent)}}.border-cc-warning\/15{border-color:#b7791f26}@supports (color:color-mix(in lab,red,red)){.border-cc-warning\/15{border-color:color-mix(in oklab,var(--color-cc-warning) 15%,transparent)}}.border-cc-warning\/20{border-color:#b7791f33}@supports (color:color-mix(in lab,red,red)){.border-cc-warning\/20{border-color:color-mix(in oklab,var(--color-cc-warning) 20%,transparent)}}.border-cc-warning\/30{border-color:#b7791f4d}@supports (color:color-mix(in lab,red,red)){.border-cc-warning\/30{border-color:color-mix(in oklab,var(--color-cc-warning) 30%,transparent)}}.border-cc-warning\/40{border-color:#b7791f66}@supports (color:color-mix(in lab,red,red)){.border-cc-warning\/40{border-color:color-mix(in oklab,var(--color-cc-warning) 40%,transparent)}}.border-current{border-color:currentColor}.border-emerald-400\/50{border-color:#00d29480}@supports (color:color-mix(in lab,red,red)){.border-emerald-400\/50{border-color:color-mix(in oklab,var(--color-emerald-400) 50%,transparent)}}.border-transparent{border-color:#0000}.border-violet-500\/28{border-color:#8d54ff47}@supports (color:color-mix(in lab,red,red)){.border-violet-500\/28{border-color:color-mix(in oklab,var(--color-violet-500) 28%,transparent)}}.border-t-amber-500{border-top-color:var(--color-amber-500)}.border-t-cc-primary{border-top-color:var(--color-cc-primary)}.border-t-cc-warning{border-top-color:var(--color-cc-warning)}.border-t-transparent{border-top-color:#0000}.bg-\[\#5BA8A0\]\/10{background-color:#5ba8a01a}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500) 15%,transparent)}}.bg-black{background-color:var(--color-black)}.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-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/10{background-color:color-mix(in oklab,var(--color-blue-400) 10%,transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-500\/15{background-color:#3080ff26}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/15{background-color:color-mix(in oklab,var(--color-blue-500) 15%,transparent)}}.bg-cc-active{background-color:var(--color-cc-active)}.bg-cc-active\/60{background-color:#1f1e1d0e}@supports (color:color-mix(in lab,red,red)){.bg-cc-active\/60{background-color:color-mix(in oklab,var(--color-cc-active) 60%,transparent)}}.bg-cc-bg{background-color:var(--color-cc-bg)}.bg-cc-bg\/40{background-color:#faf9f666}@supports (color:color-mix(in lab,red,red)){.bg-cc-bg\/40{background-color:color-mix(in oklab,var(--color-cc-bg) 40%,transparent)}}.bg-cc-bg\/50{background-color:#faf9f680}@supports (color:color-mix(in lab,red,red)){.bg-cc-bg\/50{background-color:color-mix(in oklab,var(--color-cc-bg) 50%,transparent)}}.bg-cc-bg\/60{background-color:#faf9f699}@supports (color:color-mix(in lab,red,red)){.bg-cc-bg\/60{background-color:color-mix(in oklab,var(--color-cc-bg) 60%,transparent)}}.bg-cc-bg\/95{background-color:#faf9f6f2}@supports (color:color-mix(in lab,red,red)){.bg-cc-bg\/95{background-color:color-mix(in oklab,var(--color-cc-bg) 95%,transparent)}}.bg-cc-border{background-color:var(--color-cc-border)}.bg-cc-border\/30{background-color:#1f1e1d09}@supports (color:color-mix(in lab,red,red)){.bg-cc-border\/30{background-color:color-mix(in oklab,var(--color-cc-border) 30%,transparent)}}.bg-cc-card{background-color:var(--color-cc-card)}.bg-cc-card\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-cc-card\/20{background-color:color-mix(in oklab,var(--color-cc-card) 20%,transparent)}}.bg-cc-card\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.bg-cc-card\/30{background-color:color-mix(in oklab,var(--color-cc-card) 30%,transparent)}}.bg-cc-card\/40{background-color:#fff6}@supports (color:color-mix(in lab,red,red)){.bg-cc-card\/40{background-color:color-mix(in oklab,var(--color-cc-card) 40%,transparent)}}.bg-cc-card\/50{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.bg-cc-card\/50{background-color:color-mix(in oklab,var(--color-cc-card) 50%,transparent)}}.bg-cc-card\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.bg-cc-card\/90{background-color:color-mix(in oklab,var(--color-cc-card) 90%,transparent)}}.bg-cc-card\/95{background-color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.bg-cc-card\/95{background-color:color-mix(in oklab,var(--color-cc-card) 95%,transparent)}}.bg-cc-code-bg{background-color:var(--color-cc-code-bg)}.bg-cc-code-bg\/30{background-color:#f5f4ef4d}@supports (color:color-mix(in lab,red,red)){.bg-cc-code-bg\/30{background-color:color-mix(in oklab,var(--color-cc-code-bg) 30%,transparent)}}.bg-cc-code-bg\/50{background-color:#f5f4ef80}@supports (color:color-mix(in lab,red,red)){.bg-cc-code-bg\/50{background-color:color-mix(in oklab,var(--color-cc-code-bg) 50%,transparent)}}.bg-cc-code-bg\/80{background-color:#f5f4efcc}@supports (color:color-mix(in lab,red,red)){.bg-cc-code-bg\/80{background-color:color-mix(in oklab,var(--color-cc-code-bg) 80%,transparent)}}.bg-cc-codex\/10{background-color:#10a37f1a}@supports (color:color-mix(in lab,red,red)){.bg-cc-codex\/10{background-color:color-mix(in oklab,var(--color-cc-codex) 10%,transparent)}}.bg-cc-error{background-color:var(--color-cc-error)}.bg-cc-error\/5{background-color:#c530300d}@supports (color:color-mix(in lab,red,red)){.bg-cc-error\/5{background-color:color-mix(in oklab,var(--color-cc-error) 5%,transparent)}}.bg-cc-error\/10{background-color:#c530301a}@supports (color:color-mix(in lab,red,red)){.bg-cc-error\/10{background-color:color-mix(in oklab,var(--color-cc-error) 10%,transparent)}}.bg-cc-error\/12{background-color:#c530301f}@supports (color:color-mix(in lab,red,red)){.bg-cc-error\/12{background-color:color-mix(in oklab,var(--color-cc-error) 12%,transparent)}}.bg-cc-error\/15{background-color:#c5303026}@supports (color:color-mix(in lab,red,red)){.bg-cc-error\/15{background-color:color-mix(in oklab,var(--color-cc-error) 15%,transparent)}}.bg-cc-error\/40{background-color:#c5303066}@supports (color:color-mix(in lab,red,red)){.bg-cc-error\/40{background-color:color-mix(in oklab,var(--color-cc-error) 40%,transparent)}}.bg-cc-error\/50{background-color:#c5303080}@supports (color:color-mix(in lab,red,red)){.bg-cc-error\/50{background-color:color-mix(in oklab,var(--color-cc-error) 50%,transparent)}}.bg-cc-fg{background-color:var(--color-cc-fg)}.bg-cc-fg\/\[0\.03\]{background-color:#14141308}@supports (color:color-mix(in lab,red,red)){.bg-cc-fg\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-cc-fg) 3%,transparent)}}.bg-cc-fg\/\[0\.06\]{background-color:#1414130f}@supports (color:color-mix(in lab,red,red)){.bg-cc-fg\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-cc-fg) 6%,transparent)}}.bg-cc-hover{background-color:var(--color-cc-hover)}.bg-cc-hover\/10{background-color:#1f1e1d01}@supports (color:color-mix(in lab,red,red)){.bg-cc-hover\/10{background-color:color-mix(in oklab,var(--color-cc-hover) 10%,transparent)}}.bg-cc-hover\/20{background-color:#1f1e1d03}@supports (color:color-mix(in lab,red,red)){.bg-cc-hover\/20{background-color:color-mix(in oklab,var(--color-cc-hover) 20%,transparent)}}.bg-cc-hover\/30{background-color:#1f1e1d04}@supports (color:color-mix(in lab,red,red)){.bg-cc-hover\/30{background-color:color-mix(in oklab,var(--color-cc-hover) 30%,transparent)}}.bg-cc-hover\/40{background-color:#1f1e1d05}@supports (color:color-mix(in lab,red,red)){.bg-cc-hover\/40{background-color:color-mix(in oklab,var(--color-cc-hover) 40%,transparent)}}.bg-cc-hover\/50{background-color:#1f1e1d07}@supports (color:color-mix(in lab,red,red)){.bg-cc-hover\/50{background-color:color-mix(in oklab,var(--color-cc-hover) 50%,transparent)}}.bg-cc-hover\/55{background-color:#1f1e1d07}@supports (color:color-mix(in lab,red,red)){.bg-cc-hover\/55{background-color:color-mix(in oklab,var(--color-cc-hover) 55%,transparent)}}.bg-cc-hover\/60{background-color:#1f1e1d08}@supports (color:color-mix(in lab,red,red)){.bg-cc-hover\/60{background-color:color-mix(in oklab,var(--color-cc-hover) 60%,transparent)}}.bg-cc-hover\/70{background-color:#1f1e1d09}@supports (color:color-mix(in lab,red,red)){.bg-cc-hover\/70{background-color:color-mix(in oklab,var(--color-cc-hover) 70%,transparent)}}.bg-cc-info\/10{background-color:#2b6cb01a}@supports (color:color-mix(in lab,red,red)){.bg-cc-info\/10{background-color:color-mix(in oklab,var(--color-cc-info) 10%,transparent)}}.bg-cc-input-bg{background-color:var(--color-cc-input-bg)}.bg-cc-input-bg\/95{background-color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.bg-cc-input-bg\/95{background-color:color-mix(in oklab,var(--color-cc-input-bg) 95%,transparent)}}.bg-cc-merged\/10{background-color:#805ad51a}@supports (color:color-mix(in lab,red,red)){.bg-cc-merged\/10{background-color:color-mix(in oklab,var(--color-cc-merged) 10%,transparent)}}.bg-cc-muted{background-color:var(--color-cc-muted)}.bg-cc-muted\/15{background-color:#6f6e6926}@supports (color:color-mix(in lab,red,red)){.bg-cc-muted\/15{background-color:color-mix(in oklab,var(--color-cc-muted) 15%,transparent)}}.bg-cc-muted\/20{background-color:#6f6e6933}@supports (color:color-mix(in lab,red,red)){.bg-cc-muted\/20{background-color:color-mix(in oklab,var(--color-cc-muted) 20%,transparent)}}.bg-cc-muted\/30{background-color:#6f6e694d}@supports (color:color-mix(in lab,red,red)){.bg-cc-muted\/30{background-color:color-mix(in oklab,var(--color-cc-muted) 30%,transparent)}}.bg-cc-muted\/40{background-color:#6f6e6966}@supports (color:color-mix(in lab,red,red)){.bg-cc-muted\/40{background-color:color-mix(in oklab,var(--color-cc-muted) 40%,transparent)}}.bg-cc-muted\/50{background-color:#6f6e6980}@supports (color:color-mix(in lab,red,red)){.bg-cc-muted\/50{background-color:color-mix(in oklab,var(--color-cc-muted) 50%,transparent)}}.bg-cc-primary{background-color:var(--color-cc-primary)}.bg-cc-primary\/5{background-color:#d977570d}@supports (color:color-mix(in lab,red,red)){.bg-cc-primary\/5{background-color:color-mix(in oklab,var(--color-cc-primary) 5%,transparent)}}.bg-cc-primary\/8{background-color:#d9775714}@supports (color:color-mix(in lab,red,red)){.bg-cc-primary\/8{background-color:color-mix(in oklab,var(--color-cc-primary) 8%,transparent)}}.bg-cc-primary\/10{background-color:#d977571a}@supports (color:color-mix(in lab,red,red)){.bg-cc-primary\/10{background-color:color-mix(in oklab,var(--color-cc-primary) 10%,transparent)}}.bg-cc-primary\/12{background-color:#d977571f}@supports (color:color-mix(in lab,red,red)){.bg-cc-primary\/12{background-color:color-mix(in oklab,var(--color-cc-primary) 12%,transparent)}}.bg-cc-primary\/15{background-color:#d9775726}@supports (color:color-mix(in lab,red,red)){.bg-cc-primary\/15{background-color:color-mix(in oklab,var(--color-cc-primary) 15%,transparent)}}.bg-cc-primary\/20{background-color:#d9775733}@supports (color:color-mix(in lab,red,red)){.bg-cc-primary\/20{background-color:color-mix(in oklab,var(--color-cc-primary) 20%,transparent)}}.bg-cc-primary\/40{background-color:#d9775766}@supports (color:color-mix(in lab,red,red)){.bg-cc-primary\/40{background-color:color-mix(in oklab,var(--color-cc-primary) 40%,transparent)}}.bg-cc-primary\/50{background-color:#d9775780}@supports (color:color-mix(in lab,red,red)){.bg-cc-primary\/50{background-color:color-mix(in oklab,var(--color-cc-primary) 50%,transparent)}}.bg-cc-primary\/60{background-color:#d9775799}@supports (color:color-mix(in lab,red,red)){.bg-cc-primary\/60{background-color:color-mix(in oklab,var(--color-cc-primary) 60%,transparent)}}.bg-cc-primary\/\[0\.04\]{background-color:#d977570a}@supports (color:color-mix(in lab,red,red)){.bg-cc-primary\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-cc-primary) 4%,transparent)}}.bg-cc-sidebar{background-color:var(--color-cc-sidebar)}.bg-cc-sidebar-footer{background-color:var(--color-cc-sidebar-footer)}.bg-cc-sidebar\/40{background-color:#f5f4ef66}@supports (color:color-mix(in lab,red,red)){.bg-cc-sidebar\/40{background-color:color-mix(in oklab,var(--color-cc-sidebar) 40%,transparent)}}.bg-cc-sidebar\/60{background-color:#f5f4ef99}@supports (color:color-mix(in lab,red,red)){.bg-cc-sidebar\/60{background-color:color-mix(in oklab,var(--color-cc-sidebar) 60%,transparent)}}.bg-cc-success{background-color:var(--color-cc-success)}.bg-cc-success\/5{background-color:#2d7d460d}@supports (color:color-mix(in lab,red,red)){.bg-cc-success\/5{background-color:color-mix(in oklab,var(--color-cc-success) 5%,transparent)}}.bg-cc-success\/10{background-color:#2d7d461a}@supports (color:color-mix(in lab,red,red)){.bg-cc-success\/10{background-color:color-mix(in oklab,var(--color-cc-success) 10%,transparent)}}.bg-cc-success\/12{background-color:#2d7d461f}@supports (color:color-mix(in lab,red,red)){.bg-cc-success\/12{background-color:color-mix(in oklab,var(--color-cc-success) 12%,transparent)}}.bg-cc-success\/15{background-color:#2d7d4626}@supports (color:color-mix(in lab,red,red)){.bg-cc-success\/15{background-color:color-mix(in oklab,var(--color-cc-success) 15%,transparent)}}.bg-cc-success\/20{background-color:#2d7d4633}@supports (color:color-mix(in lab,red,red)){.bg-cc-success\/20{background-color:color-mix(in oklab,var(--color-cc-success) 20%,transparent)}}.bg-cc-success\/30{background-color:#2d7d464d}@supports (color:color-mix(in lab,red,red)){.bg-cc-success\/30{background-color:color-mix(in oklab,var(--color-cc-success) 30%,transparent)}}.bg-cc-success\/40{background-color:#2d7d4666}@supports (color:color-mix(in lab,red,red)){.bg-cc-success\/40{background-color:color-mix(in oklab,var(--color-cc-success) 40%,transparent)}}.bg-cc-success\/60{background-color:#2d7d4699}@supports (color:color-mix(in lab,red,red)){.bg-cc-success\/60{background-color:color-mix(in oklab,var(--color-cc-success) 60%,transparent)}}.bg-cc-success\/90{background-color:#2d7d46e6}@supports (color:color-mix(in lab,red,red)){.bg-cc-success\/90{background-color:color-mix(in oklab,var(--color-cc-success) 90%,transparent)}}.bg-cc-warning{background-color:var(--color-cc-warning)}.bg-cc-warning\/10{background-color:#b7791f1a}@supports (color:color-mix(in lab,red,red)){.bg-cc-warning\/10{background-color:color-mix(in oklab,var(--color-cc-warning) 10%,transparent)}}.bg-cc-warning\/15{background-color:#b7791f26}@supports (color:color-mix(in lab,red,red)){.bg-cc-warning\/15{background-color:color-mix(in oklab,var(--color-cc-warning) 15%,transparent)}}.bg-cc-warning\/20{background-color:#b7791f33}@supports (color:color-mix(in lab,red,red)){.bg-cc-warning\/20{background-color:color-mix(in oklab,var(--color-cc-warning) 20%,transparent)}}.bg-current\/60{background-color:currentColor}@supports (color:color-mix(in lab,red,red)){.bg-current\/60{background-color:color-mix(in oklab,currentcolor 60%,transparent)}}.bg-emerald-400\/10{background-color:#00d2941a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-400\/10{background-color:color-mix(in oklab,var(--color-emerald-400) 10%,transparent)}}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500) 15%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-500\/15{background-color:#00c75826}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/15{background-color:color-mix(in oklab,var(--color-green-500) 15%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/10{background-color:color-mix(in oklab,var(--color-purple-500) 10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-sky-500\/15{background-color:#00a5ef26}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/15{background-color:color-mix(in oklab,var(--color-sky-500) 15%,transparent)}}.bg-transparent{background-color:#0000}.bg-violet-500\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/10{background-color:color-mix(in oklab,var(--color-violet-500) 10%,transparent)}}.bg-violet-500\/12{background-color:#8d54ff1f}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/12{background-color:color-mix(in oklab,var(--color-violet-500) 12%,transparent)}}.bg-violet-600{background-color:var(--color-violet-600)}.bg-white{background-color:var(--color-white)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[linear-gradient\(120deg\,transparent_0\%\,rgba\(255\,255\,255\,0\.04\)_35\%\,transparent_62\%\)\]{background-image:linear-gradient(120deg,#0000,#ffffff0a 35%,#0000 62%)}.bg-\[linear-gradient\(135deg\,rgba\(255\,255\,255\,0\.04\)\,rgba\(255\,255\,255\,0\)\)\]{background-image:linear-gradient(135deg,#ffffff0a,#fff0)}.bg-\[radial-gradient\(80\%_140\%_at_100\%_0\%\,rgba\(6\,182\,212\,0\.18\)\,transparent_52\%\)\]{background-image:radial-gradient(80% 140% at 100% 0,#06b6d42e,#0000 52%)}.bg-\[radial-gradient\(80\%_140\%_at_100\%_0\%\,rgba\(124\,58\,237\,0\.18\)\,transparent_52\%\)\]{background-image:radial-gradient(80% 140% at 100% 0,#7c3aed2e,#0000 52%)}.bg-\[radial-gradient\(80\%_140\%_at_100\%_0\%\,rgba\(251\,146\,60\,0\.18\)\,transparent_52\%\)\]{background-image:radial-gradient(80% 140% at 100% 0,#fb923c2e,#0000 52%)}.bg-\[radial-gradient\(circle_at_top_right\,rgba\(6\,182\,212\,0\.1\)\,transparent_45\%\)\]{background-image:radial-gradient(circle at 100% 0,#06b6d41a,#0000 45%)}.bg-\[radial-gradient\(circle_at_top_right\,rgba\(124\,58\,237\,0\.1\)\,transparent_45\%\)\]{background-image:radial-gradient(circle at 100% 0,#7c3aed1a,#0000 45%)}.from-cc-bg{--tw-gradient-from:var(--color-cc-bg);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-cc-primary\/10{--tw-gradient-from:#d977571a}@supports (color:color-mix(in lab,red,red)){.from-cc-primary\/10{--tw-gradient-from:color-mix(in oklab, var(--color-cc-primary) 10%, transparent)}}.from-cc-primary\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-cc-warning\/8{--tw-gradient-from:#b7791f14}@supports (color:color-mix(in lab,red,red)){.from-cc-warning\/8{--tw-gradient-from:color-mix(in oklab, var(--color-cc-warning) 8%, transparent)}}.from-cc-warning\/8{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-cc-primary\/5{--tw-gradient-to:#d977570d}@supports (color:color-mix(in lab,red,red)){.to-cc-primary\/5{--tw-gradient-to:color-mix(in oklab, var(--color-cc-primary) 5%, transparent)}}.to-cc-primary\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-cc-warning\/4{--tw-gradient-to:#b7791f0a}@supports (color:color-mix(in lab,red,red)){.to-cc-warning\/4{--tw-gradient-to:color-mix(in oklab, var(--color-cc-warning) 4%, transparent)}}.to-cc-warning\/4{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-0{padding-top:0}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pr-16{padding-right:calc(var(--spacing) * 16)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[clamp\(1\.45rem\,2\.6vw\,2rem\)\]{font-size:clamp(1.45rem,2.6vw,2rem)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-\[1\.12\]{--tw-leading:1.12;line-height:1.12}.leading-\[14px\]{--tw-leading:14px;line-height:14px}.leading-\[16px\]{--tw-leading:16px;line-height:16px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-\[0\.28em\]{--tw-tracking:.28em;letter-spacing:.28em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#5BA8A0\]{color:#5ba8a0}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-600\/70{color:#dd7400b3}@supports (color:color-mix(in lab,red,red)){.text-amber-600\/70{color:color-mix(in oklab,var(--color-amber-600) 70%,transparent)}}.text-amber-700{color:var(--color-amber-700)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-cc-bg{color:var(--color-cc-bg)}.text-cc-border{color:var(--color-cc-border)}.text-cc-code-fg{color:var(--color-cc-code-fg)}.text-cc-code-fg\/60{color:#2d2d2d99}@supports (color:color-mix(in lab,red,red)){.text-cc-code-fg\/60{color:color-mix(in oklab,var(--color-cc-code-fg) 60%,transparent)}}.text-cc-codex{color:var(--color-cc-codex)}.text-cc-error{color:var(--color-cc-error)}.text-cc-error\/50{color:#c5303080}@supports (color:color-mix(in lab,red,red)){.text-cc-error\/50{color:color-mix(in oklab,var(--color-cc-error) 50%,transparent)}}.text-cc-error\/60{color:#c5303099}@supports (color:color-mix(in lab,red,red)){.text-cc-error\/60{color:color-mix(in oklab,var(--color-cc-error) 60%,transparent)}}.text-cc-error\/70{color:#c53030b3}@supports (color:color-mix(in lab,red,red)){.text-cc-error\/70{color:color-mix(in oklab,var(--color-cc-error) 70%,transparent)}}.text-cc-error\/80{color:#c53030cc}@supports (color:color-mix(in lab,red,red)){.text-cc-error\/80{color:color-mix(in oklab,var(--color-cc-error) 80%,transparent)}}.text-cc-fg{color:var(--color-cc-fg)}.text-cc-fg\/40{color:#14141366}@supports (color:color-mix(in lab,red,red)){.text-cc-fg\/40{color:color-mix(in oklab,var(--color-cc-fg) 40%,transparent)}}.text-cc-fg\/60{color:#14141399}@supports (color:color-mix(in lab,red,red)){.text-cc-fg\/60{color:color-mix(in oklab,var(--color-cc-fg) 60%,transparent)}}.text-cc-fg\/70{color:#141413b3}@supports (color:color-mix(in lab,red,red)){.text-cc-fg\/70{color:color-mix(in oklab,var(--color-cc-fg) 70%,transparent)}}.text-cc-fg\/80{color:#141413cc}@supports (color:color-mix(in lab,red,red)){.text-cc-fg\/80{color:color-mix(in oklab,var(--color-cc-fg) 80%,transparent)}}.text-cc-fg\/90{color:#141413e6}@supports (color:color-mix(in lab,red,red)){.text-cc-fg\/90{color:color-mix(in oklab,var(--color-cc-fg) 90%,transparent)}}.text-cc-info{color:var(--color-cc-info)}.text-cc-merged{color:var(--color-cc-merged)}.text-cc-muted{color:var(--color-cc-muted)}.text-cc-muted\/20{color:#6f6e6933}@supports (color:color-mix(in lab,red,red)){.text-cc-muted\/20{color:color-mix(in oklab,var(--color-cc-muted) 20%,transparent)}}.text-cc-muted\/30{color:#6f6e694d}@supports (color:color-mix(in lab,red,red)){.text-cc-muted\/30{color:color-mix(in oklab,var(--color-cc-muted) 30%,transparent)}}.text-cc-muted\/40{color:#6f6e6966}@supports (color:color-mix(in lab,red,red)){.text-cc-muted\/40{color:color-mix(in oklab,var(--color-cc-muted) 40%,transparent)}}.text-cc-muted\/50{color:#6f6e6980}@supports (color:color-mix(in lab,red,red)){.text-cc-muted\/50{color:color-mix(in oklab,var(--color-cc-muted) 50%,transparent)}}.text-cc-muted\/60{color:#6f6e6999}@supports (color:color-mix(in lab,red,red)){.text-cc-muted\/60{color:color-mix(in oklab,var(--color-cc-muted) 60%,transparent)}}.text-cc-muted\/70{color:#6f6e69b3}@supports (color:color-mix(in lab,red,red)){.text-cc-muted\/70{color:color-mix(in oklab,var(--color-cc-muted) 70%,transparent)}}.text-cc-muted\/75{color:#6f6e69bf}@supports (color:color-mix(in lab,red,red)){.text-cc-muted\/75{color:color-mix(in oklab,var(--color-cc-muted) 75%,transparent)}}.text-cc-muted\/80{color:#6f6e69cc}@supports (color:color-mix(in lab,red,red)){.text-cc-muted\/80{color:color-mix(in oklab,var(--color-cc-muted) 80%,transparent)}}.text-cc-muted\/95{color:#6f6e69f2}@supports (color:color-mix(in lab,red,red)){.text-cc-muted\/95{color:color-mix(in oklab,var(--color-cc-muted) 95%,transparent)}}.text-cc-primary{color:var(--color-cc-primary)}.text-cc-primary\/40{color:#d9775766}@supports (color:color-mix(in lab,red,red)){.text-cc-primary\/40{color:color-mix(in oklab,var(--color-cc-primary) 40%,transparent)}}.text-cc-primary\/60{color:#d9775799}@supports (color:color-mix(in lab,red,red)){.text-cc-primary\/60{color:color-mix(in oklab,var(--color-cc-primary) 60%,transparent)}}.text-cc-primary\/70{color:#d97757b3}@supports (color:color-mix(in lab,red,red)){.text-cc-primary\/70{color:color-mix(in oklab,var(--color-cc-primary) 70%,transparent)}}.text-cc-primary\/80{color:#d97757cc}@supports (color:color-mix(in lab,red,red)){.text-cc-primary\/80{color:color-mix(in oklab,var(--color-cc-primary) 80%,transparent)}}.text-cc-success{color:var(--color-cc-success)}.text-cc-success\/80{color:#2d7d46cc}@supports (color:color-mix(in lab,red,red)){.text-cc-success\/80{color:color-mix(in oklab,var(--color-cc-success) 80%,transparent)}}.text-cc-warning{color:var(--color-cc-warning)}.text-cc-warning\/70{color:#b7791fb3}@supports (color:color-mix(in lab,red,red)){.text-cc-warning\/70{color:color-mix(in oklab,var(--color-cc-warning) 70%,transparent)}}.text-current{color:currentColor}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-600\/70{color:#009767b3}@supports (color:color-mix(in lab,red,red)){.text-emerald-600\/70{color:color-mix(in oklab,var(--color-emerald-600) 70%,transparent)}}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-purple-600{color:var(--color-purple-600)}.text-red-400{color:var(--color-red-400)}.text-sky-500{color:var(--color-sky-500)}.text-violet-400{color:var(--color-violet-400)}.text-violet-600{color:var(--color-violet-600)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-cc-primary\/30{text-decoration-color:#d977574d}@supports (color:color-mix(in lab,red,red)){.decoration-cc-primary\/30{-webkit-text-decoration-color:color-mix(in oklab,var(--color-cc-primary) 30%,transparent);text-decoration-color:color-mix(in oklab,var(--color-cc-primary) 30%,transparent)}}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-cc-primary{accent-color:var(--color-cc-primary)}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_3px_rgba\(34\,197\,94\,0\.15\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#22c55e26);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_3px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_6px_rgba\(0\,0\,0\,0\.03\)\]{--tw-shadow:0 2px 6px var(--tw-shadow-color,#00000008);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(217\,119\,87\,0\.25\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#d9775740);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(217\,119\,87\,0\.08\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#d9775714);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_6px_20px_rgba\(0\,0\,0\,0\.18\)\]{--tw-shadow:0 6px 20px var(--tw-shadow-color,#0000002e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_10px_30px_rgba\(0\,0\,0\,0\.10\)\]{--tw-shadow:0 10px 30px 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-\[0_20px_60px_rgba\(0\,0\,0\,0\.22\)\]{--tw-shadow:0 20px 60px var(--tw-shadow-color,#00000038);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(255\,255\,255\,0\.04\)\]{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,#ffffff0a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.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-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-black\/15{--tw-shadow-color:#00000026}@supports (color:color-mix(in lab,red,red)){.shadow-black\/15{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 15%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab,red,red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-cc-card{--tw-ring-color:var(--color-cc-card)}.ring-cc-primary{--tw-ring-color:var(--color-cc-primary)}.ring-cc-primary\/30{--tw-ring-color:#d977574d}@supports (color:color-mix(in lab,red,red)){.ring-cc-primary\/30{--tw-ring-color:color-mix(in oklab, var(--color-cc-primary) 30%, transparent)}}.ring-cc-primary\/40{--tw-ring-color:#d9775766}@supports (color:color-mix(in lab,red,red)){.ring-cc-primary\/40{--tw-ring-color:color-mix(in oklab, var(--color-cc-primary) 40%, transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background\,opacity\]{transition-property:background,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background\]{transition-property:background;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,background\,opacity\]{transition-property:transform,background,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,border-color\,box-shadow\]{transition-property:transform,border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;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}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\[writing-mode\:vertical-rl\]{writing-mode:vertical-rl}@media(hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:bg-cc-border:is(:where(.group):hover *){background-color:var(--color-cc-border)}.group-hover\:text-cc-muted\/70:is(:where(.group):hover *){color:#6f6e69b3}@supports (color:color-mix(in lab,red,red)){.group-hover\:text-cc-muted\/70:is(:where(.group):hover *){color:color-mix(in oklab,var(--color-cc-muted) 70%,transparent)}}.group-hover\:opacity-80:is(:where(.group):hover *){opacity:.8}}.placeholder\:text-cc-muted::placeholder{color:var(--color-cc-muted)}.placeholder\:text-cc-muted\/40::placeholder{color:#6f6e6966}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-cc-muted\/40::placeholder{color:color-mix(in oklab,var(--color-cc-muted) 40%,transparent)}}.placeholder\:text-cc-muted\/50::placeholder{color:#6f6e6980}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-cc-muted\/50::placeholder{color:color-mix(in oklab,var(--color-cc-muted) 50%,transparent)}}.placeholder\:text-cc-muted\/60::placeholder{color:#6f6e6999}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-cc-muted\/60::placeholder{color:color-mix(in oklab,var(--color-cc-muted) 60%,transparent)}}.placeholder\:text-cc-muted\/70::placeholder{color:#6f6e69b3}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-cc-muted\/70::placeholder{color:color-mix(in oklab,var(--color-cc-muted) 70%,transparent)}}.first\:mt-0:first-child{margin-top:0}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.last\:mb-0:last-child{margin-bottom:0}.last\:flex-none:last-child{flex:none}@media(hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-cc-border:hover{border-color:var(--color-cc-border)}.hover\:border-cc-border\/70:hover{border-color:#1f1e1d16}@supports (color:color-mix(in lab,red,red)){.hover\:border-cc-border\/70:hover{border-color:color-mix(in oklab,var(--color-cc-border) 70%,transparent)}}.hover\:border-cc-muted:hover{border-color:var(--color-cc-muted)}.hover\:border-cc-primary\/20:hover{border-color:#d9775733}@supports (color:color-mix(in lab,red,red)){.hover\:border-cc-primary\/20:hover{border-color:color-mix(in oklab,var(--color-cc-primary) 20%,transparent)}}.hover\:border-cc-primary\/30:hover{border-color:#d977574d}@supports (color:color-mix(in lab,red,red)){.hover\:border-cc-primary\/30:hover{border-color:color-mix(in oklab,var(--color-cc-primary) 30%,transparent)}}.hover\:border-cc-primary\/35:hover{border-color:#d9775759}@supports (color:color-mix(in lab,red,red)){.hover\:border-cc-primary\/35:hover{border-color:color-mix(in oklab,var(--color-cc-primary) 35%,transparent)}}.hover\:border-cc-primary\/40:hover{border-color:#d9775766}@supports (color:color-mix(in lab,red,red)){.hover\:border-cc-primary\/40:hover{border-color:color-mix(in oklab,var(--color-cc-primary) 40%,transparent)}}.hover\:border-cc-primary\/50:hover{border-color:#d9775780}@supports (color:color-mix(in lab,red,red)){.hover\:border-cc-primary\/50:hover{border-color:color-mix(in oklab,var(--color-cc-primary) 50%,transparent)}}.hover\:border-violet-500\/50:hover{border-color:#8d54ff80}@supports (color:color-mix(in lab,red,red)){.hover\:border-violet-500\/50:hover{border-color:color-mix(in oklab,var(--color-violet-500) 50%,transparent)}}.hover\:bg-blue-500\/20:hover{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-500\/20:hover{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.hover\:bg-cc-active:hover{background-color:var(--color-cc-active)}.hover\:bg-cc-border:hover{background-color:var(--color-cc-border)}.hover\:bg-cc-error\/5:hover{background-color:#c530300d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-error\/5:hover{background-color:color-mix(in oklab,var(--color-cc-error) 5%,transparent)}}.hover\:bg-cc-error\/10:hover{background-color:#c530301a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-error\/10:hover{background-color:color-mix(in oklab,var(--color-cc-error) 10%,transparent)}}.hover\:bg-cc-error\/20:hover{background-color:#c5303033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-error\/20:hover{background-color:color-mix(in oklab,var(--color-cc-error) 20%,transparent)}}.hover\:bg-cc-error\/25:hover{background-color:#c5303040}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-error\/25:hover{background-color:color-mix(in oklab,var(--color-cc-error) 25%,transparent)}}.hover\:bg-cc-error\/90:hover{background-color:#c53030e6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-error\/90:hover{background-color:color-mix(in oklab,var(--color-cc-error) 90%,transparent)}}.hover\:bg-cc-hover:hover{background-color:var(--color-cc-hover)}.hover\:bg-cc-hover\/50:hover{background-color:#1f1e1d07}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-hover\/50:hover{background-color:color-mix(in oklab,var(--color-cc-hover) 50%,transparent)}}.hover\:bg-cc-hover\/60:hover{background-color:#1f1e1d08}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-hover\/60:hover{background-color:color-mix(in oklab,var(--color-cc-hover) 60%,transparent)}}.hover\:bg-cc-hover\/80:hover{background-color:#1f1e1d0a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-hover\/80:hover{background-color:color-mix(in oklab,var(--color-cc-hover) 80%,transparent)}}.hover\:bg-cc-primary-hover:hover{background-color:var(--color-cc-primary-hover)}.hover\:bg-cc-primary\/10:hover{background-color:#d977571a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-primary\/10:hover{background-color:color-mix(in oklab,var(--color-cc-primary) 10%,transparent)}}.hover\:bg-cc-primary\/12:hover{background-color:#d977571f}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-primary\/12:hover{background-color:color-mix(in oklab,var(--color-cc-primary) 12%,transparent)}}.hover\:bg-cc-primary\/15:hover{background-color:#d9775726}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-primary\/15:hover{background-color:color-mix(in oklab,var(--color-cc-primary) 15%,transparent)}}.hover\:bg-cc-primary\/20:hover{background-color:#d9775733}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-primary\/20:hover{background-color:color-mix(in oklab,var(--color-cc-primary) 20%,transparent)}}.hover\:bg-cc-primary\/25:hover{background-color:#d9775740}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-primary\/25:hover{background-color:color-mix(in oklab,var(--color-cc-primary) 25%,transparent)}}.hover\:bg-cc-primary\/90:hover{background-color:#d97757e6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-primary\/90:hover{background-color:color-mix(in oklab,var(--color-cc-primary) 90%,transparent)}}.hover\:bg-cc-success:hover{background-color:var(--color-cc-success)}.hover\:bg-cc-success\/10:hover{background-color:#2d7d461a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-success\/10:hover{background-color:color-mix(in oklab,var(--color-cc-success) 10%,transparent)}}.hover\:bg-cc-success\/30:hover{background-color:#2d7d464d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-success\/30:hover{background-color:color-mix(in oklab,var(--color-cc-success) 30%,transparent)}}.hover\:bg-cc-warning\/25:hover{background-color:#b7791f40}@supports (color:color-mix(in lab,red,red)){.hover\:bg-cc-warning\/25:hover{background-color:color-mix(in oklab,var(--color-cc-warning) 25%,transparent)}}.hover\:bg-violet-500\/20:hover{background-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-violet-500\/20:hover{background-color:color-mix(in oklab,var(--color-violet-500) 20%,transparent)}}.hover\:bg-violet-700:hover{background-color:var(--color-violet-700)}.hover\:text-amber-200:hover{color:var(--color-amber-200)}.hover\:text-amber-300:hover{color:var(--color-amber-300)}.hover\:text-cc-error:hover{color:var(--color-cc-error)}.hover\:text-cc-fg:hover{color:var(--color-cc-fg)}.hover\:text-cc-fg\/80:hover{color:#141413cc}@supports (color:color-mix(in lab,red,red)){.hover\:text-cc-fg\/80:hover{color:color-mix(in oklab,var(--color-cc-fg) 80%,transparent)}}.hover\:text-cc-muted\/70:hover{color:#6f6e69b3}@supports (color:color-mix(in lab,red,red)){.hover\:text-cc-muted\/70:hover{color:color-mix(in oklab,var(--color-cc-muted) 70%,transparent)}}.hover\:text-cc-primary:hover{color:var(--color-cc-primary)}.hover\:text-cc-primary-hover:hover{color:var(--color-cc-primary-hover)}.hover\:text-cc-success:hover{color:var(--color-cc-success)}.hover\:text-cc-warning\/80:hover{color:#b7791fcc}@supports (color:color-mix(in lab,red,red)){.hover\:text-cc-warning\/80:hover{color:color-mix(in oklab,var(--color-cc-warning) 80%,transparent)}}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:no-underline:hover{text-decoration-line:none}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_2px_12px_rgba\(217\,119\,87\,0\.06\)\]:hover{--tw-shadow:0 2px 12px var(--tw-shadow-color,#d977570f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_18px_44px_rgba\(0\,0\,0\,0\.18\)\]:hover{--tw-shadow:0 18px 44px var(--tw-shadow-color,#0000002e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-cc-border:focus{border-color:var(--color-cc-border)}.focus\:border-cc-codex:focus{border-color:var(--color-cc-codex)}.focus\:border-cc-primary:focus{border-color:var(--color-cc-primary)}.focus\:border-cc-primary\/40:focus{border-color:#d9775766}@supports (color:color-mix(in lab,red,red)){.focus\:border-cc-primary\/40:focus{border-color:color-mix(in oklab,var(--color-cc-primary) 40%,transparent)}}.focus\:border-cc-primary\/50:focus{border-color:#d9775780}@supports (color:color-mix(in lab,red,red)){.focus\:border-cc-primary\/50:focus{border-color:color-mix(in oklab,var(--color-cc-primary) 50%,transparent)}}.focus\:border-cc-primary\/60:focus{border-color:#d9775799}@supports (color:color-mix(in lab,red,red)){.focus\:border-cc-primary\/60:focus{border-color:color-mix(in oklab,var(--color-cc-primary) 60%,transparent)}}.focus\:ring-1:focus{--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)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-cc-codex:focus{--tw-ring-color:var(--color-cc-codex)}.focus\:ring-cc-primary:focus{--tw-ring-color:var(--color-cc-primary)}.focus\:ring-cc-primary\/20:focus{--tw-ring-color:#d9775733}@supports (color:color-mix(in lab,red,red)){.focus\:ring-cc-primary\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-cc-primary) 20%, transparent)}}.focus\:ring-cc-primary\/30:focus{--tw-ring-color:#d977574d}@supports (color:color-mix(in lab,red,red)){.focus\:ring-cc-primary\/30:focus{--tw-ring-color:color-mix(in oklab, var(--color-cc-primary) 30%, transparent)}}.focus\:ring-cc-primary\/35:focus{--tw-ring-color:#d9775759}@supports (color:color-mix(in lab,red,red)){.focus\:ring-cc-primary\/35:focus{--tw-ring-color:color-mix(in oklab, var(--color-cc-primary) 35%, transparent)}}.focus\:ring-cc-primary\/40:focus{--tw-ring-color:#d9775766}@supports (color:color-mix(in lab,red,red)){.focus\:ring-cc-primary\/40:focus{--tw-ring-color:color-mix(in oklab, var(--color-cc-primary) 40%, transparent)}}.focus\:ring-violet-500\/35:focus{--tw-ring-color:#8d54ff59}@supports (color:color-mix(in lab,red,red)){.focus\:ring-violet-500\/35:focus{--tw-ring-color:color-mix(in oklab, var(--color-violet-500) 35%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-cc-primary\/60:focus-visible{--tw-ring-color:#d9775799}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-cc-primary\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-cc-primary) 60%, transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:bg-cc-active:active{background-color:var(--color-cc-active)}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-cc-muted:disabled{color:var(--color-cc-muted)}.disabled\:opacity-20:disabled{opacity:.2}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media(prefers-reduced-motion:no-preference){.motion-safe\:animate-ping{animation:var(--animate-ping)}}@media(min-width:40rem){.sm\:pointer-events-none{pointer-events:none}.sm\:relative{position:relative}.sm\:inset-8{inset:calc(var(--spacing) * 8)}.sm\:right-0{right:0}.sm\:bottom-0{bottom:0}.sm\:z-auto{z-index:auto}.sm\:mx-4{margin-inline:calc(var(--spacing) * 4)}.sm\:mt-4{margin-top:calc(var(--spacing) * 4)}.sm\:mb-10{margin-bottom:calc(var(--spacing) * 10)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:h-6{height:calc(var(--spacing) * 6)}.sm\:h-8{height:calc(var(--spacing) * 8)}.sm\:h-9{height:calc(var(--spacing) * 9)}.sm\:h-12{height:calc(var(--spacing) * 12)}.sm\:h-\[18vh\]{height:18vh}.sm\:max-h-\[80dvh\]{max-height:80dvh}.sm\:max-h-\[150px\]{max-height:150px}.sm\:min-h-0{min-height:0}.sm\:w-0{width:0}.sm\:w-6{width:calc(var(--spacing) * 6)}.sm\:w-8{width:calc(var(--spacing) * 8)}.sm\:w-9{width:calc(var(--spacing) * 9)}.sm\:w-12{width:calc(var(--spacing) * 12)}.sm\:w-\[200px\]{width:200px}.sm\:w-\[220px\]{width:220px}.sm\:max-w-\[80\%\]{max-width:80%}.sm\:max-w-\[100px\]{max-width:100px}.sm\:max-w-\[140px\]{max-width:140px}.sm\:max-w-\[160px\]{max-width:160px}.sm\:max-w-\[200px\]{max-width:200px}.sm\:min-w-0{min-width:0}.sm\:-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:grid-cols-\[minmax\(0\,1\.5fr\)_minmax\(0\,1\.2fr\)_minmax\(0\,0\.8fr\)_minmax\(0\,0\.7fr\)_auto\]{grid-template-columns:minmax(0,1.5fr) minmax(0,1.2fr) minmax(0,.8fr) minmax(0,.7fr) auto}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}:where(.sm\:space-y-7>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 7) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 7) * calc(1 - var(--tw-space-y-reverse)))}.sm\:rounded-\[14px\]{border-radius:14px}.sm\:rounded-\[16px\]{border-radius:16px}.sm\:border{border-style:var(--tw-border-style);border-width:1px}.sm\:border-cc-border{border-color:var(--color-cc-border)}.sm\:border-cc-primary\/40{border-color:#d9775766}@supports (color:color-mix(in lab,red,red)){.sm\:border-cc-primary\/40{border-color:color-mix(in oklab,var(--color-cc-primary) 40%,transparent)}}.sm\:bg-cc-input-bg\/95{background-color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.sm\:bg-cc-input-bg\/95{background-color:color-mix(in oklab,var(--color-cc-input-bg) 95%,transparent)}}.sm\:bg-transparent{background-color:#0000}.sm\:p-1\.5{padding:calc(var(--spacing) * 1.5)}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-7{padding:calc(var(--spacing) * 7)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-0{padding-inline:0}.sm\:px-2{padding-inline:calc(var(--spacing) * 2)}.sm\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.sm\:py-2{padding-block:calc(var(--spacing) * 2)}.sm\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.sm\:py-3{padding-block:calc(var(--spacing) * 3)}.sm\:py-4{padding-block:calc(var(--spacing) * 4)}.sm\:py-8{padding-block:calc(var(--spacing) * 8)}.sm\:py-10{padding-block:calc(var(--spacing) * 10)}.sm\:pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.sm\:pt-3{padding-top:calc(var(--spacing) * 3)}.sm\:pt-10{padding-top:calc(var(--spacing) * 10)}.sm\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.sm\:pb-7{padding-bottom:calc(var(--spacing) * 7)}.sm\:pl-0{padding-left:0}.sm\:text-right{text-align:right}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.sm\:text-\[11px\]{font-size:11px}.sm\:text-\[13px\]{font-size:13px}.sm\:text-\[14px\]{font-size:14px}.sm\:text-\[15px\]{font-size:15px}.sm\:opacity-0{opacity:0}.sm\:shadow-\[0_10px_30px_rgba\(217\,119\,87\,0\.08\)\]{--tw-shadow:0 10px 30px var(--tw-shadow-color,#d9775714);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.sm\:backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}@media(hover:hover){.sm\:group-hover\:pointer-events-auto:is(:where(.group):hover *){pointer-events:auto}.sm\:group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.sm\:focus-within\:border-cc-primary\/25:focus-within{border-color:#d9775740}@supports (color:color-mix(in lab,red,red)){.sm\:focus-within\:border-cc-primary\/25:focus-within{border-color:color-mix(in oklab,var(--color-cc-primary) 25%,transparent)}}}@media(min-width:48rem){.md\:relative{position:relative}.md\:inset-auto{inset:auto}.md\:inset-x-\[10\%\]{inset-inline:10%}.md\:inset-y-\[5\%\]{inset-block:5%}.md\:z-auto{z-index:auto}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-7{height:calc(var(--spacing) * 7)}.md\:min-h-\[34px\]{min-height:34px}.md\:w-0{width:0}.md\:w-7{width:calc(var(--spacing) * 7)}.md\:w-\[260px\]{width:260px}.md\:-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:justify-center{justify-content:center}.md\:py-0\.5{padding-block:calc(var(--spacing) * .5)}.md\:pt-0{padding-top:0}}@media(min-width:64rem){.lg\:relative{position:relative}.lg\:inset-auto{inset:auto}.lg\:z-auto{z-index:auto}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:inline{display:inline}.lg\:min-h-\[420px\]{min-height:420px}.lg\:w-0{width:0}.lg\:w-\[320px\]{width:320px}.lg\:translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:grid-cols-\[minmax\(280px\,340px\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(280px,340px) minmax(0,1fr)}.lg\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.lg\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.lg\:pt-0{padding-top:0}}@media(prefers-color-scheme:dark){.dark\:bg-amber-900\/60{background-color:#7b330699}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/60{background-color:color-mix(in oklab,var(--color-amber-900) 60%,transparent)}}.dark\:text-amber-300{color:var(--color-amber-300)}.dark\:text-amber-400{color:var(--color-amber-400)}.dark\:text-amber-400\/70{color:#fcbb00b3}@supports (color:color-mix(in lab,red,red)){.dark\:text-amber-400\/70{color:color-mix(in oklab,var(--color-amber-400) 70%,transparent)}}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-emerald-400\/70{color:#00d294b3}@supports (color:color-mix(in lab,red,red)){.dark\:text-emerald-400\/70{color:color-mix(in oklab,var(--color-emerald-400) 70%,transparent)}}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-purple-400{color:var(--color-purple-400)}.dark\:text-violet-400{color:var(--color-violet-400)}}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}}@font-face{font-family:MesloLGS Nerd Font Mono;src:url(/fonts/MesloLGSNerdFontMono-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:MesloLGS Nerd Font Mono;src:url(/fonts/MesloLGSNerdFontMono-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(6px)scale(.98)}60%{opacity:1;transform:translateY(-1px)scale(1.002)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes userSlideIn{0%{opacity:0;transform:translate(8px)scale(.97)}60%{opacity:1;transform:translate(-1px)scale(1.002)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.85)}}@keyframes typing-breathe{0%,to{opacity:.4;transform:scale(.92)}50%{opacity:1;transform:scale(1)}}@keyframes gradient-shift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes gentle-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes spin-slow{to{transform:rotate(360deg)}}.animate-spin-slow{animation:3s linear infinite spin-slow}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:.2s ease-out fadeIn}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes name-appear{0%{opacity:0;filter:blur(8px);transform:translateY(-2px)}50%{opacity:.8;filter:blur(2px)}to{opacity:1;filter:blur();transform:translateY(0)}}.animate-name-appear{animation:.5s ease-out name-appear}@keyframes menu-appear{0%{opacity:0;transform:translateY(-4px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes ring-pulse{0%{box-shadow:0 0 0 0 var(--color-cc-warning)}70%{box-shadow:0 0 0 4px #0000}to{box-shadow:0 0 #0000}}.accordion-panel{opacity:0;visibility:hidden;grid-template-rows:0fr;transition:grid-template-rows .2s ease-out,opacity .15s ease-out,visibility 0s .2s;display:grid}.accordion-panel[data-open=true]{opacity:1;visibility:visible;grid-template-rows:1fr;transition:grid-template-rows .2s ease-out,opacity .15s ease-out,visibility}.accordion-panel>.accordion-inner{overflow:hidden}.dark{--color-cc-bg:#262624;--color-cc-fg:#faf9f5;--color-cc-card:#141413;--color-cc-primary:#d97757;--color-cc-primary-hover:#e08b6b;--color-cc-user-bubble:#30302e;--color-cc-border:#dedcd126;--color-cc-muted:#c2c0b6;--color-cc-sidebar:#1e1e1c;--color-cc-input-bg:#141413;--color-cc-code-bg:#141413;--color-cc-code-fg:#d4d4d4;--color-cc-hover:#dedcd10f;--color-cc-active:#dedcd11a;--color-cc-success:#48bb78;--color-cc-error:#fc8181;--color-cc-warning:#f6e05e;--color-cc-sidebar-footer:#141413;--color-cc-separator:#dedcd114;--color-cc-info:#63b3ed;--color-cc-merged:#b794f4;--color-cc-codex:#34d399;--color-cc-codex-hover:#2fc48d;--color-cc-primary-btn:#ad5535;--color-cc-primary-btn-hover:#b85c3a;--color-cc-codex-btn:#0a7d5f;--color-cc-codex-btn-hover:#0b8362}@media(pointer:fine){::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-cc-muted);opacity:.4;border-radius:3px}::-webkit-scrollbar-thumb:hover{opacity:.6}}.font-serif-assistant{font-family:ui-serif,Georgia,Cambria,Times New Roman,serif}.font-sans-ui{font-family:system-ui,-apple-system,sans-serif}.font-mono-code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace}.composer-card{transition:box-shadow .2s,border-color .2s;box-shadow:0 10px 30px #0000001a,inset 0 1px #ffffff0f}.composer-card:focus-within{box-shadow:0 12px 36px #00000024,inset 0 1px #ffffff14}.thinking-expand{animation:.25s ease-out thinkingReveal}@keyframes thinkingReveal{0%{opacity:0;max-height:0}to{opacity:1;max-height:500px}}.tool-card{transition:transform .15s,box-shadow .15s}.tool-card:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000000f}.avatar-ring{background:conic-gradient(from 180deg,var(--color-cc-primary),#e8a87c,var(--color-cc-primary));padding:1.5px}.avatar-ring>.avatar-inner{background:var(--color-cc-bg)}.user-bubble-gradient{background:linear-gradient(135deg,var(--color-cc-user-bubble),#edddd2)}@supports (color:color-mix(in lab,red,red)){.user-bubble-gradient{background:linear-gradient(135deg,var(--color-cc-user-bubble),color-mix(in srgb,var(--color-cc-user-bubble) 85%,var(--color-cc-primary) 15%))}}.stats-glow{position:relative}.stats-glow:before{content:"";background:var(--color-cc-primary);opacity:.4;border-radius:2px;width:3px;animation:1.5s ease-in-out infinite typing-breathe;position:absolute;top:0;bottom:0;left:0}.provider-card--claude:hover,.provider-card--claude:focus-visible{border-color:var(--color-cc-primary);transform:translateY(-1px);box-shadow:0 4px 16px #d977571f}@supports (color:color-mix(in lab,red,red)){.provider-card--claude:hover,.provider-card--claude:focus-visible{box-shadow:0 4px 16px color-mix(in srgb,var(--color-cc-primary) 12%,transparent)}}.provider-card--codex:hover,.provider-card--codex:focus-visible{border-color:var(--color-cc-codex);transform:translateY(-1px);box-shadow:0 4px 16px #10a37f1f}@supports (color:color-mix(in lab,red,red)){.provider-card--codex:hover,.provider-card--codex:focus-visible{box-shadow:0 4px 16px color-mix(in srgb,var(--color-cc-codex) 12%,transparent)}}.btn-primary-aa{background-color:var(--color-cc-primary-btn)}.btn-primary-aa:hover{background-color:var(--color-cc-primary-btn-hover)}.btn-codex-aa{background-color:var(--color-cc-codex-btn)}.btn-codex-aa:hover{background-color:var(--color-cc-codex-btn-hover)}@media(prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html{min-height:calc(100% + env(safe-area-inset-top));overscroll-behavior:none;overflow:hidden}body{overscroll-behavior:none;height:100%;overflow:hidden}button,[role=button],a,input,textarea,select{touch-action:manipulation}.pt-safe{padding-top:env(safe-area-inset-top,0px)}.pb-safe{padding-bottom:max(.75rem,env(safe-area-inset-bottom,0px))}.pb-safe-only{padding-bottom:env(safe-area-inset-bottom,0px)}@media(min-width:640px){.pb-safe{padding-bottom:max(1rem,env(safe-area-inset-bottom,0px))}}.diff-viewer{border:1px solid var(--color-cc-border);background:var(--color-cc-code-bg);color:var(--color-cc-code-fg);border-radius:10px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.5;overflow:hidden}.diff-compact{background:0 0;border:none;border-radius:0}.diff-compact .diff-file-header{display:none}.diff-compact .diff-hunk-header{opacity:.4;padding:1px 4px;font-size:10px;font-style:italic}.diff-full{overflow-y:auto}.diff-empty{background:var(--color-cc-card);justify-content:center;align-items:center;padding:24px;display:flex}.diff-file+.diff-file{border-top:1px solid var(--color-cc-border)}.diff-file-header{border-bottom:1px solid var(--color-cc-border);z-index:1;background:#1f1e1d26;align-items:center;gap:6px;padding:6px 12px;font-size:11px;display:flex;position:sticky;top:0}.dark .diff-file-header{background:#dedcd10f}.diff-hunk-header{color:var(--color-cc-primary);background:#d977570f;padding:4px 12px;font-size:11px}.diff-line{min-height:20px;display:flex}.diff-gutter{text-align:right;width:44px;color:var(--color-cc-muted);opacity:.5;-webkit-user-select:none;user-select:none;flex-shrink:0;padding:0 6px;font-size:11px}.diff-marker{text-align:center;-webkit-user-select:none;user-select:none;flex-shrink:0;width:16px}.diff-content{white-space:pre-wrap;word-break:break-all;flex:1;min-width:0;padding-right:12px}.diff-line-add{background:#2d7d461a}.diff-line-add .diff-marker{color:var(--color-cc-success)}.diff-line-del{background:#c530301a}.diff-line-del .diff-marker{color:var(--color-cc-error)}.dark .diff-line-add{background:#48bb7814}.dark .diff-line-del{background:#fc818114}.diff-word-add{background:#2d7d4640;border-radius:2px;padding:0 1px}.diff-word-del{background:#c5303040;border-radius:2px;padding:0 1px}.dark .diff-word-add{background:#48bb7833}.dark .diff-word-del{background:#fc818133}.xterm .xterm-viewport{height:100%!important}@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-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}
|