@openparachute/app 0.22.12 → 0.22.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +123 -75
  2. package/dist/.parachute/info +1 -1
  3. package/dist/assets/{Account-CdkJMAPi.js → Account-CRPq4eky.js} +1 -1
  4. package/dist/assets/Activity-BLLN2kgu.js +1 -0
  5. package/dist/assets/{AddVault-D1K_D6Y0.js → AddVault-BR5gZWT3.js} +1 -1
  6. package/dist/assets/{AddVaultChooser-DCs3tJPw.js → AddVaultChooser-Bq8pAkVc.js} +1 -1
  7. package/dist/assets/{AddVaultCreate-B3yMKaiU.js → AddVaultCreate-m_9BeV_Q.js} +1 -1
  8. package/dist/assets/Calendar-65Irth8Y.js +1 -0
  9. package/dist/assets/{CheckEmail-taTm_0KJ.js → CheckEmail-encZZOxl.js} +1 -1
  10. package/dist/assets/{ConnectAI-CsKHus0o.js → ConnectAI-B7gqvDkQ.js} +1 -1
  11. package/dist/assets/DayView-DsQr2XvT.js +1 -0
  12. package/dist/assets/{Export-pVqCJjpd.js → Export-BRO5DUzT.js} +1 -1
  13. package/dist/assets/{Import-DDHJzkGw.js → Import-_1c63gXI.js} +1 -1
  14. package/dist/assets/NoteEditor-C1s0DRwJ.js +1 -0
  15. package/dist/assets/NoteNew-D2gDWKnW.js +8 -0
  16. package/dist/assets/{NoteRenderer-BzRFYOTP.js → NoteRenderer-BwgvmHZD.js} +1 -1
  17. package/dist/assets/{NoteView-GsOFyCey.js → NoteView-BtXvo-Ke.js} +2 -2
  18. package/dist/assets/{OAuthCallback-BoeL9Unb.js → OAuthCallback-Dne6nN7G.js} +1 -1
  19. package/dist/assets/{PinArchiveButtons-DBJ9XC87.js → PinArchiveButtons-BaeSYCvb.js} +1 -1
  20. package/dist/assets/{Settings-C14K5QIf.js → Settings-C5Q_6IiY.js} +1 -1
  21. package/dist/assets/{TagPage-Dth86gwn.js → TagPage-Bz58IORf.js} +1 -1
  22. package/dist/assets/{TagSchemaEditor-DrsKXHjg.js → TagSchemaEditor-YXqxcc95.js} +1 -1
  23. package/dist/assets/{Tags-BAMUSxtu.js → Tags-DIhbbif6.js} +1 -1
  24. package/dist/assets/{VaultGraph-CUiB0dxf.js → VaultGraph-OyvE7-1G.js} +2 -2
  25. package/dist/assets/{Vaults-YV2Gt5rq.js → Vaults-DZTvLJL0.js} +1 -1
  26. package/dist/assets/{ViewNew--9bYKDKm.js → ViewNew-CEWGH98c.js} +1 -1
  27. package/dist/assets/ViewSurface-BVVt4eto.js +1 -0
  28. package/dist/assets/{Welcome-CG-4UtgI.js → Welcome-DcaF7cVO.js} +1 -1
  29. package/dist/assets/{WizardShell-BPt_HrH0.js → WizardShell-BpDtpsOX.js} +1 -1
  30. package/dist/assets/{attachment-upload-DbV0j1WH.js → attachment-upload-BqMcsBiB.js} +1 -1
  31. package/dist/assets/{history-Dwz434D-.js → history-v1ErfO2u.js} +1 -1
  32. package/dist/assets/index-BBWRhmyM.css +1 -0
  33. package/dist/assets/index-C2wr_d3O.js +66 -0
  34. package/dist/assets/{provenance-O7CbiScI.js → provenance-C8B5Q0ir.js} +1 -1
  35. package/dist/assets/{react-force-graph-2d-CQUSRInM.js → react-force-graph-2d-BtLtJaOD.js} +1 -1
  36. package/dist/assets/{transcribe-default-DIcTpM6A.js → transcribe-default-BCVfDb3s.js} +1 -1
  37. package/dist/assets/{useAttachmentUploader-t5hlKCgS.js → useAttachmentUploader-BmtZQjNW.js} +2 -2
  38. package/dist/index.html +2 -2
  39. package/dist/sw.js +1 -1
  40. package/meta.json +1 -1
  41. package/package.json +1 -1
  42. package/dist/assets/Activity-DqsfIB-3.js +0 -1
  43. package/dist/assets/Calendar-DcVL4_q0.js +0 -1
  44. package/dist/assets/DayView-BTm_sLsN.js +0 -1
  45. package/dist/assets/NoteEditor-h3CHfMT1.js +0 -1
  46. package/dist/assets/NoteNew-DUVNgXN7.js +0 -8
  47. package/dist/assets/ViewSurface-BhLi1m3l.js +0 -1
  48. package/dist/assets/index-B9w7QdRL.css +0 -1
  49. package/dist/assets/index-CpyANXLa.js +0 -66
package/dist/index.html CHANGED
@@ -22,8 +22,8 @@
22
22
  } catch (e) {}
23
23
  })();
24
24
  </script>
25
- <script type="module" crossorigin src="/assets/index-CpyANXLa.js"></script>
26
- <link rel="stylesheet" crossorigin href="/assets/index-B9w7QdRL.css">
25
+ <script type="module" crossorigin src="/assets/index-C2wr_d3O.js"></script>
26
+ <link rel="stylesheet" crossorigin href="/assets/index-BBWRhmyM.css">
27
27
  <link rel="manifest" href="/manifest.webmanifest"></head>
28
28
  <body>
29
29
  <div id="root"></div>
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:"f01524dda24d66eed941b5a70fbbe641"},{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-t5hlKCgS.js",revision:null},{url:"assets/url-QSQwrjSV.js",revision:null},{url:"assets/types-BaJkUfo6.js",revision:null},{url:"assets/transcribe-default-DIcTpM6A.js",revision:null},{url:"assets/react-force-graph-2d-CQUSRInM.js",revision:null},{url:"assets/provenance-O7CbiScI.js",revision:null},{url:"assets/index-CpyANXLa.js",revision:null},{url:"assets/index-B9w7QdRL.css",revision:null},{url:"assets/history-Dwz434D-.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-DbV0j1WH.js",revision:null},{url:"assets/WizardShell-BPt_HrH0.js",revision:null},{url:"assets/Welcome-CG-4UtgI.js",revision:null},{url:"assets/ViewSurface-BhLi1m3l.js",revision:null},{url:"assets/ViewNew--9bYKDKm.js",revision:null},{url:"assets/Vaults-YV2Gt5rq.js",revision:null},{url:"assets/VaultGraph-CUiB0dxf.js",revision:null},{url:"assets/Tags-BAMUSxtu.js",revision:null},{url:"assets/TagSchemaEditor-DrsKXHjg.js",revision:null},{url:"assets/TagPage-Dth86gwn.js",revision:null},{url:"assets/Settings-C14K5QIf.js",revision:null},{url:"assets/PinArchiveButtons-DBJ9XC87.js",revision:null},{url:"assets/OAuthCallback-BoeL9Unb.js",revision:null},{url:"assets/NoteView-GsOFyCey.js",revision:null},{url:"assets/NoteRenderer-BzRFYOTP.js",revision:null},{url:"assets/NoteNew-DUVNgXN7.js",revision:null},{url:"assets/NoteEditor-h3CHfMT1.js",revision:null},{url:"assets/Import-DDHJzkGw.js",revision:null},{url:"assets/Export-pVqCJjpd.js",revision:null},{url:"assets/DayView-BTm_sLsN.js",revision:null},{url:"assets/ConnectAI-CsKHus0o.js",revision:null},{url:"assets/CheckEmail-taTm_0KJ.js",revision:null},{url:"assets/Calendar-DcVL4_q0.js",revision:null},{url:"assets/AddVaultCreate-B3yMKaiU.js",revision:null},{url:"assets/AddVaultChooser-DCs3tJPw.js",revision:null},{url:"assets/AddVault-D1K_D6Y0.js",revision:null},{url:"assets/Activity-DqsfIB-3.js",revision:null},{url:"assets/Account-CdkJMAPi.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:"90f7177d5e00fcbcef8d31541c639c74"},{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-BmtZQjNW.js",revision:null},{url:"assets/url-QSQwrjSV.js",revision:null},{url:"assets/types-BaJkUfo6.js",revision:null},{url:"assets/transcribe-default-BCVfDb3s.js",revision:null},{url:"assets/react-force-graph-2d-BtLtJaOD.js",revision:null},{url:"assets/provenance-C8B5Q0ir.js",revision:null},{url:"assets/index-C2wr_d3O.js",revision:null},{url:"assets/index-BBWRhmyM.css",revision:null},{url:"assets/history-v1ErfO2u.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-BqMcsBiB.js",revision:null},{url:"assets/WizardShell-BpDtpsOX.js",revision:null},{url:"assets/Welcome-DcaF7cVO.js",revision:null},{url:"assets/ViewSurface-BVVt4eto.js",revision:null},{url:"assets/ViewNew-CEWGH98c.js",revision:null},{url:"assets/Vaults-DZTvLJL0.js",revision:null},{url:"assets/VaultGraph-OyvE7-1G.js",revision:null},{url:"assets/Tags-DIhbbif6.js",revision:null},{url:"assets/TagSchemaEditor-YXqxcc95.js",revision:null},{url:"assets/TagPage-Bz58IORf.js",revision:null},{url:"assets/Settings-C5Q_6IiY.js",revision:null},{url:"assets/PinArchiveButtons-BaeSYCvb.js",revision:null},{url:"assets/OAuthCallback-Dne6nN7G.js",revision:null},{url:"assets/NoteView-BtXvo-Ke.js",revision:null},{url:"assets/NoteRenderer-BwgvmHZD.js",revision:null},{url:"assets/NoteNew-D2gDWKnW.js",revision:null},{url:"assets/NoteEditor-C1s0DRwJ.js",revision:null},{url:"assets/Import-_1c63gXI.js",revision:null},{url:"assets/Export-BRO5DUzT.js",revision:null},{url:"assets/DayView-DsQr2XvT.js",revision:null},{url:"assets/ConnectAI-B7gqvDkQ.js",revision:null},{url:"assets/CheckEmail-encZZOxl.js",revision:null},{url:"assets/Calendar-65Irth8Y.js",revision:null},{url:"assets/AddVaultCreate-m_9BeV_Q.js",revision:null},{url:"assets/AddVaultChooser-Bq8pAkVc.js",revision:null},{url:"assets/AddVault-BR5gZWT3.js",revision:null},{url:"assets/Activity-BLLN2kgu.js",revision:null},{url:"assets/Account-CRPq4eky.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/meta.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "parachute",
4
4
  "displayName": "Parachute",
5
5
  "tagline": "The Parachute app — your parachute's front door.",
6
- "version": "0.22.12",
6
+ "version": "0.22.13",
7
7
  "path": "/surface/parachute",
8
8
  "iconUrl": "icon.svg",
9
9
  "scopes_required": ["vault:*:read", "vault:*:write"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openparachute/app",
3
- "version": "0.22.12",
3
+ "version": "0.22.13",
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 +0,0 @@
1
- import{a as f,t as y,v as g,w as j,x as N,r as u,j as e,N as b,D as v,y as w,E as D,L as m,z as E,A as k,V as A}from"./index-CpyANXLa.js";const x=1440*60*1e3,S=5e3;function T(a,n=30,s=new Date){const i=s.getTime()-n*x,r=[];for(const t of a){const o=t.path??t.id,d=Date.parse(t.createdAt);if(Number.isFinite(d)&&d>=i&&r.push({id:`${t.id}:created`,noteId:t.id,noteName:o,kind:"created",at:t.createdAt,preview:t.preview,tags:t.tags}),t.updatedAt){const l=Date.parse(t.updatedAt);Number.isFinite(l)&&l>=i&&Number.isFinite(d)&&l-d>S&&r.push({id:`${t.id}:updated`,noteId:t.id,noteName:o,kind:"updated",at:t.updatedAt,preview:t.preview,tags:t.tags})}}return r.sort((t,o)=>Date.parse(o.at)-Date.parse(t.at)),r}const _=["today","yesterday","thisWeek","older"],B={today:"Today",yesterday:"Yesterday",thisWeek:"This week",older:"Older"};function I(a,n=new Date){const s=Date.parse(a);if(!Number.isFinite(s))return null;const i=p(n),r=p(new Date(s)),t=Math.round((i.getTime()-r.getTime())/x);return t<0||t===0?"today":t===1?"yesterday":t<7?"thisWeek":"older"}function p(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())}function C(a,n=new Date){const s={today:[],yesterday:[],thisWeek:[],older:[]};for(const i of a){const r=I(i.at,n);r&&s[r].push(i)}return s}const h=50;function O(){const a=f(c=>c.getActiveVault()),n=y(g(),-29),s=j({field:"updated_at",from:N(n),limit:v}),[i,r]=u.useState(h),t=u.useMemo(()=>s.data?T(s.data):[],[s.data]),o=u.useMemo(()=>t.slice(0,i),[t,i]),d=u.useMemo(()=>C(o),[o]),l=t.length-o.length;return a?e.jsxs("div",{className:"page-prose",children:[e.jsxs("header",{className:"mb-8",children:[e.jsx("p",{className:"eyebrow mb-1",children:"Activity"}),e.jsx("h1",{className:"page-title",children:"Recent changes"}),e.jsx("p",{className:"mt-2 text-fg-muted",children:"Last 30 days, newest first. Deletions aren't tracked yet."})]}),s.isPending?e.jsx(V,{}):s.isError?e.jsx(F,{error:s.error}):t.length===0?e.jsx(R,{}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"space-y-8",children:_.map(c=>d[c].length>0?e.jsx(L,{title:B[c],events:d[c]},c):null)}),l>0?e.jsx("div",{className:"mt-8 flex justify-center",children:e.jsxs("button",{type:"button",onClick:()=>r(c=>c+h),className:"btn btn-secondary btn-touch",children:["Load more (",l," remaining)"]})}):null]})]}):e.jsx(b,{to:"/",replace:!0})}function L({title:a,events:n}){return e.jsxs("section",{children:[e.jsxs("h2",{className:"eyebrow mb-3",children:[a," (",n.length,")"]}),e.jsx("ol",{className:"card shadow-soft divide-y divide-border rounded-xl",children:n.map(s=>e.jsx("li",{children:e.jsxs(m,{to:`/n/${encodeURIComponent(s.noteId)}`,className:"focus-ring block px-5 py-4 transition-colors hover:bg-bg-soft",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-4",children:[e.jsxs("div",{className:"flex min-w-0 items-baseline gap-2",children:[e.jsx(M,{kind:s.kind}),e.jsx("span",{className:"truncate font-mono text-sm text-fg",children:s.noteName})]}),e.jsx("span",{className:"shrink-0 text-xs text-fg-dim",children:k(s.at)})]}),s.preview?e.jsx("p",{className:"mt-1 truncate text-sm text-fg-muted",children:s.preview}):null,s.tags&&s.tags.length>0?e.jsx("div",{className:"mt-2 flex flex-wrap gap-1.5",children:s.tags.map(i=>e.jsxs("span",{className:"chip chip-tag max-w-full break-all",children:["#",i]},i))}):null]})},s.id))})]})}function M({kind:a}){return a==="created"?e.jsx("span",{className:"chip chip-tag shrink-0",children:"Created"}):e.jsx("span",{className:"chip shrink-0",children:"Edited"})}function R(){return e.jsx(E,{title:"No activity in the last 30 days.",action:e.jsx(m,{to:"/new",className:"btn btn-primary",children:"New note"})})}function V(){return e.jsx("div",{className:"space-y-3","aria-busy":"true",children:[0,1,2,3,4].map(a=>e.jsx(w,{className:"h-16 rounded-xl"},a))})}function F({error:a}){const n=a instanceof A;return e.jsx(D,{title:n?"Session expired":"Could not load activity",message:a.message,action:n?e.jsx(m,{to:"/add",className:"btn btn-primary",children:"Reconnect vault"}):void 0})}export{O as Activity};
@@ -1 +0,0 @@
1
- import{a as S,C as k,T as j,U as N,v as A,r as u,W as T,w as _,X as K,j as e,N as V,Y as v,Z as i,_ as C,L as c,D as P,V as Y}from"./index-CpyANXLa.js";const I=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],g=5;function W(){const s=S(t=>t.getActiveVault()),[n]=k(),m=n.get("month"),r=j(m)??j(N()),x=A(),d=u.useMemo(()=>T(r.year,r.month),[r.year,r.month]),$=u.useMemo(()=>{const t=d[0],a=d[d.length-1];return{from:t.toISOString(),to:new Date(a.getFullYear(),a.getMonth(),a.getDate()+1).toISOString()}},[d]),o=_({field:"created_at",...$,limit:P}),M=u.useMemo(()=>{const t=new Map;if(!o.data)return t;for(const a of o.data){const l=K(a.createdAt);l&&t.set(l,(t.get(l)??0)+1)}return t},[o.data]);if(!s)return e.jsx(V,{to:"/",replace:!0});const p=v(r.year,r.month,-1),b=v(r.year,r.month,1),f=`${p.year}-${i(p.month)}`,y=`${b.year}-${i(b.month)}`,D=N(),w=`${r.year}-${i(r.month)}`===D;return e.jsxs("div",{className:"mx-auto max-w-4xl px-4 py-6 md:px-6 md:py-10",children:[e.jsxs("header",{className:"mb-6 flex flex-wrap items-baseline justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-xs uppercase tracking-wider text-fg-dim",children:"Calendar"}),e.jsx("h1",{className:"font-serif text-3xl tracking-tight",children:C(r.year,r.month)})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[e.jsxs(c,{to:`/calendar?month=${f}`,className:"rounded-lg border border-border bg-card px-3 py-1.5 text-fg-muted hover:text-accent","aria-label":"Previous month",children:["← ",f]}),w?null:e.jsx(c,{to:"/calendar",className:"rounded-lg border border-border bg-card px-3 py-1.5 text-fg-muted hover:text-accent",children:"This month"}),e.jsxs(c,{to:`/calendar?month=${y}`,className:"rounded-lg border border-border bg-card px-3 py-1.5 text-fg-muted hover:text-accent","aria-label":"Next month",children:[y," →"]}),e.jsx(c,{to:`/today?date=${x}`,className:"rounded-lg border border-border bg-card px-3 py-1.5 text-fg-muted hover:text-accent",children:"Today"})]})]}),o.isError?e.jsx(L,{error:o.error}):e.jsxs("div",{className:"rounded-md border border-border bg-card","aria-busy":o.isPending,children:[e.jsx("div",{className:"grid grid-cols-7 border-b border-border text-xs uppercase tracking-wider text-fg-dim",children:I.map(t=>e.jsx("div",{className:"px-2 py-2 text-center",children:t},t))}),e.jsx("div",{className:"grid grid-cols-7",children:d.map(t=>{const a=`${t.getFullYear()}-${i(t.getMonth()+1)}-${i(t.getDate())}`,l=t.getMonth()+1===r.month,h=M.get(a)??0,E=a===x;return e.jsxs(c,{to:`/today?date=${a}`,className:`flex min-h-20 flex-col border-b border-r border-border p-1.5 text-xs hover:bg-bg/60 focus:bg-bg/60 focus:outline-none ${l?"":"opacity-40"}`,"aria-label":`${a} — ${h} notes`,children:[e.jsx("span",{className:`mb-1 inline-flex h-6 w-6 items-center justify-center rounded-full tabular-nums ${E?"bg-accent text-(--color-on-accent)":"text-fg"}`,children:t.getDate()}),h>0?e.jsx(F,{count:h}):e.jsx("span",{className:"sr-only",children:"no notes"})]},a)})})]}),e.jsx("p",{className:"mt-3 text-xs text-fg-dim",children:"Each dot is a note created on that day. Click any day to open /today."})]})}function F({count:s}){const n=Math.min(s,g),m=s>g?s-g:0;return e.jsxs("span",{className:"flex flex-wrap items-center gap-0.5",children:[Array.from({length:n}).map((r,x)=>e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-accent","aria-hidden":"true"},x)),m>0?e.jsxs("span",{className:"ml-0.5 text-[10px] text-fg-dim",children:["+",m]}):null]})}function L({error:s}){const n=s instanceof Y;return e.jsxs("div",{className:"rounded-md border border-red-500/30 bg-red-500/5 p-6",children:[e.jsx("p",{className:"mb-2 font-medium text-red-400",children:n?"Session expired":"Could not load notes"}),e.jsx("p",{className:"mb-4 text-sm text-fg-muted",children:s.message}),n?e.jsx(c,{to:"/add",className:"inline-block rounded-lg bg-accent px-4 py-2 text-sm font-medium text-(--color-on-accent) hover:bg-accent-hover",children:"Reconnect vault"}):null]})}export{W as Calendar};
@@ -1 +0,0 @@
1
- import{a as R,C as P,j as e,N as v,v as B,a0 as C,x as w,t as y,w as E,D as k,r as S,X as D,L as o,a1 as $,a2 as I,y as K,E as _,z as M,a3 as O,a4 as U,a5 as z,a6 as F,V as H}from"./index-CpyANXLa.js";import{u as Q}from"./history-Dwz434D-.js";function Z(){const a=R(t=>t.getActiveVault()),[s]=P(),r=s.get("date");return a?r===null?e.jsx(v,{to:"/",replace:!0}):e.jsx(W,{dateParam:r}):e.jsx(v,{to:"/",replace:!0})}function W({dateParam:a}){const s=Q("/"),r=B(),t=a||r,n=C(t),j=w(t)??"",b=w(y(t,1))??"",d=E({field:"created_at",from:j,to:b,limit:k,enabled:!!n}),l=E({field:"updated_at",from:j,to:b,limit:k,enabled:!!n}),x=S.useMemo(()=>{if(!(!d.data||!l.data))return[...new Map([...d.data,...l.data].map(i=>[i.id,i])).values()]},[d.data,l.data]),T=d.isPending||l.isPending,h=d.error??l.error,c=S.useMemo(()=>{const i=[],p=[];if(!x||!n)return{created:i,edited:p};for(const m of x){const g=D(m.createdAt),L=D(m.updatedAt??m.createdAt);g===t&&i.push(m),L===t&&g!==t&&p.push(m)}return{created:i,edited:p}},[x,n,t]);if(!n)return e.jsxs("div",{className:"page-prose",children:[e.jsxs("p",{className:"text-sm text-danger",children:["Invalid date in URL: ",t]}),e.jsx(o,{to:"/",className:"text-sm text-accent hover:underline",children:"Back to today"})]});const u=t===r,N=y(t,-1),f=y(t,1),V=t.slice(0,7);return e.jsxs("div",{className:"page-prose",children:[e.jsx("nav",{className:"mb-6 text-sm text-fg-dim",children:e.jsx("button",{type:"button",onClick:s,className:"hover:text-accent",children:"← Back"})}),e.jsxs("header",{className:"mb-6 flex flex-wrap items-baseline justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"eyebrow",children:u?"Today":"On"}),e.jsx("h1",{className:"page-title",children:$(t)})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[e.jsxs(o,{to:`/today?date=${N}`,className:"btn btn-secondary btn-sm","aria-label":"Previous day",children:["← ",N]}),u?null:e.jsx(o,{to:"/",className:"btn btn-secondary btn-sm",children:"Today"}),e.jsxs(o,{to:`/today?date=${f}`,className:"btn btn-secondary btn-sm","aria-label":"Next day",children:[f," →"]}),e.jsx(o,{to:`/calendar?month=${V}`,className:"btn btn-secondary btn-sm",children:"Calendar"}),e.jsx(o,{to:"/new",className:"btn btn-primary btn-sm",children:"+ New note"})]})]}),T?e.jsx(Y,{}):h&&!x?e.jsx(q,{error:h}):c.created.length===0&&c.edited.length===0?e.jsx(X,{isToday:u,targetKey:t}):e.jsxs("div",{className:"space-y-8",children:[h?e.jsx(I,{}):null,c.created.length>0?e.jsx(A,{title:u?"Created today":`Created on ${t}`,notes:c.created}):null,c.edited.length>0?e.jsx(A,{title:u?"Edited today":`Edited on ${t}`,notes:c.edited}):null]})]})}function A({title:a,notes:s}){const r=R(n=>n.getActiveVault()),{roles:t}=O((r==null?void 0:r.id)??null);return e.jsxs("section",{children:[e.jsxs(U,{children:[a," (",s.length,")"]}),e.jsx(z,{children:s.map(n=>e.jsx(F,{note:n,pinnedTag:t.pinned,archivedTag:t.archived},n.id))})]})}function X({isToday:a,targetKey:s}){return e.jsx(M,{title:a?"Nothing yet today — start capturing.":`Nothing on ${s}.`,action:a?e.jsx(o,{to:"/new",className:"btn btn-primary",children:"New note"}):void 0})}function Y(){return e.jsx("div",{className:"space-y-3","aria-busy":"true",children:[0,1,2,3].map(a=>e.jsx(K,{className:"h-14 rounded-xl"},a))})}function q({error:a}){const s=a instanceof H;return e.jsx(_,{title:s?"Session expired":"Could not load notes",message:a.message,action:s?e.jsx(o,{to:"/add",className:"btn btn-primary",children:"Reconnect vault"}):void 0})}export{Z as DayView};
@@ -1 +0,0 @@
1
- import{r as n,j as e,a8 as H,af as oe,V as I,a9 as le,ag as ce,a as K,ah as de,N as ue,L as $,E as me,z as fe,b as he,ai as q,aj as xe,ak as pe,al as ge,am as be,aa as ve,an as T,ao as je,ap as Ne,A as F,aq as we}from"./index-CpyANXLa.js";import{A as ye}from"./attachment-upload-DbV0j1WH.js";import{u as Se,C as ke,A as Ce,a as Ee}from"./useAttachmentUploader-t5hlKCgS.js";import{P as Re,D as Ae}from"./PinArchiveButtons-DBJ9XC87.js";import{b as De,N as Te}from"./NoteRenderer-BzRFYOTP.js";import{r as Pe}from"./editor-mode-D9fveTEx.js";const Ie=250;function $e({noteId:t,attachment:a}){const[r,l]=n.useState(!1),x=Le(a);return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",onClick:()=>l(!0),"aria-label":`Remove attachment ${x}`,className:"shrink-0 rounded border border-transparent px-1.5 py-0.5 text-fg-dim hover:border-red-500/40 hover:text-red-400",children:"✕"}),r?e.jsx(Fe,{noteId:t,attachment:a,label:x,onClose:()=>l(!1)}):null]})}function Fe({noteId:t,attachment:a,label:r,onClose:l}){const x=H(o=>o.push),i=oe(),[u,m]=n.useState(!1),[f,N]=n.useState(null),d=n.useRef(null);n.useEffect(()=>{const o=setTimeout(()=>m(!0),Ie);return()=>clearTimeout(o)},[]),n.useEffect(()=>{var o;(o=d.current)==null||o.focus()},[]),n.useEffect(()=>{const o=k=>{k.key==="Escape"&&l()};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[l]);const g=n.useCallback(()=>{!u||i.isPending||(N(null),i.mutate({noteId:t,attachmentId:a.id},{onSuccess:()=>{x(`Removed ${r}`,"success"),l()},onError:o=>{if(o instanceof I){N("Session expired. Reconnect to remove attachments.");return}if(o instanceof le){x(`Already removed ${r}`,"info"),l();return}N(o instanceof Error?o.message:"Remove failed")}}))},[u,a.id,r,i,t,l,x]);return e.jsx("dialog",{open:!0,"aria-labelledby":"confirm-remove-attachment-title",className:"fixed inset-0 z-40 m-0 flex h-full max-h-full w-full max-w-full items-center justify-center bg-black/60 p-4",onMouseDown:o=>{o.target===o.currentTarget&&l()},children:e.jsxs("div",{className:"w-full max-w-md rounded-2xl border border-border bg-card p-6 shadow-lift",children:[e.jsx("h2",{id:"confirm-remove-attachment-title",className:"mb-2 font-serif text-lg text-red-400",children:"Remove attachment?"}),e.jsxs("p",{className:"mb-3 text-sm text-fg-muted",children:[e.jsx("span",{className:"rounded bg-bg/60 px-1 py-0.5 font-mono text-xs text-fg",children:r})," ","will be detached from this note. If no other note references the file, it will also be deleted from storage. Markdown referencing it will show a broken link until you update it."]}),f?e.jsx("p",{role:"alert",className:"mb-3 text-sm text-red-400",children:f}):null,e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{ref:d,type:"button",onClick:l,className:"min-h-11 rounded-lg border border-border bg-card px-3 py-1.5 text-sm text-fg-muted hover:text-fg",children:"Cancel"}),e.jsx("button",{type:"button",onClick:g,disabled:!u||i.isPending,className:"btn btn-danger-solid btn-touch",children:i.isPending?"Removing…":"Remove"})]})]})})}function Le(t){if(t.filename)return t.filename;if(t.path){const a=t.path.split("/").pop();return a||t.path}return t.id}function Ge(){const{id:t}=ce(),a=K(l=>l.getActiveVault()),r=de(t);return a?e.jsxs("div",{className:"page",children:[e.jsx("nav",{className:"mb-6 text-sm text-fg-dim",children:e.jsx($,{to:t?`/n/${encodeURIComponent(t)}`:"/",className:"focus-ring hover:text-accent",children:"← Back to note"})}),r.isPending?e.jsx(Ve,{}):r.isError?e.jsx(_e,{error:r.error}):r.data?e.jsx(Be,{note:r.data}):e.jsx(Oe,{id:t??""})]}):e.jsx(ue,{to:"/",replace:!0})}function S(t){return{content:t.content??"",path:t.path??"",tags:[...t.tags??[]]}}function Be({note:t}){const a=he(),r=H(s=>s.push),l=q(s=>s.on),x=q(s=>s.setOn),i=n.useRef(K.getState().activeVaultId).current,u=n.useRef(Pe()).current,m=n.useMemo(()=>De(t),[t]),[f,N]=n.useState(()=>S(t)),[d,g]=n.useState(()=>S(t)),[o,k]=n.useState(()=>{if(!i)return null;const s=xe(i,t.id);return!s||pe(s.body,S(t))?null:s}),[Z,L]=n.useState(""),[B,C]=n.useState(null),[M,E]=n.useState(null),[U,V]=n.useState(!1),w=n.useRef(null);n.useEffect(()=>()=>{w.current!==null&&window.clearTimeout(w.current)},[]);const[R,G]=n.useState("edit"),j=ge(t.id),A=n.useRef(t),P=n.useRef(null),O=n.useRef(null),v=Se({noteId:t.id,onInsert:s=>{P.current?P.current.insertAtCursor(s):g(c=>({...c,content:`${c.content}${s}`}))},onLinked:()=>{r("Attachment added","success")},onError:s=>r(s,"error")});n.useEffect(()=>{A.current=t},[t]);const h=d.content!==f.content||d.path!==f.path||!ze(d.tags,f.tags);be(i,t.id,d,h);const y=v.uploads.some(s=>s.status==="uploading"||s.status==="linking"),D=n.useCallback(({navigateToView:s})=>{if(!h||j.isPending||y)return;const c={};d.content!==f.content&&(c.content=d.content),d.path!==f.path&&(c.path=d.path);const b=We(f.tags,d.tags);(b.add.length||b.remove.length)&&(c.tags=b);const W=A.current.updatedAt??A.current.createdAt;W&&(c.if_updated_at=W),E(null),C(null),j.mutate(c,{onSuccess:p=>{N(S(p)),g(S(p)),A.current=p,i&&T(i,t.id),s?a(`/n/${encodeURIComponent(p.id)}`,{replace:!0}):p.id!==t.id&&a(`/n/${encodeURIComponent(p.id)}/edit`,{replace:!0}),s||(V(!0),w.current!==null&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>V(!1),1500))},onError:p=>{p instanceof ve?C(p):p instanceof I?E("Session expired. Reconnect to save."):E(p instanceof Error?p.message:"Save failed")}})},[f,d,h,j,a,t.id,y,i]),Q=n.useCallback(()=>{o&&g(o.body),k(null)},[o]),X=n.useCallback(()=>{i&&T(i,t.id),k(null)},[i,t.id]),ee=n.useCallback(()=>D({navigateToView:!0}),[D]),te=n.useCallback(()=>D({navigateToView:!1}),[D]),se=n.useCallback(()=>{h&&confirm("Discard all edits and revert to last saved version?")&&(g(f),C(null),E(null))},[f,h]),_=n.useCallback(()=>{h&&!confirm("Discard unsaved changes?")||(i&&T(i,t.id),a(`/n/${encodeURIComponent(t.id)}`))},[h,a,t.id,i]);n.useEffect(()=>{if(!h)return;const s=c=>{c.preventDefault(),c.returnValue=""};return window.addEventListener("beforeunload",s),()=>window.removeEventListener("beforeunload",s)},[h]);const ne=d.path!==f.path,ae=s=>{const c=we(s);c&&(d.tags.includes(c)||(g(b=>({...b,tags:[...b.tags,c]})),L("")))},re=s=>{g(c=>({...c,tags:c.tags.filter(b=>b!==s)}))},ie=d.content,z=l?"h-[85dvh]":"h-[60dvh]";return e.jsxs("article",{children:[l?e.jsx("div",{className:"glass-panel enter-fade fixed top-4 left-4 z-30 rounded-full border border-border px-3 py-1.5 text-xs shadow-lift",style:{marginTop:"env(safe-area-inset-top)"},children:e.jsx(Y,{isDirty:h,justSaved:U,updatedAt:t.updatedAt})}):e.jsxs("header",{className:"card mb-6 p-5 shadow-soft md:p-6",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx("span",{className:"eyebrow",children:"Editing"}),e.jsx(Y,{isDirty:h,justSaved:U,updatedAt:t.updatedAt})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(Re,{note:t}),e.jsx(Ae,{note:t}),e.jsxs("button",{type:"button",onClick:()=>x(!0),className:"btn btn-ghost btn-touch",title:"Focus (⌘.)",children:[e.jsx(je,{width:16,height:16}),"Focus"]}),e.jsx("span",{className:"mx-1 h-5 w-px bg-border","aria-hidden":"true"}),e.jsx("button",{type:"button",onClick:se,disabled:!h||j.isPending,className:"btn btn-secondary btn-touch",children:"Revert"}),e.jsx("button",{type:"button",onClick:_,className:"btn btn-secondary btn-touch",children:"Cancel"}),e.jsx("button",{type:"button",onClick:ee,disabled:!h||j.isPending||y,className:"btn btn-primary btn-touch",title:y?"Waiting for upload…":"Save (⌘S)","aria-label":y?"Save — waiting for upload…":"Save",children:j.isPending?"Saving…":"Save"})]})]}),e.jsx("div",{className:"mt-4",children:e.jsx(Ne,{tags:d.tags,input:Z,onInputChange:L,onAdd:ae,onRemove:re})}),e.jsxs("div",{className:"mt-4 flex items-center gap-2 text-fg-dim",children:[e.jsx("span",{"aria-hidden":"true",className:"shrink-0 text-xs",children:"Path"}),e.jsx("input",{type:"text",value:d.path,onChange:s=>g(c=>({...c,path:s.target.value})),className:"focus-ring w-full min-w-0 truncate rounded border-0 bg-transparent font-mono text-xs text-fg-dim outline-none transition-colors hover:text-fg-muted focus:text-fg placeholder:text-fg-dim","aria-label":"Note path",placeholder:"(no path)",title:d.path||void 0})]}),ne?e.jsx("p",{className:"mt-1 text-xs text-accent",children:"Renaming moves the note — its id may change."}):null]}),o?e.jsxs("div",{role:"status","data-testid":"draft-offer",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:["You have an unsaved draft from ",F(o.savedAt),"."]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{type:"button",onClick:Q,className:"focus-ring font-medium text-accent hover:underline",children:"Restore"}),e.jsx("button",{type:"button",onClick:X,className:"focus-ring text-fg-dim hover:text-danger",children:"Discard"})]})]}):null,B?e.jsx(Ue,{conflict:B,onReload:()=>{i&&T(i,t.id),window.location.reload()},onDismiss:()=>C(null)}):null,M?e.jsx("div",{className:"mb-4 rounded-xl border border-danger-border bg-danger-soft p-3 text-sm text-danger",children:M}):null,u?null:e.jsx("div",{role:"tablist","aria-label":"Editor view",className:"mb-3 inline-flex rounded-lg border border-border bg-card p-0.5 text-sm lg:hidden",children:["edit","preview"].map(s=>e.jsx("button",{type:"button",role:"tab","aria-selected":R===s,onClick:()=>G(s),className:`rounded-sm px-3 py-1.5 capitalize ${R===s?"bg-accent text-on-accent":"text-fg-muted hover:text-accent"}`,children:s},s))}),e.jsxs("div",{className:`grid ${l?"min-h-[85dvh]":"min-h-[60dvh]"} gap-4 ${u?"":"lg:grid-cols-2"}`,children:[e.jsx(ye,{onDropFiles:v.start,className:`card min-h-0 ${z} min-w-0 ${u||R==="edit"?"":"hidden lg:block"}`,hint:J,children:e.jsx(ke,{ref:P,value:d.content,onChange:s=>g(c=>({...c,content:s})),onSave:te,onCancel:_,onPasteFile:s=>(v.start(s),!0),onRequestAttachment:()=>{var s;return(s=O.current)==null?void 0:s.open()},livePreview:u})}),u?null:e.jsx("div",{className:`card min-h-0 ${z} min-w-0 overflow-auto p-4 ${R==="preview"?"":"hidden lg:block"}`,children:e.jsx(Te,{note:{path:d.path,content:ie},resolve:m})})]}),e.jsx(Me,{noteId:t.id,pickerRef:O,attachments:t.attachments??[],uploads:v.uploads,onPickFiles:v.start,onCancel:v.cancel,onDismiss:v.dismiss})]})}const J=e.jsxs(e.Fragment,{children:["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"})]});function Me({noteId:t,pickerRef:a,attachments:r,uploads:l,onPickFiles:x,onCancel:i,onDismiss:u}){return 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(Ce,{ref:a,onPickFiles:x})]}),e.jsxs("p",{className:"mb-3 text-xs text-fg-dim",children:["Drop or paste files into the editor. Max 100 MB each. ",J,"."]}),e.jsx(Ee,{uploads:l,onCancel:i,onDismiss:u}),r.length>0?e.jsx("ul",{className:"mt-3 space-y-1 text-sm",children:r.map(m=>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",children:[e.jsx("span",{className:"truncate",title:m.path??m.id,children:m.filename??m.path??m.id}),e.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[m.mimeType?e.jsx("span",{className:"text-fg-dim",children:m.mimeType}):null,e.jsx($e,{noteId:t,attachment:m})]})]},m.id))}):null]})}function Ue({conflict:t,onReload:a,onDismiss:r}){return e.jsxs("div",{className:"mb-4 rounded-xl border border-warning bg-warning-soft p-4",children:[e.jsx("p",{className:"mb-1 font-medium text-warning",children:"This note was edited elsewhere."}),e.jsxs("p",{className:"mb-3 text-sm text-fg-muted",children:["Your save was rejected to avoid overwriting the other edit.",t.currentUpdatedAt?` Latest update ${F(t.currentUpdatedAt)}.`:""]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("button",{type:"button",onClick:a,className:"btn btn-primary btn-touch",children:"Reload latest (discard my edits)"}),e.jsx("button",{type:"button",onClick:r,className:"btn btn-secondary btn-touch",children:"Keep editing"})]})]})}function Ve(){return e.jsxs("div",{className:"grid min-h-[60dvh] gap-4 lg:grid-cols-2","aria-busy":"true",children:[e.jsx("div",{className:"card animate-pulse"}),e.jsx("div",{className:"card animate-pulse"})]})}function Oe({id:t}){return e.jsx(fe,{title:e.jsx("span",{className:"font-serif text-xl text-fg",children:"Note not found"}),description:e.jsxs(e.Fragment,{children:["No note with id ",e.jsx("span",{className:"font-mono",children:t})," in this vault."]}),action:e.jsx($,{to:"/notes",className:"text-sm text-accent hover:underline",children:"Back to all notes"})})}function Y({isDirty:t,justSaved:a,updatedAt:r}){return t?e.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-accent","aria-label":"unsaved changes",children:[e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-accent"}),"unsaved"]}):a?e.jsx("span",{className:"text-xs text-accent","aria-label":"saved",children:"Saved ✓"}):e.jsxs("span",{className:"text-xs text-fg-dim",children:["saved ",F(r)]})}function _e({error:t}){const a=t instanceof I;return e.jsx(me,{title:a?"Session expired":"Could not load note",message:t.message,action:a?e.jsx($,{to:"/add",className:"btn btn-primary",children:"Reconnect vault"}):void 0})}function ze(t,a){if(t.length!==a.length)return!1;const r=new Set(t);for(const l of a)if(!r.has(l))return!1;return!0}function We(t,a){const r=new Set(t),l=new Set(a),x=a.filter(u=>!r.has(u)),i=t.filter(u=>!l.has(u));return{add:x,remove:i}}export{Ge as NoteEditor};
@@ -1,8 +0,0 @@
1
- import{ar as _e,r as o,as as Me,at as $e,au as he,a as Le,b as Ue,a8 as qe,av as Fe,aw as Ve,ax as Oe,ay as Ge,a3 as Be,a7 as He,az as We,aj as Ke,aA as Ye,C as ze,am as Je,j as e,N as Qe,aB as Ze,aC as ge,V as Xe,an as G,aD as et,aE as tt,aF as Z,aG as st,aH as nt,aI as at,aJ as I,L as rt,ap as ot,A as it,aK as ct,aq as lt}from"./index-CpyANXLa.js";import{v as dt,A as ut}from"./attachment-upload-DbV0j1WH.js";import{u as mt,C as pt,A as ft,a as ht}from"./useAttachmentUploader-t5hlKCgS.js";import{b as gt,N as xt}from"./NoteRenderer-BzRFYOTP.js";import{l as xe,u as bt,a as vt,b as yt}from"./transcribe-default-DIcTpM6A.js";import{r as jt}from"./editor-mode-D9fveTEx.js";import"./types-BaJkUfo6.js";const kt=30*6e4,wt=20*1024*1024,Rt=1e4;function Nt(t){const c=t.segmentMs??kt,l=t.setTimer??((x,T)=>setTimeout(x,T)),b=t.clearTimer??(x=>clearTimeout(x)),w=t.makeRecorder??(x=>_e({...x,releaseStreamOnStop:!1})),g=[];let n=null,d=null,f="idle",u=0,h=0,y=!1;const m=()=>{for(const x of t.stream.getTracks())x.stop()},r=()=>{d!==null&&(b(d),d=null)},p=()=>{d=l(()=>{d=null,R()},c)},i=()=>{h+=1;const x=h;n=w({stream:t.stream,mimeType:t.mimeType,releaseStreamOnStop:!1,now:t.now,MediaRecorderCtor:t.MediaRecorderCtor,dataIntervalMs:Rt,onData:T=>{x===h&&T>=wt&&R()}}),n.start(),u+=1,p()},R=()=>{var x;f!=="recording"||!n||y||(y=!0,r(),g.push(n.stop()),i(),(x=t.onRoll)==null||x.call(t,u),y=!1)};return{get state(){return f},get activePart(){return u},start(){if(f!=="idle")throw new Error(`Cannot start from ${f}`);f="recording",i()},async stop(){if(f!=="recording"||!n)throw new Error(`Cannot stop from ${f}`);f="stopped",r(),g.push(n.stop()),n=null;const x=await Promise.all(g);return m(),x},cancel(){r(),n&&n.cancel(),n=null,f="stopped",m()}}}function Tt(){const[t,c]=o.useState({kind:"idle"}),[l,b]=o.useState(0),[w,g]=o.useState(0),n=o.useRef(null),d=o.useRef(null);o.useEffect(()=>{if(t.kind!=="recording")return;const m=setInterval(()=>b(Date.now()-t.startedAt),250);return()=>clearInterval(m)},[t]),o.useEffect(()=>()=>{d.current&&URL.revokeObjectURL(d.current),n.current&&n.current.state==="recording"&&n.current.cancel()},[]);const f=o.useCallback(async()=>{if(!(t.kind==="recording"||t.kind==="requesting")){c({kind:"requesting"});try{const m=Me();if(!m){c({kind:"denied",message:"This browser can't record audio in a format we can save."});return}const r=await $e(),p=Nt({stream:r,mimeType:m,onRoll:i=>g(i)});n.current=p,p.start(),b(0),g(p.activePart),c({kind:"recording",startedAt:Date.now()})}catch(m){const r=m,p=r.kind==="permission-denied"?"Microphone access was denied. Update your browser's site settings to record.":r.kind==="no-device"?"No microphone was found on this device.":r instanceof Error?r.message:"Microphone is not available in this browser.";c({kind:"denied",message:p})}}},[t]),u=o.useCallback(async()=>{var r;const m=n.current;if(!(!m||t.kind!=="recording"))try{const p=await m.stop();n.current=null,g(0);const i=((r=p[0])==null?void 0:r.mimeType)??"",R=p.reduce((B,U)=>B+U.durationMs,0),x=p[0],T=x?URL.createObjectURL(new Blob([x.data],{type:x.mimeType})):"";d.current&&URL.revokeObjectURL(d.current),d.current=T||null,c({kind:"have-audio",segments:p,mimeType:i,url:T,durationMs:R})}catch(p){console.warn(p instanceof Error?`Recording failed: ${p.message}`:"Recording failed."),g(0),c({kind:"idle"})}},[t]),h=o.useCallback(()=>{d.current&&(URL.revokeObjectURL(d.current),d.current=null),c({kind:"idle"}),b(0),g(0)},[]),y=o.useCallback(()=>{h()},[h]);return{phase:t,elapsedMs:l,parts:w,startRecording:f,stopRecording:u,discardAudio:h,reset:y}}function St(t){const{segments:c,mimeType:l,recordedAt:b,willTranscribe:w}=t,g=c.length>1,n=t.typedText.trim(),d=c.map((y,m)=>({filename:g?he(l,b,m+1):he(l,b),transcribe:w,...w&&g?{segment_index:m}:{}})),f=w?g?c.map((y,m)=>`_Transcript pending (part ${m+1})._`).join(`
2
-
3
- `):"_Transcript pending._":"",u=d.map(y=>`![[${y.filename}]]`).join(`
4
-
5
- `),h=[];return n&&h.push(n),f&&h.push(f),h.push(u),{body:`${h.join(`
6
-
7
- `)}
8
- `,segments:d}}const be={content:"",path:"",tags:[]};function Ut(){const t=Le(s=>s.getActiveVault()),c=Ue(),l=qe(s=>s.push),b=Fe(),w=Ve(),g=Oe(),{db:n,blobStore:d,engine:f}=Ge(),{roles:u}=Be((t==null?void 0:t.id)??null),h=He(),y=o.useRef(We()),m=o.useRef(jt()).current,r=o.useRef((t==null?void 0:t.id)??null).current,p=o.useRef(null),[i,R]=o.useState(()=>{if(r){const s=Ke(r,I);if(s)return p.current=s.savedAt,s.body}return{...be,path:y.current}}),[x,T]=o.useState(()=>p.current),[B,U]=o.useState(""),[ee,C]=o.useState(null),[q,ye]=o.useState([]),[je,te]=o.useState(!1),H=o.useRef(null),se=o.useRef(null),v=Tt(),D=Ye(),N=D.capability,ke=v.phase.kind==="requesting"||v.phase.kind==="recording"||v.phase.kind==="have-audio",we=(N==null?void 0:N.enabled)===!1&&!ke,W=typeof(N==null?void 0:N.minutes_remaining)=="number"?N.minutes_remaining:void 0,K=W!==void 0&&W<=0,[Y,ne]=o.useState(()=>r?xe(r):!0),Re=(N==null?void 0:N.enabled)!==!1,ae=o.useRef(v.phase.kind);o.useEffect(()=>{const s=ae.current,a=v.phase.kind;ae.current=a,a==="idle"&&s!=="idle"&&r&&ne(xe(r))},[v.phase.kind,r]);const[Ne]=ze(),re=Ne.has("voice"),oe=o.useRef(!1);o.useEffect(()=>{var s;!re||oe.current||D.settled&&((s=D.capability)==null?void 0:s.enabled)!==!1&&(oe.current=!0,v.startRecording())},[re,D.settled,D.capability,v.startRecording]);const A=mt({noteId:null,onInsert:s=>{H.current?H.current.insertAtCursor(s):R(a=>({...a,content:`${a.content}${s}`}))},onStaged:s=>ye(a=>[...a,s]),onError:s=>l(s,"error")}),_=o.useRef(p.current!==null),F=o.useRef(null);o.useEffect(()=>{_.current||(R(s=>{const a=F.current?s.tags.filter(P=>P!==F.current):s.tags,j=a.includes(u.captureText)?a:[...a,u.captureText];return j===s.tags?s:{...s,tags:j}}),F.current=u.captureText)},[u.captureText]);const ie=!_.current&&(i.tags.length===0||i.tags.length===1&&i.tags[0]===u.captureText),Te=i.content.trim().length>0||!ie||i.path.trim().length>0&&i.path!==y.current;if(Je(r,I,i,Te),!t)return e.jsx(Qe,{to:"/",replace:!0});const M=v.phase.kind==="have-audio",z=i.content.trim().length>0,V=i.content.length>0||i.path!==y.current||!ie||M,$=i.path.trim().length>0&&(z||M),E=b.isPending||je,ce=o.useCallback(()=>{if(!$||E)return;const s=Ze({content:i.content,path:i.path,tags:i.tags});h&&ge(t.id,h),C(null),b.mutate(s,{onSuccess:async a=>{for(const j of q)try{await w.mutateAsync({noteId:a.id,path:j.path,mimeType:j.mimeType})}catch(P){const J=P instanceof Error?P.message:"Link failed";l(`Failed to attach ${j.filename}: ${J}`,"error")}r&&G(r,I),l(`Created ${a.path??a.id}`,"success"),c(`/n/${encodeURIComponent(a.id)}`,{replace:!0})},onError:a=>{a instanceof Xe?C("Session expired. Reconnect to save."):C(a instanceof Error?`${a.message} — if the path is taken, try a different one.`:"Create failed")}})},[t,r,h,i,$,w,b,c,E,l,q]),le=o.useCallback(async()=>{if(!$||E||v.phase.kind!=="have-audio")return;if(!n||!d){l("Sync queue not ready — try again in a moment.","error");return}C(null);const s=v.phase,a=s.segments,j=s.mimeType,P=i.path.trim(),J=i.tags,Pe=et(i.content),me=Array.from(new Set([u.captureVoice,...J,...Pe].filter(k=>k.length>0)));z&&me.push(u.captureText);const pe=Array.from(new Set(me)),Ie=new Date,L=tt(),De=!K&&Y,O=St({segments:a,mimeType:j,typedText:i.content,recordedAt:Ie,willTranscribe:De});for(let k=0;k<a.length;k++){const S=dt(new File([a[k].data],O.segments[k].filename,{type:j}));if(S){l(S,"error"),C(S);return}}te(!0),h&&ge(t.id,h);const fe={content:O.body,path:P,metadata:{source:"voice"},...pe.length?{tags:pe}:{}};try{await Z(n,{kind:"create-note",localId:L,payload:fe},{vaultId:t.id});for(let k=0;k<O.segments.length;k++){const S=O.segments[k],Q=st();await d.put(Q,a[k].data,j,t.id),await Z(n,{kind:"upload-attachment",blobId:Q,filename:S.filename,mimeType:j},{vaultId:t.id}),await Z(n,{kind:"link-attachment",noteId:L,pathRef:nt(Q),mimeType:j,transcribe:S.transcribe,...S.segment_index!==void 0?{segment_index:S.segment_index}:{}},{vaultId:t.id})}f==null||f.runOnce(),g.setQueryData(["note",t.id,L],at(fe,L)),r&&G(r,I),l("Captured — syncing audio.","success"),v.discardAudio(),c(`/n/${encodeURIComponent(L)}`,{replace:!0})}catch(k){l(k instanceof Error?`Capture failed: ${k.message}`:"Capture failed.","error"),C(k instanceof Error?k.message:"Capture failed")}finally{te(!1)}},[t,r,d,h,n,i,f,z,$,c,K,E,l,g,u.captureText,u.captureVoice,Y,v]),de=o.useCallback(()=>{M?le():ce()},[M,ce,le]),ue=o.useCallback(()=>{V&&!confirm("Discard this draft?")||(r&&G(r,I),v.discardAudio(),c("/"))},[r,V,c,v]),Se=o.useCallback(()=>{r&&G(r,I),_.current=!1,F.current=u.captureText,R({...be,path:y.current,tags:[u.captureText]}),v.discardAudio(),T(null)},[r,v,u.captureText]);o.useEffect(()=>{if(!V)return;const s=a=>{a.preventDefault(),a.returnValue=""};return window.addEventListener("beforeunload",s),()=>window.removeEventListener("beforeunload",s)},[V]);const Ce=s=>{const a=lt(s);!a||i.tags.includes(a)||(_.current=!0,R(j=>({...j,tags:[...j.tags,a]})),U(""))},Ae=s=>{_.current=!0,R(a=>({...a,tags:a.tags.filter(j=>j!==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:ue,className:"btn btn-secondary btn-touch",children:"Cancel"}),e.jsx("button",{type:"button",onClick:de,disabled:!$||E,className:"btn btn-primary btn-touch",title:"Create (⌘S)",children:E?"Creating…":"Create"})]})]}),e.jsx("input",{type:"text",value:i.path,onChange:s=>R(a=>({...a,path:s.target.value})),className:i.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:i.tags,input:B,onInputChange:U,onAdd:Ce,onRemove:Ae})})]}),x?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(x),"."]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{type:"button",onClick:Se,className:"text-fg-dim hover:text-danger",children:"Discard draft"}),e.jsx("button",{type:"button",onClick:()=>T(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:N}):e.jsxs(e.Fragment,{children:[e.jsx(Et,{voice:v,minutesRemaining:W,outOfMinutes:K,transcribe:Y,onTranscribeChange:ne,showTranscribeToggle:Re}),e.jsx(Ct,{vaultId:t.id,captureEngaged:M})]}),e.jsxs("div",{className:`grid min-h-[60dvh] gap-4 ${m?"":"lg:grid-cols-2"}`,children:[e.jsx(ut,{onDropFiles:A.start,className:"card min-h-0 h-[60dvh] min-w-0",hint:"Images, audio, webm video",children:e.jsx(pt,{ref:H,value:i.content,onChange:s=>R(a=>({...a,content:s})),onSave:de,onCancel:ue,placeholder:"Start writing…",onPasteFile:s=>(A.start(s),!0),onRequestAttachment:()=>{var s;return(s=se.current)==null?void 0:s.open()},livePreview:m})}),m?null:e.jsx("div",{className:"card min-w-0 overflow-auto p-4 lg:h-[60dvh] lg:min-h-0",children:i.content.trim()?e.jsx(xt,{note:{path:i.path,content:i.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:A.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:A.uploads,onCancel:A.cancel,onDismiss:A.dismiss}),q.length>0?e.jsx("ul",{className:"mt-3 space-y-1 text-sm",children:q.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 Ct({vaultId:t,captureEngaged:c}){const l=bt(),b=vt(),{made:w,markMade:g}=yt(t),[n,d]=o.useState(null);if(!(c&&!w&&l.supported&&l.value==="keep"))return null;const u=h=>{d(null),b.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:b.isPending,className:"btn btn-secondary btn-touch",children:"Keep my recordings"}),e.jsx("button",{type:"button",onClick:()=>u("until_transcribed"),disabled:b.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."}),n?e.jsx("p",{className:"text-xs text-danger","data-testid":"retention-choice-error",children:n}):null]})}const At=30;function ve({checked:t,disabled:c,onChange:l}){return e.jsxs("div",{className:"flex basis-full items-center 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 left-0 h-6 w-6 rounded-full bg-card shadow-sm transition-transform ${t?"translate-x-5":"translate-x-0.5"}`})})]})}function Et({voice:t,minutesRemaining:c,outOfMinutes:l,transcribe:b,onTranscribeChange:w,showTranscribeToggle:g}){const{phase:n,elapsedMs:d,parts:f,startRecording:u,stopRecording:h,discardAudio:y}=t,m=n.kind==="recording",r=n.kind==="requesting",p=!l&&b,i=typeof c=="number"&&c<=At;return n.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(n.durationMs),n.segments.length>1?` · ${n.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:n.url,className:"w-full",children:e.jsx("track",{kind:"captions"})}),g?e.jsx(ve,{checked:p,disabled:l,onChange:w}):null,e.jsx("p",{className:"text-xs text-fg-dim",children:l?"Saved as audio-only — you're out of transcription minutes this month.":p?"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:m?f>1?`Recording — tap Stop to finish. (part ${f})`:"Recording — tap Stop to finish.":r?"Requesting microphone…":l?"You're out of transcription minutes this month — this saves as audio-only.":p?"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."}),m?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:r,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:r?"Requesting…":"Record"})]}),g?e.jsx(ve,{checked:p,disabled:l,onChange:w}):null,i&&!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,n.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:n.message}):null]})}function X(t){const c=Math.floor(t/1e3),l=Math.floor(c/60),b=c%60;return`${String(l).padStart(2,"0")}:${String(b).padStart(2,"0")}`}export{Ut as NoteNew};
@@ -1 +0,0 @@
1
- import{j as n,bJ as Xe,r as g,bK as V,bL as C,L as R,b1 as Ke,A as Ze,ax as et,al as Se,a8 as Ce,v as B,bv as O,bM as $e,bN as Te,bO as tt,bP as Ee,W as nt,z as F,_ as st,Y as xe,a1 as X,bQ as De,bR as at,bS as rt,bT as it,bU as lt,bV as ot,bW as Pe,a as Me,a3 as ct,C as dt,bX as ut,bY as mt,bZ as pe,ag as xt,b_ as pt,N as ht,E as _e,b$ as ft,c0 as Ae,c1 as bt,c2 as Y,y as k,c3 as gt,c4 as yt,c5 as jt,av as vt,c6 as Nt,c7 as wt,a5 as he,a6 as fe,c8 as kt,bI as St}from"./index-CpyANXLa.js";import{T as Ct}from"./TagSchemaEditor-DrsKXHjg.js";const $t="—",Le=/^https?:\/\//i;function Be(e){return typeof e=="string"&&Le.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(Le,""),rest:""}}}function Et({value:e,schema:t}){if(e==null||e==="")return $t;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 Xe(e);if(Be(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 I(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 Dt="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 Pt(e){if(typeof e!="string")return"";const t=e.match(/^\d{4}-\d{2}-\d{2}/);return t?t[0]:""}function Z({field:e,schema:t,value:s,onCommit:a,disabled:r=!1,options:i,includeClear:l=!1,trigger:o}){const u=I(t,i),[c,p]=g.useState(!1),x=s==null||s==="",d=(o==null?void 0:o.label)??n.jsx(Et,{value:s,schema:t}),h=(o==null?void 0:o.ariaLabel)??`Edit ${e}`,j=(o==null?void 0:o.className)??`${Dt} ${x&&!(o!=null&&o.label)?"text-fg-dim":"text-fg"}`;if(u==="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:d})}const y=u==="enum"?i??((t==null?void 0:t.enum)??[]).map(v=>({value:v,label:v})):[],f=l&&!x,b=v=>{p(!1),a(v)};return n.jsxs("div",{className:"relative",children:[n.jsx("button",{type:"button",disabled:r,"aria-haspopup":u==="enum"?"menu":"dialog","aria-expanded":c,"aria-label":h,title:o!=null&&o.label?void 0:`Edit ${e}`,onClick:()=>p(v=>!v),className:j,children:d}),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)}),u==="enum"?n.jsxs("div",{role:"menu","aria-label":h,className:"card absolute right-0 z-20 mt-1 flex min-w-[10rem] flex-col gap-0.5 p-1 shadow-lg",children:[y.map(v=>n.jsxs("button",{type:"button",role:"menuitem",onClick:()=>b(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))),f?n.jsx("button",{type:"button",role:"menuitem",onClick:()=>b(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(Mt,{kind:u,value:s,ariaLabel:h,onCommit:b,onCancel:()=>p(!1)})]}):null]})}function Mt({kind:e,value:t,ariaLabel:s,onCommit:a,onCancel:r}){const i=e==="date"?Pt(t):t==null?"":String(t),[l,o]=g.useState(i),u=()=>{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(),u()):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:u,"aria-label":"Save",className:"focus-ring rounded px-1.5 py-1 text-xs text-accent hover:bg-bg-soft",children:"✓"}),Be(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),u=e.updatedAt??e.createdAt,c=(e.tags??[]).includes(t),p=(e.tags??[]).includes(s),x=a==="gallery"?_t(e):null,[d,h]=g.useState(!1),j=x&&!d,y=(l==null?void 0:l.canDrag)??!1,f=n.jsxs(R,{to:`/n/${encodeURIComponent(e.id)}`,draggable:y?!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:x,alt:"",loading:"lazy",onError:()=>h(!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(Ke,{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:Ze(u)})]})]});return!r&&!i&&!y?f:n.jsxs("div",{className:y?"relative flex flex-col cursor-grab":"relative flex flex-col",...(l==null?void 0:l.sourceProps)??{},children:[f,r?n.jsx("div",{className:"absolute right-2 top-2",children:r}):null,i?n.jsx("div",{className:"mt-1",children:i}):null]})}function At(e,t,s){const a={...e.metadata??{}};return s===null?delete a[t]:a[t]=s,{...e,metadata:a}}function Lt(e,t,s,a){return e&&e.map(r=>r.id===t?At(r,s,a):r)}function Bt(e,t){const s=et(),a=Se(e);return{move:g.useCallback(async(i,l,o)=>{const u=s.getQueryData(t);s.setQueryData(t,c=>Lt(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,x=>x==null?void 0:x.map(d=>d.id===e?{...d,updatedAt:p}:d))}catch(c){throw s.setQueryData(t,u),c}},[s,t,e,a]),isPending:a.isPending}}const Ft=1800,W="field-write-flash",Vt=700;function Rt(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(W),s.offsetWidth,s.classList.add(W),window.setTimeout(()=>s.classList.remove(W),Vt)}function z(e,t){const s=Ce(c=>c.push),{move:a,isPending:r}=Bt(e.id,t),i=e.id,l=e.updatedAt,o=C(e).text;return{write:g.useCallback(async(c,p,x)=>{try{await a(c,p,l)}catch(h){const j=(x==null?void 0:x.errorPrefix)??`Couldn't update ${c} on "${o}"`;s(`${j}: ${h instanceof Error?h.message:"unknown error"}`,"error");return}const d=(x==null?void 0:x.valueLabel)??Rt(p);s(d===null?`✓ ${c} cleared`:`✓ ${c} → ${d}`,"success",{durationMs:Ft}),Ot(i)},[a,l,o,i,s]),isPending:r}}function Fe(e){if(e==null)return null;const t=typeof e;return t==="string"||t==="number"||t==="boolean"?e:null}function P({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 u=Fe((p=e.metadata)==null?void 0:p[o.name]),c=I(o.schema)==="enum"&&u!==null&&u!==""?V(String(u)):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(Z,{field:o.name,schema:o.schema,value:u,disabled:i,includeClear:!0,onCommit:x=>void r(o.name,x)})]},o.name)})})}function It(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 qt={status:["active","incubating","dormant","paused","archived","done","shipped","dropped"],priority:["high","medium","low"]};function zt(e,t){var a;const s=(a=t==null?void 0:t[e])==null?void 0:a.enum;return s&&s.length>0?s:qt[e]??[]}function Gt(e,t,s=[]){var p;const a=new Map,r=new Map,i=[];for(const x of e){const d=It(x,t);if(d===null){i.push(x);continue}const h=a.get(d);h?h.push(x):(a.set(d,[x]),r.set(d,(p=x.metadata)==null?void 0:p[t]))}const l=s.filter(x=>a.has(x)),o=new Set(l),u=[...a.keys()].filter(x=>!o.has(x)).sort((x,d)=>x.localeCompare(d)),c=[...l,...u].map(x=>({key:x,label:x,notes:a.get(x)??[],uncategorized:!1,value:r.get(x)}));return i.length>0&&c.push({key:"",label:`No ${t}`,notes:i,uncategorized:!0,value:null}),c}function Ut(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 Yt(e,t){var i;const s=new Map,a=[],r=new Map;for(const l of e){const o=Ut((i=l.metadata)==null?void 0:i[t]);if(!o){a.push(l);continue}r.set(l.id,o);const u=B(o),c=s.get(u);c?c.push(l):s.set(u,[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 Qt({notes:e,laneBy:t,subjectTag:s,roles:a,viewResultsKey:r,fields:i=[]}){const l=O(s??null),o=g.useMemo(()=>{var y,f,b,v;const c=Gt(e,t,zt(t,(y=l.data)==null?void 0:y.fields)),p=((v=(b=(f=l.data)==null?void 0:f.fields)==null?void 0:b[t])==null?void 0:v.enum)??[];if(p.length===0)return c;const x=new Map(c.filter(m=>!m.uncategorized).map(m=>[m.key,m])),d=p.map(m=>x.get(m)??{key:m,label:m,notes:[],uncategorized:!1,value:m}),h=new Set(p),j=c.filter(m=>m.uncategorized||!h.has(m.key));return[...d,...j]},[e,t,l.data]),u=$e();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(Ht,{lane:c,dropRegistry:u,children:c.notes.map(p=>n.jsx(Xt,{note:p,laneBy:t,lanes:o,currentLane:c,roles:a,viewResultsKey:r,fields:i,dropRegistry:u},p.id))},c.uncategorized?"__uncategorized__":c.key))})})}function Ht({lane:e,dropRegistry:t,children:s}){const a=g.useCallback(l=>t.dispatch(l,e),[t,e]),{isOver:r,targetProps:i}=Te(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:tt()?"Drop here":"No notes"}):s})]})}function ye(e,t){return e.uncategorized||t.uncategorized?e.uncategorized&&t.uncategorized:e.key===t.key}const Jt="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 Xt({note:e,laneBy:t,lanes:s,currentLane:a,roles:r,viewResultsKey:i,fields:l,dropRegistry:o}){const{write:u,isPending:c}=z(e,i),p=g.useMemo(()=>s.filter(f=>!ye(f,a)),[s,a]),x=g.useMemo(()=>p.map(f=>({value:f.value,label:f.label,muted:f.uncategorized})),[p]),d=g.useCallback(async(f,b)=>{await u(t,f,{valueLabel:b,errorPrefix:`Couldn't move "${C(e).text}"`})},[u,t,e]),h=async f=>{const b=x.find(v=>v.value===f);await d(f,b==null?void 0:b.label)},j=Ee(e.id),y=g.useCallback(f=>{c||ye(f,a)||d(f.value,f.label)},[c,a,d]);return g.useEffect(()=>o.register(e.id,y),[o,e.id,y]),n.jsx(q,{note:e,pinnedTag:r.pinned,archivedTag:r.archived,drag:j,overlay:p.length>0?n.jsx(Z,{field:t,value:a.value,options:x,disabled:c,onCommit:f=>void h(f),trigger:{label:"Move",ariaLabel:`Move to another ${t}`,className:Jt}}):null,footer:l.length>0?n.jsx(P,{note:e,fields:l,viewResultsKey:i,omit:p.length>0?[t]:void 0}):null})}const Kt=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Q=2;function Zt({notes:e,dateField:t,roles:s,viewResultsKey:a,fields:r=[]}){const i=g.useMemo(()=>t===null?Wt(e):Yt(e,t),[e,t]),[l,o]=g.useState(()=>ge(i.dates.values())),[u,c]=g.useState(null),p=g.useMemo(()=>nt(l.year,l.month),[l]),x=B(),d=$e();if(i.byDay.size===0)return n.jsxs("div",{className:"space-y-4",children:[n.jsx(F,{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(je,{notes:i.undated,dateField:t,roles:s,viewResultsKey:a,fields:r})]});const h=y=>{c(null),o(y)},j=u?i.byDay.get(u)??[]:[];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:()=>h(xe(l.year,l.month,-1)),className:"chip","aria-label":"Previous month",children:"← Prev"}),n.jsx("button",{type:"button",onClick:()=>h(ge(i.dates.values())),className:"chip",children:"Latest"}),n.jsx("button",{type:"button",onClick:()=>h(xe(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:Kt.map(y=>n.jsx("div",{className:"px-2 py-2 text-center",children:y},y))}),n.jsx("div",{className:"grid grid-cols-7",children:p.map(y=>{const f=B(y),b=y.getMonth()+1===l.month,v=i.byDay.get(f)??[],m=f===x,N=f===u;return n.jsx(en,{dayKey:f,dayNumber:y.getDate(),inMonth:b,isToday:m,isSelected:N,notes:v,onSelect:()=>c(f),dateField:t,viewResultsKey:a,dropRegistry:d},f)})})]}),u&&j.length>0?n.jsxs("section",{"aria-label":`Notes on ${X(u)}`,className:"space-y-2",children:[n.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[n.jsx("p",{className:"eyebrow",children:X(u)}),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(y=>n.jsx(q,{note:y,pinnedTag:s.pinned,archivedTag:s.archived,footer:r.length>0?n.jsx(P,{note:y,fields:r,viewResultsKey:a}):null},y.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(je,{notes:i.undated,dateField:t,roles:s,viewResultsKey:a,fields:r})]})}function en({dayKey:e,dayNumber:t,inMonth:s,isToday:a,isSelected:r,notes:i,onSelect:l,dateField:o,viewResultsKey:u,dropRegistry:c}){const p=i.length>0,x=o!==null,d=g.useCallback(m=>c.dispatch(m,e),[c,e]),{isOver:h,targetProps:j}=Te(d),y=x&&s?j:{},f=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}),b=n.jsxs("span",{className:"flex flex-col gap-0.5",children:[i.slice(0,Q).map(m=>o===null?n.jsx(tn,{note:m},m.id):n.jsx(nn,{note:m,dayKey:e,dateField:o,viewResultsKey:u,dropRegistry:c},m.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":""} ${x&&s&&h?"bg-accent/5 outline-2 -outline-offset-2 outline-accent/60":""}`;return p?n.jsxs("button",{type:"button",onClick:l,"aria-label":`${X(e)} — ${i.length} notes`,className:`${v} hover:bg-bg/60 focus:bg-bg/60 focus:outline-none`,"data-day":e,...y,children:[f,b]}):n.jsxs("div",{className:v,"data-day":e,...y,children:[f,n.jsx("span",{className:"sr-only",children:"no notes"})]})}const K="truncate rounded-md border border-border bg-card px-1.5 py-0.5 text-[10px] leading-tight text-fg shadow-sm";function tn({note:e}){return n.jsx("span",{"data-note-id":e.id,className:K,children:C(e).text})}function nn({note:e,dayKey:t,dateField:s,viewResultsKey:a,dropRegistry:r}){const{write:i,isPending:l}=z(e,a),o=Ee(e.id),u=g.useCallback(c=>{l||c===t||i(s,c,{errorPrefix:`Couldn't move "${C(e).text}"`})},[l,t,s,i,e]);return g.useEffect(()=>r.register(e.id,u),[r,e.id,u]),n.jsx("span",{"data-note-id":e.id,className:o.canDrag?`${K} cursor-grab`:K,...o.sourceProps,children:C(e).text})}function je({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(P,{note:o,fields:[i],viewResultsKey:a})},o.id))})]})}const sn="border-[color-mix(in_srgb,var(--color-accent)_40%,var(--color-border))]";function Ve({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?sn:"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,sections:l,current:o,onSelect:u,note:c,actions:p,busy:x=!1,dirty:d=!1}){const[h,j]=g.useState(!1);g.useEffect(()=>{if(!h)return;const m=N=>{N.key==="Escape"&&j(!1)};return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[h]);const y=m=>{j(!1),u(m)},f=m=>{j(!1),m.onSelect()},b=m=>{const N=m.value===o;return n.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":N,onClick:()=>y(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 ${N?"text-fg":"text-fg-muted"}`,children:[m.glyph?n.jsx("span",{"aria-hidden":"true",className:"flex-none",children:m.glyph}):null,n.jsxs("span",{className:"flex min-w-0 flex-1 items-center gap-2",children:[n.jsx("span",{className:m.hint?"shrink-0":"min-w-0 shrink truncate",children:m.label??m.value}),m.hint?n.jsx("span",{"aria-hidden":"true",className:"min-w-0 shrink truncate text-2xs text-fg-dim",children:m.hint}):null]}),N?n.jsx("span",{"aria-hidden":"true",className:"text-accent",children:"✓"}):null]},m.value)},v=l?l.reduce((m,N)=>m+N.options.length,0):(i==null?void 0:i.length)??0;return n.jsxs("div",{className:"relative",children:[n.jsx(Ve,{label:e,value:t,icon:s,ariaLabel:a,open:h,dirty:d,onClick:()=>j(m=>!m)}),h?n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button","aria-hidden":"true",tabIndex:-1,onClick:()=>j(!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}),l?l.map((m,N)=>n.jsxs("div",{className:N>0?"mt-1 border-t border-border-light pt-1":void 0,children:[m.heading?n.jsx("p",{"aria-hidden":"true",className:"px-2 pt-1 pb-0.5 text-2xs uppercase tracking-[0.08em] text-fg-dim",children:m.heading}):null,m.options.map(b)]},m.heading??N)):i==null?void 0:i.map(b),c?n.jsx("p",{className:"px-2 pt-1.5 pb-1 text-xs text-fg-dim",children:c}):null,p&&p.length>0?n.jsx("div",{className:v>0?"mt-1 border-t border-border-light pt-1":void 0,children:p.map(m=>n.jsxs("button",{type:"button",role:"menuitem",disabled:x,onClick:()=>f(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 ve(e){switch(I(e)){case"enum":case"boolean":return"●";case"date":return"📅";case"number":return"#";default:return"Aa"}}function an({fields:e,schemaFields:t,onChange:s,dirty:a=!1}){const[r,i]=g.useState(!1);g.useEffect(()=>{if(!r)return;const d=h=>{h.key==="Escape"&&i(!1)};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[r]);const l=e.map(d=>d.name),o=Object.keys(t).filter(d=>!l.includes(d));if(l.length===0&&o.length===0)return null;const u=l.length===1,c=d=>{u||s(l.filter(h=>h!==d))},p=d=>s([...l,d]),x=(d,h)=>{const j=[...l],[y]=j.splice(d,1);j.splice(d+h,0,y),s(j)};return n.jsxs("div",{className:"relative",children:[n.jsx(Ve,{label:"Fields",value:String(l.length),haspopup:"dialog",open:r,dirty:a,onClick:()=>i(d=>!d)}),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:[e.map((d,h)=>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:u,onChange:()=>c(d.name)}),n.jsx("span",{"aria-hidden":"true",className:"w-4 flex-none text-center text-2xs text-fg-dim",children:ve(d.schema)}),n.jsx("span",{className:"truncate",children:d.name})]}),n.jsx("button",{type:"button","aria-label":`Move ${d.name} up`,disabled:h===0,onClick:()=>x(h,-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 ${d.name} down`,disabled:h===l.length-1,onClick:()=>x(h,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:"↓"})]},d.name)),o.map(d=>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(d)}),n.jsx("span",{"aria-hidden":"true",className:"w-4 flex-none text-center text-2xs text-fg-dim",children:ve(t[d])}),n.jsx("span",{className:"truncate",children:d})]})},d))]}),u?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 rn({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(P,{note:r,fields:a,viewResultsKey:s}):null},r.id))})}const H={list:"List",board:"Board",calendar:"Calendar",gallery:"Gallery",table:"Table"};function Ne({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 ln({kind:e,onSwitch:t,dirty:s=!1}){return n.jsx(ee,{ariaLabel:`Lens: ${H[e]}`,menuLabel:"Lens",icon:n.jsx(Ne,{kind:e}),value:H[e],options:De.map(a=>({value:a,label:H[a],glyph:n.jsx(Ne,{kind:a})})),current:e,onSelect:t,dirty:s})}function on(e,t,s){const a=e.filter(s).map(r=>r.name);return t&&!a.includes(t)&&a.unshift(t),a}const cn="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 Re(e,t,s){return[{key:"__add_field__",label:e,hint:t,onSelect:s}]}const we="Date fields plot on the Calendar lens (By date) — not offered here.";function J(e,t){return{value:e,hint:t,glyph:n.jsx("span",{className:`tint-dot tint-${V(e)}`})}}function dn(e){const t=[],s=[],a=[];for(const r of e){const i=I(r.schema);i==="date"?a.push(r):i==="enum"?t.push(r):s.push(r)}return{valueBearing:t,other:s,dateFields:a}}function un(e){return(e.enum??[]).join(" · ")}function mn(e,t,s,a,r){if(e)return t>0?we:void 0;if(!s)return cn;if(r)return`#${s} has no fields yet — add one to give this board its columns:`;if(!a)return we}function xn({value:e,fields:t,onChange:s,dirty:a=!1,createTag:r=null,schemaReady:i=!0,onAddField:l}){const{valueBearing:o,other:u,dateFields:c}=dn(t),p=new Set([...o,...u].map(f=>f.name)),x=e!==void 0&&!p.has(e)?e:void 0,d=[];x!==void 0&&d.push({options:[J(x)]}),o.length>0&&d.push({heading:"Fields with values",options:o.map(f=>J(f.name,un(f.schema)))}),u.length>0&&d.push({heading:"Other fields · one column per value",options:u.map(f=>J(f.name))});const h=d.length>0,j=t.length===0,y=j&&!!r&&i&&!!l;return n.jsx(ee,{label:"Group by",menuLabel:"Group by",value:e??"—",sections:d,current:e,onSelect:s,note:mn(h,c.length,r,j,y),actions:y?Re("Add a field to group by…","You name it; give it values to get columns.",l):void 0,dirty:a})}function pn({value:e,fields:t,onChange:s,dirty:a=!1,createTag:r=null,schemaReady:i=!0,onAddField:l}){const o=on(t,e,c=>c.schema.type==="date"),u=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&&u?`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:u?Re("Add a date field…","You name it; it holds a date on each note.",l):void 0,dirty:a})}function hn({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(fn,{note:r,fields:a,roles:t,viewResultsKey:s},r.id))})]})})})}function fn({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),u=(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 ${u?"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(R,{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(Z,{field:c.name,schema:c.schema,value:Fe((p=e.metadata)==null?void 0:p[c.name]),disabled:i,includeClear:!0,onCommit:x=>void r(c.name,x)})},c.name)})]})}function Oe(e){return e.kind!==void 0||e.groupBy!==void 0||e.dateField!==void 0||e.fields!==void 0}function bn(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 gn(e){const t={},s=e.get("kind");s&&De.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 Oe(t)?{...e,kind:t.kind??e.kind,groupBy:t.groupBy??e.groupBy,dateField:t.dateField??e.dateField,fields:t.fields??e.fields}:e}function yn(e,t){return e===void 0||t===void 0?e===t:e.length===t.length&&e.every((s,a)=>s===t[a])}function ke(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&&!yn(t.fields,e.fields)&&(s.fields=t.fields),s}function jn(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 vn(e){var t;return(t=e.find(s=>s.schema.type==="date"))==null?void 0:t.name}function Nn(e,t,s,a){const r={...t,kind:s};if(s==="board"){if(!(t.groupBy??e.groupBy)){const i=jn(a);i&&(r.groupBy=i)}}else e.groupBy===void 0&&(r.groupBy=void 0);if(s==="calendar"){if(!(t.dateField??e.dateField)){const i=vn(a);i&&(r.dateField=i)}}else e.dateField===void 0&&(r.dateField=void 0);return r}function wn(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 kn(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 Sn={type:"string"};function M(e){const t=Pe(e);return t.length===1?t[0]:null}function Cn(e,t){return e.fields&&e.fields.length>0?e.fields.map(a=>({name:a,schema:(t==null?void 0:t[a])??Sn})):M(e.query)&&t?Object.entries(t).map(([a,r])=>({name:a,schema:r})):[]}function $n(e){const t=e?M(e.query):null,s=O(t);return g.useMemo(()=>e?Cn(e,Ie(s.data)):[],[e,s.data])}function Ie(e){return(e==null?void 0:e.fields)??null}function Tn(e){const t=e?M(e.query):null,s=O(t);return g.useMemo(()=>Ie(s.data)??{},[s.data])}function En(e){const t=e?M(e.query):null,s=O(t);return t?s.isSuccess:!0}function Dn(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 qe(){return n.jsx("nav",{className:"mb-6 text-sm text-fg-dim",children:n.jsx(R,{to:"/notes",className:"focus-ring hover:text-accent",children:"← All notes"})})}function Hn(){const{id:e}=xt(),t=Me(a=>a.getActiveVault()),s=pt(e);return t?s.data?n.jsx(Mn,{note:s.data}):n.jsxs("div",{className:"page",children:[n.jsx(qe,{}),s.isPending?n.jsx(Pn,{}):s.isError?n.jsx(_e,{title:"Couldn't load this view",message:s.error instanceof Error?s.error.message:void 0,retry:()=>s.refetch()}):n.jsx(F,{title:"View not found",description:"It may have been deleted or moved."})]}):n.jsx(ht,{to:"/",replace:!0})}function Pn(){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 Mn({note:e}){const t=g.useMemo(()=>Nt(e),[e]);return n.jsx(_n,{def:t,backingNote:e,nav:n.jsx(qe,{})})}function _n({def:e,backingNote:t,pageSize:s,total:a,nav:r}){var de;const i=Me(w=>w.getActiveVault()),{roles:l}=ct((i==null?void 0:i.id)??null),o=typeof s=="number"&&s>0,[u,c]=g.useState(0),[p,x]=dt(),d=g.useMemo(()=>ut(p),[p]),h=g.useMemo(()=>ke(e,gn(p)),[e,p]),j=(w,E)=>{const $=bn(w);for(const[A,L]of wt(E))$.append(A,L);x($,{replace:!0})},y=w=>j(h,w),f=w=>{j(ke(e,w),d)},b=g.useMemo(()=>te(e,h),[e,h]),v=g.useMemo(()=>JSON.stringify({q:b.query,r:d}),[b.query,d]);g.useEffect(()=>{c(0)},[v]);const m=g.useMemo(()=>!o||!b.query?b:{...b,query:{...b.query,offset:u,limit:s+1}},[o,b,u,s]),N=mt(m,d,{live:!o}),S=g.useMemo(()=>o&&N.data?N.data.slice(0,s):N.data,[o,N.data,s]),ne=(S==null?void 0:S.length)??0,se=o?(((de=N.data)==null?void 0:de.length)??0)>s:!1,ze=pe(d),Ge=o&&!se?u+ne:void 0,Ue=ze?void 0:a,T=$n(b),Ye=Tn(b),ae=[...b.problems,...N.problems],re=g.useMemo(()=>S?Dn(S,l.pinned,Pe(b.query)):{pinned:[],rest:[]},[S,l.pinned,b.query]),We=t!==null,ie=(Oe(h)||pe(d))&&We,[Qe,le]=g.useState(!1),oe=()=>x(new URLSearchParams,{replace:!0}),_=g.useMemo(()=>M(b.query),[b.query]),ce=En(b),[G,U]=g.useState(null),He=w=>{var L,ue;const E=G;if(!E)return;const $=Object.entries(w),A=E==="date"?(L=$.find(([,D])=>D.type==="date"))==null?void 0:L[0]:(ue=$.find(([,D])=>{var me;return(((me=D.enum)==null?void 0:me.length)??0)>0})??$.find(([,D])=>D.type!=="date"))==null?void 0:ue[0];A&&f({...h,[E==="group"?"groupBy":"dateField"]:A})},Je=b.kind==="board"||b.kind==="table";return n.jsxs("div",{className:Je?"page page-wide":"page",children:[r,n.jsxs("article",{className:ie?"pb-20":void 0,children:[n.jsx(Ln,{def:b,backingNote:t,count:Ue}),n.jsxs("div",{className:"mb-1 flex flex-wrap items-center gap-x-2 gap-y-2 py-1",children:[n.jsx(ln,{kind:b.kind,onSwitch:w=>f(Nn(e,h,w,T)),dirty:e.kind!==b.kind}),b.kind==="board"?n.jsx(xn,{value:b.groupBy,fields:T,onChange:w=>f({...h,groupBy:w}),dirty:e.groupBy!==b.groupBy,createTag:_,schemaReady:ce,onAddField:()=>U("group")}):null,b.kind==="calendar"?n.jsx(pn,{value:b.dateField,fields:T,onChange:w=>f({...h,dateField:w}),dirty:e.dateField!==b.dateField,createTag:_,schemaReady:ce,onAddField:()=>U("date")}):null,n.jsx(an,{fields:T,schemaFields:Ye,onChange:w=>f({...h,fields:w}),dirty:e.fields!==b.fields})]}),n.jsx(On,{def:e,refinements:d,onChange:y}),ae.length>0?n.jsx(Fn,{problems:ae}):null,n.jsx("div",{className:"mt-6",children:n.jsx(Vn,{def:b,data:S,isPending:N.isPending,isError:N.isError,error:N.error,retry:N.refetch,viewResultsKey:N.queryKey,fields:T,pinned:re.pinned,rest:re.rest,roles:l})}),o?n.jsx(Bn,{offset:u,shown:ne,total:Ge,hasPrev:u>0,hasNext:se,onPrev:()=>c(w=>Math.max(0,w-s)),onNext:()=>c(w=>w+s)}):null,ie?n.jsx(An,{onSave:()=>le(!0),onRevert:oe}):null,Qe&&t?n.jsx(Un,{note:t,def:e,draft:h,refinements:d,roles:l,onClose:()=>le(!1),onSaved:oe}):null,G&&_?n.jsx(Ct,{tagName:_,intent:G,onSaved:He,onClose:()=>U(null)}):null]})]})}function An({onSave:e,onRevert:t}){const s=gt(a=>a.setShown);return g.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 md:bottom-0 md: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 Ln({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(ft,{kind:e.kind,hueTag:Ae(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(R,{to:`/n/${encodeURIComponent(t.id)}/edit`,className:"btn btn-secondary btn-touch",children:"Edit view note"}):null]})}function Bn({offset:e,shown:t,total:s,hasPrev:a,hasNext:r,onPrev:i,onNext:l}){const o=t>0?e+1:0,u=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}–${u} of ${s.toLocaleString()}`:`Showing ${o}–${u}`:""}),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 Fn({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 Vn({def:e,data:t,isPending:s,isError:a,error:r,retry:i,viewResultsKey:l,fields:o,pinned:u,rest:c,roles:p}){if(e.query===null)return n.jsx(F,{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(_e,{title:"Couldn't run this view",message:r instanceof Error?r.message:void 0,retry:i});if(!t||u.length===0&&c.length===0)return n.jsx(F,{title:"No notes match this view yet."});const x=[...u,...c];switch(e.kind){case"board":if(e.groupBy)return n.jsx(Qt,{notes:x,laneBy:e.groupBy,subjectTag:Ae(e.query),roles:p,viewResultsKey:l,fields:o});break;case"gallery":return n.jsx(rn,{notes:x,roles:p,viewResultsKey:l,fields:o});case"table":return n.jsx(hn,{notes:x,roles:p,viewResultsKey:l,fields:o});case"calendar":return n.jsx(Zt,{notes:x,dateField:e.dateField||null,roles:p,viewResultsKey:l,fields:o})}return n.jsx(Rn,{pinned:u,rest:c,roles:p,viewResultsKey:l,fields:o})}function Rn({pinned:e,rest:t,roles:s,viewResultsKey:a,fields:r}){const i=l=>r.length>0?n.jsx(P,{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(he,{"aria-label":"Pinned notes",children:e.map(l=>n.jsx(fe,{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(he,{"aria-label":"View results",children:t.map(l=>n.jsx(fe,{note:l,pinnedTag:s.pinned,archivedTag:s.archived,footer:i(l)},l.id))})}):null]})}function On({def:e,refinements:t,onChange:s}){const a=g.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(In,{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(Y,{label:`+#${i}`,onRemove:()=>s({...t,addTags:t.addTags.filter(l=>l!==i)})},`add-${i}`)),t.search?n.jsx(Y,{label:`"${t.search}"`,onRemove:()=>s({...t,search:void 0})}):null,t.sort?n.jsx(Y,{label:`sorted by ${t.sort==="desc"?"newest":"oldest"}`,onRemove:()=>s({...t,sort:void 0})}):null,n.jsx(qn,{onAdd:i=>s({...t,addTags:[...t.addTags,i]})}),n.jsx(zn,{value:t.search??"",onChange:i=>s({...t,search:i||void 0})}),n.jsx(Gn,{value:t.sort,onChange:i=>s({...t,sort:i})})]})}function In({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 qn({onAdd:e}){const[t,s]=g.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 zn({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 Gn({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 Un({note:e,def:t,draft:s,refinements:a,roles:r,onClose:i,onSaved:l}){const o=Ce(m=>m.push),u=yt(),c=jt(e,u),[p,x]=g.useState(c),[d,h]=g.useState(`${t.title} (copy)`),[j,y]=g.useState(!1),f=Se(e.id),b=vt(),v=async()=>{y(!0);try{const m=kt(t.query,a);p==="update"?(await f.mutateAsync({metadata:wn(t,s,m),...e.updatedAt?{if_updated_at:e.updatedAt}:{force:!0}}),o(`Updated "${t.title}".`,"success")):(await b.mutateAsync({content:"",path:St(d),tags:[r.view],metadata:kn(te(t,s),m)}),o(`Saved "${d}".`,"success")),l(),i()}catch(m){o(`Could not save: ${m.message}`,"error")}finally{y(!1)}};return n.jsx("div",{className:"dialog-overlay",role:"dialog","aria-labelledby":"save-view-title",onMouseDown:m=>{m.target===m.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:()=>x("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:()=>x("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:d,onChange:m=>h(m.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"&&!d.trim(),className:"btn btn-primary btn-touch",children:j?"Saving…":"Save"})]})]})})}export{_n as ViewCanvas,Hn 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)}.-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{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing) * 2)}.w-2\/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-14{width:calc(var(--spacing) * 14)}.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-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-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}.flex-shrink,.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-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}: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-warning\){border-color:var(--color-warning)}.border-\[--color-danger-border\]{border-color:--color-danger-border}.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-warning-soft\){background-color:var(--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-light{background-color:var(--color-border-light)}.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{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-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-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pb-\[calc\(0\.75rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(.75rem + env(safe-area-inset-bottom))}.pb-\[calc\(0\.375rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(.375rem + env(safe-area-inset-bottom))}.pb-\[calc\(1rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(1rem + 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)}.pl-11{padding-left:calc(var(--spacing) * 11)}.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-on-accent\]{color:--color-on-accent}.text-\[--color-x\]{color:--color-x}.text-accent{color:var(--color-accent)}.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-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-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-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 not all and (min-width:820px){.max-\[820px\]\:flex{display:flex}}@media(min-width:900px){.min-\[900px\]\:flex{display:flex}.min-\[900px\]\:hidden{display:none}}@media(min-width:40rem){.sm\:absolute{position:absolute}.sm\:top-full{top:100%}.sm\:right-0{right:0}.sm\:right-auto{right:auto}.sm\:bottom-auto{bottom:auto}.sm\:left-auto{left:auto}.sm\:mt-1{margin-top:var(--spacing)}.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:max-h-80{max-height:calc(var(--spacing) * 80)}.sm\:max-h-\[30rem\]{max-height:30rem}.sm\:w-56{width:calc(var(--spacing) * 56)}.sm\:w-60{width:calc(var(--spacing) * 60)}.sm\:w-\[26rem\]{width:26rem}.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)}.sm\:pb-4{padding-bottom:calc(var(--spacing) * 4)}}@media(min-width:48rem){.md\:sticky{position:sticky}.md\:top-6{top:calc(var(--spacing) * 6)}.md\:right-6{right:calc(var(--spacing) * 6)}.md\:bottom-0{bottom:0}.md\:bottom-6{bottom:calc(var(--spacing) * 6)}.md\:-mx-8{margin-inline:calc(var(--spacing) * -8)}.md\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.md\:block{display:block}.md\:flex{display:flex}.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-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\:pb-0{padding-bottom:0}.md\:pb-\[env\(safe-area-inset-bottom\)\]{padding-bottom:env(safe-area-inset-bottom)}.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\: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-8{padding-bottom:calc(var(--spacing) * 8)}.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:""}