@openparachute/app 0.22.5 → 0.22.10

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.
Files changed (46) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/dist/.parachute/info +1 -1
  3. package/dist/assets/{Account-BhmA30V5.js → Account-DYfzZj5S.js} +1 -1
  4. package/dist/assets/{Activity-BgJa7Woi.js → Activity-CKF0o1vW.js} +1 -1
  5. package/dist/assets/{AddVault-BWa_-QjM.js → AddVault-DKBqKeyq.js} +1 -1
  6. package/dist/assets/{AddVaultChooser-B3ElIlza.js → AddVaultChooser-BW2Q-Yue.js} +1 -1
  7. package/dist/assets/{AddVaultCreate-DKJfYFJ1.js → AddVaultCreate-CtO9yrS5.js} +1 -1
  8. package/dist/assets/{Calendar-DUwSvnCY.js → Calendar-DFuh1M3x.js} +1 -1
  9. package/dist/assets/{CheckEmail-BQYQLTLL.js → CheckEmail-CIv1Gt1o.js} +1 -1
  10. package/dist/assets/{ConnectAI-DCtARp-w.js → ConnectAI-BL20KQ5Y.js} +1 -1
  11. package/dist/assets/{DayView-nficJMEc.js → DayView-Dr2pAVmN.js} +1 -1
  12. package/dist/assets/{Export-DNAoKjAn.js → Export-BynzqvGJ.js} +1 -1
  13. package/dist/assets/{Import-CoFeXNMx.js → Import-6SmwJlgO.js} +1 -1
  14. package/dist/assets/{NoteEditor-DtrdRbqx.js → NoteEditor-OPipzN_Z.js} +1 -1
  15. package/dist/assets/NoteNew-Dy1AbHxm.js +8 -0
  16. package/dist/assets/{NoteRenderer-Dl9X9uRt.js → NoteRenderer-BXeTxHnB.js} +1 -1
  17. package/dist/assets/NoteView-B0eNsUUX.js +3 -0
  18. package/dist/assets/{OAuthCallback-Dj26N8oJ.js → OAuthCallback-D35vvyoO.js} +1 -1
  19. package/dist/assets/{PinArchiveButtons-BXZFiW-i.js → PinArchiveButtons-DyFdYBrq.js} +1 -1
  20. package/dist/assets/Settings-UmrOUQH_.js +1 -0
  21. package/dist/assets/{TagPage-q7PgbEHn.js → TagPage-B7bGWyY4.js} +1 -1
  22. package/dist/assets/{TagSchemaEditor-DIHppYmj.js → TagSchemaEditor-Bas3UMIJ.js} +1 -1
  23. package/dist/assets/{Tags-BqJ9vWM5.js → Tags-CTF2n8-H.js} +1 -1
  24. package/dist/assets/{VaultGraph-CaiNmEtX.js → VaultGraph-BLefh0Zh.js} +2 -2
  25. package/dist/assets/{Vaults-CTsUsDH8.js → Vaults-tXitT9QI.js} +1 -1
  26. package/dist/assets/{ViewNew-BegTqdOq.js → ViewNew-DRZyYhEC.js} +1 -1
  27. package/dist/assets/ViewSurface-DzU1BogH.js +1 -0
  28. package/dist/assets/{Welcome-CN4Zh9jP.js → Welcome-yAs98HfO.js} +1 -1
  29. package/dist/assets/{WizardShell-ZqrzQKxp.js → WizardShell-B0Fjh0Vt.js} +1 -1
  30. package/dist/assets/{attachment-upload-l7qA8_xw.js → attachment-upload-B8YiOVGU.js} +1 -1
  31. package/dist/assets/{history-ByMClxJV.js → history-Ce29a331.js} +1 -1
  32. package/dist/assets/index-H6VNro-x.js +66 -0
  33. package/dist/assets/index-rEtUY3V3.css +1 -0
  34. package/dist/assets/{provenance-B6WFYTWW.js → provenance-DDSHYRnT.js} +1 -1
  35. package/dist/assets/{react-force-graph-2d-BMU3lxLC.js → react-force-graph-2d-G4yaBBi0.js} +1 -1
  36. package/dist/assets/{transcribe-default-LVAxyzpn.js → transcribe-default-B7i-j3pr.js} +1 -1
  37. package/dist/assets/{useAttachmentUploader-C3UnTg01.js → useAttachmentUploader-C78HTrMx.js} +1 -1
  38. package/dist/index.html +2 -2
  39. package/dist/sw.js +1 -1
  40. package/package.json +1 -1
  41. package/dist/assets/NoteNew-C0DMe5Q8.js +0 -8
  42. package/dist/assets/NoteView-B2QH25fP.js +0 -3
  43. package/dist/assets/Settings-BuXl91ig.js +0 -1
  44. package/dist/assets/ViewSurface-ClCtZW0N.js +0 -1
  45. package/dist/assets/index-CaleIHD8.css +0 -1
  46. package/dist/assets/index-Dwo2xe8_.js +0 -66
package/dist/sw.js CHANGED
@@ -1 +1 @@
1
- if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()}).then(()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s}));self.define=(i,n)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let a={};const u=s=>l(s,r),o={module:{uri:r},exports:a,require:u};e[r]=Promise.all(i.map(s=>o[s]||u(s))).then(s=>(n(...s),a))}}define(["./workbox-9c191d2f"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"pwa-64x64.png",revision:"6f10cd3ce8dd36cf6af65fd22310235f"},{url:"pwa-512x512.png",revision:"f748457107f68f1ca3c1c546ef9921e7"},{url:"pwa-192x192.png",revision:"536b2ea22e7195eefa8806a1d7d993da"},{url:"maskable-icon-512x512.png",revision:"f748457107f68f1ca3c1c546ef9921e7"},{url:"manifest.webmanifest",revision:"5171a09ae3e50605a6503e2bebd6866b"},{url:"index.html",revision:"211a3b3ce54b1e7fa8a8100ecf3f0206"},{url:"icon.svg",revision:"53c7d88dbec013463a85d68375229bcb"},{url:"favicon.ico",revision:"8b16a7348bc587d1c91324487d988e81"},{url:"apple-touch-icon-180x180.png",revision:"010679b40baa6da053a041cfc7fc7657"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/useAttachmentUploader-C3UnTg01.js",revision:null},{url:"assets/url-QSQwrjSV.js",revision:null},{url:"assets/types-BaJkUfo6.js",revision:null},{url:"assets/transcribe-default-LVAxyzpn.js",revision:null},{url:"assets/react-force-graph-2d-BMU3lxLC.js",revision:null},{url:"assets/provenance-B6WFYTWW.js",revision:null},{url:"assets/index-Dwo2xe8_.js",revision:null},{url:"assets/index-CaleIHD8.css",revision:null},{url:"assets/history-ByMClxJV.js",revision:null},{url:"assets/fraunces-vietnamese-opsz-normal-Czevyj-6.woff2",revision:null},{url:"assets/fraunces-vietnamese-opsz-italic-DxWqP7Ku.woff2",revision:null},{url:"assets/fraunces-latin-opsz-normal-DihXLNYH.woff2",revision:null},{url:"assets/fraunces-latin-opsz-italic-lSdLDfvT.woff2",revision:null},{url:"assets/fraunces-latin-ext-opsz-normal-CJcjJNj7.woff2",revision:null},{url:"assets/fraunces-latin-ext-opsz-italic-CGbN9UgK.woff2",revision:null},{url:"assets/figtree-latin-wght-normal-D_ZTVpCC.woff2",revision:null},{url:"assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2",revision:null},{url:"assets/editor-mode-D9fveTEx.js",revision:null},{url:"assets/attachment-upload-l7qA8_xw.js",revision:null},{url:"assets/WizardShell-ZqrzQKxp.js",revision:null},{url:"assets/Welcome-CN4Zh9jP.js",revision:null},{url:"assets/ViewSurface-ClCtZW0N.js",revision:null},{url:"assets/ViewNew-BegTqdOq.js",revision:null},{url:"assets/Vaults-CTsUsDH8.js",revision:null},{url:"assets/VaultGraph-CaiNmEtX.js",revision:null},{url:"assets/Tags-BqJ9vWM5.js",revision:null},{url:"assets/TagSchemaEditor-DIHppYmj.js",revision:null},{url:"assets/TagPage-q7PgbEHn.js",revision:null},{url:"assets/Settings-BuXl91ig.js",revision:null},{url:"assets/PinArchiveButtons-BXZFiW-i.js",revision:null},{url:"assets/OAuthCallback-Dj26N8oJ.js",revision:null},{url:"assets/NoteView-B2QH25fP.js",revision:null},{url:"assets/NoteRenderer-Dl9X9uRt.js",revision:null},{url:"assets/NoteNew-C0DMe5Q8.js",revision:null},{url:"assets/NoteEditor-DtrdRbqx.js",revision:null},{url:"assets/Import-CoFeXNMx.js",revision:null},{url:"assets/Export-DNAoKjAn.js",revision:null},{url:"assets/DayView-nficJMEc.js",revision:null},{url:"assets/ConnectAI-DCtARp-w.js",revision:null},{url:"assets/CheckEmail-BQYQLTLL.js",revision:null},{url:"assets/Calendar-DUwSvnCY.js",revision:null},{url:"assets/AddVaultCreate-DKJfYFJ1.js",revision:null},{url:"assets/AddVaultChooser-B3ElIlza.js",revision:null},{url:"assets/AddVault-BWa_-QjM.js",revision:null},{url:"assets/Activity-BgJa7Woi.js",revision:null},{url:"assets/Account-BhmA30V5.js",revision:null},{url:"apple-touch-icon-180x180.png",revision:"010679b40baa6da053a041cfc7fc7657"},{url:"favicon.ico",revision:"8b16a7348bc587d1c91324487d988e81"},{url:"icon.svg",revision:"53c7d88dbec013463a85d68375229bcb"},{url:"maskable-icon-512x512.png",revision:"f748457107f68f1ca3c1c546ef9921e7"},{url:"pwa-192x192.png",revision:"536b2ea22e7195eefa8806a1d7d993da"},{url:"pwa-512x512.png",revision:"f748457107f68f1ca3c1c546ef9921e7"},{url:"pwa-64x64.png",revision:"6f10cd3ce8dd36cf6af65fd22310235f"},{url:"manifest.webmanifest",revision:"5171a09ae3e50605a6503e2bebd6866b"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\//,/^\/oauth\/(?!callback)/,/^\/\.well-known\//,/^\/signup/,/^\/login/,/^\/logout/,/^\/auth\//,/^\/console/,/^\/admin/,/^\/account\//,/^\/billing/,/^\/unsubscribe/,/^\/health/,/^\/vault\//,/^\/u\//]}))});
1
+ if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()}).then(()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s}));self.define=(i,n)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let a={};const u=s=>l(s,r),o={module:{uri:r},exports:a,require:u};e[r]=Promise.all(i.map(s=>o[s]||u(s))).then(s=>(n(...s),a))}}define(["./workbox-9c191d2f"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"pwa-64x64.png",revision:"6f10cd3ce8dd36cf6af65fd22310235f"},{url:"pwa-512x512.png",revision:"f748457107f68f1ca3c1c546ef9921e7"},{url:"pwa-192x192.png",revision:"536b2ea22e7195eefa8806a1d7d993da"},{url:"maskable-icon-512x512.png",revision:"f748457107f68f1ca3c1c546ef9921e7"},{url:"manifest.webmanifest",revision:"5171a09ae3e50605a6503e2bebd6866b"},{url:"index.html",revision:"55952837aad261e5138dc39ae4bd6fe0"},{url:"icon.svg",revision:"53c7d88dbec013463a85d68375229bcb"},{url:"favicon.ico",revision:"8b16a7348bc587d1c91324487d988e81"},{url:"apple-touch-icon-180x180.png",revision:"010679b40baa6da053a041cfc7fc7657"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/useAttachmentUploader-C78HTrMx.js",revision:null},{url:"assets/url-QSQwrjSV.js",revision:null},{url:"assets/types-BaJkUfo6.js",revision:null},{url:"assets/transcribe-default-B7i-j3pr.js",revision:null},{url:"assets/react-force-graph-2d-G4yaBBi0.js",revision:null},{url:"assets/provenance-DDSHYRnT.js",revision:null},{url:"assets/index-rEtUY3V3.css",revision:null},{url:"assets/index-H6VNro-x.js",revision:null},{url:"assets/history-Ce29a331.js",revision:null},{url:"assets/fraunces-vietnamese-opsz-normal-Czevyj-6.woff2",revision:null},{url:"assets/fraunces-vietnamese-opsz-italic-DxWqP7Ku.woff2",revision:null},{url:"assets/fraunces-latin-opsz-normal-DihXLNYH.woff2",revision:null},{url:"assets/fraunces-latin-opsz-italic-lSdLDfvT.woff2",revision:null},{url:"assets/fraunces-latin-ext-opsz-normal-CJcjJNj7.woff2",revision:null},{url:"assets/fraunces-latin-ext-opsz-italic-CGbN9UgK.woff2",revision:null},{url:"assets/figtree-latin-wght-normal-D_ZTVpCC.woff2",revision:null},{url:"assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2",revision:null},{url:"assets/editor-mode-D9fveTEx.js",revision:null},{url:"assets/attachment-upload-B8YiOVGU.js",revision:null},{url:"assets/WizardShell-B0Fjh0Vt.js",revision:null},{url:"assets/Welcome-yAs98HfO.js",revision:null},{url:"assets/ViewSurface-DzU1BogH.js",revision:null},{url:"assets/ViewNew-DRZyYhEC.js",revision:null},{url:"assets/Vaults-tXitT9QI.js",revision:null},{url:"assets/VaultGraph-BLefh0Zh.js",revision:null},{url:"assets/Tags-CTF2n8-H.js",revision:null},{url:"assets/TagSchemaEditor-Bas3UMIJ.js",revision:null},{url:"assets/TagPage-B7bGWyY4.js",revision:null},{url:"assets/Settings-UmrOUQH_.js",revision:null},{url:"assets/PinArchiveButtons-DyFdYBrq.js",revision:null},{url:"assets/OAuthCallback-D35vvyoO.js",revision:null},{url:"assets/NoteView-B0eNsUUX.js",revision:null},{url:"assets/NoteRenderer-BXeTxHnB.js",revision:null},{url:"assets/NoteNew-Dy1AbHxm.js",revision:null},{url:"assets/NoteEditor-OPipzN_Z.js",revision:null},{url:"assets/Import-6SmwJlgO.js",revision:null},{url:"assets/Export-BynzqvGJ.js",revision:null},{url:"assets/DayView-Dr2pAVmN.js",revision:null},{url:"assets/ConnectAI-BL20KQ5Y.js",revision:null},{url:"assets/CheckEmail-CIv1Gt1o.js",revision:null},{url:"assets/Calendar-DFuh1M3x.js",revision:null},{url:"assets/AddVaultCreate-CtO9yrS5.js",revision:null},{url:"assets/AddVaultChooser-BW2Q-Yue.js",revision:null},{url:"assets/AddVault-DKBqKeyq.js",revision:null},{url:"assets/Activity-CKF0o1vW.js",revision:null},{url:"assets/Account-DYfzZj5S.js",revision:null},{url:"apple-touch-icon-180x180.png",revision:"010679b40baa6da053a041cfc7fc7657"},{url:"favicon.ico",revision:"8b16a7348bc587d1c91324487d988e81"},{url:"icon.svg",revision:"53c7d88dbec013463a85d68375229bcb"},{url:"maskable-icon-512x512.png",revision:"f748457107f68f1ca3c1c546ef9921e7"},{url:"pwa-192x192.png",revision:"536b2ea22e7195eefa8806a1d7d993da"},{url:"pwa-512x512.png",revision:"f748457107f68f1ca3c1c546ef9921e7"},{url:"pwa-64x64.png",revision:"6f10cd3ce8dd36cf6af65fd22310235f"},{url:"manifest.webmanifest",revision:"5171a09ae3e50605a6503e2bebd6866b"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\//,/^\/oauth\/(?!callback)/,/^\/\.well-known\//,/^\/signup/,/^\/login/,/^\/logout/,/^\/auth\//,/^\/console/,/^\/admin/,/^\/account\//,/^\/billing/,/^\/unsubscribe/,/^\/health/,/^\/vault\//,/^\/u\//]}))});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openparachute/app",
3
- "version": "0.22.5",
3
+ "version": "0.22.10",
4
4
  "type": "module",
5
5
  "description": "Parachute — the super-surface. A single-page app for interfacing with your Parachute: name a vault, capture and browse notes, connect your AI, and manage the cloud + hub via their APIs. Seeded from notes-ui; the calm centered arrival + warm home lead the experience.",
6
6
  "license": "AGPL-3.0-only",
@@ -1,8 +0,0 @@
1
- import{ap as Me,r as o,aq as $e,ar as _e,as as ge,a as Le,b as Ue,a6 as qe,at as Fe,au as Ve,av as Oe,aw as Be,a1 as Ge,a5 as We,ax as He,ah as ze,ay as Qe,y as Ye,ak as Je,j as e,N as Ke,az as Ze,aA as xe,V as Xe,al as B,aB as et,aC as tt,aD as Z,aE as st,aF as nt,aG as at,aH as P,L as rt,an as ot,x as it,aI as ct,ao as lt}from"./index-Dwo2xe8_.js";import{v as dt,A as ut}from"./attachment-upload-l7qA8_xw.js";import{u as mt,C as pt,A as ft,a as ht}from"./useAttachmentUploader-C3UnTg01.js";import{b as gt,N as xt}from"./NoteRenderer-Dl9X9uRt.js";import{l as be,u as bt,a as vt,b as yt}from"./transcribe-default-LVAxyzpn.js";import{r as jt}from"./editor-mode-D9fveTEx.js";import"./types-BaJkUfo6.js";const kt=10*6e4;function wt(t){const c=t.segmentMs??kt,l=t.setTimer??((n,w)=>setTimeout(n,w)),x=t.clearTimer??(n=>clearTimeout(n)),k=t.makeRecorder??(n=>Me({...n})),g=[];let a=null,d=null,p="idle",u=0;const h=()=>{for(const n of t.stream.getTracks())n.stop()},y=()=>{d!==null&&(x(d),d=null)},f=()=>{d=l(()=>{d=null,m()},c)},i=()=>{a=k({stream:t.stream,mimeType:t.mimeType,releaseStreamOnStop:!1,now:t.now,MediaRecorderCtor:t.MediaRecorderCtor}),a.start(),u+=1,f()},m=()=>{var n;p!=="recording"||!a||(g.push(a.stop()),i(),(n=t.onRoll)==null||n.call(t,u))};return{get state(){return p},get activePart(){return u},start(){if(p!=="idle")throw new Error(`Cannot start from ${p}`);p="recording",i()},async stop(){if(p!=="recording"||!a)throw new Error(`Cannot stop from ${p}`);p="stopped",y(),g.push(a.stop()),a=null;const n=await Promise.all(g);return h(),n},cancel(){y(),a&&a.cancel(),a=null,p="stopped",h()}}}function Rt(){const[t,c]=o.useState({kind:"idle"}),[l,x]=o.useState(0),[k,g]=o.useState(0),a=o.useRef(null),d=o.useRef(null);o.useEffect(()=>{if(t.kind!=="recording")return;const f=setInterval(()=>x(Date.now()-t.startedAt),250);return()=>clearInterval(f)},[t]),o.useEffect(()=>()=>{d.current&&URL.revokeObjectURL(d.current),a.current&&a.current.state==="recording"&&a.current.cancel()},[]);const p=o.useCallback(async()=>{if(!(t.kind==="recording"||t.kind==="requesting")){c({kind:"requesting"});try{const f=$e();if(!f){c({kind:"denied",message:"This browser can't record audio in a format we can save."});return}const i=await _e(),m=wt({stream:i,mimeType:f,onRoll:n=>g(n)});a.current=m,m.start(),x(0),g(m.activePart),c({kind:"recording",startedAt:Date.now()})}catch(f){const i=f,m=i.kind==="permission-denied"?"Microphone access was denied. Update your browser's site settings to record.":i.kind==="no-device"?"No microphone was found on this device.":i instanceof Error?i.message:"Microphone is not available in this browser.";c({kind:"denied",message:m})}}},[t]),u=o.useCallback(async()=>{var i;const f=a.current;if(!(!f||t.kind!=="recording"))try{const m=await f.stop();a.current=null,g(0);const n=((i=m[0])==null?void 0:i.mimeType)??"",w=m.reduce((G,L)=>G+L.durationMs,0),T=m[0],D=T?URL.createObjectURL(new Blob([T.data],{type:T.mimeType})):"";d.current&&URL.revokeObjectURL(d.current),d.current=D||null,c({kind:"have-audio",segments:m,mimeType:n,url:D,durationMs:w})}catch(m){console.warn(m instanceof Error?`Recording failed: ${m.message}`:"Recording failed."),g(0),c({kind:"idle"})}},[t]),h=o.useCallback(()=>{d.current&&(URL.revokeObjectURL(d.current),d.current=null),c({kind:"idle"}),x(0),g(0)},[]),y=o.useCallback(()=>{h()},[h]);return{phase:t,elapsedMs:l,parts:k,startRecording:p,stopRecording:u,discardAudio:h,reset:y}}function Nt(t){const{segments:c,mimeType:l,recordedAt:x,willTranscribe:k}=t,g=c.length>1,a=t.typedText.trim(),d=c.map((y,f)=>({filename:g?ge(l,x,f+1):ge(l,x),transcribe:k,...k&&g?{metadata:{segment_index:f}}:{}})),p=k?g?c.map((y,f)=>`_Transcript pending (part ${f+1})._`).join(`
2
-
3
- `):"_Transcript pending._":"",u=d.map(y=>`![[${y.filename}]]`).join(`
4
-
5
- `),h=[];return a&&h.push(a),p&&h.push(p),h.push(u),{body:`${h.join(`
6
-
7
- `)}
8
- `,segments:d}}const ve={content:"",path:"",tags:[]};function _t(){const t=Le(s=>s.getActiveVault()),c=Ue(),l=qe(s=>s.push),x=Fe(),k=Ve(),g=Oe(),{db:a,blobStore:d,engine:p}=Be(),{roles:u}=Ge((t==null?void 0:t.id)??null),h=We(),y=o.useRef(He()),f=o.useRef(jt()).current,i=o.useRef((t==null?void 0:t.id)??null).current,m=o.useRef(null),[n,w]=o.useState(()=>{if(i){const s=ze(i,P);if(s)return m.current=s.savedAt,s.body}return{...ve,path:y.current}}),[T,D]=o.useState(()=>m.current),[G,L]=o.useState(""),[ee,C]=o.useState(null),[U,je]=o.useState([]),[ke,te]=o.useState(!1),W=o.useRef(null),se=o.useRef(null),b=Rt(),I=Qe(),R=I.capability,ne=b.phase.kind==="requesting"||b.phase.kind==="recording"||b.phase.kind==="have-audio",we=(R==null?void 0:R.enabled)===!1&&!ne,H=typeof(R==null?void 0:R.minutes_remaining)=="number"?R.minutes_remaining:void 0,z=H!==void 0&&H<=0,[Q,ae]=o.useState(()=>i?be(i):!0),Re=(R==null?void 0:R.enabled)!==!1,re=o.useRef(b.phase.kind);o.useEffect(()=>{const s=re.current,r=b.phase.kind;re.current=r,r==="idle"&&s!=="idle"&&i&&ae(be(i))},[b.phase.kind,i]);const[Ne]=Ye(),oe=Ne.has("voice"),ie=o.useRef(!1);o.useEffect(()=>{var s;!oe||ie.current||I.settled&&((s=I.capability)==null?void 0:s.enabled)!==!1&&(ie.current=!0,b.startRecording())},[oe,I.settled,I.capability,b.startRecording]);const S=mt({noteId:null,onInsert:s=>{W.current?W.current.insertAtCursor(s):w(r=>({...r,content:`${r.content}${s}`}))},onStaged:s=>je(r=>[...r,s]),onError:s=>l(s,"error")}),M=o.useRef(m.current!==null),q=o.useRef(null);o.useEffect(()=>{M.current||(w(s=>{const r=q.current?s.tags.filter(E=>E!==q.current):s.tags,v=r.includes(u.captureText)?r:[...r,u.captureText];return v===s.tags?s:{...s,tags:v}}),q.current=u.captureText)},[u.captureText]);const ce=!M.current&&(n.tags.length===0||n.tags.length===1&&n.tags[0]===u.captureText),Te=n.content.trim().length>0||!ce||n.path.trim().length>0&&n.path!==y.current;if(Je(i,P,n,Te),!t)return e.jsx(Ke,{to:"/",replace:!0});const F=b.phase.kind==="have-audio",Y=n.content.trim().length>0,V=n.content.length>0||n.path!==y.current||!ce||F,$=n.path.trim().length>0&&(Y||F),A=x.isPending||ke,le=o.useCallback(()=>{if(!$||A)return;const s=Ze({content:n.content,path:n.path,tags:n.tags});h&&xe(t.id,h),C(null),x.mutate(s,{onSuccess:async r=>{for(const v of U)try{await k.mutateAsync({noteId:r.id,path:v.path,mimeType:v.mimeType})}catch(E){const J=E instanceof Error?E.message:"Link failed";l(`Failed to attach ${v.filename}: ${J}`,"error")}i&&B(i,P),l(`Created ${r.path??r.id}`,"success"),c(`/n/${encodeURIComponent(r.id)}`,{replace:!0})},onError:r=>{r instanceof Xe?C("Session expired. Reconnect to save."):C(r instanceof Error?`${r.message} — if the path is taken, try a different one.`:"Create failed")}})},[t,i,h,n,$,k,x,c,A,l,U]),de=o.useCallback(async()=>{if(!$||A||b.phase.kind!=="have-audio")return;if(!a||!d){l("Sync queue not ready — try again in a moment.","error");return}C(null);const s=b.phase,r=s.segments,v=s.mimeType,E=n.path.trim(),J=n.tags,Pe=et(n.content),pe=Array.from(new Set([u.captureVoice,...J,...Pe].filter(j=>j.length>0)));Y&&pe.push(u.captureText);const fe=Array.from(new Set(pe)),De=new Date,_=tt(),Ie=!z&&Q,O=Nt({segments:r,mimeType:v,typedText:n.content,recordedAt:De,willTranscribe:Ie});for(let j=0;j<r.length;j++){const N=dt(new File([r[j].data],O.segments[j].filename,{type:v}));if(N){l(N,"error"),C(N);return}}te(!0),h&&xe(t.id,h);const he={content:O.body,path:E,metadata:{source:"voice"},...fe.length?{tags:fe}:{}};try{await Z(a,{kind:"create-note",localId:_,payload:he},{vaultId:t.id});for(let j=0;j<O.segments.length;j++){const N=O.segments[j],K=st();await d.put(K,r[j].data,v,t.id),await Z(a,{kind:"upload-attachment",blobId:K,filename:N.filename,mimeType:v},{vaultId:t.id}),await Z(a,{kind:"link-attachment",noteId:_,pathRef:nt(K),mimeType:v,transcribe:N.transcribe,...N.metadata?{metadata:N.metadata}:{}},{vaultId:t.id})}p==null||p.runOnce(),g.setQueryData(["note",t.id,_],at(he,_)),i&&B(i,P),l("Captured — syncing audio.","success"),b.discardAudio(),c(`/n/${encodeURIComponent(_)}`,{replace:!0})}catch(j){l(j instanceof Error?`Capture failed: ${j.message}`:"Capture failed.","error"),C(j instanceof Error?j.message:"Capture failed")}finally{te(!1)}},[t,i,d,h,a,n,p,Y,$,c,z,A,l,g,u.captureText,u.captureVoice,Q,b]),ue=o.useCallback(()=>{F?de():le()},[F,le,de]),me=o.useCallback(()=>{V&&!confirm("Discard this draft?")||(i&&B(i,P),b.discardAudio(),c("/"))},[i,V,c,b]),Ce=o.useCallback(()=>{i&&B(i,P),M.current=!1,q.current=u.captureText,w({...ve,path:y.current,tags:[u.captureText]}),b.discardAudio(),D(null)},[i,b,u.captureText]);o.useEffect(()=>{if(!V)return;const s=r=>{r.preventDefault(),r.returnValue=""};return window.addEventListener("beforeunload",s),()=>window.removeEventListener("beforeunload",s)},[V]);const Se=s=>{const r=lt(s);!r||n.tags.includes(r)||(M.current=!0,w(v=>({...v,tags:[...v.tags,r]})),L(""))},Ae=s=>{M.current=!0,w(r=>({...r,tags:r.tags.filter(v=>v!==s)}))},Ee=gt({id:"__new__",createdAt:new Date().toISOString()});return e.jsxs("div",{className:"page",children:[e.jsx("nav",{className:"mb-6 text-sm text-fg-dim",children:e.jsx(rt,{to:"/notes",className:"hover:text-accent",children:"← All notes"})}),e.jsxs("article",{children:[e.jsxs("header",{className:"composer mb-6 p-5 md:p-6",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsx("span",{className:"eyebrow",children:"New note"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{type:"button",onClick:me,className:"btn btn-secondary btn-touch",children:"Cancel"}),e.jsx("button",{type:"button",onClick:ue,disabled:!$||A,className:"btn btn-primary btn-touch",title:"Create (⌘S)",children:A?"Creating…":"Create"})]})]}),e.jsx("input",{type:"text",value:n.path,onChange:s=>w(r=>({...r,path:s.target.value})),className:n.path===y.current?"mt-4 w-full border-0 bg-transparent font-sans text-sm text-fg-dim outline-none placeholder:text-fg-dim":"mt-4 w-full border-0 bg-transparent font-serif text-2xl text-fg outline-none placeholder:text-fg-dim md:text-3xl","aria-label":"Note path",placeholder:"Name your note — or just start writing"}),e.jsx("div",{className:"mt-4",children:e.jsx(ot,{tags:n.tags,input:G,onInputChange:L,onAdd:Se,onRemove:Ae})})]}),T?e.jsxs("div",{role:"status","data-testid":"draft-restored",className:"mb-4 flex flex-wrap items-center justify-between gap-2 rounded-xl border border-accent/30 bg-accent/5 px-3 py-2 text-sm",children:[e.jsxs("span",{className:"text-fg-muted",children:["Unsaved draft restored from ",it(T),"."]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{type:"button",onClick:Ce,className:"text-fg-dim hover:text-danger",children:"Discard draft"}),e.jsx("button",{type:"button",onClick:()=>D(null),"aria-label":"Dismiss draft-restored notice",className:"text-fg-dim hover:text-accent",children:"✕"})]})]}):null,ee?e.jsx("div",{role:"alert",className:"mb-4 rounded-xl border border-danger-border bg-danger-soft p-3 text-sm text-danger",children:ee}):null,we?e.jsx(ct,{capability:R}):e.jsxs(e.Fragment,{children:[e.jsx(St,{voice:b,minutesRemaining:H,outOfMinutes:z,transcribe:Q,onTranscribeChange:ae,showTranscribeToggle:Re}),e.jsx(Tt,{vaultId:t.id,captureEngaged:ne})]}),e.jsxs("div",{className:`grid min-h-[60dvh] gap-4 ${f?"":"lg:grid-cols-2"}`,children:[e.jsx(ut,{onDropFiles:S.start,className:"card min-h-0 h-[60dvh] min-w-0",hint:"Images, audio, webm video",children:e.jsx(pt,{ref:W,value:n.content,onChange:s=>w(r=>({...r,content:s})),onSave:ue,onCancel:me,placeholder:"Start writing…",onPasteFile:s=>(S.start(s),!0),onRequestAttachment:()=>{var s;return(s=se.current)==null?void 0:s.open()},livePreview:f})}),f?null:e.jsx("div",{className:"card min-w-0 overflow-auto p-4 lg:h-[60dvh] lg:min-h-0",children:n.content.trim()?e.jsx(xt,{note:{path:n.path,content:n.content},resolve:Ee}):e.jsx("p",{className:"text-sm text-fg-dim",children:"Preview appears here as you type."})})]}),e.jsxs("section",{className:"mt-6 border-t border-border pt-4",children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsx("h2",{className:"font-serif text-xl",children:"Attachments"}),e.jsx(ft,{ref:se,onPickFiles:S.start})]}),e.jsxs("p",{className:"mb-3 text-xs text-fg-dim",children:["Drop or paste files into the editor. Attachments link to the note when you save. Max 100 MB each. Images, audio, webm video."," ",e.jsx("a",{href:"https://github.com/ParachuteComputer/parachute-vault/issues/127",target:"_blank",rel:"noreferrer",className:"text-accent hover:underline",children:"PDF + mp4 coming"}),"."]}),e.jsx(ht,{uploads:S.uploads,onCancel:S.cancel,onDismiss:S.dismiss}),U.length>0?e.jsx("ul",{className:"mt-3 space-y-1 text-sm",children:U.map(s=>e.jsxs("li",{className:"flex items-center justify-between gap-2 rounded-lg border border-border bg-card/50 px-3 py-1.5 font-mono text-xs text-fg-muted",children:[e.jsx("span",{className:"truncate",children:s.filename}),e.jsx("span",{className:"shrink-0 text-fg-dim",children:"staged"})]},s.path))}):null]})]})]})}function Tt({vaultId:t,captureEngaged:c}){const l=bt(),x=vt(),{made:k,markMade:g}=yt(t),[a,d]=o.useState(null);if(!(c&&!k&&l.supported&&l.value==="keep"))return null;const u=h=>{d(null),x.mutate(h,{onSuccess:()=>g(),onError:()=>d("Couldn't save that choice — this recording is kept (the vault default). We'll ask again next time; you can also set it in Settings.")})};return e.jsxs("div",{"data-testid":"retention-choice",className:"mb-4 flex flex-col gap-2 rounded-xl border border-border bg-card/60 p-3",children:[e.jsx("p",{className:"text-xs text-fg-muted",children:"First voice note here — should this vault keep your audio files after transcribing?"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("button",{type:"button",onClick:()=>u("keep"),disabled:x.isPending,className:"btn btn-secondary btn-touch",children:"Keep my recordings"}),e.jsx("button",{type:"button",onClick:()=>u("until_transcribed"),disabled:x.isPending,className:"btn btn-secondary btn-touch",children:"Just keep the words"}),e.jsx("span",{className:"text-xs text-fg-dim",children:"(audio deleted after transcribing)"})]}),e.jsx("p",{className:"text-xs text-fg-dim",children:"Either way your capture saves now. Change this anytime in Settings."}),a?e.jsx("p",{className:"text-xs text-danger","data-testid":"retention-choice-error",children:a}):null]})}const Ct=30;function ye({checked:t,disabled:c,onChange:l}){return e.jsxs("div",{className:"flex basis-full items-center justify-between gap-3",children:[e.jsx("span",{className:"text-xs text-fg-dim",children:"Transcribe this recording"}),e.jsx("button",{type:"button",role:"switch","aria-checked":t,"aria-label":"Transcribe this recording","data-testid":"transcribe-toggle",disabled:c,onClick:()=>l(!t),className:`relative h-7 w-12 shrink-0 rounded-full transition-colors disabled:opacity-40 ${t?"bg-accent":"bg-border"}`,children:e.jsx("span",{className:`absolute top-0.5 h-6 w-6 rounded-full bg-card shadow-sm transition-transform ${t?"translate-x-5":"translate-x-0.5"}`})})]})}function St({voice:t,minutesRemaining:c,outOfMinutes:l,transcribe:x,onTranscribeChange:k,showTranscribeToggle:g}){const{phase:a,elapsedMs:d,parts:p,startRecording:u,stopRecording:h,discardAudio:y}=t,f=a.kind==="recording",i=a.kind==="requesting",m=!l&&x,n=typeof c=="number"&&c<=Ct;return a.kind==="have-audio"?e.jsxs("div",{className:"mb-4 flex flex-col gap-2 rounded-xl border border-accent/30 bg-accent/5 p-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("span",{className:"text-sm text-fg-muted",children:["🎙 Recorded ",X(a.durationMs),a.segments.length>1?` · ${a.segments.length} parts`:""]}),e.jsx("button",{type:"button",onClick:y,className:"text-xs text-fg-dim hover:text-danger",children:"Discard"})]}),e.jsx("audio",{controls:!0,src:a.url,className:"w-full",children:e.jsx("track",{kind:"captions"})}),g?e.jsx(ye,{checked:m,disabled:l,onChange:k}):null,e.jsx("p",{className:"text-xs text-fg-dim",children:l?"Saved as audio-only — you're out of transcription minutes this month.":m?"Transcript will be appended once your vault processes it. Save to commit.":"Saved as audio-only — transcription is off for this recording."})]}):e.jsxs("div",{className:"mb-4 flex flex-wrap items-center justify-between gap-3 rounded-xl border border-border bg-card/60 p-3",children:[e.jsx("div",{className:"text-xs text-fg-dim",children:f?p>1?`Recording — tap Stop to finish. (part ${p})`:"Recording — tap Stop to finish.":i?"Requesting microphone…":l?"You're out of transcription minutes this month — this saves as audio-only.":m?"Add a voice memo to this note. Audio gets transcribed and appended.":"Add a voice memo to this note. Saved as audio-only — transcription is off for this recording."}),f?e.jsxs("button",{type:"button",onClick:()=>void h(),"aria-label":`Recording — ${X(d)} — stop`,"aria-pressed":"true",className:"flex min-h-11 items-center gap-2 rounded-full border border-danger-border bg-danger-soft px-4 py-2 text-sm font-medium text-danger",children:[e.jsx("span",{"aria-hidden":"true",className:"animate-pulse",children:"🎙"}),e.jsxs("span",{children:["Stop ",X(d)]})]}):e.jsxs("button",{type:"button",onClick:()=>void u(),"aria-label":"Record voice memo",disabled:i,className:"flex min-h-11 items-center gap-2 rounded-full border border-accent/30 bg-accent/10 px-4 py-2 text-sm font-medium text-accent hover:bg-accent/15 disabled:opacity-40",children:[e.jsx("span",{"aria-hidden":"true",children:"🎙"}),e.jsx("span",{children:i?"Requesting…":"Record"})]}),g?e.jsx(ye,{checked:m,disabled:l,onChange:k}):null,n&&!l?e.jsxs("p",{className:"basis-full text-xs text-fg-dim","data-testid":"voice-minutes-left",children:["About ",Math.round(c)," min of transcription left this month."]}):null,a.kind==="denied"?e.jsx("p",{className:"basis-full rounded-xl border border-danger-border bg-danger-soft px-3 py-2 text-xs text-danger",children:a.message}):null]})}function X(t){const c=Math.floor(t/1e3),l=Math.floor(c/60),x=c%60;return`${String(l).padStart(2,"0")}:${String(x).padStart(2,"0")}`}export{_t as NoteNew};
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/react-force-graph-2d-BMU3lxLC.js","assets/index-Dwo2xe8_.js","assets/index-CaleIHD8.css"])))=>i.map(i=>d[i]);
2
- import{a5 as w,a as k,av as M,r as d,aM as U,j as t,af as A,aN as $,L as p,aO as D,aP as V,aQ as O,aR as _,aS as H,ae as z,aT as G,N as W,a0 as K,v as j,a1 as Q,aU as Y,aw as q,ag as L,aV as X,aW as Z,aX as J,am as ee,aY as te,E as se,w as ne,aZ as F,x as T,Y as re,a_ as ae,V as ie,a7 as oe}from"./index-Dwo2xe8_.js";import{P as le,D as ce}from"./PinArchiveButtons-BXZFiW-i.js";import{b as de,N as ue}from"./NoteRenderer-Dl9X9uRt.js";function me(e,n){const s=w(),r=k(u=>u.activeVaultId),i=M(),[l,a]=d.useState(!1),o=n&&!xe(n)?n.path:void 0;return d.useEffect(()=>{if(a(!1),!s||!r||!e||!o)return;let u=!0;const m=()=>{u&&i.invalidateQueries({queryKey:["note",r,e]})},c=he(s,o,{onUpsert:m,onRemove:m,onStatus:h=>{u&&a(h==="open")}});return()=>{u=!1,a(!1),c()}},[s,r,e,o,i]),{isLive:l}}function xe(e){return U(e.id)}function he(e,n,s){return e.subscribe({path:n},{onSnapshot:()=>{},onUpsert:()=>s.onUpsert(),onRemove:()=>s.onRemove(),onStatus:s.onStatus})}const fe=1,pe=3,ge=1;function be(e,n){const s=new Map,r=new Map;for(const l of n.values())for(const a of l.links??[]){if(a.sourceId===a.targetId||!n.has(a.sourceId)||!n.has(a.targetId))continue;const o=`${a.sourceId}|${a.targetId}|${a.relationship}`;s.has(o)||(s.set(o,{source:a.sourceId,target:a.targetId,relationship:a.relationship}),r.set(a.sourceId,(r.get(a.sourceId)??0)+1),r.set(a.targetId,(r.get(a.targetId)??0)+1))}return{nodes:[...n.values()].map(l=>{var a;return{id:l.id,path:l.path,tags:l.tags,summary:typeof((a=l.metadata)==null?void 0:a.summary)=="string"?l.metadata.summary:void 0,isAnchor:l.id===e,linkCount:r.get(l.id)??0}}),edges:[...s.values()]}}async function je(e,n,s,r){const i=new Map;i.set(e.id,e);let l=[e];for(let a=1;a<=n;a++){const o=new Set;for(const c of l)for(const h of c.links??[]){const f=h.sourceId===c.id?h.targetId:h.sourceId;f!==c.id&&(i.has(f)||o.add(f))}if(o.size===0)break;const u=await Promise.all([...o].map(c=>s(c).catch(()=>null)));if(r!=null&&r.cancelled)return i;const m=[];for(const c of u)c&&!i.has(c.id)&&(i.set(c.id,c),m.push(c));l=m}return i}function Ne(e,n,s){const[r,i]=d.useState(null),[l,a]=d.useState(!1);return d.useEffect(()=>{if(!e||!n){i(null),a(!1);return}const o={cancelled:!1};return a(!0),je(n,s,u=>e.getNote(u,{includeLinks:!0}),o).then(u=>{o.cancelled||(i(be(n.id,u)),a(!1))}).catch(()=>{o.cancelled||a(!1)}),()=>{o.cancelled=!0}},[e,n,s]),{data:r,isLoading:l}}const ve=d.lazy(()=>V(()=>import("./react-force-graph-2d-BMU3lxLC.js"),__vite__mapDeps([0,1,2])));function ye({anchor:e}){const[n,s]=d.useState(!0),[r,i]=d.useState(ge),l=w(),{data:a,isLoading:o}=Ne(l,n?e:void 0,r);return t.jsxs("section",{className:"mt-10 border-t border-border pt-6",children:[t.jsxs("header",{className:"mb-4 flex flex-wrap items-center justify-between gap-3",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsxs("button",{type:"button",onClick:()=>s(u=>!u),"aria-expanded":n,className:"font-serif text-xl text-fg hover:text-accent",children:[n?"▾":"▸"," Neighborhood"]}),n&&a?t.jsxs("span",{className:"text-xs text-fg-dim",children:[a.nodes.length," ",a.nodes.length===1?"note":"notes"]}):null]}),n?t.jsx(we,{depth:r,onChange:i}):null]}),n?t.jsx(ke,{data:a,isLoading:o}):null]})}function we({depth:e,onChange:n}){const s=[];for(let r=fe;r<=pe;r++)s.push(r);return t.jsxs("fieldset",{className:"flex items-center gap-1 text-xs text-fg-dim",children:[t.jsx("legend",{className:"mr-1 inline-block",children:"Hops"}),s.map(r=>t.jsx("button",{type:"button","aria-pressed":r===e,onClick:()=>n(r),className:r===e?"rounded border border-accent bg-accent/10 px-2 py-0.5 text-accent":"rounded border border-border bg-card px-2 py-0.5 hover:text-accent",children:r},r))]})}function ke({data:e,isLoading:n}){const[s,r]=d.useState(null),i=d.useRef(null);if(d.useEffect(()=>{s&&e&&!e.nodes.some(m=>m.id===s)&&r(null)},[e,s]),!e&&n)return t.jsx(B,{});if(!e)return null;if(e.nodes.length<=1)return t.jsx("div",{className:"rounded-md border border-border bg-card p-6 text-center text-sm text-fg-dim",children:"This note has no neighbors yet."});const l=e.nodes.filter(m=>!m.isAnchor),a=s?e.nodes.find(m=>m.id===s)??null:null,o=m=>{i.current=document.activeElement??null,r(m)},u=m=>{var c,h;r(null),m!=null&&m.restoreFocus&&((h=(c=i.current)==null?void 0:c.focus)==null||h.call(c))};return t.jsxs(t.Fragment,{children:[t.jsx(Re,{data:e,onSelect:o}),a?t.jsx(Ie,{node:a,onClose:u},a.id):null,t.jsx(Ce,{neighbors:l,selectedId:s,onSelect:o})]})}function Ce({neighbors:e,selectedId:n,onSelect:s}){return e.length===0?null:t.jsxs("div",{className:"mt-4",children:[t.jsx("h3",{className:"eyebrow mb-2",children:"Neighbors"}),t.jsx("ul",{className:"flex flex-wrap gap-2",children:e.map(r=>{const i=D(r.path??r.id);return t.jsx("li",{children:t.jsx("button",{type:"button",onClick:()=>s(r.id),"aria-haspopup":"dialog","aria-pressed":n===r.id,"aria-label":`Preview ${i}`,className:`btn btn-sm btn-touch max-w-full ${n===r.id?"btn-primary":"btn-secondary"}`,children:t.jsx("span",{className:"truncate",children:i})})},r.id)})})]})}function Ie({node:e,onClose:n}){var a;const s=A(e.id),r=d.useRef(null);d.useEffect(()=>{var o;(o=r.current)==null||o.focus()},[]);const i=$({id:e.id,path:e.path,content:(a=s.data)==null?void 0:a.content}),l=Se(s.data);return t.jsxs("div",{role:"dialog",ref:r,"aria-label":"Note preview",tabIndex:-1,"data-testid":"neighbor-preview",onKeyDown:o=>{o.key==="Escape"&&n({restoreFocus:!0})},onBlur:o=>{o.currentTarget.contains(o.relatedTarget)||n()},className:"focus-ring card mt-3 p-4",children:[t.jsxs("div",{className:"flex items-start justify-between gap-3",children:[t.jsx("h3",{className:"min-w-0 truncate font-serif text-lg text-fg",children:i}),t.jsx("button",{type:"button",onClick:()=>n({restoreFocus:!0}),"aria-label":"Close preview",className:"shrink-0 text-fg-dim hover:text-accent",children:"✕"})]}),e.tags&&e.tags.length>0?t.jsx("div",{className:"mt-1.5 flex flex-wrap gap-1.5",children:e.tags.map(o=>t.jsxs("span",{className:"chip chip-tag max-w-full break-all",children:["#",o]},o))}):null,t.jsx(Ee,{isPaused:s.fetchStatus==="paused",isPending:s.isPending,isError:s.isError,snippet:l}),t.jsx("div",{className:"mt-3",children:t.jsx(p,{to:`/n/${encodeURIComponent(e.id)}`,className:"btn btn-primary btn-touch",children:"Open note"})})]})}function Ee({isPaused:e,isPending:n,isError:s,snippet:r}){return e&&n?t.jsx("p",{className:"mt-2 text-sm text-fg-dim",children:"Preview unavailable offline."}):n?t.jsx("p",{className:"mt-2 text-sm text-fg-dim",children:"Loading preview…"}):s?t.jsx("p",{className:"mt-2 text-sm text-fg-dim",children:"Couldn't load preview."}):r?t.jsx("p",{className:"mt-2 text-sm text-fg-muted",children:r}):t.jsx("p",{className:"mt-2 text-sm text-fg-dim",children:"No preview text."})}function Se(e){if(!e)return null;const n=(e.preview??O(e.content??"")).trim();return n?n.length>200?`${n.slice(0,200).trimEnd()}…`:n:null}function B(){return t.jsx("div",{"aria-busy":"true",className:"h-[24rem] w-full animate-pulse rounded-md border border-border bg-card"})}function Re({data:e,onSelect:n}){const s=d.useRef(null),[r,i]=d.useState({w:600,h:384});d.useEffect(()=>{const a=s.current;if(!a)return;const o=()=>{const m=a.getBoundingClientRect();i({w:Math.max(320,Math.floor(m.width)),h:384})};o();const u=new ResizeObserver(o);return u.observe(a),()=>u.disconnect()},[]);const l=d.useMemo(()=>({nodes:e.nodes.map(a=>({...a})),links:e.edges.map(a=>({source:a.source,target:a.target,rel:a.relationship}))}),[e]);return t.jsx("div",{ref:s,"data-testid":"neighborhood-graph-canvas",className:"overflow-hidden rounded-md border border-border bg-card",children:t.jsx(d.Suspense,{fallback:t.jsx(B,{}),children:t.jsx(ve,{graphData:l,width:r.w,height:r.h,nodeLabel:a=>Le(a),nodeVal:a=>{const o=a;return o.isAnchor?8:3+Math.min(o.linkCount,8)},nodeColor:a=>a.isAnchor?"#c9b170":"#8a9a7a",linkColor:()=>"rgba(160, 160, 160, 0.4)",linkDirectionalArrowLength:3,linkDirectionalArrowRelPos:1,cooldownTicks:80,onNodeClick:a=>{n(a.id)}})})})}function Le(e){const n=[e.path??e.id];return e.tags&&e.tags.length>0&&n.push(`tags: ${e.tags.join(", ")}`),e.summary&&n.push(e.summary),n.join(`
3
- `)}function Te({content:e,attachments:n,onRetry:s,retrying:r=!1}){const i={content:e,attachments:n},l=_(i);if(l==="pending"){const a=H(i);return t.jsxs("output",{"aria-live":"polite",className:"mb-4 inline-flex items-center gap-2 rounded-md border border-sky-500/30 bg-sky-500/5 px-3 py-1.5 text-xs text-sky-300",children:[t.jsx("span",{"aria-hidden":!0,className:"inline-block h-2 w-2 animate-pulse rounded-full bg-sky-400"}),"Transcribing…",a?t.jsxs("span",{className:"text-sky-300/80",children:["part ",Math.min(a.done+1,a.total)," of ",a.total]}):null]})}return l==="failed"?t.jsxs("output",{className:"mb-4 inline-flex flex-wrap items-center gap-2 rounded-md border border-amber-500/30 bg-amber-500/5 px-3 py-1.5 text-xs text-amber-200",children:[t.jsx("span",{children:"Transcription unavailable — open the audio below and add a note by hand."}),s?t.jsx("button",{type:"button",onClick:s,disabled:r,className:"rounded border border-amber-500/40 px-2 py-0.5 font-medium text-amber-100 hover:bg-amber-500/15 disabled:opacity-50",children:r?"Retrying…":"Retry"}):null]}):l==="voice-limit"?t.jsx("output",{className:"mb-4 inline-flex items-center gap-2 rounded-md border border-border bg-bg/40 px-3 py-1.5 text-xs text-fg-muted",children:"Monthly voice limit reached — transcription resumes next month. The audio is saved below."}):null}function Xe(){const{id:e}=z(),n=k(r=>r.getActiveVault()),s=A(e);return me(e,s.data),d.useEffect(()=>{n&&e&&G(n.id,e)},[n,e]),n?t.jsxs("div",{className:"page",children:[t.jsx("nav",{className:"mb-6 text-sm text-fg-dim",children:t.jsx(p,{to:"/notes",className:"focus-ring hover:text-accent",children:"← All notes"})}),s.isPending?t.jsx(_e,{}):s.data?t.jsxs(t.Fragment,{children:[s.isError?t.jsx(K,{}):null,t.jsx(Pe,{note:s.data,cacheId:e})]}):s.isError?t.jsx(Ke,{error:s.error,retry:()=>s.refetch()}):t.jsx(We,{id:e??""})]}):t.jsx(W,{to:"/",replace:!0})}function Pe({note:e,cacheId:n}){var S,R;const s=k(x=>x.getActiveVault()),{roles:r}=Q((s==null?void 0:s.id)??null),i=Y(),{mirror:l}=q(),a=l.state==="offline",o=e.contentEvicted===!0,u=d.useMemo(()=>de(e),[e]),m=L(x=>x.on),c=L(x=>x.setOn);d.useEffect(()=>{if(!m)return;const x=y=>{y.key==="Escape"&&c(!1)};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[m,c]);const h=e.path??e.id,f=X(e.content),g=f!==null?{kind:"title",text:f}:e.path?Z(e.path):{kind:"title",text:e.id},b=d.useMemo(()=>f!==null?{...e,content:J(e.content??"")}:e,[e,f]),C=typeof((S=e.metadata)==null?void 0:S.summary)=="string"?e.metadata.summary:null,I=d.useMemo(()=>(e.links??[]).filter(x=>x.targetId===e.id&&x.sourceId!==e.id&&x.sourceNote),[e]),E=d.useMemo(()=>{const x=new Set,y=[];for(const N of e.links??[])N.sourceId!==e.id||N.targetId===e.id||N.targetNote&&(x.has(N.targetId)||(x.add(N.targetId),y.push(N)));return y},[e]);return t.jsxs("article",{className:"grid gap-10 lg:grid-cols-[minmax(0,1fr)_18rem]",children:[t.jsxs("div",{className:"min-w-0",children:[t.jsxs("header",{className:"mb-8 border-b border-border pb-5",children:[t.jsx("h1",{className:g.kind==="timestamp"?"page-title title-timestamp":"page-title",children:g.text}),a?t.jsx(ze,{}):null,e.tags&&e.tags.length>0?t.jsx(Be,{tags:e.tags}):null,C?t.jsx("p",{className:"mt-3 text-fg-muted",children:C}):null,t.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[t.jsx(p,{to:`/n/${encodeURIComponent(e.id)}/edit`,className:"btn btn-secondary btn-touch",children:"Edit"}),t.jsx(le,{note:e,keyboard:!0}),t.jsx(ce,{note:e}),t.jsxs("button",{type:"button",onClick:()=>c(!0),className:"btn btn-ghost btn-touch",title:"Focus (⌘.)",children:[t.jsx(ee,{width:16,height:16}),"Focus"]}),te(e,r.view)?t.jsx(p,{to:`/views/${encodeURIComponent(e.id)}`,className:"btn btn-secondary btn-touch",children:"Open as view"}):null]}),t.jsx(Ue,{value:h,isPath:!!e.path})]}),t.jsx(Te,{content:e.content??"",attachments:e.attachments,onRetry:()=>i.mutate({cacheId:n??e.id,serverId:e.id}),retrying:i.isPending}),o?t.jsx(Ge,{preview:e.preview}):(R=b.content)!=null&&R.trim()?t.jsx(ue,{note:b,resolve:u}):f===null?t.jsx(He,{noteId:e.id}):null,e.attachments&&e.attachments.length>0?t.jsxs("section",{className:"mt-10 border-t border-border pt-6",children:[t.jsx("h2",{className:"mb-3 font-serif text-xl",children:"Attachments"}),t.jsx("div",{className:"space-y-6",children:e.attachments.map(x=>t.jsx($e,{attachment:x},x.id))})]}):null,t.jsx(ye,{anchor:e})]}),t.jsxs("aside",{className:"space-y-6 text-sm lg:sticky lg:top-24 lg:self-start",children:[t.jsx(Ae,{note:e}),E.length>0?t.jsx(P,{title:"Outbound",links:E,peer:"target"}):null,I.length>0?t.jsx(P,{title:"Inbound",links:I,peer:"source"}):null]})]})}function Ae({note:e}){const n=e.createdAt,s=e.updatedAt,r=Object.entries(e.metadata??{}).filter(([i])=>i!=="summary");return t.jsxs("section",{className:"card shadow-soft p-4",children:[t.jsx("h2",{className:"eyebrow mb-2",children:"Metadata"}),t.jsxs("dl",{className:"space-y-1.5 text-sm",children:[e.path?t.jsx(v,{label:"Title",value:t.jsx("span",{className:"font-mono text-xs break-all",children:e.path})}):null,t.jsx(v,{label:"ID",value:t.jsx("span",{className:"font-mono text-xs break-all",children:e.id})}),t.jsx(v,{label:"Created",value:t.jsx("time",{title:n,children:T(n)})}),s?t.jsx(v,{label:"Updated",value:t.jsx("time",{title:s,children:T(s)})}):null,e.path?t.jsx(v,{label:"Path",value:t.jsx(re,{value:e.path,label:"note path",className:"mt-1"})}):null,r.map(([i,l])=>t.jsx(v,{label:i,value:t.jsx("span",{className:"break-all text-fg-muted",children:String(l)})},i))]}),e.path?t.jsx(Fe,{path:e.path}):null,t.jsx(ae,{note:e,variant:"detail",className:"mt-3"})]})}function Fe({path:e}){const{copied:n,copy:s}=F();return t.jsx("button",{type:"button",onClick:()=>s(e),className:"btn btn-secondary btn-touch mt-3 w-full","aria-label":"Copy reference to this note",children:n?"Copied ✓":"Copy reference"})}function v({label:e,value:n}){return t.jsxs("div",{className:"flex flex-col gap-0.5",children:[t.jsx("dt",{className:"eyebrow",children:e}),t.jsx("dd",{children:n})]})}function Be({tags:e}){return t.jsx("div",{className:"mt-2 flex flex-wrap gap-1","aria-label":"Tags",children:e.map(n=>t.jsxs(p,{to:`/tags/${encodeURIComponent(n)}`,className:"chip chip-tag focus-ring max-w-full break-all",children:["#",n]},n))})}function Me(e){return t.jsxs("svg",{width:12,height:12,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.75,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[t.jsx("rect",{x:"9",y:"9",width:"11",height:"11",rx:"2"}),t.jsx("path",{d:"M5 15H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5"})]})}function Ue({value:e,isPath:n}){const{copied:s,copy:r}=F();return t.jsxs("button",{type:"button",onClick:()=>r(e),"aria-label":n?"Copy path":"Copy note id",className:"focus-ring group mt-4 flex max-w-full items-center gap-1.5 rounded text-fg-dim transition-colors hover:text-fg-muted",children:[t.jsx(Me,{className:"shrink-0 opacity-70 transition-opacity group-hover:opacity-100"}),t.jsx("span",{className:"min-w-0 truncate font-mono text-xs",children:e}),s?t.jsx("span",{className:"shrink-0 text-xs text-fg-muted",children:"Copied"}):null]})}function P({title:e,links:n,peer:s}){return t.jsxs("section",{className:"card shadow-soft p-4",children:[t.jsxs("h2",{className:"eyebrow mb-2 tabular-nums",children:[e," (",n.length,")"]}),t.jsx("ul",{className:"space-y-1.5",children:n.map(r=>{var o;const i=s==="source"?r.sourceNote:r.targetNote;if(!i)return null;const l=i.path??i.id,a=typeof((o=i.metadata)==null?void 0:o.summary)=="string"?i.metadata.summary:null;return t.jsx("li",{children:t.jsxs(p,{to:`/n/${encodeURIComponent(i.id)}`,className:"block rounded px-1 py-0.5 hover:bg-bg/50",children:[t.jsx("div",{className:"truncate font-mono text-xs text-fg-muted hover:text-accent",children:l}),a?t.jsx("div",{className:"mt-0.5 line-clamp-2 text-xs text-fg-dim",children:a}):null]})},`${r.sourceId}->${r.targetId}:${r.relationship}`)})})]})}function $e({attachment:e}){const n=(e.mimeType??"").toLowerCase(),s=e.filename??e.id;return t.jsxs("figure",{className:"card shadow-soft p-3",children:[t.jsxs("figcaption",{className:"mb-2 flex items-baseline justify-between gap-3",children:[t.jsx("span",{className:"truncate font-mono text-xs text-fg-muted",children:s}),typeof e.size=="number"?t.jsx("span",{className:"shrink-0 text-xs text-fg-dim",children:Oe(e.size)}):null]}),t.jsx(De,{attachment:e,mime:n,filename:s})]})}function De({attachment:e,mime:n,filename:s}){const r=w(),[i,l]=d.useState(null),[a,o]=d.useState(null),u=Ve(n,s),m=u!=="other",c=e.url;if(d.useEffect(()=>{if(!m||!c||!r)return;let f=!1,g=null;return o(null),r.fetchAttachmentBlob(c).then(b=>{f||(g=URL.createObjectURL(b),l(g))}).catch(b=>{f||o(b instanceof Error?b.message:"Failed to load attachment")}),()=>{f=!0,g&&URL.revokeObjectURL(g)}},[m,c,r]),!c)return t.jsx("p",{className:"text-sm text-fg-dim",children:"(no URL)"});if(a)return t.jsx("p",{className:"text-sm text-danger",children:a});if(m&&!i)return t.jsx(j,{className:"h-32 w-full"});const h=i??c;return u==="image"?t.jsx("img",{src:h,alt:s,className:"max-h-[32rem] rounded"}):u==="audio"?t.jsx("audio",{controls:!0,src:h,className:"w-full"}):u==="video"?t.jsx("video",{controls:!0,src:h,className:"w-full rounded"}):u==="pdf"?t.jsxs(t.Fragment,{children:[t.jsx("iframe",{src:h,title:s,className:"h-[40rem] w-full rounded border border-border"}),t.jsxs("a",{href:h,download:s,className:"mt-2 inline-block text-sm text-accent hover:underline",children:["Download ",s]})]}):t.jsxs("a",{href:h,download:s,className:"text-sm text-accent hover:underline",children:["Download ",s]})}function Ve(e,n){if(e.startsWith("image/"))return"image";if(e.startsWith("audio/"))return"audio";if(e.startsWith("video/"))return"video";if(e==="application/pdf")return"pdf";const s=n.toLowerCase().split(".").pop()??"";return["png","jpg","jpeg","gif","webp","svg"].includes(s)?"image":["mp3","wav","ogg","m4a","flac"].includes(s)?"audio":["mp4","webm","mov"].includes(s)?"video":s==="pdf"?"pdf":"other"}function Oe(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${(e/(1024*1024*1024)).toFixed(2)} GB`}function _e(){return t.jsxs("div",{className:"grid gap-10 lg:grid-cols-[minmax(0,1fr)_18rem]","aria-busy":"true",children:[t.jsxs("div",{className:"min-w-0 space-y-3",children:[t.jsx(j,{className:"h-3 w-32"}),t.jsx(j,{className:"h-8 w-2/3"}),t.jsx(j,{className:"h-4 w-full"}),t.jsx("div",{className:"mt-6 space-y-2",children:[0,1,2,3,4,5].map(e=>t.jsx(j,{className:"h-3",width:`${70+e*13%25}%`},e))})]}),t.jsxs("div",{className:"space-y-4",children:[t.jsx(j,{className:"h-32"}),t.jsx(j,{className:"h-24"})]})]})}function He({noteId:e}){return t.jsxs("p",{className:"my-8 font-serif text-lg italic text-fg-muted",children:["Nothing here yet."," ",t.jsx(p,{to:`/n/${encodeURIComponent(e)}/edit`,className:"not-italic text-accent hover:underline",children:"Start writing →"})]})}function ze(){return t.jsx("p",{className:"mt-2",children:t.jsx("span",{className:"chip bg-bg-soft text-fg-muted",title:"Served from your offline copy",children:"Saved copy"})})}function Ge({preview:e}){return t.jsxs("div",{className:"my-8",children:[e?t.jsx("p",{className:"mb-4 text-fg-muted",children:e}):null,t.jsx("p",{className:"font-serif text-lg italic text-fg-muted",children:"Connect to load this note."})]})}function We({id:e}){return t.jsx(ne,{title:t.jsx("span",{className:"font-serif text-xl text-fg",children:"Note not found"}),description:t.jsxs(t.Fragment,{children:["No note with id ",t.jsx("span",{className:"font-mono",children:e})," in this vault."]}),action:t.jsx(p,{to:"/notes",className:"text-sm text-accent hover:underline",children:"Back to all notes"})})}function Ke({error:e,retry:n}){const s=e instanceof ie,r=e instanceof oe,i=s?"Session expired":r?"Note not found":"Could not load note",l=s?e.message:r?"Couldn't find this note. It may have been deleted, or the link may be wrong.":"Something went wrong loading this note. You can try again, or head back to your notes.";return t.jsx(se,{title:i,message:t.jsxs(t.Fragment,{children:[l,s?null:t.jsxs("details",{className:"mt-3",children:[t.jsx("summary",{className:"cursor-pointer text-xs text-fg-dim hover:text-fg-muted",children:"Technical detail"}),t.jsx("p",{className:"mt-1 whitespace-pre-wrap break-words font-mono text-xs text-fg-dim",children:e.message})]})]}),retry:s?void 0:n,action:s?t.jsx(p,{to:"/add",className:"btn btn-primary",children:"Reconnect vault"}):t.jsx(p,{to:"/notes",className:"btn btn-secondary btn-touch",children:"Back to notes"})})}export{Xe as NoteView};
@@ -1 +0,0 @@
1
- import{a as T,j as e,N as C,L as j,b6 as k,a6 as y,r as d,b7 as E,b8 as A,b9 as O,ba as R,bb as L,a1 as M,bc as P,bd as N,be as g,aw as $,bf as _,bg as I,x as D,bh as z,b as V,u as B,g as F,bi as G,bj as H,h as U,i as Y,bk as K}from"./index-Dwo2xe8_.js";import{u as q,a as Q,b as W,c as X}from"./transcribe-default-LVAxyzpn.js";import{r as Z,w as J}from"./editor-mode-D9fveTEx.js";import"./types-BaJkUfo6.js";function pe(){const t=T(a=>a.getActiveVault());return t?e.jsxs("div",{className:"page-prose",children:[e.jsxs("header",{className:"mb-10",children:[e.jsx("nav",{className:"mb-4 text-sm text-fg-dim",children:e.jsx(j,{to:"/",className:"focus-ring hover:text-accent",children:"← Home"})}),e.jsx("p",{className:"eyebrow mb-1",children:t.name}),e.jsx("h1",{className:"page-title",children:"Settings"}),e.jsx("p",{className:"mt-2 text-fg-muted",children:"Everything about this vault, in one calm place."})]}),e.jsxs("div",{className:"space-y-8",children:[e.jsx(ee,{}),e.jsx(se,{}),e.jsx(ne,{vaultId:t.id}),e.jsx(ie,{}),e.jsx(re,{}),e.jsx(de,{vaultId:t.id}),e.jsx(ue,{vaultId:t.id}),e.jsx(le,{vaultId:t.id}),e.jsx(oe,{})]})]}):e.jsx(C,{to:"/",replace:!0})}function ee(){return e.jsxs("section",{"aria-label":"Manage",children:[e.jsx("h2",{className:"eyebrow mb-3",children:"Manage"}),e.jsxs("div",{className:"card divide-y divide-border rounded-xl shadow-soft",children:[e.jsx(b,{to:"/account",title:"Account",description:"Your plan, billing, hosted vaults, and sign-in — managed in the app."}),e.jsx(te,{}),e.jsx(b,{to:"/connect",title:"Connections",description:"Connect Claude, ChatGPT, or any MCP client to this vault."}),e.jsx(b,{to:"/vaults",title:"Vaults",description:"Add a vault, switch between them, or export."})]})]})}function te(){const t=V(),a=B(r=>r.identityEpoch),[n,s]=d.useState(null),[i,u]=d.useState(!1);if(d.useEffect(()=>{let r=!0;return F().then(o=>{r&&s(o.signed_in?{identity:o.email??o.username??null,csrf:o.csrf}:null)}).catch(()=>{r&&s(null)}),()=>{r=!1}},[a]),!n)return null;const{identity:c,csrf:h}=n;async function x(){u(!0);try{await U(h)}finally{Y(),t("/",{replace:!0})}}return e.jsxs("div",{className:"flex items-center justify-between gap-4 px-5 py-4",children:[e.jsxs("span",{className:"min-w-0",children:[e.jsxs("span",{className:"block font-medium text-fg",children:["Signed in",c?` as ${c}`:""]}),e.jsx("span",{className:"mt-0.5 block text-sm text-fg-muted",children:"Signing out ends your account session on this device. Vaults already connected here stay until you remove them."})]}),e.jsx("button",{type:"button",onClick:x,disabled:i,className:"btn btn-secondary btn-touch shrink-0",children:i?"Signing out…":"Sign out"})]})}function b({to:t,href:a,title:n,description:s}){const i=e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"min-w-0",children:[e.jsx("span",{className:"block font-medium text-fg",children:n}),e.jsx("span",{className:"mt-0.5 block text-sm text-fg-muted",children:s})]}),e.jsx("span",{"aria-hidden":"true",className:"shrink-0 text-fg-dim",children:a?"↗":"→"})]}),u="focus-ring flex items-center justify-between gap-4 px-5 py-4 transition-colors hover:bg-bg-soft first:rounded-t-xl last:rounded-b-xl";return a?e.jsx("a",{href:a,className:u,children:i}):e.jsx(j,{to:t??"/",className:u,children:i})}function se(){return e.jsxs("section",{className:"card space-y-3 rounded-xl p-6 shadow-soft",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-serif text-xl text-fg",children:"Import notes"}),e.jsx("p",{className:"mt-1 text-sm text-fg-muted",children:"Bring in an Obsidian vault zip or a folder of markdown files. Parsed in your browser; previewed before any note lands in the vault."})]}),e.jsx(j,{to:"/import",className:"btn btn-primary btn-touch",children:"Open importer"})]})}const ae=[{value:"keep",title:"Keep",help:"Recordings are stored with your notes; included wherever attachments are included."},{value:"until_transcribed",title:"Delete after transcribing",help:"Your words stay; the audio file is removed once the transcript lands."},{value:"never",title:"Never store",help:"Audio is removed even if transcription fails — the transcript is your only copy; failed transcriptions lose the audio."}];function ne({vaultId:t}){const a=k(),n=q(),s=Q(),{markMade:i}=W(t),{transcribeDefault:u,setTranscribeDefault:c}=X(t),h=y(r=>r.push);if((a==null?void 0:a.enabled)===!1)return null;const x=r=>{r===n.value||s.isPending||s.mutate(r,{onSuccess:()=>{i(),h("Voice recording setting saved.","success")},onError:o=>{h(o instanceof Error&&o.message?`Couldn't save: ${o.message}`:"Couldn't save the voice recording setting.","error")}})};return e.jsxs("section",{className:"card space-y-6 rounded-xl p-6 shadow-soft",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-serif text-xl text-fg",children:"Voice"}),e.jsx("p",{className:"mt-1 text-sm text-fg-muted",children:"How voice capture behaves in this vault."})]}),e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-medium text-fg",children:"Transcribe recordings by default"}),e.jsx("p",{className:"mt-1 text-sm text-fg-muted",children:"New voice notes start with transcription on — your words are added to the note. Turn it off for a single recording right where you capture. Applies on this device."})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":u,"aria-label":"Transcribe recordings by default","data-testid":"transcribe-default-toggle",onClick:()=>c(!u),className:`relative h-7 w-12 shrink-0 rounded-full transition-colors ${u?"bg-accent":"bg-border"}`,children:e.jsx("span",{className:`absolute top-0.5 h-6 w-6 rounded-full bg-card shadow-sm transition-transform ${u?"translate-x-5":"translate-x-0.5"}`})})]}),e.jsxs("div",{className:"space-y-4 border-t border-border pt-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-medium text-fg",children:"Keep recordings"}),e.jsx("p",{className:"mt-1 text-sm text-fg-muted",children:"What happens to the audio file after a voice note is transcribed. Applies to this vault, from every device connected to it."})]}),n.isLoading?e.jsx("p",{className:"text-sm text-fg-dim",children:"Loading…"}):n.isError?e.jsx("p",{className:"text-sm text-fg-dim","data-testid":"retention-load-error",children:"Couldn't load this setting — check the vault connection."}):e.jsxs(e.Fragment,{children:[e.jsxs("fieldset",{className:"space-y-2",disabled:!n.supported||s.isPending,children:[e.jsx("legend",{className:"sr-only",children:"Voice recording retention"}),ae.map(r=>{const o=n.value===r.value;return e.jsxs("label",{className:`flex items-start gap-3 rounded-xl border p-3 transition-colors ${o?"border-accent bg-accent/5":"border-border hover:border-accent/40"}`,children:[e.jsx("input",{type:"radio",name:"audio-retention",value:r.value,checked:o,onChange:()=>x(r.value),className:"mt-1 accent-accent"}),e.jsxs("span",{children:[e.jsx("span",{className:"block font-medium text-fg",children:r.title}),e.jsx("span",{className:"mt-0.5 block text-sm text-fg-muted",children:r.help})]})]},r.value)})]}),n.supported?null:e.jsx("p",{className:"text-xs text-fg-dim","data-testid":"retention-unsupported",children:"This vault doesn't support changing this yet — recordings are kept. Update the vault to choose."})]})]})]})}function ie(){const[t,a]=d.useState(()=>Z()),n=s=>{a(s),J(s)};return e.jsx("section",{className:"card space-y-4 rounded-xl p-6 shadow-soft",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-serif text-xl text-fg",children:"Live preview"}),e.jsx("p",{className:"mt-1 text-sm text-fg-muted",children:"Formats your writing as you type — Markdown stays underneath. Turn off for the raw editor with a side-by-side preview."})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":t,"aria-label":"Live preview",onClick:()=>n(!t),className:`relative h-7 w-12 shrink-0 rounded-full transition-colors ${t?"bg-accent":"bg-border"}`,children:e.jsx("span",{className:`absolute top-0.5 h-6 w-6 rounded-full bg-card shadow-sm transition-transform ${t?"translate-x-5":"translate-x-0.5"}`})})]})})}function re(){const[t,a]=d.useState(()=>E()),n=s=>{a(s),G(s),H(s)};return e.jsxs("section",{className:"card space-y-4 rounded-xl p-6 shadow-soft",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-serif text-xl text-fg",children:"Text size"}),e.jsx("p",{className:"mt-1 text-sm text-fg-muted",children:"Affects the editor and rendered notes on this device. Your markdown isn't changed."})]}),e.jsxs("fieldset",{className:"space-y-2",children:[e.jsx("legend",{className:"sr-only",children:"View text size"}),A.map(s=>{const i=t===s;return e.jsxs("label",{className:`flex items-center gap-3 rounded-xl border p-3 transition-colors ${i?"border-accent bg-accent/5":"border-border hover:border-accent/40"}`,children:[e.jsx("input",{type:"radio",name:"text-size",value:s,checked:i,onChange:()=>n(s),className:"accent-accent"}),e.jsx("span",{className:"font-medium text-fg",children:O(s)})]},s)})]})]})}function le({vaultId:t}){const{db:a,mirror:n}=$(),s=y(m=>m.push),[i,u]=d.useState(null),[c,h]=d.useState(null),x=d.useCallback(async()=>{if(!a)return;const[m,l]=await Promise.all([_(a,t),I(a,t)]);u({bytes:m,count:l})},[a,t]);if(d.useEffect(()=>{x()},[x]),!n.enabled)return null;const r=async()=>{if(!c){h("sync");try{await n.syncNow(),await x(),s("Synced offline copy.","success")}catch{s("Couldn't sync the offline copy right now.","error")}finally{h(null)}}},o=async()=>{if(!c&&confirm("Clear this vault's offline copy from this device? Un-synced changes are kept.")){h("clear");try{await n.clearOffline(),await x(),s("Offline copy cleared.","success")}catch{s("Couldn't clear the offline copy.","error")}finally{h(null)}}};return e.jsxs("section",{className:"card space-y-5 rounded-xl p-6 shadow-soft","aria-label":"Offline",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-serif text-xl text-fg",children:"Offline"}),e.jsx("p",{className:"mt-1 text-sm text-fg-muted",children:"A copy of this vault is kept on this device so your notes open without a connection."})]}),e.jsxs("dl",{className:"space-y-2 text-sm",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-4",children:[e.jsx("dt",{className:"text-fg-muted",children:"Status"}),e.jsx("dd",{className:"text-fg",children:ce(n.state)})]}),e.jsxs("div",{className:"flex items-baseline justify-between gap-4",children:[e.jsx("dt",{className:"text-fg-muted",children:"Last synced"}),e.jsx("dd",{className:"text-fg-muted",children:n.lastSyncedAt?D(new Date(n.lastSyncedAt).toISOString()):"never"})]}),e.jsxs("div",{className:"flex items-baseline justify-between gap-4",children:[e.jsx("dt",{className:"text-fg-muted",children:"Saved on this device"}),e.jsx("dd",{className:"text-fg-muted tabular-nums","data-testid":"offline-usage",children:i?`${i.count} note${i.count===1?"":"s"} · ${w(i.bytes)} of ${w(K)}`:"—"})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3 pt-1",children:[e.jsx("button",{type:"button",onClick:r,disabled:c!==null,className:"btn btn-secondary btn-touch",children:c==="sync"?"Syncing…":"Sync now"}),e.jsx("button",{type:"button",onClick:o,disabled:c!==null,className:"text-sm text-danger hover:underline disabled:opacity-60",children:c==="clear"?"Clearing…":"Clear offline copy"})]})]})}function ce(t){switch(t){case"hydrating":return"Saving your vault…";case"offline":return"Offline — showing your saved vault";case"error":return"Sync error";default:return"Saved for offline"}}function w(t){return t<1024*1024?`${(t/1024).toFixed(0)} KB`:t<1024*1024*1024?`${(t/(1024*1024)).toFixed(1)} MB`:`${(t/(1024*1024*1024)).toFixed(2)} GB`}function oe(){const[t,a]=d.useState(!1);return d.useEffect(()=>{a(z())},[]),t?e.jsx("section",{className:"card rounded-xl p-6 text-sm shadow-soft",children:e.jsxs("p",{className:"text-fg-muted",children:[e.jsx("span",{className:"mr-2 inline-block rounded-full bg-positive-soft px-2 py-0.5 text-xs font-medium text-positive",children:"Installed"}),"Parachute is running as an installed app on this device."]})}):null}const S={auto:{title:"Auto",help:"Show the tree only when the vault has enough folders to make it worth the space."},always:{title:"Always",help:"Always show the tree, even on a tag-flat vault."},never:{title:"Never",help:"Hide the tree. The path-prefix text input still works."}};function de({vaultId:t}){const{mode:a,setMode:n}=R(t);return e.jsxs("section",{className:"card space-y-4 rounded-xl p-6 shadow-soft",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-serif text-xl text-fg",children:"Folder tree (Notes sidebar)"}),e.jsx("p",{className:"mt-1 text-sm text-fg-muted",children:"Controls the collapsible folder tree on the notes list page. Auto-detect renders the tree when the vault has at least five top-level folders or twenty notes in folders."})]}),e.jsxs("fieldset",{className:"space-y-2",children:[e.jsx("legend",{className:"sr-only",children:"Path tree visibility"}),L.map(s=>{const i=a===s;return e.jsxs("label",{className:`flex items-start gap-3 rounded-xl border p-3 transition-colors ${i?"border-accent bg-accent/5":"border-border hover:border-accent/40"}`,children:[e.jsx("input",{type:"radio",name:"path-tree-mode",value:s,checked:i,onChange:()=>n(s),className:"mt-1 accent-accent"}),e.jsxs("span",{children:[e.jsx("span",{className:"block font-medium text-fg",children:S[s].title}),e.jsx("span",{className:"mt-0.5 block text-sm text-fg-muted",children:S[s].help})]})]},s)})]})]})}const v={pinned:{title:"Pinned",help:"Tag for notes you want at the top of views."},archived:{title:"Archived",help:"Tag for notes you've moved out of the way."},captureVoice:{title:"Voice capture",help:"Default tag for new voice memos."},captureText:{title:"Text capture",help:"Default tag for quick typed notes."},view:{title:"Saved view",help:"Tag the saved-view notes carry. Used to list them in the notes sidebar."}};function ue({vaultId:t}){const{roles:a,setRoles:n}=M(t),s=P(),i=y(l=>l.push),u=d.useId(),[c,h]=d.useState(a);d.useEffect(()=>h(a),[a]);const x=d.useMemo(()=>{const l=(s.data??[]).map(f=>f.name);return[...new Set(l)].sort((f,p)=>f.localeCompare(p))},[s.data]),r=N.some(l=>c[l].trim()!==a[l]),o=()=>{n(c),i("Tag roles saved.","success")},m=()=>{n(null),h(g),i("Tag roles reset to defaults.","success")};return e.jsxs("section",{className:"card space-y-5 rounded-xl p-6 shadow-soft",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-serif text-xl text-fg",children:"Tag roles"}),e.jsx("p",{className:"mt-1 text-sm text-fg-muted",children:"Point each role at whatever tag your vault already uses. Changes apply to future notes only — existing notes keep their current tags."})]}),e.jsx("datalist",{id:u,children:x.map(l=>e.jsx("option",{value:l},l))}),e.jsx("div",{className:"space-y-4",children:N.map(l=>e.jsxs("label",{className:"block text-sm",children:[e.jsxs("span",{className:"mb-1.5 flex items-baseline justify-between gap-2",children:[e.jsx("span",{className:"font-medium text-fg",children:v[l].title}),e.jsxs("span",{className:"text-xs text-fg-dim",children:["default: #",g[l]]})]}),e.jsx("input",{type:"text",value:c[l],onChange:f=>h(p=>({...p,[l]:f.target.value})),list:u,placeholder:g[l],"aria-label":`${v[l].title} tag role`,spellCheck:!1,autoCapitalize:"none",autoCorrect:"off",className:"input input-on-bg"}),e.jsx("span",{className:"mt-1.5 block text-xs text-fg-dim",children:v[l].help})]},l))}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4 pt-1",children:[e.jsx("button",{type:"button",onClick:o,disabled:!r,className:"btn btn-primary btn-lg",children:"Save"}),e.jsx("button",{type:"button",onClick:m,className:"btn btn-ghost",children:"Reset to defaults"})]})]})}export{pe as Settings};
@@ -1 +0,0 @@
1
- import{j as n,bG as Ke,r as x,bH as V,bI as C,L as O,a_ as Ze,x as et,av as tt,aj as we,a6 as ke,Q as B,bs as I,R as nt,w as R,X as st,U as fe,$ as J,bJ as Se,bK as at,bL as rt,bM as it,bN as lt,bO as ot,bP as Ce,a as De,a1 as ct,y as dt,bQ as ut,bR as mt,bS as pe,ae as ft,bT as pt,N as xt,E as Te,bU as ht,bV as $e,bW as bt,v as k,bX as gt,bY as yt,bZ as vt,at as jt,b_ as Nt,b$ as wt,a3 as xe,a4 as he,c0 as kt,bF as St}from"./index-Dwo2xe8_.js";import{T as Ct}from"./TagSchemaEditor-DIHppYmj.js";const Dt="—",Ee=/^https?:\/\//i;function Me(e){return typeof e=="string"&&Ee.test(e)}const be=24;function Tt(e){try{const t=new URL(e);let s=`${t.pathname}${t.search}${t.hash}`;return s==="/"&&(s=""),s.length>be&&(s=`${s.slice(0,be-1)}…`),{host:t.host,rest:s}}catch{return{host:e.replace(Ee,""),rest:""}}}function $t({value:e,schema:t}){if(e==null||e==="")return Dt;if(typeof e=="boolean")return e?n.jsx("span",{className:"text-grass",children:"✓"}):n.jsx("span",{className:"text-fg-dim",children:"✕"});if((t==null?void 0:t.type)==="date"&&typeof e=="string")return Ke(e);if(Me(e)){const{host:s,rest:a}=Tt(e);return n.jsxs("span",{className:"min-w-0 truncate text-accent underline underline-offset-2",title:e,children:[s,a?n.jsx("span",{className:"opacity-70",children:a}):null]})}return typeof e=="number"?n.jsx("span",{className:"tabular-nums",children:String(e)}):String(e)}function Pe(e,t){if(t&&t.length>0||e!=null&&e.enum&&e.enum.length>0)return"enum";switch(e==null?void 0:e.type){case"date":return"date";case"boolean":return"boolean";case"number":return"number";default:return"string"}}const Et="focus-ring inline-flex max-w-[9rem] items-center rounded px-1 py-0.5 text-[0.6875rem] hover:text-accent disabled:opacity-50";function Mt(e){if(typeof e!="string")return"";const t=e.match(/^\d{4}-\d{2}-\d{2}/);return t?t[0]:""}function K({field:e,schema:t,value:s,onCommit:a,disabled:r=!1,options:i,includeClear:l=!1,trigger:o}){const d=Pe(t,i),[c,p]=x.useState(!1),f=s==null||s==="",u=(o==null?void 0:o.label)??n.jsx($t,{value:s,schema:t}),b=(o==null?void 0:o.ariaLabel)??`Edit ${e}`,j=(o==null?void 0:o.className)??`${Et} ${f&&!(o!=null&&o.label)?"text-fg-dim":"text-fg"}`;if(d==="boolean"){const v=(o==null?void 0:o.ariaLabel)??`Edit ${e} (${s===!0?"checked":"unchecked"})`;return n.jsx("button",{type:"button",disabled:r,"aria-label":v,onClick:()=>a(s!==!0),className:j,children:u})}const g=d==="enum"?i??((t==null?void 0:t.enum)??[]).map(v=>({value:v,label:v})):[],m=l&&!f,h=v=>{p(!1),a(v)};return n.jsxs("div",{className:"relative",children:[n.jsx("button",{type:"button",disabled:r,"aria-haspopup":d==="enum"?"menu":"dialog","aria-expanded":c,"aria-label":b,title:o!=null&&o.label?void 0:`Edit ${e}`,onClick:()=>p(v=>!v),className:j,children:u}),c?n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button","aria-hidden":"true",tabIndex:-1,className:"fixed inset-0 z-10 cursor-default",onClick:()=>p(!1)}),d==="enum"?n.jsxs("div",{role:"menu","aria-label":b,className:"card absolute right-0 z-20 mt-1 flex min-w-[10rem] flex-col gap-0.5 p-1 shadow-lg",children:[g.map(v=>n.jsxs("button",{type:"button",role:"menuitem",onClick:()=>h(v.value),className:`focus-ring flex items-center gap-1.5 rounded px-2 py-1.5 text-left text-sm hover:bg-bg-soft ${v.muted?"text-fg-dim":"text-fg"}`,children:[v.value===null||v.value===void 0||v.value===""?null:n.jsx("span",{"aria-hidden":"true",className:`tint-dot tint-${V(String(v.value))}`}),v.label]},v.value===null?"__clear__":String(v.value))),m?n.jsx("button",{type:"button",role:"menuitem",onClick:()=>h(null),className:"focus-ring rounded px-2 py-1.5 text-left text-sm text-fg-dim hover:bg-bg-soft",children:"Clear"}):null]}):n.jsx(Pt,{kind:d,value:s,ariaLabel:b,onCommit:h,onCancel:()=>p(!1)})]}):null]})}function Pt({kind:e,value:t,ariaLabel:s,onCommit:a,onCancel:r}){const i=e==="date"?Mt(t):t==null?"":String(t),[l,o]=x.useState(i),d=()=>{const c=l.trim();if(c==="")return a(null);if(e==="number"){const p=Number(c);return Number.isFinite(p)?a(p):r()}a(c)};return n.jsxs("div",{role:"dialog","aria-label":s,className:"card absolute right-0 z-20 mt-1 flex min-w-[10rem] items-center gap-1 p-1 shadow-lg",children:[n.jsx("input",{autoFocus:!0,type:e==="date"?"date":e==="number"?"number":"text",value:l,"aria-label":s,onChange:c=>o(c.target.value),onKeyDown:c=>{c.key==="Enter"?(c.preventDefault(),d()):c.key==="Escape"&&(c.preventDefault(),r())},className:"w-full rounded border border-border bg-bg/40 px-1.5 py-1 text-xs text-fg focus:border-accent focus:outline-none"}),n.jsx("button",{type:"button",onClick:d,"aria-label":"Save",className:"focus-ring rounded px-1.5 py-1 text-xs text-accent hover:bg-bg-soft",children:"✓"}),Me(t)?n.jsx("a",{href:t,target:"_blank",rel:"noopener noreferrer","aria-label":"Open link",title:"Open link",className:"focus-ring rounded px-1.5 py-1 text-xs text-accent hover:bg-bg-soft",children:"↗"}):null]})}function _t(e){for(const t of e.attachments??[]){const s=typeof t.url=="string"?t.url:null;if(typeof t.mimeType=="string"&&t.mimeType.startsWith("image/")&&s&&/^https?:\/\//i.test(s))return s}return null}function q({note:e,pinnedTag:t,archivedTag:s,variant:a="compact",overlay:r,footer:i,drag:l}){const o=C(e),d=e.updatedAt??e.createdAt,c=(e.tags??[]).includes(t),p=(e.tags??[]).includes(s),f=a==="gallery"?_t(e):null,[u,b]=x.useState(!1),j=f&&!u,g=(l==null?void 0:l.canDrag)??!1,m=n.jsxs(O,{to:`/n/${encodeURIComponent(e.id)}`,draggable:g?!1:void 0,"data-note-id":e.id,className:`focus-ring card group flex flex-col overflow-hidden rounded-xl shadow-sm transition hover:border-accent hover:shadow-md ${p?"opacity-60 italic":""}`,children:[a==="gallery"?n.jsx("div",{className:"aspect-[3/2] w-full overflow-hidden bg-bg-soft",children:j?n.jsx("img",{src:f,alt:"",loading:"lazy",onError:()=>b(!0),className:"h-full w-full object-cover"}):n.jsx("div",{"aria-hidden":"true",className:"flex h-full w-full items-end p-3 text-fg-dim",children:n.jsx("span",{className:"line-clamp-3 text-sm text-fg-muted",children:e.preview??""})})}):null,n.jsxs("div",{className:"flex flex-1 flex-col gap-1 p-3",children:[n.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[n.jsxs("span",{className:"flex min-w-0 items-baseline gap-1.5",children:[c?n.jsx("span",{className:"shrink-0 text-accent","aria-label":"pinned",title:"pinned",children:"★"}):null,n.jsx("span",{className:o.kind==="timestamp"?"min-w-0 truncate text-sm title-timestamp":"min-w-0 truncate text-sm font-medium text-fg",children:o.text})]}),n.jsx(Ze,{note:e})]}),e.preview&&!(a==="gallery"&&!j)?n.jsx("p",{className:"line-clamp-2 text-xs text-fg-muted",children:e.preview}):null,n.jsx("span",{className:"mt-auto pt-1 text-[0.6875rem] tabular-nums text-fg-dim",children:et(d)})]})]});return!r&&!i&&!g?m:n.jsxs("div",{className:g?"relative flex flex-col cursor-grab":"relative flex flex-col",...(l==null?void 0:l.sourceProps)??{},children:[m,r?n.jsx("div",{className:"absolute right-2 top-2",children:r}):null,i?n.jsx("div",{className:"mt-1",children:i}):null]})}function Lt(e,t,s){const a={...e.metadata??{}};return s===null?delete a[t]:a[t]=s,{...e,metadata:a}}function At(e,t,s,a){return e&&e.map(r=>r.id===t?Lt(r,s,a):r)}function Ft(e,t){const s=tt(),a=we(e);return{move:x.useCallback(async(i,l,o)=>{const d=s.getQueryData(t);s.setQueryData(t,c=>At(c,e,i,l));try{const c=await a.mutateAsync({metadata:{[i]:l},...o?{if_updated_at:o}:{force:!0}}),p=c==null?void 0:c.updatedAt;p&&s.setQueryData(t,f=>f==null?void 0:f.map(u=>u.id===e?{...u,updatedAt:p}:u))}catch(c){throw s.setQueryData(t,d),c}},[s,t,e,a]),isPending:a.isPending}}const Bt=1800,Y="field-write-flash",Rt=700;function Vt(e){return e===null?null:typeof e=="boolean"?e?"Yes":"No":String(e)}function Ot(e){if(typeof document>"u")return;const t=typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&");for(const s of document.querySelectorAll(`[data-note-id="${t}"]`))s.classList.remove(Y),s.offsetWidth,s.classList.add(Y),window.setTimeout(()=>s.classList.remove(Y),Rt)}function z(e,t){const s=ke(c=>c.push),{move:a,isPending:r}=Ft(e.id,t),i=e.id,l=e.updatedAt,o=C(e).text;return{write:x.useCallback(async(c,p,f)=>{try{await a(c,p,l)}catch(b){const j=(f==null?void 0:f.errorPrefix)??`Couldn't update ${c} on "${o}"`;s(`${j}: ${b instanceof Error?b.message:"unknown error"}`,"error");return}const u=(f==null?void 0:f.valueLabel)??Vt(p);s(u===null?`✓ ${c} cleared`:`✓ ${c} → ${u}`,"success",{durationMs:Bt}),Ot(i)},[a,l,o,i,s]),isPending:r}}function _e(e){if(e==null)return null;const t=typeof e;return t==="string"||t==="number"||t==="boolean"?e:null}function M({note:e,fields:t,viewResultsKey:s,omit:a}){const{write:r,isPending:i}=z(e,s),l=a&&a.length>0?t.filter(o=>!a.includes(o.name)):t;return l.length===0?null:n.jsx("div",{className:"flex flex-wrap items-center gap-1.5 px-3 pb-2.5 pt-0.5",children:l.map(o=>{var p;const d=_e((p=e.metadata)==null?void 0:p[o.name]),c=Pe(o.schema)==="enum"&&d!==null&&d!==""?V(String(d)):null;return n.jsxs("span",{className:`inline-flex items-center gap-1 rounded-full border py-0.5 pl-2 pr-1 text-[0.6875rem] leading-none ${c?`chip-tinted tint-${c}`:"border-border bg-bg-soft/60"}`,children:[c?n.jsx("span",{"aria-hidden":"true",className:"tint-dot"}):null,n.jsx("span",{className:"text-fg-dim",children:o.name}),n.jsx(K,{field:o.name,schema:o.schema,value:d,disabled:i,includeClear:!0,onCommit:f=>void r(o.name,f)})]},o.name)})})}const Z="application/x-parachute-note";function Le(){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(pointer: fine)").matches}function It(e,t){e.setData(Z,t),e.effectAllowed="move"}function F(e){return e?Array.from(e.types??[]).includes(Z):!1}function qt(e){if(!e)return null;const t=e.getData(Z);return t===""?null:t}function Ae(e){const[t]=x.useState(Le),s=x.useRef(!1),a=x.useCallback(l=>{l.dataTransfer&&(It(l.dataTransfer,e),s.current=!0)},[e]),r=x.useCallback(()=>{window.setTimeout(()=>{s.current=!1},0)},[]),i=x.useCallback(l=>{s.current&&(l.preventDefault(),l.stopPropagation(),s.current=!1)},[]);return t?{canDrag:!0,sourceProps:{draggable:!0,onDragStart:a,onDragEnd:r,onClickCapture:i}}:{canDrag:!1,sourceProps:{}}}function Fe(e){const[t,s]=x.useState(!1),a=x.useRef(0),r=x.useCallback(d=>{F(d.dataTransfer)&&(d.preventDefault(),a.current+=1,s(!0))},[]),i=x.useCallback(d=>{F(d.dataTransfer)&&(d.preventDefault(),d.dataTransfer&&(d.dataTransfer.dropEffect="move"))},[]),l=x.useCallback(d=>{F(d.dataTransfer)&&(a.current=Math.max(0,a.current-1),a.current===0&&s(!1))},[]),o=x.useCallback(d=>{if(!F(d.dataTransfer))return;d.preventDefault(),a.current=0,s(!1);const c=qt(d.dataTransfer);c&&e(c)},[e]);return{isOver:t,targetProps:{onDragEnter:r,onDragOver:i,onDragLeave:l,onDrop:o}}}function Be(){const e=x.useRef(new Map),t=x.useCallback((a,r)=>(e.current.set(a,r),()=>{e.current.get(a)===r&&e.current.delete(a)}),[]),s=x.useCallback((a,r)=>{var i;(i=e.current.get(a))==null||i(r)},[]);return{register:t,dispatch:s}}function zt(e,t){var a;const s=(a=e.metadata)==null?void 0:a[t];if(s==null)return null;if(typeof s=="string"){const r=s.trim();return r===""?null:r}return typeof s=="number"||typeof s=="boolean"?String(s):null}const Gt={status:["active","incubating","dormant","paused","archived","done","shipped","dropped"],priority:["high","medium","low"]};function Ut(e,t){var a;const s=(a=t==null?void 0:t[e])==null?void 0:a.enum;return s&&s.length>0?s:Gt[e]??[]}function Yt(e,t,s=[]){var p;const a=new Map,r=new Map,i=[];for(const f of e){const u=zt(f,t);if(u===null){i.push(f);continue}const b=a.get(u);b?b.push(f):(a.set(u,[f]),r.set(u,(p=f.metadata)==null?void 0:p[t]))}const l=s.filter(f=>a.has(f)),o=new Set(l),d=[...a.keys()].filter(f=>!o.has(f)).sort((f,u)=>f.localeCompare(u)),c=[...l,...d].map(f=>({key:f,label:f,notes:a.get(f)??[],uncategorized:!1,value:r.get(f)}));return i.length>0&&c.push({key:"",label:`No ${t}`,notes:i,uncategorized:!0,value:null}),c}function Qt(e){if(typeof e!="string")return null;const t=e.trim();if(!t)return null;const s=t.match(/^(\d{4})-(\d{2})-(\d{2})/);if(s){const r=new Date(Number(s[1]),Number(s[2])-1,Number(s[3]));return Number.isNaN(r.getTime())?null:r}const a=new Date(t);return Number.isNaN(a.getTime())?null:a}function Ht(e,t){var i;const s=new Map,a=[],r=new Map;for(const l of e){const o=Qt((i=l.metadata)==null?void 0:i[t]);if(!o){a.push(l);continue}r.set(l.id,o);const d=B(o),c=s.get(d);c?c.push(l):s.set(d,[l])}return{byDay:s,undated:a,dates:r}}function Wt(e){const t=new Map,s=[],a=new Map;for(const r of e){const i=r.createdAt?new Date(r.createdAt):null;if(!i||Number.isNaN(i.getTime())){s.push(r);continue}a.set(r.id,i);const l=B(i),o=t.get(l);o?o.push(r):t.set(l,[r])}return{byDay:t,undated:s,dates:a}}function ge(e,t=new Date){let s=null;for(const r of e)(!s||r.getTime()>s.getTime())&&(s=r);const a=s??t;return{year:a.getFullYear(),month:a.getMonth()+1}}function Jt({notes:e,laneBy:t,subjectTag:s,roles:a,viewResultsKey:r,fields:i=[]}){const l=I(s??null),o=x.useMemo(()=>{var g,m,h,v;const c=Yt(e,t,Ut(t,(g=l.data)==null?void 0:g.fields)),p=((v=(h=(m=l.data)==null?void 0:m.fields)==null?void 0:h[t])==null?void 0:v.enum)??[];if(p.length===0)return c;const f=new Map(c.filter(y=>!y.uncategorized).map(y=>[y.key,y])),u=p.map(y=>f.get(y)??{key:y,label:y,notes:[],uncategorized:!1,value:y}),b=new Set(p),j=c.filter(y=>y.uncategorized||!b.has(y.key));return[...u,...j]},[e,t,l.data]),d=Be();return n.jsx("div",{className:"overflow-x-auto pb-2",children:n.jsx("div",{className:"flex items-start gap-4",children:o.map(c=>n.jsx(Xt,{lane:c,dropRegistry:d,children:c.notes.map(p=>n.jsx(Zt,{note:p,laneBy:t,lanes:o,currentLane:c,roles:a,viewResultsKey:r,fields:i,dropRegistry:d},p.id))},c.uncategorized?"__uncategorized__":c.key))})})}function Xt({lane:e,dropRegistry:t,children:s}){const a=x.useCallback(l=>t.dispatch(l,e),[t,e]),{isOver:r,targetProps:i}=Fe(a);return n.jsxs("section",{"aria-label":e.label,className:`flex w-72 shrink-0 flex-col gap-2 rounded-2xl border border-border-light bg-bg-soft p-2 ${r?"outline-2 outline-offset-2 outline-accent/50":""}`,...i,children:[n.jsxs("header",{className:"flex items-baseline justify-between gap-2 px-1.5 pt-1",children:[n.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[e.uncategorized?null:n.jsx("span",{"aria-hidden":"true",className:`tint-dot tint-${V(e.key)}`}),n.jsx("span",{className:`min-w-0 truncate text-sm font-semibold ${e.uncategorized?"text-fg-dim":"text-fg"}`,children:e.label})]}),n.jsx("span",{className:"shrink-0 rounded-full bg-bg px-2 text-xs tabular-nums text-fg-dim",children:e.notes.length})]}),n.jsx("div",{className:"flex flex-col gap-2",children:e.notes.length===0?n.jsx("p",{className:"py-4 text-center text-xs italic text-fg-dim",children:Le()?"Drop here":"No notes"}):s})]})}function ye(e,t){return e.uncategorized||t.uncategorized?e.uncategorized&&t.uncategorized:e.key===t.key}const Kt="focus-ring rounded-full border border-border bg-bg-soft/90 px-2 py-0.5 text-[0.6875rem] font-medium text-fg-dim backdrop-blur transition-colors hover:text-accent disabled:opacity-50";function Zt({note:e,laneBy:t,lanes:s,currentLane:a,roles:r,viewResultsKey:i,fields:l,dropRegistry:o}){const{write:d,isPending:c}=z(e,i),p=x.useMemo(()=>s.filter(m=>!ye(m,a)),[s,a]),f=x.useMemo(()=>p.map(m=>({value:m.value,label:m.label,muted:m.uncategorized})),[p]),u=x.useCallback(async(m,h)=>{await d(t,m,{valueLabel:h,errorPrefix:`Couldn't move "${C(e).text}"`})},[d,t,e]),b=async m=>{const h=f.find(v=>v.value===m);await u(m,h==null?void 0:h.label)},j=Ae(e.id),g=x.useCallback(m=>{c||ye(m,a)||u(m.value,m.label)},[c,a,u]);return x.useEffect(()=>o.register(e.id,g),[o,e.id,g]),n.jsx(q,{note:e,pinnedTag:r.pinned,archivedTag:r.archived,drag:j,overlay:p.length>0?n.jsx(K,{field:t,value:a.value,options:f,disabled:c,onCommit:m=>void b(m),trigger:{label:"Move",ariaLabel:`Move to another ${t}`,className:Kt}}):null,footer:l.length>0?n.jsx(M,{note:e,fields:l,viewResultsKey:i,omit:p.length>0?[t]:void 0}):null})}const en=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Q=2;function tn({notes:e,dateField:t,roles:s,viewResultsKey:a,fields:r=[]}){const i=x.useMemo(()=>t===null?Wt(e):Ht(e,t),[e,t]),[l,o]=x.useState(()=>ge(i.dates.values())),[d,c]=x.useState(null),p=x.useMemo(()=>nt(l.year,l.month),[l]),f=B(),u=Be();if(i.byDay.size===0)return n.jsxs("div",{className:"space-y-4",children:[n.jsx(R,{title:"Nothing on the calendar yet",description:t===null?void 0:`Give a note a ${t} date below and it lands on the grid.`}),t===null?null:n.jsx(ve,{notes:i.undated,dateField:t,roles:s,viewResultsKey:a,fields:r})]});const b=g=>{c(null),o(g)},j=d?i.byDay.get(d)??[]:[];return n.jsxs("div",{className:"space-y-3",children:[n.jsxs("header",{className:"flex flex-wrap items-baseline justify-between gap-3",children:[n.jsx("h2",{className:"font-serif text-2xl tracking-tight text-fg",children:st(l.year,l.month)}),n.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[n.jsx("button",{type:"button",onClick:()=>b(fe(l.year,l.month,-1)),className:"chip","aria-label":"Previous month",children:"← Prev"}),n.jsx("button",{type:"button",onClick:()=>b(ge(i.dates.values())),className:"chip",children:"Latest"}),n.jsx("button",{type:"button",onClick:()=>b(fe(l.year,l.month,1)),className:"chip","aria-label":"Next month",children:"Next →"})]})]}),n.jsxs("div",{className:"overflow-hidden rounded-md border border-border bg-card",children:[n.jsx("div",{className:"grid grid-cols-7 border-b border-border bg-bg-soft text-2xs uppercase tracking-wider text-fg-dim",children:en.map(g=>n.jsx("div",{className:"px-2 py-2 text-center",children:g},g))}),n.jsx("div",{className:"grid grid-cols-7",children:p.map(g=>{const m=B(g),h=g.getMonth()+1===l.month,v=i.byDay.get(m)??[],y=m===f,w=m===d;return n.jsx(nn,{dayKey:m,dayNumber:g.getDate(),inMonth:h,isToday:y,isSelected:w,notes:v,onSelect:()=>c(m),dateField:t,viewResultsKey:a,dropRegistry:u},m)})})]}),d&&j.length>0?n.jsxs("section",{"aria-label":`Notes on ${J(d)}`,className:"space-y-2",children:[n.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[n.jsx("p",{className:"eyebrow",children:J(d)}),n.jsx("button",{type:"button",onClick:()=>c(null),className:"text-xs text-fg-dim hover:text-accent focus-ring rounded",children:"Clear"})]}),n.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(min(100%,16rem),1fr))] gap-2",children:j.map(g=>n.jsx(q,{note:g,pinnedTag:s.pinned,archivedTag:s.archived,footer:r.length>0?n.jsx(M,{note:g,fields:r,viewResultsKey:a}):null},g.id))})]}):null,t===null?n.jsx("p",{className:"text-xs text-fg-dim",children:"Showing by created date — set a date field to schedule."}):n.jsx(ve,{notes:i.undated,dateField:t,roles:s,viewResultsKey:a,fields:r})]})}function nn({dayKey:e,dayNumber:t,inMonth:s,isToday:a,isSelected:r,notes:i,onSelect:l,dateField:o,viewResultsKey:d,dropRegistry:c}){const p=i.length>0,f=o!==null,u=x.useCallback(y=>c.dispatch(y,e),[c,e]),{isOver:b,targetProps:j}=Fe(u),g=f&&s?j:{},m=n.jsx("span",{className:`mb-1 inline-flex h-6 w-6 items-center justify-center rounded-full font-serif tabular-nums ${a?"bg-accent text-(--color-on-accent)":"text-fg"}`,children:t}),h=n.jsxs("span",{className:"flex flex-col gap-0.5",children:[i.slice(0,Q).map(y=>o===null?n.jsx(sn,{note:y},y.id):n.jsx(an,{note:y,dayKey:e,dateField:o,viewResultsKey:d,dropRegistry:c},y.id)),i.length>Q?n.jsxs("span",{className:"text-[10px] text-fg-dim",children:["+",i.length-Q," more"]}):null]}),v=`flex min-h-24 flex-col border-b border-r border-border p-1.5 text-left text-xs ${s?"":"opacity-40"} ${r?"bg-accent/5":""} ${f&&s&&b?"bg-accent/5 outline-2 -outline-offset-2 outline-accent/60":""}`;return p?n.jsxs("button",{type:"button",onClick:l,"aria-label":`${J(e)} — ${i.length} notes`,className:`${v} hover:bg-bg/60 focus:bg-bg/60 focus:outline-none`,"data-day":e,...g,children:[m,h]}):n.jsxs("div",{className:v,"data-day":e,...g,children:[m,n.jsx("span",{className:"sr-only",children:"no notes"})]})}const X="truncate rounded-md border border-border bg-card px-1.5 py-0.5 text-[10px] leading-tight text-fg shadow-sm";function sn({note:e}){return n.jsx("span",{"data-note-id":e.id,className:X,children:C(e).text})}function an({note:e,dayKey:t,dateField:s,viewResultsKey:a,dropRegistry:r}){const{write:i,isPending:l}=z(e,a),o=Ae(e.id),d=x.useCallback(c=>{l||c===t||i(s,c,{errorPrefix:`Couldn't move "${C(e).text}"`})},[l,t,s,i,e]);return x.useEffect(()=>r.register(e.id,d),[r,e.id,d]),n.jsx("span",{"data-note-id":e.id,className:o.canDrag?`${X} cursor-grab`:X,...o.sourceProps,children:C(e).text})}function ve({notes:e,dateField:t,roles:s,viewResultsKey:a,fields:r}){if(e.length===0)return null;const i=r.find(o=>o.name===t)??{name:t,schema:{type:"date"}},l=/date/i.test(t)?t:`${t} date`;return n.jsxs("section",{"aria-label":`Not on the calendar — no ${l}`,className:"space-y-2",children:[n.jsx("p",{className:"eyebrow",children:"Not on the calendar yet"}),n.jsxs("p",{className:"text-xs text-fg-dim",children:[e.length," ",e.length===1?"note has":"notes have"," no ",l," — set one to place ",e.length===1?"it":"them","."]}),n.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(min(100%,16rem),1fr))] gap-2",children:e.map(o=>n.jsx(q,{note:o,pinnedTag:s.pinned,archivedTag:s.archived,footer:n.jsx(M,{note:o,fields:[i],viewResultsKey:a})},o.id))})]})}const rn="border-[color-mix(in_srgb,var(--color-accent)_40%,var(--color-border))]";function Re({label:e,value:t,icon:s,ariaLabel:a,haspopup:r="menu",open:i,dirty:l=!1,onClick:o}){return n.jsxs("button",{type:"button","aria-haspopup":r,"aria-expanded":i,"aria-label":a,onClick:o,className:`focus-ring inline-flex min-h-8 items-center gap-1.5 rounded-full border bg-card px-3 py-1 transition-colors duration-(--dur-quick) ease-out hover:border-accent/50 ${l?rn:"border-border"}`,children:[s?n.jsx("span",{"aria-hidden":"true",className:"flex-none text-fg-muted",children:s}):null,e?n.jsx("span",{className:"text-2xs uppercase tracking-[0.08em] text-fg-dim",children:e}):null,n.jsx("span",{className:"text-xs font-medium text-fg",children:t}),n.jsx("span",{"aria-hidden":"true",className:"text-2xs text-fg-dim",children:"▾"})]})}function ee({label:e,value:t,icon:s,ariaLabel:a,menuLabel:r,options:i,current:l,onSelect:o,note:d,actions:c,busy:p=!1,dirty:f=!1}){const[u,b]=x.useState(!1);x.useEffect(()=>{if(!u)return;const m=h=>{h.key==="Escape"&&b(!1)};return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[u]);const j=m=>{b(!1),o(m)},g=m=>{b(!1),m.onSelect()};return n.jsxs("div",{className:"relative",children:[n.jsx(Re,{label:e,value:t,icon:s,ariaLabel:a,open:u,dirty:f,onClick:()=>b(m=>!m)}),u?n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button","aria-hidden":"true",tabIndex:-1,onClick:()=>b(!1),className:"enter-fade fixed inset-0 z-30 cursor-default bg-black/40 sm:bg-transparent"}),n.jsxs("div",{role:"menu","aria-label":r,className:"card enter-rise fixed inset-x-0 bottom-0 z-40 max-h-[70dvh] overflow-y-auto rounded-b-none p-1.5 pb-[calc(0.375rem+env(safe-area-inset-bottom))] shadow-lift sm:absolute sm:top-full sm:right-auto sm:bottom-auto sm:mt-1 sm:max-h-80 sm:w-56 sm:rounded-b-[var(--radius-2xl)] sm:pb-1.5",children:[n.jsx("p",{"aria-hidden":"true",className:"eyebrow px-2 pt-1.5 pb-1",children:r}),i.map(m=>{const h=m.value===l;return n.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":h,onClick:()=>j(m.value),className:`focus-ring flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left text-sm hover:bg-bg-soft ${h?"text-fg":"text-fg-muted"}`,children:[m.glyph?n.jsx("span",{"aria-hidden":"true",className:"flex-none",children:m.glyph}):null,n.jsx("span",{className:"min-w-0 flex-1 truncate",children:m.label??m.value}),h?n.jsx("span",{"aria-hidden":"true",className:"text-accent",children:"✓"}):null]},m.value)}),d?n.jsx("p",{className:"px-2 pt-1.5 pb-1 text-xs text-fg-dim",children:d}):null,c&&c.length>0?n.jsx("div",{className:i.length>0?"mt-1 border-t border-border-light pt-1":void 0,children:c.map(m=>n.jsxs("button",{type:"button",role:"menuitem",disabled:p,onClick:()=>g(m),className:"focus-ring flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left text-sm text-fg-muted hover:bg-bg-soft disabled:opacity-50",children:[m.glyph?n.jsx("span",{"aria-hidden":"true",className:"flex-none",children:m.glyph}):null,n.jsxs("span",{className:"min-w-0 flex-1",children:[n.jsx("span",{className:"block truncate text-fg",children:m.label}),m.hint?n.jsx("span",{className:"block truncate text-2xs text-fg-dim",children:m.hint}):null]})]},m.key))}):null]})]}):null]})}function ln({fields:e,schemaFieldNames:t,onChange:s,dirty:a=!1}){const[r,i]=x.useState(!1);x.useEffect(()=>{if(!r)return;const u=b=>{b.key==="Escape"&&i(!1)};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[r]);const l=e.map(u=>u.name),o=t.filter(u=>!l.includes(u));if(l.length===0&&o.length===0)return null;const d=l.length===1,c=u=>{d||s(l.filter(b=>b!==u))},p=u=>s([...l,u]),f=(u,b)=>{const j=[...l],[g]=j.splice(u,1);j.splice(u+b,0,g),s(j)};return n.jsxs("div",{className:"relative",children:[n.jsx(Re,{label:"Fields",value:String(l.length),haspopup:"dialog",open:r,dirty:a,onClick:()=>i(u=>!u)}),r?n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button","aria-hidden":"true",tabIndex:-1,onClick:()=>i(!1),className:"enter-fade fixed inset-0 z-30 cursor-default bg-black/40 sm:bg-transparent"}),n.jsxs("div",{role:"dialog","aria-label":"Fields",className:"card enter-rise fixed inset-x-0 bottom-0 z-40 max-h-[70dvh] overflow-y-auto rounded-b-none p-1.5 pb-[calc(0.375rem+env(safe-area-inset-bottom))] shadow-lift sm:absolute sm:top-full sm:right-auto sm:bottom-auto sm:mt-1 sm:max-h-80 sm:w-60 sm:rounded-b-[var(--radius-2xl)] sm:pb-1.5",children:[n.jsx("p",{className:"eyebrow px-2 pt-1.5 pb-1",children:"Fields"}),n.jsxs("ul",{className:"flex flex-col gap-0.5",children:[l.map((u,b)=>n.jsxs("li",{className:"flex items-center gap-1 rounded-lg px-2 py-1 hover:bg-bg-soft",children:[n.jsxs("label",{className:"flex min-w-0 flex-1 cursor-pointer items-center gap-2 text-sm text-fg",children:[n.jsx("input",{type:"checkbox",checked:!0,disabled:d,onChange:()=>c(u)}),n.jsx("span",{className:"truncate",children:u})]}),n.jsx("button",{type:"button","aria-label":`Move ${u} up`,disabled:b===0,onClick:()=>f(b,-1),className:"focus-ring rounded px-1.5 py-0.5 text-sm text-fg-muted hover:bg-bg-soft hover:text-fg disabled:opacity-30",children:"↑"}),n.jsx("button",{type:"button","aria-label":`Move ${u} down`,disabled:b===l.length-1,onClick:()=>f(b,1),className:"focus-ring rounded px-1.5 py-0.5 text-sm text-fg-muted hover:bg-bg-soft hover:text-fg disabled:opacity-30",children:"↓"})]},u)),o.map(u=>n.jsx("li",{className:"flex items-center gap-1 rounded-lg px-2 py-1 hover:bg-bg-soft",children:n.jsxs("label",{className:"flex min-w-0 flex-1 cursor-pointer items-center gap-2 text-sm text-fg-muted",children:[n.jsx("input",{type:"checkbox",checked:!1,onChange:()=>p(u)}),n.jsx("span",{className:"truncate",children:u})]})},u))]}),d?n.jsx("p",{className:"px-2 pt-1.5 pb-1 text-xs text-fg-dim",children:"Views show at least one field."}):null]})]}):null]})}function on({notes:e,roles:t,viewResultsKey:s,fields:a=[]}){return n.jsx("div",{"aria-label":"Gallery",className:"grid grid-cols-[repeat(auto-fill,minmax(min(100%,13rem),1fr))] gap-4",children:e.map(r=>n.jsx(q,{note:r,variant:"gallery",pinnedTag:t.pinned,archivedTag:t.archived,footer:a.length>0?n.jsx(M,{note:r,fields:a,viewResultsKey:s}):null},r.id))})}const H={list:"List",board:"Board",calendar:"Calendar",gallery:"Gallery",table:"Table"};function je({kind:e}){switch(e){case"board":return n.jsx(ot,{width:14,height:14});case"calendar":return n.jsx(lt,{width:14,height:14});case"gallery":return n.jsx(it,{width:14,height:14});case"table":return n.jsx(rt,{width:14,height:14});default:return n.jsx(at,{width:14,height:14})}}function cn({kind:e,onSwitch:t,dirty:s=!1}){return n.jsx(ee,{ariaLabel:`Lens: ${H[e]}`,menuLabel:"Lens",icon:n.jsx(je,{kind:e}),value:H[e],options:Se.map(a=>({value:a,label:H[a],glyph:n.jsx(je,{kind:a})})),current:e,onSelect:t,dirty:s})}function Ve(e,t,s){const a=e.filter(s).map(r=>r.name);return t&&!a.includes(t)&&a.unshift(t),a}const dn="This view isn't scoped to one tag, so there's no schema to add a field to — add a single tag to the query, or open a tag's view.";function Oe(e,t,s){return[{key:"__add_field__",label:e,hint:t,onSelect:s}]}function un({value:e,fields:t,onChange:s,dirty:a=!1,createTag:r=null,schemaReady:i=!0,onAddField:l}){const o=Ve(t,e,()=>!0),d=o.length===0&&!!r&&i&&!!l;return n.jsx(ee,{label:"Group by",menuLabel:"Group by",value:e??"—",options:o.map(c=>({value:c,glyph:n.jsx("span",{className:`tint-dot tint-${V(c)}`})})),current:e,onSelect:s,note:o.length>0?void 0:r?d?`#${r} has no fields yet — add one to give this board its columns:`:void 0:dn,actions:d?Oe("Add a field to group by…","You name it; give it values to get columns.",l):void 0,dirty:a})}function mn({value:e,fields:t,onChange:s,dirty:a=!1,createTag:r=null,schemaReady:i=!0,onAddField:l}){const o=Ve(t,e,c=>c.schema.type==="date"),d=o.length===0&&!!r&&i&&!!l;return n.jsx(ee,{label:"By date",menuLabel:"By date",value:e??"created",options:o.map(c=>({value:c})),current:e,onSelect:s,note:o.length===0&&d?`Showing by created date. #${r} has no date field — add one to plot and drag by it:`:e===void 0?"Showing by created date":void 0,actions:d?Oe("Add a date field…","You name it; it holds a date on each note.",l):void 0,dirty:a})}function fn({notes:e,roles:t,viewResultsKey:s,fields:a=[]}){return n.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card shadow-sm",children:n.jsx("div",{className:"overflow-x-auto",children:n.jsxs("table",{className:"w-full min-w-[36rem] border-collapse text-sm",children:[n.jsx("thead",{children:n.jsxs("tr",{className:"border-b border-border text-left",children:[n.jsx("th",{scope:"col",className:"sticky left-0 z-[1] bg-bg-soft px-3 py-2 text-2xs font-semibold uppercase tracking-[0.08em] text-fg-dim",children:"Note"}),a.map(r=>n.jsx("th",{scope:"col",className:`whitespace-nowrap bg-bg-soft px-3 py-2 text-2xs font-semibold uppercase tracking-[0.08em] text-fg-dim ${r.schema.type==="number"?"text-right":""}`,children:r.name},r.name))]})}),n.jsx("tbody",{children:e.map(r=>n.jsx(pn,{note:r,fields:a,roles:t,viewResultsKey:s},r.id))})]})})})}function pn({note:e,fields:t,roles:s,viewResultsKey:a}){const{write:r,isPending:i}=z(e,a),l=C(e),o=(e.tags??[]).includes(s.pinned),d=(e.tags??[]).includes(s.archived);return n.jsxs("tr",{"data-note-id":e.id,className:`group border-b border-border-light last:border-b-0 hover:bg-bg-soft/60 ${d?"opacity-60 italic":""}`,children:[n.jsx("th",{scope:"row",className:"group-hover:after:opacity-100 sticky left-0 z-[1] bg-card px-3 py-1.5 text-left font-normal after:pointer-events-none after:absolute after:inset-0 after:-z-10 after:bg-bg-soft/60 after:opacity-0",children:n.jsxs(O,{to:`/n/${encodeURIComponent(e.id)}`,className:"focus-ring inline-flex max-w-[16rem] items-baseline gap-1.5 hover:text-accent",children:[o?n.jsx("span",{className:"shrink-0 text-accent","aria-label":"pinned",title:"pinned",children:"★"}):null,n.jsx("span",{className:l.kind==="timestamp"?"min-w-0 truncate title-timestamp":"min-w-0 truncate font-medium text-fg",children:l.text})]})}),t.map(c=>{var p;return n.jsx("td",{className:`px-3 py-1 align-middle ${c.schema.type==="number"?"text-right":""}`,children:n.jsx(K,{field:c.name,schema:c.schema,value:_e((p=e.metadata)==null?void 0:p[c.name]),disabled:i,includeClear:!0,onCommit:f=>void r(c.name,f)})},c.name)})]})}function Ie(e){return e.kind!==void 0||e.groupBy!==void 0||e.dateField!==void 0||e.fields!==void 0}function xn(e){const t=new URLSearchParams;return e.kind&&t.set("kind",e.kind),e.groupBy&&t.set("group",e.groupBy),e.dateField&&t.set("date",e.dateField),e.fields&&e.fields.length>0&&t.set("fields",e.fields.join(",")),t}function hn(e){const t={},s=e.get("kind");s&&Se.includes(s)&&(t.kind=s);const a=e.get("group");a&&(t.groupBy=a);const r=e.get("date");r&&(t.dateField=r);const i=e.get("fields");if(i){const l=i.split(",").map(o=>o.trim()).filter(Boolean);l.length>0&&(t.fields=l)}return t}function te(e,t){return Ie(t)?{...e,kind:t.kind??e.kind,groupBy:t.groupBy??e.groupBy,dateField:t.dateField??e.dateField,fields:t.fields??e.fields}:e}function bn(e,t){return e===void 0||t===void 0?e===t:e.length===t.length&&e.every((s,a)=>s===t[a])}function Ne(e,t){const s={};return t.kind!==void 0&&t.kind!==e.kind&&(s.kind=t.kind),t.groupBy!==void 0&&t.groupBy!==e.groupBy&&(s.groupBy=t.groupBy),t.dateField!==void 0&&t.dateField!==e.dateField&&(s.dateField=t.dateField),t.fields!==void 0&&!bn(t.fields,e.fields)&&(s.fields=t.fields),s}function gn(e){var t;return(t=e.find(s=>{var a;return(((a=s.schema.enum)==null?void 0:a.length)??0)>0}))==null?void 0:t.name}function yn(e){var t;return(t=e.find(s=>s.schema.type==="date"))==null?void 0:t.name}function vn(e,t,s,a){const r={...t,kind:s};if(s==="board"){if(!(t.groupBy??e.groupBy)){const i=gn(a);i&&(r.groupBy=i)}}else e.groupBy===void 0&&(r.groupBy=void 0);if(s==="calendar"){if(!(t.dateField??e.dateField)){const i=yn(a);i&&(r.dateField=i)}}else e.dateField===void 0&&(r.dateField=void 0);return r}function jn(e,t,s){const r={kind:te(e,t).kind};return s!==null&&(r.query=JSON.stringify(s)),t.groupBy!==void 0&&(r.group_by=t.groupBy),t.dateField!==void 0&&(r.date_field=t.dateField),t.fields!==void 0&&(r.fields=JSON.stringify(t.fields)),r}function Nn(e,t){const s={kind:e.kind};return t!==null&&(s.query=JSON.stringify(t)),e.groupBy!==void 0&&(s.group_by=e.groupBy),e.dateField!==void 0&&(s.date_field=e.dateField),e.fields!==void 0&&(s.fields=JSON.stringify(e.fields)),s}const wn={type:"string"};function P(e){const t=Ce(e);return t.length===1?t[0]:null}function kn(e,t){return e.fields&&e.fields.length>0?e.fields.map(a=>({name:a,schema:(t==null?void 0:t[a])??wn})):P(e.query)&&t?Object.entries(t).map(([a,r])=>({name:a,schema:r})):[]}function Sn(e){const t=e?P(e.query):null,s=I(t);return x.useMemo(()=>e?kn(e,qe(s.data)):[],[e,s.data])}function qe(e){return(e==null?void 0:e.fields)??null}function Cn(e){const t=e?P(e.query):null,s=I(t);return x.useMemo(()=>Object.keys(qe(s.data)??{}),[s.data])}function Dn(e){const t=e?P(e.query):null,s=I(t);return t?s.isSuccess:!0}function Tn(e,t,s=[]){if(s.includes(t))return{pinned:[],rest:e};const a=[],r=[];for(const i of e)(i.tags??[]).includes(t)?a.push(i):r.push(i);return{pinned:a,rest:r}}function ze(){return n.jsx("nav",{className:"mb-6 text-sm text-fg-dim",children:n.jsx(O,{to:"/notes",className:"focus-ring hover:text-accent",children:"← All notes"})})}function Qn(){const{id:e}=ft(),t=De(a=>a.getActiveVault()),s=pt(e);return t?s.data?n.jsx(En,{note:s.data}):n.jsxs("div",{className:"page",children:[n.jsx(ze,{}),s.isPending?n.jsx($n,{}):s.isError?n.jsx(Te,{title:"Couldn't load this view",message:s.error instanceof Error?s.error.message:void 0,retry:()=>s.refetch()}):n.jsx(R,{title:"View not found",description:"It may have been deleted or moved."})]}):n.jsx(xt,{to:"/",replace:!0})}function $n(){return n.jsxs("div",{className:"space-y-4","aria-busy":"true",children:[n.jsx(k,{height:32,width:"40%"}),n.jsx(k,{height:20,width:"60%"}),n.jsxs("div",{className:"space-y-2 pt-4",children:[n.jsx(k,{height:56}),n.jsx(k,{height:56}),n.jsx(k,{height:56})]})]})}function En({note:e}){const t=x.useMemo(()=>Nt(e),[e]);return n.jsx(Mn,{def:t,backingNote:e,nav:n.jsx(ze,{})})}function Mn({def:e,backingNote:t,pageSize:s,total:a,nav:r}){var de;const i=De(N=>N.getActiveVault()),{roles:l}=ct((i==null?void 0:i.id)??null),o=typeof s=="number"&&s>0,[d,c]=x.useState(0),[p,f]=dt(),u=x.useMemo(()=>ut(p),[p]),b=x.useMemo(()=>Ne(e,hn(p)),[e,p]),j=(N,$)=>{const D=xn(N);for(const[L,A]of wt($))D.append(L,A);f(D,{replace:!0})},g=N=>j(b,N),m=N=>{j(Ne(e,N),u)},h=x.useMemo(()=>te(e,b),[e,b]),v=x.useMemo(()=>JSON.stringify({q:h.query,r:u}),[h.query,u]);x.useEffect(()=>{c(0)},[v]);const y=x.useMemo(()=>!o||!h.query?h:{...h,query:{...h.query,offset:d,limit:s+1}},[o,h,d,s]),w=mt(y,u,{live:!o}),S=x.useMemo(()=>o&&w.data?w.data.slice(0,s):w.data,[o,w.data,s]),ne=(S==null?void 0:S.length)??0,se=o?(((de=w.data)==null?void 0:de.length)??0)>s:!1,Ge=pe(u),Ue=o&&!se?d+ne:void 0,Ye=Ge?void 0:a,T=Sn(h),Qe=Cn(h),ae=[...h.problems,...w.problems],re=x.useMemo(()=>S?Tn(S,l.pinned,Ce(h.query)):{pinned:[],rest:[]},[S,l.pinned,h.query]),He=t!==null,ie=(Ie(b)||pe(u))&&He,[We,le]=x.useState(!1),oe=()=>f(new URLSearchParams,{replace:!0}),_=x.useMemo(()=>P(h.query),[h.query]),ce=Dn(h),[G,U]=x.useState(null),Je=N=>{var A,ue;const $=G;if(!$)return;const D=Object.entries(N),L=$==="date"?(A=D.find(([,E])=>E.type==="date"))==null?void 0:A[0]:(ue=D.find(([,E])=>{var me;return(((me=E.enum)==null?void 0:me.length)??0)>0})??D.find(([,E])=>E.type!=="date"))==null?void 0:ue[0];L&&m({...b,[$==="group"?"groupBy":"dateField"]:L})},Xe=h.kind==="board"||h.kind==="table";return n.jsxs("div",{className:Xe?"page page-wide":"page",children:[r,n.jsxs("article",{className:ie?"pb-20":void 0,children:[n.jsx(_n,{def:h,backingNote:t,count:Ye}),n.jsxs("div",{className:"mb-1 flex flex-wrap items-center gap-x-2 gap-y-2 py-1",children:[n.jsx(cn,{kind:h.kind,onSwitch:N=>m(vn(e,b,N,T)),dirty:e.kind!==h.kind}),h.kind==="board"?n.jsx(un,{value:h.groupBy,fields:T,onChange:N=>m({...b,groupBy:N}),dirty:e.groupBy!==h.groupBy,createTag:_,schemaReady:ce,onAddField:()=>U("group")}):null,h.kind==="calendar"?n.jsx(mn,{value:h.dateField,fields:T,onChange:N=>m({...b,dateField:N}),dirty:e.dateField!==h.dateField,createTag:_,schemaReady:ce,onAddField:()=>U("date")}):null,n.jsx(ln,{fields:T,schemaFieldNames:Qe,onChange:N=>m({...b,fields:N}),dirty:e.fields!==h.fields})]}),n.jsx(Rn,{def:e,refinements:u,onChange:g}),ae.length>0?n.jsx(An,{problems:ae}):null,n.jsx("div",{className:"mt-6",children:n.jsx(Fn,{def:h,data:S,isPending:w.isPending,isError:w.isError,error:w.error,retry:w.refetch,viewResultsKey:w.queryKey,fields:T,pinned:re.pinned,rest:re.rest,roles:l})}),o?n.jsx(Ln,{offset:d,shown:ne,total:Ue,hasPrev:d>0,hasNext:se,onPrev:()=>c(N=>Math.max(0,N-s)),onNext:()=>c(N=>N+s)}):null,ie?n.jsx(Pn,{onSave:()=>le(!0),onRevert:oe}):null,We&&t?n.jsx(zn,{note:t,def:e,draft:b,refinements:u,roles:l,onClose:()=>le(!1),onSaved:oe}):null,G&&_?n.jsx(Ct,{tagName:_,intent:G,onSaved:Je,onClose:()=>U(null)}):null]})]})}function Pn({onSave:e,onRevert:t}){const s=gt(a=>a.setShown);return x.useEffect(()=>(s(!0),()=>s(!1)),[s]),n.jsx("div",{"aria-label":"View modified",className:"glass-panel fixed inset-x-0 bottom-[calc(3.5rem+env(safe-area-inset-bottom))] z-20 border-t border-border lg:bottom-0 lg:pb-[env(safe-area-inset-bottom)]",children:n.jsxs("div",{className:"mx-auto flex w-full max-w-(--w-page) items-center justify-between gap-3 px-5 py-2.5 md:px-10",children:[n.jsxs("div",{className:"flex min-w-0 items-center gap-2.5",children:[n.jsx("span",{"aria-hidden":"true",className:"view-modified-pulse h-2 w-2 shrink-0 rounded-full bg-accent"}),n.jsxs("p",{className:"min-w-0 text-sm text-fg-muted",children:[n.jsx("span",{className:"font-medium text-fg",children:"View modified"})," — you're exploring. Save to keep this layout."]})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("button",{type:"button",onClick:t,className:"btn btn-secondary btn-touch",children:"Revert"}),n.jsx("button",{type:"button",onClick:e,className:"btn btn-primary btn-touch",children:"Save"})]})]})})}function _n({def:e,backingNote:t,count:s}){return n.jsxs("header",{className:"mb-4 flex flex-wrap items-center justify-between gap-3 border-b border-border pb-5",children:[n.jsxs("div",{className:"flex min-w-0 items-center gap-2.5",children:[n.jsx(ht,{kind:e.kind,hueTag:$e(e.query)}),n.jsxs("div",{className:"min-w-0",children:[n.jsx("h1",{className:"page-title truncate",children:e.title}),typeof s=="number"?n.jsx("p",{className:"text-sm text-fg-dim",children:s===1?"1 note":`${s.toLocaleString()} notes`}):null]})]}),t?n.jsx(O,{to:`/n/${encodeURIComponent(t.id)}/edit`,className:"btn btn-secondary btn-touch",children:"Edit view note"}):null]})}function Ln({offset:e,shown:t,total:s,hasPrev:a,hasNext:r,onPrev:i,onNext:l}){const o=t>0?e+1:0,d=e+t;return!a&&!r?null:n.jsxs("div",{className:"mt-6 flex items-center justify-between text-fg-dim text-sm",children:[n.jsx("span",{children:t>0?typeof s=="number"?`Showing ${o}–${d} of ${s.toLocaleString()}`:`Showing ${o}–${d}`:""}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx("button",{type:"button",disabled:!a,onClick:i,className:"btn btn-secondary btn-touch",children:"Previous"}),n.jsx("button",{type:"button",disabled:!r,onClick:l,className:"btn btn-secondary btn-touch",children:"Next"})]})]})}function An({problems:e}){return n.jsx("output",{"aria-live":"polite",className:"mt-4 block rounded-lg border border-[--color-warning] bg-[--color-warning-soft] p-3 text-sm text-fg",children:n.jsx("ul",{className:"list-disc space-y-1 pl-5",children:e.map((t,s)=>n.jsx("li",{children:t.message},`${t.code}-${s}`))})})}function Fn({def:e,data:t,isPending:s,isError:a,error:r,retry:i,viewResultsKey:l,fields:o,pinned:d,rest:c,roles:p}){if(e.query===null)return n.jsx(R,{title:"Nothing is being shown",description:"Fix the view's query to see results."});if(s)return n.jsxs("div",{className:"space-y-2","aria-busy":"true",children:[n.jsx(k,{height:56}),n.jsx(k,{height:56}),n.jsx(k,{height:56})]});if(a)return n.jsx(Te,{title:"Couldn't run this view",message:r instanceof Error?r.message:void 0,retry:i});if(!t||d.length===0&&c.length===0)return n.jsx(R,{title:"No notes match this view yet."});const f=[...d,...c];switch(e.kind){case"board":if(e.groupBy)return n.jsx(Jt,{notes:f,laneBy:e.groupBy,subjectTag:$e(e.query),roles:p,viewResultsKey:l,fields:o});break;case"gallery":return n.jsx(on,{notes:f,roles:p,viewResultsKey:l,fields:o});case"table":return n.jsx(fn,{notes:f,roles:p,viewResultsKey:l,fields:o});case"calendar":return n.jsx(tn,{notes:f,dateField:e.dateField||null,roles:p,viewResultsKey:l,fields:o})}return n.jsx(Bn,{pinned:d,rest:c,roles:p,viewResultsKey:l,fields:o})}function Bn({pinned:e,rest:t,roles:s,viewResultsKey:a,fields:r}){const i=l=>r.length>0?n.jsx(M,{note:l,fields:r,viewResultsKey:a}):null;return n.jsxs("div",{className:"space-y-6",children:[e.length>0?n.jsxs("section",{"aria-label":"Pinned",children:[n.jsx("p",{className:"eyebrow mb-2",children:"Pinned"}),n.jsx(xe,{"aria-label":"Pinned notes",children:e.map(l=>n.jsx(he,{note:l,pinnedTag:s.pinned,archivedTag:s.archived,footer:i(l)},l.id))})]}):null,t.length>0?n.jsx("section",{"aria-label":"Results",children:n.jsx(xe,{"aria-label":"View results",children:t.map(l=>n.jsx(he,{note:l,pinnedTag:s.pinned,archivedTag:s.archived,footer:i(l)},l.id))})}):null]})}function Rn({def:e,refinements:t,onChange:s}){const a=x.useMemo(()=>bt(e.query),[e.query]),r=i=>{const l=t.removeExcludes.includes(i);s({...t,removeExcludes:l?t.removeExcludes.filter(o=>o!==i):[...t.removeExcludes,i]})};return n.jsxs("div",{className:"flex flex-wrap items-center gap-2 py-2",children:[a.map(i=>n.jsx(Vn,{chip:i,toggled:i.kind==="exclude"&&!!i.value&&t.removeExcludes.includes(i.value),onToggle:i.kind==="exclude"&&i.value?()=>r(i.value):void 0},`${i.kind}-${i.value??i.label}`)),t.addTags.map(i=>n.jsx(W,{label:`+#${i}`,onRemove:()=>s({...t,addTags:t.addTags.filter(l=>l!==i)})},`add-${i}`)),t.search?n.jsx(W,{label:`"${t.search}"`,onRemove:()=>s({...t,search:void 0})}):null,t.sort?n.jsx(W,{label:`sorted by ${t.sort==="desc"?"newest":"oldest"}`,onRemove:()=>s({...t,sort:void 0})}):null,n.jsx(On,{onAdd:i=>s({...t,addTags:[...t.addTags,i]})}),n.jsx(In,{value:t.search??"",onChange:i=>s({...t,search:i||void 0})}),n.jsx(qn,{value:t.sort,onChange:i=>s({...t,sort:i})})]})}function Vn({chip:e,toggled:t,onToggle:s}){return s?n.jsx("button",{type:"button",onClick:s,"aria-pressed":!t,title:t?"Excluded again — tap to peek":"Tap to peek at these too",className:`chip ${t?"opacity-50 line-through":""}`,children:e.label}):n.jsx("span",{className:"chip",children:e.label})}function W({label:e,onRemove:t}){return n.jsxs("span",{className:"chip chip-tag-active",children:[e,n.jsx("button",{type:"button",onClick:t,"aria-label":`Remove refinement ${e}`,className:"focus-ring ml-1 rounded-full",children:"×"})]})}function On({onAdd:e}){const[t,s]=x.useState(""),a=()=>{const r=t.trim().replace(/^#/,"");r&&(e(r),s(""))};return n.jsx("input",{type:"text",value:t,onChange:r=>s(r.target.value),onKeyDown:r=>{r.key==="Enter"&&(r.preventDefault(),a())},placeholder:"+ tag","aria-label":"Add a tag filter",className:"w-24 rounded-full border border-border bg-bg/40 px-2.5 py-1 text-xs text-fg focus:border-accent focus:outline-none"})}function In({value:e,onChange:t}){return n.jsx("input",{type:"search",value:e,onChange:s=>t(s.target.value),placeholder:"Search…","aria-label":"Search within this view",className:"w-32 rounded-full border border-border bg-bg/40 px-2.5 py-1 text-xs text-fg focus:border-accent focus:outline-none"})}function qn({value:e,onChange:t}){return n.jsx("button",{type:"button",onClick:()=>t(e==="desc"?"asc":e==="asc"?void 0:"desc"),className:"chip","aria-label":"Cycle sort order",children:e==="desc"?"Newest first":e==="asc"?"Oldest first":"Sort"})}function zn({note:e,def:t,draft:s,refinements:a,roles:r,onClose:i,onSaved:l}){const o=ke(y=>y.push),d=yt(),c=vt(e,d),[p,f]=x.useState(c),[u,b]=x.useState(`${t.title} (copy)`),[j,g]=x.useState(!1),m=we(e.id),h=jt(),v=async()=>{g(!0);try{const y=kt(t.query,a);p==="update"?(await m.mutateAsync({metadata:jn(t,s,y),...e.updatedAt?{if_updated_at:e.updatedAt}:{force:!0}}),o(`Updated "${t.title}".`,"success")):(await h.mutateAsync({content:"",path:St(u),tags:[r.view],metadata:Nn(te(t,s),y)}),o(`Saved "${u}".`,"success")),l(),i()}catch(y){o(`Could not save: ${y.message}`,"error")}finally{g(!1)}};return n.jsx("div",{className:"dialog-overlay",role:"dialog","aria-labelledby":"save-view-title",onMouseDown:y=>{y.target===y.currentTarget&&i()},children:n.jsxs("div",{className:"dialog-panel max-w-md",children:[n.jsx("h2",{id:"save-view-title",className:"mb-3 font-serif text-xl text-fg",children:"Save this view"}),n.jsxs("div",{className:"mb-4 space-y-2",children:[n.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[n.jsx("input",{type:"radio",name:"save-mode",checked:p==="update",onChange:()=>f("update")}),"Update this view"]}),n.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[n.jsx("input",{type:"radio",name:"save-mode",checked:p==="fork",onChange:()=>f("fork")}),"Save as new view"]})]}),p==="fork"?n.jsxs("label",{className:"mb-4 block text-sm",children:[n.jsx("span",{className:"mb-1 block text-fg-muted",children:"Name"}),n.jsx("input",{type:"text",value:u,onChange:y=>b(y.target.value),className:"w-full rounded-lg border border-border bg-bg/40 px-2.5 py-1.5 text-sm text-fg focus:border-accent focus:outline-none"})]}):null,n.jsxs("div",{className:"flex justify-end gap-2",children:[n.jsx("button",{type:"button",onClick:i,className:"btn btn-secondary btn-touch",children:"Cancel"}),n.jsx("button",{type:"button",onClick:()=>void v(),disabled:j||p==="fork"&&!u.trim(),className:"btn btn-primary btn-touch",children:j?"Saving…":"Save"})]})]})})}export{Mn as ViewCanvas,Qn as ViewSurface};
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-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-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-content:""}}}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-opsz-normal-Czevyj-6.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-opsz-normal-CJcjJNj7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-opsz-normal-DihXLNYH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-opsz-italic-DxWqP7Ku.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-opsz-italic-CGbN9UgK.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-opsz-italic-lSdLDfvT.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer theme{:root,:host{--font-sans:"Figtree Variable", -apple-system, system-ui, "Segoe UI", Roboto, sans-serif;--font-serif:"Fraunces Variable", ui-serif, "New York", "Iowan Old Style", Georgia, serif;--font-mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, "Cascadia Code", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--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: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.375rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.625rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.9375rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-xs:3px;--radius-sm:4px;--radius-md:6px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:24px;--shadow-sm:0 1px 2px #24422e0f;--ease-out:cubic-bezier(.25, 1, .5, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-round:var(--font-sans);--color-bg:#fafaf6;--color-bg-soft:#f7f5ec;--color-fg:#233c2a;--color-fg-muted:#5b6f5e;--color-fg-dim:#8a968b;--color-accent:#bf4a2a;--color-accent-hover:#a63f23;--color-accent-light:#e05d3c;--color-sky:#5b8fa8;--color-grass:#3f8a58;--color-grass-soft:#e1f0e4;--color-grass-ink:#245c39;--color-sun:#f4c020;--color-sun-soft:#fdf1c9;--color-sun-ink:#6b5200;--color-sage:#527e5d;--color-clay:#a8653f;--color-ochre:#a67c1e;--color-plum:#7d5490;--color-border:#d6e2d6;--color-border-light:#e4ece4;--color-card:#fefefa;--color-on-accent:#fff;--color-danger:#c0492f;--color-danger-hover:#a23b25;--color-danger-soft:#c0492f1a}@supports (color:color-mix(in lab,red,red)){:root,:host{--color-danger-soft:color-mix(in srgb, var(--color-danger) 10%, transparent)}}:root,:host{--color-danger-border:#c0492f4d}@supports (color:color-mix(in lab,red,red)){:root,:host{--color-danger-border:color-mix(in srgb, var(--color-danger) 30%, transparent)}}:root,:host{--color-warning:#b45309;--color-warning-soft:#b453091f}@supports (color:color-mix(in lab,red,red)){:root,:host{--color-warning-soft:color-mix(in srgb, var(--color-warning) 12%, transparent)}}:root,:host{--color-positive:var(--color-accent);--color-positive-soft:#bf4a2a1f}@supports (color:color-mix(in lab,red,red)){:root,:host{--color-positive-soft:color-mix(in srgb, var(--color-accent) 12%, transparent)}}:root,:host{--color-coral-soft:#fbe4d9;--color-coral-ink:#8f3417;--text-2xs:.6875rem;--lh-live:1.7;--lh-prose-tight:1.5;--radius-full:9999px;--shadow-soft:0 12px 40px -18px oklch(40% .05 152/.22);--shadow-lift:0 24px 60px -30px oklch(40% .05 152/.28);--dur-quick:.12s;--dur-move:.2s;--dur-enter:.28s;--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--canvas-wash:#3f8a5812}@supports (color:color-mix(in lab,red,red)){:root,:host{--canvas-wash:color-mix(in srgb, var(--color-grass) 7%, transparent)}}:root,:host{--canvas-wash-accent:#bf4a2a0d}@supports (color:color-mix(in lab,red,red)){:root,:host{--canvas-wash-accent:color-mix(in srgb, var(--color-accent) 5%, transparent)}}:root,:host{--w-prose:42rem;--w-page:72rem;--w-narrow:32rem;--w-surface:52rem;--w-board:96rem;--font-size-prose:18px;--font-size-editor:15px}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{.focus-ring{outline:none}.focus-ring:focus-visible{outline-offset:2px;box-shadow:0 0 0 2px var(--color-bg),0 0 0 4px #bf4a2ab3;outline:2px solid #0000}@supports (color:color-mix(in lab,red,red)){.focus-ring:focus-visible{box-shadow:0 0 0 2px var(--color-bg),0 0 0 4px color-mix(in srgb,var(--color-accent) 70%,transparent)}}.focus-ring:focus-visible{border-radius:var(--radius-sm)}.btn{border-radius:var(--radius-full);min-height:2.25rem;font-family:var(--font-round);font-size:var(--text-sm);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-quick) var(--ease-out),border-color var(--dur-quick) var(--ease-out),color var(--dur-quick) var(--ease-out),box-shadow var(--dur-quick) var(--ease-out),transform var(--dur-move) var(--ease-spring);justify-content:center;align-items:center;gap:.5rem;padding:.375rem 1rem;font-weight:500;line-height:1.2;display:inline-flex}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.btn:focus-visible{outline-offset:2px;box-shadow:0 0 0 2px var(--color-bg),0 0 0 4px #bf4a2ab3;outline:2px solid #0000}@supports (color:color-mix(in lab,red,red)){.btn:focus-visible{box-shadow:0 0 0 2px var(--color-bg),0 0 0 4px color-mix(in srgb,var(--color-accent) 70%,transparent)}}.btn-primary{background-color:var(--color-accent);color:var(--color-on-accent)}.btn-primary:not(:disabled):hover{background-color:var(--color-accent-hover)}@media(prefers-reduced-motion:no-preference){.btn-primary:not(:disabled):hover{transform:scale(1.02)}}.btn-secondary{background-color:var(--color-card);color:var(--color-fg-muted);border:1px solid var(--color-border)}.btn-secondary:not(:disabled):hover{color:var(--color-accent);border-color:var(--color-accent)}.btn-ghost{color:var(--color-fg-muted);background-color:#0000;min-height:0;padding:.25rem .5rem}.btn-ghost:not(:disabled):hover{color:var(--color-accent)}.btn-danger{background-color:var(--color-danger-soft);color:var(--color-danger);border:1px solid var(--color-danger-border)}.btn-danger:not(:disabled):hover{background-color:#c0492f2e}@supports (color:color-mix(in lab,red,red)){.btn-danger:not(:disabled):hover{background-color:color-mix(in srgb,var(--color-danger) 18%,transparent)}}.btn-danger:not(:disabled):hover{border-color:var(--color-danger)}.btn-accent-soft{background-color:#bf4a2a1a}@supports (color:color-mix(in lab,red,red)){.btn-accent-soft{background-color:color-mix(in srgb,var(--color-accent) 10%,transparent)}}.btn-accent-soft{color:var(--color-accent);border:1px solid #bf4a2a99}@supports (color:color-mix(in lab,red,red)){.btn-accent-soft{border:1px solid color-mix(in srgb,var(--color-accent) 60%,transparent)}}.btn-accent-soft:not(:disabled):hover{background-color:#bf4a2a33}@supports (color:color-mix(in lab,red,red)){.btn-accent-soft:not(:disabled):hover{background-color:color-mix(in srgb,var(--color-accent) 20%,transparent)}}.btn-danger-solid{background-color:var(--color-danger);color:var(--color-on-accent)}.btn-danger-solid:not(:disabled):hover{background-color:var(--color-danger-hover)}.btn-sm{min-height:0;font-size:var(--text-xs);padding:.25rem .75rem}.btn-lg{min-height:2.75rem;font-size:var(--text-base);padding:.5rem 1rem}.btn-touch{min-height:2.75rem}.input,.textarea,.select{background-color:var(--color-card);width:100%;color:var(--color-fg);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--text-sm);transition:border-color var(--dur-quick) var(--ease-out),box-shadow var(--dur-quick) var(--ease-out);padding:.5rem 1rem;line-height:1.5}.textarea{resize:vertical;border-radius:var(--radius-xl);padding:.5rem .75rem}.input::placeholder,.textarea::placeholder{color:var(--color-fg-dim)}.input:focus-visible,.textarea:focus-visible,.select:focus-visible{border-color:var(--color-accent);outline:none;box-shadow:0 0 0 3px #bf4a2a38}@supports (color:color-mix(in lab,red,red)){.input:focus-visible,.textarea:focus-visible,.select:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--color-accent) 22%,transparent)}}.input:disabled,.textarea:disabled,.select:disabled{opacity:.5;cursor:not-allowed}.input-on-bg{background-color:var(--color-bg)}.card{background-color:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-2xl)}.glass-panel{background-color:#f7f5ecd1}@supports (color:color-mix(in lab,red,red)){.glass-panel{background-color:color-mix(in srgb,var(--color-bg-soft) 82%,transparent)}}.glass-panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.cm-format-toolbar-docked{padding:.375rem .5rem;padding-bottom:calc(.375rem + env(safe-area-inset-bottom));border-top:1px solid var(--color-border);box-shadow:var(--shadow-lift);animation:enter-rise var(--dur-enter) var(--ease-out) both;justify-content:center;align-items:center;gap:.25rem;display:flex}.chip{border-radius:var(--radius-full);font-size:var(--text-xs);border:1px solid var(--color-border);background-color:var(--color-bg-soft);color:var(--color-fg-muted);align-items:center;gap:.25rem;padding:.125rem .625rem;line-height:1.4;display:inline-flex}.chip-tag{border-color:#bf4a2a4d}@supports (color:color-mix(in lab,red,red)){.chip-tag{border-color:color-mix(in srgb,var(--color-accent) 30%,transparent)}}.chip-tag{background-color:#bf4a2a1a}@supports (color:color-mix(in lab,red,red)){.chip-tag{background-color:color-mix(in srgb,var(--color-accent) 10%,transparent)}}.chip-tag{color:var(--color-accent)}.chip-tag:hover{border-color:var(--color-accent);background-color:#bf4a2a33}@supports (color:color-mix(in lab,red,red)){.chip-tag:hover{background-color:color-mix(in srgb,var(--color-accent) 20%,transparent)}}.chip-tag-active{border-color:var(--color-accent);background-color:var(--color-accent);color:var(--color-on-accent)}.chip-featured{border-color:#8f341740}@supports (color:color-mix(in lab,red,red)){.chip-featured{border-color:color-mix(in srgb,var(--color-coral-ink) 25%,transparent)}}.chip-featured{background-color:var(--color-coral-soft);color:var(--color-coral-ink)}.dialog-overlay{z-index:40;animation:enter-fade var(--dur-quick) var(--ease-out) both;background-color:#0009;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;top:0;right:0;bottom:0;left:0}.dialog-panel{background-color:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-2xl);width:100%;box-shadow:var(--shadow-lift);animation:enter-rise var(--dur-enter) var(--ease-out) both;padding:1.25rem}.app-canvas{background-color:var(--color-bg);background-image:radial-gradient(1100px 520px at 50% -6%,var(--canvas-wash),transparent 70%),radial-gradient(900px 480px at 4% 104%,var(--canvas-wash-accent),transparent 70%);background-repeat:no-repeat}.page-title{font-family:var(--font-serif);font-size:clamp(var(--text-2xl),calc(var(--text-xl) + 1.2vw),2.25rem);letter-spacing:-.01em;color:var(--color-fg);text-wrap:balance;line-height:1.12}.title-timestamp{font-family:var(--font-sans);color:var(--color-fg-dim);font-variant-numeric:tabular-nums;font-weight:400}.eyebrow{font-family:var(--font-round);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-sage)}.eyebrow-accent{color:var(--color-accent)}.note-id{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-fg-dim);word-break:break-all}.page{max-width:var(--w-page);margin-inline:auto;padding-block:1.5rem;padding-inline:1.25rem}@media(min-width:768px){.page{padding-block:2.75rem;padding-inline:2.5rem}}.page.page-wide{max-width:var(--w-board)}.page-surface{max-width:var(--w-surface);margin-inline:auto;padding-block:1.5rem;padding-inline:1.25rem}@media(min-width:768px){.page-surface{padding-block:2.75rem;padding-inline:2rem}}.page-prose{max-width:var(--w-prose);margin-inline:auto;padding-block:2rem;padding-inline:1.25rem}@media(min-width:768px){.page-prose{padding-block:3.25rem;padding-inline:2rem}}.skeleton{background-color:#d6e2d68c}@supports (color:color-mix(in lab,red,red)){.skeleton{background-color:color-mix(in srgb,var(--color-border) 55%,transparent)}}.skeleton{border-radius:var(--radius-sm);animation:1.6s cubic-bezier(.4,0,.6,1) infinite pulse}.composer{border:1.5px solid var(--color-border);background-color:var(--color-card);box-shadow:var(--shadow-soft);transition:border-color var(--dur-quick) var(--ease-out),box-shadow var(--dur-quick) var(--ease-out);border-radius:20px}.composer-focus,.composer:hover,.composer:focus-within{border-color:var(--color-accent-light);box-shadow:0 0 0 4px var(--color-coral-soft)}.nudge-sun{border-radius:var(--radius-xl);border:1px solid #e4d384;align-items:center;gap:.75rem;display:flex}@supports (color:color-mix(in lab,red,red)){.nudge-sun{border:1px solid color-mix(in srgb,var(--color-sun) 45%,var(--color-border))}}.nudge-sun{background-color:var(--color-sun-soft);color:var(--color-sun-ink);font-family:var(--font-round);padding:.75rem 1rem;font-weight:600}.note-row{border-radius:var(--radius-xl);transition:background-color var(--dur-quick) var(--ease-out),border-color var(--dur-quick) var(--ease-out),transform var(--dur-move) var(--ease-out),box-shadow var(--dur-move) var(--ease-out);border:1px solid #0000;gap:.75rem;padding:.75rem;display:flex}.note-row:hover{background-color:var(--color-card);border-color:var(--color-border-light)}@media(hover:hover)and (prefers-reduced-motion:no-preference){.note-row:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}}.note-row:active{background-color:var(--color-grass-soft);border-color:#0000}.note-dot{border-radius:var(--radius-full);background-color:var(--color-grass);flex:none;width:.5rem;height:.5rem;margin-top:.45rem}.hue-dot{border-radius:var(--radius-full);flex:none;width:.5rem;height:.5rem}.hue-dot-sage{background-color:var(--color-sage)}.hue-dot-sky{background-color:var(--color-sky)}.hue-dot-sun{background-color:var(--color-sun)}.hue-dot-coral{background-color:var(--color-coral-ink)}.hue-dot-grass{background-color:var(--color-grass)}.hue-dot-clay{background-color:var(--color-clay)}.hue-dot-ochre{background-color:var(--color-ochre)}.hue-dot-plum{background-color:var(--color-plum)}.chip-tinted{background:var(--sc)}@supports (color:color-mix(in lab,red,red)){.chip-tinted{background:color-mix(in srgb,var(--sc) 10%,var(--color-card))}}.chip-tinted{border-color:var(--sc)}@supports (color:color-mix(in lab,red,red)){.chip-tinted{border-color:color-mix(in srgb,var(--sc) 30%,var(--color-border))}}.tint-dot{border-radius:var(--radius-full);background:var(--sc);flex:none;width:.4375rem;height:.4375rem}.tint-sage{--sc:var(--color-sage)}.tint-sky{--sc:var(--color-sky)}.tint-sun{--sc:var(--color-sun)}.tint-coral{--sc:var(--color-coral-ink)}.tint-grass{--sc:var(--color-grass)}.tint-clay{--sc:var(--color-clay)}.tint-ochre{--sc:var(--color-ochre)}.tint-plum{--sc:var(--color-plum)}.tint-danger{--sc:var(--color-danger)}.tile{border-radius:var(--radius-xl);border:1.5px solid var(--color-border);background-color:var(--color-card);box-shadow:var(--shadow-soft);transition:border-color var(--dur-quick) var(--ease-out),box-shadow var(--dur-quick) var(--ease-out),transform var(--dur-quick) var(--ease-out)}.tile:hover{border-color:#bf4a2a8c}@supports (color:color-mix(in lab,red,red)){.tile:hover{border-color:color-mix(in srgb,var(--color-accent) 55%,transparent)}}.tile:hover{box-shadow:var(--shadow-lift)}.hero-title{font-family:var(--font-serif);letter-spacing:-.02em;color:var(--color-fg);text-wrap:balance;font-size:clamp(2.4rem,5vw,3.6rem);font-weight:600;line-height:1.05}.accent-word{color:var(--color-accent-light);font-style:italic}@keyframes drop-in{0%{opacity:0;transform:translateY(-42px)rotate(-7deg)}60%{opacity:1;transform:translateY(6px)rotate(2deg)}to{opacity:1;transform:translateY(0)rotate(-2deg)}}.drop-in{animation:1.2s cubic-bezier(.3,.7,.4,1) both drop-in}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fade-up var(--dur-enter) ease both}@keyframes enter-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.enter-rise{animation:enter-rise var(--dur-enter) var(--ease-out) both}@keyframes enter-fade{0%{opacity:0}to{opacity:1}}.enter-fade{animation:enter-fade var(--dur-quick) var(--ease-out) both}.qs-scrim-fade{animation:enter-fade .18s var(--ease-out) both}@keyframes field-write-flash{0%,to{outline-color:#0000}20%{outline-color:color-mix(in srgb,var(--color-accent) 75%,transparent)}}.field-write-flash{outline-offset:2px;animation:field-write-flash .6s var(--ease-out);outline:2px solid #0000}@keyframes view-modified-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}.view-modified-pulse{animation:2s ease-in-out infinite view-modified-pulse}@media(prefers-reduced-motion:reduce){:root{--dur-move:0s;--dur-enter:0s}.drop-in,.fade-up,.enter-rise,.enter-fade,.qs-scrim-fade,.field-write-flash,.view-modified-pulse,.dialog-overlay,.dialog-panel,.cm-format-toolbar-docked{animation:none}}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{inset-inline:0}.top-0{top:0}.top-0\.5{top:calc(var(--spacing) * .5)}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-5{right:calc(var(--spacing) * 5)}.right-6{right:calc(var(--spacing) * 6)}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-20{bottom:calc(var(--spacing) * 20)}.bottom-\[calc\(3\.5rem\+env\(safe-area-inset-bottom\)\)\]{bottom:calc(3.5rem + env(safe-area-inset-bottom))}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing) * 4)}.-z-10{z-index:-10}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.row-1{grid-row:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.m-auto{margin:auto}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-5{margin-inline:calc(var(--spacing) * -5)}.mx-1{margin-inline:var(--spacing)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.-my-3{margin-block:calc(var(--spacing) * -3)}.my-8{margin-block:calc(var(--spacing) * 8)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-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-10{margin-top:calc(var(--spacing) * 10)}.mt-auto{margin-top:auto}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.aspect-\[3\/2\]{aspect-ratio:3/2}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.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-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-\[3\.25rem\]{height:3.25rem}.h-\[24rem\]{height:24rem}.h-\[40rem\]{height:40rem}.h-\[60dvh\]{height:60dvh}.h-\[85dvh\]{height:85dvh}.h-\[calc\(100dvh-5rem\)\]{height:calc(100dvh - 5rem)}.h-\[…dvh\]{height:…dvh}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-\[32rem\]{max-height:32rem}.max-h-\[45vh\]{max-height:45vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70dvh\]{max-height:70dvh}.max-h-\[85dvh\]{max-height:85dvh}.max-h-full{max-height:100%}.max-h-none{max-height:none}.min-h-0{min-height:0}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-20{min-height:calc(var(--spacing) * 20)}.min-h-24{min-height:calc(var(--spacing) * 24)}.min-h-\[40vh\]{min-height:40vh}.min-h-\[50dvh\]{min-height:50dvh}.min-h-\[60dvh\]{min-height:60dvh}.min-h-\[60vh\]{min-height:60vh}.min-h-\[85dvh\]{min-height:85dvh}.min-h-\[calc\(100dvh-4rem\)\]{min-height:calc(100dvh - 4rem)}.min-h-dvh{min-height:100dvh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing) * 2)}.w-2\/3{width:66.6667%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4{width:calc(var(--spacing) * 4)}.w-4\/5{width:80%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-60{width:calc(var(--spacing) * 60)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\[3\.25rem\]{width:3.25rem}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-\(--w-narrow\){max-width:var(--w-narrow)}.max-w-\(--w-page\){max-width:var(--w-page)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[--w-page\]{max-width:--w-page}.max-w-\[--w-x\]{max-width:--w-x}.max-w-\[9rem\]{max-width:9rem}.max-w-\[12rem\]{max-width:12rem}.max-w-\[16rem\]{max-width:16rem}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-11{min-width:calc(var(--spacing) * 11)}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-\[10rem\]{min-width:10rem}.min-w-\[36rem\]{min-width:36rem}.flex-1{flex:1}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.basis-full{flex-basis:100%}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(min\(100\%\,13rem\)\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(min(100%,13rem),1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(min\(100\%\,16rem\)\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr))}.flex-col{flex-direction:column}.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-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-10{gap:calc(var(--spacing) * 10)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.divide-border-light>:not(:last-child)){border-color:var(--color-border-light)}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:var(--radius-full)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-\[var\(--radius-2xl\)\]{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-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-dashed{--tw-border-style:dashed;border-style:dashed}.border-\(--color-danger-border\){border-color:var(--color-danger-border)}.border-\[--color-danger-border\]{border-color:--color-danger-border}.border-\[--color-warning\]{border-color:--color-warning}.border-\[color-mix\(in_srgb\,var\(--color-accent\)_40\%\,var\(--color-border\)\)\]{border-color:#cda591}@supports (color:color-mix(in lab,red,red)){.border-\[color-mix\(in_srgb\,var\(--color-accent\)_40\%\,var\(--color-border\)\)\]{border-color:color-mix(in srgb,var(--color-accent) 40%,var(--color-border))}}.border-accent{border-color:var(--color-accent)}.border-accent\/30{border-color:#bf4a2a4d}@supports (color:color-mix(in lab,red,red)){.border-accent\/30{border-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.border-accent\/40{border-color:#bf4a2a66}@supports (color:color-mix(in lab,red,red)){.border-accent\/40{border-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.border-accent\/60{border-color:#bf4a2a99}@supports (color:color-mix(in lab,red,red)){.border-accent\/60{border-color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.border-amber-400\/40{border-color:#fcbb0066}@supports (color:color-mix(in lab,red,red)){.border-amber-400\/40{border-color:color-mix(in oklab,var(--color-amber-400) 40%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/40{border-color:color-mix(in oklab,var(--color-amber-500) 40%,transparent)}}.border-border{border-color:var(--color-border)}.border-border-light{border-color:var(--color-border-light)}.border-danger-border{border-color:var(--color-danger-border)}.border-grass{border-color:var(--color-grass)}.border-grass\/40{border-color:#3f8a5866}@supports (color:color-mix(in lab,red,red)){.border-grass\/40{border-color:color-mix(in oklab,var(--color-grass) 40%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.border-red-500\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab,red,red)){.border-red-500\/40{border-color:color-mix(in oklab,var(--color-red-500) 40%,transparent)}}.border-sky-500\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-sky-500) 30%,transparent)}}.border-sun{border-color:var(--color-sun)}.border-transparent{border-color:#0000}.border-warning{border-color:var(--color-warning)}.border-warning\/30{border-color:#b453094d}@supports (color:color-mix(in lab,red,red)){.border-warning\/30{border-color:color-mix(in oklab,var(--color-warning) 30%,transparent)}}.border-warning\/40{border-color:#b4530966}@supports (color:color-mix(in lab,red,red)){.border-warning\/40{border-color:color-mix(in oklab,var(--color-warning) 40%,transparent)}}.bg-\(--color-danger-soft\){background-color:var(--color-danger-soft)}.bg-\[--color-danger-soft\]{background-color:--color-danger-soft}.bg-\[--color-warning-soft\]{background-color:--color-warning-soft}.bg-\[color-mix\(in_srgb\,var\(--color-fg\)_32\%\,transparent\)\]{background-color:#233c2a52}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--color-fg\)_32\%\,transparent\)\]{background-color:color-mix(in srgb,var(--color-fg) 32%,transparent)}}.bg-accent{background-color:var(--color-accent)}.bg-accent\/5{background-color:#bf4a2a0d}@supports (color:color-mix(in lab,red,red)){.bg-accent\/5{background-color:color-mix(in oklab,var(--color-accent) 5%,transparent)}}.bg-accent\/10{background-color:#bf4a2a1a}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.bg-accent\/15{background-color:#bf4a2a26}@supports (color:color-mix(in lab,red,red)){.bg-accent\/15{background-color:color-mix(in oklab,var(--color-accent) 15%,transparent)}}.bg-accent\/20{background-color:#bf4a2a33}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-400\/10{background-color:#fcbb001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-400\/10{background-color:color-mix(in oklab,var(--color-amber-400) 10%,transparent)}}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500) 5%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-bg{background-color:var(--color-bg)}.bg-bg-soft{background-color:var(--color-bg-soft)}.bg-bg-soft\/60{background-color:#f7f5ec99}@supports (color:color-mix(in lab,red,red)){.bg-bg-soft\/60{background-color:color-mix(in oklab,var(--color-bg-soft) 60%,transparent)}}.bg-bg-soft\/90{background-color:#f7f5ece6}@supports (color:color-mix(in lab,red,red)){.bg-bg-soft\/90{background-color:color-mix(in oklab,var(--color-bg-soft) 90%,transparent)}}.bg-bg\/40{background-color:#fafaf666}@supports (color:color-mix(in lab,red,red)){.bg-bg\/40{background-color:color-mix(in oklab,var(--color-bg) 40%,transparent)}}.bg-bg\/60{background-color:#fafaf699}@supports (color:color-mix(in lab,red,red)){.bg-bg\/60{background-color:color-mix(in oklab,var(--color-bg) 60%,transparent)}}.bg-bg\/80{background-color:#fafaf6cc}@supports (color:color-mix(in lab,red,red)){.bg-bg\/80{background-color:color-mix(in oklab,var(--color-bg) 80%,transparent)}}.bg-bg\/90{background-color:#fafaf6e6}@supports (color:color-mix(in lab,red,red)){.bg-bg\/90{background-color:color-mix(in oklab,var(--color-bg) 90%,transparent)}}.bg-bg\/95{background-color:#fafaf6f2}@supports (color:color-mix(in lab,red,red)){.bg-bg\/95{background-color:color-mix(in oklab,var(--color-bg) 95%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-border{background-color:var(--color-border)}.bg-border\/40{background-color:#d6e2d666}@supports (color:color-mix(in lab,red,red)){.bg-border\/40{background-color:color-mix(in oklab,var(--color-border) 40%,transparent)}}.bg-card{background-color:var(--color-card)}.bg-card\/30{background-color:#fefefa4d}@supports (color:color-mix(in lab,red,red)){.bg-card\/30{background-color:color-mix(in oklab,var(--color-card) 30%,transparent)}}.bg-card\/40{background-color:#fefefa66}@supports (color:color-mix(in lab,red,red)){.bg-card\/40{background-color:color-mix(in oklab,var(--color-card) 40%,transparent)}}.bg-card\/50{background-color:#fefefa80}@supports (color:color-mix(in lab,red,red)){.bg-card\/50{background-color:color-mix(in oklab,var(--color-card) 50%,transparent)}}.bg-card\/60{background-color:#fefefa99}@supports (color:color-mix(in lab,red,red)){.bg-card\/60{background-color:color-mix(in oklab,var(--color-card) 60%,transparent)}}.bg-card\/90{background-color:#fefefae6}@supports (color:color-mix(in lab,red,red)){.bg-card\/90{background-color:color-mix(in oklab,var(--color-card) 90%,transparent)}}.bg-coral-soft{background-color:var(--color-coral-soft)}.bg-danger-soft{background-color:var(--color-danger-soft)}.bg-fg{background-color:var(--color-fg)}.bg-grass-soft{background-color:var(--color-grass-soft)}.bg-positive-soft{background-color:var(--color-positive-soft)}.bg-red-500\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/5{background-color:color-mix(in oklab,var(--color-red-500) 5%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-red-500\/30{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/30{background-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.bg-sage{background-color:var(--color-sage)}.bg-sky-400{background-color:var(--color-sky-400)}.bg-sky-500\/5{background-color:#00a5ef0d}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/5{background-color:color-mix(in oklab,var(--color-sky-500) 5%,transparent)}}.bg-sun-soft{background-color:var(--color-sun-soft)}.bg-transparent{background-color:#0000}.bg-warning-soft{background-color:var(--color-warning-soft)}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-\[max\(0\.75rem\,env\(safe-area-inset-top\)\)\]{padding-top:max(.75rem,env(safe-area-inset-top))}.pr-1{padding-right:var(--spacing)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pb-\[calc\(0\.375rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(.375rem + env(safe-area-inset-bottom))}.pl-1{padding-left:var(--spacing)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-round{font-family:var(--font-round)}.font-sans{font-family:var(--font-sans)}.font-serif{font-family:var(--font-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-2xs{font-size:var(--text-2xs)}.text-\[0\.6875rem\]{font-size:.6875rem}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.4em\]{--tw-tracking:.4em;letter-spacing:.4em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\(--color-danger\){color:var(--color-danger)}.text-\(--color-on-accent\){color:var(--color-on-accent)}.text-\[--color-danger\]{color:--color-danger}.text-\[--color-on-accent\]{color:--color-on-accent}.text-\[--color-x\]{color:--color-x}.text-accent{color:var(--color-accent)}.text-accent\/70{color:#bf4a2ab3}@supports (color:color-mix(in lab,red,red)){.text-accent\/70{color:color-mix(in oklab,var(--color-accent) 70%,transparent)}}.text-amber-100{color:var(--color-amber-100)}.text-amber-100\/70{color:#fef3c6b3}@supports (color:color-mix(in lab,red,red)){.text-amber-100\/70{color:color-mix(in oklab,var(--color-amber-100) 70%,transparent)}}.text-amber-100\/90{color:#fef3c6e6}@supports (color:color-mix(in lab,red,red)){.text-amber-100\/90{color:color-mix(in oklab,var(--color-amber-100) 90%,transparent)}}.text-amber-200{color:var(--color-amber-200)}.text-amber-300{color:var(--color-amber-300)}.text-amber-500{color:var(--color-amber-500)}.text-bg{color:var(--color-bg)}.text-coral-ink{color:var(--color-coral-ink)}.text-danger{color:var(--color-danger)}.text-fg{color:var(--color-fg)}.text-fg-dim{color:var(--color-fg-dim)}.text-fg-muted{color:var(--color-fg-muted)}.text-grass{color:var(--color-grass)}.text-grass-ink{color:var(--color-grass-ink)}.text-on-accent{color:var(--color-on-accent)}.text-on-accent\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-on-accent\/80{color:color-mix(in oklab,var(--color-on-accent) 80%,transparent)}}.text-positive{color:var(--color-positive)}.text-red-50{color:var(--color-red-50)}.text-red-100{color:var(--color-red-100)}.text-red-200{color:var(--color-red-200)}.text-red-200\/80{color:#ffcacacc}@supports (color:color-mix(in lab,red,red)){.text-red-200\/80{color:color-mix(in oklab,var(--color-red-200) 80%,transparent)}}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-sky-300{color:var(--color-sky-300)}.text-sky-300\/80{color:#77d4ffcc}@supports (color:color-mix(in lab,red,red)){.text-sky-300\/80{color:color-mix(in oklab,var(--color-sky-300) 80%,transparent)}}.text-sun-ink{color:var(--color-sun-ink)}.text-sun-ink\/70{color:#6b5200b3}@supports (color:color-mix(in lab,red,red)){.text-sun-ink\/70{color:color-mix(in oklab,var(--color-sun-ink) 70%,transparent)}}.text-warning{color:var(--color-warning)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-dashed{text-decoration-style:dashed}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-accent{accent-color:var(--color-accent)}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 8px 24px var(--tw-shadow-color,#24422e1f), 0 2px 6px var(--tw-shadow-color,#24422e0f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lift{--tw-shadow:0 24px 60px -30px var(--tw-shadow-color,oklch(40% .05 152/.28));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 2px 8px var(--tw-shadow-color,#24422e14), 0 1px 2px var(--tw-shadow-color,#24422e0d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#24422e0f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-soft{--tw-shadow:0 12px 40px -18px var(--tw-shadow-color,oklch(40% .05 152/.22));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--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-\(--color-card\){--tw-ring-color:var(--color-card)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.-outline-offset-2{outline-offset:-2px}.outline-offset-2{outline-offset:2px}.outline-accent{outline-color:var(--color-accent)}.outline-accent\/50{outline-color:#bf4a2a80}@supports (color:color-mix(in lab,red,red)){.outline-accent\/50{outline-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.outline-accent\/60{outline-color:#bf4a2a99}@supports (color:color-mix(in lab,red,red)){.outline-accent\/60{outline-color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[3px\]{--tw-backdrop-blur:blur(3px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-\(--dur-move\){--tw-duration:var(--dur-move);transition-duration:var(--dur-move)}.duration-\(--dur-quick\){--tw-duration:var(--dur-quick);transition-duration:var(--dur-quick)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[transition\:min-height_var\(--dur-move\)_ease\]{transition:min-height var(--dur-move) ease}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media(hover:hover){.group-hover\:scale-100:is(:where(.group):hover *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:border-accent\/50:is(:where(.group):hover *){border-color:#bf4a2a80}@supports (color:color-mix(in lab,red,red)){.group-hover\:border-accent\/50:is(:where(.group):hover *){border-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-fg-dim::placeholder{color:var(--color-fg-dim)}.after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);top:0;right:0;bottom:0;left:0}.after\:-z-10:after{content:var(--tw-content);z-index:-10}.after\:bg-bg-soft\/60:after{content:var(--tw-content);background-color:#f7f5ec99}@supports (color:color-mix(in lab,red,red)){.after\:bg-bg-soft\/60:after{background-color:color-mix(in oklab,var(--color-bg-soft) 60%,transparent)}}.after\:opacity-0:after{content:var(--tw-content);opacity:0}@media(hover:hover){.group-hover\:after\:opacity-100:is(:where(.group):hover *):after{content:var(--tw-content);opacity:1}}.first\:rounded-t-xl:first-child{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.last\:rounded-b-xl:last-child{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.focus-within\:shadow-lift:focus-within{--tw-shadow:0 24px 60px -30px var(--tw-shadow-color,oklch(40% .05 152/.28));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-accent\/40:hover{border-color:#bf4a2a66}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.hover\:border-accent\/50:hover{border-color:#bf4a2a80}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/50:hover{border-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.hover\:border-border:hover{border-color:var(--color-border)}.hover\:border-red-500\/40:hover{border-color:#fb2c3666}@supports (color:color-mix(in lab,red,red)){.hover\:border-red-500\/40:hover{border-color:color-mix(in oklab,var(--color-red-500) 40%,transparent)}}.hover\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\:bg-accent\/10:hover{background-color:#bf4a2a1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/10:hover{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.hover\:bg-accent\/15:hover{background-color:#bf4a2a26}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/15:hover{background-color:color-mix(in oklab,var(--color-accent) 15%,transparent)}}.hover\:bg-accent\/20:hover{background-color:#bf4a2a33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/20:hover{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.hover\:bg-amber-500\/15:hover{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/15:hover{background-color:color-mix(in oklab,var(--color-amber-500) 15%,transparent)}}.hover\:bg-amber-500\/20:hover{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/20:hover{background-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.hover\:bg-bg:hover{background-color:var(--color-bg)}.hover\:bg-bg-soft:hover{background-color:var(--color-bg-soft)}.hover\:bg-bg-soft\/60:hover{background-color:#f7f5ec99}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bg-soft\/60:hover{background-color:color-mix(in oklab,var(--color-bg-soft) 60%,transparent)}}.hover\:bg-bg\/50:hover{background-color:#fafaf680}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bg\/50:hover{background-color:color-mix(in oklab,var(--color-bg) 50%,transparent)}}.hover\:bg-bg\/60:hover{background-color:#fafaf699}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bg\/60:hover{background-color:color-mix(in oklab,var(--color-bg) 60%,transparent)}}.hover\:bg-card:hover{background-color:var(--color-card)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.hover\:bg-red-500\/40:hover{background-color:#fb2c3666}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/40:hover{background-color:color-mix(in oklab,var(--color-red-500) 40%,transparent)}}.hover\:bg-red-500\/50:hover{background-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/50:hover{background-color:color-mix(in oklab,var(--color-red-500) 50%,transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-accent-hover:hover{color:var(--color-accent-hover)}.hover\:text-danger:hover{color:var(--color-danger)}.hover\:text-danger-hover:hover{color:var(--color-danger-hover)}.hover\:text-fg:hover{color:var(--color-fg)}.hover\:text-fg-muted:hover{color:var(--color-fg-muted)}.hover\:text-red-100:hover{color:var(--color-red-100)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-sun-ink:hover{color:var(--color-sun-ink)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow:0 2px 8px var(--tw-shadow-color,#24422e14), 0 1px 2px var(--tw-shadow-color,#24422e0d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:border-accent-light:focus{border-color:var(--color-accent-light)}.focus\:border-border:focus{border-color:var(--color-border)}.focus\:border-red-400:focus{border-color:var(--color-red-400)}.focus\:bg-bg\/60:focus{background-color:#fafaf699}@supports (color:color-mix(in lab,red,red)){.focus\:bg-bg\/60:focus{background-color:color-mix(in oklab,var(--color-bg) 60%,transparent)}}.focus\:text-fg:focus{color:var(--color-fg)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-accent:focus-visible{outline-color:var(--color-accent)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media(prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}@media(hover:hover){.motion-reduce\:group-hover\:scale-100:is(:where(.group):hover *),.motion-reduce\:hover\:scale-100:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}@media(min-width:40rem){.sm\:absolute{position:absolute}.sm\:top-full{top:100%}.sm\:right-auto{right:auto}.sm\:bottom-auto{bottom:auto}.sm\:mt-1{margin-top:var(--spacing)}.sm\:inline{display:inline}.sm\:max-h-80{max-height:calc(var(--spacing) * 80)}.sm\:w-56{width:calc(var(--spacing) * 56)}.sm\:w-60{width:calc(var(--spacing) * 60)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:rounded-b-\[var\(--radius-2xl\)\]{border-bottom-right-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl)}.sm\:bg-transparent{background-color:#0000}.sm\:px-10{padding-inline:calc(var(--spacing) * 10)}.sm\:pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}}@media(min-width:48rem){.md\:sticky{position:sticky}.md\:top-6{top:calc(var(--spacing) * 6)}.md\:-mx-8{margin-inline:calc(var(--spacing) * -8)}.md\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.md\:hidden{display:none}.md\:min-h-0{min-height:0}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:self-auto{align-self:auto}.md\:self-start{align-self:flex-start}.md\:p-5{padding:calc(var(--spacing) * 5)}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:p-8{padding:calc(var(--spacing) * 8)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:px-10{padding-inline:calc(var(--spacing) * 10)}.md\:py-10{padding-block:calc(var(--spacing) * 10)}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media(min-width:64rem){.lg\:sticky{position:sticky}.lg\:top-24{top:calc(var(--spacing) * 24)}.lg\:right-6{right:calc(var(--spacing) * 6)}.lg\:bottom-0{bottom:0}.lg\:bottom-6{bottom:calc(var(--spacing) * 6)}.lg\:mx-auto{margin-inline:auto}.lg\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-\[60dvh\]{height:60dvh}.lg\:h-auto{height:auto}.lg\:max-h-\[50vh\]{max-height:50vh}.lg\:max-h-\[55vh\]{max-height:55vh}.lg\:min-h-0{min-height:0}.lg\:w-full{width:100%}.lg\:max-w-xl{max-width:var(--container-xl)}.lg\:flex-none{flex:none}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1fr\)_18rem\]{grid-template-columns:minmax(0,1fr) 18rem}.lg\:flex-col-reverse{flex-direction:column-reverse}.lg\:self-end{align-self:flex-end}.lg\:self-start{align-self:flex-start}.lg\:rounded-\[var\(--radius-2xl\)\]{border-radius:var(--radius-2xl)}.lg\:border{border-style:var(--tw-border-style);border-width:1px}.lg\:border-border{border-color:var(--color-border)}.lg\:bg-transparent{background-color:#0000}.lg\:p-0{padding:0}.lg\:px-5{padding-inline:calc(var(--spacing) * 5)}.lg\:px-6{padding-inline:calc(var(--spacing) * 6)}.lg\:py-3{padding-block:calc(var(--spacing) * 3)}.lg\:pb-0{padding-bottom:0}.lg\:pb-8{padding-bottom:calc(var(--spacing) * 8)}.lg\:pb-\[env\(safe-area-inset-bottom\)\]{padding-bottom:env(safe-area-inset-bottom)}.lg\:shadow-lift{--tw-shadow:0 24px 60px -30px var(--tw-shadow-color,oklch(40% .05 152/.28));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.lg\:backdrop-blur-none{--tw-backdrop-blur: ;-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}:root[data-text-size=larger]{--font-size-prose:22px;--font-size-editor:18px;font-size:18px}:root[data-text-size=largest]{--font-size-prose:26px;--font-size-editor:22px;font-size:22px}:root{--_d-bg:#161d18;--_d-bg-soft:#1c241d;--_d-fg:#e7ece5;--_d-fg-muted:#a7b3a7;--_d-fg-dim:#71806f;--_d-accent:#ec7a5c;--_d-accent-hover:#f08d70;--_d-accent-light:#c95f40;--_d-sky:#7fb3cc;--_d-grass:#6fbf8a;--_d-grass-strong:#4f9d6b;--_d-grass-soft:#1e3527;--_d-grass-ink:#9fd9b3;--_d-sun:#f4c020;--_d-sun-soft:#38300f;--_d-sun-ink:#f0d68a;--_d-sage:#8fb096;--_d-clay:#c98f6c;--_d-ochre:#d9a53d;--_d-plum:#b48fc4;--_d-shadow-ink:#000}@supports (color:color-mix(in lab,red,red)){:root{--_d-shadow-ink:color-mix(in srgb, #000 90%, var(--_d-accent) 10%)}}:root{--_d-shadow-soft:0 10px 30px var(--_d-shadow-ink)}@supports (color:color-mix(in lab,red,red)){:root{--_d-shadow-soft:0 10px 30px color-mix(in srgb, var(--_d-shadow-ink) 42%, transparent)}}:root{--_d-shadow-lift:0 18px 44px var(--_d-shadow-ink)}@supports (color:color-mix(in lab,red,red)){:root{--_d-shadow-lift:0 18px 44px color-mix(in srgb, var(--_d-shadow-ink) 52%, transparent)}}:root{--_d-border:#303b31;--_d-border-light:#283229;--_d-card:#1e271f;--_d-card-hover:#252f26;--_d-canvas-wash:var(--_d-grass)}@supports (color:color-mix(in lab,red,red)){:root{--_d-canvas-wash:color-mix(in srgb, var(--_d-grass) 5%, transparent)}}:root{--_d-canvas-wash-accent:var(--_d-accent)}@supports (color:color-mix(in lab,red,red)){:root{--_d-canvas-wash-accent:color-mix(in srgb, var(--_d-accent) 4%, transparent)}}:root{--_d-on-accent:#2a1710;--_d-coral-soft:#3a221b;--_d-coral-ink:#f2ac92;--_d-danger:#e8836b;--_d-danger-hover:#ef9982;--_d-warning:#fcd34d;--_d-shadow-sm:0 1px 2px var(--_d-shadow-ink)}@supports (color:color-mix(in lab,red,red)){:root{--_d-shadow-sm:0 1px 2px color-mix(in srgb, var(--_d-shadow-ink) 30%, transparent)}}:root{--_d-shadow-md:0 2px 8px var(--_d-shadow-ink), 0 1px 2px var(--_d-shadow-ink)}@supports (color:color-mix(in lab,red,red)){:root{--_d-shadow-md:0 2px 8px color-mix(in srgb, var(--_d-shadow-ink) 40%, transparent), 0 1px 2px color-mix(in srgb, var(--_d-shadow-ink) 25%, transparent)}}:root{--_d-shadow-lg:0 8px 24px var(--_d-shadow-ink), 0 2px 6px var(--_d-shadow-ink)}@supports (color:color-mix(in lab,red,red)){:root{--_d-shadow-lg:0 8px 24px color-mix(in srgb, var(--_d-shadow-ink) 50%, transparent), 0 2px 6px color-mix(in srgb, var(--_d-shadow-ink) 30%, transparent)}}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--color-bg:var(--_d-bg);--color-bg-soft:var(--_d-bg-soft);--color-fg:var(--_d-fg);--color-fg-muted:var(--_d-fg-muted);--color-fg-dim:var(--_d-fg-dim);--color-accent:var(--_d-accent);--color-accent-hover:var(--_d-accent-hover);--color-accent-light:var(--_d-accent-light);--color-sky:var(--_d-sky);--color-grass:var(--_d-grass);--color-grass-strong:var(--_d-grass-strong);--color-grass-soft:var(--_d-grass-soft);--color-grass-ink:var(--_d-grass-ink);--color-sun:var(--_d-sun);--color-sun-soft:var(--_d-sun-soft);--color-sun-ink:var(--_d-sun-ink);--color-sage:var(--_d-sage);--color-clay:var(--_d-clay);--color-ochre:var(--_d-ochre);--color-plum:var(--_d-plum);--color-border:var(--_d-border);--color-border-light:var(--_d-border-light);--color-card:var(--_d-card);--color-card-hover:var(--_d-card-hover);--color-on-accent:var(--_d-on-accent);--color-coral-soft:var(--_d-coral-soft);--color-coral-ink:var(--_d-coral-ink);--color-danger:var(--_d-danger);--color-danger-hover:var(--_d-danger-hover);--color-warning:var(--_d-warning);--shadow-sm:var(--_d-shadow-sm);--shadow-md:var(--_d-shadow-md);--shadow-lg:var(--_d-shadow-lg);--shadow-soft:var(--_d-shadow-soft);--shadow-lift:var(--_d-shadow-lift);--canvas-wash:var(--_d-canvas-wash);--canvas-wash-accent:var(--_d-canvas-wash-accent)}}:root[data-theme=dark]{--color-bg:var(--_d-bg);--color-bg-soft:var(--_d-bg-soft);--color-fg:var(--_d-fg);--color-fg-muted:var(--_d-fg-muted);--color-fg-dim:var(--_d-fg-dim);--color-accent:var(--_d-accent);--color-accent-hover:var(--_d-accent-hover);--color-accent-light:var(--_d-accent-light);--color-sky:var(--_d-sky);--color-grass:var(--_d-grass);--color-grass-strong:var(--_d-grass-strong);--color-grass-soft:var(--_d-grass-soft);--color-grass-ink:var(--_d-grass-ink);--color-sun:var(--_d-sun);--color-sun-soft:var(--_d-sun-soft);--color-sun-ink:var(--_d-sun-ink);--color-sage:var(--_d-sage);--color-clay:var(--_d-clay);--color-ochre:var(--_d-ochre);--color-plum:var(--_d-plum);--color-border:var(--_d-border);--color-border-light:var(--_d-border-light);--color-card:var(--_d-card);--color-card-hover:var(--_d-card-hover);--color-on-accent:var(--_d-on-accent);--color-coral-soft:var(--_d-coral-soft);--color-coral-ink:var(--_d-coral-ink);--color-danger:var(--_d-danger);--color-danger-hover:var(--_d-danger-hover);--color-warning:var(--_d-warning);--shadow-sm:var(--_d-shadow-sm);--shadow-md:var(--_d-shadow-md);--shadow-lg:var(--_d-shadow-lg);--shadow-soft:var(--_d-shadow-soft);--shadow-lift:var(--_d-shadow-lift);--canvas-wash:var(--_d-canvas-wash);--canvas-wash-accent:var(--_d-canvas-wash-accent)}html,body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.65}::selection{background-color:#bf4a2a3d}@supports (color:color-mix(in lab,red,red)){::selection{background-color:color-mix(in srgb,var(--color-accent) 24%,transparent)}}body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom)}.prose-note{color:var(--color-fg);font-size:var(--font-size-prose);max-width:var(--w-prose);line-height:1.78}.prose-note h1,.prose-note h2,.prose-note h3,.prose-note h4{font-family:var(--font-serif);color:var(--color-fg);letter-spacing:-.015em;margin-top:1.75em;margin-bottom:.5em;line-height:1.25}.prose-note h1{font-size:var(--text-3xl)}.prose-note h2{font-size:var(--text-2xl)}.prose-note h3{font-size:var(--text-xl)}.prose-note h4{font-size:var(--text-lg)}.prose-note p{text-wrap:pretty;margin:.75em 0}.prose-note p:has(br){line-height:var(--lh-prose-tight)}.external-link:after{content:"↗" / "";vertical-align:text-top;white-space:nowrap;margin-left:.15em;font-size:.75em;display:inline-block}.prose-note ul,.prose-note ol{margin:.75em 0;padding-left:1.5rem}.prose-note ul{list-style:outside}.prose-note ol{list-style:decimal}.prose-note li,.prose-note li>p{margin:.25em 0}.prose-note blockquote{border-left:3px solid var(--color-border);color:var(--color-fg-muted);margin:1em 0;padding-left:1rem;font-style:italic}.prose-note code{font-family:var(--font-mono);background:var(--color-bg-soft);border-radius:var(--radius-xs);padding:.1em .35em;font-size:.875em}.prose-note pre{background:var(--color-bg-soft);border:1px solid var(--color-border);border-radius:var(--radius-md);margin:1em 0;padding:.9rem 1rem;font-size:.875em;line-height:1.5;overflow-x:auto}.prose-note pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.prose-note table{border-collapse:collapse;width:max-content;max-width:100%;margin:1em 0;font-size:.9em;display:block;overflow-x:auto}.prose-note th,.prose-note td{border:1px solid var(--color-border);text-align:left;padding:.5rem .75rem}.prose-note th{background:var(--color-bg-soft);font-weight:500}.prose-note hr{border:0;border-top:1px solid var(--color-border);margin:1.5em 0}.prose-note img{border-radius:var(--radius-md);max-width:100%;height:auto}.prose-note input[type=checkbox]{margin-right:.4em}.prose-note li.task-list-item{list-style:none}.csv-scroll{overflow-x:auto}.csv-warning{border:1px solid var(--color-warning);background:var(--color-warning-soft);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--color-warning);margin-bottom:.5rem;padding:.5rem .75rem}.vault-media-error{font-size:var(--text-xs);color:var(--color-danger)}.vault-media-loading{border-radius:var(--radius-md);background:#d6e2d666;width:10rem;height:6rem;display:inline-block}@supports (color:color-mix(in lab,red,red)){.vault-media-loading{background:color-mix(in srgb,var(--color-border) 40%,transparent)}}.vault-media-loading{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes pulse{50%{opacity:.5}}@media(prefers-reduced-motion:reduce){.vault-media-loading,.skeleton{animation:none}}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .prose-note code,:root:not([data-theme=light]) .prose-note pre{background:var(--color-bg-soft);border-color:var(--color-border)}:root:not([data-theme=light]) .prose-note .hljs{color:var(--color-fg);background:var(--color-bg-soft)!important}}:root[data-theme=dark] .prose-note code,:root[data-theme=dark] .prose-note pre{background:var(--color-bg-soft);border-color:var(--color-border)}:root[data-theme=dark] .prose-note .hljs{color:var(--color-fg);background:var(--color-bg-soft)!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-content{syntax:"*";inherits:false;initial-value:""}