@qearlyao/familiar 0.4.1 → 0.4.5
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/README.md +2 -1
- package/dist/conversation/contact-note.js +3 -0
- package/dist/lifecycle/service.js +165 -1
- package/dist/web/daemon.js +2 -0
- package/dist/web/file-routes.js +134 -0
- package/dist/web/http.js +2 -2
- package/dist/web/messages.js +11 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/web/dist/assets/index-BRRpS8Nf.js +8 -0
- package/web/dist/assets/index-CTbDswwP.css +2 -0
- package/web/dist/assets/ui-Cl8N5bkD.js +51 -0
- package/web/dist/index.html +4 -7
- package/web/dist/assets/index-D5Kd_ara.js +0 -8
- package/web/dist/assets/index-DbJZ_MJn.css +0 -2
- package/web/dist/assets/ui-C12-nN_X.js +0 -51
|
@@ -0,0 +1,8 @@
|
|
|
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,Mt as ee,N as S,Nt as C,O as w,Ot as te,P as T,Q as E,R as D,S as ne,St as re,T as ie,Tt as ae,U as O,V as oe,W as se,X as ce,Y as le,Z as ue,_ as de,_t as fe,a as pe,at as me,b as he,bt as ge,c as _e,ct as ve,d as ye,dt as be,et as xe,f as Se,ft as Ce,g as we,gt as Te,h as Ee,ht as De,i as Oe,it as ke,j as Ae,jt 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 k,s as Ke,st as qe,t as Je,tt as Ye,u as Xe,ut as Ze,v as Qe,vt as $e,w as et,wt as tt,x as nt,xt as rt,y as it,yt as at,z as ot}from"./ui-Cl8N5bkD.js";import{n as A,r as st,t as ct}from"./markdown-kaIeGxdv.js";import{t as lt}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 j=e(t(),1),ut=n();function M(...e){return Je(g(e))}var dt=oe(`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`}}),N=r();function P({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i}){return(0,N.jsx)(r?s:`button`,{"data-slot":`button`,"data-variant":t,"data-size":n,className:M(dt({variant:t,size:n,className:e})),...i})}function ft(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`step-${Date.now()}-${Math.random().toString(36).slice(2)}`}function pt(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:ft(),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:ft(),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 mt(){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 ht(){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 gt(e,t){return(await F(`/api/web/auth/login`,`POST`,{token:e,deviceName:t?.trim()||void 0},`auth/login`)).device}async function _t(){let e=await fetch(`/api/web/auth/devices`);if(!e.ok)throw Error(`auth/devices: ${e.status}`);return(await e.json()).devices}async function vt(e){await F(`/api/web/auth/devices`,`DELETE`,{id:e},`auth/devices`)}async function yt(){return(await F(`/api/web/auth/devices/revoke-others`,`POST`,{},`auth/devices/revoke-others`)).revoked}async function bt(){await F(`/api/web/auth/logout`,`POST`,{},`auth/logout`)}async function xt(){let e=await fetch(`/api/web/sessions`);if(!e.ok)throw Error(`sessions: ${e.status}`);return(await e.json()).sessions}async function St(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(pt),hasMore:i.hasMore,channelKey:i.channelKey}}async function Ct(){let e=await fetch(`/api/web/diaries`);if(!e.ok)throw Error(`diaries: ${e.status}`);return(await e.json()).diaries}async function wt(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 Tt(){let e=await fetch(`/api/web/files`);if(!e.ok)throw Error(`files: ${e.status}`);return(await e.json()).files}async function Et(e){let t=new URLSearchParams({id:e}),n=await fetch(`/api/web/file?${t.toString()}`);if(!n.ok)throw Error(`file: ${n.status}`);return(await n.json()).file}async function Dt(e,t){return(await F(`/api/web/file`,`PUT`,{id:e,content:t},`file`)).file}async function Ot(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 kt(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 At(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 jt(){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 F(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 Mt(e){let t=await F(`/api/web/agent/models`,`POST`,{model:e},`agent/models`);return{models:t.models,added:t.added??[]}}async function Nt(e){let t=await F(`/api/web/agent/models`,`DELETE`,{model:e},`agent/models`);return{models:t.models,added:t.added??[]}}async function Pt(e,t){return F(`/api/web/agent/settings`,`POST`,{channelKey:e,...t},`agent/settings`)}async function Ft(e){await F(`/api/web/agent/new`,`POST`,{channelKey:e},`agent/new`)}async function It(){let e=await fetch(`/api/web/memes`);if(!e.ok)throw Error(`memes: ${e.status}`);return(await e.json()).families}async function Lt(){let e=await fetch(`/api/web/config`);if(!e.ok)throw Error(`config: ${e.status}`);return await e.json()}async function Rt(e,t){return F(`/api/web/config`,`POST`,{key:e,value:t},`config`)}async function zt(e){return F(`/api/web/config`,`DELETE`,{key:e},`config`)}var Bt=/\.(?:jpe?g|png|gif|webp)(?:\?[^\s]*)?$/i,Vt=/https?:\/\/[^\s)<>"']+/gi,Ht=/meme:\s*/gi,Ut=/meme:\s*([^\n]*?)\($/i;function Wt(e){return`meme: ${e.name} (${e.url})`}function Gt(e){let t=Ut.exec(e);if(t)return{before:e.slice(0,t.index),name:(t[1]??``).trim()}}function Kt(e,t){let n=e.indexOf(`
|
|
2
|
+
`,t),r=n===-1?e.length:n,i=e.slice(t,r),a=new RegExp(Vt.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 qt(e){let t=[],n=0;for(;n<e.length;){Ht.lastIndex=n,Vt.lastIndex=n;let r=Ht.exec(e),i=Vt.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?Kt(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}Bt.test(c)&&t.push({type:`image-url`,index:o,whole:c,url:c}),n=o+c.length}return t}var Jt=()=>[{type:`text`,value:``}];function I(e){return{type:`text`,value:e}}function Yt(e){return e.trim().length>0}function Xt(e,t){return e?t?`${e.replace(/[ \t]+$/,``).replace(/\n+$/,``)}\n${t.replace(/^\n+/,``)}`:e:t}function Zt(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 Qt(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 $t(e){return e.flatMap(e=>e.type===`meme`?[Wt(e)]:Yt(e.value)?[e.value.trim()]:[]).join(`
|
|
3
|
+
`).trim()}function en(e){return $t(e).length>0}function tn(e,t,n){let r=t&&e[t.blockIndex]?.type===`text`?t.blockIndex:Qt(e),i=e[r];if(!i||i.type!==`text`)return{blocks:[...e,{type:`meme`,...n},I(``)],focusIndex:e.length+1};let{start:a,end:o}=t?Zt(i.value,t):{start:i.value.length,end:i.value.length},s=i.value.slice(0,a),c=i.value.slice(o),l=[...s?[I(s)]:[],{type:`meme`,...n},I(c)];return{blocks:[...e.slice(0,r),...l,...e.slice(r+1)],focusIndex:r+l.length-1}}function nn(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=Xt(e.value,i.value);continue}n.push({...i})}if(n.length===0)return{blocks:Jt(),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,I(``)],focusIndex:i===-1?n.length:i}}function rn({onPick:e}){let[t,n]=(0,j.useState)(!1),[r,i]=(0,j.useState)(null),[a,o]=(0,j.useState)(null),[s,c]=(0,j.useState)(null),[l,u]=(0,j.useState)(``),d=(0,j.useRef)(null),f=(0,j.useRef)(!1);(0,j.useEffect)(()=>{t&&(r!=null||f.current||(f.current=!0,It().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,j.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,j.useMemo)(()=>r?r.find(e=>e.name===s)??r[0]??null:null,[r,s]),m=(0,j.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,N.jsxs)(Ie,{open:t,onOpenChange:n,children:[(0,N.jsx)(Ee,{asChild:!0,children:(0,N.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,"aria-label":`memes`,className:`text-muted-foreground hover:text-foreground`,children:(0,N.jsx)(E,{className:`size-4`})})}),(0,N.jsx)(He,{children:(0,N.jsx)(Se,{side:`top`,align:`end`,sideOffset:10,collisionPadding:16,className:M(`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,N.jsx)(`div`,{className:`px-2 py-6 text-center font-serif text-sm italic text-muted-foreground`,children:a}):r?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`div`,{className:`flex items-center gap-3 px-1 pb-2 text-sm`,children:r.map((e,t)=>(0,N.jsxs)(`span`,{className:`flex items-center gap-3`,children:[t>0&&(0,N.jsx)(`span`,{className:`text-muted-foreground/40`,children:`·`}),(0,N.jsx)(`button`,{type:`button`,onClick:()=>c(e.name),className:M(`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,N.jsx)(`input`,{ref:d,type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:`search by name…`,className:M(`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,N.jsx)(`div`,{className:`max-h-72 overflow-y-auto`,children:m.length===0?(0,N.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,N.jsx)(`div`,{className:`grid grid-cols-4 gap-2 sm:grid-cols-5`,children:m.map(e=>(0,N.jsxs)(`button`,{type:`button`,onClick:()=>h(e),title:e.name,className:M(`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,N.jsx)(`img`,{src:e.url,alt:e.name,loading:`lazy`,className:`h-full w-full object-cover`}),(0,N.jsx)(`span`,{className:M(`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,N.jsx)(`div`,{className:`px-2 py-6 text-center font-serif text-sm italic text-muted-foreground/80`,children:`opening the drawer…`})})})]})}function an(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 on({blocks:e,personaName:t,onUpdateBlocks:n,onPasteFiles:r,onSubmit:i}){let a=(0,j.useRef)(new Map),o=(0,j.useRef)(0),s=(0,j.useRef)(null),c=!en(e);(0,j.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=an(e,a.current,o.current);n(e=>{let n=tn(e,r,t);return s.current=n.focusIndex,o.current=n.focusIndex,n.blocks})},u=e=>{n(t=>{let n=nn(t,e);return s.current=n.focusIndex,o.current=n.focusIndex,n.blocks})};return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(rn,{onPick:l}),(0,N.jsx)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1.5`,children:e.map((e,s)=>e.type===`meme`?(0,N.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,N.jsx)(`img`,{src:e.url,alt:e.name,loading:`lazy`,className:`size-12 rounded-sm object-cover`}),(0,N.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-serif text-xs italic text-muted-foreground`,children:e.name}),(0,N.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,N.jsx)(O,{className:`size-3`})})]},`${e.url}-${s}`):(0,N.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 sn(e=0){return{blocks:Jt(),attachments:[],revision:e}}function cn(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 ln(e){return sn(e.revision+1)}function un(e,t){return e.revision===t&&!en(e.blocks)&&e.attachments.length===0}function dn({onSend:e,onAbort:t,streaming:n,personaName:r}){let[i,a]=(0,j.useState)(()=>sn()),[o,s]=(0,j.useState)(!1),[c,l]=(0,j.useState)(!1),[u,d]=(0,j.useState)(),f=(0,j.useRef)(null),{blocks:p,attachments:m}=i,h=(0,j.useMemo)(()=>$t(p),[p]),g=async()=>{if(c)return;let t=i,n=$t(t.blocks);if(!n&&t.attachments.length===0)return;let r=t.revision+1;d(void 0),l(!0),a(ln);try{await e(n,t.attachments)}catch(e){a(e=>un(e,r)?t:e),d(cn(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,N.jsx)(`div`,{className:`border-t border-border bg-background pb-[env(safe-area-inset-bottom)]`,children:(0,N.jsxs)(`div`,{className:`mx-auto max-w-3xl px-5 py-4`,children:[(0,N.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,N.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:M(`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,N.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:m.map((e,t)=>(0,N.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,N.jsx)(O,{className:`size-3`})]},`${e.name}-${t}`))}),(0,N.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,N.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>f.current?.click(),"aria-label":`attach`,className:`text-muted-foreground hover:text-foreground`,children:(0,N.jsx)(qe,{className:`size-4`})}),(0,N.jsx)(on,{blocks:p,personaName:r,onUpdateBlocks:_,onPasteFiles:v,onSubmit:()=>void g()}),(0,N.jsx)(P,{type:`button`,size:`sm`,onClick:x?t:()=>void g(),disabled:b,"aria-label":x?`stop`:`send`,className:`h-8 px-3`,children:x?(0,N.jsx)(le,{className:`size-3 fill-current`,strokeWidth:0}):(0,N.jsx)(xe,{className:`size-4`})})]})]}),u?(0,N.jsx)(`p`,{className:`mt-1.5 text-center font-serif text-xs italic text-destructive`,children:u}):null,(0,N.jsx)(`p`,{className:`mt-1.5 text-center text-[11px] tracking-wide text-muted-foreground`,children:`enter to send · shift+enter for newline`})]})})}function fn({...e}){return(0,N.jsx)(ot,{"data-slot":`collapsible`,...e})}function pn({...e}){return(0,N.jsx)(D,{"data-slot":`collapsible-trigger`,...e})}function mn({...e}){return(0,N.jsx)(b,{"data-slot":`collapsible-content`,...e})}function hn({...e}){return(0,N.jsx)(T,{"data-slot":`sheet`,...e})}function gn({...e}){return(0,N.jsx)(S,{"data-slot":`sheet-portal`,...e})}function _n({className:e,...t}){return(0,N.jsx)(x,{"data-slot":`sheet-overlay`,className:M(`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 vn({className:e,children:t,side:n=`right`,showCloseButton:r=!0,...i}){return(0,N.jsxs)(gn,{children:[(0,N.jsx)(_n,{}),(0,N.jsxs)(Ae,{"data-slot":`sheet-content`,"data-side":n,className:M(`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,N.jsx)(a,{"data-slot":`sheet-close`,asChild:!0,children:(0,N.jsxs)(P,{variant:`ghost`,className:`absolute top-3 right-3`,size:`icon-sm`,children:[(0,N.jsx)(O,{}),(0,N.jsx)(`span`,{className:`sr-only`,children:`Close`})]})})]})]})}function yn({className:e,...t}){return(0,N.jsx)(`div`,{"data-slot":`sheet-header`,className:M(`flex flex-col gap-0.5 p-4`,e),...t})}function bn({className:e,...t}){return(0,N.jsx)(m,{"data-slot":`sheet-title`,className:M(`font-heading text-base font-medium text-foreground`,e),...t})}function xn({className:e,...t}){return(0,N.jsx)(ye,{"data-slot":`radio-group`,className:M(`grid w-full gap-2`,e),...t})}function Sn({className:e,...t}){return(0,N.jsx)(Xe,{"data-slot":`radio-group-item`,className:M(`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,N.jsx)(Pe,{"data-slot":`radio-group-indicator`,className:`flex size-4 items-center justify-center`,children:(0,N.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 Cn({className:e,...t}){return(0,N.jsx)(we,{"data-slot":`label`,className:M(`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 wn({models:e,added:t,current:n,source:r,disabled:i,onChange:a,onAdd:o,onRemove:s}){let[c,l]=(0,j.useState)(``),[u,d]=(0,j.useState)(!1),[f,p]=(0,j.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,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(xn,{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,N.jsxs)(Cn,{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,N.jsx)(Sn,{value:e,id:t}),(0,N.jsxs)(`span`,{className:`min-w-0 flex-1 font-mono text-sm leading-tight`,children:[(0,N.jsx)(`span`,{className:r?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:o}),(0,N.jsx)(`span`,{className:r?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:`/`}),(0,N.jsx)(`span`,{className:r?`text-primary-foreground`:`text-muted-foreground group-hover/row:text-foreground`,children:c})]}),a?(0,N.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,N.jsx)(O,{className:`size-3.5`})}):null]},e)})}),n&&r?(0,N.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,N.jsxs)(`form`,{onSubmit:h,className:`mt-4 flex items-center gap-2`,children:[(0,N.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,N.jsx)(P,{type:`submit`,variant:`outline`,size:`default`,disabled:u||i||!c.trim(),children:`add`})]}),f?(0,N.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-destructive`,children:f}):null]})}var Tn=oe(`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`}}),En=j.createContext({size:`default`,variant:`default`,spacing:0,orientation:`horizontal`});function L({className:e,variant:t,size:n,spacing:r=0,orientation:i=`horizontal`,children:a,...o}){return(0,N.jsx)(Ge,{"data-slot":`toggle-group`,"data-variant":t,"data-size":n,"data-spacing":r,"data-orientation":i,style:{"--gap":r},className:M(`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,N.jsx)(En.Provider,{value:{variant:t,size:n,spacing:r,orientation:i},children:a})})}function R({className:e,children:t,variant:n=`default`,size:r=`default`,...i}){let a=j.useContext(En);return(0,N.jsx)(Re,{"data-slot":`toggle-group-item`,"data-variant":a.variant||n,"data-size":a.size||r,"data-spacing":a.spacing,className:M(`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`,Tn({variant:a.variant||n,size:a.size||r}),e),...i,children:t})}var Dn=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];function On({current:e,supported:t,disabled:n,onChange:r}){let i=Dn.filter(e=>t.includes(e)),a=i.length>0?i:Dn,o=a.length<=1?`grid-cols-1`:a.length===2?`grid-cols-2`:`grid-cols-3`;return(0,N.jsx)(L,{type:`single`,value:e??``,onValueChange:e=>{e&&r(e)},disabled:n,className:M(`grid w-full items-stretch gap-1 rounded-md bg-muted/40 p-1`,o),children:a.map(e=>(0,N.jsx)(R,{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 kn=`familiar.theme`;function An(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches}function jn(){let e=localStorage.getItem(kn);return e===`light`||e===`dark`||e===`auto`?e:`auto`}function Mn(e){localStorage.setItem(kn,e),Nn(e)}function Nn(e){let t=e===`dark`||e===`auto`&&An();document.documentElement.classList.toggle(`dark`,t)}function Pn(e){let t=window.matchMedia(`(prefers-color-scheme: dark)`),n=()=>{e()===`auto`&&Nn(`auto`)};return t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)}var Fn=[`light`,`dark`,`auto`],In={light:v,dark:Ze,auto:be},Ln={light:`light`,dark:`dark`,auto:`system`};function Rn(){let[e,t]=(0,j.useState)(()=>jn());return(0,j.useEffect)(()=>{Mn(e)},[e]),(0,N.jsx)(L,{type:`single`,value:e,onValueChange:e=>{e&&t(e)},spacing:1,className:`rounded-lg bg-muted/40 p-1`,children:Fn.map(e=>{let t=In[e];return(0,N.jsxs)(R,{value:e,"aria-label":Ln[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,N.jsx)(t,{className:`size-4`}),(0,N.jsx)(`span`,{children:Ln[e]})]},e)})})}function zn(e,t,n){let[r,i]=(0,j.useState)(e),[a,o]=(0,j.useState)(!1),[s,c]=(0,j.useState)(!1),l=(0,j.useRef)(!1);(0,j.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 Bn=`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,N.jsxs)(L,{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,N.jsx)(R,{value:`on`,"aria-label":`${n} on`,className:Bn,children:`on`}),(0,N.jsx)(R,{value:`off`,"aria-label":`${n} off`,className:Bn,children:`off`})]})}var Vn=6e4;function Hn({valueMs:e,disabled:t,onCommit:n}){let r=zn(e===void 0?``:String(Math.round(e/Vn)),t=>{let n=Number.parseInt(t,10);if(Number.isNaN(n)||n<1)return`reset`;let r=n*Vn;return r===e?`reset`:{value:r}},n);return(0,N.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=zn(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,N.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 Un=/^[^/\s]+\/[^\s]+$/;function Wn({value:e,placeholder:t,allowEmpty:n,disabled:r,onCommit:i}){let a=e??``,o=zn(a,e=>{let t=e.trim();return t===a?`reset`:t?Un.test(t)?{value:t}:`invalid`:n?{value:``}:`reset`},i);return(0,N.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 Gn({values:e,disabled:t,onChange:n}){let r=e?.[`heartbeat.enabled`].value,i=r===!0;return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(z,{enabled:r,disabled:t,ariaPrefix:`heartbeat`,onChange:e=>void n(`heartbeat.enabled`,e)}),(0,N.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,N.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,N.jsx)(`span`,{className:`flex-1 font-serif text-sm text-foreground`,children:`first wakeup after`}),(0,N.jsx)(Hn,{valueMs:e?.[`heartbeat.idleThresholdMs`].value,disabled:t||!i,onCommit:e=>n(`heartbeat.idleThresholdMs`,e)}),(0,N.jsx)(`span`,{className:`w-14 font-serif text-xs italic text-muted-foreground`,children:`minutes`})]}),(0,N.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`minutes of silence before the first wakeup`})]}),(0,N.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,N.jsx)(`span`,{className:`flex-1 font-serif text-sm text-foreground`,children:`between wakeups`}),(0,N.jsx)(Hn,{valueMs:e?.[`heartbeat.intervalMs`].value,disabled:t||!i,onCommit:e=>n(`heartbeat.intervalMs`,e)}),(0,N.jsx)(`span`,{className:`w-14 font-serif text-xs italic text-muted-foreground`,children:`minutes`})]}),(0,N.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`cadence of subsequent wakeups while you stay quiet`})]})]})]})}function Kn({values:e,disabled:t,onChange:n}){let r=e?.[`image_gen.enabled`].value,i=t||r!==!0;return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(z,{enabled:r,disabled:t,ariaPrefix:`image generation`,onChange:e=>void n(`image_gen.enabled`,e)}),(0,N.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,N.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,N.jsx)(`span`,{className:`font-serif text-sm text-foreground`,children:`primary model`}),(0,N.jsx)(Wn,{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,N.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`format: provider/model-id`})]}),(0,N.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,N.jsx)(`span`,{className:`font-serif text-sm text-foreground`,children:`fallback model`}),(0,N.jsx)(Wn,{value:e?.[`image_gen.fallback_model`].value,placeholder:`none`,allowEmpty:!0,disabled:i,onCommit:e=>n(`image_gen.fallback_model`,e)}),(0,N.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,N.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,N.jsx)(`span`,{className:`flex-1 font-serif text-sm text-foreground`,children:e}),n]}),t?(0,N.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:t}):null]})}function qn({children:e}){return(0,N.jsx)(`h4`,{className:`mb-4 font-serif text-base lowercase tracking-tight text-foreground`,children:e})}function Jn({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,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(`section`,{children:[(0,N.jsx)(qn,{children:`compaction`}),(0,N.jsx)(z,{enabled:a,disabled:n,ariaPrefix:`compaction`,onChange:e=>void r(`memory.lcm.enabled`,e)}),(0,N.jsxs)(`div`,{className:`mt-4`,children:[(0,N.jsx)(xn,{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,N.jsxs)(Cn,{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,N.jsx)(Sn,{value:e,id:t}),(0,N.jsxs)(`span`,{className:`min-w-0 flex-1 font-mono text-sm leading-tight`,children:[(0,N.jsx)(`span`,{className:n?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:r}),(0,N.jsx)(`span`,{className:n?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:`/`}),(0,N.jsx)(`span`,{className:n?`text-primary-foreground`:`text-muted-foreground group-hover/row:text-foreground`,children:a})]})]},e)})}),s===`override`?(0,N.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,N.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-muted-foreground/70`,children:`following your conversation model`}):null]}),(0,N.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,N.jsx)(V,{label:`context threshold`,description:`fraction of context that triggers compaction`,children:(0,N.jsx)(B,{value:e?.[`memory.lcm.contextThreshold`].value,step:.05,min:0,max:1,disabled:c,onCommit:e=>r(`memory.lcm.contextThreshold`,e)})}),(0,N.jsx)(V,{label:`fresh tail count`,description:`most recent messages kept raw, never compacted`,children:(0,N.jsx)(B,{value:e?.[`memory.lcm.freshTailCount`].value,min:1,disabled:c,onCommit:e=>r(`memory.lcm.freshTailCount`,e)})}),(0,N.jsx)(V,{label:`leaf chunk tokens`,description:`max tokens of input per leaf summary`,children:(0,N.jsx)(B,{value:e?.[`memory.lcm.leafChunkTokens`].value,min:1,disabled:c,onCommit:e=>r(`memory.lcm.leafChunkTokens`,e)})}),(0,N.jsx)(V,{label:`leaf target tokens`,description:`target tokens per leaf summary output`,children:(0,N.jsx)(B,{value:e?.[`memory.lcm.leafTargetTokens`].value,min:1,disabled:c,onCommit:e=>r(`memory.lcm.leafTargetTokens`,e)})}),(0,N.jsx)(V,{label:`condense group size`,description:`how many summaries combine into one at the next level`,children:(0,N.jsx)(B,{value:e?.[`memory.lcm.condenseGroupSize`].value,min:1,disabled:c,onCommit:e=>r(`memory.lcm.condenseGroupSize`,e)})}),(0,N.jsx)(V,{label:`max summary depth`,description:`deepest level of recursive summary-of-summaries`,children:(0,N.jsx)(B,{value:e?.[`memory.lcm.maxSummaryDepth`].value,min:1,disabled:c,onCommit:e=>r(`memory.lcm.maxSummaryDepth`,e)})}),(0,N.jsx)(V,{label:`kept after /new`,description:`lowest summary depth kept after /new. -1 keeps full context, 0 keeps every summary.`,children:(0,N.jsx)(B,{value:e?.[`memory.lcm.newSessionRetainDepth`].value,min:-1,disabled:c,onCommit:e=>r(`memory.lcm.newSessionRetainDepth`,e)})})]})]}),(0,N.jsxs)(`section`,{className:`mt-8`,children:[(0,N.jsx)(qn,{children:`ambient`}),(0,N.jsx)(z,{enabled:e?.[`memory.ambient.enabled`].value,disabled:n,ariaPrefix:`ambient`,onChange:e=>void r(`memory.ambient.enabled`,e)}),(0,N.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,N.jsx)(V,{label:`top k`,description:`how many memories to surface per query`,children:(0,N.jsx)(B,{value:e?.[`memory.ambient.topK`].value,min:1,disabled:l,onCommit:e=>r(`memory.ambient.topK`,e)})}),(0,N.jsx)(V,{label:`min query length`,description:`minimum query chars before recall fires`,children:(0,N.jsx)(B,{value:e?.[`memory.ambient.minQueryLength`].value,min:0,disabled:l,onCommit:e=>r(`memory.ambient.minQueryLength`,e)})}),(0,N.jsx)(V,{label:`throttle seconds`,description:`cooldown between recalls`,children:(0,N.jsx)(B,{value:e?.[`memory.ambient.throttleSeconds`].value,min:0,disabled:l,onCommit:e=>r(`memory.ambient.throttleSeconds`,e)})}),(0,N.jsx)(V,{label:`similarity weight`,description:`semantic match to your query`,children:(0,N.jsx)(B,{value:e?.[`memory.ambient.weightSimilarity`].value,step:.05,min:0,disabled:l,onCommit:e=>r(`memory.ambient.weightSimilarity`,e)})}),(0,N.jsx)(V,{label:`valence weight`,description:`emotional charge of the memory`,children:(0,N.jsx)(B,{value:e?.[`memory.ambient.weightValence`].value,step:.05,min:0,disabled:l,onCommit:e=>r(`memory.ambient.weightValence`,e)})}),(0,N.jsx)(V,{label:`recency weight`,description:`favors recent memories`,children:(0,N.jsx)(B,{value:e?.[`memory.ambient.weightRecency`].value,step:.05,min:0,disabled:l,onCommit:e=>r(`memory.ambient.weightRecency`,e)})}),(0,N.jsx)(V,{label:`intensity weight`,description:`favors strongly-felt memories`,children:(0,N.jsx)(B,{value:e?.[`memory.ambient.weightIntensity`].value,step:.05,min:0,disabled:l,onCommit:e=>r(`memory.ambient.weightIntensity`,e)})})]})]}),(0,N.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 Yn(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 Xn(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 Zn(e){let t=new Date(e.lastSeenAt);return Number.isNaN(t.getTime())?0:t.getTime()}function Qn({currentDevice:e,onSignedOut:t}){let[n,r]=(0,j.useState)(e?[e]:[]),[i,a]=(0,j.useState)(!0),[o,s]=(0,j.useState)(),[c,l]=(0,j.useState)(),u=(0,j.useCallback)((e={})=>{e.showLoading&&(a(!0),l(void 0)),_t().then(e=>{r(e),l(void 0)}).catch(e=>{l(e instanceof Error?e.message:String(e))}).finally(()=>{a(!1)})},[]);(0,j.useEffect)(()=>{let e=window.setTimeout(()=>u(),0);return()=>window.clearTimeout(e)},[u]);let d=(0,j.useMemo)(()=>[...n].sort((e,t)=>e.current&&!t.current?-1:!e.current&&t.current?1:Zn(t)-Zn(e)),[n]),f=d.filter(e=>!e.current),p=async e=>{s(e.id),l(void 0);try{await vt(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 bt(),t()}catch(e){l(e instanceof Error?e.message:String(e))}finally{s(void 0)}},h=async()=>{s(`others`),l(void 0);try{await yt(),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,N.jsxs)(`div`,{className:`grid gap-3`,children:[(0,N.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,N.jsxs)(P,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>void m(),disabled:!!o,className:`gap-2`,children:[(0,N.jsx)(Le,{className:`size-3.5`}),`logout`]}),(0,N.jsx)(P,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>void h(),disabled:!!o||f.length===0,children:`sign out others`})]}),(0,N.jsxs)(`div`,{className:`grid gap-2`,children:[d.map(e=>(0,N.jsx)(`div`,{className:M(`rounded-md border border-border bg-background px-3 py-2.5`,e.current&&`border-primary/50`),children:(0,N.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,N.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,N.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,N.jsx)(`p`,{className:`truncate text-sm leading-tight text-foreground`,children:e.deviceName||`unnamed device`}),e.current?(0,N.jsx)(`span`,{className:`font-serif text-xs italic text-primary`,children:`current`}):null]}),(0,N.jsxs)(`p`,{className:`mt-1 font-serif text-xs italic text-muted-foreground`,children:[`last seen `,Yn(e.lastSeenAt)]}),(0,N.jsxs)(`p`,{className:`mt-1 text-xs leading-relaxed text-muted-foreground`,children:[`made `,Yn(e.createdAt),` · expires `,Yn(e.expiresAt)]}),(0,N.jsxs)(`p`,{className:`mt-1 truncate text-xs text-muted-foreground/80`,children:[e.lastIp??`ip unknown`,` · `,Xn(e.userAgent)]})]}),e.current?null:(0,N.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,N.jsx)(y,{className:`size-4`})})]})},e.id)),i?(0,N.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground`,children:`checking devices…`}):null,!i&&d.length===0?(0,N.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground`,children:`no devices found.`}):null]}),c?(0,N.jsx)(`p`,{className:`font-serif text-xs italic text-destructive`,children:c}):null]})}function $n(){let e=(0,j.useRef)(!0);return(0,j.useEffect)(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function er(){let e=$n(),[t,n]=(0,j.useState)(void 0),[r,i]=(0,j.useState)(!1),[a,o]=(0,j.useState)(!1);return{error:t,isLoading:r,isMutating:a,run:(0,j.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 tr(e){let[t,n]=(0,j.useState)(void 0),[r,i]=(0,j.useState)([]),[a,o]=(0,j.useState)([]),{error:s,isLoading:c,isMutating:l,run:u}=er(),d=(0,j.useCallback)(async()=>{e&&await u(()=>Promise.all([At(e),jt()]),{busy:`load`,apply:([e,t])=>{n(e),i(t.models),o(t.added)}})},[e,u]);(0,j.useEffect)(()=>{let e=window.setTimeout(()=>void d(),0);return()=>window.clearTimeout(e)},[d]);let f=(0,j.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(()=>Pt(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,j.useCallback)(e=>f({model:e}),[f]),setThinking:(0,j.useCallback)(e=>f({thinking:e}),[f]),addModel:(0,j.useCallback)(async e=>{await u(()=>Mt(e),{apply:e=>{i(e.models),o(e.added)},rethrow:!0})},[u]),removeModel:(0,j.useCallback)(async e=>{await u(()=>Nt(e),{apply:e=>{i(e.models),o(e.added)},rethrow:!0})},[u]),refetch:d}}function nr(e){let[t,n]=(0,j.useState)(void 0),{error:r,isLoading:i,isMutating:a,run:o}=er(),s=(0,j.useCallback)(async()=>{e&&await o(()=>Lt(),{busy:`load`,apply:n})},[e,o]);return(0,j.useEffect)(()=>{let e=window.setTimeout(()=>void s(),0);return()=>window.clearTimeout(e)},[s]),{data:t,error:r,isLoading:i,isMutating:a,setConfig:(0,j.useCallback)(async(e,t)=>{await o(()=>Rt(e,t),{apply:n,rethrow:!0})},[o]),clearConfig:(0,j.useCallback)(async e=>{await o(()=>zt(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,j.useState)(r);return(0,N.jsxs)(fn,{open:a,onOpenChange:o,children:[(0,N.jsxs)(pn,{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,N.jsx)(n,{className:`mt-0.5 size-5 shrink-0 text-muted-foreground transition-colors group-hover:text-foreground`}),(0,N.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,N.jsx)(`span`,{className:`block font-serif text-base leading-tight tracking-tight text-foreground`,children:e}),(0,N.jsx)(`span`,{className:`mt-1 block text-xs leading-relaxed text-muted-foreground`,children:t})]}),(0,N.jsx)(d,{className:M(`size-4 shrink-0 text-muted-foreground transition-transform duration-150 group-hover:text-foreground`,a&&`rotate-90`)})]}),(0,N.jsx)(mn,{children:(0,N.jsx)(`div`,{className:`px-2 pb-5`,children:(0,N.jsx)(`div`,{className:`mt-4`,children:i})})})]})}function U({children:e,className:t}){return(0,N.jsx)(`p`,{className:M(`px-2 pt-4 pb-1 font-serif text-xs italic text-muted-foreground`,t),children:e})}function rr({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}=tr(n),{data:g,error:_,isLoading:v,isMutating:y,setConfig:b,clearConfig:x}=nr(e),S=!!o&&!!g,C=u||d||v||y,w=l??_;return(0,N.jsx)(hn,{open:e,onOpenChange:t,children:(0,N.jsxs)(vn,{className:`w-screen bg-card shadow-2xl sm:w-md sm:max-w-md sm:rounded-l-2xl`,side:`right`,children:[(0,N.jsx)(yn,{className:`px-6 pt-6 pb-2`,children:(0,N.jsx)(bn,{className:`font-serif text-2xl leading-none tracking-tight text-foreground`,children:`settings`})}),(0,N.jsxs)(`div`,{className:`flex flex-col overflow-y-auto px-5 pt-1 pb-8`,children:[(0,N.jsx)(U,{className:`pt-1`,children:`conversation`}),(0,N.jsx)(H,{title:`model`,description:`which language model carries this conversation.`,icon:ee,defaultOpen:!0,children:(0,N.jsx)(wn,{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,N.jsx)(H,{title:`thinking`,description:`how long the model deliberates before answering.`,icon:je,children:(0,N.jsx)(On,{current:o?.thinking.value,supported:o?.supportedThinking??[],disabled:!S||C,onChange:e=>void p(e)})}),(0,N.jsx)(U,{children:`companion`}),(0,N.jsx)(H,{title:`heartbeat`,description:`your companion's pulse when you've gone quiet.`,icon:$e,children:(0,N.jsx)(Gn,{values:g?.values,disabled:!S||C,onChange:b})}),(0,N.jsx)(H,{title:`image generation`,description:`which model your companion uses to paint.`,icon:fe,children:(0,N.jsx)(Kn,{values:g?.values,disabled:!S||C,onChange:b})}),(0,N.jsx)(H,{title:`memory`,description:`how older conversation is condensed and how earlier memories return.`,icon:tt,children:(0,N.jsx)(Jn,{values:g?.values,models:s,disabled:!S||C,onChange:b,onClear:x})}),(0,N.jsx)(U,{children:`room`}),(0,N.jsx)(H,{title:`theme`,description:`light, dark, or follow your system.`,icon:Fe,children:(0,N.jsx)(Rn,{})}),r===`bearer`&&a?(0,N.jsx)(H,{title:`devices`,description:`where this web room is still open.`,icon:Ce,children:(0,N.jsx)(Qn,{currentDevice:i,onSignedOut:a})}):null,w?(0,N.jsx)(`p`,{className:`mt-4 font-serif text-xs italic text-destructive`,children:w}):null]})]})})}function ir({...e}){return(0,N.jsx)(w,{"data-slot":`alert-dialog`,...e})}function ar({...e}){return(0,N.jsx)(u,{"data-slot":`alert-dialog-portal`,...e})}function or({className:e,...t}){return(0,N.jsx)(f,{"data-slot":`alert-dialog-overlay`,className:M(`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 sr({className:e,size:t=`default`,...n}){return(0,N.jsxs)(ar,{children:[(0,N.jsx)(or,{}),(0,N.jsx)(et,{"data-slot":`alert-dialog-content`,"data-size":t,className:M(`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 cr({className:e,...t}){return(0,N.jsx)(`div`,{"data-slot":`alert-dialog-header`,className:M(`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 lr({className:e,...t}){return(0,N.jsx)(`div`,{"data-slot":`alert-dialog-footer`,className:M(`-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 ur({className:e,...t}){return(0,N.jsx)(Me,{"data-slot":`alert-dialog-title`,className:M(`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 dr({className:e,...t}){return(0,N.jsx)(ie,{"data-slot":`alert-dialog-description`,className:M(`text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}function fr({className:e,variant:t=`default`,size:n=`default`,...r}){return(0,N.jsx)(P,{variant:t,size:n,asChild:!0,children:(0,N.jsx)(ne,{"data-slot":`alert-dialog-action`,className:M(e),...r})})}function pr({className:e,variant:t=`outline`,size:n=`default`,...r}){return(0,N.jsx)(P,{variant:t,size:n,asChild:!0,children:(0,N.jsx)(c,{"data-slot":`alert-dialog-cancel`,className:M(e),...r})})}function mr({channelKey:e,onStarted:t}){let[n,r]=(0,j.useState)(!1),[i,a]=(0,j.useState)(!1),[o,s]=(0,j.useState)(void 0),c=async()=>{if(e){a(!0),s(void 0);try{await Ft(e),r(!1),t()}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}}};return(0,N.jsxs)(ir,{open:n,onOpenChange:e=>{i||r(e)},children:[(0,N.jsx)(P,{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,N.jsx)(ce,{className:`size-4`})}),(0,N.jsxs)(sr,{className:`bg-card`,children:[(0,N.jsxs)(cr,{children:[(0,N.jsx)(ur,{className:`font-serif text-xl tracking-tight`,children:`start fresh?`}),(0,N.jsx)(dr,{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,N.jsx)(`p`,{className:`font-serif text-xs italic text-destructive`,children:o}):null,(0,N.jsxs)(lr,{children:[(0,N.jsx)(pr,{disabled:i,children:`cancel`}),(0,N.jsx)(fr,{onClick:e=>{e.preventDefault(),c()},disabled:i||!e,children:i?`starting…`:`start fresh`})]})]})]})}function hr({...e}){return(0,N.jsx)(he,{"data-slot":`dropdown-menu`,...e})}function gr({...e}){return(0,N.jsx)(nt,{"data-slot":`dropdown-menu-trigger`,...e})}function _r({className:e,align:t=`start`,sideOffset:n=4,...r}){return(0,N.jsx)(it,{children:(0,N.jsx)(de,{"data-slot":`dropdown-menu-content`,sideOffset:n,align:t,className:M(`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 vr({className:e,inset:t,variant:n=`default`,...r}){return(0,N.jsx)(Qe,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:M(`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 yr(e){return e.label?e.label:e.scope===`dm`?`Main Chat`:e.channelName??e.channelId}function br({sessions:e,activeKey:t,onSelect:n}){if(e.length<=1)return null;let r=e.find(e=>e.key===t);return(0,N.jsxs)(hr,{children:[(0,N.jsxs)(gr,{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,N.jsx)(`span`,{className:`font-medium`,children:r?yr(r):`select session`}),(0,N.jsx)(Ne,{className:`size-3 opacity-70`})]}),(0,N.jsx)(_r,{align:`end`,className:`min-w-[180px]`,onCloseAutoFocus:e=>e.preventDefault(),children:e.map(e=>{let r=e.key===t;return(0,N.jsxs)(vr,{onSelect:()=>n(e.key),className:`flex items-center justify-between gap-3`,children:[(0,N.jsx)(`span`,{className:M(`truncate`,r&&`font-medium`),children:yr(e)}),r&&(0,N.jsx)(o,{className:`size-3.5 text-muted-foreground`})]},e.key)})})]})}var xr={connecting:`connecting`,open:`online`,closed:`offline`,error:`error`},Sr={connecting:`reaching out…`,closed:`out of touch · trying again`,error:`out of touch · trying again`};function Cr({nav:e,connection:t,personaName:n,sessions:r,activeSessionKey:a,channelKey:o,onSelectSession:s,onOpenConfig:c,onNewChatStarted:l}){let u=t===`open`;return(0,N.jsx)(`header`,{className:`sticky top-0 z-10 border-b border-border bg-background px-3 py-3 md:px-5`,children:(0,N.jsxs)(`div`,{className:`mx-auto flex max-w-3xl items-center gap-3`,children:[e,(0,N.jsx)(`span`,{"aria-label":xr[t],title:xr[t],className:M(`size-2 rounded-full ring-3 ring-accent/60`,u?`bg-primary`:`bg-muted-foreground/40 ring-transparent`)}),(0,N.jsx)(`span`,{className:`font-serif text-lg leading-none tracking-tight`,children:n}),!u&&(0,N.jsx)(`span`,{className:`font-serif text-xs italic leading-none text-muted-foreground/80`,children:Sr[t]}),(0,N.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[(0,N.jsx)(br,{sessions:r,activeKey:a,onSelect:s}),(0,N.jsx)(mr,{channelKey:o,onStarted:l}),(0,N.jsx)(P,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`settings`,title:`settings`,className:`size-8 text-muted-foreground hover:text-foreground`,onClick:c,children:(0,N.jsx)(i,{className:`size-4`})})]})]})})}function wr({text:e,className:t,components:n,remarkPlugins:r}){let i=(0,j.createElement)(ct,{remarkPlugins:r,components:n},e);return t?(0,j.createElement)(`div`,{className:t},i):i}function Tr({src:e,alt:t,className:n}){return(0,N.jsxs)(T,{children:[(0,N.jsx)(_,{asChild:!0,children:(0,N.jsx)(`button`,{type:`button`,className:M(`inline-block w-fit max-w-full rounded-md text-left outline-none transition-opacity hover:opacity-90 focus-visible:ring-3 focus-visible:ring-ring/40 sm:max-w-[24rem]`,n),children:(0,N.jsx)(`img`,{src:e,alt:t,loading:`lazy`,className:`h-auto max-h-72 max-w-full rounded-md`})})}),(0,N.jsxs)(S,{children:[(0,N.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,N.jsxs)(Ae,{className:`fixed inset-0 z-50 flex items-center justify-center p-3 outline-none sm:p-6`,onCloseAutoFocus:e=>e.preventDefault(),children:[(0,N.jsx)(m,{className:`sr-only`,children:t}),(0,N.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,N.jsxs)(`div`,{className:`fixed top-3 right-3 flex gap-1 sm:top-4 sm:right-4`,children:[(0,N.jsx)(P,{asChild:!0,type:`button`,variant:`ghost`,size:`icon-sm`,title:`open original`,"aria-label":`open original`,children:(0,N.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,children:(0,N.jsx)(l,{className:`size-4`})})}),(0,N.jsx)(a,{asChild:!0,children:(0,N.jsx)(P,{type:`button`,variant:`ghost`,size:`icon-sm`,title:`close preview`,"aria-label":`close preview`,children:(0,N.jsx)(O,{className:`size-4`})})})]})]})]})]})}function Er(e){return e.some(e=>e.type!==`text`||e.value.trim().length>0)}function Dr(e){return{type:`paragraph`,children:e}}function Or(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}Er(n)&&t.push(Dr(n)),n=[],t.push(Dr([r]))}return Er(n)&&t.push(Dr(n)),t.length>0?t:[e]}function kr(){return e=>{for(let t=0;t<e.children.length;t+=1){let n=e.children[t];if(n?.type!==`paragraph`)continue;let r=Or(n);r.length===1&&r[0]===n||(e.children.splice(t,1,...r),t+=r.length-1)}}}function Ar(e){return{type:`text`,value:e}}function jr(e,t=``){return{type:`image`,url:e,alt:t}}function W(e,t){let n=t.replace(/[ \t]+$/,``).replace(/\n{2,}$/,`
|
|
4
|
+
`);n.trim()&&e.push(Ar(n))}function Mr(e){let t=[],n=0;for(let r of qt(e))r.index>n&&W(t,e.slice(n,r.index)),t.push(jr(r.url,r.type===`meme`?r.name:``)),n=r.index+r.whole.length;if(t.length!==0)return n<e.length&&W(t,e.slice(n).replace(/^\n+/,``)),t}function Nr(e){let t=e.children[0];return e.title==null&&e.children.length===1&&t?.type===`text`&&t.value===e.url&&Bt.test(e.url)}function Pr(e,t,n){e.children.splice(t,1,...n)}function Fr(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(`)`)||!Nr(r))continue;let a=Gt(n.value);if(!a)continue;let o=[];W(o,a.before),o.push(jr(r.url,a.name)),W(o,i.value.slice(1).replace(/^\n+/,``)),t.splice(e-1,3,...o),e+=Math.max(0,o.length-2)}}function Ir(){return e=>{A(e,`paragraph`,e=>{Fr(e)}),A(e,`link`,(e,t,n)=>(t===void 0||!n||Nr(e)&&Pr(n,t,[jr(e.url)]),st)),A(e,`text`,(e,t,n)=>{if(t===void 0||!n||n.type===`link`)return st;let r=Mr(e.value);if(r)return Pr(n,t,r),[st,t+r.length]})}}function Lr(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 Rr(e){let t=e.parentElement?.getBoundingClientRect().width??1/0;return t>0?t:1/0}function zr(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 Br(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=>zr(e,t)),t}function Vr(e){e.style.width=``;let t=Br(e);if(t.length===0)return;let n=Lr(t,e.getBoundingClientRect().left,Rr(e));n>0&&(e.style.width=`${n}px`)}var Hr=[lt,Ir,kr];function Ur(e,t,n){(0,j.useLayoutEffect)(()=>{let n=e.current;if(!t||!n)return;let r,i=!1,a=()=>Vr(n),o=()=>{i||(r!==void 0&&cancelAnimationFrame(r),r=requestAnimationFrame(()=>{i||(r=void 0,a())}))};a(),o();let s=new ResizeObserver(o);return s.observe(n),n.parentElement&&s.observe(n.parentElement),document.fonts?.ready.then(o),()=>{i=!0,r!==void 0&&cancelAnimationFrame(r),s.disconnect()}},[e,t,n])}function Wr(e){return{a(e){let{node:t,href:n,children:r,...i}=e,a=n?!n.startsWith(`#`):!1;return(0,N.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,N.jsx)(Tr,{src:r,alt:i??`image`,className:M(`my-1 block w-fit max-w-full`,e===`end`&&`ml-auto`)})},table(e){let{node:t,...n}=e;return(0,N.jsx)(`div`,{className:`chat-markdown-table`,children:(0,N.jsx)(`table`,{...n})})}}}function Gr({text:e,streaming:t,align:n=`start`}){let r=(0,j.useMemo)(()=>Wr(n),[n]),i=(0,j.useRef)(null);return Ur(i,n===`end`,e),(0,N.jsx)(`div`,{ref:i,className:M(`warm-prose chat-markdown`,n===`end`&&`chat-markdown-end`,t&&`chat-markdown-streaming`),children:(0,N.jsx)(wr,{text:e,remarkPlugins:Hr,components:r})})}var Kr=(0,N.jsx)(`span`,{className:`ml-0.5 inline-block animate-pulse`,children:`▎`});function qr(e,t={}){let{trailingCursor:n,align:r=`start`}=t;if(!e.trim())return n?(0,N.jsx)(`div`,{className:`warm-prose chat-markdown`,children:Kr}):null;let i=(0,N.jsx)(Gr,{text:e,streaming:n===!0,align:r});return r===`end`?(0,N.jsx)(`div`,{className:`flex w-full min-w-0 max-w-full flex-col items-end`,children:i}):i}function Jr(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 Yr({src:e,name:t,className:n}){let r=(0,j.useRef)(null),[i,a]=(0,j.useState)(!1),[o,s]=(0,j.useState)(0),[c,l]=(0,j.useState)(0);(0,j.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,N.jsxs)(`div`,{className:M(`flex w-full max-w-sm items-center gap-3 rounded-md bg-card px-3 py-2`,n),children:[(0,N.jsx)(`audio`,{ref:r,src:e,preload:`metadata`,children:(0,N.jsx)(`a`,{href:e,children:t??`audio`})}),(0,N.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,N.jsx)(Ve,{className:`size-4 fill-current`,strokeWidth:0}):(0,N.jsx)(ke,{className:`size-4 fill-current translate-x-px`,strokeWidth:0})}),(0,N.jsxs)(`span`,{className:`shrink-0 whitespace-nowrap font-serif text-xs italic text-muted-foreground tabular-nums`,children:[Jr(o),` / `,Jr(c)]}),(0,N.jsx)(`input`,{type:`range`,min:0,max:c||0,step:.1,value:o,onChange:e=>d(Number(e.target.value)),"aria-label":`seek`,className:M(`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 Xr(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 Zr=[{match:e=>/^(web_)?search/.test(e)||/web/.test(e),icon:at},{match:e=>/^(read|cat|ls|view|list_files)/.test(e),icon:ge},{match:e=>/^(write|edit|patch|create_file)/.test(e),icon:me},{match:e=>/^(bash|shell|exec|terminal)/.test(e),icon:We},{match:e=>/^memory/.test(e),icon:C},{match:e=>/^(tts|speak|voice)/.test(e),icon:h},{match:e=>/^(image|meme|picture|photo)/.test(e),icon:fe},{match:e=>/^skill/.test(e),icon:ae}];function Qr(e){let t=e.toLowerCase();for(let e of Zr)if(e.match(t))return e.icon;return se}var $r=p;function ei(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function ti(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}var ni=[`query`,`url`,`command`,`prompt`,`file_path`,`path`,`pattern`,`description`];function ri(e){if(!ei(e))return``;for(let t of ni){let n=e[t];if(typeof n==`string`&&n.trim())return n.trim()}return``}function ii(e){if(e==null)return``;if(Array.isArray(e))return e.length===1?`1 item`:`${e.length} items`;if(ei(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 ai(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 G(e){return e.kind===`thinking`?!e.complete:e.tool.status===`running`||e.tool.status===`pending`}function oi(e){if(e.kind===`thinking`)return!!e.text;let t=e.tool;return!!(t.args||t.result||t.partialResult||t.error)}function si(e){return e.kind===`tool`&&e.tool.status===`error`}function ci({step:e,active:t,hideThreadAbove:n,hideThreadBelow:r}){let i=e===`done`?o:e.kind===`thinking`?$r:Qr(e.tool.name);return(0,N.jsxs)(`div`,{className:`relative flex h-7 w-7 shrink-0 items-center justify-center`,"aria-hidden":!0,children:[(0,N.jsx)(`span`,{className:M(`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,N.jsx)(`span`,{className:`relative z-10 inline-flex size-4 items-center justify-center bg-muted`,children:(0,N.jsx)(i,{className:M(`size-4 transition-colors`,t?`text-primary`:`text-muted-foreground/85`)})})]})}function li({step:e}){if(e.kind===`thinking`)return(0,N.jsx)(`span`,{className:`truncate font-serif italic text-sm tracking-wide text-foreground/75`,children:ai(e)});let t=e.tool,n=ri(t.args),r=t.status===`error`,i=t.status===`running`?t.partialResult:t.result,a=!r&&t.status===`completed`?ii(i):``;return(0,N.jsxs)(`span`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,N.jsx)(`span`,{className:`shrink-0 font-mono text-sm text-foreground/85`,children:t.name}),n&&(0,N.jsx)(`span`,{className:`min-w-0 truncate font-mono text-sm text-muted-foreground/70`,children:n}),r&&(0,N.jsx)(`span`,{className:`shrink-0 font-serif italic text-sm text-destructive/80`,children:`· failed`}),a&&!r&&(0,N.jsxs)(`span`,{className:`shrink-0 font-serif italic text-sm tracking-wide text-muted-foreground/65`,children:[`· `,a]})]})}function ui({step:e,active:t}){return(0,N.jsxs)(`div`,{className:`font-serif italic text-sm leading-relaxed text-muted-foreground/85 whitespace-pre-wrap`,children:[e.text,t&&(0,N.jsx)(`span`,{className:`ml-0.5 inline-block animate-pulse`,children:`▎`})]})}function di({tool:e}){let t=(0,j.useMemo)(()=>ti(e.args),[e.args]),n=e.status===`running`?e.partialResult:e.result,r=(0,j.useMemo)(()=>ti(n),[n]);return(0,N.jsxs)(`div`,{className:`space-y-2`,children:[t&&(0,N.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-words font-mono text-xs text-muted-foreground/80`,children:t}),r&&(0,N.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-words font-mono text-xs text-muted-foreground/80`,children:r}),e.error&&(0,N.jsx)(`div`,{className:`font-mono text-xs whitespace-pre-wrap text-destructive/85`,children:e.error})]})}var fi=132;function pi({children:e}){let[t,n]=(0,j.useState)(!1),r=(0,j.useRef)(null),[i,a]=(0,j.useState)(!1);(0,j.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>a(e.scrollHeight>fi+4);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let o=i&&!t;return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`div`,{className:`relative overflow-hidden`,style:{maxHeight:o?`${fi}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,N.jsx)(`div`,{ref:r,children:e})}),i&&(0,N.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 mi({step:e,threadContinues:t}){let n=G(e);return(0,N.jsxs)(`div`,{className:`relative py-1`,children:[t&&(0,N.jsx)(`span`,{className:`absolute left-3.5 inset-y-0 w-px -translate-x-1/2 bg-border`,"aria-hidden":!0}),(0,N.jsx)(`div`,{className:`ml-9 mt-1 mb-2`,children:(0,N.jsx)(pi,{children:e.kind===`thinking`?(0,N.jsx)(ui,{step:e,active:n}):(0,N.jsx)(di,{tool:e.tool})})})]})}function hi({steps:e,autoCollapse:t=!1}){let n=e.some(G),r=!n&&e.length>0&&e.length>=2&&!e.some(si),[i,a]=(0,j.useState)(n),o=(0,j.useRef)(!1);(0,j.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=oi(c),u=e.length-1,f=i&&(l||u>0||r);return(0,N.jsxs)(`div`,{className:`flex flex-col rounded-lg bg-muted px-3 py-2`,children:[(0,N.jsxs)(`button`,{type:`button`,onClick:s,"aria-expanded":i,className:`flex w-full items-center gap-2 text-left`,children:[(0,N.jsx)(ci,{step:c,active:G(c),hideThreadAbove:!0,hideThreadBelow:!f}),(0,N.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,N.jsx)(li,{step:c}),!i&&u>0&&(0,N.jsxs)(`span`,{className:`shrink-0 font-serif italic text-sm tracking-wide text-muted-foreground/60`,children:[`· `,u,` more`]}),(0,N.jsx)(d,{className:M(`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,N.jsxs)(`div`,{children:[l&&(0,N.jsx)(mi,{step:c,threadContinues:u>0||r}),e.slice(1).map((t,n)=>{let i=n+1===e.length-1,a=oi(t),o=!i||r||a,s=!i||r;return(0,N.jsxs)(`div`,{className:`flex flex-col`,children:[(0,N.jsxs)(`div`,{className:`flex w-full items-center gap-2`,children:[(0,N.jsx)(ci,{step:t,active:G(t),hideThreadBelow:!o}),(0,N.jsx)(li,{step:t})]}),a&&(0,N.jsx)(mi,{step:t,threadContinues:s})]},t.id)}),r&&(0,N.jsxs)(`div`,{className:`flex w-full items-center gap-2`,children:[(0,N.jsx)(ci,{step:`done`,hideThreadBelow:!0}),(0,N.jsx)(`span`,{className:`font-mono text-sm text-foreground/85`,children:`done`})]})]})]})}function gi({text:e}){return(0,N.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,N.jsx)(`span`,{className:`font-serif italic text-sm tracking-wide text-destructive/85`,children:`lost somewhere between us`}),(0,N.jsx)(`div`,{className:`mt-1.5 h-px bg-destructive/15`}),(0,N.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 _i=`[[FAMILIAR_SILENT]]`;function vi({step:e,who:t,showLabel:n}){let r=!e.complete,i=e.text.startsWith(_i);return(0,N.jsxs)(`div`,{className:`flex w-full flex-col`,children:[n&&t&&(0,N.jsx)(`span`,{className:`mt-2 mb-1 block text-xs uppercase tracking-wider text-muted-foreground`,children:t}),i?(0,N.jsx)(`p`,{className:`font-serif italic text-sm leading-relaxed text-muted-foreground/70`,children:`they kept quiet.`}):qr(e.text,{trailingCursor:r})]})}function yi(e){return e.kind===`thinking`||e.kind===`text`?e.complete===!0:e.kind===`error`?!0:e.tool.status===`completed`||e.tool.status===`error`}function bi({message:e}){let{steps:t,silent:n,who:r}=e,i=Xr(t),a=i.findIndex(e=>e.kind===`text`)>=0,o=n===!0&&!a&&!!r,s=t.length>0&&t.every(yi)&&(n===!0||a);return(0,N.jsxs)(`div`,{className:`flex w-full flex-col gap-1`,children:[o&&(0,N.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,N.jsx)(hi,{steps:e.steps,autoCollapse:s},`stream-${t}`);if(e.kind===`error`)return(0,N.jsx)(gi,{text:e.step.text},e.step.id);let n=i[t-1],a=!n||n.kind!==`text`;return(0,N.jsx)(vi,{step:e.step,who:r,showLabel:a},e.step.id)}),n&&!a&&(0,N.jsx)(`p`,{className:`font-serif italic text-sm leading-relaxed text-muted-foreground/70`,children:`they kept quiet.`})]})}function xi({derived:e}){return(0,N.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,N.jsxs)(`span`,{children:[e.label,`: `]}):null,e.text]})}function Si(e){if(e.url)return e.kind===`image`||e.mimeType?.startsWith(`image/`)?{content:(0,N.jsx)(Tr,{src:e.url,alt:e.name})}:e.mimeType?.startsWith(`video/`)?{content:(0,N.jsx)(`div`,{className:`w-full max-w-[24rem]`,children:(0,N.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,N.jsx)(`div`,{className:`max-w-full`,children:(0,N.jsx)(Yr,{src:e.url,name:e.name})})}:{align:`right`,content:(0,N.jsx)(`a`,{href:e.url,className:`text-sm italic text-muted-foreground underline-offset-4 hover:underline`,children:e.name})}}function Ci({attachment:e}){let t=Si(e);return t?(0,N.jsxs)(`div`,{className:M(`max-w-full`,t.align===`right`&&`text-right`),children:[t.content,e.derivedText?(0,N.jsx)(xi,{derived:e.derivedText}):null]}):null}function wi({attachments:e,align:t}){return e.length===0?null:(0,N.jsx)(`div`,{className:M(`mt-2 flex flex-col gap-2`,t===`right`&&`items-end`),children:e.map(e=>(0,N.jsx)(Ci,{attachment:e},e.id))})}function Ti({message:e}){let t=e.steps.filter(e=>e.kind===`text`).map(e=>e.kind===`text`?e.text:``).join(``);return(0,N.jsxs)(`div`,{className:`flex w-full flex-col items-end gap-1`,children:[(0,N.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-muted-foreground`,children:e.who}),(0,N.jsxs)(`div`,{className:`flex w-full min-w-0 max-w-[85%] flex-col items-end`,children:[t&&qr(t,{align:`end`}),(0,N.jsx)(wi,{attachments:e.attachments??[],align:`right`})]})]})}function Ei({message:e}){let t=e.steps.find(e=>e.kind===`text`);return!t||t.kind!==`text`?null:(0,N.jsx)(`div`,{className:`flex justify-center`,children:(0,N.jsx)(`p`,{className:`text-xs italic text-muted-foreground`,children:t.text})})}function Di({icon:e,label:t,onClick:n,hoverClass:r}){return(0,N.jsx)(P,{type:`button`,variant:`ghost`,size:`sm`,onClick:n,"aria-label":t,title:t,className:M(`h-7 px-2 text-muted-foreground opacity-70 transition-opacity group-hover:opacity-100`,r),children:(0,N.jsx)(e,{className:`size-3.5`})})}var Oi=(0,j.memo)(function({message:e,onRetry:t,onDelete:n}){let[r,i]=(0,j.useState)(!1);return e.role===`system`?(0,N.jsx)(Ei,{message:e}):e.role===`user`?(0,N.jsx)(Ti,{message:e}):(0,N.jsxs)(`div`,{className:`group flex w-full flex-col`,onPointerDown:e=>{e.pointerType!==`mouse`&&i(!0)},children:[(0,N.jsx)(bi,{message:e}),(0,N.jsx)(wi,{attachments:e.attachments??[],align:`left`}),(t||n)&&(0,N.jsxs)(`div`,{className:M(`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,N.jsx)(Di,{icon:ze,label:`retry latest reply`,onClick:t,hoverClass:`hover:text-foreground`}),n&&(0,N.jsx)(Di,{icon:y,label:`delete latest reply`,onClick:n,hoverClass:`hover:text-destructive`})]})]})}),ki=1800*1e3;function Ai(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function ji(e,t){let n=new Date(e),r=new Date(t),i=n.toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}).toLowerCase();if(Ai(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 Mi({messages:e,personaName:t,historyLoaded:n,streaming:r=!1,onRetry:i,onDelete:a}){let o=(0,j.useRef)(null),s=r?-1:e.findLastIndex(e=>e.role===`assistant`);return(0,j.useEffect)(()=>{o.current?.scrollIntoView({behavior:r?`auto`:`smooth`,block:`end`})},[e,r]),n&&e.length===0?(0,N.jsx)(`div`,{className:`mx-auto flex h-full w-full max-w-3xl items-center justify-center px-5`,children:(0,N.jsxs)(`p`,{className:`font-serif text-base italic leading-relaxed text-muted-foreground/80`,children:[`hi, i'm `,t,`. write whenever.`]})}):(0,N.jsxs)(`div`,{className:`mx-auto flex w-full max-w-3xl flex-col gap-12 px-5 py-6`,children:[e.map((t,n)=>{let r=e[n-1];return(0,N.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[r!=null&&t.ts-r.ts>=ki&&(0,N.jsx)(`div`,{className:`flex justify-center pt-2`,children:(0,N.jsx)(`span`,{className:`font-serif italic text-xs text-muted-foreground/70 tracking-wide`,children:ji(t.ts,r.ts)})}),(0,N.jsx)(Oi,{message:t,onRetry:n===s?i:void 0,onDelete:n===s?a:void 0})]},t.id)}),(0,N.jsx)(`div`,{ref:o})]})}var Ni=1e3,Pi=15e3;function K(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function Fi(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 q(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 Ii(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=q(e,r),a={kind:`thinking`,id:K(),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=q(e,r),o={kind:`text`,id:K(),text:n};return[...a,o]}function Li(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:Fi(n.tool,t)},a=e.slice();return a[r]=i,a}let i=q(e,n),a={kind:`tool`,id:t.id,tool:t};return[...i,a]}function Ri(){let[e,t]=(0,j.useState)([]),[n,r]=(0,j.useState)(`connecting`),[i,a]=(0,j.useState)(`Familiar`),[o,s]=(0,j.useState)([]),[c,l]=(0,j.useState)(void 0),[u,d]=(0,j.useState)(!1),[f,p]=(0,j.useState)(!1),m=(0,j.useRef)(null),h=(0,j.useRef)(null),g=(0,j.useRef)(async()=>void 0),_=(0,j.useRef)(new Set),v=(0,j.useCallback)((e,n)=>{t(t=>t.map(t=>t.id===e?{...t,steps:n(t.steps)}:t))},[]),y=(0,j.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=>Ii(n,e.part,e.content,t));break}case`tool_event`:{let t=Date.now();v(e.messageId,n=>Li(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:q(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:[...q(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:K(),role:`system`,who:``,steps:[{kind:`text`,id:K(),text:`error · ${e.code}: ${e.message}`,complete:!0}],ts:e.ts}]);break;case`replay_window_lost`:St(c).then(e=>t(e.messages)).catch(()=>void 0);break}},[c,i,v]),b=(0,j.useRef)(y);(0,j.useEffect)(()=>{b.current=y},[y]),(0,j.useEffect)(()=>{let e=!1;return mt().then(t=>{e||a(t.personaName)}).catch(()=>void 0),xt().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,j.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);St(c).then(n=>{e||(t(n.messages),d(!0))}).catch(()=>{e||d(!0)});let s=()=>{if(e)return;r(`connecting`);let t=new WebSocket(kt(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(Pi,Ni*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 Ot(n,K(),c,t)},()=>{e=!0,clearTimeout(o),a&&clearTimeout(a),h.current===n&&(h.current=null),n?.close()}},[c]);let x=(0,j.useCallback)((e,t=[])=>g.current(e,t),[]),ee=(0,j.useCallback)(e=>l(e),[]),S=(0,j.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:ee,send:x,abort:(0,j.useCallback)(()=>{S(`abort`)},[S]),retry:(0,j.useCallback)(()=>{S(`retry`)},[S]),deleteLatest:(0,j.useCallback)(()=>{S(`delete`)},[S]),notifyNewChat:(0,j.useCallback)(()=>{t(e=>[...e,{id:K(),role:`system`,who:``,steps:[{kind:`text`,id:K(),text:`started fresh`,complete:!0}],ts:Date.now()}])},[])}}function zi({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}=Ri(),[_,v]=(0,j.useState)(!1);return(0,N.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col overflow-hidden bg-background text-foreground antialiased`,children:[(0,N.jsx)(Cr,{nav:e,connection:a,personaName:o,sessions:s,activeSessionKey:c,channelKey:c,onSelectSession:d,onOpenConfig:()=>v(!0),onNewChatStarted:g}),(0,N.jsx)(`main`,{className:`min-h-0 flex-1 overflow-x-hidden overflow-y-auto`,children:(0,N.jsx)(Mi,{messages:i,personaName:o,historyLoaded:l,streaming:u,onRetry:m,onDelete:h})}),(0,N.jsx)(dn,{onSend:f,onAbort:p,streaming:u,personaName:o}),(0,N.jsx)(rr,{open:_,onOpenChange:v,channelKey:c,authMode:t,authDevice:n,onSignedOut:r})]})}function J(e){let t=new Date(`${e}T00:00:00`);return Number.isNaN(t.getTime())?null:t}function Bi(e){let t=J(e);return t?new Intl.DateTimeFormat(void 0,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`}).format(t).toLowerCase():e}function Vi(e){let t=J(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 Hi(e){let t=J(e);if(!t)return null;let n=new Date;return n.setHours(0,0,0,0),Math.round((n.getTime()-t.getTime())/864e5)}function Ui(e){let t=Hi(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 Wi(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 Gi({diary:e,active:t,onSelect:n}){let{weekday:r,day:i,month:a}=Vi(e.date),o=Hi(e.date)===0;return(0,N.jsxs)(`button`,{type:`button`,onClick:n,"aria-current":t?`page`:void 0,className:M(`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,N.jsxs)(`span`,{className:`flex w-10 shrink-0 flex-col items-center font-serif leading-none`,children:[(0,N.jsx)(`span`,{className:M(`text-[0.6875rem] tracking-wide`,t?`text-primary-foreground/70`:`text-muted-foreground`),children:r}),(0,N.jsx)(`span`,{className:`mt-0.5 text-2xl tabular-nums`,children:i}),(0,N.jsx)(`span`,{className:M(`mt-0.5 text-[0.6875rem] tracking-wide`,t?`text-primary-foreground/70`:`text-muted-foreground`),children:a})]}),(0,N.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,N.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,N.jsx)(`span`,{className:`block truncate font-serif text-sm leading-tight tracking-tight`,children:e.title}),o?(0,N.jsx)(`span`,{className:M(`size-1.5 shrink-0 rounded-full`,t?`bg-primary-foreground/70`:`bg-primary`),"aria-hidden":!0}):null]}),e.excerpt?(0,N.jsx)(`span`,{className:M(`mt-1.5 line-clamp-2 text-xs leading-relaxed`,t?`text-primary-foreground/85`:`text-muted-foreground`),children:e.excerpt}):null]})]})}var Ki=/(`([^`]+)`|\*\*([^*]+)\*\*|\*([^*]+)\*)/g;function qi(e,t){let n=new Ji(t);for(let t of e.replace(/\r\n/g,`
|
|
6
|
+
`).split(`
|
|
7
|
+
`))n.addLine(t.trim());return n.finish()}var Ji=class{blocks=[];paragraph=[];listItems=[];listKind;sawHeading=!1;title;constructor(e){this.title=e}addLine(e){if(!e){this.flush();return}let t=/^(#{1,6})\s+(.+)$/.exec(e);if(t){this.addHeading(t[1]?.length??1,t[2]??``);return}let n=/^[-*+]\s+(.+)$/.exec(e),r=/^\d+[.)]\s+(.+)$/.exec(e);if(n||r){let e=n?`ul`:`ol`;this.addListItem(e,(n?.[1]??r?.[1]??``).trim());return}let i=/^>\s+(.+)$/.exec(e);if(i){this.flush(),this.blocks.push({kind:`blockquote`,inline:Y(i[1]??``)});return}Yi(e)&&this.paragraph.length>0&&this.flushParagraph(),this.paragraph.push(e)}finish(){return this.flush(),this.blocks}addHeading(e,t){if(this.flush(),!this.sawHeading&&Xi(t)===Xi(this.title)){this.sawHeading=!0;return}this.sawHeading=!0,this.blocks.push({kind:`heading`,level:e<=2?2:3,inline:Y(t)})}addListItem(e,t){this.flushParagraph(),this.listKind&&this.listKind!==e&&this.flushList(),this.listKind=e,this.listItems.push(t)}flush(){this.flushParagraph(),this.flushList()}flushParagraph(){let e=this.paragraph.join(` `).trim();e&&this.blocks.push({kind:`paragraph`,inline:Y(e)}),this.paragraph=[]}flushList(){!this.listKind||this.listItems.length===0||(this.blocks.push({kind:`list`,ordered:this.listKind===`ol`,items:this.listItems.map(e=>Y(e))}),this.listKind=void 0,this.listItems=[])}};function Y(e){let t=[],n=0;Ki.lastIndex=0;for(let r of e.matchAll(Ki)){let i=r.index??0;i>n&&t.push({kind:`text`,text:e.slice(n,i)});let a=r[2]??r[3]??r[4]??``;r[2]?t.push({kind:`code`,text:a}):r[3]?t.push({kind:`strong`,text:a}):t.push({kind:`em`,text:a}),n=i+r[0].length}return n<e.length&&t.push({kind:`text`,text:e.slice(n)}),t}function Yi(e){return/^(?:[A-Z][A-Za-z ]{0,32}\s+)?\(?\d{1,2}:\d{2}\)?\s*[:.)-]/.test(e)}function Xi(e){return e.replace(/`([^`]+)`/g,`$1`).replace(/\[([^\]]+)\]\([^)]+\)/g,`$1`).replace(/[*_~#>]/g,``).trim().toLowerCase()}function Zi({content:e,title:t}){let n=(0,j.useMemo)(()=>qi(e,t),[e,t]);return n.length===0?(0,j.createElement)(`p`,{className:`font-serif text-sm italic text-muted-foreground`},`this day is quiet.`):(0,j.createElement)(`div`,{className:`warm-prose diary-prose`},n.map(Qi))}function Qi(e,t){switch(e.kind){case`heading`:return(0,j.createElement)(e.level===2?`h2`:`h3`,{key:t},X(e.inline));case`paragraph`:return(0,j.createElement)(`p`,{key:t},X(e.inline));case`blockquote`:return(0,j.createElement)(`blockquote`,{key:t},X(e.inline));case`list`:return(0,j.createElement)(e.ordered?`ol`:`ul`,{key:t},e.items.map((e,t)=>(0,j.createElement)(`li`,{key:t},X(e))))}}function X(e){return e.map((e,t)=>{switch(e.kind){case`text`:return e.text;case`code`:return(0,j.createElement)(`code`,{key:t},e.text);case`strong`:return(0,j.createElement)(`strong`,{key:t},e.text);case`em`:return(0,j.createElement)(`em`,{key:t},e.text)}})}function $i(){return(0,N.jsxs)(`div`,{className:`mt-2 space-y-3`,"aria-hidden":!0,children:[(0,N.jsx)(`div`,{className:`h-3 w-full rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`h-3 w-11/12 rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`h-3 w-4/5 rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`h-3 w-2/3 rounded-sm bg-muted-foreground/10`})]})}function ea({summary:e,content:t,loading:n,settle:r}){if(!e)return(0,N.jsx)(`div`,{className:`flex h-full min-h-[18rem] items-center justify-center px-6 text-center`,children:(0,N.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:`choose a written day.`})});let i=[Ui(e.date),t===void 0?``:Wi(t)].filter(Boolean).join(` · `);return(0,N.jsxs)(`article`,{className:M(`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,N.jsxs)(`div`,{className:`mb-8 border-b border-border pb-6`,children:[(0,N.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:Bi(e.date)}),(0,N.jsx)(`h1`,{className:`mt-3 font-serif text-3xl leading-tight tracking-tight text-balance text-foreground`,children:e.title}),i?(0,N.jsx)(`p`,{className:`mt-3 font-serif text-xs italic text-muted-foreground`,children:i}):null]}),t===void 0?n?(0,N.jsx)($i,{}):null:(0,N.jsx)(`div`,{className:`duration-300 ease-out-quart animate-in fade-in-0 motion-reduce:animate-none`,children:(0,N.jsx)(Zi,{content:t,title:e.title})})]},e.date)}function ta(){return(0,N.jsx)(`div`,{className:`grid gap-1 px-2 py-1`,children:Array.from({length:6},(e,t)=>(0,N.jsxs)(`div`,{className:`flex gap-3 rounded-md px-2 py-3`,children:[(0,N.jsxs)(`div`,{className:`flex w-10 shrink-0 flex-col items-center gap-1 pt-0.5`,children:[(0,N.jsx)(`div`,{className:`h-2 w-7 rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`h-5 w-6 rounded-sm bg-muted-foreground/15`}),(0,N.jsx)(`div`,{className:`h-2 w-6 rounded-sm bg-muted-foreground/10`})]}),(0,N.jsxs)(`div`,{className:`min-w-0 flex-1 pt-0.5`,children:[(0,N.jsx)(`div`,{className:`h-3 w-2/3 rounded-sm bg-muted-foreground/15`}),(0,N.jsx)(`div`,{className:`mt-2.5 h-2 w-full rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`mt-1.5 h-2 w-4/5 rounded-sm bg-muted-foreground/10`})]})]},t))})}function na(){return(0,N.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,N.jsx)(`div`,{className:`rounded-md border border-border bg-card py-2`,children:(0,N.jsx)(ta,{})}),(0,N.jsxs)(`div`,{className:`rounded-md border border-border bg-card p-8`,children:[(0,N.jsx)(`div`,{className:`h-4 w-28 rounded-sm bg-muted-foreground/15`}),(0,N.jsx)(`div`,{className:`mt-6 h-8 w-64 rounded-sm bg-muted-foreground/10`}),(0,N.jsxs)(`div`,{className:`mt-8 space-y-3`,children:[(0,N.jsx)(`div`,{className:`h-3 w-full rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`h-3 w-11/12 rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`h-3 w-3/4 rounded-sm bg-muted-foreground/10`})]})]})]})}function ra({onRefresh:e}){return(0,N.jsx)(`div`,{className:`flex h-full min-h-[18rem] items-center justify-center px-6 text-center`,children:(0,N.jsxs)(`div`,{className:`max-w-sm`,children:[(0,N.jsx)(C,{className:`mx-auto size-7 text-muted-foreground`}),(0,N.jsx)(`h2`,{className:`mt-5 font-serif text-xl leading-tight tracking-tight`,children:`no written days yet`}),(0,N.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,N.jsxs)(P,{type:`button`,variant:`ghost`,className:`mt-5`,onClick:e,children:[(0,N.jsx)(k,{className:`size-4`}),`check again`]})]})})}function Z({className:e,children:t,...n}){return(0,N.jsxs)(pe,{"data-slot":`scroll-area`,className:M(`relative`,e),...n,children:[(0,N.jsx)(_e,{"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,N.jsx)(ia,{}),(0,N.jsx)(Oe,{})]})}function ia({className:e,orientation:t=`vertical`,...n}){return(0,N.jsx)(Be,{"data-slot":`scroll-area-scrollbar`,"data-orientation":t,orientation:t,className:M(`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,N.jsx)(Ke,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}function aa({nav:e}){let[t,n]=(0,j.useState)([]),[r,i]=(0,j.useState)(),[a,o]=(0,j.useState)(),[s,c]=(0,j.useState)(!0),[l,u]=(0,j.useState)(!1),[d,f]=(0,j.useState)(),[p,m]=(0,j.useState)(!1),[h,g]=(0,j.useState)(!1),_=(0,j.useCallback)(async()=>{c(!0),f(void 0);try{let e=await Ct();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,j.useCallback)(async e=>{u(!0),f(void 0);try{o(await wt(e))}catch(e){f(e instanceof Error?e.message:String(e)),o(void 0)}finally{u(!1)}},[]);(0,j.useEffect)(()=>{let e=window.setTimeout(()=>void _(),0);return()=>window.clearTimeout(e)},[_]),(0,j.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,N.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-background text-foreground`,children:[(0,N.jsx)(`header`,{className:`border-b-2 border-primary/20 bg-background px-3 py-4 md:px-8`,children:(0,N.jsxs)(`div`,{className:`mx-auto flex max-w-6xl items-center gap-3`,children:[e,(0,N.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-wrap items-baseline gap-x-3 gap-y-0.5`,children:[(0,N.jsx)(`h1`,{className:`font-serif text-2xl leading-none tracking-tight`,children:`diaries`}),(0,N.jsx)(`p`,{className:`font-serif text-[0.8rem] italic text-muted-foreground`,children:`written days, kept close`})]}),(0,N.jsx)(P,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`refresh`,title:`refresh`,className:`text-muted-foreground hover:text-foreground`,onClick:()=>void _(),disabled:s,children:(0,N.jsx)(k,{className:M(`size-4`,s&&`animate-spin motion-reduce:animate-none`)})})]})}),d?(0,N.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,N.jsx)(na,{}):t.length===0?(0,N.jsx)(ra,{onRefresh:()=>void _()}):(0,N.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,N.jsx)(`aside`,{className:M(`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,N.jsx)(Z,{className:`min-h-0 flex-1`,children:(0,N.jsx)(`div`,{className:`grid gap-1 px-2`,children:t.map(e=>(0,N.jsx)(Gi,{diary:e,active:e.date===r,onSelect:()=>{e.date!==r&&g(!0),i(e.date),m(!0)}},e.date))})})}),(0,N.jsxs)(`main`,{className:M(`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,N.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,N.jsx)(te,{className:`size-3.5`}),`all days`]}),(0,N.jsx)(Z,{className:`min-h-0 flex-1`,children:(0,N.jsx)(ea,{summary:y,content:b,loading:l,settle:h})})]})]})]})}function oa({className:e,...t}){return(0,N.jsx)(`textarea`,{"data-slot":`textarea`,className:M(`flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,e),...t})}function sa(e){return e===null?`not written yet`:new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`}).format(new Date(e)).toLowerCase()}function ca(e){return e.exists?`saved ${sa(e.mtimeMs)}`:`ready for a first note`}function la(e,t){let n={};for(let r of t)n[r.id]={...e[r.id],summary:r};return n}function ua(e,t){let{content:n,...r}=t;return{...e,[t.id]:{...e[t.id],summary:r,savedContent:n}}}function da(e,t){let{content:n,...r}=t;return{...e,[t.id]:{summary:r,savedContent:n}}}function fa(e,t,n){let r=e[t];return r?{...e,[t]:{...r,draft:n}}:e}function pa(e){return e?.savedContent!==void 0&&e.draft!==void 0&&e.draft!==e.savedContent}function ma({file:e,active:t,dirty:n,onSelect:r}){return(0,N.jsxs)(`button`,{type:`button`,onClick:r,"aria-current":t?`page`:void 0,className:M(`note-row group`,t&&`note-row-active`),children:[(0,N.jsx)(`span`,{className:`note-row-name`,children:e.title}),(0,N.jsx)(`span`,{className:`mt-0.5 line-clamp-2 text-xs leading-relaxed text-muted-foreground`,children:e.description}),(0,N.jsx)(`span`,{className:M(`mt-1 block font-serif text-[0.7rem] italic`,n?`text-primary/90`:`text-muted-foreground/80`),children:n?`unsaved changes`:e.exists?`saved ${sa(e.mtimeMs)}`:`ready for a first note`}),(0,N.jsxs)(`span`,{className:`sr-only`,children:[e.name,n?` unsaved changes`:``]})]})}function ha(){return(0,N.jsxs)(`div`,{className:`space-y-3 px-5 py-5`,"aria-hidden":!0,children:[(0,N.jsx)(`div`,{className:`h-3 w-32 rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`h-4 w-56 rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`mt-6 h-3 w-full rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`h-3 w-11/12 rounded-sm bg-muted-foreground/10`}),(0,N.jsx)(`div`,{className:`h-3 w-3/4 rounded-sm bg-muted-foreground/10`})]})}function ga(){return(0,N.jsx)(`div`,{className:`flex min-h-[18rem] items-center justify-center px-6 text-center`,children:(0,N.jsx)(`p`,{className:`max-w-sm font-serif text-sm italic leading-relaxed text-muted-foreground`,children:`this note is quiet for now.`})})}function _a({nav:e}){let[t,n]=(0,j.useState)([]),[r,i]=(0,j.useState)({}),[a,o]=(0,j.useState)(),[s,c]=(0,j.useState)(`edit`),[l,u]=(0,j.useState)(!0),[d,f]=(0,j.useState)(!1),[p,m]=(0,j.useState)(!1),[h,g]=(0,j.useState)(),[_,v]=(0,j.useState)(),[y,b]=(0,j.useState)(!1),[x,ee]=(0,j.useState)(!1),S=a?r[a]:void 0,C=S?.summary,w=S?.draft??S?.savedContent??``,T=pa(S),E=(0,j.useCallback)(async()=>{u(!0),g(void 0);try{let e=await Tt();n(e.map(e=>e.id)),i(t=>la(t,e)),o(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id)}catch(e){g(e instanceof Error?e.message:String(e))}finally{u(!1)}},[]),D=(0,j.useCallback)(async e=>{f(!0),g(void 0);try{let t=await Et(e);i(e=>ua(e,t))}catch(e){g(e instanceof Error?e.message:String(e))}finally{f(!1)}},[]),ne=(0,j.useCallback)(async()=>{if(a){m(!0),g(void 0),v(void 0);try{let e=await Dt(a,w);i(t=>da(t,e)),v(`familiar knows this now`)}catch(e){g(e instanceof Error?e.message:String(e))}finally{m(!1)}}},[w,a]);(0,j.useEffect)(()=>{let e=window.setTimeout(()=>void E(),0);return()=>window.clearTimeout(e)},[E]),(0,j.useEffect)(()=>{if(!a||r[a]?.savedContent!==void 0)return;let e=window.setTimeout(()=>void D(a),0);return()=>window.clearTimeout(e)},[r,D,a]),(0,j.useEffect)(()=>{if(!_)return;let e=window.setTimeout(()=>v(void 0),2600);return()=>window.clearTimeout(e)},[_]);let ie=(0,j.useCallback)(()=>{E(),a&&D(a)},[D,E,a]),ae=(0,j.useMemo)(()=>t.flatMap(e=>r[e]?.summary?[r[e].summary]:[]),[t,r]),O=(0,j.useMemo)(()=>{let e={};for(let n of t)pa(r[n])&&(e[n]=!0);return e},[t,r]),oe=T&&!p&&!d,se=l&&t.length===0,ce=S?.savedContent!==void 0;return(0,N.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-background text-foreground`,children:[(0,N.jsx)(`header`,{className:`border-b-2 border-primary/20 bg-background px-3 py-4 md:px-8`,children:(0,N.jsxs)(`div`,{className:`mx-auto flex max-w-6xl items-center gap-3`,children:[e,(0,N.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-wrap items-baseline gap-x-3 gap-y-0.5`,children:[(0,N.jsx)(`h1`,{className:`font-serif text-2xl leading-none tracking-tight`,children:`keepsakes`}),(0,N.jsx)(`p`,{className:`font-serif text-[0.8rem] italic text-muted-foreground`,children:`the names and notes kept close`})]}),(0,N.jsx)(P,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`refresh`,title:`refresh`,className:`text-muted-foreground hover:text-foreground`,onClick:ie,disabled:l,children:(0,N.jsx)(k,{className:M(`size-4`,l&&`animate-spin motion-reduce:animate-none`)})})]})}),h?(0,N.jsx)(`p`,{className:`border-b border-border bg-card px-3 py-2 font-serif text-xs italic text-destructive md:px-8`,children:h}):_?(0,N.jsx)(`p`,{className:`border-b border-border bg-card px-3 py-2 font-serif text-xs italic text-muted-foreground md:px-8`,children:_}):null,se?(0,N.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,N.jsx)(`aside`,{className:`min-h-0 flex-1 rounded-md border border-border bg-card p-3 md:w-72 md:flex-none`,children:(0,N.jsx)(`div`,{className:`space-y-3`,"aria-hidden":!0,children:Array.from({length:5}).map((e,t)=>(0,N.jsx)(`div`,{className:`h-18 rounded-sm bg-muted-foreground/10`},t))})}),(0,N.jsx)(`main`,{className:`hidden min-h-0 flex-1 overflow-hidden rounded-md border border-border bg-card md:block`,children:(0,N.jsx)(ha,{})})]}):(0,N.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,N.jsxs)(`aside`,{className:M(`min-h-0 flex-col rounded-md border border-border bg-card py-2 md:flex md:w-72 md:flex-none`,y?`hidden md:flex`:`flex flex-1`),children:[(0,N.jsxs)(`div`,{className:`px-4 pb-2 pt-3`,children:[(0,N.jsx)(`p`,{className:`font-serif text-sm leading-tight tracking-tight`,children:`the five notes`}),(0,N.jsx)(`p`,{className:`mt-1 font-serif text-xs italic text-muted-foreground`,children:`each one changes how familiar knows the room.`})]}),(0,N.jsx)(Z,{className:`min-h-0 flex-1`,children:(0,N.jsx)(`div`,{className:`px-1 pb-1`,children:ae.map(e=>(0,N.jsx)(ma,{file:e,active:e.id===a,dirty:O[e.id]===!0,onSelect:()=>{o(e.id),b(!0),ee(!0),v(void 0)}},e.id))})})]}),(0,N.jsxs)(`main`,{className:M(`min-h-0 flex-col overflow-hidden rounded-md border border-border bg-card md:flex md:flex-1`,y?`flex flex-1`:`hidden md:flex`),children:[(0,N.jsxs)(`button`,{type:`button`,onClick:()=>b(!1),className:`flex items-center gap-1.5 px-4 pb-1 pt-3 text-left font-serif text-xs italic text-muted-foreground transition-colors hover:text-foreground md:hidden`,children:[(0,N.jsx)(te,{className:`size-3.5`}),`all notes`]}),(0,N.jsxs)(`div`,{className:`flex flex-col gap-3 px-4 pb-3 pt-2 md:flex-row md:flex-wrap md:items-start md:px-6 md:pb-4 md:pt-5`,children:[(0,N.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,N.jsx)(`h1`,{className:`font-serif text-2xl leading-tight tracking-tight text-balance`,children:C?.title??`note`}),(0,N.jsx)(`p`,{className:`mt-1 max-w-[62ch] text-xs leading-relaxed text-muted-foreground`,children:C?.description??`loading note`})]}),(0,N.jsxs)(`div`,{className:`flex w-full shrink-0 flex-wrap items-center justify-between gap-2 md:w-auto md:justify-end`,children:[(0,N.jsxs)(L,{type:`single`,value:s,onValueChange:e=>{(e===`edit`||e===`preview`)&&c(e)},size:`sm`,variant:`outline`,"aria-label":`view mode`,children:[(0,N.jsxs)(R,{value:`edit`,"aria-label":`edit file`,children:[(0,N.jsx)(me,{className:`size-3.5`}),`edit`]}),(0,N.jsxs)(R,{value:`preview`,"aria-label":`preview file`,children:[(0,N.jsx)(re,{className:`size-3.5`}),`preview`]})]}),(0,N.jsxs)(P,{type:`button`,size:`sm`,onClick:()=>void ne(),disabled:!oe,children:[(0,N.jsx)(Ye,{className:`size-3.5`}),p?`saving`:`save note`]})]}),(0,N.jsx)(`p`,{className:`basis-full font-serif text-xs italic text-muted-foreground`,children:T?`unsaved changes`:C?ca(C):`loading note`})]}),ce?s===`edit`?(0,N.jsx)(oa,{value:w,onChange:e=>{a&&i(t=>fa(t,a,e.target.value))},spellCheck:!0,"aria-label":`edit ${C?.title??`note`}`,className:M(`mx-auto min-h-0 w-full max-w-[72ch] flex-1 resize-none rounded-none border-0 bg-card px-6 py-8 font-sans text-[0.95rem] leading-relaxed shadow-none focus-visible:ring-0 md:px-8 md:py-10`,x&&`duration-200 ease-out-quart animate-in fade-in-0 motion-reduce:animate-none`)}):(0,N.jsx)(Z,{className:`min-h-0 flex-1`,children:(0,N.jsx)(`article`,{className:M(`mx-auto w-full max-w-[72ch] px-6 py-8 md:px-8 md:py-10`,x&&`duration-200 ease-out-quart animate-in fade-in-0 slide-in-from-bottom-[0.25rem] motion-reduce:animate-none`),children:w.trim()?(0,N.jsx)(wr,{text:w,remarkPlugins:[lt],className:`warm-prose file-prose`}):(0,N.jsx)(ga,{})})}):(0,N.jsx)(ha,{})]})]})]})}function va({item:e,active:t,onClick:n}){let r=e.icon,i=e.enabled===!0;return(0,N.jsxs)(`button`,{type:`button`,onClick:n,disabled:!i,className:M(`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,N.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center rounded-md bg-background/55 text-current`,children:(0,N.jsx)(r,{className:`size-4`})}),(0,N.jsxs)(`span`,{className:`min-w-0`,children:[(0,N.jsx)(`span`,{className:`block text-sm leading-tight`,children:e.label}),(0,N.jsx)(`span`,{className:M(`mt-0.5 block truncate font-serif text-[11px] italic`,t?`text-primary-foreground/75`:`text-muted-foreground`),children:e.description})]})]})}function ya({items:e,selectedPage:t,onSelectPage:n}){let[r,i]=(0,j.useState)(!1);return(0,N.jsxs)(Ie,{open:r,onOpenChange:i,children:[(0,N.jsx)(Ee,{asChild:!0,children:(0,N.jsx)(P,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`pages`,title:`pages`,className:`text-muted-foreground hover:text-foreground`,children:(0,N.jsx)(ve,{className:`size-[1.125rem]`})})}),(0,N.jsx)(He,{children:(0,N.jsxs)(Se,{side:`bottom`,align:`start`,sideOffset:8,collisionPadding:16,className:M(`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,N.jsxs)(`div`,{className:`px-3 pb-5`,children:[(0,N.jsx)(`p`,{className:`font-serif text-lg leading-tight tracking-tight`,children:`familiar`}),(0,N.jsx)(`p`,{className:`mt-1 font-serif text-xs italic text-muted-foreground`,children:`choose a room`})]}),(0,N.jsx)(`nav`,{className:`grid gap-2`,children:e.map(e=>(0,N.jsx)(va,{item:e,active:t===e.id,onClick:()=>{e.enabled===!0&&(n(e.id),i(!1))}},e.id))})]})})]})}var ba=[{id:`chat`,label:`chat`,description:`where you two are`,icon:Ue,enabled:!0},{id:`diaries`,label:`diaries`,description:`written days`,icon:C,enabled:!0},{id:`skills`,label:`skills`,description:`little tools`,icon:ue},{id:`files`,label:`keepsakes`,description:`the notes that make them them`,icon:rt,enabled:!0},{id:`gallery`,label:`gallery`,description:`pictures left behind`,icon:Te}];function xa({authMode:e,authDevice:t,onSignedOut:n}){let[r,i]=(0,j.useState)(`chat`),[a,o]=(0,j.useState)(!1),[s,c]=(0,j.useState)(!1),l=r===`diaries`,u=r===`files`,d=(0,N.jsx)(ya,{items:ba,selectedPage:r,onSelectPage:e=>{e===`diaries`&&o(!0),e===`files`&&c(!0),i(e)}});return(0,N.jsxs)(`div`,{className:`relative flex h-dvh w-full overflow-hidden bg-background text-foreground antialiased`,children:[(0,N.jsx)(`section`,{className:M(`min-w-0 flex-1 flex-col`,r===`chat`?`flex`:`hidden`),children:(0,N.jsx)(zi,{nav:d,authMode:e,authDevice:t,onSignedOut:n})}),a?(0,N.jsx)(`section`,{className:M(`min-w-0 flex-1 flex-col`,l?`flex`:`hidden`),children:(0,N.jsx)(aa,{nav:d})}):null,s?(0,N.jsx)(`section`,{className:M(`min-w-0 flex-1 flex-col`,u?`flex`:`hidden`),children:(0,N.jsx)(_a,{nav:d})}):null]})}function Sa(){return typeof navigator>`u`?``:navigator.platform?.trim()||`this browser`}function Ca(){let[e,t]=(0,j.useState)({status:`loading`,personaName:`Familiar`});return(0,j.useEffect)(()=>{let e=!1;async function n(){try{let n=await mt();if(n.mode!==`bearer`){e||t({status:`chat`,mode:n.mode,personaName:n.personaName});return}let r=await ht();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,N.jsx)(xa,{authMode:e.mode,authDevice:e.device,onSignedOut:()=>{t({status:`login`,mode:`bearer`,personaName:e.personaName})}}):e.status===`login`?(0,N.jsx)(wa,{personaName:e.personaName,initialError:e.error,onLogin:n=>{t({status:`chat`,mode:`bearer`,personaName:e.personaName,device:n})}}):(0,N.jsx)(`div`,{className:`flex h-dvh items-center justify-center bg-background px-5 text-foreground antialiased`,children:(0,N.jsx)(`p`,{className:`font-serif text-sm italic text-muted-foreground`,children:`checking the door…`})})}function wa({personaName:e,initialError:t,onLogin:n}){let[r,i]=(0,j.useState)(``),[a,o]=(0,j.useState)(Sa),[s,c]=(0,j.useState)(t),[l,u]=(0,j.useState)(!1);return(0,N.jsx)(`div`,{className:`flex h-dvh flex-col bg-background text-foreground antialiased`,children:(0,N.jsx)(`main`,{className:`mx-auto flex w-full max-w-sm flex-1 flex-col justify-center px-5 py-10`,children:(0,N.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let t=r.trim();if(t){u(!0),c(void 0);try{n(await gt(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,N.jsxs)(`div`,{className:`mb-5`,children:[(0,N.jsx)(`p`,{className:`font-serif text-2xl leading-tight tracking-tight`,children:e}),(0,N.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-muted-foreground`,children:`come in with your token.`})]}),(0,N.jsxs)(`label`,{className:`grid gap-2`,children:[(0,N.jsx)(`span`,{className:`font-serif text-xs italic text-muted-foreground`,children:`token`}),(0,N.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,N.jsxs)(`label`,{className:`mt-4 grid gap-2`,children:[(0,N.jsx)(`span`,{className:`font-serif text-xs italic text-muted-foreground`,children:`device name`}),(0,N.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,N.jsx)(`p`,{className:`mt-3 font-serif text-xs italic text-destructive`,children:s}):null,(0,N.jsxs)(P,{type:`submit`,className:`mt-5 h-9 w-full gap-2`,disabled:l||!r.trim(),children:[(0,N.jsx)(De,{className:`size-4`}),(0,N.jsx)(`span`,{children:l?`checking`:`enter`})]})]})})})}var Q=Date.now(),$=6e4,Ta=[{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 Ea(){return(0,N.jsxs)(`div`,{className:`flex h-dvh w-full flex-col overflow-hidden bg-background text-foreground antialiased`,children:[(0,N.jsxs)(`div`,{className:`border-b border-border px-5 py-3`,children:[(0,N.jsx)(`span`,{className:`font-serif text-lg text-foreground`,children:`ghost`}),(0,N.jsx)(`span`,{className:`ml-3 font-serif italic text-xs text-muted-foreground/70`,children:`playground · synthetic states`})]}),(0,N.jsx)(`main`,{className:`min-h-0 flex-1 overflow-x-hidden overflow-y-auto`,children:(0,N.jsx)(Mi,{messages:Ta,personaName:`ghost`,historyLoaded:!0})})]})}function Da(){return typeof window<`u`&&new URLSearchParams(window.location.search).has(`demo`)?(0,N.jsx)(Ea,{}):(0,N.jsx)(Ca,{})}Nn(jn()),Pn(jn),(0,ut.createRoot)(document.getElementById(`root`)).render((0,N.jsx)(j.StrictMode,{children:(0,N.jsx)(Da,{})}));
|
|
@@ -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);--ease-out-quart:cubic-bezier(.25, 1, .5, 1)}}@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)}.file-prose{font-size:.92rem}.file-prose h1{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.file-prose h2{margin-top:calc(var(--spacing) * 8);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.file-prose h3{margin-top:calc(var(--spacing) * 7);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.file-prose 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){.file-prose a:hover{color:var(--foreground)}}.file-prose pre{border-radius:calc(var(--radius) * .8);background-color:var(--muted);overflow-x:auto}@supports (color:color-mix(in lab, red, red)){.file-prose pre{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.file-prose 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)}.file-prose pre code{padding:calc(var(--spacing) * 0);background-color:#0000;border-radius:0;font-size:.9em}.file-prose hr{margin-block:calc(var(--spacing) * 7);border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.file-prose hr{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.note-row{cursor:pointer;border-style:var(--tw-border-style);text-align:left;border-width:0;border-bottom:1px solid var(--border);background-color:#0000;width:100%;padding:.85rem;display:block;position:relative}@supports (color:color-mix(in lab, red, red)){.note-row{border-bottom:1px solid color-mix(in oklch, var(--border) 55%, transparent)}}.note-row{transition:background .18s var(--ease-out-quart), padding .18s var(--ease-out-quart)}.note-row:last-child{border-bottom:0}.note-row: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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.note-row:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.note-row:focus-visible{--tw-outline-style:none;outline-style:none}.note-row:before{content:"";background:var(--primary);width:2px;height:0;transition:height .22s var(--ease-out-quart);border-radius:1px;position:absolute;top:50%;left:.2rem;transform:translateY(-50%)}.note-row:hover:not(.note-row-active){padding-left:1.1rem}.note-row:hover:not(.note-row-active):before{height:1.5rem}.note-row-active{padding-left:1.45rem}.note-row-active:before{content:"●";width:auto;height:auto;color:var(--primary);background:0 0;font-size:.55rem;position:absolute;top:1.1rem;left:.15rem;transform:none}.note-row-name{text-overflow:ellipsis;white-space:nowrap;--tw-leading:var(--leading-tight);font-family:Lora,serif;font-size:1.04rem;line-height:var(--leading-tight);--tw-tracking:calc(var(--tracking-normal) - .025em);letter-spacing:calc(var(--tracking-normal) - .025em);color:var(--foreground);transition:color .18s var(--ease-out-quart);display:block;overflow:hidden}.note-row:hover .note-row-name{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.note-row:hover .note-row-name{color:color-mix(in oklch, var(--foreground) 60%, var(--primary))}}.note-row-active .note-row-name{color:var(--primary)}}@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}.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{display:inline}.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-18{height:calc(var(--spacing) * 18)}.h-auto{height:auto}.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-32{width:calc(var(--spacing) * 32)}.w-56{width:calc(var(--spacing) * 56)}.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-\[62ch\]{max-width:62ch}.max-w-\[70ch\]{max-width:70ch}.max-w-\[72ch\]{max-width:72ch}.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}.basis-full{flex-basis:100%}.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-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)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}: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-0\.5{row-gap:calc(var(--spacing) * .5)}.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-none{border-radius:0}.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-0{border-style:var(--tw-border-style);border-width:0}.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-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.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\/20{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.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-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1\.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-3{padding-bottom:calc(var(--spacing) * 3)}.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\.7rem\]{font-size:.7rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[0\.95rem\]{font-size:.95rem}.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-primary\/90{color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.text-primary\/90{color:color-mix(in oklab, var(--primary) 90%, 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-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-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\.25rem\]{--tw-enter-translate-y:.25rem}.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-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-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-\[24rem\]{max-width:24rem}.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\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-72{width:calc(var(--spacing) * 72)}.md\:w-auto{width:auto}.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\:flex-wrap{flex-wrap:wrap}.md\:items-start{align-items:flex-start}.md\:justify-end{justify-content:flex-end}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:py-10{padding-block:calc(var(--spacing) * 10)}.md\:pt-5{padding-top:calc(var(--spacing) * 5)}.md\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.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))}}
|