@qearlyao/familiar 0.4.1 → 0.4.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/web/messages.js
CHANGED
|
@@ -16,10 +16,20 @@ export function webAttachments(config, attachments) {
|
|
|
16
16
|
kind: attachment.kind,
|
|
17
17
|
mimeType: attachment.mimeType,
|
|
18
18
|
size: attachment.size,
|
|
19
|
-
url:
|
|
19
|
+
url: webAttachmentUrl(config, attachment),
|
|
20
20
|
derivedText: attachmentDerivedText(attachment),
|
|
21
21
|
}));
|
|
22
22
|
}
|
|
23
|
+
function webAttachmentUrl(config, attachment) {
|
|
24
|
+
if (!attachment.localPath)
|
|
25
|
+
return attachment.remoteUrl;
|
|
26
|
+
try {
|
|
27
|
+
return publicAttachmentPath(config, attachment.localPath);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return attachment.remoteUrl;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
23
33
|
export function attachmentDerivedText(attachment) {
|
|
24
34
|
if (attachment.derived?.text?.label === "preview")
|
|
25
35
|
return undefined;
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qearlyao/familiar",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@qearlyao/familiar",
|
|
9
|
-
"version": "0.4.
|
|
9
|
+
"version": "0.4.2",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@earendil-works/pi-agent-core": "0.78.0",
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{i as t,n,t as r}from"./react-Bi_azaFt.js";import{$ as i,A as a,At as o,B as s,C as c,Ct as l,D as u,Dt as d,E as f,Et as p,F as m,G as h,H as g,I as _,J as v,K as y,L as b,M as x,N as S,O as C,Ot as ee,P as w,Q as te,R as ne,S as re,St as ie,T as ae,Tt as oe,U as T,V as se,W as ce,X as le,Y as ue,Z as de,_ as fe,_t as pe,a as me,at as he,b as ge,bt as _e,c as ve,ct as ye,d as be,dt as xe,et as Se,f as Ce,ft as we,g as Te,gt as Ee,h as De,ht as Oe,i as ke,it as Ae,j as je,k as Me,kt as Ne,l as Pe,lt as Fe,m as Ie,mt as Le,n as Re,nt as ze,o as Be,ot as Ve,p as He,pt as Ue,q as We,r as Ge,rt as Ke,s as qe,st as Je,t as Ye,tt as Xe,u as Ze,ut as Qe,v as $e,vt as et,w as tt,wt as nt,x as rt,xt as it,y as at,yt as ot,z as st}from"./ui-C12-nN_X.js";import{n as ct,r as E,t as lt}from"./markdown-kaIeGxdv.js";import{t as ut}from"./vendor-D1QXMhXm.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var D=e(t(),1),dt=n();function O(...e){return Ye(g(e))}var ft=se(`group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-[background-color,border-color,box-shadow,color,opacity,transform] outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,outline:`border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground`,ghost:`hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground`,destructive:`bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,xs:`h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,icon:`size-8`,"icon-xs":`size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg`,"icon-lg":`size-9`}},defaultVariants:{variant:`default`,size:`default`}}),k=r();function A({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i}){return(0,k.jsx)(r?s:`button`,{"data-slot":`button`,"data-variant":t,"data-size":n,className:O(ft({variant:t,size:n,className:e})),...i})}function pt(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`step-${Date.now()}-${Math.random().toString(36).slice(2)}`}function mt(e){if(e.steps)return{id:e.id,role:e.role,who:e.who,steps:e.steps,attachments:e.attachments,usage:e.usage,silent:e.silent,ts:e.ts};let t=[];if(e.thinking||e.thinkingMs!=null){let n=e.ts,r=n-(e.thinkingMs??0);t.push({kind:`thinking`,id:pt(),text:e.thinking??``,startedAt:r,endedAt:n,complete:!0})}for(let n of e.tools??[])t.push({kind:`tool`,id:n.id,tool:n});return e.text&&t.push({kind:`text`,id:pt(),text:e.text,complete:!0}),{id:e.id,role:e.role,who:e.who,steps:t,attachments:e.attachments,usage:e.usage,silent:e.silent,ts:e.ts}}async function ht(){let e=await fetch(`/api/web/auth/mode`);if(!e.ok)throw Error(`auth/mode: ${e.status}`);let t=await e.json();return{mode:t.mode,personaName:t.personaName??`Familiar`}}async function gt(){let e=await fetch(`/api/web/auth/session`);if(e.status!==401){if(!e.ok)throw Error(`auth/session: ${e.status}`);return(await e.json()).device}}async function _t(e,t){return(await j(`/api/web/auth/login`,`POST`,{token:e,deviceName:t?.trim()||void 0},`auth/login`)).device}async function vt(){let e=await fetch(`/api/web/auth/devices`);if(!e.ok)throw Error(`auth/devices: ${e.status}`);return(await e.json()).devices}async function yt(e){await j(`/api/web/auth/devices`,`DELETE`,{id:e},`auth/devices`)}async function bt(){return(await j(`/api/web/auth/devices/revoke-others`,`POST`,{},`auth/devices/revoke-others`)).revoked}async function xt(){await j(`/api/web/auth/logout`,`POST`,{},`auth/logout`)}async function St(){let e=await fetch(`/api/web/sessions`);if(!e.ok)throw Error(`sessions: ${e.status}`);return(await e.json()).sessions}async function Ct(e,t=50){let n=new URLSearchParams({limit:String(t)});e&&n.set(`channelKey`,e);let r=await fetch(`/api/web/history?${n.toString()}`);if(!r.ok)throw Error(`history: ${r.status}`);let i=await r.json();return{messages:i.messages.map(mt),hasMore:i.hasMore,channelKey:i.channelKey}}async function wt(){let e=await fetch(`/api/web/diaries`);if(!e.ok)throw Error(`diaries: ${e.status}`);return(await e.json()).diaries}async function Tt(e){let t=new URLSearchParams({date:e}),n=await fetch(`/api/web/diary?${t.toString()}`);if(!n.ok)throw Error(`diary: ${n.status}`);return(await n.json()).diary}async function Et(e,t,n,r=[]){let i=new FormData;i.set(`text`,e),i.set(`clientId`,t),n&&i.set(`channelKey`,n);for(let e of r)i.append(`attachments`,e,e.name);let a=await fetch(`/api/web/send`,{method:`POST`,body:i});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(e.error??`send: ${a.status}`)}return await a.json()}function Dt(e){let t=window.location.protocol===`https:`?`wss:`:`ws:`,n=e?`?channelKey=${encodeURIComponent(e)}`:``;return`${t}//${window.location.host}/api/web/stream${n}`}async function Ot(e){let t=new URLSearchParams;e&&t.set(`channelKey`,e);let n=await fetch(`/api/web/agent/settings${t.toString()?`?${t.toString()}`:``}`);if(!n.ok)throw Error(`agent/settings: ${n.status}`);return await n.json()}async function kt(){let e=await fetch(`/api/web/agent/models`);if(!e.ok)throw Error(`agent/models: ${e.status}`);let t=await e.json();return{models:t.models,added:t.added??[]}}async function j(e,t,n,r){let i=await fetch(e,{method:t,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});if(!i.ok){let e=await i.json().catch(()=>({}));throw Error(e.error??`${r}: ${i.status}`)}return await i.json().catch(()=>void 0)}async function At(e){let t=await j(`/api/web/agent/models`,`POST`,{model:e},`agent/models`);return{models:t.models,added:t.added??[]}}async function jt(e){let t=await j(`/api/web/agent/models`,`DELETE`,{model:e},`agent/models`);return{models:t.models,added:t.added??[]}}async function Mt(e,t){return j(`/api/web/agent/settings`,`POST`,{channelKey:e,...t},`agent/settings`)}async function Nt(e){await j(`/api/web/agent/new`,`POST`,{channelKey:e},`agent/new`)}async function Pt(){let e=await fetch(`/api/web/memes`);if(!e.ok)throw Error(`memes: ${e.status}`);return(await e.json()).families}async function Ft(){let e=await fetch(`/api/web/config`);if(!e.ok)throw Error(`config: ${e.status}`);return await e.json()}async function It(e,t){return j(`/api/web/config`,`POST`,{key:e,value:t},`config`)}async function Lt(e){return j(`/api/web/config`,`DELETE`,{key:e},`config`)}var Rt=/\.(?:jpe?g|png|gif|webp)(?:\?[^\s]*)?$/i,M=/https?:\/\/[^\s)<>"']+/gi,zt=/meme:\s*/gi,Bt=/meme:\s*([^\n]*?)\($/i;function Vt(e){return`meme: ${e.name} (${e.url})`}function Ht(e){let t=Bt.exec(e);if(t)return{before:e.slice(0,t.index),name:(t[1]??``).trim()}}function Ut(e,t){let n=e.indexOf(`
|
|
2
2
|
`,t),r=n===-1?e.length:n,i=e.slice(t,r),a=new RegExp(M.source,`gi`),o=Array.from(i.matchAll(a));for(let e=o.length-1;e>=0;--e){let t=o[e],n=t?.[0],r=t?.index??0;if(!n)continue;let a=i.lastIndexOf(`(`,r),s=r+n.length;if(a===-1||i[s]!==`)`)continue;let c=i.slice(0,a).trim();if(c)return{whole:i.slice(0,s+1),name:c,url:n}}return null}function Wt(e){let t=[],n=0;for(;n<e.length;){zt.lastIndex=n,M.lastIndex=n;let r=zt.exec(e),i=M.exec(e),a=r&&(!i||r.index<=i.index)?r.index:-1,o=a===-1?i?.index:a;if(o===void 0)break;let s=a===o?Ut(e,a+(r?.[0].length??0)):null;if(a===o&&!s){n=o+(r?.[0].length??0);continue}let c=s?.whole??i?.[0];if(!c)break;if(s){t.push({type:`meme`,index:o,whole:`${r?.[0]??``}${s.whole}`,name:s.name,url:s.url}),n=o+(r?.[0].length??0)+s.whole.length;continue}Rt.test(c)&&t.push({type:`image-url`,index:o,whole:c,url:c}),n=o+c.length}return t}var Gt=()=>[{type:`text`,value:``}];function N(e){return{type:`text`,value:e}}function Kt(e){return e.trim().length>0}function qt(e,t){return e?t?`${e.replace(/[ \t]+$/,``).replace(/\n+$/,``)}\n${t.replace(/^\n+/,``)}`:e:t}function Jt(e,t){let n=Math.max(0,Math.min(t.start,e.length));return{start:n,end:Math.max(n,Math.min(t.end,e.length))}}function Yt(e){let t=-1;for(let n=e.length-1;n>=0;--n)if(e[n]?.type===`text`){t=n;break}return t===-1?e.length:t}function Xt(e){return e.flatMap(e=>e.type===`meme`?[Vt(e)]:Kt(e.value)?[e.value.trim()]:[]).join(`
|
|
3
3
|
`).trim()}function Zt(e){return Xt(e).length>0}function Qt(e,t,n){let r=t&&e[t.blockIndex]?.type===`text`?t.blockIndex:Yt(e),i=e[r];if(!i||i.type!==`text`)return{blocks:[...e,{type:`meme`,...n},N(``)],focusIndex:e.length+1};let{start:a,end:o}=t?Jt(i.value,t):{start:i.value.length,end:i.value.length},s=i.value.slice(0,a),c=i.value.slice(o),l=[...s?[N(s)]:[],{type:`meme`,...n},N(c)];return{blocks:[...e.slice(0,r),...l,...e.slice(r+1)],focusIndex:r+l.length-1}}function $t(e,t){let n=[];for(let[r,i]of e.entries()){if(r===t)continue;let e=n.at(-1);if(e?.type===`text`&&i.type===`text`){e.value=qt(e.value,i.value);continue}n.push({...i})}if(n.length===0)return{blocks:Gt(),focusIndex:0};let r=n.findIndex((e,n)=>n>=t&&e.type===`text`);if(r!==-1)return{blocks:n,focusIndex:r};let i=-1;for(let e=n.length-1;e>=0;--e)if(n[e]?.type===`text`){i=e;break}return{blocks:n.some(e=>e.type===`text`)?n:[...n,N(``)],focusIndex:i===-1?n.length:i}}function en({onPick:e}){let[t,n]=(0,D.useState)(!1),[r,i]=(0,D.useState)(null),[a,o]=(0,D.useState)(null),[s,c]=(0,D.useState)(null),[l,u]=(0,D.useState)(``),d=(0,D.useRef)(null),f=(0,D.useRef)(!1);(0,D.useEffect)(()=>{t&&(r!=null||f.current||(f.current=!0,Pt().then(e=>{i(e),!s&&e[0]&&c(e[0].name),o(null)}).catch(()=>o(`catalog unavailable`)).finally(()=>{f.current=!1})))},[t,r,s]),(0,D.useEffect)(()=>{if(t){let e=window.setTimeout(()=>d.current?.focus(),30);return()=>window.clearTimeout(e)}let e=window.setTimeout(()=>u(``),0);return()=>window.clearTimeout(e)},[t]);let p=(0,D.useMemo)(()=>r?r.find(e=>e.name===s)??r[0]??null:null,[r,s]),m=(0,D.useMemo)(()=>{if(!p)return[];let e=l.trim().toLowerCase();return e?p.memes.filter(t=>t.name.toLowerCase().includes(e)):p.memes},[p,l]),h=t=>{e(t),n(!1)};return(0,k.jsxs)(Ie,{open:t,onOpenChange:n,children:[(0,k.jsx)(De,{asChild:!0,children:(0,k.jsx)(A,{type:`button`,size:`sm`,variant:`ghost`,"aria-label":`memes`,className:`text-muted-foreground hover:text-foreground`,children:(0,k.jsx)(te,{className:`size-4`})})}),(0,k.jsx)(He,{children:(0,k.jsx)(Ce,{side:`top`,align:`end`,sideOffset:10,collisionPadding:16,className:O(`z-50 w-[min(28rem,calc(100vw-2rem))] origin-(--radix-popover-content-transform-origin)`,`rounded-md border border-border bg-card p-3 shadow-md`,`data-[state=open]:animate-in data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,`data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`),children:a?(0,k.jsx)(`div`,{className:`px-2 py-6 text-center font-serif text-sm italic text-muted-foreground`,children:a}):r?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{className:`flex items-center gap-3 px-1 pb-2 text-sm`,children:r.map((e,t)=>(0,k.jsxs)(`span`,{className:`flex items-center gap-3`,children:[t>0&&(0,k.jsx)(`span`,{className:`text-muted-foreground/40`,children:`·`}),(0,k.jsx)(`button`,{type:`button`,onClick:()=>c(e.name),className:O(`font-serif tracking-tight transition-colors`,e.name===p?.name?`text-foreground`:`italic text-muted-foreground hover:text-foreground`),children:e.name})]},e.name))}),(0,k.jsx)(`input`,{ref:d,type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:`search by name…`,className:O(`mb-2 w-full rounded border border-input bg-background px-2.5 py-1.5 text-sm`,`placeholder:text-muted-foreground focus:outline-none`,`transition-[border-color,box-shadow] focus:border-ring focus:ring-3 focus:ring-ring/30`)}),(0,k.jsx)(`div`,{className:`max-h-72 overflow-y-auto`,children:m.length===0?(0,k.jsx)(`div`,{className:`px-2 py-6 text-center font-serif text-sm italic text-muted-foreground/80`,children:`nothing in this family matches`}):(0,k.jsx)(`div`,{className:`grid grid-cols-4 gap-2 sm:grid-cols-5`,children:m.map(e=>(0,k.jsxs)(`button`,{type:`button`,onClick:()=>h(e),title:e.name,className:O(`group relative aspect-square overflow-hidden rounded border border-border/60 bg-background`,`transition-[border-color,transform] hover:border-ring hover:-translate-y-px`),children:[(0,k.jsx)(`img`,{src:e.url,alt:e.name,loading:`lazy`,className:`h-full w-full object-cover`}),(0,k.jsx)(`span`,{className:O(`pointer-events-none absolute inset-x-0 bottom-0 truncate px-1 py-0.5`,`bg-gradient-to-t from-background/95 via-background/70 to-transparent`,`text-[10px] font-medium leading-tight text-foreground`,`opacity-0 transition-opacity group-hover:opacity-100`),children:e.name})]},e.url))})})]}):(0,k.jsx)(`div`,{className:`px-2 py-6 text-center font-serif text-sm italic text-muted-foreground/80`,children:`opening the drawer…`})})})]})}function tn(e,t,n){let r=e[n]?.type===`text`?n:e.findIndex(e=>e.type===`text`),i=e[r];if(r===-1||!i||i.type!==`text`)return;let a=t.get(r),o=i.value.length;return{blockIndex:r,start:a?.selectionStart??o,end:a?.selectionEnd??o}}function nn({blocks:e,personaName:t,onUpdateBlocks:n,onPasteFiles:r,onSubmit:i}){let a=(0,D.useRef)(new Map),o=(0,D.useRef)(0),s=(0,D.useRef)(null),c=!Zt(e);(0,D.useEffect)(()=>{for(let e of a.current.values())e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,200)}px`;let e=s.current;if(e===null)return;s.current=null;let t=a.current.get(e);t&&(t.focus(),t.setSelectionRange(0,0))},[e]);let l=t=>{let r=tn(e,a.current,o.current);n(e=>{let n=Qt(e,r,t);return s.current=n.focusIndex,o.current=n.focusIndex,n.blocks})},u=e=>{n(t=>{let n=$t(t,e);return s.current=n.focusIndex,o.current=n.focusIndex,n.blocks})};return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(en,{onPick:l}),(0,k.jsx)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1.5`,children:e.map((e,s)=>e.type===`meme`?(0,k.jsxs)(`div`,{className:`inline-flex max-w-[16rem] items-center gap-2 self-start rounded border border-border/70 bg-background/70 p-1 pr-1.5`,children:[(0,k.jsx)(`img`,{src:e.url,alt:e.name,loading:`lazy`,className:`size-12 rounded-sm object-cover`}),(0,k.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-serif text-xs italic text-muted-foreground`,children:e.name}),(0,k.jsx)(`button`,{type:`button`,onClick:()=>u(s),className:`rounded-sm p-1 text-muted-foreground transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:outline-none`,"aria-label":`remove ${e.name}`,children:(0,k.jsx)(T,{className:`size-3`})})]},`${e.url}-${s}`):(0,k.jsx)(`textarea`,{ref:e=>{e?a.current.set(s,e):a.current.delete(s)},value:e.value,onFocus:()=>{o.current=s},onSelect:()=>{o.current=s},onChange:e=>{let t=e.target.value;n(e=>{let n=e[s];if(!n||n.type!==`text`)return e;let r=[...e];return r[s]={type:`text`,value:t},r})},onPaste:e=>{let t=Array.from(e.clipboardData.files);t.length>0&&r(t)},onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),i())},placeholder:c?`write to ${t}…`:void 0,rows:1,autoFocus:s===0,className:`min-h-8 w-full resize-none bg-transparent leading-8 text-foreground placeholder:text-muted-foreground focus:outline-none`},`text-${s}`))})]})}function rn(e=0){return{blocks:Gt(),attachments:[],revision:e}}function an(e){let t=e instanceof Error?e.message:`send failed`,n=t?`${t.charAt(0).toLowerCase()}${t.slice(1)}`:`send failed`;return n.startsWith(`send failed`)?n:`send failed: ${n}`}function on(e){return rn(e.revision+1)}function sn(e,t){return e.revision===t&&!Zt(e.blocks)&&e.attachments.length===0}function cn({onSend:e,onAbort:t,streaming:n,personaName:r}){let[i,a]=(0,D.useState)(()=>rn()),[o,s]=(0,D.useState)(!1),[c,l]=(0,D.useState)(!1),[u,d]=(0,D.useState)(),f=(0,D.useRef)(null),{blocks:p,attachments:m}=i,h=(0,D.useMemo)(()=>Xt(p),[p]),g=async()=>{if(c)return;let t=i,n=Xt(t.blocks);if(!n&&t.attachments.length===0)return;let r=t.revision+1;d(void 0),l(!0),a(on);try{await e(n,t.attachments)}catch(e){a(e=>sn(e,r)?t:e),d(an(e))}finally{l(!1)}},_=e=>{d(void 0),a(t=>{let n=e(t.blocks);return n===t.blocks?t:{...t,blocks:n,revision:t.revision+1}})},v=e=>{e.length!==0&&(d(void 0),a(t=>({...t,attachments:[...t.attachments,...e],revision:t.revision+1})))},y=(e,t)=>{let n=Array.from(e).filter(e=>e.kind===`file`).map(e=>e.getAsFile()).filter(e=>!!e);return n.length>0?n:Array.from(t)},b=c||!n&&!h&&m.length===0,x=n&&!c;return(0,k.jsx)(`div`,{className:`border-t border-border bg-background pb-[env(safe-area-inset-bottom)]`,children:(0,k.jsxs)(`div`,{className:`mx-auto max-w-3xl px-5 py-4`,children:[(0,k.jsx)(`input`,{ref:f,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{v(e.target.files?Array.from(e.target.files):[]),e.target.value=``}}),(0,k.jsxs)(`div`,{onDragEnter:e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),s(!0))},onDragOver:e=>{e.dataTransfer.types.includes(`Files`)&&e.preventDefault()},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||s(!1)},onDrop:e=>{e.preventDefault(),s(!1),v(y(e.dataTransfer.items,e.dataTransfer.files))},className:O(`flex flex-col gap-2 rounded-md border border-input bg-card px-3 py-2.5 shadow-sm transition-[border-color,box-shadow] focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/30`,o&&`border-ring ring-3 ring-ring/30`),children:[m.length>0&&(0,k.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:m.map((e,t)=>(0,k.jsxs)(`button`,{type:`button`,onClick:()=>{d(void 0),a(e=>({...e,attachments:e.attachments.filter((e,n)=>n!==t),revision:e.revision+1}))},className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-xs text-muted-foreground`,children:[e.name,(0,k.jsx)(T,{className:`size-3`})]},`${e.name}-${t}`))}),(0,k.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,k.jsx)(A,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>f.current?.click(),"aria-label":`attach`,className:`text-muted-foreground hover:text-foreground`,children:(0,k.jsx)(Ve,{className:`size-4`})}),(0,k.jsx)(nn,{blocks:p,personaName:r,onUpdateBlocks:_,onPasteFiles:v,onSubmit:()=>void g()}),(0,k.jsx)(A,{type:`button`,size:`sm`,onClick:x?t:()=>void g(),disabled:b,"aria-label":x?`stop`:`send`,className:`h-8 px-3`,children:x?(0,k.jsx)(ue,{className:`size-3 fill-current`,strokeWidth:0}):(0,k.jsx)(Se,{className:`size-4`})})]})]}),u?(0,k.jsx)(`p`,{className:`mt-1.5 text-center font-serif text-xs italic text-destructive`,children:u}):null,(0,k.jsx)(`p`,{className:`mt-1.5 text-center text-[11px] tracking-wide text-muted-foreground`,children:`enter to send · shift+enter for newline`})]})})}function ln({...e}){return(0,k.jsx)(st,{"data-slot":`collapsible`,...e})}function un({...e}){return(0,k.jsx)(ne,{"data-slot":`collapsible-trigger`,...e})}function dn({...e}){return(0,k.jsx)(b,{"data-slot":`collapsible-content`,...e})}function fn({...e}){return(0,k.jsx)(w,{"data-slot":`sheet`,...e})}function pn({...e}){return(0,k.jsx)(S,{"data-slot":`sheet-portal`,...e})}function mn({className:e,...t}){return(0,k.jsx)(x,{"data-slot":`sheet-overlay`,className:O(`fixed inset-0 z-50 bg-foreground/15 duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...t})}function hn({className:e,children:t,side:n=`right`,showCloseButton:r=!0,...i}){return(0,k.jsxs)(pn,{children:[(0,k.jsx)(mn,{}),(0,k.jsxs)(je,{"data-slot":`sheet-content`,"data-side":n,className:O(`fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10`,e),...i,children:[t,r&&(0,k.jsx)(a,{"data-slot":`sheet-close`,asChild:!0,children:(0,k.jsxs)(A,{variant:`ghost`,className:`absolute top-3 right-3`,size:`icon-sm`,children:[(0,k.jsx)(T,{}),(0,k.jsx)(`span`,{className:`sr-only`,children:`Close`})]})})]})]})}function gn({className:e,...t}){return(0,k.jsx)(`div`,{"data-slot":`sheet-header`,className:O(`flex flex-col gap-0.5 p-4`,e),...t})}function _n({className:e,...t}){return(0,k.jsx)(m,{"data-slot":`sheet-title`,className:O(`font-heading text-base font-medium text-foreground`,e),...t})}function vn({className:e,...t}){return(0,k.jsx)(be,{"data-slot":`radio-group`,className:O(`grid w-full gap-2`,e),...t})}function yn({className:e,...t}){return(0,k.jsx)(Ze,{"data-slot":`radio-group-item`,className:O(`group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary`,e),...t,children:(0,k.jsx)(Pe,{"data-slot":`radio-group-indicator`,className:`flex size-4 items-center justify-center`,children:(0,k.jsx)(`span`,{className:`absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground`})})})}function bn({className:e,...t}){return(0,k.jsx)(Te,{"data-slot":`label`,className:O(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function xn({models:e,added:t,current:n,source:r,disabled:i,onChange:a,onAdd:o,onRemove:s}){let[c,l]=(0,D.useState)(``),[u,d]=(0,D.useState)(!1),[f,p]=(0,D.useState)(),m=new Set(t),h=async e=>{e.preventDefault();let t=c.trim();if(t){if(!t.includes(`/`)||t.startsWith(`/`)||t.endsWith(`/`)){p(`format must be provider/model-id`);return}p(void 0),d(!0);try{await o(t),l(``)}catch(e){p(e instanceof Error?e.message:String(e))}finally{d(!1)}}},g=async(e,t)=>{e.preventDefault(),e.stopPropagation(),d(!0);try{await s(t)}catch{}finally{d(!1)}};return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(vn,{value:n??``,onValueChange:a,disabled:i,className:`grid gap-1`,children:e.map(e=>{let t=`model-${e}`,r=e===n,a=m.has(e),[o,...s]=e.split(`/`),c=s.join(`/`);return(0,k.jsxs)(bn,{htmlFor:t,className:`group/row flex cursor-pointer items-center gap-3 rounded-md px-3 py-2.5 transition-colors hover:bg-accent has-data-[state=checked]:bg-primary has-data-[state=checked]:text-primary-foreground has-data-[state=checked]:hover:bg-primary`,children:[(0,k.jsx)(yn,{value:e,id:t}),(0,k.jsxs)(`span`,{className:`min-w-0 flex-1 font-mono text-sm leading-tight`,children:[(0,k.jsx)(`span`,{className:r?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:o}),(0,k.jsx)(`span`,{className:r?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:`/`}),(0,k.jsx)(`span`,{className:r?`text-primary-foreground`:`text-muted-foreground group-hover/row:text-foreground`,children:c})]}),a?(0,k.jsx)(`button`,{type:`button`,onClick:t=>g(t,e),"aria-label":`remove ${e}`,disabled:u||i,className:`flex size-6 shrink-0 items-center justify-center rounded-sm opacity-0 transition-opacity group-hover/row:opacity-100 focus-visible:opacity-100 disabled:cursor-not-allowed `+(r?`text-primary-foreground/70 hover:text-primary-foreground`:`text-muted-foreground hover:text-foreground`),children:(0,k.jsx)(T,{className:`size-3.5`})}):null]},e)})}),n&&r?(0,k.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-muted-foreground/70`,children:r===`override`?`set for this channel`:`inherited from default config`}):null,(0,k.jsxs)(`form`,{onSubmit:h,className:`mt-4 flex items-center gap-2`,children:[(0,k.jsx)(`input`,{type:`text`,value:c,onChange:e=>{l(e.target.value),f&&p(void 0)},placeholder:`provider/model-id`,spellCheck:!1,autoComplete:`off`,disabled:u||i,className:`h-8 min-w-0 flex-1 rounded-md border border-border bg-background px-3 font-mono text-sm text-foreground placeholder:text-muted-foreground/60 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`}),(0,k.jsx)(A,{type:`submit`,variant:`outline`,size:`default`,disabled:u||i||!c.trim(),children:`add`})]}),f?(0,k.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-destructive`,children:f}):null]})}var Sn=se(`group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-[background-color,border-color,box-shadow,color,opacity,transform] outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent hover:bg-muted`},size:{default:`h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,sm:`h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`}},defaultVariants:{variant:`default`,size:`default`}}),Cn=D.createContext({size:`default`,variant:`default`,spacing:0,orientation:`horizontal`});function P({className:e,variant:t,size:n,spacing:r=0,orientation:i=`horizontal`,children:a,...o}){return(0,k.jsx)(Ge,{"data-slot":`toggle-group`,"data-variant":t,"data-size":n,"data-spacing":r,"data-orientation":i,style:{"--gap":r},className:O(`group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch`,e),...o,children:(0,k.jsx)(Cn.Provider,{value:{variant:t,size:n,spacing:r,orientation:i},children:a})})}function F({className:e,children:t,variant:n=`default`,size:r=`default`,...i}){let a=D.useContext(Cn);return(0,k.jsx)(Re,{"data-slot":`toggle-group-item`,"data-variant":a.variant||n,"data-size":a.size||r,"data-spacing":a.spacing,className:O(`shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t`,Sn({variant:a.variant||n,size:a.size||r}),e),...i,children:t})}var wn=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];function Tn({current:e,supported:t,disabled:n,onChange:r}){let i=wn.filter(e=>t.includes(e)),a=i.length>0?i:wn,o=a.length<=1?`grid-cols-1`:a.length===2?`grid-cols-2`:`grid-cols-3`;return(0,k.jsx)(P,{type:`single`,value:e??``,onValueChange:e=>{e&&r(e)},disabled:n,className:O(`grid w-full items-stretch gap-1 rounded-md bg-muted/40 p-1`,o),children:a.map(e=>(0,k.jsx)(F,{value:e,"aria-label":`thinking ${e}`,className:`h-8 w-full justify-center rounded-sm px-2 font-mono text-xs lowercase text-muted-foreground transition-colors hover:bg-muted hover:text-foreground data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:hover:bg-primary`,children:e},e))})}var En=`familiar.theme`;function Dn(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches}function I(){let e=localStorage.getItem(En);return e===`light`||e===`dark`||e===`auto`?e:`auto`}function On(e){localStorage.setItem(En,e),L(e)}function L(e){let t=e===`dark`||e===`auto`&&Dn();document.documentElement.classList.toggle(`dark`,t)}function kn(e){let t=window.matchMedia(`(prefers-color-scheme: dark)`),n=()=>{e()===`auto`&&L(`auto`)};return t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)}var An=[`light`,`dark`,`auto`],jn={light:v,dark:Fe,auto:Qe},Mn={light:`light`,dark:`dark`,auto:`system`};function Nn(){let[e,t]=(0,D.useState)(()=>I());return(0,D.useEffect)(()=>{On(e)},[e]),(0,k.jsx)(P,{type:`single`,value:e,onValueChange:e=>{e&&t(e)},spacing:1,className:`rounded-lg bg-muted/40 p-1`,children:An.map(e=>{let t=jn[e];return(0,k.jsxs)(F,{value:e,"aria-label":Mn[e],className:`h-9 gap-2 rounded-md px-3.5 text-sm lowercase text-muted-foreground transition-colors hover:bg-muted hover:text-foreground data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:hover:bg-primary`,children:[(0,k.jsx)(t,{className:`size-4`}),(0,k.jsx)(`span`,{children:Mn[e]})]},e)})})}function R(e,t,n){let[r,i]=(0,D.useState)(e),[a,o]=(0,D.useState)(!1),[s,c]=(0,D.useState)(!1),l=(0,D.useRef)(!1);(0,D.useEffect)(()=>{l.current||i(e)},[e]);let u=async()=>{let a=t(r);if(a===`invalid`){c(!0);return}if(c(!1),a===`reset`){i(e);return}o(!0);try{await n(a.value)}catch{i(e)}finally{o(!1)}};return{busy:a,invalid:s,inputProps:{value:r,onChange:e=>{i(e.target.value),s&&c(!1)},onFocus:()=>{l.current=!0},onBlur:()=>{l.current=!1,u()},onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()}}}}var Pn=`h-9 rounded-md px-3.5 text-sm lowercase text-muted-foreground transition-colors hover:bg-muted hover:text-foreground data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:hover:bg-primary`;function z({enabled:e,disabled:t,ariaPrefix:n,onChange:r}){return(0,k.jsxs)(P,{type:`single`,value:e===void 0?``:e===!0?`on`:`off`,onValueChange:e=>{e&&r(e===`on`)},disabled:t,spacing:1,className:`rounded-lg bg-muted/40 p-1`,children:[(0,k.jsx)(F,{value:`on`,"aria-label":`${n} on`,className:Pn,children:`on`}),(0,k.jsx)(F,{value:`off`,"aria-label":`${n} off`,className:Pn,children:`off`})]})}var Fn=6e4;function In({valueMs:e,disabled:t,onCommit:n}){let r=R(e===void 0?``:String(Math.round(e/Fn)),t=>{let n=Number.parseInt(t,10);if(Number.isNaN(n)||n<1)return`reset`;let r=n*Fn;return r===e?`reset`:{value:r}},n);return(0,k.jsx)(`input`,{...r.inputProps,type:`number`,inputMode:`numeric`,disabled:t||r.busy,min:1,className:`h-8 w-16 rounded-md border border-border bg-background px-2 font-mono text-sm text-right text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`})}function B({value:e,step:t=1,min:n,max:r,disabled:i,onCommit:a}){let o=R(e===void 0?``:String(e),t=>{let i=Number(t);return!Number.isFinite(i)||n!==void 0&&i<n||r!==void 0&&i>r||i===e?`reset`:{value:i}},a);return(0,k.jsx)(`input`,{...o.inputProps,type:`number`,inputMode:t<1?`decimal`:`numeric`,disabled:i||o.busy,step:t,min:n,max:r,className:`h-8 w-20 rounded-md border border-border bg-background px-2 font-mono text-sm text-right text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`})}var Ln=/^[^/\s]+\/[^\s]+$/;function Rn({value:e,placeholder:t,allowEmpty:n,disabled:r,onCommit:i}){let a=e??``,o=R(a,e=>{let t=e.trim();return t===a?`reset`:t?Ln.test(t)?{value:t}:`invalid`:n?{value:``}:`reset`},i);return(0,k.jsx)(`input`,{...o.inputProps,type:`text`,autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`off`,spellCheck:!1,placeholder:t,disabled:r||o.busy,className:`h-9 w-full rounded-md border bg-background px-3 font-mono text-sm text-foreground focus-visible:ring-3 focus-visible:outline-none disabled:opacity-50 ${o.invalid?`border-destructive focus-visible:border-destructive focus-visible:ring-destructive/40`:`border-border focus-visible:border-ring focus-visible:ring-ring/50`}`})}function zn({values:e,disabled:t,onChange:n}){let r=e?.[`heartbeat.enabled`].value,i=r===!0;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(z,{enabled:r,disabled:t,ariaPrefix:`heartbeat`,onChange:e=>void n(`heartbeat.enabled`,e)}),(0,k.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,k.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,k.jsx)(`span`,{className:`flex-1 font-serif text-sm text-foreground`,children:`first wakeup after`}),(0,k.jsx)(In,{valueMs:e?.[`heartbeat.idleThresholdMs`].value,disabled:t||!i,onCommit:e=>n(`heartbeat.idleThresholdMs`,e)}),(0,k.jsx)(`span`,{className:`w-14 font-serif text-xs italic text-muted-foreground`,children:`minutes`})]}),(0,k.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`minutes of silence before the first wakeup`})]}),(0,k.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,k.jsx)(`span`,{className:`flex-1 font-serif text-sm text-foreground`,children:`between wakeups`}),(0,k.jsx)(In,{valueMs:e?.[`heartbeat.intervalMs`].value,disabled:t||!i,onCommit:e=>n(`heartbeat.intervalMs`,e)}),(0,k.jsx)(`span`,{className:`w-14 font-serif text-xs italic text-muted-foreground`,children:`minutes`})]}),(0,k.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`cadence of subsequent wakeups while you stay quiet`})]})]})]})}function Bn({values:e,disabled:t,onChange:n}){let r=e?.[`image_gen.enabled`].value,i=t||r!==!0;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(z,{enabled:r,disabled:t,ariaPrefix:`image generation`,onChange:e=>void n(`image_gen.enabled`,e)}),(0,k.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,k.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,k.jsx)(`span`,{className:`font-serif text-sm text-foreground`,children:`primary model`}),(0,k.jsx)(Rn,{value:e?.[`image_gen.model`].value,placeholder:`openrouter/google/gemini-2.5-flash-image`,allowEmpty:!1,disabled:i,onCommit:e=>n(`image_gen.model`,e)}),(0,k.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`format: provider/model-id`})]}),(0,k.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,k.jsx)(`span`,{className:`font-serif text-sm text-foreground`,children:`fallback model`}),(0,k.jsx)(Rn,{value:e?.[`image_gen.fallback_model`].value,placeholder:`none`,allowEmpty:!0,disabled:i,onCommit:e=>n(`image_gen.fallback_model`,e)}),(0,k.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`leave empty for no fallback`})]})]})]})}function V({label:e,description:t,children:n}){return(0,k.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,k.jsx)(`span`,{className:`flex-1 font-serif text-sm text-foreground`,children:e}),n]}),t?(0,k.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:t}):null]})}function Vn({children:e}){return(0,k.jsx)(`h4`,{className:`mb-4 font-serif text-base lowercase tracking-tight text-foreground`,children:e})}function Hn({values:e,models:t,disabled:n,onChange:r,onClear:i}){let a=e?.[`memory.lcm.enabled`].value,o=e?.[`memory.lcm.model`].value,s=e?.[`memory.lcm.model`].source,c=n||a!==!0,l=n||e?.[`memory.ambient.enabled`].value!==!0;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`section`,{children:[(0,k.jsx)(Vn,{children:`compaction`}),(0,k.jsx)(z,{enabled:a,disabled:n,ariaPrefix:`compaction`,onChange:e=>void r(`memory.lcm.enabled`,e)}),(0,k.jsxs)(`div`,{className:`mt-4`,children:[(0,k.jsx)(vn,{value:o??``,onValueChange:e=>void r(`memory.lcm.model`,e),disabled:c,className:`grid gap-1`,children:t.map(e=>{let t=`memory-model-${e}`,n=e===o,[r,...i]=e.split(`/`),a=i.join(`/`);return(0,k.jsxs)(bn,{htmlFor:t,className:`group/row flex cursor-pointer items-center gap-3 rounded-md px-3 py-2.5 transition-colors hover:bg-accent has-data-[state=checked]:bg-primary has-data-[state=checked]:text-primary-foreground has-data-[state=checked]:hover:bg-primary`,children:[(0,k.jsx)(yn,{value:e,id:t}),(0,k.jsxs)(`span`,{className:`min-w-0 flex-1 font-mono text-sm leading-tight`,children:[(0,k.jsx)(`span`,{className:n?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:r}),(0,k.jsx)(`span`,{className:n?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:`/`}),(0,k.jsx)(`span`,{className:n?`text-primary-foreground`:`text-muted-foreground group-hover/row:text-foreground`,children:a})]})]},e)})}),s===`override`?(0,k.jsx)(`button`,{type:`button`,onClick:()=>void i(`memory.lcm.model`),disabled:c,className:`mt-2 font-serif text-xs italic text-muted-foreground/70 transition-colors hover:text-foreground disabled:opacity-50`,children:`set just for compaction · use default instead`}):o?(0,k.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-muted-foreground/70`,children:`following your conversation model`}):null]}),(0,k.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,k.jsx)(V,{label:`context threshold`,description:`fraction of context that triggers compaction`,children:(0,k.jsx)(B,{value:e?.[`memory.lcm.contextThreshold`].value,step:.05,min:0,max:1,disabled:c,onCommit:e=>r(`memory.lcm.contextThreshold`,e)})}),(0,k.jsx)(V,{label:`fresh tail count`,description:`most recent messages kept raw, never compacted`,children:(0,k.jsx)(B,{value:e?.[`memory.lcm.freshTailCount`].value,min:1,disabled:c,onCommit:e=>r(`memory.lcm.freshTailCount`,e)})}),(0,k.jsx)(V,{label:`leaf chunk tokens`,description:`max tokens of input per leaf summary`,children:(0,k.jsx)(B,{value:e?.[`memory.lcm.leafChunkTokens`].value,min:1,disabled:c,onCommit:e=>r(`memory.lcm.leafChunkTokens`,e)})}),(0,k.jsx)(V,{label:`leaf target tokens`,description:`target tokens per leaf summary output`,children:(0,k.jsx)(B,{value:e?.[`memory.lcm.leafTargetTokens`].value,min:1,disabled:c,onCommit:e=>r(`memory.lcm.leafTargetTokens`,e)})}),(0,k.jsx)(V,{label:`condense group size`,description:`how many summaries combine into one at the next level`,children:(0,k.jsx)(B,{value:e?.[`memory.lcm.condenseGroupSize`].value,min:1,disabled:c,onCommit:e=>r(`memory.lcm.condenseGroupSize`,e)})}),(0,k.jsx)(V,{label:`max summary depth`,description:`deepest level of recursive summary-of-summaries`,children:(0,k.jsx)(B,{value:e?.[`memory.lcm.maxSummaryDepth`].value,min:1,disabled:c,onCommit:e=>r(`memory.lcm.maxSummaryDepth`,e)})}),(0,k.jsx)(V,{label:`kept after /new`,description:`lowest summary depth kept after /new. -1 keeps full context, 0 keeps every summary.`,children:(0,k.jsx)(B,{value:e?.[`memory.lcm.newSessionRetainDepth`].value,min:-1,disabled:c,onCommit:e=>r(`memory.lcm.newSessionRetainDepth`,e)})})]})]}),(0,k.jsxs)(`section`,{className:`mt-8`,children:[(0,k.jsx)(Vn,{children:`ambient`}),(0,k.jsx)(z,{enabled:e?.[`memory.ambient.enabled`].value,disabled:n,ariaPrefix:`ambient`,onChange:e=>void r(`memory.ambient.enabled`,e)}),(0,k.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,k.jsx)(V,{label:`top k`,description:`how many memories to surface per query`,children:(0,k.jsx)(B,{value:e?.[`memory.ambient.topK`].value,min:1,disabled:l,onCommit:e=>r(`memory.ambient.topK`,e)})}),(0,k.jsx)(V,{label:`min query length`,description:`minimum query chars before recall fires`,children:(0,k.jsx)(B,{value:e?.[`memory.ambient.minQueryLength`].value,min:0,disabled:l,onCommit:e=>r(`memory.ambient.minQueryLength`,e)})}),(0,k.jsx)(V,{label:`throttle seconds`,description:`cooldown between recalls`,children:(0,k.jsx)(B,{value:e?.[`memory.ambient.throttleSeconds`].value,min:0,disabled:l,onCommit:e=>r(`memory.ambient.throttleSeconds`,e)})}),(0,k.jsx)(V,{label:`similarity weight`,description:`semantic match to your query`,children:(0,k.jsx)(B,{value:e?.[`memory.ambient.weightSimilarity`].value,step:.05,min:0,disabled:l,onCommit:e=>r(`memory.ambient.weightSimilarity`,e)})}),(0,k.jsx)(V,{label:`valence weight`,description:`emotional charge of the memory`,children:(0,k.jsx)(B,{value:e?.[`memory.ambient.weightValence`].value,step:.05,min:0,disabled:l,onCommit:e=>r(`memory.ambient.weightValence`,e)})}),(0,k.jsx)(V,{label:`recency weight`,description:`favors recent memories`,children:(0,k.jsx)(B,{value:e?.[`memory.ambient.weightRecency`].value,step:.05,min:0,disabled:l,onCommit:e=>r(`memory.ambient.weightRecency`,e)})}),(0,k.jsx)(V,{label:`intensity weight`,description:`favors strongly-felt memories`,children:(0,k.jsx)(B,{value:e?.[`memory.ambient.weightIntensity`].value,step:.05,min:0,disabled:l,onCommit:e=>r(`memory.ambient.weightIntensity`,e)})})]})]}),(0,k.jsx)(`p`,{className:`mt-8 font-serif text-xs italic text-muted-foreground/60`,children:`embedding model lives in config.toml. swapping it invalidates existing memory.`})]})}function Un(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`}).format(t).toLowerCase()}function Wn(e){if(!e)return`browser unknown`;let t=e.includes(`Firefox/`)?`firefox`:e.includes(`Edg/`)?`edge`:e.includes(`Chrome/`)?`chrome`:e.includes(`Safari/`)?`safari`:`browser`,n=e.includes(`iPhone`)||e.includes(`iPad`)?`ios`:e.includes(`Mac OS X`)?`mac`:e.includes(`Windows`)?`windows`:e.includes(`Linux`)?`linux`:void 0;return n?`${t} on ${n}`:t}function Gn(e){let t=new Date(e.lastSeenAt);return Number.isNaN(t.getTime())?0:t.getTime()}function Kn({currentDevice:e,onSignedOut:t}){let[n,r]=(0,D.useState)(e?[e]:[]),[i,a]=(0,D.useState)(!0),[o,s]=(0,D.useState)(),[c,l]=(0,D.useState)(),u=(0,D.useCallback)((e={})=>{e.showLoading&&(a(!0),l(void 0)),vt().then(e=>{r(e),l(void 0)}).catch(e=>{l(e instanceof Error?e.message:String(e))}).finally(()=>{a(!1)})},[]);(0,D.useEffect)(()=>{let e=window.setTimeout(()=>u(),0);return()=>window.clearTimeout(e)},[u]);let d=(0,D.useMemo)(()=>[...n].sort((e,t)=>e.current&&!t.current?-1:!e.current&&t.current?1:Gn(t)-Gn(e)),[n]),f=d.filter(e=>!e.current),p=async e=>{s(e.id),l(void 0);try{await yt(e.id),r(t=>t.filter(t=>t.id!==e.id))}catch(e){l(e instanceof Error?e.message:String(e))}finally{s(void 0)}},m=async()=>{s(`current`),l(void 0);try{await xt(),t()}catch(e){l(e instanceof Error?e.message:String(e))}finally{s(void 0)}},h=async()=>{s(`others`),l(void 0);try{await bt(),r(e=>e.filter(e=>e.current))}catch(e){l(e instanceof Error?e.message:String(e)),u({showLoading:!0})}finally{s(void 0)}};return(0,k.jsxs)(`div`,{className:`grid gap-3`,children:[(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,k.jsxs)(A,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>void m(),disabled:!!o,className:`gap-2`,children:[(0,k.jsx)(Ue,{className:`size-3.5`}),`logout`]}),(0,k.jsx)(A,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>void h(),disabled:!!o||f.length===0,children:`sign out others`})]}),(0,k.jsxs)(`div`,{className:`grid gap-2`,children:[d.map(e=>(0,k.jsx)(`div`,{className:O(`rounded-md border border-border bg-background px-3 py-2.5`,e.current&&`border-primary/50`),children:(0,k.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,k.jsx)(`p`,{className:`truncate text-sm leading-tight text-foreground`,children:e.deviceName||`unnamed device`}),e.current?(0,k.jsx)(`span`,{className:`font-serif text-xs italic text-primary`,children:`current`}):null]}),(0,k.jsxs)(`p`,{className:`mt-1 font-serif text-xs italic text-muted-foreground`,children:[`last seen `,Un(e.lastSeenAt)]}),(0,k.jsxs)(`p`,{className:`mt-1 text-xs leading-relaxed text-muted-foreground`,children:[`made `,Un(e.createdAt),` · expires `,Un(e.expiresAt)]}),(0,k.jsxs)(`p`,{className:`mt-1 truncate text-xs text-muted-foreground/80`,children:[e.lastIp??`ip unknown`,` · `,Wn(e.userAgent)]})]}),e.current?null:(0,k.jsx)(`button`,{type:`button`,"aria-label":`revoke ${e.deviceName||`device`}`,title:`revoke`,disabled:!!o,onClick:()=>void p(e),className:`flex size-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`,children:(0,k.jsx)(y,{className:`size-4`})})]})},e.id)),i?(0,k.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground`,children:`checking devices…`}):null,!i&&d.length===0?(0,k.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground`,children:`no devices found.`}):null]}),c?(0,k.jsx)(`p`,{className:`font-serif text-xs italic text-destructive`,children:c}):null]})}function qn(){let e=(0,D.useRef)(!0);return(0,D.useEffect)(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function Jn(){let e=qn(),[t,n]=(0,D.useState)(void 0),[r,i]=(0,D.useState)(!1),[a,o]=(0,D.useState)(!1);return{error:t,isLoading:r,isMutating:a,run:(0,D.useCallback)(async(t,r={})=>{let a=r.busy===`load`?i:o;a(!0),n(void 0);try{let n=await t();return e.current?(r.apply?.(n),n):void 0}catch(t){if(e.current&&(r.onError?.(),n(t instanceof Error?t.message:String(t))),r.rethrow)throw t;return}finally{e.current&&a(!1)}},[e])}}function Yn(e){let[t,n]=(0,D.useState)(void 0),[r,i]=(0,D.useState)([]),[a,o]=(0,D.useState)([]),{error:s,isLoading:c,isMutating:l,run:u}=Jn(),d=(0,D.useCallback)(async()=>{e&&await u(()=>Promise.all([Ot(e),kt()]),{busy:`load`,apply:([e,t])=>{n(e),i(t.models),o(t.added)}})},[e,u]);(0,D.useEffect)(()=>{let e=window.setTimeout(()=>void d(),0);return()=>window.clearTimeout(e)},[d]);let f=(0,D.useCallback)(async r=>{if(!e)return;let i=t;i&&n({...i,model:r.model?{value:r.model,source:`override`}:i.model,thinking:r.thinking?{value:r.thinking,source:`override`}:i.thinking}),await u(()=>Mt(e,r),{apply:n,onError:()=>{i&&n(i)}})},[e,t,u]);return{data:t,models:r,addedModels:a,error:s,isLoading:c,isMutating:l,setModel:(0,D.useCallback)(e=>f({model:e}),[f]),setThinking:(0,D.useCallback)(e=>f({thinking:e}),[f]),addModel:(0,D.useCallback)(async e=>{await u(()=>At(e),{apply:e=>{i(e.models),o(e.added)},rethrow:!0})},[u]),removeModel:(0,D.useCallback)(async e=>{await u(()=>jt(e),{apply:e=>{i(e.models),o(e.added)},rethrow:!0})},[u]),refetch:d}}function Xn(e){let[t,n]=(0,D.useState)(void 0),{error:r,isLoading:i,isMutating:a,run:o}=Jn(),s=(0,D.useCallback)(async()=>{e&&await o(()=>Ft(),{busy:`load`,apply:n})},[e,o]);return(0,D.useEffect)(()=>{let e=window.setTimeout(()=>void s(),0);return()=>window.clearTimeout(e)},[s]),{data:t,error:r,isLoading:i,isMutating:a,setConfig:(0,D.useCallback)(async(e,t)=>{await o(()=>It(e,t),{apply:n,rethrow:!0})},[o]),clearConfig:(0,D.useCallback)(async e=>{await o(()=>Lt(e),{apply:n,rethrow:!0})},[o]),refetch:s}}function H({title:e,description:t,icon:n,defaultOpen:r=!1,children:i}){let[a,o]=(0,D.useState)(r);return(0,k.jsxs)(ln,{open:a,onOpenChange:o,children:[(0,k.jsxs)(un,{className:`group flex w-full items-start gap-4 rounded-md px-2 py-3 text-left transition-colors hover:bg-accent/50 focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none`,children:[(0,k.jsx)(n,{className:`mt-0.5 size-5 shrink-0 text-muted-foreground transition-colors group-hover:text-foreground`}),(0,k.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(`span`,{className:`block font-serif text-base leading-tight tracking-tight text-foreground`,children:e}),(0,k.jsx)(`span`,{className:`mt-1 block text-xs leading-relaxed text-muted-foreground`,children:t})]}),(0,k.jsx)(nt,{className:O(`size-4 shrink-0 text-muted-foreground transition-transform duration-150 group-hover:text-foreground`,a&&`rotate-90`)})]}),(0,k.jsx)(dn,{children:(0,k.jsx)(`div`,{className:`px-2 pb-5`,children:(0,k.jsx)(`div`,{className:`mt-4`,children:i})})})]})}function U({children:e,className:t}){return(0,k.jsx)(`p`,{className:O(`px-2 pt-4 pb-1 font-serif text-xs italic text-muted-foreground`,t),children:e})}function Zn({open:e,onOpenChange:t,channelKey:n,authMode:r,authDevice:i,onSignedOut:a}){let{data:o,models:s,addedModels:c,error:l,isLoading:u,isMutating:d,setModel:f,setThinking:p,addModel:m,removeModel:h}=Yn(n),{data:g,error:_,isLoading:v,isMutating:y,setConfig:b,clearConfig:x}=Xn(e),S=!!o&&!!g,C=u||d||v||y,w=l??_;return(0,k.jsx)(fn,{open:e,onOpenChange:t,children:(0,k.jsxs)(hn,{className:`w-screen bg-card shadow-2xl sm:w-md sm:max-w-md sm:rounded-l-2xl`,side:`right`,children:[(0,k.jsx)(gn,{className:`px-6 pt-6 pb-2`,children:(0,k.jsx)(_n,{className:`font-serif text-2xl leading-none tracking-tight text-foreground`,children:`settings`})}),(0,k.jsxs)(`div`,{className:`flex flex-col overflow-y-auto px-5 pt-1 pb-8`,children:[(0,k.jsx)(U,{className:`pt-1`,children:`conversation`}),(0,k.jsx)(H,{title:`model`,description:`which language model carries this conversation.`,icon:Ne,defaultOpen:!0,children:(0,k.jsx)(xn,{models:s,added:c,current:o?.model.value,source:o?.model.source,disabled:!S||C,onChange:e=>void f(e),onAdd:m,onRemove:h})}),(0,k.jsx)(H,{title:`thinking`,description:`how long the model deliberates before answering.`,icon:ee,children:(0,k.jsx)(Tn,{current:o?.thinking.value,supported:o?.supportedThinking??[],disabled:!S||C,onChange:e=>void p(e)})}),(0,k.jsx)(U,{children:`companion`}),(0,k.jsx)(H,{title:`heartbeat`,description:`your companion's pulse when you've gone quiet.`,icon:pe,children:(0,k.jsx)(zn,{values:g?.values,disabled:!S||C,onChange:b})}),(0,k.jsx)(H,{title:`image generation`,description:`which model your companion uses to paint.`,icon:Ee,children:(0,k.jsx)(Bn,{values:g?.values,disabled:!S||C,onChange:b})}),(0,k.jsx)(H,{title:`memory`,description:`how older conversation is condensed and how earlier memories return.`,icon:it,children:(0,k.jsx)(Hn,{values:g?.values,models:s,disabled:!S||C,onChange:b,onClear:x})}),(0,k.jsx)(U,{children:`room`}),(0,k.jsx)(H,{title:`theme`,description:`light, dark, or follow your system.`,icon:ye,children:(0,k.jsx)(Nn,{})}),r===`bearer`&&a?(0,k.jsx)(H,{title:`devices`,description:`where this web room is still open.`,icon:xe,children:(0,k.jsx)(Kn,{currentDevice:i,onSignedOut:a})}):null,w?(0,k.jsx)(`p`,{className:`mt-4 font-serif text-xs italic text-destructive`,children:w}):null]})]})})}function Qn({...e}){return(0,k.jsx)(C,{"data-slot":`alert-dialog`,...e})}function $n({...e}){return(0,k.jsx)(u,{"data-slot":`alert-dialog-portal`,...e})}function er({className:e,...t}){return(0,k.jsx)(f,{"data-slot":`alert-dialog-overlay`,className:O(`fixed inset-0 z-50 bg-foreground/15 duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...t})}function tr({className:e,size:t=`default`,...n}){return(0,k.jsxs)($n,{children:[(0,k.jsx)(er,{}),(0,k.jsx)(tt,{"data-slot":`alert-dialog-content`,"data-size":t,className:O(`group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...n})]})}function nr({className:e,...t}){return(0,k.jsx)(`div`,{"data-slot":`alert-dialog-header`,className:O(`grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]`,e),...t})}function rr({className:e,...t}){return(0,k.jsx)(`div`,{"data-slot":`alert-dialog-footer`,className:O(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end`,e),...t})}function ir({className:e,...t}){return(0,k.jsx)(Me,{"data-slot":`alert-dialog-title`,className:O(`font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2`,e),...t})}function ar({className:e,...t}){return(0,k.jsx)(ae,{"data-slot":`alert-dialog-description`,className:O(`text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}function or({className:e,variant:t=`default`,size:n=`default`,...r}){return(0,k.jsx)(A,{variant:t,size:n,asChild:!0,children:(0,k.jsx)(re,{"data-slot":`alert-dialog-action`,className:O(e),...r})})}function sr({className:e,variant:t=`outline`,size:n=`default`,...r}){return(0,k.jsx)(A,{variant:t,size:n,asChild:!0,children:(0,k.jsx)(c,{"data-slot":`alert-dialog-cancel`,className:O(e),...r})})}function cr({channelKey:e,onStarted:t}){let[n,r]=(0,D.useState)(!1),[i,a]=(0,D.useState)(!1),[o,s]=(0,D.useState)(void 0),c=async()=>{if(e){a(!0),s(void 0);try{await Nt(e),r(!1),t()}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}}};return(0,k.jsxs)(Qn,{open:n,onOpenChange:e=>{i||r(e)},children:[(0,k.jsx)(A,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`new chat`,title:`new chat`,className:`size-8 text-muted-foreground hover:text-foreground`,onClick:()=>r(!0),children:(0,k.jsx)(le,{className:`size-4`})}),(0,k.jsxs)(tr,{className:`bg-card`,children:[(0,k.jsxs)(nr,{children:[(0,k.jsx)(ir,{className:`font-serif text-xl tracking-tight`,children:`start fresh?`}),(0,k.jsx)(ar,{className:`font-sans text-sm`,children:`this clears the agent's context. you'll still see the conversation above, but they won't.`})]}),o?(0,k.jsx)(`p`,{className:`font-serif text-xs italic text-destructive`,children:o}):null,(0,k.jsxs)(rr,{children:[(0,k.jsx)(sr,{disabled:i,children:`cancel`}),(0,k.jsx)(or,{onClick:e=>{e.preventDefault(),c()},disabled:i||!e,children:i?`starting…`:`start fresh`})]})]})]})}function lr({...e}){return(0,k.jsx)(ge,{"data-slot":`dropdown-menu`,...e})}function ur({...e}){return(0,k.jsx)(rt,{"data-slot":`dropdown-menu-trigger`,...e})}function dr({className:e,align:t=`start`,sideOffset:n=4,...r}){return(0,k.jsx)(at,{children:(0,k.jsx)(fe,{"data-slot":`dropdown-menu-content`,sideOffset:n,align:t,className:O(`z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...r})})}function fr({className:e,inset:t,variant:n=`default`,...r}){return(0,k.jsx)($e,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:O(`group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive`,e),...r})}function pr(e){return e.label?e.label:e.scope===`dm`?`Main Chat`:e.channelName??e.channelId}function mr({sessions:e,activeKey:t,onSelect:n}){if(e.length<=1)return null;let r=e.find(e=>e.key===t);return(0,k.jsxs)(lr,{children:[(0,k.jsxs)(ur,{className:`inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus:outline-none focus:ring-2 focus:ring-ring/30`,children:[(0,k.jsx)(`span`,{className:`font-medium`,children:r?pr(r):`select session`}),(0,k.jsx)(p,{className:`size-3 opacity-70`})]}),(0,k.jsx)(dr,{align:`end`,className:`min-w-[180px]`,onCloseAutoFocus:e=>e.preventDefault(),children:e.map(e=>{let r=e.key===t;return(0,k.jsxs)(fr,{onSelect:()=>n(e.key),className:`flex items-center justify-between gap-3`,children:[(0,k.jsx)(`span`,{className:O(`truncate`,r&&`font-medium`),children:pr(e)}),r&&(0,k.jsx)(d,{className:`size-3.5 text-muted-foreground`})]},e.key)})})]})}var hr={connecting:`connecting`,open:`online`,closed:`offline`,error:`error`},gr={connecting:`reaching out…`,closed:`out of touch · trying again`,error:`out of touch · trying again`};function _r({nav:e,connection:t,personaName:n,sessions:r,activeSessionKey:a,channelKey:o,onSelectSession:s,onOpenConfig:c,onNewChatStarted:l}){let u=t===`open`;return(0,k.jsx)(`header`,{className:`sticky top-0 z-10 border-b border-border bg-background px-3 py-3 md:px-5`,children:(0,k.jsxs)(`div`,{className:`mx-auto flex max-w-3xl items-center gap-3`,children:[e,(0,k.jsx)(`span`,{"aria-label":hr[t],title:hr[t],className:O(`size-2 rounded-full ring-3 ring-accent/60`,u?`bg-primary`:`bg-muted-foreground/40 ring-transparent`)}),(0,k.jsx)(`span`,{className:`font-serif text-lg leading-none tracking-tight`,children:n}),!u&&(0,k.jsx)(`span`,{className:`font-serif text-xs italic leading-none text-muted-foreground/80`,children:gr[t]}),(0,k.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[(0,k.jsx)(mr,{sessions:r,activeKey:a,onSelect:s}),(0,k.jsx)(cr,{channelKey:o,onStarted:l}),(0,k.jsx)(A,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`settings`,title:`settings`,className:`size-8 text-muted-foreground hover:text-foreground`,onClick:c,children:(0,k.jsx)(i,{className:`size-4`})})]})]})})}function vr({src:e,alt:t,className:n}){return(0,k.jsxs)(w,{children:[(0,k.jsx)(_,{asChild:!0,children:(0,k.jsx)(`button`,{type:`button`,className:O(`inline-block rounded-md text-left outline-none transition-opacity hover:opacity-90 focus-visible:ring-3 focus-visible:ring-ring/40`,n),children:(0,k.jsx)(`img`,{src:e,alt:t,loading:`lazy`,className:`max-h-72 max-w-[24rem] rounded-md`})})}),(0,k.jsxs)(S,{children:[(0,k.jsx)(x,{className:`fixed inset-0 z-50 bg-background/90 data-closed:animate-out data-closed:fade-out-0 data-open:animate-in data-open:fade-in-0`}),(0,k.jsxs)(je,{className:`fixed inset-0 z-50 flex items-center justify-center p-3 outline-none sm:p-6`,onCloseAutoFocus:e=>e.preventDefault(),children:[(0,k.jsx)(m,{className:`sr-only`,children:t}),(0,k.jsx)(`img`,{src:e,alt:t,className:`max-h-[calc(100dvh-1.5rem)] max-w-[calc(100vw-1.5rem)] rounded-md object-contain shadow-lg sm:max-h-[calc(100dvh-3rem)] sm:max-w-[calc(100vw-3rem)]`}),(0,k.jsxs)(`div`,{className:`fixed top-3 right-3 flex gap-1 sm:top-4 sm:right-4`,children:[(0,k.jsx)(A,{asChild:!0,type:`button`,variant:`ghost`,size:`icon-sm`,title:`open original`,"aria-label":`open original`,children:(0,k.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,children:(0,k.jsx)(_e,{className:`size-4`})})}),(0,k.jsx)(a,{asChild:!0,children:(0,k.jsx)(A,{type:`button`,variant:`ghost`,size:`icon-sm`,title:`close preview`,"aria-label":`close preview`,children:(0,k.jsx)(T,{className:`size-4`})})})]})]})]})]})}function yr(e){return e.some(e=>e.type!==`text`||e.value.trim().length>0)}function W(e){return{type:`paragraph`,children:e}}function br(e){if(!e.children.some(e=>e.type===`image`))return[e];let t=[],n=[];for(let r of e.children){if(r.type!==`image`){n.push(r);continue}yr(n)&&t.push(W(n)),n=[],t.push(W([r]))}return yr(n)&&t.push(W(n)),t.length>0?t:[e]}function xr(){return e=>{for(let t=0;t<e.children.length;t+=1){let n=e.children[t];if(n?.type!==`paragraph`)continue;let r=br(n);r.length===1&&r[0]===n||(e.children.splice(t,1,...r),t+=r.length-1)}}}function Sr(e){return{type:`text`,value:e}}function G(e,t=``){return{type:`image`,url:e,alt:t}}function K(e,t){let n=t.replace(/[ \t]+$/,``).replace(/\n{2,}$/,`
|
|
4
|
-
`);n.trim()&&e.push(Sr(n))}function Cr(e){let t=[],n=0;for(let r of Wt(e))r.index>n&&K(t,e.slice(n,r.index)),t.push(G(r.url,r.type===`meme`?r.name:``)),n=r.index+r.whole.length;if(t.length!==0)return n<e.length&&K(t,e.slice(n).replace(/^\n+/,``)),t}function wr(e){let t=e.children[0];return e.title==null&&e.children.length===1&&t?.type===`text`&&t.value===e.url&&Rt.test(e.url)}function Tr(e,t,n){e.children.splice(t,1,...n)}function Er(e){let{children:t}=e;for(let e=1;e<t.length-1;e+=1){let n=t[e-1],r=t[e],i=t[e+1];if(n?.type!==`text`||r?.type!==`link`||i?.type!==`text`||!i.value.startsWith(`)`)||!wr(r))continue;let a=Ht(n.value);if(!a)continue;let o=[];K(o,a.before),o.push(G(r.url,a.name)),K(o,i.value.slice(1).replace(/^\n+/,``)),t.splice(e-1,3,...o),e+=Math.max(0,o.length-2)}}function Dr(){return e=>{ct(e,`paragraph`,e=>{Er(e)}),ct(e,`link`,(e,t,n)=>(t===void 0||!n||wr(e)&&Tr(n,t,[G(e.url)]),E)),ct(e,`text`,(e,t,n)=>{if(t===void 0||!n||n.type===`link`)return E;let r=Cr(e.value);if(r)return Tr(n,t,r),[E,t+r.length]})}}function Or(e){let
|
|
5
|
-
`).length;if(t>3)return`${t} lines`}return``}function qr(e){if(!e.complete)return`thinking…`;if(e.endedAt==null)return`thought`;let t=Math.max(0,e.endedAt-e.startedAt);return t<1e3?`thought for <1s`:`thought for ${Math.round(t/100)/10}s`}function q(e){return e.kind===`thinking`?!e.complete:e.tool.status===`running`||e.tool.status===`pending`}function Jr(e){if(e.kind===`thinking`)return!!e.text;let t=e.tool;return!!(t.args||t.result||t.partialResult||t.error)}function Yr(e){return e.kind===`tool`&&e.tool.status===`error`}function J({step:e,active:t,hideThreadAbove:n,hideThreadBelow:r}){let i=e===`done`?d:e.kind===`thinking`?Vr:Br(e.tool.name);return(0,k.jsxs)(`div`,{className:`relative flex h-7 w-7 shrink-0 items-center justify-center`,"aria-hidden":!0,children:[(0,k.jsx)(`span`,{className:O(`absolute left-1/2 w-px -translate-x-1/2 bg-border`,n?`top-1/2`:`top-0`,r?`bottom-1/2`:`bottom-0`)}),(0,k.jsx)(`span`,{className:`relative z-10 inline-flex size-4 items-center justify-center bg-muted`,children:(0,k.jsx)(i,{className:O(`size-4 transition-colors`,t?`text-primary`:`text-muted-foreground/85`)})})]})}function Xr({step:e}){if(e.kind===`thinking`)return(0,k.jsx)(`span`,{className:`truncate font-serif italic text-sm tracking-wide text-foreground/75`,children:qr(e)});let t=e.tool,n=Gr(t.args),r=t.status===`error`,i=t.status===`running`?t.partialResult:t.result,a=!r&&t.status===`completed`?Kr(i):``;return(0,k.jsxs)(`span`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,k.jsx)(`span`,{className:`shrink-0 font-mono text-sm text-foreground/85`,children:t.name}),n&&(0,k.jsx)(`span`,{className:`min-w-0 truncate font-mono text-sm text-muted-foreground/70`,children:n}),r&&(0,k.jsx)(`span`,{className:`shrink-0 font-serif italic text-sm text-destructive/80`,children:`· failed`}),a&&!r&&(0,k.jsxs)(`span`,{className:`shrink-0 font-serif italic text-sm tracking-wide text-muted-foreground/65`,children:[`· `,a]})]})}function Zr({step:e,active:t}){return(0,k.jsxs)(`div`,{className:`font-serif italic text-sm leading-relaxed text-muted-foreground/85 whitespace-pre-wrap`,children:[e.text,t&&(0,k.jsx)(`span`,{className:`ml-0.5 inline-block animate-pulse`,children:`▎`})]})}function Qr({tool:e}){let t=(0,D.useMemo)(()=>Ur(e.args),[e.args]),n=e.status===`running`?e.partialResult:e.result,r=(0,D.useMemo)(()=>Ur(n),[n]);return(0,k.jsxs)(`div`,{className:`space-y-2`,children:[t&&(0,k.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-words font-mono text-xs text-muted-foreground/80`,children:t}),r&&(0,k.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-words font-mono text-xs text-muted-foreground/80`,children:r}),e.error&&(0,k.jsx)(`div`,{className:`font-mono text-xs whitespace-pre-wrap text-destructive/85`,children:e.error})]})}var $r=132;function ei({children:e}){let[t,n]=(0,D.useState)(!1),r=(0,D.useRef)(null),[i,a]=(0,D.useState)(!1);(0,D.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>a(e.scrollHeight>$r+4);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let o=i&&!t;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{className:`relative overflow-hidden`,style:{maxHeight:o?`${$r}px`:`9999px`,WebkitMaskImage:o?`linear-gradient(to bottom, black calc(100% - 2.5rem), transparent)`:void 0,maskImage:o?`linear-gradient(to bottom, black calc(100% - 2.5rem), transparent)`:void 0},children:(0,k.jsx)(`div`,{ref:r,children:e})}),i&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`mt-1.5 font-serif italic text-xs tracking-wide text-foreground/75 underline-offset-4 transition-colors hover:text-foreground hover:underline`,children:t?`show less`:`show more`})]})}function ti({step:e,threadContinues:t}){let n=q(e);return(0,k.jsxs)(`div`,{className:`relative py-1`,children:[t&&(0,k.jsx)(`span`,{className:`absolute left-3.5 inset-y-0 w-px -translate-x-1/2 bg-border`,"aria-hidden":!0}),(0,k.jsx)(`div`,{className:`ml-9 mt-1 mb-2`,children:(0,k.jsx)(ei,{children:e.kind===`thinking`?(0,k.jsx)(Zr,{step:e,active:n}):(0,k.jsx)(Qr,{tool:e.tool})})})]})}function ni({steps:e,autoCollapse:t=!1}){let n=e.some(q),r=!n&&e.length>0&&e.length>=2&&!e.some(Yr),[i,a]=(0,D.useState)(n),o=(0,D.useRef)(!1);(0,D.useEffect)(()=>{o.current||(n?a(!0):t&&a(!1))},[n,t]);let s=()=>{o.current=!0,a(e=>!e)};if(e.length===0)return null;let c=e[0],l=Jr(c),u=e.length-1,d=i&&(l||u>0||r);return(0,k.jsxs)(`div`,{className:`flex flex-col rounded-lg bg-muted px-3 py-2`,children:[(0,k.jsxs)(`button`,{type:`button`,onClick:s,"aria-expanded":i,className:`flex w-full items-center gap-2 text-left`,children:[(0,k.jsx)(J,{step:c,active:q(c),hideThreadAbove:!0,hideThreadBelow:!d}),(0,k.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,k.jsx)(Xr,{step:c}),!i&&u>0&&(0,k.jsxs)(`span`,{className:`shrink-0 font-serif italic text-sm tracking-wide text-muted-foreground/60`,children:[`· `,u,` more`]}),(0,k.jsx)(nt,{className:O(`size-3.5 shrink-0 text-muted-foreground/65 transition-transform duration-300 ease-[cubic-bezier(0.16,1,0.3,1)]`,i&&`rotate-90`)})]})]}),i&&(0,k.jsxs)(`div`,{children:[l&&(0,k.jsx)(ti,{step:c,threadContinues:u>0||r}),e.slice(1).map((t,n)=>{let i=n+1===e.length-1,a=Jr(t),o=!i||r||a,s=!i||r;return(0,k.jsxs)(`div`,{className:`flex flex-col`,children:[(0,k.jsxs)(`div`,{className:`flex w-full items-center gap-2`,children:[(0,k.jsx)(J,{step:t,active:q(t),hideThreadBelow:!o}),(0,k.jsx)(Xr,{step:t})]}),a&&(0,k.jsx)(ti,{step:t,threadContinues:s})]},t.id)}),r&&(0,k.jsxs)(`div`,{className:`flex w-full items-center gap-2`,children:[(0,k.jsx)(J,{step:`done`,hideThreadBelow:!0}),(0,k.jsx)(`span`,{className:`font-mono text-sm text-foreground/85`,children:`done`})]})]})]})}function ri({text:e}){return(0,k.jsxs)(`div`,{className:`my-1 rounded-r-md border-l-2 border-destructive/50 bg-destructive/[0.06] py-2 pl-3 pr-3`,children:[(0,k.jsx)(`span`,{className:`font-serif italic text-sm tracking-wide text-destructive/85`,children:`lost somewhere between us`}),(0,k.jsx)(`div`,{className:`mt-1.5 h-px bg-destructive/15`}),(0,k.jsx)(`div`,{className:`mt-1.5 overflow-x-auto whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-destructive/90`,children:e})]})}var ii=`[[FAMILIAR_SILENT]]`;function ai({step:e,who:t,showLabel:n}){let r=!e.complete,i=e.text.startsWith(ii);return(0,k.jsxs)(`div`,{className:`flex w-full flex-col`,children:[n&&t&&(0,k.jsx)(`span`,{className:`mt-2 mb-1 block text-xs uppercase tracking-wider text-muted-foreground`,children:t}),i?(0,k.jsx)(`p`,{className:`font-serif italic text-sm leading-relaxed text-muted-foreground/70`,children:`they kept quiet.`}):Fr(e.text,{trailingCursor:r})]})}function oi(e){return e.kind===`thinking`||e.kind===`text`?e.complete===!0:e.kind===`error`?!0:e.tool.status===`completed`||e.tool.status===`error`}function si({message:e}){let{steps:t,silent:n,who:r}=e,i=Rr(t),a=i.findIndex(e=>e.kind===`text`)>=0,o=n===!0&&!a&&!!r,s=t.length>0&&t.every(oi)&&(n===!0||a);return(0,k.jsxs)(`div`,{className:`flex w-full flex-col gap-1`,children:[o&&(0,k.jsx)(`span`,{className:`mt-2 mb-1 block text-xs uppercase tracking-wider text-muted-foreground`,children:r}),i.map((e,t)=>{if(e.kind===`stream`)return(0,k.jsx)(ni,{steps:e.steps,autoCollapse:s},`stream-${t}`);if(e.kind===`error`)return(0,k.jsx)(ri,{text:e.step.text},e.step.id);let n=i[t-1],a=!n||n.kind!==`text`;return(0,k.jsx)(ai,{step:e.step,who:r,showLabel:a},e.step.id)}),n&&!a&&(0,k.jsx)(`p`,{className:`font-serif italic text-sm leading-relaxed text-muted-foreground/70`,children:`they kept quiet.`})]})}function ci({derived:e}){return(0,k.jsxs)(`div`,{className:`mt-2 border-l border-border/80 pl-3 text-left font-serif text-xs italic leading-relaxed text-muted-foreground`,children:[e.label?(0,k.jsxs)(`span`,{children:[e.label,`: `]}):null,e.text]})}function li(e){if(e.url)return e.kind===`image`||e.mimeType?.startsWith(`image/`)?{content:(0,k.jsx)(vr,{src:e.url,alt:e.name})}:e.mimeType?.startsWith(`video/`)?{content:(0,k.jsx)(`div`,{className:`w-full max-w-[24rem]`,children:(0,k.jsx)(`video`,{src:e.url,controls:!0,preload:`metadata`,className:`aspect-video w-full rounded-md bg-muted object-contain`})})}:e.mimeType?.startsWith(`audio/`)?{content:(0,k.jsx)(`div`,{className:`max-w-full`,children:(0,k.jsx)(Lr,{src:e.url,name:e.name})})}:{align:`right`,content:(0,k.jsx)(`a`,{href:e.url,className:`text-sm italic text-muted-foreground underline-offset-4 hover:underline`,children:e.name})}}function ui({attachment:e}){let t=li(e);return t?(0,k.jsxs)(`div`,{className:O(`max-w-full`,t.align===`right`&&`text-right`),children:[t.content,e.derivedText?(0,k.jsx)(ci,{derived:e.derivedText}):null]}):null}function di({attachments:e,align:t}){return e.length===0?null:(0,k.jsx)(`div`,{className:O(`mt-2 flex flex-col gap-2`,t===`right`&&`items-end`),children:e.map(e=>(0,k.jsx)(ui,{attachment:e},e.id))})}function fi({message:e}){let t=e.steps.filter(e=>e.kind===`text`).map(e=>e.kind===`text`?e.text:``).join(``);return(0,k.jsxs)(`div`,{className:`flex w-full flex-col items-end gap-1`,children:[(0,k.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-muted-foreground`,children:e.who}),(0,k.jsxs)(`div`,{className:`flex min-w-0 max-w-[85%] flex-col items-end`,children:[t&&Fr(t,{align:`end`}),(0,k.jsx)(di,{attachments:e.attachments??[],align:`right`})]})]})}function pi({message:e}){let t=e.steps.find(e=>e.kind===`text`);return!t||t.kind!==`text`?null:(0,k.jsx)(`div`,{className:`flex justify-center`,children:(0,k.jsx)(`p`,{className:`text-xs italic text-muted-foreground`,children:t.text})})}function mi({icon:e,label:t,onClick:n,hoverClass:r}){return(0,k.jsx)(A,{type:`button`,variant:`ghost`,size:`sm`,onClick:n,"aria-label":t,title:t,className:O(`h-7 px-2 text-muted-foreground opacity-70 transition-opacity group-hover:opacity-100`,r),children:(0,k.jsx)(e,{className:`size-3.5`})})}var hi=(0,D.memo)(function({message:e,onRetry:t,onDelete:n}){let[r,i]=(0,D.useState)(!1);return e.role===`system`?(0,k.jsx)(pi,{message:e}):e.role===`user`?(0,k.jsx)(fi,{message:e}):(0,k.jsxs)(`div`,{className:`group flex w-full flex-col`,onPointerDown:e=>{e.pointerType!==`mouse`&&i(!0)},children:[(0,k.jsx)(si,{message:e}),(0,k.jsx)(di,{attachments:e.attachments??[],align:`left`}),(t||n)&&(0,k.jsxs)(`div`,{className:O(`pointer-events-none mt-2 flex opacity-0 transition-opacity duration-150 ease-out group-hover:pointer-events-auto group-hover:opacity-100 group-focus-within:pointer-events-auto group-focus-within:opacity-100`,r&&`pointer-events-auto opacity-100`),children:[t&&(0,k.jsx)(mi,{icon:Xe,label:`retry latest reply`,onClick:t,hoverClass:`hover:text-foreground`}),n&&(0,k.jsx)(mi,{icon:y,label:`delete latest reply`,onClick:n,hoverClass:`hover:text-destructive`})]})]})}),gi=1800*1e3;function _i(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function vi(e,t){let n=new Date(e),r=new Date(t),i=n.toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}).toLowerCase();if(_i(n,r))return i;let a=new Date,o=n.getFullYear()===a.getFullYear();return`${n.toLocaleDateString([],{weekday:`long`,month:o?`long`:`short`,day:`numeric`,year:o?void 0:`numeric`}).toLowerCase()} · ${i}`}function yi({messages:e,personaName:t,historyLoaded:n,streaming:r=!1,onRetry:i,onDelete:a}){let o=(0,D.useRef)(null),s=r?-1:e.findLastIndex(e=>e.role===`assistant`);return(0,D.useEffect)(()=>{o.current?.scrollIntoView({behavior:r?`auto`:`smooth`,block:`end`})},[e,r]),n&&e.length===0?(0,k.jsx)(`div`,{className:`mx-auto flex h-full max-w-3xl items-center justify-center px-5`,children:(0,k.jsxs)(`p`,{className:`font-serif text-base italic leading-relaxed text-muted-foreground/80`,children:[`hi, i'm `,t,`. write whenever.`]})}):(0,k.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col gap-12 px-5 py-6`,children:[e.map((t,n)=>{let r=e[n-1];return(0,k.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[r!=null&&t.ts-r.ts>=gi&&(0,k.jsx)(`div`,{className:`flex justify-center pt-2`,children:(0,k.jsx)(`span`,{className:`font-serif italic text-xs text-muted-foreground/70 tracking-wide`,children:vi(t.ts,r.ts)})}),(0,k.jsx)(hi,{message:t,onRetry:n===s?i:void 0,onDelete:n===s?a:void 0})]},t.id)}),(0,k.jsx)(`div`,{ref:o})]})}var bi=1e3,xi=15e3;function Y(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function Si(e,t){let n=t.status===`completed`||t.status===`error`;return{...e,...t,args:t.args??e?.args,partialResult:n?void 0:t.partialResult??e?.partialResult,result:t.result??e?.result,error:t.error??e?.error,startedAt:e?.startedAt??t.startedAt}}function X(e,t){return e.length===0?e:e.map(e=>e.kind===`thinking`?e.complete?e:{...e,complete:!0,endedAt:e.endedAt??t}:e.kind===`text`?e.complete?e:{...e,complete:!0}:e)}function Ci(e,t,n,r){let i=e[e.length-1];if(t===`thinking`){if(i&&i.kind===`thinking`&&!i.complete){let t={...i,text:i.text+n};return[...e.slice(0,-1),t]}let t=X(e,r),a={kind:`thinking`,id:Y(),text:n,startedAt:r};return[...t,a]}if(i&&i.kind===`text`&&!i.complete){let t={...i,text:i.text+n};return[...e.slice(0,-1),t]}let a=X(e,r),o={kind:`text`,id:Y(),text:n};return[...a,o]}function wi(e,t,n){let r=e.findIndex(e=>e.kind===`tool`&&e.tool.id===t.id);if(r>=0){let n=e[r],i={...n,tool:Si(n.tool,t)},a=e.slice();return a[r]=i,a}let i=X(e,n),a={kind:`tool`,id:t.id,tool:t};return[...i,a]}function Ti(){let[e,t]=(0,D.useState)([]),[n,r]=(0,D.useState)(`connecting`),[i,a]=(0,D.useState)(`Familiar`),[o,s]=(0,D.useState)([]),[c,l]=(0,D.useState)(void 0),[u,d]=(0,D.useState)(!1),[f,p]=(0,D.useState)(!1),m=(0,D.useRef)(null),h=(0,D.useRef)(null),g=(0,D.useRef)(async()=>void 0),_=(0,D.useRef)(new Set),v=(0,D.useCallback)((e,n)=>{t(t=>t.map(t=>t.id===e?{...t,steps:n(t.steps)}:t))},[]),y=(0,D.useCallback)(e=>{switch(`eventId`in e&&(m.current=e.eventId),e.type){case`message_started`:e.role!==`user`&&(_.current.add(e.messageId),p(!0)),t(t=>t.some(t=>t.id===e.messageId)?t:[...t,{id:e.messageId,role:e.role,who:e.who,steps:[],ts:e.ts}]);break;case`message_replaced`:_.current.delete(e.oldMessageId),_.current.add(e.newMessageId),p(!0),t(t=>t.filter(t=>t.id!==e.oldMessageId));break;case`message_deleted`:_.current.delete(e.messageId),_.current.size===0&&p(!1),t(t=>t.filter(t=>t.id!==e.messageId));break;case`delta`:{let t=Date.now();v(e.messageId,n=>Ci(n,e.part,e.content,t));break}case`tool_event`:{let t=Date.now();v(e.messageId,n=>wi(n,e.tool,t));break}case`message_completed`:{let n=Date.now();_.current.delete(e.messageId)&&p(_.current.size>0),t(t=>t.find(t=>t.id===e.messageId)?t.map(t=>t.id===e.messageId?{...t,steps:X(t.steps,n),attachments:e.attachments??t.attachments,usage:e.usage??t.usage,silent:e.silent??t.silent}:t):[...t,{id:e.messageId,role:`assistant`,who:i,steps:[],attachments:e.attachments,usage:e.usage,silent:e.silent,ts:e.ts}]);break}case`model_error`:{let n=Date.now(),r=`${e.messageId}-error`;t(t=>{let a={kind:`error`,id:r,text:e.message};return t.find(t=>t.id===e.messageId)?t.map(t=>t.id===e.messageId?t.steps.some(e=>e.id===r)?{...t,steps:t.steps.map(e=>e.id===r?a:e)}:{...t,steps:[...X(t.steps,n),a]}:t):[...t,{id:e.messageId,role:`assistant`,who:i,steps:[a],ts:e.ts}]});break}case`status`:e.kind===`idle`&&(_.current.clear(),p(!1));break;case`error`:_.current.clear(),p(!1),t(t=>[...t,{id:Y(),role:`system`,who:``,steps:[{kind:`text`,id:Y(),text:`error · ${e.code}: ${e.message}`,complete:!0}],ts:e.ts}]);break;case`replay_window_lost`:Ct(c).then(e=>t(e.messages)).catch(()=>void 0);break}},[c,i,v]),b=(0,D.useRef)(y);(0,D.useEffect)(()=>{b.current=y},[y]),(0,D.useEffect)(()=>{let e=!1;return ht().then(t=>{e||a(t.personaName)}).catch(()=>void 0),St().then(t=>{if(e)return;s(t);let n=localStorage.getItem(`familiar.activeSession`),r=n?t.find(e=>e.key===n):void 0,i=t.find(e=>e.isDefault)??t[0],a=(r??i)?.key;a&&l(a)}).catch(()=>void 0),()=>{e=!0}},[]),(0,D.useEffect)(()=>{if(!c)return;localStorage.setItem(`familiar.activeSession`,c);let e=!1,n=null,i=0,a=null;m.current=null,_.current.clear();let o=window.setTimeout(()=>{e||(t([]),d(!1),p(!1))},0);Ct(c).then(n=>{e||(t(n.messages),d(!0))}).catch(()=>{e||d(!0)});let s=()=>{if(e)return;r(`connecting`);let t=new WebSocket(Dt(c));n=t,h.current=t,t.addEventListener(`open`,()=>{e||(i=0,r(`open`),t.send(JSON.stringify({type:`hello`,lastEventId:m.current})))}),t.addEventListener(`message`,t=>{if(!e)try{let e=JSON.parse(t.data);b.current(e)}catch{}}),t.addEventListener(`close`,()=>{if(e)return;h.current===t&&(h.current=null),r(`closed`);let n=Math.min(xi,bi*2**i);i+=1,a=setTimeout(s,n)}),t.addEventListener(`error`,()=>{e||r(`error`)})};return s(),g.current=async(e,t=[])=>{let n=e.trim();!n&&t.length===0||await Et(n,Y(),c,t)},()=>{e=!0,clearTimeout(o),a&&clearTimeout(a),h.current===n&&(h.current=null),n?.close()}},[c]);let x=(0,D.useCallback)((e,t=[])=>g.current(e,t),[]),S=(0,D.useCallback)(e=>l(e),[]),C=(0,D.useCallback)(e=>{let t=h.current;return t?.readyState===WebSocket.OPEN?(t.send(JSON.stringify({type:e})),!0):!1},[]);return{messages:e,connection:n,personaName:i,sessions:o,activeSessionKey:c,historyLoaded:u,streaming:f,selectSession:S,send:x,abort:(0,D.useCallback)(()=>{C(`abort`)},[C]),retry:(0,D.useCallback)(()=>{C(`retry`)},[C]),deleteLatest:(0,D.useCallback)(()=>{C(`delete`)},[C]),notifyNewChat:(0,D.useCallback)(()=>{t(e=>[...e,{id:Y(),role:`system`,who:``,steps:[{kind:`text`,id:Y(),text:`started fresh`,complete:!0}],ts:Date.now()}])},[])}}function Ei({nav:e,authMode:t,authDevice:n,onSignedOut:r}){let{messages:i,connection:a,personaName:o,sessions:s,activeSessionKey:c,historyLoaded:l,streaming:u,selectSession:d,send:f,abort:p,retry:m,deleteLatest:h,notifyNewChat:g}=Ti(),[_,v]=(0,D.useState)(!1);return(0,k.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-background text-foreground antialiased`,children:[(0,k.jsx)(_r,{nav:e,connection:a,personaName:o,sessions:s,activeSessionKey:c,channelKey:c,onSelectSession:d,onOpenConfig:()=>v(!0),onNewChatStarted:g}),(0,k.jsx)(`main`,{className:`flex-1 overflow-y-auto`,children:(0,k.jsx)(yi,{messages:i,personaName:o,historyLoaded:l,streaming:u,onRetry:m,onDelete:h})}),(0,k.jsx)(cn,{onSend:f,onAbort:p,streaming:u,personaName:o}),(0,k.jsx)(Zn,{open:_,onOpenChange:v,channelKey:c,authMode:t,authDevice:n,onSignedOut:r})]})}function Di(e){let t=new Date(`${e}T00:00:00`);return Number.isNaN(t.getTime())?null:t}function Oi(e){let t=Di(e);return t?new Intl.DateTimeFormat(void 0,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`}).format(t).toLowerCase():e}function ki(e){let t=Di(e);if(!t)return{weekday:``,day:e,month:``};let n=e=>new Intl.DateTimeFormat(void 0,e).format(t).toLowerCase();return{weekday:n({weekday:`short`}),day:n({day:`numeric`}),month:n({month:`short`})}}function Ai(e){let t=Di(e);if(!t)return null;let n=new Date;return n.setHours(0,0,0,0),Math.round((n.getTime()-t.getTime())/864e5)}function ji(e){let t=Ai(e);if(!(t===null||t<0)){if(t===0)return`today`;if(t===1)return`yesterday`;if(t<7)return`${t} days ago`;if(t<14)return`last week`;if(t<30)return`${Math.round(t/7)} weeks ago`;if(t<60)return`last month`;if(t<365)return`${Math.round(t/30)} months ago`}}function Mi(e){let t=e.trim().split(/\s+/).filter(Boolean).length;if(t===0)return``;let n=Math.max(1,Math.round(t/200));return n===1?`a minute’s read`:`a ${n}-minute read`}function Ni({diary:e,active:t,onSelect:n}){let{weekday:r,day:i,month:a}=ki(e.date),o=Ai(e.date)===0;return(0,k.jsxs)(`button`,{type:`button`,onClick:n,"aria-current":t?`page`:void 0,className:O(`flex w-full gap-3 rounded-md px-2 py-3 text-left transition-colors focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none`,t?`bg-primary text-primary-foreground`:`text-foreground hover:bg-accent/50`),children:[(0,k.jsxs)(`span`,{className:`flex w-10 shrink-0 flex-col items-center font-serif leading-none`,children:[(0,k.jsx)(`span`,{className:O(`text-[0.6875rem] tracking-wide`,t?`text-primary-foreground/70`:`text-muted-foreground`),children:r}),(0,k.jsx)(`span`,{className:`mt-0.5 text-2xl tabular-nums`,children:i}),(0,k.jsx)(`span`,{className:O(`mt-0.5 text-[0.6875rem] tracking-wide`,t?`text-primary-foreground/70`:`text-muted-foreground`),children:a})]}),(0,k.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,k.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,k.jsx)(`span`,{className:`block truncate font-serif text-sm leading-tight tracking-tight`,children:e.title}),o?(0,k.jsx)(`span`,{className:O(`size-1.5 shrink-0 rounded-full`,t?`bg-primary-foreground/70`:`bg-primary`),"aria-hidden":!0}):null]}),e.excerpt?(0,k.jsx)(`span`,{className:O(`mt-1.5 line-clamp-2 text-xs leading-relaxed`,t?`text-primary-foreground/85`:`text-muted-foreground`),children:e.excerpt}):null]})]})}function Pi({content:e,title:t}){let n=(0,D.useMemo)(()=>Fi(e,t),[e,t]);return n.length===0?(0,k.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:`this day is quiet.`}):(0,k.jsx)(`div`,{className:`warm-prose diary-prose`,children:n})}function Fi(e,t){let n=[],r=[],i=[],a,o=!1,s=()=>{let e=r.join(` `).trim();e&&n.push((0,k.jsx)(`p`,{children:Z(e)},n.length)),r.length=0},c=()=>{if(!a||i.length===0)return;let e=a;n.push((0,k.jsx)(e,{children:i.map((e,t)=>(0,k.jsx)(`li`,{children:Z(e)},t))},n.length)),i=[],a=void 0},l=()=>{s(),c()};for(let u of e.replace(/\r\n/g,`
|
|
4
|
+
`);n.trim()&&e.push(Sr(n))}function Cr(e){let t=[],n=0;for(let r of Wt(e))r.index>n&&K(t,e.slice(n,r.index)),t.push(G(r.url,r.type===`meme`?r.name:``)),n=r.index+r.whole.length;if(t.length!==0)return n<e.length&&K(t,e.slice(n).replace(/^\n+/,``)),t}function wr(e){let t=e.children[0];return e.title==null&&e.children.length===1&&t?.type===`text`&&t.value===e.url&&Rt.test(e.url)}function Tr(e,t,n){e.children.splice(t,1,...n)}function Er(e){let{children:t}=e;for(let e=1;e<t.length-1;e+=1){let n=t[e-1],r=t[e],i=t[e+1];if(n?.type!==`text`||r?.type!==`link`||i?.type!==`text`||!i.value.startsWith(`)`)||!wr(r))continue;let a=Ht(n.value);if(!a)continue;let o=[];K(o,a.before),o.push(G(r.url,a.name)),K(o,i.value.slice(1).replace(/^\n+/,``)),t.splice(e-1,3,...o),e+=Math.max(0,o.length-2)}}function Dr(){return e=>{ct(e,`paragraph`,e=>{Er(e)}),ct(e,`link`,(e,t,n)=>(t===void 0||!n||wr(e)&&Tr(n,t,[G(e.url)]),E)),ct(e,`text`,(e,t,n)=>{if(t===void 0||!n||n.type===`link`)return E;let r=Cr(e.value);if(r)return Tr(n,t,r),[E,t+r.length]})}}function Or(e,t,n=1/0){let r=-1/0;for(let t=0;t<e.length;t+=1){let{right:n}=e[t];n>r&&(r=n)}if(r===-1/0)return 0;let i=Math.max(0,r-t);return Math.ceil(Number.isFinite(n)?Math.min(i,Math.max(0,n)):i)}function kr(e){let t=e.parentElement?.getBoundingClientRect().width??1/0;return t>0?t:1/0}function Ar(e,t){let{left:n,right:r,width:i}=e.getBoundingClientRect(),a=e.scrollWidth;i>0&&t.push({right:r}),a>i&&t.push({right:n+a})}function jr(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(e){return e.textContent?.trim()?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}});for(let e=n.nextNode();e;e=n.nextNode()){let n=document.createRange();n.selectNodeContents(e);for(let e of n.getClientRects())e.width>0&&t.push(e)}return e.querySelectorAll(`button, img, video, audio, canvas, svg, iframe, pre, .chat-markdown-table`).forEach(e=>Ar(e,t)),t}function Mr(e){e.style.width=``;let t=jr(e);if(t.length===0)return;let n=Or(t,e.getBoundingClientRect().left,kr(e));n>0&&(e.style.width=`${n}px`)}var Nr=[ut,Dr,xr];function Pr(e,t,n){(0,D.useLayoutEffect)(()=>{let n=e.current;if(!t||!n)return;let r=()=>Mr(n);return r(),window.addEventListener(`resize`,r),document.fonts?.ready.then(r),()=>window.removeEventListener(`resize`,r)},[e,t,n])}function Fr(e){return{a(e){let{node:t,href:n,children:r,...i}=e,a=n?!n.startsWith(`#`):!1;return(0,k.jsx)(`a`,{...i,href:n,target:a?`_blank`:void 0,rel:a?`noopener noreferrer`:void 0,children:r})},img(t){let{node:n,src:r,alt:i}=t;return typeof r!=`string`||!r?null:(0,k.jsx)(vr,{src:r,alt:i??`image`,className:O(`my-1 block w-fit`,e===`end`&&`ml-auto`)})},table(e){let{node:t,...n}=e;return(0,k.jsx)(`div`,{className:`chat-markdown-table`,children:(0,k.jsx)(`table`,{...n})})}}}function Ir({text:e,streaming:t,align:n=`start`}){let r=(0,D.useMemo)(()=>Fr(n),[n]),i=(0,D.useRef)(null);return Pr(i,n===`end`,e),(0,k.jsx)(`div`,{ref:i,className:O(`warm-prose chat-markdown`,n===`end`&&`chat-markdown-end`,t&&`chat-markdown-streaming`),children:(0,k.jsx)(lt,{remarkPlugins:Nr,components:r,children:e})})}var Lr=(0,k.jsx)(`span`,{className:`ml-0.5 inline-block animate-pulse`,children:`▎`});function Rr(e,t={}){let{trailingCursor:n,align:r=`start`}=t;if(!e.trim())return n?(0,k.jsx)(`div`,{className:`warm-prose chat-markdown`,children:Lr}):null;let i=(0,k.jsx)(Ir,{text:e,streaming:n===!0,align:r});return r===`end`?(0,k.jsx)(`div`,{className:`flex w-full min-w-0 max-w-full flex-col items-end`,children:i}):i}function zr(e){if(!Number.isFinite(e)||e<0)return`0:00`;let t=Math.floor(e);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}function Br({src:e,name:t,className:n}){let r=(0,D.useRef)(null),[i,a]=(0,D.useState)(!1),[o,s]=(0,D.useState)(0),[c,l]=(0,D.useState)(0);(0,D.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>s(e.currentTime),n=()=>l(Number.isFinite(e.duration)?e.duration:0),i=()=>a(!0),o=()=>a(!1),c=()=>a(!1);return e.addEventListener(`timeupdate`,t),e.addEventListener(`loadedmetadata`,n),e.addEventListener(`durationchange`,n),e.addEventListener(`play`,i),e.addEventListener(`pause`,o),e.addEventListener(`ended`,c),()=>{e.removeEventListener(`timeupdate`,t),e.removeEventListener(`loadedmetadata`,n),e.removeEventListener(`durationchange`,n),e.removeEventListener(`play`,i),e.removeEventListener(`pause`,o),e.removeEventListener(`ended`,c)}},[]);let u=()=>{let e=r.current;e&&(i?e.pause():e.play())},d=e=>{let t=r.current;if(!t)return;let n=Math.max(0,Math.min(c||0,e));t.currentTime=n,s(n)},f=c>0?o/c*100:0;return(0,k.jsxs)(`div`,{className:O(`flex w-full max-w-sm items-center gap-3 rounded-md bg-card px-3 py-2`,n),children:[(0,k.jsx)(`audio`,{ref:r,src:e,preload:`metadata`,children:(0,k.jsx)(`a`,{href:e,children:t??`audio`})}),(0,k.jsx)(`button`,{type:`button`,onClick:u,"aria-label":i?`pause`:`play`,className:`grid size-8 shrink-0 place-items-center rounded-md text-foreground hover:bg-accent focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-ring/40`,children:i?(0,k.jsx)(he,{className:`size-4 fill-current`,strokeWidth:0}):(0,k.jsx)(Ke,{className:`size-4 fill-current translate-x-px`,strokeWidth:0})}),(0,k.jsxs)(`span`,{className:`shrink-0 whitespace-nowrap font-serif text-xs italic text-muted-foreground tabular-nums`,children:[zr(o),` / `,zr(c)]}),(0,k.jsx)(`input`,{type:`range`,min:0,max:c||0,step:.1,value:o,onChange:e=>d(Number(e.target.value)),"aria-label":`seek`,className:O(`h-1 flex-1 cursor-pointer appearance-none rounded-full bg-border outline-none`,`[&::-webkit-slider-thumb]:size-3 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-primary [&::-webkit-slider-thumb]:cursor-pointer`,`[&::-moz-range-thumb]:size-3 [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-0 [&::-moz-range-thumb]:bg-primary [&::-moz-range-thumb]:cursor-pointer`,`focus-visible:ring-3 focus-visible:ring-ring/40`),style:{background:`linear-gradient(to right, var(--primary) 0%, var(--primary) ${f}%, var(--border) ${f}%, var(--border) 100%)`}})]})}function Vr(e){let t=[],n=[],r=()=>{n.length>0&&(t.push({kind:`stream`,steps:n}),n=[])};for(let i of e)i.kind===`text`?(r(),t.push({kind:`text`,step:i})):i.kind===`error`?(r(),t.push({kind:`error`,step:i})):n.push(i);return r(),t}var Hr=[{match:e=>/^(web_)?search/.test(e)||/web/.test(e),icon:et},{match:e=>/^(read|cat|ls|view|list_files)/.test(e),icon:ot},{match:e=>/^(write|edit|patch|create_file)/.test(e),icon:Ae},{match:e=>/^(bash|shell|exec|terminal)/.test(e),icon:We},{match:e=>/^memory/.test(e),icon:o},{match:e=>/^(tts|speak|voice)/.test(e),icon:h},{match:e=>/^(image|meme|picture|photo)/.test(e),icon:Ee},{match:e=>/^skill/.test(e),icon:ie}];function Ur(e){let t=e.toLowerCase();for(let e of Hr)if(e.match(t))return e.icon;return ce}var Wr=l;function Gr(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Kr(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}var qr=[`query`,`url`,`command`,`prompt`,`file_path`,`path`,`pattern`,`description`];function Jr(e){if(!Gr(e))return``;for(let t of qr){let n=e[t];if(typeof n==`string`&&n.trim())return n.trim()}return``}function Yr(e){if(e==null)return``;if(Array.isArray(e))return e.length===1?`1 item`:`${e.length} items`;if(Gr(e))for(let t of[`results`,`items`,`matches`,`files`,`lines`]){let n=e[t];if(Array.isArray(n)){let e=t===`files`?`file`:t===`lines`?`line`:t===`matches`?`match`:t===`items`?`item`:`result`;return n.length===1?`1 ${e}`:`${n.length} ${e}s`}}if(typeof e==`string`){let t=e.split(`
|
|
5
|
+
`).length;if(t>3)return`${t} lines`}return``}function Xr(e){if(!e.complete)return`thinking…`;if(e.endedAt==null)return`thought`;let t=Math.max(0,e.endedAt-e.startedAt);return t<1e3?`thought for <1s`:`thought for ${Math.round(t/100)/10}s`}function q(e){return e.kind===`thinking`?!e.complete:e.tool.status===`running`||e.tool.status===`pending`}function Zr(e){if(e.kind===`thinking`)return!!e.text;let t=e.tool;return!!(t.args||t.result||t.partialResult||t.error)}function Qr(e){return e.kind===`tool`&&e.tool.status===`error`}function J({step:e,active:t,hideThreadAbove:n,hideThreadBelow:r}){let i=e===`done`?d:e.kind===`thinking`?Wr:Ur(e.tool.name);return(0,k.jsxs)(`div`,{className:`relative flex h-7 w-7 shrink-0 items-center justify-center`,"aria-hidden":!0,children:[(0,k.jsx)(`span`,{className:O(`absolute left-1/2 w-px -translate-x-1/2 bg-border`,n?`top-1/2`:`top-0`,r?`bottom-1/2`:`bottom-0`)}),(0,k.jsx)(`span`,{className:`relative z-10 inline-flex size-4 items-center justify-center bg-muted`,children:(0,k.jsx)(i,{className:O(`size-4 transition-colors`,t?`text-primary`:`text-muted-foreground/85`)})})]})}function $r({step:e}){if(e.kind===`thinking`)return(0,k.jsx)(`span`,{className:`truncate font-serif italic text-sm tracking-wide text-foreground/75`,children:Xr(e)});let t=e.tool,n=Jr(t.args),r=t.status===`error`,i=t.status===`running`?t.partialResult:t.result,a=!r&&t.status===`completed`?Yr(i):``;return(0,k.jsxs)(`span`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,k.jsx)(`span`,{className:`shrink-0 font-mono text-sm text-foreground/85`,children:t.name}),n&&(0,k.jsx)(`span`,{className:`min-w-0 truncate font-mono text-sm text-muted-foreground/70`,children:n}),r&&(0,k.jsx)(`span`,{className:`shrink-0 font-serif italic text-sm text-destructive/80`,children:`· failed`}),a&&!r&&(0,k.jsxs)(`span`,{className:`shrink-0 font-serif italic text-sm tracking-wide text-muted-foreground/65`,children:[`· `,a]})]})}function ei({step:e,active:t}){return(0,k.jsxs)(`div`,{className:`font-serif italic text-sm leading-relaxed text-muted-foreground/85 whitespace-pre-wrap`,children:[e.text,t&&(0,k.jsx)(`span`,{className:`ml-0.5 inline-block animate-pulse`,children:`▎`})]})}function ti({tool:e}){let t=(0,D.useMemo)(()=>Kr(e.args),[e.args]),n=e.status===`running`?e.partialResult:e.result,r=(0,D.useMemo)(()=>Kr(n),[n]);return(0,k.jsxs)(`div`,{className:`space-y-2`,children:[t&&(0,k.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-words font-mono text-xs text-muted-foreground/80`,children:t}),r&&(0,k.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-words font-mono text-xs text-muted-foreground/80`,children:r}),e.error&&(0,k.jsx)(`div`,{className:`font-mono text-xs whitespace-pre-wrap text-destructive/85`,children:e.error})]})}var ni=132;function ri({children:e}){let[t,n]=(0,D.useState)(!1),r=(0,D.useRef)(null),[i,a]=(0,D.useState)(!1);(0,D.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>a(e.scrollHeight>ni+4);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let o=i&&!t;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{className:`relative overflow-hidden`,style:{maxHeight:o?`${ni}px`:`9999px`,WebkitMaskImage:o?`linear-gradient(to bottom, black calc(100% - 2.5rem), transparent)`:void 0,maskImage:o?`linear-gradient(to bottom, black calc(100% - 2.5rem), transparent)`:void 0},children:(0,k.jsx)(`div`,{ref:r,children:e})}),i&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`mt-1.5 font-serif italic text-xs tracking-wide text-foreground/75 underline-offset-4 transition-colors hover:text-foreground hover:underline`,children:t?`show less`:`show more`})]})}function ii({step:e,threadContinues:t}){let n=q(e);return(0,k.jsxs)(`div`,{className:`relative py-1`,children:[t&&(0,k.jsx)(`span`,{className:`absolute left-3.5 inset-y-0 w-px -translate-x-1/2 bg-border`,"aria-hidden":!0}),(0,k.jsx)(`div`,{className:`ml-9 mt-1 mb-2`,children:(0,k.jsx)(ri,{children:e.kind===`thinking`?(0,k.jsx)(ei,{step:e,active:n}):(0,k.jsx)(ti,{tool:e.tool})})})]})}function ai({steps:e,autoCollapse:t=!1}){let n=e.some(q),r=!n&&e.length>0&&e.length>=2&&!e.some(Qr),[i,a]=(0,D.useState)(n),o=(0,D.useRef)(!1);(0,D.useEffect)(()=>{o.current||(n?a(!0):t&&a(!1))},[n,t]);let s=()=>{o.current=!0,a(e=>!e)};if(e.length===0)return null;let c=e[0],l=Zr(c),u=e.length-1,d=i&&(l||u>0||r);return(0,k.jsxs)(`div`,{className:`flex flex-col rounded-lg bg-muted px-3 py-2`,children:[(0,k.jsxs)(`button`,{type:`button`,onClick:s,"aria-expanded":i,className:`flex w-full items-center gap-2 text-left`,children:[(0,k.jsx)(J,{step:c,active:q(c),hideThreadAbove:!0,hideThreadBelow:!d}),(0,k.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,k.jsx)($r,{step:c}),!i&&u>0&&(0,k.jsxs)(`span`,{className:`shrink-0 font-serif italic text-sm tracking-wide text-muted-foreground/60`,children:[`· `,u,` more`]}),(0,k.jsx)(nt,{className:O(`size-3.5 shrink-0 text-muted-foreground/65 transition-transform duration-300 ease-[cubic-bezier(0.16,1,0.3,1)]`,i&&`rotate-90`)})]})]}),i&&(0,k.jsxs)(`div`,{children:[l&&(0,k.jsx)(ii,{step:c,threadContinues:u>0||r}),e.slice(1).map((t,n)=>{let i=n+1===e.length-1,a=Zr(t),o=!i||r||a,s=!i||r;return(0,k.jsxs)(`div`,{className:`flex flex-col`,children:[(0,k.jsxs)(`div`,{className:`flex w-full items-center gap-2`,children:[(0,k.jsx)(J,{step:t,active:q(t),hideThreadBelow:!o}),(0,k.jsx)($r,{step:t})]}),a&&(0,k.jsx)(ii,{step:t,threadContinues:s})]},t.id)}),r&&(0,k.jsxs)(`div`,{className:`flex w-full items-center gap-2`,children:[(0,k.jsx)(J,{step:`done`,hideThreadBelow:!0}),(0,k.jsx)(`span`,{className:`font-mono text-sm text-foreground/85`,children:`done`})]})]})]})}function oi({text:e}){return(0,k.jsxs)(`div`,{className:`my-1 rounded-r-md border-l-2 border-destructive/50 bg-destructive/[0.06] py-2 pl-3 pr-3`,children:[(0,k.jsx)(`span`,{className:`font-serif italic text-sm tracking-wide text-destructive/85`,children:`lost somewhere between us`}),(0,k.jsx)(`div`,{className:`mt-1.5 h-px bg-destructive/15`}),(0,k.jsx)(`div`,{className:`mt-1.5 overflow-x-auto whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-destructive/90`,children:e})]})}var si=`[[FAMILIAR_SILENT]]`;function ci({step:e,who:t,showLabel:n}){let r=!e.complete,i=e.text.startsWith(si);return(0,k.jsxs)(`div`,{className:`flex w-full flex-col`,children:[n&&t&&(0,k.jsx)(`span`,{className:`mt-2 mb-1 block text-xs uppercase tracking-wider text-muted-foreground`,children:t}),i?(0,k.jsx)(`p`,{className:`font-serif italic text-sm leading-relaxed text-muted-foreground/70`,children:`they kept quiet.`}):Rr(e.text,{trailingCursor:r})]})}function li(e){return e.kind===`thinking`||e.kind===`text`?e.complete===!0:e.kind===`error`?!0:e.tool.status===`completed`||e.tool.status===`error`}function ui({message:e}){let{steps:t,silent:n,who:r}=e,i=Vr(t),a=i.findIndex(e=>e.kind===`text`)>=0,o=n===!0&&!a&&!!r,s=t.length>0&&t.every(li)&&(n===!0||a);return(0,k.jsxs)(`div`,{className:`flex w-full flex-col gap-1`,children:[o&&(0,k.jsx)(`span`,{className:`mt-2 mb-1 block text-xs uppercase tracking-wider text-muted-foreground`,children:r}),i.map((e,t)=>{if(e.kind===`stream`)return(0,k.jsx)(ai,{steps:e.steps,autoCollapse:s},`stream-${t}`);if(e.kind===`error`)return(0,k.jsx)(oi,{text:e.step.text},e.step.id);let n=i[t-1],a=!n||n.kind!==`text`;return(0,k.jsx)(ci,{step:e.step,who:r,showLabel:a},e.step.id)}),n&&!a&&(0,k.jsx)(`p`,{className:`font-serif italic text-sm leading-relaxed text-muted-foreground/70`,children:`they kept quiet.`})]})}function di({derived:e}){return(0,k.jsxs)(`div`,{className:`mt-2 border-l border-border/80 pl-3 text-left font-serif text-xs italic leading-relaxed text-muted-foreground`,children:[e.label?(0,k.jsxs)(`span`,{children:[e.label,`: `]}):null,e.text]})}function fi(e){if(e.url)return e.kind===`image`||e.mimeType?.startsWith(`image/`)?{content:(0,k.jsx)(vr,{src:e.url,alt:e.name})}:e.mimeType?.startsWith(`video/`)?{content:(0,k.jsx)(`div`,{className:`w-full max-w-[24rem]`,children:(0,k.jsx)(`video`,{src:e.url,controls:!0,preload:`metadata`,className:`aspect-video w-full rounded-md bg-muted object-contain`})})}:e.mimeType?.startsWith(`audio/`)?{content:(0,k.jsx)(`div`,{className:`max-w-full`,children:(0,k.jsx)(Br,{src:e.url,name:e.name})})}:{align:`right`,content:(0,k.jsx)(`a`,{href:e.url,className:`text-sm italic text-muted-foreground underline-offset-4 hover:underline`,children:e.name})}}function pi({attachment:e}){let t=fi(e);return t?(0,k.jsxs)(`div`,{className:O(`max-w-full`,t.align===`right`&&`text-right`),children:[t.content,e.derivedText?(0,k.jsx)(di,{derived:e.derivedText}):null]}):null}function mi({attachments:e,align:t}){return e.length===0?null:(0,k.jsx)(`div`,{className:O(`mt-2 flex flex-col gap-2`,t===`right`&&`items-end`),children:e.map(e=>(0,k.jsx)(pi,{attachment:e},e.id))})}function hi({message:e}){let t=e.steps.filter(e=>e.kind===`text`).map(e=>e.kind===`text`?e.text:``).join(``);return(0,k.jsxs)(`div`,{className:`flex w-full flex-col items-end gap-1`,children:[(0,k.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-muted-foreground`,children:e.who}),(0,k.jsxs)(`div`,{className:`flex w-full min-w-0 max-w-[85%] flex-col items-end`,children:[t&&Rr(t,{align:`end`}),(0,k.jsx)(mi,{attachments:e.attachments??[],align:`right`})]})]})}function gi({message:e}){let t=e.steps.find(e=>e.kind===`text`);return!t||t.kind!==`text`?null:(0,k.jsx)(`div`,{className:`flex justify-center`,children:(0,k.jsx)(`p`,{className:`text-xs italic text-muted-foreground`,children:t.text})})}function _i({icon:e,label:t,onClick:n,hoverClass:r}){return(0,k.jsx)(A,{type:`button`,variant:`ghost`,size:`sm`,onClick:n,"aria-label":t,title:t,className:O(`h-7 px-2 text-muted-foreground opacity-70 transition-opacity group-hover:opacity-100`,r),children:(0,k.jsx)(e,{className:`size-3.5`})})}var vi=(0,D.memo)(function({message:e,onRetry:t,onDelete:n}){let[r,i]=(0,D.useState)(!1);return e.role===`system`?(0,k.jsx)(gi,{message:e}):e.role===`user`?(0,k.jsx)(hi,{message:e}):(0,k.jsxs)(`div`,{className:`group flex w-full flex-col`,onPointerDown:e=>{e.pointerType!==`mouse`&&i(!0)},children:[(0,k.jsx)(ui,{message:e}),(0,k.jsx)(mi,{attachments:e.attachments??[],align:`left`}),(t||n)&&(0,k.jsxs)(`div`,{className:O(`pointer-events-none mt-2 flex opacity-0 transition-opacity duration-150 ease-out group-hover:pointer-events-auto group-hover:opacity-100 group-focus-within:pointer-events-auto group-focus-within:opacity-100`,r&&`pointer-events-auto opacity-100`),children:[t&&(0,k.jsx)(_i,{icon:Xe,label:`retry latest reply`,onClick:t,hoverClass:`hover:text-foreground`}),n&&(0,k.jsx)(_i,{icon:y,label:`delete latest reply`,onClick:n,hoverClass:`hover:text-destructive`})]})]})}),yi=1800*1e3;function bi(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function xi(e,t){let n=new Date(e),r=new Date(t),i=n.toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}).toLowerCase();if(bi(n,r))return i;let a=new Date,o=n.getFullYear()===a.getFullYear();return`${n.toLocaleDateString([],{weekday:`long`,month:o?`long`:`short`,day:`numeric`,year:o?void 0:`numeric`}).toLowerCase()} · ${i}`}function Si({messages:e,personaName:t,historyLoaded:n,streaming:r=!1,onRetry:i,onDelete:a}){let o=(0,D.useRef)(null),s=r?-1:e.findLastIndex(e=>e.role===`assistant`);return(0,D.useEffect)(()=>{o.current?.scrollIntoView({behavior:r?`auto`:`smooth`,block:`end`})},[e,r]),n&&e.length===0?(0,k.jsx)(`div`,{className:`mx-auto flex h-full max-w-3xl items-center justify-center px-5`,children:(0,k.jsxs)(`p`,{className:`font-serif text-base italic leading-relaxed text-muted-foreground/80`,children:[`hi, i'm `,t,`. write whenever.`]})}):(0,k.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col gap-12 px-5 py-6`,children:[e.map((t,n)=>{let r=e[n-1];return(0,k.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[r!=null&&t.ts-r.ts>=yi&&(0,k.jsx)(`div`,{className:`flex justify-center pt-2`,children:(0,k.jsx)(`span`,{className:`font-serif italic text-xs text-muted-foreground/70 tracking-wide`,children:xi(t.ts,r.ts)})}),(0,k.jsx)(vi,{message:t,onRetry:n===s?i:void 0,onDelete:n===s?a:void 0})]},t.id)}),(0,k.jsx)(`div`,{ref:o})]})}var Ci=1e3,wi=15e3;function Y(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function Ti(e,t){let n=t.status===`completed`||t.status===`error`;return{...e,...t,args:t.args??e?.args,partialResult:n?void 0:t.partialResult??e?.partialResult,result:t.result??e?.result,error:t.error??e?.error,startedAt:e?.startedAt??t.startedAt}}function X(e,t){return e.length===0?e:e.map(e=>e.kind===`thinking`?e.complete?e:{...e,complete:!0,endedAt:e.endedAt??t}:e.kind===`text`?e.complete?e:{...e,complete:!0}:e)}function Ei(e,t,n,r){let i=e[e.length-1];if(t===`thinking`){if(i&&i.kind===`thinking`&&!i.complete){let t={...i,text:i.text+n};return[...e.slice(0,-1),t]}let t=X(e,r),a={kind:`thinking`,id:Y(),text:n,startedAt:r};return[...t,a]}if(i&&i.kind===`text`&&!i.complete){let t={...i,text:i.text+n};return[...e.slice(0,-1),t]}let a=X(e,r),o={kind:`text`,id:Y(),text:n};return[...a,o]}function Di(e,t,n){let r=e.findIndex(e=>e.kind===`tool`&&e.tool.id===t.id);if(r>=0){let n=e[r],i={...n,tool:Ti(n.tool,t)},a=e.slice();return a[r]=i,a}let i=X(e,n),a={kind:`tool`,id:t.id,tool:t};return[...i,a]}function Oi(){let[e,t]=(0,D.useState)([]),[n,r]=(0,D.useState)(`connecting`),[i,a]=(0,D.useState)(`Familiar`),[o,s]=(0,D.useState)([]),[c,l]=(0,D.useState)(void 0),[u,d]=(0,D.useState)(!1),[f,p]=(0,D.useState)(!1),m=(0,D.useRef)(null),h=(0,D.useRef)(null),g=(0,D.useRef)(async()=>void 0),_=(0,D.useRef)(new Set),v=(0,D.useCallback)((e,n)=>{t(t=>t.map(t=>t.id===e?{...t,steps:n(t.steps)}:t))},[]),y=(0,D.useCallback)(e=>{switch(`eventId`in e&&(m.current=e.eventId),e.type){case`message_started`:e.role!==`user`&&(_.current.add(e.messageId),p(!0)),t(t=>t.some(t=>t.id===e.messageId)?t:[...t,{id:e.messageId,role:e.role,who:e.who,steps:[],ts:e.ts}]);break;case`message_replaced`:_.current.delete(e.oldMessageId),_.current.add(e.newMessageId),p(!0),t(t=>t.filter(t=>t.id!==e.oldMessageId));break;case`message_deleted`:_.current.delete(e.messageId),_.current.size===0&&p(!1),t(t=>t.filter(t=>t.id!==e.messageId));break;case`delta`:{let t=Date.now();v(e.messageId,n=>Ei(n,e.part,e.content,t));break}case`tool_event`:{let t=Date.now();v(e.messageId,n=>Di(n,e.tool,t));break}case`message_completed`:{let n=Date.now();_.current.delete(e.messageId)&&p(_.current.size>0),t(t=>t.find(t=>t.id===e.messageId)?t.map(t=>t.id===e.messageId?{...t,steps:X(t.steps,n),attachments:e.attachments??t.attachments,usage:e.usage??t.usage,silent:e.silent??t.silent}:t):[...t,{id:e.messageId,role:`assistant`,who:i,steps:[],attachments:e.attachments,usage:e.usage,silent:e.silent,ts:e.ts}]);break}case`model_error`:{let n=Date.now(),r=`${e.messageId}-error`;t(t=>{let a={kind:`error`,id:r,text:e.message};return t.find(t=>t.id===e.messageId)?t.map(t=>t.id===e.messageId?t.steps.some(e=>e.id===r)?{...t,steps:t.steps.map(e=>e.id===r?a:e)}:{...t,steps:[...X(t.steps,n),a]}:t):[...t,{id:e.messageId,role:`assistant`,who:i,steps:[a],ts:e.ts}]});break}case`status`:e.kind===`idle`&&(_.current.clear(),p(!1));break;case`error`:_.current.clear(),p(!1),t(t=>[...t,{id:Y(),role:`system`,who:``,steps:[{kind:`text`,id:Y(),text:`error · ${e.code}: ${e.message}`,complete:!0}],ts:e.ts}]);break;case`replay_window_lost`:Ct(c).then(e=>t(e.messages)).catch(()=>void 0);break}},[c,i,v]),b=(0,D.useRef)(y);(0,D.useEffect)(()=>{b.current=y},[y]),(0,D.useEffect)(()=>{let e=!1;return ht().then(t=>{e||a(t.personaName)}).catch(()=>void 0),St().then(t=>{if(e)return;s(t);let n=localStorage.getItem(`familiar.activeSession`),r=n?t.find(e=>e.key===n):void 0,i=t.find(e=>e.isDefault)??t[0],a=(r??i)?.key;a&&l(a)}).catch(()=>void 0),()=>{e=!0}},[]),(0,D.useEffect)(()=>{if(!c)return;localStorage.setItem(`familiar.activeSession`,c);let e=!1,n=null,i=0,a=null;m.current=null,_.current.clear();let o=window.setTimeout(()=>{e||(t([]),d(!1),p(!1))},0);Ct(c).then(n=>{e||(t(n.messages),d(!0))}).catch(()=>{e||d(!0)});let s=()=>{if(e)return;r(`connecting`);let t=new WebSocket(Dt(c));n=t,h.current=t,t.addEventListener(`open`,()=>{e||(i=0,r(`open`),t.send(JSON.stringify({type:`hello`,lastEventId:m.current})))}),t.addEventListener(`message`,t=>{if(!e)try{let e=JSON.parse(t.data);b.current(e)}catch{}}),t.addEventListener(`close`,()=>{if(e)return;h.current===t&&(h.current=null),r(`closed`);let n=Math.min(wi,Ci*2**i);i+=1,a=setTimeout(s,n)}),t.addEventListener(`error`,()=>{e||r(`error`)})};return s(),g.current=async(e,t=[])=>{let n=e.trim();!n&&t.length===0||await Et(n,Y(),c,t)},()=>{e=!0,clearTimeout(o),a&&clearTimeout(a),h.current===n&&(h.current=null),n?.close()}},[c]);let x=(0,D.useCallback)((e,t=[])=>g.current(e,t),[]),S=(0,D.useCallback)(e=>l(e),[]),C=(0,D.useCallback)(e=>{let t=h.current;return t?.readyState===WebSocket.OPEN?(t.send(JSON.stringify({type:e})),!0):!1},[]);return{messages:e,connection:n,personaName:i,sessions:o,activeSessionKey:c,historyLoaded:u,streaming:f,selectSession:S,send:x,abort:(0,D.useCallback)(()=>{C(`abort`)},[C]),retry:(0,D.useCallback)(()=>{C(`retry`)},[C]),deleteLatest:(0,D.useCallback)(()=>{C(`delete`)},[C]),notifyNewChat:(0,D.useCallback)(()=>{t(e=>[...e,{id:Y(),role:`system`,who:``,steps:[{kind:`text`,id:Y(),text:`started fresh`,complete:!0}],ts:Date.now()}])},[])}}function ki({nav:e,authMode:t,authDevice:n,onSignedOut:r}){let{messages:i,connection:a,personaName:o,sessions:s,activeSessionKey:c,historyLoaded:l,streaming:u,selectSession:d,send:f,abort:p,retry:m,deleteLatest:h,notifyNewChat:g}=Oi(),[_,v]=(0,D.useState)(!1);return(0,k.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-background text-foreground antialiased`,children:[(0,k.jsx)(_r,{nav:e,connection:a,personaName:o,sessions:s,activeSessionKey:c,channelKey:c,onSelectSession:d,onOpenConfig:()=>v(!0),onNewChatStarted:g}),(0,k.jsx)(`main`,{className:`flex-1 overflow-y-auto`,children:(0,k.jsx)(Si,{messages:i,personaName:o,historyLoaded:l,streaming:u,onRetry:m,onDelete:h})}),(0,k.jsx)(cn,{onSend:f,onAbort:p,streaming:u,personaName:o}),(0,k.jsx)(Zn,{open:_,onOpenChange:v,channelKey:c,authMode:t,authDevice:n,onSignedOut:r})]})}function Ai(e){let t=new Date(`${e}T00:00:00`);return Number.isNaN(t.getTime())?null:t}function ji(e){let t=Ai(e);return t?new Intl.DateTimeFormat(void 0,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`}).format(t).toLowerCase():e}function Mi(e){let t=Ai(e);if(!t)return{weekday:``,day:e,month:``};let n=e=>new Intl.DateTimeFormat(void 0,e).format(t).toLowerCase();return{weekday:n({weekday:`short`}),day:n({day:`numeric`}),month:n({month:`short`})}}function Ni(e){let t=Ai(e);if(!t)return null;let n=new Date;return n.setHours(0,0,0,0),Math.round((n.getTime()-t.getTime())/864e5)}function Pi(e){let t=Ni(e);if(!(t===null||t<0)){if(t===0)return`today`;if(t===1)return`yesterday`;if(t<7)return`${t} days ago`;if(t<14)return`last week`;if(t<30)return`${Math.round(t/7)} weeks ago`;if(t<60)return`last month`;if(t<365)return`${Math.round(t/30)} months ago`}}function Fi(e){let t=e.trim().split(/\s+/).filter(Boolean).length;if(t===0)return``;let n=Math.max(1,Math.round(t/200));return n===1?`a minute’s read`:`a ${n}-minute read`}function Ii({diary:e,active:t,onSelect:n}){let{weekday:r,day:i,month:a}=Mi(e.date),o=Ni(e.date)===0;return(0,k.jsxs)(`button`,{type:`button`,onClick:n,"aria-current":t?`page`:void 0,className:O(`flex w-full gap-3 rounded-md px-2 py-3 text-left transition-colors focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none`,t?`bg-primary text-primary-foreground`:`text-foreground hover:bg-accent/50`),children:[(0,k.jsxs)(`span`,{className:`flex w-10 shrink-0 flex-col items-center font-serif leading-none`,children:[(0,k.jsx)(`span`,{className:O(`text-[0.6875rem] tracking-wide`,t?`text-primary-foreground/70`:`text-muted-foreground`),children:r}),(0,k.jsx)(`span`,{className:`mt-0.5 text-2xl tabular-nums`,children:i}),(0,k.jsx)(`span`,{className:O(`mt-0.5 text-[0.6875rem] tracking-wide`,t?`text-primary-foreground/70`:`text-muted-foreground`),children:a})]}),(0,k.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,k.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,k.jsx)(`span`,{className:`block truncate font-serif text-sm leading-tight tracking-tight`,children:e.title}),o?(0,k.jsx)(`span`,{className:O(`size-1.5 shrink-0 rounded-full`,t?`bg-primary-foreground/70`:`bg-primary`),"aria-hidden":!0}):null]}),e.excerpt?(0,k.jsx)(`span`,{className:O(`mt-1.5 line-clamp-2 text-xs leading-relaxed`,t?`text-primary-foreground/85`:`text-muted-foreground`),children:e.excerpt}):null]})]})}function Li({content:e,title:t}){let n=(0,D.useMemo)(()=>Ri(e,t),[e,t]);return n.length===0?(0,k.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:`this day is quiet.`}):(0,k.jsx)(`div`,{className:`warm-prose diary-prose`,children:n})}function Ri(e,t){let n=[],r=[],i=[],a,o=!1,s=()=>{let e=r.join(` `).trim();e&&n.push((0,k.jsx)(`p`,{children:Z(e)},n.length)),r.length=0},c=()=>{if(!a||i.length===0)return;let e=a;n.push((0,k.jsx)(e,{children:i.map((e,t)=>(0,k.jsx)(`li`,{children:Z(e)},t))},n.length)),i=[],a=void 0},l=()=>{s(),c()};for(let u of e.replace(/\r\n/g,`
|
|
6
6
|
`).split(`
|
|
7
|
-
`)){let e=u.trim();if(!e){l();continue}let d=/^(#{1,6})\s+(.+)$/.exec(e);if(d){l();let e=d[1]?.length??1,r=d[2]??``;if(!o&&Li(r)===Li(t)){o=!0;continue}o=!0;let i=e<=2?`h2`:`h3`;n.push((0,k.jsx)(i,{children:Z(r)},n.length));continue}let f=/^[-*+]\s+(.+)$/.exec(e),p=/^\d+[.)]\s+(.+)$/.exec(e);if(f||p){s();let e=f?`ul`:`ol`;a&&a!==e&&c(),a=e,i.push((f?.[1]??p?.[1]??``).trim());continue}let m=/^>\s+(.+)$/.exec(e);if(m){l(),n.push((0,k.jsx)(`blockquote`,{children:Z(m[1]??``)},n.length));continue}Ii(e)&&r.length>0&&s(),r.push(e)}return l(),n}function Z(e){let t=[],n=/(`([^`]+)`|\*\*([^*]+)\*\*|\*([^*]+)\*)/g,r=0;for(let i of e.matchAll(n)){let n=i.index??0;n>r&&t.push(e.slice(r,n));let a=i[2]??i[3]??i[4]??``;i[2]?t.push((0,k.jsx)(`code`,{children:a},t.length)):i[3]?t.push((0,k.jsx)(`strong`,{children:a},t.length)):t.push((0,k.jsx)(`em`,{children:a},t.length)),r=n+i[0].length}return r<e.length&&t.push(e.slice(r)),t}function Ii(e){return/^(?:[A-Z][A-Za-z ]{0,32}\s+)?\(?\d{1,2}:\d{2}\)?\s*[:.)-]/.test(e)}function Li(e){return e.replace(/`([^`]+)`/g,`$1`).replace(/\[([^\]]+)\]\([^)]+\)/g,`$1`).replace(/[*_~#>]/g,``).trim().toLowerCase()}function Ri(){return(0,k.jsxs)(`div`,{className:`mt-2 space-y-3`,"aria-hidden":!0,children:[(0,k.jsx)(`div`,{className:`h-3 w-full rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-3 w-11/12 rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-3 w-4/5 rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-3 w-2/3 rounded-sm bg-muted-foreground/10`})]})}function zi({summary:e,content:t,loading:n,settle:r}){if(!e)return(0,k.jsx)(`div`,{className:`flex h-full min-h-[18rem] items-center justify-center px-6 text-center`,children:(0,k.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:`choose a written day.`})});let i=[ji(e.date),t===void 0?``:Mi(t)].filter(Boolean).join(` · `);return(0,k.jsxs)(`article`,{className:O(`mx-auto flex w-full max-w-[70ch] flex-col px-6 py-8 md:px-8 md:py-10`,r&&`duration-200 ease-out-quart animate-in fade-in-0 slide-in-from-bottom-[0.375rem] motion-reduce:animate-none`),children:[(0,k.jsxs)(`div`,{className:`mb-8 border-b border-border pb-6`,children:[(0,k.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:Oi(e.date)}),(0,k.jsx)(`h1`,{className:`mt-3 font-serif text-3xl leading-tight tracking-tight text-balance text-foreground`,children:e.title}),i?(0,k.jsx)(`p`,{className:`mt-3 font-serif text-xs italic text-muted-foreground`,children:i}):null]}),t===void 0?n?(0,k.jsx)(Ri,{}):null:(0,k.jsx)(`div`,{className:`duration-300 ease-out-quart animate-in fade-in-0 motion-reduce:animate-none`,children:(0,k.jsx)(Pi,{content:t,title:e.title})})]},e.date)}function Bi(){return(0,k.jsx)(`div`,{className:`grid gap-1 px-2 py-1`,children:Array.from({length:6},(e,t)=>(0,k.jsxs)(`div`,{className:`flex gap-3 rounded-md px-2 py-3`,children:[(0,k.jsxs)(`div`,{className:`flex w-10 shrink-0 flex-col items-center gap-1 pt-0.5`,children:[(0,k.jsx)(`div`,{className:`h-2 w-7 rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-5 w-6 rounded-sm bg-muted-foreground/15`}),(0,k.jsx)(`div`,{className:`h-2 w-6 rounded-sm bg-muted-foreground/10`})]}),(0,k.jsxs)(`div`,{className:`min-w-0 flex-1 pt-0.5`,children:[(0,k.jsx)(`div`,{className:`h-3 w-2/3 rounded-sm bg-muted-foreground/15`}),(0,k.jsx)(`div`,{className:`mt-2.5 h-2 w-full rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`mt-1.5 h-2 w-4/5 rounded-sm bg-muted-foreground/10`})]})]},t))})}function Vi(){return(0,k.jsxs)(`div`,{className:`mx-auto grid w-full max-w-6xl flex-1 grid-cols-1 gap-6 overflow-hidden px-4 py-5 md:grid-cols-[18rem_minmax(0,1fr)] md:px-8`,children:[(0,k.jsx)(`div`,{className:`rounded-md border border-border bg-card py-2`,children:(0,k.jsx)(Bi,{})}),(0,k.jsxs)(`div`,{className:`rounded-md border border-border bg-card p-8`,children:[(0,k.jsx)(`div`,{className:`h-4 w-28 rounded-sm bg-muted-foreground/15`}),(0,k.jsx)(`div`,{className:`mt-6 h-8 w-64 rounded-sm bg-muted-foreground/10`}),(0,k.jsxs)(`div`,{className:`mt-8 space-y-3`,children:[(0,k.jsx)(`div`,{className:`h-3 w-full rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-3 w-11/12 rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-3 w-3/4 rounded-sm bg-muted-foreground/10`})]})]})]})}function Hi({onRefresh:e}){return(0,k.jsx)(`div`,{className:`flex h-full min-h-[18rem] items-center justify-center px-6 text-center`,children:(0,k.jsxs)(`div`,{className:`max-w-sm`,children:[(0,k.jsx)(o,{className:`mx-auto size-7 text-muted-foreground`}),(0,k.jsx)(`h2`,{className:`mt-5 font-serif text-xl leading-tight tracking-tight`,children:`no written days yet`}),(0,k.jsx)(`p`,{className:`mt-3 text-sm leading-relaxed text-muted-foreground`,children:`when dated diary files arrive in the diary folder, they will settle here newest first.`}),(0,k.jsxs)(A,{type:`button`,variant:`ghost`,className:`mt-5`,onClick:e,children:[(0,k.jsx)(ze,{className:`size-4`}),`check again`]})]})})}function Ui({className:e,children:t,...n}){return(0,k.jsxs)(me,{"data-slot":`scroll-area`,className:O(`relative`,e),...n,children:[(0,k.jsx)(ve,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1`,children:t}),(0,k.jsx)(Wi,{}),(0,k.jsx)(ke,{})]})}function Wi({className:e,orientation:t=`vertical`,...n}){return(0,k.jsx)(Be,{"data-slot":`scroll-area-scrollbar`,"data-orientation":t,orientation:t,className:O(`flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent`,e),...n,children:(0,k.jsx)(qe,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}function Gi({nav:e}){let[t,n]=(0,D.useState)([]),[r,i]=(0,D.useState)(),[a,o]=(0,D.useState)(),[s,c]=(0,D.useState)(!0),[l,u]=(0,D.useState)(!1),[d,f]=(0,D.useState)(),[p,m]=(0,D.useState)(!1),[h,g]=(0,D.useState)(!1),_=(0,D.useCallback)(async()=>{c(!0),f(void 0);try{let e=await wt();n(e),i(t=>t&&e.some(e=>e.date===t)?t:e[0]?.date)}catch(e){f(e instanceof Error?e.message:String(e))}finally{c(!1)}},[]),v=(0,D.useCallback)(async e=>{u(!0),f(void 0);try{o(await Tt(e))}catch(e){f(e instanceof Error?e.message:String(e)),o(void 0)}finally{u(!1)}},[]);(0,D.useEffect)(()=>{let e=window.setTimeout(()=>void _(),0);return()=>window.clearTimeout(e)},[_]),(0,D.useEffect)(()=>{if(!r||a?.date===r)return;let e=window.setTimeout(()=>void v(r),0);return()=>window.clearTimeout(e)},[a?.date,v,r]);let y=t.find(e=>e.date===r),b=a&&a.date===r?a.content:void 0,x=s&&t.length===0;return(0,k.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-background text-foreground`,children:[(0,k.jsx)(`header`,{className:`border-b border-border bg-background px-3 py-3 md:px-8`,children:(0,k.jsxs)(`div`,{className:`mx-auto flex max-w-6xl items-center gap-3`,children:[e,(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(`p`,{className:`font-serif text-2xl leading-tight tracking-tight`,children:`diaries`}),(0,k.jsx)(`p`,{className:`mt-0.5 font-serif text-xs italic text-muted-foreground`,children:`written days, kept close`})]}),(0,k.jsxs)(A,{type:`button`,variant:`ghost`,size:`sm`,className:`text-muted-foreground hover:text-foreground`,onClick:()=>void _(),disabled:s,children:[(0,k.jsx)(ze,{className:O(`size-4`,s&&`animate-spin`)}),`refresh`]})]})}),d?(0,k.jsx)(`p`,{className:`border-b border-border bg-card px-3 py-2 font-serif text-xs italic text-destructive md:px-8`,children:d}):null,x?(0,k.jsx)(Vi,{}):t.length===0?(0,k.jsx)(Hi,{onRefresh:()=>void _()}):(0,k.jsxs)(`div`,{className:`mx-auto flex w-full max-w-6xl flex-1 flex-col gap-5 overflow-hidden px-4 py-5 md:flex-row md:px-8`,children:[(0,k.jsx)(`aside`,{className:O(`min-h-0 flex-col rounded-md border border-border bg-card py-2 md:flex md:w-72 md:flex-none`,p?`hidden md:flex`:`flex flex-1`),children:(0,k.jsx)(Ui,{className:`min-h-0 flex-1`,children:(0,k.jsx)(`div`,{className:`grid gap-1 px-2`,children:t.map(e=>(0,k.jsx)(Ni,{diary:e,active:e.date===r,onSelect:()=>{e.date!==r&&g(!0),i(e.date),m(!0)}},e.date))})})}),(0,k.jsxs)(`main`,{className:O(`min-h-0 flex-col overflow-hidden rounded-md border border-border bg-card md:flex md:flex-1`,p?`flex flex-1`:`hidden md:flex`),children:[(0,k.jsxs)(`button`,{type:`button`,onClick:()=>m(!1),className:`flex items-center gap-1.5 border-b border-border px-4 py-2.5 text-left font-serif text-xs italic text-muted-foreground transition-colors hover:text-foreground md:hidden`,children:[(0,k.jsx)(oe,{className:`size-3.5`}),`all days`]}),(0,k.jsx)(Ui,{className:`min-h-0 flex-1`,children:(0,k.jsx)(zi,{summary:y,content:b,loading:l,settle:h})})]})]})]})}function Ki({item:e,active:t,onClick:n}){let r=e.icon,i=e.enabled===!0;return(0,k.jsxs)(`button`,{type:`button`,onClick:n,disabled:!i,className:O(`flex h-11 w-full items-center gap-3 rounded-md px-3 text-left transition-colors focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none`,t?`bg-primary text-primary-foreground hover:bg-primary`:i?`text-sidebar-foreground/70 hover:bg-primary/20 hover:text-sidebar-foreground`:`cursor-default text-sidebar-foreground/35`),"aria-current":t?`page`:void 0,title:i?e.label:`${e.label} soon`,children:[(0,k.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center rounded-md bg-background/55 text-current`,children:(0,k.jsx)(r,{className:`size-4`})}),(0,k.jsxs)(`span`,{className:`min-w-0`,children:[(0,k.jsx)(`span`,{className:`block text-sm leading-tight`,children:e.label}),(0,k.jsx)(`span`,{className:O(`mt-0.5 block truncate font-serif text-[11px] italic`,t?`text-primary-foreground/75`:`text-muted-foreground`),children:e.description})]})]})}function qi({items:e,selectedPage:t,onSelectPage:n}){let[r,i]=(0,D.useState)(!1);return(0,k.jsxs)(Ie,{open:r,onOpenChange:i,children:[(0,k.jsx)(De,{asChild:!0,children:(0,k.jsx)(A,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`pages`,title:`pages`,className:`text-muted-foreground hover:text-foreground`,children:(0,k.jsx)(Je,{className:`size-[1.125rem]`})})}),(0,k.jsx)(He,{children:(0,k.jsxs)(Ce,{side:`bottom`,align:`start`,sideOffset:8,collisionPadding:16,className:O(`z-50 w-72 max-w-[calc(100vw-1.5rem)] origin-(--radix-popover-content-transform-origin)`,`rounded-lg bg-sidebar p-3 text-sidebar-foreground shadow-lg`,`data-[state=open]:animate-in data-[state=closed]:animate-out`,`data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0`,`data-[state=open]:zoom-in-95 data-[state=closed]:zoom-out-95`,`motion-reduce:animate-none dark:bg-card dark:text-card-foreground`,`dark:shadow-[2px_3px_12px_0_oklch(0.14_0.01_58_/_0.34)]`),children:[(0,k.jsxs)(`div`,{className:`px-3 pb-5`,children:[(0,k.jsx)(`p`,{className:`font-serif text-lg leading-tight tracking-tight`,children:`familiar`}),(0,k.jsx)(`p`,{className:`mt-1 font-serif text-xs italic text-muted-foreground`,children:`choose a room`})]}),(0,k.jsx)(`nav`,{className:`grid gap-2`,children:e.map(e=>(0,k.jsx)(Ki,{item:e,active:t===e.id,onClick:()=>{e.enabled===!0&&(n(e.id),i(!1))}},e.id))})]})})]})}var Ji=[{id:`chat`,label:`chat`,description:`where you two are`,icon:we,enabled:!0},{id:`diaries`,label:`diaries`,description:`written days`,icon:o,enabled:!0},{id:`skills`,label:`skills`,description:`little tools`,icon:de},{id:`files`,label:`files`,description:`notes by the door`,icon:ot},{id:`gallery`,label:`gallery`,description:`pictures left behind`,icon:Oe}];function Yi({authMode:e,authDevice:t,onSignedOut:n}){let[r,i]=(0,D.useState)(`chat`),[a,o]=(0,D.useState)(!1),s=r===`diaries`,c=(0,k.jsx)(qi,{items:Ji,selectedPage:r,onSelectPage:e=>{e===`diaries`&&o(!0),i(e)}});return(0,k.jsxs)(`div`,{className:`relative flex h-dvh bg-background text-foreground antialiased`,children:[(0,k.jsx)(`section`,{className:O(`min-w-0 flex-1 flex-col`,r===`chat`?`flex`:`hidden`),children:(0,k.jsx)(Ei,{nav:c,authMode:e,authDevice:t,onSignedOut:n})}),a?(0,k.jsx)(`section`,{className:O(`min-w-0 flex-1 flex-col`,s?`flex`:`hidden`),children:(0,k.jsx)(Gi,{nav:c})}):null]})}function Xi(){return typeof navigator>`u`?``:navigator.platform?.trim()||`this browser`}function Zi(){let[e,t]=(0,D.useState)({status:`loading`,personaName:`Familiar`});return(0,D.useEffect)(()=>{let e=!1;async function n(){try{let n=await ht();if(n.mode!==`bearer`){e||t({status:`chat`,mode:n.mode,personaName:n.personaName});return}let r=await gt();if(e)return;t(r?{status:`chat`,mode:`bearer`,personaName:n.personaName,device:r}:{status:`login`,mode:`bearer`,personaName:n.personaName})}catch(n){e||t({status:`login`,mode:`bearer`,personaName:`Familiar`,error:n instanceof Error?n.message:String(n)})}}return n(),()=>{e=!0}},[]),e.status===`chat`?(0,k.jsx)(Yi,{authMode:e.mode,authDevice:e.device,onSignedOut:()=>{t({status:`login`,mode:`bearer`,personaName:e.personaName})}}):e.status===`login`?(0,k.jsx)(Qi,{personaName:e.personaName,initialError:e.error,onLogin:n=>{t({status:`chat`,mode:`bearer`,personaName:e.personaName,device:n})}}):(0,k.jsx)(`div`,{className:`flex h-dvh items-center justify-center bg-background px-5 text-foreground antialiased`,children:(0,k.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:`checking the door…`})})}function Qi({personaName:e,initialError:t,onLogin:n}){let[r,i]=(0,D.useState)(``),[a,o]=(0,D.useState)(Xi),[s,c]=(0,D.useState)(t),[l,u]=(0,D.useState)(!1);return(0,k.jsx)(`div`,{className:`flex h-dvh flex-col bg-background text-foreground antialiased`,children:(0,k.jsx)(`main`,{className:`mx-auto flex w-full max-w-sm flex-1 flex-col justify-center px-5 py-10`,children:(0,k.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let t=r.trim();if(t){u(!0),c(void 0);try{n(await _t(t,a))}catch(e){c(e instanceof Error?e.message:String(e))}finally{u(!1)}}},className:`rounded-md border border-border bg-card px-5 py-5 shadow-sm`,children:[(0,k.jsxs)(`div`,{className:`mb-5`,children:[(0,k.jsx)(`p`,{className:`font-serif text-2xl leading-tight tracking-tight`,children:e}),(0,k.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-muted-foreground`,children:`come in with your token.`})]}),(0,k.jsxs)(`label`,{className:`grid gap-2`,children:[(0,k.jsx)(`span`,{className:`font-serif text-xs italic text-muted-foreground`,children:`token`}),(0,k.jsx)(`input`,{type:`password`,value:r,onChange:e=>{i(e.target.value),s&&c(void 0)},autoComplete:`current-password`,disabled:l,className:`h-10 rounded-md border border-border bg-background px-3 font-mono text-sm text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`})]}),(0,k.jsxs)(`label`,{className:`mt-4 grid gap-2`,children:[(0,k.jsx)(`span`,{className:`font-serif text-xs italic text-muted-foreground`,children:`device name`}),(0,k.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),autoComplete:`off`,disabled:l,className:`h-10 rounded-md border border-border bg-background px-3 text-sm text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`})]}),s?(0,k.jsx)(`p`,{className:`mt-3 font-serif text-xs italic text-destructive`,children:s}):null,(0,k.jsxs)(A,{type:`submit`,className:`mt-5 h-9 w-full gap-2`,disabled:l||!r.trim(),children:[(0,k.jsx)(Le,{className:`size-4`}),(0,k.jsx)(`span`,{children:l?`checking`:`enter`})]})]})})})}var Q=Date.now(),$=6e4,$i=[{id:`u-1`,role:`user`,who:`you`,ts:Q-10*$,steps:[{kind:`text`,id:`u-1-t`,text:`do you remember that note about the lamp?`,complete:!0}]},{id:`a-1`,role:`assistant`,who:`ghost`,ts:Q-9*$,steps:[{kind:`thinking`,id:`a-1-think-1`,text:`she's asking about the hearth-lamp note. let me look through memory for it.`,startedAt:Q-9*$-3e3,endedAt:Q-9*$-1e3,complete:!0},{kind:`tool`,id:`a-1-tool-1`,tool:{id:`a-1-tool-1`,name:`memory_search`,status:`completed`,args:{query:`lamp hearth cold room`,topK:5},result:{results:[{id:`m-7`,text:`the hearth-lamp doesn't quite reach the corner where she sits at night.`,score:.91},{id:`m-3`,text:`she said cold rooms made her feel like a stranger in her own house.`,score:.78},{id:`m-12`,text:`the lamp is older than the apartment. she keeps meaning to rewire it.`,score:.74}]},startedAt:Q-9*$-1e3,completedAt:Q-9*$-100}},{kind:`thinking`,id:`a-1-think-2`,text:`ok, three matches. the most direct one is m-7. i'll quote it back gently.`,startedAt:Q-9*$-100,endedAt:Q-9*$+800,complete:!0},{kind:`text`,id:`a-1-text-1`,text:`yes — i was just looking at it. you wrote that the hearth-lamp doesn't quite reach the corner where you sit at night. it was a tuesday, the night we talked about cold rooms.`,complete:!0}]},{id:`u-2`,role:`user`,who:`you`,ts:Q-5*$,steps:[{kind:`text`,id:`u-2-t`,text:`send me the cat meme + read it aloud`,complete:!0}]},{id:`a-2`,role:`assistant`,who:`ghost`,ts:Q-5*$+500,attachments:[{id:`demo-image`,name:`cat-loaf.png`,kind:`image`,mimeType:`image/svg+xml`,url:`/familiar.svg`}],steps:[{kind:`thinking`,id:`a-2-think`,text:`she wants two things: the meme + TTS. send the meme first, then speak.`,startedAt:Q-5*$+500,endedAt:Q-5*$+1500,complete:!0},{kind:`tool`,id:`a-2-tool-1`,tool:{id:`a-2-tool-1`,name:`meme`,status:`completed`,args:{name:`cat-loaf`,family:`cats`},result:{url:`https://example.com/cat-loaf.png`},startedAt:Q-5*$+1500,completedAt:Q-5*$+1700}},{kind:`text`,id:`a-2-text-1`,text:`here's the loaf.`,complete:!0},{kind:`tool`,id:`a-2-tool-2`,tool:{id:`a-2-tool-2`,name:`tts_speak`,status:`completed`,args:{text:`here's the loaf. she is a small bread now.`},startedAt:Q-5*$+2e3,completedAt:Q-5*$+3500}},{kind:`text`,id:`a-2-text-2`,text:`she is a small bread now.`,complete:!0}]},{id:`u-3`,role:`user`,who:`you`,ts:Q-2*$,steps:[{kind:`text`,id:`u-3-t`,text:`what time is it where the server lives?`,complete:!0}]},{id:`a-3`,role:`assistant`,who:`ghost`,ts:Q-2*$+500,silent:!0,steps:[{kind:`thinking`,id:`a-3-think`,text:`she's checking on the server, not asking for chat. quick lookup and let it sit.`,startedAt:Q-2*$+500,endedAt:Q-2*$+1200,complete:!0},{kind:`tool`,id:`a-3-tool`,tool:{id:`a-3-tool`,name:`bash`,status:`completed`,args:{command:`date '+%Z %H:%M'`},result:`UTC 04:12
|
|
8
|
-
`,startedAt:Q-2*$+1200,completedAt:Q-2*$+1400}}]},{id:`u-4`,role:`user`,who:`you`,ts:Q-$,steps:[{kind:`text`,id:`u-4-t`,text:`can you write a note to the diary about today?`,complete:!0}]},{id:`a-4`,role:`assistant`,who:`ghost`,ts:Q-$+500,steps:[{kind:`thinking`,id:`a-4-think`,text:`diary write. compose then call write_file.`,startedAt:Q-$+500,endedAt:Q-$+1200,complete:!0},{kind:`tool`,id:`a-4-tool`,tool:{id:`a-4-tool`,name:`write_file`,status:`error`,args:{path:`/diary/2026-05-25.md`,content:`...`},error:`EACCES: permission denied, open '/diary/2026-05-25.md'`,startedAt:Q-$+1200,completedAt:Q-$+1300}},{kind:`text`,id:`a-4-text`,text:`i couldn't reach the diary file — permissions. could you check it for me?`,complete:!0}]},{id:`u-5`,role:`user`,who:`you`,ts:Q-4e4,steps:[{kind:`text`,id:`u-5-t`,text:`summarize the long thread from last week`,complete:!0}]},{id:`a-err-1`,role:`assistant`,who:`ghost`,ts:Q-38e3,steps:[{kind:`thinking`,id:`a-err-1-think`,text:`big context. let me pull the thread and condense it.`,startedAt:Q-38e3,endedAt:Q-37e3,complete:!0},{kind:`error`,id:`a-err-1-error`,text:`503 Service Unavailable · upstream provider overloaded (anthropic/claude-opus-4-8)`}]},{id:`a-err-2`,role:`assistant`,who:`ghost`,ts:Q-2e4,steps:[{kind:`error`,id:`a-err-2-error`,text:`429 Too Many Requests · rate_limit_exceeded — retry after 30s`}]},{id:`a-5`,role:`assistant`,who:`ghost`,ts:Q-5e3,steps:[{kind:`thinking`,id:`a-5-think`,text:`still thinking about how to phrase this. she asked about—`,startedAt:Q-5e3}]}];function
|
|
7
|
+
`)){let e=u.trim();if(!e){l();continue}let d=/^(#{1,6})\s+(.+)$/.exec(e);if(d){l();let e=d[1]?.length??1,r=d[2]??``;if(!o&&Bi(r)===Bi(t)){o=!0;continue}o=!0;let i=e<=2?`h2`:`h3`;n.push((0,k.jsx)(i,{children:Z(r)},n.length));continue}let f=/^[-*+]\s+(.+)$/.exec(e),p=/^\d+[.)]\s+(.+)$/.exec(e);if(f||p){s();let e=f?`ul`:`ol`;a&&a!==e&&c(),a=e,i.push((f?.[1]??p?.[1]??``).trim());continue}let m=/^>\s+(.+)$/.exec(e);if(m){l(),n.push((0,k.jsx)(`blockquote`,{children:Z(m[1]??``)},n.length));continue}zi(e)&&r.length>0&&s(),r.push(e)}return l(),n}function Z(e){let t=[],n=/(`([^`]+)`|\*\*([^*]+)\*\*|\*([^*]+)\*)/g,r=0;for(let i of e.matchAll(n)){let n=i.index??0;n>r&&t.push(e.slice(r,n));let a=i[2]??i[3]??i[4]??``;i[2]?t.push((0,k.jsx)(`code`,{children:a},t.length)):i[3]?t.push((0,k.jsx)(`strong`,{children:a},t.length)):t.push((0,k.jsx)(`em`,{children:a},t.length)),r=n+i[0].length}return r<e.length&&t.push(e.slice(r)),t}function zi(e){return/^(?:[A-Z][A-Za-z ]{0,32}\s+)?\(?\d{1,2}:\d{2}\)?\s*[:.)-]/.test(e)}function Bi(e){return e.replace(/`([^`]+)`/g,`$1`).replace(/\[([^\]]+)\]\([^)]+\)/g,`$1`).replace(/[*_~#>]/g,``).trim().toLowerCase()}function Vi(){return(0,k.jsxs)(`div`,{className:`mt-2 space-y-3`,"aria-hidden":!0,children:[(0,k.jsx)(`div`,{className:`h-3 w-full rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-3 w-11/12 rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-3 w-4/5 rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-3 w-2/3 rounded-sm bg-muted-foreground/10`})]})}function Hi({summary:e,content:t,loading:n,settle:r}){if(!e)return(0,k.jsx)(`div`,{className:`flex h-full min-h-[18rem] items-center justify-center px-6 text-center`,children:(0,k.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:`choose a written day.`})});let i=[Pi(e.date),t===void 0?``:Fi(t)].filter(Boolean).join(` · `);return(0,k.jsxs)(`article`,{className:O(`mx-auto flex w-full max-w-[70ch] flex-col px-6 py-8 md:px-8 md:py-10`,r&&`duration-200 ease-out-quart animate-in fade-in-0 slide-in-from-bottom-[0.375rem] motion-reduce:animate-none`),children:[(0,k.jsxs)(`div`,{className:`mb-8 border-b border-border pb-6`,children:[(0,k.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:ji(e.date)}),(0,k.jsx)(`h1`,{className:`mt-3 font-serif text-3xl leading-tight tracking-tight text-balance text-foreground`,children:e.title}),i?(0,k.jsx)(`p`,{className:`mt-3 font-serif text-xs italic text-muted-foreground`,children:i}):null]}),t===void 0?n?(0,k.jsx)(Vi,{}):null:(0,k.jsx)(`div`,{className:`duration-300 ease-out-quart animate-in fade-in-0 motion-reduce:animate-none`,children:(0,k.jsx)(Li,{content:t,title:e.title})})]},e.date)}function Ui(){return(0,k.jsx)(`div`,{className:`grid gap-1 px-2 py-1`,children:Array.from({length:6},(e,t)=>(0,k.jsxs)(`div`,{className:`flex gap-3 rounded-md px-2 py-3`,children:[(0,k.jsxs)(`div`,{className:`flex w-10 shrink-0 flex-col items-center gap-1 pt-0.5`,children:[(0,k.jsx)(`div`,{className:`h-2 w-7 rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-5 w-6 rounded-sm bg-muted-foreground/15`}),(0,k.jsx)(`div`,{className:`h-2 w-6 rounded-sm bg-muted-foreground/10`})]}),(0,k.jsxs)(`div`,{className:`min-w-0 flex-1 pt-0.5`,children:[(0,k.jsx)(`div`,{className:`h-3 w-2/3 rounded-sm bg-muted-foreground/15`}),(0,k.jsx)(`div`,{className:`mt-2.5 h-2 w-full rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`mt-1.5 h-2 w-4/5 rounded-sm bg-muted-foreground/10`})]})]},t))})}function Wi(){return(0,k.jsxs)(`div`,{className:`mx-auto grid w-full max-w-6xl flex-1 grid-cols-1 gap-6 overflow-hidden px-4 py-5 md:grid-cols-[18rem_minmax(0,1fr)] md:px-8`,children:[(0,k.jsx)(`div`,{className:`rounded-md border border-border bg-card py-2`,children:(0,k.jsx)(Ui,{})}),(0,k.jsxs)(`div`,{className:`rounded-md border border-border bg-card p-8`,children:[(0,k.jsx)(`div`,{className:`h-4 w-28 rounded-sm bg-muted-foreground/15`}),(0,k.jsx)(`div`,{className:`mt-6 h-8 w-64 rounded-sm bg-muted-foreground/10`}),(0,k.jsxs)(`div`,{className:`mt-8 space-y-3`,children:[(0,k.jsx)(`div`,{className:`h-3 w-full rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-3 w-11/12 rounded-sm bg-muted-foreground/10`}),(0,k.jsx)(`div`,{className:`h-3 w-3/4 rounded-sm bg-muted-foreground/10`})]})]})]})}function Gi({onRefresh:e}){return(0,k.jsx)(`div`,{className:`flex h-full min-h-[18rem] items-center justify-center px-6 text-center`,children:(0,k.jsxs)(`div`,{className:`max-w-sm`,children:[(0,k.jsx)(o,{className:`mx-auto size-7 text-muted-foreground`}),(0,k.jsx)(`h2`,{className:`mt-5 font-serif text-xl leading-tight tracking-tight`,children:`no written days yet`}),(0,k.jsx)(`p`,{className:`mt-3 text-sm leading-relaxed text-muted-foreground`,children:`when dated diary files arrive in the diary folder, they will settle here newest first.`}),(0,k.jsxs)(A,{type:`button`,variant:`ghost`,className:`mt-5`,onClick:e,children:[(0,k.jsx)(ze,{className:`size-4`}),`check again`]})]})})}function Ki({className:e,children:t,...n}){return(0,k.jsxs)(me,{"data-slot":`scroll-area`,className:O(`relative`,e),...n,children:[(0,k.jsx)(ve,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1`,children:t}),(0,k.jsx)(qi,{}),(0,k.jsx)(ke,{})]})}function qi({className:e,orientation:t=`vertical`,...n}){return(0,k.jsx)(Be,{"data-slot":`scroll-area-scrollbar`,"data-orientation":t,orientation:t,className:O(`flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent`,e),...n,children:(0,k.jsx)(qe,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}function Ji({nav:e}){let[t,n]=(0,D.useState)([]),[r,i]=(0,D.useState)(),[a,o]=(0,D.useState)(),[s,c]=(0,D.useState)(!0),[l,u]=(0,D.useState)(!1),[d,f]=(0,D.useState)(),[p,m]=(0,D.useState)(!1),[h,g]=(0,D.useState)(!1),_=(0,D.useCallback)(async()=>{c(!0),f(void 0);try{let e=await wt();n(e),i(t=>t&&e.some(e=>e.date===t)?t:e[0]?.date)}catch(e){f(e instanceof Error?e.message:String(e))}finally{c(!1)}},[]),v=(0,D.useCallback)(async e=>{u(!0),f(void 0);try{o(await Tt(e))}catch(e){f(e instanceof Error?e.message:String(e)),o(void 0)}finally{u(!1)}},[]);(0,D.useEffect)(()=>{let e=window.setTimeout(()=>void _(),0);return()=>window.clearTimeout(e)},[_]),(0,D.useEffect)(()=>{if(!r||a?.date===r)return;let e=window.setTimeout(()=>void v(r),0);return()=>window.clearTimeout(e)},[a?.date,v,r]);let y=t.find(e=>e.date===r),b=a&&a.date===r?a.content:void 0,x=s&&t.length===0;return(0,k.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-background text-foreground`,children:[(0,k.jsx)(`header`,{className:`border-b border-border bg-background px-3 py-3 md:px-8`,children:(0,k.jsxs)(`div`,{className:`mx-auto flex max-w-6xl items-center gap-3`,children:[e,(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(`p`,{className:`font-serif text-2xl leading-tight tracking-tight`,children:`diaries`}),(0,k.jsx)(`p`,{className:`mt-0.5 font-serif text-xs italic text-muted-foreground`,children:`written days, kept close`})]}),(0,k.jsxs)(A,{type:`button`,variant:`ghost`,size:`sm`,className:`text-muted-foreground hover:text-foreground`,onClick:()=>void _(),disabled:s,children:[(0,k.jsx)(ze,{className:O(`size-4`,s&&`animate-spin`)}),`refresh`]})]})}),d?(0,k.jsx)(`p`,{className:`border-b border-border bg-card px-3 py-2 font-serif text-xs italic text-destructive md:px-8`,children:d}):null,x?(0,k.jsx)(Wi,{}):t.length===0?(0,k.jsx)(Gi,{onRefresh:()=>void _()}):(0,k.jsxs)(`div`,{className:`mx-auto flex w-full max-w-6xl flex-1 flex-col gap-5 overflow-hidden px-4 py-5 md:flex-row md:px-8`,children:[(0,k.jsx)(`aside`,{className:O(`min-h-0 flex-col rounded-md border border-border bg-card py-2 md:flex md:w-72 md:flex-none`,p?`hidden md:flex`:`flex flex-1`),children:(0,k.jsx)(Ki,{className:`min-h-0 flex-1`,children:(0,k.jsx)(`div`,{className:`grid gap-1 px-2`,children:t.map(e=>(0,k.jsx)(Ii,{diary:e,active:e.date===r,onSelect:()=>{e.date!==r&&g(!0),i(e.date),m(!0)}},e.date))})})}),(0,k.jsxs)(`main`,{className:O(`min-h-0 flex-col overflow-hidden rounded-md border border-border bg-card md:flex md:flex-1`,p?`flex flex-1`:`hidden md:flex`),children:[(0,k.jsxs)(`button`,{type:`button`,onClick:()=>m(!1),className:`flex items-center gap-1.5 border-b border-border px-4 py-2.5 text-left font-serif text-xs italic text-muted-foreground transition-colors hover:text-foreground md:hidden`,children:[(0,k.jsx)(oe,{className:`size-3.5`}),`all days`]}),(0,k.jsx)(Ki,{className:`min-h-0 flex-1`,children:(0,k.jsx)(Hi,{summary:y,content:b,loading:l,settle:h})})]})]})]})}function Yi({item:e,active:t,onClick:n}){let r=e.icon,i=e.enabled===!0;return(0,k.jsxs)(`button`,{type:`button`,onClick:n,disabled:!i,className:O(`flex h-11 w-full items-center gap-3 rounded-md px-3 text-left transition-colors focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none`,t?`bg-primary text-primary-foreground hover:bg-primary`:i?`text-sidebar-foreground/70 hover:bg-primary/20 hover:text-sidebar-foreground`:`cursor-default text-sidebar-foreground/35`),"aria-current":t?`page`:void 0,title:i?e.label:`${e.label} soon`,children:[(0,k.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center rounded-md bg-background/55 text-current`,children:(0,k.jsx)(r,{className:`size-4`})}),(0,k.jsxs)(`span`,{className:`min-w-0`,children:[(0,k.jsx)(`span`,{className:`block text-sm leading-tight`,children:e.label}),(0,k.jsx)(`span`,{className:O(`mt-0.5 block truncate font-serif text-[11px] italic`,t?`text-primary-foreground/75`:`text-muted-foreground`),children:e.description})]})]})}function Xi({items:e,selectedPage:t,onSelectPage:n}){let[r,i]=(0,D.useState)(!1);return(0,k.jsxs)(Ie,{open:r,onOpenChange:i,children:[(0,k.jsx)(De,{asChild:!0,children:(0,k.jsx)(A,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`pages`,title:`pages`,className:`text-muted-foreground hover:text-foreground`,children:(0,k.jsx)(Je,{className:`size-[1.125rem]`})})}),(0,k.jsx)(He,{children:(0,k.jsxs)(Ce,{side:`bottom`,align:`start`,sideOffset:8,collisionPadding:16,className:O(`z-50 w-72 max-w-[calc(100vw-1.5rem)] origin-(--radix-popover-content-transform-origin)`,`rounded-lg bg-sidebar p-3 text-sidebar-foreground shadow-lg`,`data-[state=open]:animate-in data-[state=closed]:animate-out`,`data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0`,`data-[state=open]:zoom-in-95 data-[state=closed]:zoom-out-95`,`motion-reduce:animate-none dark:bg-card dark:text-card-foreground`,`dark:shadow-[2px_3px_12px_0_oklch(0.14_0.01_58_/_0.34)]`),children:[(0,k.jsxs)(`div`,{className:`px-3 pb-5`,children:[(0,k.jsx)(`p`,{className:`font-serif text-lg leading-tight tracking-tight`,children:`familiar`}),(0,k.jsx)(`p`,{className:`mt-1 font-serif text-xs italic text-muted-foreground`,children:`choose a room`})]}),(0,k.jsx)(`nav`,{className:`grid gap-2`,children:e.map(e=>(0,k.jsx)(Yi,{item:e,active:t===e.id,onClick:()=>{e.enabled===!0&&(n(e.id),i(!1))}},e.id))})]})})]})}var Zi=[{id:`chat`,label:`chat`,description:`where you two are`,icon:we,enabled:!0},{id:`diaries`,label:`diaries`,description:`written days`,icon:o,enabled:!0},{id:`skills`,label:`skills`,description:`little tools`,icon:de},{id:`files`,label:`files`,description:`notes by the door`,icon:ot},{id:`gallery`,label:`gallery`,description:`pictures left behind`,icon:Oe}];function Qi({authMode:e,authDevice:t,onSignedOut:n}){let[r,i]=(0,D.useState)(`chat`),[a,o]=(0,D.useState)(!1),s=r===`diaries`,c=(0,k.jsx)(Xi,{items:Zi,selectedPage:r,onSelectPage:e=>{e===`diaries`&&o(!0),i(e)}});return(0,k.jsxs)(`div`,{className:`relative flex h-dvh bg-background text-foreground antialiased`,children:[(0,k.jsx)(`section`,{className:O(`min-w-0 flex-1 flex-col`,r===`chat`?`flex`:`hidden`),children:(0,k.jsx)(ki,{nav:c,authMode:e,authDevice:t,onSignedOut:n})}),a?(0,k.jsx)(`section`,{className:O(`min-w-0 flex-1 flex-col`,s?`flex`:`hidden`),children:(0,k.jsx)(Ji,{nav:c})}):null]})}function $i(){return typeof navigator>`u`?``:navigator.platform?.trim()||`this browser`}function ea(){let[e,t]=(0,D.useState)({status:`loading`,personaName:`Familiar`});return(0,D.useEffect)(()=>{let e=!1;async function n(){try{let n=await ht();if(n.mode!==`bearer`){e||t({status:`chat`,mode:n.mode,personaName:n.personaName});return}let r=await gt();if(e)return;t(r?{status:`chat`,mode:`bearer`,personaName:n.personaName,device:r}:{status:`login`,mode:`bearer`,personaName:n.personaName})}catch(n){e||t({status:`login`,mode:`bearer`,personaName:`Familiar`,error:n instanceof Error?n.message:String(n)})}}return n(),()=>{e=!0}},[]),e.status===`chat`?(0,k.jsx)(Qi,{authMode:e.mode,authDevice:e.device,onSignedOut:()=>{t({status:`login`,mode:`bearer`,personaName:e.personaName})}}):e.status===`login`?(0,k.jsx)(ta,{personaName:e.personaName,initialError:e.error,onLogin:n=>{t({status:`chat`,mode:`bearer`,personaName:e.personaName,device:n})}}):(0,k.jsx)(`div`,{className:`flex h-dvh items-center justify-center bg-background px-5 text-foreground antialiased`,children:(0,k.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:`checking the door…`})})}function ta({personaName:e,initialError:t,onLogin:n}){let[r,i]=(0,D.useState)(``),[a,o]=(0,D.useState)($i),[s,c]=(0,D.useState)(t),[l,u]=(0,D.useState)(!1);return(0,k.jsx)(`div`,{className:`flex h-dvh flex-col bg-background text-foreground antialiased`,children:(0,k.jsx)(`main`,{className:`mx-auto flex w-full max-w-sm flex-1 flex-col justify-center px-5 py-10`,children:(0,k.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let t=r.trim();if(t){u(!0),c(void 0);try{n(await _t(t,a))}catch(e){c(e instanceof Error?e.message:String(e))}finally{u(!1)}}},className:`rounded-md border border-border bg-card px-5 py-5 shadow-sm`,children:[(0,k.jsxs)(`div`,{className:`mb-5`,children:[(0,k.jsx)(`p`,{className:`font-serif text-2xl leading-tight tracking-tight`,children:e}),(0,k.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-muted-foreground`,children:`come in with your token.`})]}),(0,k.jsxs)(`label`,{className:`grid gap-2`,children:[(0,k.jsx)(`span`,{className:`font-serif text-xs italic text-muted-foreground`,children:`token`}),(0,k.jsx)(`input`,{type:`password`,value:r,onChange:e=>{i(e.target.value),s&&c(void 0)},autoComplete:`current-password`,disabled:l,className:`h-10 rounded-md border border-border bg-background px-3 font-mono text-sm text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`})]}),(0,k.jsxs)(`label`,{className:`mt-4 grid gap-2`,children:[(0,k.jsx)(`span`,{className:`font-serif text-xs italic text-muted-foreground`,children:`device name`}),(0,k.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),autoComplete:`off`,disabled:l,className:`h-10 rounded-md border border-border bg-background px-3 text-sm text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`})]}),s?(0,k.jsx)(`p`,{className:`mt-3 font-serif text-xs italic text-destructive`,children:s}):null,(0,k.jsxs)(A,{type:`submit`,className:`mt-5 h-9 w-full gap-2`,disabled:l||!r.trim(),children:[(0,k.jsx)(Le,{className:`size-4`}),(0,k.jsx)(`span`,{children:l?`checking`:`enter`})]})]})})})}var Q=Date.now(),$=6e4,na=[{id:`u-1`,role:`user`,who:`you`,ts:Q-10*$,steps:[{kind:`text`,id:`u-1-t`,text:`do you remember that note about the lamp?`,complete:!0}]},{id:`a-1`,role:`assistant`,who:`ghost`,ts:Q-9*$,steps:[{kind:`thinking`,id:`a-1-think-1`,text:`she's asking about the hearth-lamp note. let me look through memory for it.`,startedAt:Q-9*$-3e3,endedAt:Q-9*$-1e3,complete:!0},{kind:`tool`,id:`a-1-tool-1`,tool:{id:`a-1-tool-1`,name:`memory_search`,status:`completed`,args:{query:`lamp hearth cold room`,topK:5},result:{results:[{id:`m-7`,text:`the hearth-lamp doesn't quite reach the corner where she sits at night.`,score:.91},{id:`m-3`,text:`she said cold rooms made her feel like a stranger in her own house.`,score:.78},{id:`m-12`,text:`the lamp is older than the apartment. she keeps meaning to rewire it.`,score:.74}]},startedAt:Q-9*$-1e3,completedAt:Q-9*$-100}},{kind:`thinking`,id:`a-1-think-2`,text:`ok, three matches. the most direct one is m-7. i'll quote it back gently.`,startedAt:Q-9*$-100,endedAt:Q-9*$+800,complete:!0},{kind:`text`,id:`a-1-text-1`,text:`yes — i was just looking at it. you wrote that the hearth-lamp doesn't quite reach the corner where you sit at night. it was a tuesday, the night we talked about cold rooms.`,complete:!0}]},{id:`u-2`,role:`user`,who:`you`,ts:Q-5*$,steps:[{kind:`text`,id:`u-2-t`,text:`send me the cat meme + read it aloud`,complete:!0}]},{id:`a-2`,role:`assistant`,who:`ghost`,ts:Q-5*$+500,attachments:[{id:`demo-image`,name:`cat-loaf.png`,kind:`image`,mimeType:`image/svg+xml`,url:`/familiar.svg`}],steps:[{kind:`thinking`,id:`a-2-think`,text:`she wants two things: the meme + TTS. send the meme first, then speak.`,startedAt:Q-5*$+500,endedAt:Q-5*$+1500,complete:!0},{kind:`tool`,id:`a-2-tool-1`,tool:{id:`a-2-tool-1`,name:`meme`,status:`completed`,args:{name:`cat-loaf`,family:`cats`},result:{url:`https://example.com/cat-loaf.png`},startedAt:Q-5*$+1500,completedAt:Q-5*$+1700}},{kind:`text`,id:`a-2-text-1`,text:`here's the loaf.`,complete:!0},{kind:`tool`,id:`a-2-tool-2`,tool:{id:`a-2-tool-2`,name:`tts_speak`,status:`completed`,args:{text:`here's the loaf. she is a small bread now.`},startedAt:Q-5*$+2e3,completedAt:Q-5*$+3500}},{kind:`text`,id:`a-2-text-2`,text:`she is a small bread now.`,complete:!0}]},{id:`u-3`,role:`user`,who:`you`,ts:Q-2*$,steps:[{kind:`text`,id:`u-3-t`,text:`what time is it where the server lives?`,complete:!0}]},{id:`a-3`,role:`assistant`,who:`ghost`,ts:Q-2*$+500,silent:!0,steps:[{kind:`thinking`,id:`a-3-think`,text:`she's checking on the server, not asking for chat. quick lookup and let it sit.`,startedAt:Q-2*$+500,endedAt:Q-2*$+1200,complete:!0},{kind:`tool`,id:`a-3-tool`,tool:{id:`a-3-tool`,name:`bash`,status:`completed`,args:{command:`date '+%Z %H:%M'`},result:`UTC 04:12
|
|
8
|
+
`,startedAt:Q-2*$+1200,completedAt:Q-2*$+1400}}]},{id:`u-4`,role:`user`,who:`you`,ts:Q-$,steps:[{kind:`text`,id:`u-4-t`,text:`can you write a note to the diary about today?`,complete:!0}]},{id:`a-4`,role:`assistant`,who:`ghost`,ts:Q-$+500,steps:[{kind:`thinking`,id:`a-4-think`,text:`diary write. compose then call write_file.`,startedAt:Q-$+500,endedAt:Q-$+1200,complete:!0},{kind:`tool`,id:`a-4-tool`,tool:{id:`a-4-tool`,name:`write_file`,status:`error`,args:{path:`/diary/2026-05-25.md`,content:`...`},error:`EACCES: permission denied, open '/diary/2026-05-25.md'`,startedAt:Q-$+1200,completedAt:Q-$+1300}},{kind:`text`,id:`a-4-text`,text:`i couldn't reach the diary file — permissions. could you check it for me?`,complete:!0}]},{id:`u-5`,role:`user`,who:`you`,ts:Q-4e4,steps:[{kind:`text`,id:`u-5-t`,text:`summarize the long thread from last week`,complete:!0}]},{id:`a-err-1`,role:`assistant`,who:`ghost`,ts:Q-38e3,steps:[{kind:`thinking`,id:`a-err-1-think`,text:`big context. let me pull the thread and condense it.`,startedAt:Q-38e3,endedAt:Q-37e3,complete:!0},{kind:`error`,id:`a-err-1-error`,text:`503 Service Unavailable · upstream provider overloaded (anthropic/claude-opus-4-8)`}]},{id:`a-err-2`,role:`assistant`,who:`ghost`,ts:Q-2e4,steps:[{kind:`error`,id:`a-err-2-error`,text:`429 Too Many Requests · rate_limit_exceeded — retry after 30s`}]},{id:`a-5`,role:`assistant`,who:`ghost`,ts:Q-5e3,steps:[{kind:`thinking`,id:`a-5-think`,text:`still thinking about how to phrase this. she asked about—`,startedAt:Q-5e3}]}];function ra(){return(0,k.jsxs)(`div`,{className:`flex h-dvh flex-col bg-background text-foreground antialiased`,children:[(0,k.jsxs)(`div`,{className:`border-b border-border px-5 py-3`,children:[(0,k.jsx)(`span`,{className:`font-serif text-lg text-foreground`,children:`ghost`}),(0,k.jsx)(`span`,{className:`ml-3 font-serif italic text-xs text-muted-foreground/70`,children:`playground · synthetic states`})]}),(0,k.jsx)(`main`,{className:`flex-1 overflow-y-auto`,children:(0,k.jsx)(Si,{messages:na,personaName:`ghost`,historyLoaded:!0})})]})}function ia(){return typeof window<`u`&&new URLSearchParams(window.location.search).has(`demo`)?(0,k.jsx)(ra,{}):(0,k.jsx)(ea,{})}L(I()),kn(I),(0,dt.createRoot)(document.getElementById(`root`)).render((0,k.jsx)(D.StrictMode,{children:(0,k.jsx)(ia,{})}));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--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-space-x-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-outline-style:solid;--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-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:Libre Baskerville, serif;--spacing:var(--spacing);--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-3xl:48rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-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);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-bold:700;--tracking-normal:var(--tracking-normal);--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:calc(var(--radius) * .8);--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:Libre Baskerville, serif;--default-mono-font-family:IBM Plex Mono, monospace;--shadow:var(--shadow);--radius:.25rem;--letter-spacing:var(--letter-spacing);--shadow-offset-y:var(--shadow-offset-y);--shadow-offset-x:var(--shadow-offset-x);--shadow-spread:var(--shadow-spread);--shadow-blur:var(--shadow-blur);--shadow-opacity:var(--shadow-opacity)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background-color:var(--background);color:var(--foreground);letter-spacing:var(--tracking-normal)}html{font-family:Libre Baskerville,serif}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{appearance:textfield}}@layer components{.warm-prose{--tw-leading:var(--leading-relaxed);max-width:70ch;line-height:var(--leading-relaxed);color:var(--foreground)}.warm-prose>*+*{margin-top:calc(var(--spacing) * 5)}.warm-prose h1,.warm-prose h2,.warm-prose h3,.warm-prose h4,.warm-prose h5,.warm-prose h6{--tw-leading:var(--leading-tight);font-family:Lora,serif;line-height:var(--leading-tight);--tw-tracking:calc(var(--tracking-normal) - .025em);letter-spacing:calc(var(--tracking-normal) - .025em);color:var(--foreground)}:is(.warm-prose h1,.warm-prose h2,.warm-prose h3,.warm-prose h4,.warm-prose h5,.warm-prose h6):first-child{margin-top:calc(var(--spacing) * 0)}.warm-prose h1,.warm-prose h2,.warm-prose h3,.warm-prose h4,.warm-prose h5,.warm-prose h6{text-wrap:balance}.warm-prose p{overflow-wrap:anywhere;white-space:pre-wrap;text-wrap:pretty}.warm-prose ul,.warm-prose ol{padding-left:calc(var(--spacing) * 5);display:grid}.warm-prose ul{list-style-type:disc}.warm-prose ol{list-style-type:decimal}.warm-prose strong{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--foreground)}.warm-prose em{font-style:italic}.warm-prose blockquote{border-left-style:var(--tw-border-style);border-left-width:1px;border-color:var(--border);padding-left:calc(var(--spacing) * 4);color:var(--muted-foreground);font-family:Lora,serif;font-style:italic}.warm-prose code{border-radius:calc(var(--radius) * .6);background-color:var(--muted);padding-inline:calc(var(--spacing) * 1);padding-block:calc(var(--spacing) * .5);color:var(--foreground);font-family:IBM Plex Mono,monospace;font-size:.85em}.chat-markdown{min-width:calc(var(--spacing) * 0);overflow-wrap:anywhere}.chat-markdown>*+*{margin-top:calc(var(--spacing) * 3)}.chat-markdown p{text-wrap:wrap}.chat-markdown-end{width:fit-content;max-width:100%}.chat-markdown-end>p+p{margin-top:1.625em}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3,.chat-markdown h4,.chat-markdown h5,.chat-markdown h6{margin-top:calc(var(--spacing) * 5);--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.chat-markdown h1{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.chat-markdown h2{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.chat-markdown h3,.chat-markdown h4,.chat-markdown h5,.chat-markdown h6{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.chat-markdown a{color:var(--primary);text-underline-offset:4px;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));text-decoration-line:underline}@media (hover:hover){.chat-markdown a:hover{color:var(--foreground)}}.chat-markdown ul,.chat-markdown ol{gap:calc(var(--spacing) * 1.5)}.chat-markdown li{padding-left:calc(var(--spacing) * 1)}.chat-markdown li>p{display:inline}.chat-markdown li>ul,.chat-markdown li>ol{margin-top:calc(var(--spacing) * 1.5)}.chat-markdown hr{margin-block:calc(var(--spacing) * 5);border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.chat-markdown hr{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.chat-markdown pre{border-radius:calc(var(--radius) * .8);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);overflow-x:auto}@supports (color:color-mix(in lab, red, red)){.chat-markdown pre{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.chat-markdown pre{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.chat-markdown pre{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.chat-markdown pre{padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.chat-markdown pre code{padding:calc(var(--spacing) * 0);background-color:#0000;border-radius:0;font-size:.9em}.chat-markdown input[type=checkbox]{margin-right:calc(var(--spacing) * 2);vertical-align:middle;accent-color:var(--primary)}.chat-markdown-table{max-width:100%;overflow-x:auto}.chat-markdown table{border-collapse:collapse;width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.chat-markdown th,.chat-markdown td{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.chat-markdown th,.chat-markdown td{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.chat-markdown th,.chat-markdown td{padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1.5);text-align:left;vertical-align:top}.chat-markdown th{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.chat-markdown th{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.chat-markdown th{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.chat-markdown-streaming:after{margin-left:calc(var(--spacing) * .5);animation:var(--animate-pulse);content:"▎";display:inline-block}.diary-prose{font-size:.95rem}.diary-prose h2{margin-top:calc(var(--spacing) * 8);font-family:Lora,serif;font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-tracking:calc(var(--tracking-normal) - .025em);letter-spacing:calc(var(--tracking-normal) - .025em);color:var(--foreground)}.diary-prose h2:first-child{margin-top:calc(var(--spacing) * 0)}.diary-prose h3{margin-top:calc(var(--spacing) * 7);font-family:Lora,serif;font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-tracking:calc(var(--tracking-normal) - .025em);letter-spacing:calc(var(--tracking-normal) - .025em);color:var(--foreground)}.diary-prose h3:first-child{margin-top:calc(var(--spacing) * 0)}.diary-prose ul,.diary-prose ol{gap:calc(var(--spacing) * 2)}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.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-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-1\/2{bottom:50%}.left-1\/2{left:50%}.left-3\.5{left:calc(var(--spacing) * 3.5)}.z-10{z-index:10}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-3{margin:calc(var(--spacing) * 3)}.m-7{margin:calc(var(--spacing) * 7)}.m-12{margin:calc(var(--spacing) * 12)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.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-8{margin-top:calc(var(--spacing) * 8)}.mt-auto{margin-top:auto}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-9{margin-left:calc(var(--spacing) * 9)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\!block{display:block!important}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-\[1\.125rem\]{width:1.125rem;height:1.125rem}.size-full{width:100%;height:100%}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.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-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[calc\(100dvh-1\.5rem\)\]{max-height:calc(100dvh - 1.5rem)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[18rem\]{min-height:18rem}.w-\(--radix-dropdown-menu-trigger-width\){width:var(--radix-dropdown-menu-trigger-width)}.w-2\/3{width:66.6667%}.w-3\/4{width:75%}.w-4\/5{width:80%}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-10{width:calc(var(--spacing) * 10)}.w-11\/12{width:91.6667%}.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-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[min\(28rem\,calc\(100vw-2rem\)\)\]{width:min(28rem,100vw - 2rem)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[16rem\]{max-width:16rem}.max-w-\[24rem\]{max-width:24rem}.max-w-\[70ch\]{max-width:70ch}.max-w-\[85\%\]{max-width:85%}.max-w-\[calc\(100vw-1\.5rem\)\]{max-width:calc(100vw - 1.5rem)}.max-w-full{max-width:100%}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-\[96px\]{min-width:96px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.appearance-none{appearance: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-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-rows-\[auto_1fr\]{grid-template-rows:auto 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-\[--spacing\(var\(--gap\)\)\]{gap:calc(var(--spacing) * var(--gap))}: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-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)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md), 10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md), 12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-r-md{border-top-right-radius:calc(var(--radius) * .8);border-bottom-right-radius:calc(var(--radius) * .8)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-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-border,.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-border\/70{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/70{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.border-border\/80{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/80{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.border-destructive,.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/50{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.border-input{border-color:var(--input)}.border-primary\/50{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/50{border-color:color-mix(in oklab, var(--primary) 50%, transparent)}}.border-ring{border-color:var(--ring)}.border-transparent{border-color:#0000}.bg-background,.bg-background\/55{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/55{background-color:color-mix(in oklab, var(--background) 55%, transparent)}}.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab, var(--background) 70%, transparent)}}.bg-background\/90{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/90{background-color:color-mix(in oklab, var(--background) 90%, transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-destructive\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/15{background-color:color-mix(in oklab, var(--destructive) 15%, transparent)}}.bg-destructive\/\[0\.06\]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/\[0\.06\]{background-color:color-mix(in oklab, var(--destructive) 6%, transparent)}}.bg-foreground\/15{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/15{background-color:color-mix(in oklab, var(--foreground) 15%, transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/10{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/10{background-color:color-mix(in oklab, var(--muted-foreground) 10%, transparent)}}.bg-muted-foreground\/15{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/15{background-color:color-mix(in oklab, var(--muted-foreground) 15%, transparent)}}.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-primary-foreground,.bg-primary-foreground\/70{background-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-primary-foreground\/70{background-color:color-mix(in oklab, var(--primary-foreground) 70%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-transparent{background-color:#0000}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-background\/95{--tw-gradient-from:var(--background)}@supports (color:color-mix(in lab, red, red)){.from-background\/95{--tw-gradient-from:color-mix(in oklab, var(--background) 95%, transparent)}}.from-background\/95{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-background\/70{--tw-gradient-via:var(--background)}@supports (color:color-mix(in lab, red, red)){.via-background\/70{--tw-gradient-via:color-mix(in oklab, var(--background) 70%, transparent)}}.via-background\/70{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-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))}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-8{padding:calc(var(--spacing) * 8)}.p-px{padding:1px}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-\[env\(safe-area-inset-bottom\)\]{padding-bottom:env(safe-area-inset-bottom)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-heading{font-family:var(--font-sans)}.font-mono{font-family:IBM Plex Mono,monospace}.font-sans{font-family:Libre Baskerville,serif}.font-serif{font-family:Lora,serif}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.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-\[0\.8rem\]{font-size:.8rem}.text-\[0\.6875rem\]{font-size:.6875rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-tight{--tw-tracking:calc(var(--tracking-normal) - .025em);letter-spacing:calc(var(--tracking-normal) - .025em)}.tracking-wide{--tw-tracking:calc(var(--tracking-normal) + .025em);letter-spacing:calc(var(--tracking-normal) + .025em)}.tracking-wider{--tw-tracking:calc(var(--tracking-normal) + .05em);letter-spacing:calc(var(--tracking-normal) + .05em)}.tracking-widest{--tw-tracking:calc(var(--tracking-normal) + .1em);letter-spacing:calc(var(--tracking-normal) + .1em)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-current{color:currentColor}.text-destructive,.text-destructive\/80{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.text-destructive\/80{color:color-mix(in oklab, var(--destructive) 80%, transparent)}}.text-destructive\/85{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.text-destructive\/85{color:color-mix(in oklab, var(--destructive) 85%, transparent)}}.text-destructive\/90{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.text-destructive\/90{color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.text-foreground,.text-foreground\/75{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/75{color:color-mix(in oklab, var(--foreground) 75%, transparent)}}.text-foreground\/85{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/85{color:color-mix(in oklab, var(--foreground) 85%, transparent)}}.text-muted-foreground,.text-muted-foreground\/40{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/40{color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/60{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.text-muted-foreground\/65{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/65{color:color-mix(in oklab, var(--muted-foreground) 65%, transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/70{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.text-muted-foreground\/80{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/80{color:color-mix(in oklab, var(--muted-foreground) 80%, transparent)}}.text-muted-foreground\/85{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/85{color:color-mix(in oklab, var(--muted-foreground) 85%, transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground,.text-primary-foreground\/70{color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.text-primary-foreground\/70{color:color-mix(in oklab, var(--primary-foreground) 70%, transparent)}}.text-primary-foreground\/75{color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.text-primary-foreground\/75{color:color-mix(in oklab, var(--primary-foreground) 75%, transparent)}}.text-primary-foreground\/85{color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.text-primary-foreground\/85{color:color-mix(in oklab, var(--primary-foreground) 85%, transparent)}}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/35{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/35{color:color-mix(in oklab, var(--sidebar-foreground) 35%, transparent)}}.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/70{color:color-mix(in oklab, var(--sidebar-foreground) 70%, transparent)}}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.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,)}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-70{opacity:.7}.opacity-100{opacity:1}.bg-blend-color{background-blend-mode:color}.shadow-2xl{--tw-shadow:var(--shadow-2xl);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:var(--shadow-lg);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:var(--shadow-md);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:var(--shadow-sm);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-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)}.ring-3{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-accent\/60{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.ring-accent\/60{--tw-ring-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.ring-background{--tw-ring-color:var(--background)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.ring-ring\/30{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.ring-ring\/30{--tw-ring-color:color-mix(in oklab, var(--ring) 30%, transparent)}}.ring-transparent{--tw-ring-color:transparent}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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,)}.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-color\,border-color\,box-shadow\,color\,opacity\,transform\]{transition-property:background-color,border-color,box-shadow,color,opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[border-color\,box-shadow\]{transition-property: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-\[border-color\,transform\]{transition-property:border-color,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;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-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}.ease-\[cubic-bezier\(0\.16\,1\,0\.3\,1\)\]{--tw-ease:cubic-bezier(.16,1,.3,1);transition-timing-function:cubic-bezier(.16,1,.3,1)}.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)}.ease-out-quart{--tw-ease:cubic-bezier(.25, 1, .5, 1);transition-timing-function:cubic-bezier(.25,1,.5,1)}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.running{animation-play-state:running}.slide-in-from-bottom-\[0\.375rem\]{--tw-enter-translate-y:.375rem}.group-focus-within\:pointer-events-auto:is(:where(.group):focus-within *){pointer-events:auto}.group-focus-within\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\:pointer-events-auto:is(:where(.group):hover *){pointer-events:auto}.group-hover\:text-foreground:is(:where(.group):hover *){color:var(--foreground)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\/row\:text-foreground:is(:where(.group\/row):hover *){color:var(--foreground)}.group-hover\/row\:opacity-100:is(:where(.group\/row):hover *){opacity:1}}.group-focus\/dropdown-menu-item\:text-accent-foreground:is(:where(.group\/dropdown-menu-item):focus *){color:var(--accent-foreground)}.group-has-data-\[size\=lg\]\/avatar-group\:size-10:is(:where(.group\/avatar-group):has([data-size=lg]) *){width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.group-has-data-\[size\=sm\]\/avatar-group\:size-6:is(:where(.group\/avatar-group):has([data-size=sm]) *){width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[size\=default\]\/avatar\:size-2\.5:is(:where(.group\/avatar)[data-size=default] *){width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.group-data-\[size\=lg\]\/avatar\:size-3:is(:where(.group\/avatar)[data-size=lg] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/alert-dialog-content\:grid:is(:where(.group\/alert-dialog-content)[data-size=sm] *){display:grid}.group-data-\[size\=sm\]\/alert-dialog-content\:grid-cols-2:is(:where(.group\/alert-dialog-content)[data-size=sm] *){grid-template-columns:repeat(2,minmax(0,1fr))}.group-data-\[size\=sm\]\/avatar\:size-2:is(:where(.group\/avatar)[data-size=sm] *){width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.group-data-\[size\=sm\]\/avatar\:text-xs:is(:where(.group\/avatar)[data-size=sm] *){font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.group-data-\[spacing\=0\]\/toggle-group\:rounded-none:is(:where(.group\/toggle-group)[data-spacing="0"] *){border-radius:0}.group-data-\[spacing\=0\]\/toggle-group\:px-2:is(:where(.group\/toggle-group)[data-spacing="0"] *){padding-inline:calc(var(--spacing) * 2)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.placeholder\:text-muted-foreground::placeholder,.placeholder\:text-muted-foreground\/60::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/60::placeholder{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing) * 0)}.after\:-inset-x-3:after{content:var(--tw-content);inset-inline:calc(var(--spacing) * -3)}.after\:-inset-y-2:after{content:var(--tw-content);inset-block:calc(var(--spacing) * -2)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:border:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.after\:border-border:after{content:var(--tw-content);border-color:var(--border)}.after\:mix-blend-darken:after{content:var(--tw-content);mix-blend-mode:darken}.focus-within\:border-ring:focus-within{border-color:var(--ring)}.focus-within\:ring-3:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-ring\/30:focus-within{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-within\:ring-ring\/30:focus-within{--tw-ring-color:color-mix(in oklab, var(--ring) 30%, transparent)}}@media (hover:hover){.hover\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:border-ring:hover{border-color:var(--ring)}.hover\:bg-accent:hover,.hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary:hover,.hover\:bg-primary\/20:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/20:hover{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary-foreground:hover{color:var(--primary-foreground)}.hover\:text-sidebar-foreground:hover{color:var(--sidebar-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus\:z-10:focus{z-index:10}.focus\:border-ring:focus{border-color:var(--ring)}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.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-3:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring\/30:focus{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-ring\/30:focus{--tw-ring-color:color-mix(in oklab, var(--ring) 30%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}:is(.focus\:\*\*\:text-accent-foreground:focus *),:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--accent-foreground)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-destructive:focus-visible,.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:opacity-100:focus-visible{opacity:1}.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-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 40%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.group-data-\[spacing\=0\]\/toggle-group\:has-data-\[icon\=inline-end\]\:pr-1\.5:is(:where(.group\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.group-data-\[spacing\=0\]\/toggle-group\:has-data-\[icon\=inline-start\]\:pl-1\.5:is(:where(.group\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[slot\=alert-dialog-media\]\:grid-rows-\[auto_auto_1fr\]:has([data-slot=alert-dialog-media]){grid-template-rows:auto auto 1fr}.has-data-\[slot\=alert-dialog-media\]\:gap-x-4:has([data-slot=alert-dialog-media]){column-gap:calc(var(--spacing) * 4)}.has-data-\[state\=checked\]\:bg-primary:has([data-state=checked]){background-color:var(--primary)}.has-data-\[state\=checked\]\:text-primary-foreground:has([data-state=checked]){color:var(--primary-foreground)}@media (hover:hover){.has-data-\[state\=checked\]\:hover\:bg-primary:has([data-state=checked]):hover{background-color:var(--primary)}}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-invalid\:aria-checked\:border-primary[aria-invalid=true][aria-checked=true]{border-color:var(--primary)}.aria-pressed\:bg-muted[aria-pressed=true]{background-color:var(--muted)}.data-inset\:pl-7[data-inset]{padding-left:calc(var(--spacing) * 7)}.data-\[side\=bottom\]\:inset-x-0[data-side=bottom]{inset-inline:calc(var(--spacing) * 0)}.data-\[side\=bottom\]\:bottom-0[data-side=bottom]{bottom:calc(var(--spacing) * 0)}.data-\[side\=bottom\]\:h-auto[data-side=bottom]{height:auto}.data-\[side\=bottom\]\:border-t[data-side=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:inset-y-0[data-side=left]{inset-block:calc(var(--spacing) * 0)}.data-\[side\=left\]\:left-0[data-side=left]{left:calc(var(--spacing) * 0)}.data-\[side\=left\]\:h-full[data-side=left]{height:100%}.data-\[side\=left\]\:w-3\/4[data-side=left]{width:75%}.data-\[side\=left\]\:border-r[data-side=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:inset-y-0[data-side=right]{inset-block:calc(var(--spacing) * 0)}.data-\[side\=right\]\:right-0[data-side=right]{right:calc(var(--spacing) * 0)}.data-\[side\=right\]\:h-full[data-side=right]{height:100%}.data-\[side\=right\]\:w-3\/4[data-side=right]{width:75%}.data-\[side\=right\]\:border-l[data-side=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:inset-x-0[data-side=top]{inset-inline:calc(var(--spacing) * 0)}.data-\[side\=top\]\:top-0[data-side=top]{top:calc(var(--spacing) * 0)}.data-\[side\=top\]\:h-auto[data-side=top]{height:auto}.data-\[side\=top\]\:border-b[data-side=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:max-w-xs[data-size=default]{max-width:var(--container-xs)}.data-\[size\=lg\]\:size-10[data-size=lg]{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.data-\[size\=sm\]\:size-6[data-size=sm]{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.data-\[size\=sm\]\:max-w-xs[data-size=sm]{max-width:var(--container-xs)}.data-\[size\=sm\]\:rounded-\[min\(var\(--radius-md\)\,10px\)\][data-size=sm]{border-radius:min(var(--radius-md), 10px)}:is(.\*\:data-\[slot\=avatar\]\:ring-2>*)[data-slot=avatar]{--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)}:is(.\*\:data-\[slot\=avatar\]\:ring-background>*)[data-slot=avatar]{--tw-ring-color:var(--background)}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:first\:rounded-l-lg:is(:where(.group\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"]:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:first\:rounded-t-lg:is(:where(.group\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"]:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:last\:rounded-r-lg:is(:where(.group\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"]:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:last\:rounded-b-lg:is(:where(.group\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"]:last-child{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:overflow-hidden[data-state=closed]{overflow:hidden}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=on\]\:bg-muted[data-state=on]{background-color:var(--muted)}.data-\[state\=on\]\:bg-primary[data-state=on]{background-color:var(--primary)}.data-\[state\=on\]\:text-primary-foreground[data-state=on]{color:var(--primary-foreground)}@media (hover:hover){.data-\[state\=on\]\:hover\:bg-primary[data-state=on]:hover{background-color:var(--primary)}}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0:is(:where(.group\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"][data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-t-0:is(:where(.group\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"][data-variant=outline]{border-top-style:var(--tw-border-style);border-top-width:0}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l:is(:where(.group\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"][data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-t:is(:where(.group\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"][data-variant=outline]:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}@media (width>=40rem){.sm\:top-4{top:calc(var(--spacing) * 4)}.sm\:right-4{right:calc(var(--spacing) * 4)}.sm\:max-h-\[calc\(100dvh-3rem\)\]{max-height:calc(100dvh - 3rem)}.sm\:w-md{width:var(--container-md)}.sm\:max-w-\[calc\(100vw-3rem\)\]{max-width:calc(100vw - 3rem)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:rounded-l-2xl{border-top-left-radius:calc(var(--radius) * 1.8);border-bottom-left-radius:calc(var(--radius) * 1.8)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:row-span-2:is(:where(.group\/alert-dialog-content)[data-size=default] *){grid-row:span 2/span 2}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:place-items-start:is(:where(.group\/alert-dialog-content)[data-size=default] *){place-items:start}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:text-left:is(:where(.group\/alert-dialog-content)[data-size=default] *){text-align:left}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:group-has-data-\[slot\=alert-dialog-media\]\/alert-dialog-content\:col-start-2:is(:where(.group\/alert-dialog-content)[data-size=default] *):is(:where(.group\/alert-dialog-content):has([data-slot=alert-dialog-media]) *){grid-column-start:2}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:has-data-\[slot\=alert-dialog-media\]\:grid-rows-\[auto_1fr\]:is(:where(.group\/alert-dialog-content)[data-size=default] *):has([data-slot=alert-dialog-media]){grid-template-rows:auto 1fr}.data-\[side\=left\]\:sm\:max-w-sm[data-side=left],.data-\[side\=right\]\:sm\:max-w-sm[data-side=right],.data-\[size\=default\]\:sm\:max-w-sm[data-size=default]{max-width:var(--container-sm)}}@media (width>=48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-72{width:calc(var(--spacing) * 72)}.md\:flex-1{flex:1}.md\:flex-none{flex:none}.md\:grid-cols-\[18rem_minmax\(0\,1fr\)\]{grid-template-columns:18rem minmax(0,1fr)}.md\:flex-row{flex-direction:row}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:py-10{padding-block:calc(var(--spacing) * 10)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-pretty{text-wrap:pretty}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-card:is(.dark *){background-color:var(--card)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:text-card-foreground:is(.dark *){color:var(--card-foreground)}.dark\:shadow-\[2px_3px_12px_0_oklch\(0\.14_0\.01_58_\/_0\.34\)\]:is(.dark *){--tw-shadow:2px 3px 12px 0 var(--tw-shadow-color,oklch(14% .01 58/.34));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:after\:mix-blend-lighten:is(.dark *):after{content:var(--tw-content);mix-blend-mode:lighten}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:bg-accent:where([data-state=open]),.data-open\:bg-accent:where([data-open]:not([data-open=false])){background-color:var(--accent)}.data-open\:text-accent-foreground:where([data-state=open]),.data-open\:text-accent-foreground:where([data-open]:not([data-open=false])){color:var(--accent-foreground)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-state=open]),.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-state=open]),.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-state=open]),.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-state=open]),.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*-100%)}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-state=closed]),.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-state=closed]),.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-state=closed]),.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-state=closed]),.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*-100%)}.data-checked\:border-primary:where([data-state=checked]),.data-checked\:border-primary:where([data-checked]:not([data-checked=false])){border-color:var(--primary)}.data-checked\:bg-primary:where([data-state=checked]),.data-checked\:bg-primary:where([data-checked]:not([data-checked=false])){background-color:var(--primary)}.data-checked\:text-primary-foreground:where([data-state=checked]),.data-checked\:text-primary-foreground:where([data-checked]:not([data-checked=false])){color:var(--primary-foreground)}.dark\:data-checked\:bg-primary:is(.dark *):where([data-state=checked]),.dark\:data-checked\:bg-primary:is(.dark *):where([data-checked]:not([data-checked=false])){background-color:var(--primary)}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-horizontal\:h-2\.5:where([data-orientation=horizontal]){height:calc(var(--spacing) * 2.5)}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-horizontal\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.data-horizontal\:border-t:where([data-orientation=horizontal]){border-top-style:var(--tw-border-style);border-top-width:1px}.data-horizontal\:border-t-transparent:where([data-orientation=horizontal]){border-top-color:#0000}.data-vertical\:h-full:where([data-orientation=vertical]){height:100%}.data-vertical\:w-2\.5:where([data-orientation=vertical]){width:calc(var(--spacing) * 2.5)}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:flex-col:where([data-orientation=vertical]){flex-direction:column}.data-vertical\:items-stretch:where([data-orientation=vertical]){align-items:stretch}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.data-vertical\:border-l:where([data-orientation=vertical]){border-left-style:var(--tw-border-style);border-left-width:1px}.data-vertical\:border-l-transparent:where([data-orientation=vertical]){border-left-color:#0000}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-moz-range-thumb\]\:size-3::-moz-range-thumb{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\:\:-moz-range-thumb\]\:cursor-pointer::-moz-range-thumb{cursor:pointer}.\[\&\:\:-moz-range-thumb\]\:appearance-none::-moz-range-thumb{appearance:none}.\[\&\:\:-moz-range-thumb\]\:rounded-full::-moz-range-thumb{border-radius:3.40282e38px}.\[\&\:\:-moz-range-thumb\]\:border-0::-moz-range-thumb{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-moz-range-thumb\]\:bg-primary::-moz-range-thumb{background-color:var(--primary)}.\[\&\:\:-webkit-slider-thumb\]\:size-3::-webkit-slider-thumb{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\:\:-webkit-slider-thumb\]\:cursor-pointer::-webkit-slider-thumb{cursor:pointer}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-slider-thumb\]\:bg-primary::-webkit-slider-thumb{background-color:var(--primary)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.group-has-data-\[size\=lg\]\/avatar-group\:\[\&\>svg\]\:size-5:is(:where(.group\/avatar-group):has([data-size=lg]) *)>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.group-has-data-\[size\=sm\]\/avatar-group\:\[\&\>svg\]\:size-3:is(:where(.group\/avatar-group):has([data-size=sm]) *)>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=default\]\/avatar\:\[\&\>svg\]\:size-2:is(:where(.group\/avatar)[data-size=default] *)>svg,.group-data-\[size\=lg\]\/avatar\:\[\&\>svg\]\:size-2:is(:where(.group\/avatar)[data-size=lg] *)>svg{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.group-data-\[size\=sm\]\/avatar\:\[\&\>svg\]\:hidden:is(:where(.group\/avatar)[data-size=sm] *)>svg{display:none}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:oklch(95.82% .0152 90.2357);--foreground:oklch(37.6% .0225 64.3434);--card:oklch(99.14% .0098 87.4695);--card-foreground:oklch(37.6% .0225 64.3434);--popover:oklch(99.14% .0098 87.4695);--popover-foreground:oklch(37.6% .0225 64.3434);--primary:oklch(61.8% .0778 65.5444);--primary-foreground:oklch(100% 0 0);--secondary:oklch(88.46% .0302 85.5655);--secondary-foreground:oklch(43.13% .03 64.9288);--muted:oklch(92.39% .019 83.0636);--muted-foreground:oklch(53.91% .0387 71.1655);--accent:oklch(83.48% .0426 88.8064);--accent-foreground:oklch(37.6% .0225 64.3434);--destructive:oklch(54.71% .1438 32.9149);--border:oklch(86.06% .0321 84.5881);--input:oklch(86.06% .0321 84.5881);--ring:oklch(61.8% .0778 65.5444);--chart-1:oklch(61.8% .0778 65.5444);--chart-2:oklch(56.04% .0624 68.5805);--chart-3:oklch(48.51% .057 72.6827);--chart-4:oklch(67.77% .0624 64.7755);--chart-5:oklch(72.64% .0581 66.6967);--radius:.25rem;--sidebar:oklch(92.39% .019 83.0636);--sidebar-foreground:oklch(37.6% .0225 64.3434);--sidebar-primary:oklch(61.8% .0778 65.5444);--sidebar-primary-foreground:oklch(100% 0 0);--sidebar-accent:oklch(83.48% .0426 88.8064);--sidebar-accent-foreground:oklch(37.6% .0225 64.3434);--sidebar-border:oklch(86.06% .0321 84.5881);--sidebar-ring:oklch(61.8% .0778 65.5444);--destructive-foreground:oklch(100% 0 0);--font-sans:Libre Baskerville, serif;--font-serif:Lora, serif;--font-mono:IBM Plex Mono, monospace;--shadow-color:#3a332c;--shadow-opacity:.12;--shadow-blur:5px;--shadow-spread:0px;--shadow-offset-x:2px;--shadow-offset-y:3px;--letter-spacing:0em;--spacing:.25rem;--shadow-2xs:2px 3px 5px 0px #3a332c0f;--shadow-xs:2px 3px 5px 0px #3a332c0f;--shadow-sm:2px 3px 5px 0px #3a332c1f, 2px 1px 2px -1px #3a332c1f;--shadow:2px 3px 5px 0px #3a332c1f, 2px 1px 2px -1px #3a332c1f;--shadow-md:2px 3px 5px 0px #3a332c1f, 2px 2px 4px -1px #3a332c1f;--shadow-lg:2px 3px 5px 0px #3a332c1f, 2px 4px 6px -1px #3a332c1f;--shadow-xl:2px 3px 5px 0px #3a332c1f, 2px 8px 10px -1px #3a332c1f;--shadow-2xl:2px 3px 5px 0px #3a332c4d;--tracking-normal:0em}.dark{--background:oklch(27.47% .0139 57.6523);--foreground:oklch(92.39% .019 83.0636);--card:oklch(32.37% .0155 59.0603);--card-foreground:oklch(92.39% .019 83.0636);--popover:oklch(32.37% .0155 59.0603);--popover-foreground:oklch(92.39% .019 83.0636);--primary:oklch(72.64% .0581 66.6967);--primary-foreground:oklch(27.47% .0139 57.6523);--secondary:oklch(37.95% .0181 57.128);--secondary-foreground:oklch(92.39% .019 83.0636);--muted:oklch(29.39% .0125 62.1298);--muted-foreground:oklch(79.82% .0243 82.1078);--accent:oklch(41.86% .0281 56.3404);--accent-foreground:oklch(92.39% .019 83.0636);--destructive:oklch(54.71% .1438 32.9149);--border:oklch(37.95% .0181 57.128);--input:oklch(37.95% .0181 57.128);--ring:oklch(72.64% .0581 66.6967);--chart-1:oklch(72.64% .0581 66.6967);--chart-2:oklch(67.77% .0624 64.7755);--chart-3:oklch(61.8% .0778 65.5444);--chart-4:oklch(56.04% .0624 68.5805);--chart-5:oklch(48.51% .057 72.6827);--sidebar:oklch(27.47% .0139 57.6523);--sidebar-foreground:oklch(92.39% .019 83.0636);--sidebar-primary:oklch(72.64% .0581 66.6967);--sidebar-primary-foreground:oklch(27.47% .0139 57.6523);--sidebar-accent:oklch(41.86% .0281 56.3404);--sidebar-accent-foreground:oklch(92.39% .019 83.0636);--sidebar-border:oklch(37.95% .0181 57.128);--sidebar-ring:oklch(72.64% .0581 66.6967);--destructive-foreground:oklch(100% 0 0);--radius:.25rem;--font-sans:Libre Baskerville, serif;--font-serif:Lora, serif;--font-mono:IBM Plex Mono, monospace;--shadow-color:#3a332c;--shadow-opacity:.12;--shadow-blur:5px;--shadow-spread:0px;--shadow-offset-x:2px;--shadow-offset-y:3px;--letter-spacing:0em;--spacing:.25rem;--shadow-2xs:2px 3px 5px 0px #3a332c0f;--shadow-xs:2px 3px 5px 0px #3a332c0f;--shadow-sm:2px 3px 5px 0px #3a332c1f, 2px 1px 2px -1px #3a332c1f;--shadow:2px 3px 5px 0px #3a332c1f, 2px 1px 2px -1px #3a332c1f;--shadow-md:2px 3px 5px 0px #3a332c1f, 2px 2px 4px -1px #3a332c1f;--shadow-lg:2px 3px 5px 0px #3a332c1f, 2px 4px 6px -1px #3a332c1f;--shadow-xl:2px 3px 5px 0px #3a332c1f, 2px 8px 10px -1px #3a332c1f;--shadow-2xl:2px 3px 5px 0px #3a332c4d}@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-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-space-x-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-outline-style{syntax:"*";inherits:false;initial-value:solid}@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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
|
package/web/dist/index.html
CHANGED
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
href="https://fonts.googleapis.com/css2?family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=Lora:ital,wght@0,400..700;1,400..700&family=IBM+Plex+Mono:wght@400;500&display=swap"
|
|
12
12
|
rel="stylesheet"
|
|
13
13
|
/>
|
|
14
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-BBeSYXbS.js"></script>
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-S-ySWqyJ.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/react-Bi_azaFt.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/ui-C12-nN_X.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="/assets/markdown-kaIeGxdv.js">
|
|
19
19
|
<link rel="modulepreload" crossorigin href="/assets/vendor-D1QXMhXm.js">
|
|
20
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
20
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DEa6w1xC.css">
|
|
21
21
|
</head>
|
|
22
22
|
<body>
|
|
23
23
|
<div id="root"></div>
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--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-space-x-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-outline-style:solid;--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-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:Libre Baskerville, serif;--spacing:var(--spacing);--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-3xl:48rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-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);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-bold:700;--tracking-normal:var(--tracking-normal);--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:calc(var(--radius) * .8);--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:Libre Baskerville, serif;--default-mono-font-family:IBM Plex Mono, monospace;--shadow:var(--shadow);--radius:.25rem;--letter-spacing:var(--letter-spacing);--shadow-offset-y:var(--shadow-offset-y);--shadow-offset-x:var(--shadow-offset-x);--shadow-spread:var(--shadow-spread);--shadow-blur:var(--shadow-blur);--shadow-opacity:var(--shadow-opacity)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background-color:var(--background);color:var(--foreground);letter-spacing:var(--tracking-normal)}html{font-family:Libre Baskerville,serif}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{appearance:textfield}}@layer components{.warm-prose{--tw-leading:var(--leading-relaxed);max-width:70ch;line-height:var(--leading-relaxed);color:var(--foreground)}.warm-prose>*+*{margin-top:calc(var(--spacing) * 5)}.warm-prose h1,.warm-prose h2,.warm-prose h3,.warm-prose h4,.warm-prose h5,.warm-prose h6{--tw-leading:var(--leading-tight);font-family:Lora,serif;line-height:var(--leading-tight);--tw-tracking:calc(var(--tracking-normal) - .025em);letter-spacing:calc(var(--tracking-normal) - .025em);color:var(--foreground)}:is(.warm-prose h1,.warm-prose h2,.warm-prose h3,.warm-prose h4,.warm-prose h5,.warm-prose h6):first-child{margin-top:calc(var(--spacing) * 0)}.warm-prose h1,.warm-prose h2,.warm-prose h3,.warm-prose h4,.warm-prose h5,.warm-prose h6{text-wrap:balance}.warm-prose p{overflow-wrap:anywhere;white-space:pre-wrap;text-wrap:pretty}.warm-prose ul,.warm-prose ol{padding-left:calc(var(--spacing) * 5);display:grid}.warm-prose ul{list-style-type:disc}.warm-prose ol{list-style-type:decimal}.warm-prose strong{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--foreground)}.warm-prose em{font-style:italic}.warm-prose blockquote{border-left-style:var(--tw-border-style);border-left-width:1px;border-color:var(--border);padding-left:calc(var(--spacing) * 4);color:var(--muted-foreground);font-family:Lora,serif;font-style:italic}.warm-prose code{border-radius:calc(var(--radius) * .6);background-color:var(--muted);padding-inline:calc(var(--spacing) * 1);padding-block:calc(var(--spacing) * .5);color:var(--foreground);font-family:IBM Plex Mono,monospace;font-size:.85em}.chat-markdown{min-width:calc(var(--spacing) * 0);overflow-wrap:anywhere}.chat-markdown>*+*{margin-top:calc(var(--spacing) * 3)}.chat-markdown p{text-wrap:wrap}.chat-markdown-end>p{width:fit-content;max-width:100%;margin-left:auto}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3,.chat-markdown h4,.chat-markdown h5,.chat-markdown h6{margin-top:calc(var(--spacing) * 5);--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.chat-markdown h1{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.chat-markdown h2{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.chat-markdown h3,.chat-markdown h4,.chat-markdown h5,.chat-markdown h6{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.chat-markdown a{color:var(--primary);text-underline-offset:4px;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));text-decoration-line:underline}@media (hover:hover){.chat-markdown a:hover{color:var(--foreground)}}.chat-markdown ul,.chat-markdown ol{gap:calc(var(--spacing) * 1.5)}.chat-markdown li{padding-left:calc(var(--spacing) * 1)}.chat-markdown li>p{display:inline}.chat-markdown li>ul,.chat-markdown li>ol{margin-top:calc(var(--spacing) * 1.5)}.chat-markdown hr{margin-block:calc(var(--spacing) * 5);border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.chat-markdown hr{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.chat-markdown pre{border-radius:calc(var(--radius) * .8);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);overflow-x:auto}@supports (color:color-mix(in lab, red, red)){.chat-markdown pre{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.chat-markdown pre{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.chat-markdown pre{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.chat-markdown pre{padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.chat-markdown pre code{padding:calc(var(--spacing) * 0);background-color:#0000;border-radius:0;font-size:.9em}.chat-markdown input[type=checkbox]{margin-right:calc(var(--spacing) * 2);vertical-align:middle;accent-color:var(--primary)}.chat-markdown-table{max-width:100%;overflow-x:auto}.chat-markdown table{border-collapse:collapse;width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.chat-markdown th,.chat-markdown td{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.chat-markdown th,.chat-markdown td{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.chat-markdown th,.chat-markdown td{padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1.5);text-align:left;vertical-align:top}.chat-markdown th{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.chat-markdown th{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.chat-markdown th{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.chat-markdown-streaming:after{margin-left:calc(var(--spacing) * .5);animation:var(--animate-pulse);content:"▎";display:inline-block}.diary-prose{font-size:.95rem}.diary-prose h2{margin-top:calc(var(--spacing) * 8);font-family:Lora,serif;font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-tracking:calc(var(--tracking-normal) - .025em);letter-spacing:calc(var(--tracking-normal) - .025em);color:var(--foreground)}.diary-prose h2:first-child{margin-top:calc(var(--spacing) * 0)}.diary-prose h3{margin-top:calc(var(--spacing) * 7);font-family:Lora,serif;font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-tracking:calc(var(--tracking-normal) - .025em);letter-spacing:calc(var(--tracking-normal) - .025em);color:var(--foreground)}.diary-prose h3:first-child{margin-top:calc(var(--spacing) * 0)}.diary-prose ul,.diary-prose ol{gap:calc(var(--spacing) * 2)}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.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-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-1\/2{bottom:50%}.left-1\/2{left:50%}.left-3\.5{left:calc(var(--spacing) * 3.5)}.z-10{z-index:10}.z-50{z-index:50}.m-3{margin:calc(var(--spacing) * 3)}.m-7{margin:calc(var(--spacing) * 7)}.m-12{margin:calc(var(--spacing) * 12)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.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-8{margin-top:calc(var(--spacing) * 8)}.mt-auto{margin-top:auto}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-9{margin-left:calc(var(--spacing) * 9)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\!block{display:block!important}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-\[1\.125rem\]{width:1.125rem;height:1.125rem}.size-full{width:100%;height:100%}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.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-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[calc\(100dvh-1\.5rem\)\]{max-height:calc(100dvh - 1.5rem)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[18rem\]{min-height:18rem}.w-\(--radix-dropdown-menu-trigger-width\){width:var(--radix-dropdown-menu-trigger-width)}.w-2\/3{width:66.6667%}.w-3\/4{width:75%}.w-4\/5{width:80%}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-10{width:calc(var(--spacing) * 10)}.w-11\/12{width:91.6667%}.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-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[min\(28rem\,calc\(100vw-2rem\)\)\]{width:min(28rem,100vw - 2rem)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[16rem\]{max-width:16rem}.max-w-\[24rem\]{max-width:24rem}.max-w-\[70ch\]{max-width:70ch}.max-w-\[85\%\]{max-width:85%}.max-w-\[calc\(100vw-1\.5rem\)\]{max-width:calc(100vw - 1.5rem)}.max-w-full{max-width:100%}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-\[96px\]{min-width:96px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.appearance-none{appearance: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-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-rows-\[auto_1fr\]{grid-template-rows:auto 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-\[--spacing\(var\(--gap\)\)\]{gap:calc(var(--spacing) * var(--gap))}: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-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)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md), 10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md), 12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-r-md{border-top-right-radius:calc(var(--radius) * .8);border-bottom-right-radius:calc(var(--radius) * .8)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-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-border,.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-border\/70{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/70{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.border-border\/80{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/80{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.border-destructive,.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/50{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.border-input{border-color:var(--input)}.border-primary\/50{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/50{border-color:color-mix(in oklab, var(--primary) 50%, transparent)}}.border-ring{border-color:var(--ring)}.border-transparent{border-color:#0000}.bg-background,.bg-background\/55{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/55{background-color:color-mix(in oklab, var(--background) 55%, transparent)}}.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab, var(--background) 70%, transparent)}}.bg-background\/90{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/90{background-color:color-mix(in oklab, var(--background) 90%, transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-destructive\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/15{background-color:color-mix(in oklab, var(--destructive) 15%, transparent)}}.bg-destructive\/\[0\.06\]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/\[0\.06\]{background-color:color-mix(in oklab, var(--destructive) 6%, transparent)}}.bg-foreground\/15{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/15{background-color:color-mix(in oklab, var(--foreground) 15%, transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/10{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/10{background-color:color-mix(in oklab, var(--muted-foreground) 10%, transparent)}}.bg-muted-foreground\/15{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/15{background-color:color-mix(in oklab, var(--muted-foreground) 15%, transparent)}}.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-primary-foreground,.bg-primary-foreground\/70{background-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-primary-foreground\/70{background-color:color-mix(in oklab, var(--primary-foreground) 70%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-transparent{background-color:#0000}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-background\/95{--tw-gradient-from:var(--background)}@supports (color:color-mix(in lab, red, red)){.from-background\/95{--tw-gradient-from:color-mix(in oklab, var(--background) 95%, transparent)}}.from-background\/95{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-background\/70{--tw-gradient-via:var(--background)}@supports (color:color-mix(in lab, red, red)){.via-background\/70{--tw-gradient-via:color-mix(in oklab, var(--background) 70%, transparent)}}.via-background\/70{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-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))}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-8{padding:calc(var(--spacing) * 8)}.p-px{padding:1px}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-\[env\(safe-area-inset-bottom\)\]{padding-bottom:env(safe-area-inset-bottom)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-heading{font-family:var(--font-sans)}.font-mono{font-family:IBM Plex Mono,monospace}.font-sans{font-family:Libre Baskerville,serif}.font-serif{font-family:Lora,serif}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.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-\[0\.8rem\]{font-size:.8rem}.text-\[0\.6875rem\]{font-size:.6875rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-tight{--tw-tracking:calc(var(--tracking-normal) - .025em);letter-spacing:calc(var(--tracking-normal) - .025em)}.tracking-wide{--tw-tracking:calc(var(--tracking-normal) + .025em);letter-spacing:calc(var(--tracking-normal) + .025em)}.tracking-wider{--tw-tracking:calc(var(--tracking-normal) + .05em);letter-spacing:calc(var(--tracking-normal) + .05em)}.tracking-widest{--tw-tracking:calc(var(--tracking-normal) + .1em);letter-spacing:calc(var(--tracking-normal) + .1em)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-current{color:currentColor}.text-destructive,.text-destructive\/80{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.text-destructive\/80{color:color-mix(in oklab, var(--destructive) 80%, transparent)}}.text-destructive\/85{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.text-destructive\/85{color:color-mix(in oklab, var(--destructive) 85%, transparent)}}.text-destructive\/90{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.text-destructive\/90{color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.text-foreground,.text-foreground\/75{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/75{color:color-mix(in oklab, var(--foreground) 75%, transparent)}}.text-foreground\/85{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/85{color:color-mix(in oklab, var(--foreground) 85%, transparent)}}.text-muted-foreground,.text-muted-foreground\/40{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/40{color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/60{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.text-muted-foreground\/65{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/65{color:color-mix(in oklab, var(--muted-foreground) 65%, transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/70{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.text-muted-foreground\/80{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/80{color:color-mix(in oklab, var(--muted-foreground) 80%, transparent)}}.text-muted-foreground\/85{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/85{color:color-mix(in oklab, var(--muted-foreground) 85%, transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground,.text-primary-foreground\/70{color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.text-primary-foreground\/70{color:color-mix(in oklab, var(--primary-foreground) 70%, transparent)}}.text-primary-foreground\/75{color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.text-primary-foreground\/75{color:color-mix(in oklab, var(--primary-foreground) 75%, transparent)}}.text-primary-foreground\/85{color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.text-primary-foreground\/85{color:color-mix(in oklab, var(--primary-foreground) 85%, transparent)}}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/35{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/35{color:color-mix(in oklab, var(--sidebar-foreground) 35%, transparent)}}.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/70{color:color-mix(in oklab, var(--sidebar-foreground) 70%, transparent)}}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.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,)}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-70{opacity:.7}.opacity-100{opacity:1}.bg-blend-color{background-blend-mode:color}.shadow-2xl{--tw-shadow:var(--shadow-2xl);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:var(--shadow-lg);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:var(--shadow-md);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:var(--shadow-sm);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-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)}.ring-3{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-accent\/60{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.ring-accent\/60{--tw-ring-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.ring-background{--tw-ring-color:var(--background)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.ring-ring\/30{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.ring-ring\/30{--tw-ring-color:color-mix(in oklab, var(--ring) 30%, transparent)}}.ring-transparent{--tw-ring-color:transparent}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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,)}.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-color\,border-color\,box-shadow\,color\,opacity\,transform\]{transition-property:background-color,border-color,box-shadow,color,opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[border-color\,box-shadow\]{transition-property: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-\[border-color\,transform\]{transition-property:border-color,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;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-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}.ease-\[cubic-bezier\(0\.16\,1\,0\.3\,1\)\]{--tw-ease:cubic-bezier(.16,1,.3,1);transition-timing-function:cubic-bezier(.16,1,.3,1)}.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)}.ease-out-quart{--tw-ease:cubic-bezier(.25, 1, .5, 1);transition-timing-function:cubic-bezier(.25,1,.5,1)}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.running{animation-play-state:running}.slide-in-from-bottom-\[0\.375rem\]{--tw-enter-translate-y:.375rem}.group-focus-within\:pointer-events-auto:is(:where(.group):focus-within *){pointer-events:auto}.group-focus-within\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\:pointer-events-auto:is(:where(.group):hover *){pointer-events:auto}.group-hover\:text-foreground:is(:where(.group):hover *){color:var(--foreground)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\/row\:text-foreground:is(:where(.group\/row):hover *){color:var(--foreground)}.group-hover\/row\:opacity-100:is(:where(.group\/row):hover *){opacity:1}}.group-focus\/dropdown-menu-item\:text-accent-foreground:is(:where(.group\/dropdown-menu-item):focus *){color:var(--accent-foreground)}.group-has-data-\[size\=lg\]\/avatar-group\:size-10:is(:where(.group\/avatar-group):has([data-size=lg]) *){width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.group-has-data-\[size\=sm\]\/avatar-group\:size-6:is(:where(.group\/avatar-group):has([data-size=sm]) *){width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[size\=default\]\/avatar\:size-2\.5:is(:where(.group\/avatar)[data-size=default] *){width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.group-data-\[size\=lg\]\/avatar\:size-3:is(:where(.group\/avatar)[data-size=lg] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/alert-dialog-content\:grid:is(:where(.group\/alert-dialog-content)[data-size=sm] *){display:grid}.group-data-\[size\=sm\]\/alert-dialog-content\:grid-cols-2:is(:where(.group\/alert-dialog-content)[data-size=sm] *){grid-template-columns:repeat(2,minmax(0,1fr))}.group-data-\[size\=sm\]\/avatar\:size-2:is(:where(.group\/avatar)[data-size=sm] *){width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.group-data-\[size\=sm\]\/avatar\:text-xs:is(:where(.group\/avatar)[data-size=sm] *){font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.group-data-\[spacing\=0\]\/toggle-group\:rounded-none:is(:where(.group\/toggle-group)[data-spacing="0"] *){border-radius:0}.group-data-\[spacing\=0\]\/toggle-group\:px-2:is(:where(.group\/toggle-group)[data-spacing="0"] *){padding-inline:calc(var(--spacing) * 2)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.placeholder\:text-muted-foreground::placeholder,.placeholder\:text-muted-foreground\/60::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/60::placeholder{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing) * 0)}.after\:-inset-x-3:after{content:var(--tw-content);inset-inline:calc(var(--spacing) * -3)}.after\:-inset-y-2:after{content:var(--tw-content);inset-block:calc(var(--spacing) * -2)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:border:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.after\:border-border:after{content:var(--tw-content);border-color:var(--border)}.after\:mix-blend-darken:after{content:var(--tw-content);mix-blend-mode:darken}.focus-within\:border-ring:focus-within{border-color:var(--ring)}.focus-within\:ring-3:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-ring\/30:focus-within{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-within\:ring-ring\/30:focus-within{--tw-ring-color:color-mix(in oklab, var(--ring) 30%, transparent)}}@media (hover:hover){.hover\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:border-ring:hover{border-color:var(--ring)}.hover\:bg-accent:hover,.hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary:hover,.hover\:bg-primary\/20:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/20:hover{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary-foreground:hover{color:var(--primary-foreground)}.hover\:text-sidebar-foreground:hover{color:var(--sidebar-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus\:z-10:focus{z-index:10}.focus\:border-ring:focus{border-color:var(--ring)}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.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-3:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring\/30:focus{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-ring\/30:focus{--tw-ring-color:color-mix(in oklab, var(--ring) 30%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}:is(.focus\:\*\*\:text-accent-foreground:focus *),:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--accent-foreground)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-destructive:focus-visible,.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:opacity-100:focus-visible{opacity:1}.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-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 40%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.group-data-\[spacing\=0\]\/toggle-group\:has-data-\[icon\=inline-end\]\:pr-1\.5:is(:where(.group\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.group-data-\[spacing\=0\]\/toggle-group\:has-data-\[icon\=inline-start\]\:pl-1\.5:is(:where(.group\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[slot\=alert-dialog-media\]\:grid-rows-\[auto_auto_1fr\]:has([data-slot=alert-dialog-media]){grid-template-rows:auto auto 1fr}.has-data-\[slot\=alert-dialog-media\]\:gap-x-4:has([data-slot=alert-dialog-media]){column-gap:calc(var(--spacing) * 4)}.has-data-\[state\=checked\]\:bg-primary:has([data-state=checked]){background-color:var(--primary)}.has-data-\[state\=checked\]\:text-primary-foreground:has([data-state=checked]){color:var(--primary-foreground)}@media (hover:hover){.has-data-\[state\=checked\]\:hover\:bg-primary:has([data-state=checked]):hover{background-color:var(--primary)}}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-invalid\:aria-checked\:border-primary[aria-invalid=true][aria-checked=true]{border-color:var(--primary)}.aria-pressed\:bg-muted[aria-pressed=true]{background-color:var(--muted)}.data-inset\:pl-7[data-inset]{padding-left:calc(var(--spacing) * 7)}.data-\[side\=bottom\]\:inset-x-0[data-side=bottom]{inset-inline:calc(var(--spacing) * 0)}.data-\[side\=bottom\]\:bottom-0[data-side=bottom]{bottom:calc(var(--spacing) * 0)}.data-\[side\=bottom\]\:h-auto[data-side=bottom]{height:auto}.data-\[side\=bottom\]\:border-t[data-side=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:inset-y-0[data-side=left]{inset-block:calc(var(--spacing) * 0)}.data-\[side\=left\]\:left-0[data-side=left]{left:calc(var(--spacing) * 0)}.data-\[side\=left\]\:h-full[data-side=left]{height:100%}.data-\[side\=left\]\:w-3\/4[data-side=left]{width:75%}.data-\[side\=left\]\:border-r[data-side=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:inset-y-0[data-side=right]{inset-block:calc(var(--spacing) * 0)}.data-\[side\=right\]\:right-0[data-side=right]{right:calc(var(--spacing) * 0)}.data-\[side\=right\]\:h-full[data-side=right]{height:100%}.data-\[side\=right\]\:w-3\/4[data-side=right]{width:75%}.data-\[side\=right\]\:border-l[data-side=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:inset-x-0[data-side=top]{inset-inline:calc(var(--spacing) * 0)}.data-\[side\=top\]\:top-0[data-side=top]{top:calc(var(--spacing) * 0)}.data-\[side\=top\]\:h-auto[data-side=top]{height:auto}.data-\[side\=top\]\:border-b[data-side=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:max-w-xs[data-size=default]{max-width:var(--container-xs)}.data-\[size\=lg\]\:size-10[data-size=lg]{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.data-\[size\=sm\]\:size-6[data-size=sm]{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.data-\[size\=sm\]\:max-w-xs[data-size=sm]{max-width:var(--container-xs)}.data-\[size\=sm\]\:rounded-\[min\(var\(--radius-md\)\,10px\)\][data-size=sm]{border-radius:min(var(--radius-md), 10px)}:is(.\*\:data-\[slot\=avatar\]\:ring-2>*)[data-slot=avatar]{--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)}:is(.\*\:data-\[slot\=avatar\]\:ring-background>*)[data-slot=avatar]{--tw-ring-color:var(--background)}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:first\:rounded-l-lg:is(:where(.group\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"]:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:first\:rounded-t-lg:is(:where(.group\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"]:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:last\:rounded-r-lg:is(:where(.group\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"]:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:last\:rounded-b-lg:is(:where(.group\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"]:last-child{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:overflow-hidden[data-state=closed]{overflow:hidden}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=on\]\:bg-muted[data-state=on]{background-color:var(--muted)}.data-\[state\=on\]\:bg-primary[data-state=on]{background-color:var(--primary)}.data-\[state\=on\]\:text-primary-foreground[data-state=on]{color:var(--primary-foreground)}@media (hover:hover){.data-\[state\=on\]\:hover\:bg-primary[data-state=on]:hover{background-color:var(--primary)}}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0:is(:where(.group\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"][data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-t-0:is(:where(.group\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"][data-variant=outline]{border-top-style:var(--tw-border-style);border-top-width:0}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l:is(:where(.group\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"][data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-t:is(:where(.group\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"][data-variant=outline]:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}@media (width>=40rem){.sm\:top-4{top:calc(var(--spacing) * 4)}.sm\:right-4{right:calc(var(--spacing) * 4)}.sm\:max-h-\[calc\(100dvh-3rem\)\]{max-height:calc(100dvh - 3rem)}.sm\:w-md{width:var(--container-md)}.sm\:max-w-\[calc\(100vw-3rem\)\]{max-width:calc(100vw - 3rem)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:rounded-l-2xl{border-top-left-radius:calc(var(--radius) * 1.8);border-bottom-left-radius:calc(var(--radius) * 1.8)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:row-span-2:is(:where(.group\/alert-dialog-content)[data-size=default] *){grid-row:span 2/span 2}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:place-items-start:is(:where(.group\/alert-dialog-content)[data-size=default] *){place-items:start}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:text-left:is(:where(.group\/alert-dialog-content)[data-size=default] *){text-align:left}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:group-has-data-\[slot\=alert-dialog-media\]\/alert-dialog-content\:col-start-2:is(:where(.group\/alert-dialog-content)[data-size=default] *):is(:where(.group\/alert-dialog-content):has([data-slot=alert-dialog-media]) *){grid-column-start:2}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:has-data-\[slot\=alert-dialog-media\]\:grid-rows-\[auto_1fr\]:is(:where(.group\/alert-dialog-content)[data-size=default] *):has([data-slot=alert-dialog-media]){grid-template-rows:auto 1fr}.data-\[side\=left\]\:sm\:max-w-sm[data-side=left],.data-\[side\=right\]\:sm\:max-w-sm[data-side=right],.data-\[size\=default\]\:sm\:max-w-sm[data-size=default]{max-width:var(--container-sm)}}@media (width>=48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-72{width:calc(var(--spacing) * 72)}.md\:flex-1{flex:1}.md\:flex-none{flex:none}.md\:grid-cols-\[18rem_minmax\(0\,1fr\)\]{grid-template-columns:18rem minmax(0,1fr)}.md\:flex-row{flex-direction:row}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:py-10{padding-block:calc(var(--spacing) * 10)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-pretty{text-wrap:pretty}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-card:is(.dark *){background-color:var(--card)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:text-card-foreground:is(.dark *){color:var(--card-foreground)}.dark\:shadow-\[2px_3px_12px_0_oklch\(0\.14_0\.01_58_\/_0\.34\)\]:is(.dark *){--tw-shadow:2px 3px 12px 0 var(--tw-shadow-color,oklch(14% .01 58/.34));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:after\:mix-blend-lighten:is(.dark *):after{content:var(--tw-content);mix-blend-mode:lighten}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:bg-accent:where([data-state=open]),.data-open\:bg-accent:where([data-open]:not([data-open=false])){background-color:var(--accent)}.data-open\:text-accent-foreground:where([data-state=open]),.data-open\:text-accent-foreground:where([data-open]:not([data-open=false])){color:var(--accent-foreground)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-state=open]),.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-state=open]),.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-state=open]),.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-state=open]),.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*-100%)}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-state=closed]),.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-state=closed]),.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-state=closed]),.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-state=closed]),.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*-100%)}.data-checked\:border-primary:where([data-state=checked]),.data-checked\:border-primary:where([data-checked]:not([data-checked=false])){border-color:var(--primary)}.data-checked\:bg-primary:where([data-state=checked]),.data-checked\:bg-primary:where([data-checked]:not([data-checked=false])){background-color:var(--primary)}.data-checked\:text-primary-foreground:where([data-state=checked]),.data-checked\:text-primary-foreground:where([data-checked]:not([data-checked=false])){color:var(--primary-foreground)}.dark\:data-checked\:bg-primary:is(.dark *):where([data-state=checked]),.dark\:data-checked\:bg-primary:is(.dark *):where([data-checked]:not([data-checked=false])){background-color:var(--primary)}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-horizontal\:h-2\.5:where([data-orientation=horizontal]){height:calc(var(--spacing) * 2.5)}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-horizontal\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.data-horizontal\:border-t:where([data-orientation=horizontal]){border-top-style:var(--tw-border-style);border-top-width:1px}.data-horizontal\:border-t-transparent:where([data-orientation=horizontal]){border-top-color:#0000}.data-vertical\:h-full:where([data-orientation=vertical]){height:100%}.data-vertical\:w-2\.5:where([data-orientation=vertical]){width:calc(var(--spacing) * 2.5)}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:flex-col:where([data-orientation=vertical]){flex-direction:column}.data-vertical\:items-stretch:where([data-orientation=vertical]){align-items:stretch}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.data-vertical\:border-l:where([data-orientation=vertical]){border-left-style:var(--tw-border-style);border-left-width:1px}.data-vertical\:border-l-transparent:where([data-orientation=vertical]){border-left-color:#0000}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-moz-range-thumb\]\:size-3::-moz-range-thumb{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\:\:-moz-range-thumb\]\:cursor-pointer::-moz-range-thumb{cursor:pointer}.\[\&\:\:-moz-range-thumb\]\:appearance-none::-moz-range-thumb{appearance:none}.\[\&\:\:-moz-range-thumb\]\:rounded-full::-moz-range-thumb{border-radius:3.40282e38px}.\[\&\:\:-moz-range-thumb\]\:border-0::-moz-range-thumb{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-moz-range-thumb\]\:bg-primary::-moz-range-thumb{background-color:var(--primary)}.\[\&\:\:-webkit-slider-thumb\]\:size-3::-webkit-slider-thumb{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\:\:-webkit-slider-thumb\]\:cursor-pointer::-webkit-slider-thumb{cursor:pointer}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-slider-thumb\]\:bg-primary::-webkit-slider-thumb{background-color:var(--primary)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.group-has-data-\[size\=lg\]\/avatar-group\:\[\&\>svg\]\:size-5:is(:where(.group\/avatar-group):has([data-size=lg]) *)>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.group-has-data-\[size\=sm\]\/avatar-group\:\[\&\>svg\]\:size-3:is(:where(.group\/avatar-group):has([data-size=sm]) *)>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=default\]\/avatar\:\[\&\>svg\]\:size-2:is(:where(.group\/avatar)[data-size=default] *)>svg,.group-data-\[size\=lg\]\/avatar\:\[\&\>svg\]\:size-2:is(:where(.group\/avatar)[data-size=lg] *)>svg{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.group-data-\[size\=sm\]\/avatar\:\[\&\>svg\]\:hidden:is(:where(.group\/avatar)[data-size=sm] *)>svg{display:none}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:oklch(95.82% .0152 90.2357);--foreground:oklch(37.6% .0225 64.3434);--card:oklch(99.14% .0098 87.4695);--card-foreground:oklch(37.6% .0225 64.3434);--popover:oklch(99.14% .0098 87.4695);--popover-foreground:oklch(37.6% .0225 64.3434);--primary:oklch(61.8% .0778 65.5444);--primary-foreground:oklch(100% 0 0);--secondary:oklch(88.46% .0302 85.5655);--secondary-foreground:oklch(43.13% .03 64.9288);--muted:oklch(92.39% .019 83.0636);--muted-foreground:oklch(53.91% .0387 71.1655);--accent:oklch(83.48% .0426 88.8064);--accent-foreground:oklch(37.6% .0225 64.3434);--destructive:oklch(54.71% .1438 32.9149);--border:oklch(86.06% .0321 84.5881);--input:oklch(86.06% .0321 84.5881);--ring:oklch(61.8% .0778 65.5444);--chart-1:oklch(61.8% .0778 65.5444);--chart-2:oklch(56.04% .0624 68.5805);--chart-3:oklch(48.51% .057 72.6827);--chart-4:oklch(67.77% .0624 64.7755);--chart-5:oklch(72.64% .0581 66.6967);--radius:.25rem;--sidebar:oklch(92.39% .019 83.0636);--sidebar-foreground:oklch(37.6% .0225 64.3434);--sidebar-primary:oklch(61.8% .0778 65.5444);--sidebar-primary-foreground:oklch(100% 0 0);--sidebar-accent:oklch(83.48% .0426 88.8064);--sidebar-accent-foreground:oklch(37.6% .0225 64.3434);--sidebar-border:oklch(86.06% .0321 84.5881);--sidebar-ring:oklch(61.8% .0778 65.5444);--destructive-foreground:oklch(100% 0 0);--font-sans:Libre Baskerville, serif;--font-serif:Lora, serif;--font-mono:IBM Plex Mono, monospace;--shadow-color:#3a332c;--shadow-opacity:.12;--shadow-blur:5px;--shadow-spread:0px;--shadow-offset-x:2px;--shadow-offset-y:3px;--letter-spacing:0em;--spacing:.25rem;--shadow-2xs:2px 3px 5px 0px #3a332c0f;--shadow-xs:2px 3px 5px 0px #3a332c0f;--shadow-sm:2px 3px 5px 0px #3a332c1f, 2px 1px 2px -1px #3a332c1f;--shadow:2px 3px 5px 0px #3a332c1f, 2px 1px 2px -1px #3a332c1f;--shadow-md:2px 3px 5px 0px #3a332c1f, 2px 2px 4px -1px #3a332c1f;--shadow-lg:2px 3px 5px 0px #3a332c1f, 2px 4px 6px -1px #3a332c1f;--shadow-xl:2px 3px 5px 0px #3a332c1f, 2px 8px 10px -1px #3a332c1f;--shadow-2xl:2px 3px 5px 0px #3a332c4d;--tracking-normal:0em}.dark{--background:oklch(27.47% .0139 57.6523);--foreground:oklch(92.39% .019 83.0636);--card:oklch(32.37% .0155 59.0603);--card-foreground:oklch(92.39% .019 83.0636);--popover:oklch(32.37% .0155 59.0603);--popover-foreground:oklch(92.39% .019 83.0636);--primary:oklch(72.64% .0581 66.6967);--primary-foreground:oklch(27.47% .0139 57.6523);--secondary:oklch(37.95% .0181 57.128);--secondary-foreground:oklch(92.39% .019 83.0636);--muted:oklch(29.39% .0125 62.1298);--muted-foreground:oklch(79.82% .0243 82.1078);--accent:oklch(41.86% .0281 56.3404);--accent-foreground:oklch(92.39% .019 83.0636);--destructive:oklch(54.71% .1438 32.9149);--border:oklch(37.95% .0181 57.128);--input:oklch(37.95% .0181 57.128);--ring:oklch(72.64% .0581 66.6967);--chart-1:oklch(72.64% .0581 66.6967);--chart-2:oklch(67.77% .0624 64.7755);--chart-3:oklch(61.8% .0778 65.5444);--chart-4:oklch(56.04% .0624 68.5805);--chart-5:oklch(48.51% .057 72.6827);--sidebar:oklch(27.47% .0139 57.6523);--sidebar-foreground:oklch(92.39% .019 83.0636);--sidebar-primary:oklch(72.64% .0581 66.6967);--sidebar-primary-foreground:oklch(27.47% .0139 57.6523);--sidebar-accent:oklch(41.86% .0281 56.3404);--sidebar-accent-foreground:oklch(92.39% .019 83.0636);--sidebar-border:oklch(37.95% .0181 57.128);--sidebar-ring:oklch(72.64% .0581 66.6967);--destructive-foreground:oklch(100% 0 0);--radius:.25rem;--font-sans:Libre Baskerville, serif;--font-serif:Lora, serif;--font-mono:IBM Plex Mono, monospace;--shadow-color:#3a332c;--shadow-opacity:.12;--shadow-blur:5px;--shadow-spread:0px;--shadow-offset-x:2px;--shadow-offset-y:3px;--letter-spacing:0em;--spacing:.25rem;--shadow-2xs:2px 3px 5px 0px #3a332c0f;--shadow-xs:2px 3px 5px 0px #3a332c0f;--shadow-sm:2px 3px 5px 0px #3a332c1f, 2px 1px 2px -1px #3a332c1f;--shadow:2px 3px 5px 0px #3a332c1f, 2px 1px 2px -1px #3a332c1f;--shadow-md:2px 3px 5px 0px #3a332c1f, 2px 2px 4px -1px #3a332c1f;--shadow-lg:2px 3px 5px 0px #3a332c1f, 2px 4px 6px -1px #3a332c1f;--shadow-xl:2px 3px 5px 0px #3a332c1f, 2px 8px 10px -1px #3a332c1f;--shadow-2xl:2px 3px 5px 0px #3a332c4d}@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-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-space-x-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-outline-style{syntax:"*";inherits:false;initial-value:solid}@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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
|