@dendelion/paper-camp 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/dist/app/assets/index-BK4XPXt_.js +4 -0
- package/dist/app/assets/index-BK4XPXt_.js.map +1 -0
- package/dist/app/assets/index-BZnU3b_x.js +2 -0
- package/dist/app/assets/index-BZnU3b_x.js.map +1 -0
- package/dist/app/assets/index-BxQBW2Oi.js +2 -0
- package/dist/app/assets/index-BxQBW2Oi.js.map +1 -0
- package/dist/app/assets/{index-D_Lo8ptS.js → index-COEivZHG.js} +4 -4
- package/dist/app/assets/{index-D_Lo8ptS.js.map → index-COEivZHG.js.map} +1 -1
- package/dist/app/assets/index-COQOoPiS.js +2 -0
- package/dist/app/assets/{index-BHmWkgBW.js.map → index-COQOoPiS.js.map} +1 -1
- package/dist/app/assets/index-DIlqYxon.js +7 -0
- package/dist/app/assets/index-DIlqYxon.js.map +1 -0
- package/dist/app/assets/index-VXeQcBh1.js +2 -0
- package/dist/app/assets/index-VXeQcBh1.js.map +1 -0
- package/dist/app/assets/{index-DMDqfoCe.js → index-vgBxkLmQ.js} +2 -2
- package/dist/app/assets/{index-DMDqfoCe.js.map → index-vgBxkLmQ.js.map} +1 -1
- package/dist/app/assets/main-DEUaro51.css +1 -0
- package/dist/app/assets/main-s2b5XHSS.js +425 -0
- package/dist/app/assets/main-s2b5XHSS.js.map +1 -0
- package/dist/app/assets/{sidebar-section-B-A20bg9.js → sidebar-section-4MxZoa3M.js} +2 -2
- package/dist/app/assets/{sidebar-section-B-A20bg9.js.map → sidebar-section-4MxZoa3M.js.map} +1 -1
- package/dist/app/index.html +6 -6
- package/dist/app/toolbar.js +13775 -5454
- package/dist/app/toolbar.js.map +1 -1
- package/dist/chunks/{phase-progress.DPAZ01Gg.js → phase-progress.DimXpZFz.js} +1337 -1300
- package/dist/chunks/phase-progress.DimXpZFz.js.map +1 -0
- package/dist/cli/index.js +5289 -5105
- package/dist/cli/index.js.map +1 -1
- package/dist/core/corpus-format.d.ts +14 -0
- package/dist/core/corpus-format.d.ts.map +1 -1
- package/dist/core/entity-view.d.ts +6 -0
- package/dist/core/entity-view.d.ts.map +1 -0
- package/dist/core/git-log.d.ts +2 -0
- package/dist/core/git-log.d.ts.map +1 -1
- package/dist/core/git-pr/pr-lookup.d.ts.map +1 -1
- package/dist/core/index.js +106 -104
- package/dist/core/issues.d.ts +2 -3
- package/dist/core/issues.d.ts.map +1 -1
- package/dist/core/parse/parser.d.ts.map +1 -1
- package/dist/core/parse/schemas.d.ts +11 -0
- package/dist/core/parse/schemas.d.ts.map +1 -1
- package/dist/core/phase-run.d.ts +1 -0
- package/dist/core/phase-run.d.ts.map +1 -1
- package/dist/core/readers.d.ts +4 -3
- package/dist/core/readers.d.ts.map +1 -1
- package/dist/core/release-notes.d.ts +2 -0
- package/dist/core/release-notes.d.ts.map +1 -1
- package/dist/core/roadmap.d.ts +21 -0
- package/dist/core/roadmap.d.ts.map +1 -1
- package/dist/core/run-order.d.ts +2 -1
- package/dist/core/run-order.d.ts.map +1 -1
- package/dist/core/scaffold/scaffold.d.ts +1 -1
- package/dist/core/scaffold/scaffold.d.ts.map +1 -1
- package/dist/core/sections.d.ts.map +1 -1
- package/dist/core/serialize/entity-file.d.ts +79 -0
- package/dist/core/serialize/entity-file.d.ts.map +1 -0
- package/dist/core/serialize/index.d.ts +1 -0
- package/dist/core/serialize/index.d.ts.map +1 -1
- package/dist/core/serialize/serializer.d.ts +1 -76
- package/dist/core/serialize/serializer.d.ts.map +1 -1
- package/dist/core/stats.d.ts +2 -0
- package/dist/core/stats.d.ts.map +1 -1
- package/dist/core/status/status.d.ts +18 -1
- package/dist/core/status/status.d.ts.map +1 -1
- package/dist/types/index.d.ts +36 -18
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +16 -15
- package/dist/types/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/app/assets/index-3pzg7Iyw.js +0 -2
- package/dist/app/assets/index-3pzg7Iyw.js.map +0 -1
- package/dist/app/assets/index-BHmWkgBW.js +0 -2
- package/dist/app/assets/index-BuzzfADD.js +0 -2
- package/dist/app/assets/index-BuzzfADD.js.map +0 -1
- package/dist/app/assets/index-CkLeljbk.js +0 -2
- package/dist/app/assets/index-CkLeljbk.js.map +0 -1
- package/dist/app/assets/index-DfekHwwU.js +0 -7
- package/dist/app/assets/index-DfekHwwU.js.map +0 -1
- package/dist/app/assets/index-Gi97Lmex.js +0 -4
- package/dist/app/assets/index-Gi97Lmex.js.map +0 -1
- package/dist/app/assets/main-Bm0W4ucz.css +0 -1
- package/dist/app/assets/main-DP_okYxh.js +0 -215
- package/dist/app/assets/main-DP_okYxh.js.map +0 -1
- package/dist/chunks/phase-progress.DPAZ01Gg.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DfekHwwU.js","sources":["../../../src/app/features/docs/components/docs-search.tsx","../../../src/app/features/docs/hooks/use-release-notes.ts","../../../src/app/features/docs/components/release-notes-detail.tsx","../../../src/app/features/docs/components/repo-doc-detail.tsx","../../../src/app/features/docs/docs-page.tsx","../../../src/app/features/docs/components/docs-sidebar.tsx"],"sourcesContent":["import { useAppStore } from '@/app/stores/app-store';\nimport { Button } from '@dendelion/paper-ui';\nimport { useNavigate } from '@tanstack/react-router';\n\ninterface SearchMatch {\n title: string;\n snippet: string;\n}\n\ninterface DocsSearchProps {\n query: string;\n}\n\nconst searchIn = (text: string, query: string): boolean =>\n text.toLowerCase().includes(query.toLowerCase());\n\nconst snippet = (text: string, query: string, maxLen = 120): string => {\n const idx = text.toLowerCase().indexOf(query.toLowerCase());\n if (idx === -1) return text.slice(0, maxLen);\n const start = Math.max(0, idx - 40);\n const end = Math.min(text.length, idx + query.length + 40);\n let s = text.slice(start, end);\n if (start > 0) s = `…${s}`;\n if (end < text.length) s = `${s}…`;\n return s;\n};\n\nexport const DocsSearch = ({ query }: DocsSearchProps) => {\n const repoDocs = useAppStore((s) => s.repoDocs);\n const setActiveDocTitle = useAppStore((s) => s.setActiveDocTitle);\n const setDocSearchQuery = useAppStore((s) => s.setDocSearchQuery);\n const navigate = useNavigate();\n\n const results: SearchMatch[] = [];\n\n for (const f of repoDocs) {\n if (searchIn(f.name, query) || searchIn(f.content, query)) {\n results.push({\n title: f.name,\n snippet: snippet(f.content, query),\n });\n }\n }\n\n const handleSelect = (title: string) => {\n navigate({ to: '/docs/$section', params: { section: 'repo-docs' } });\n setActiveDocTitle(title);\n setDocSearchQuery('');\n };\n\n if (results.length === 0) {\n return <p className=\"opacity-50\">No results found for \"{query}\".</p>;\n }\n\n return (\n <div>\n <p className=\"mb-3 text-sm opacity-50\">\n {results.length} result{results.length === 1 ? '' : 's'} for \"{query}\"\n </p>\n <div className=\"flex flex-col gap-1\">\n {results.map((m) => (\n <Button\n key={m.title}\n variant=\"ghost\"\n size=\"small\"\n fullWidth\n onClick={() => handleSelect(m.title)}\n className=\"justify-start px-3 py-2\"\n >\n <span className=\"text-left\">\n <span className=\"mb-[0.2rem] block font-display-luminari text-[0.95rem] font-semibold\">\n {m.title}\n </span>\n <span className=\"text-sm opacity-60\">{m.snippet}</span>\n </span>\n </Button>\n ))}\n </div>\n </div>\n );\n};\n","import { fetchReleaseNotes } from '@/app/services/release-notes-api';\nimport type { ReleaseNoteSection } from '@/types/index';\nimport { useEffect, useState } from 'react';\n\nexport const useReleaseNotes = (version: string | null): ReleaseNoteSection[] | null => {\n const [sections, setSections] = useState<ReleaseNoteSection[] | null>(null);\n\n useEffect(() => {\n setSections(null);\n if (!version) return;\n let cancelled = false;\n fetchReleaseNotes(version)\n .then((result) => {\n if (!cancelled) setSections(result);\n })\n .catch(() => {});\n return () => {\n cancelled = true;\n };\n }, [version]);\n\n return sections;\n};\n","import { detailHeadingClassName } from '@/app/components/detail-heading-style';\nimport { Markdown } from '@/app/components/markdown';\nimport { useAppStore } from '@/app/stores/app-store';\nimport { useReleaseNotes } from '../hooks/use-release-notes';\n\nexport const ReleaseNotesDetail = () => {\n const version = useAppStore((s) => s.activeReleaseVersion);\n const sections = useReleaseNotes(version);\n if (!version) return null;\n\n if (!sections) {\n return (\n <div>\n <h2 className={`${detailHeadingClassName} m-0 mb-4`}>{version}</h2>\n <p className=\"opacity-50\">No release notes found for {version}.</p>\n </div>\n );\n }\n\n if (sections.length === 0) {\n return (\n <div>\n <h2 className={`${detailHeadingClassName} m-0 mb-4`}>{version}</h2>\n <p className=\"opacity-50\">No ideas could be resolved for this release.</p>\n </div>\n );\n }\n\n const markdown = sections\n .map(\n (section) =>\n `### ${section.label}\\n\\n${section.ideas.map((idea) => `- ${idea.title} (${idea.id})`).join('\\n')}`,\n )\n .join('\\n\\n');\n\n return (\n <div>\n <h2 className={`${detailHeadingClassName} m-0 mb-4`}>{version}</h2>\n <div className=\"text-base leading-[1.7] text-ink-900\">\n <Markdown>{markdown}</Markdown>\n </div>\n </div>\n );\n};\n","import { detailHeadingClassName } from '@/app/components/detail-heading-style';\nimport { Markdown } from '@/app/components/markdown';\nimport { useAppStore } from '@/app/stores/app-store';\n\nexport const RepoDocDetail = () => {\n const repoDocs = useAppStore((s) => s.repoDocs);\n const activeDocTitle = useAppStore((s) => s.activeDocTitle);\n\n const file = repoDocs.find((f) => f.name === activeDocTitle);\n if (!file) return null;\n\n const isMarkdown = file.name.endsWith('.md');\n\n return (\n <div>\n <h2 className={`${detailHeadingClassName} m-0 mb-4`}>{file.name}</h2>\n\n {isMarkdown ? (\n <div className=\"text-base leading-[1.7] text-ink-900\">\n <Markdown>{file.content}</Markdown>\n </div>\n ) : (\n <pre className=\"overflow-x-auto whitespace-pre-wrap rounded-md bg-black/[4%] p-4 font-mono text-xs leading-normal\">\n {file.content}\n </pre>\n )}\n </div>\n );\n};\n","import { PageTitle } from '@/app/components/page-title';\nimport { useResolvedDocSection } from '@/app/hooks';\nimport { useAppStore } from '@/app/stores/app-store';\nimport { Breadcrumb } from '@dendelion/paper-ui';\nimport { useNavigate } from '@tanstack/react-router';\nimport { DocsSearch } from './components/docs-search';\nimport { ReleaseNotesDetail } from './components/release-notes-detail';\nimport { RepoDocDetail } from './components/repo-doc-detail';\n\nexport const DocsPage = () => {\n const docSearchQuery = useAppStore((s) => s.docSearchQuery);\n const activeDocTitle = useAppStore((s) => s.activeDocTitle);\n const activeReleaseVersion = useAppStore((s) => s.activeReleaseVersion);\n const navigate = useNavigate();\n const activeDocSection = useResolvedDocSection();\n\n const handleBackToDocs = () => navigate({ to: '/docs' });\n\n if (docSearchQuery.trim()) {\n return (\n <div>\n <DocsSearch query={docSearchQuery} />\n </div>\n );\n }\n\n if (activeDocSection === 'repo-docs' && activeDocTitle) {\n return (\n <div>\n <div className=\"mb-4\">\n <Breadcrumb\n items={[\n { id: 'docs', label: 'Docs', onClick: handleBackToDocs },\n { id: 'repo-doc', label: activeDocTitle },\n ]}\n />\n </div>\n <RepoDocDetail />\n </div>\n );\n }\n\n if (activeDocSection === 'release-notes' && activeReleaseVersion) {\n return (\n <div>\n <div className=\"mb-4\">\n <Breadcrumb\n items={[\n { id: 'docs', label: 'Docs', onClick: handleBackToDocs },\n { id: 'release-notes', label: activeReleaseVersion },\n ]}\n />\n </div>\n <ReleaseNotesDetail />\n </div>\n );\n }\n\n return (\n <div>\n <PageTitle>Docs</PageTitle>\n <p className=\"opacity-50\">\n Pick a doc from the sidebar — start with a repo doc if you're new here.\n </p>\n </div>\n );\n};\n","import { useResolvedDocSection } from '@/app/hooks';\nimport { useAppStore } from '@/app/stores/app-store';\nimport { Input, ListItem } from '@dendelion/paper-ui';\nimport { useNavigate } from '@tanstack/react-router';\nimport { useEffect } from 'react';\nimport { SidebarSection } from '../../plans/components/sidebar-section';\n\nconst simplecaseLabel = (name: string) =>\n name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();\n\nconst EmptyState = ({ children }: { children: React.ReactNode }) => (\n <span className=\"block px-3 py-1 text-sm italic opacity-[0.35]\">{children}</span>\n);\n\nexport const DocsSidebar = () => {\n const repoDocs = useAppStore((s) => s.repoDocs);\n const repoDocsLoading = useAppStore((s) => s.repoDocsLoading);\n const loadRepoDocs = useAppStore((s) => s.loadRepoDocs);\n const activeDocTitle = useAppStore((s) => s.activeDocTitle);\n const setActiveDocTitle = useAppStore((s) => s.setActiveDocTitle);\n const docSearchQuery = useAppStore((s) => s.docSearchQuery);\n const setDocSearchQuery = useAppStore((s) => s.setDocSearchQuery);\n const releaseVersions = useAppStore((s) => s.releaseVersions);\n const releaseVersionsLoading = useAppStore((s) => s.releaseVersionsLoading);\n const loadReleaseVersions = useAppStore((s) => s.loadReleaseVersions);\n const activeReleaseVersion = useAppStore((s) => s.activeReleaseVersion);\n const setActiveReleaseVersion = useAppStore((s) => s.setActiveReleaseVersion);\n const activeDocSection = useResolvedDocSection();\n const navigate = useNavigate();\n\n useEffect(() => {\n loadRepoDocs();\n }, [loadRepoDocs]);\n\n useEffect(() => {\n loadReleaseVersions();\n }, [loadReleaseVersions]);\n\n return (\n <>\n <div className=\"flex h-[64px] items-center\">\n <Input\n size=\"small\"\n aria-label=\"Search docs\"\n placeholder=\"Search docs…\"\n value={docSearchQuery}\n onChange={(e) => setDocSearchQuery(e.target.value)}\n />\n </div>\n\n <SidebarSection label=\"Repo Docs\">\n {repoDocsLoading && repoDocs.length === 0 ? (\n <EmptyState>Loading…</EmptyState>\n ) : repoDocs.length > 0 ? (\n repoDocs.map((f) => (\n <ListItem\n key={f.name}\n size=\"small\"\n className=\"pc-row text-xs\"\n active={activeDocSection === 'repo-docs' && activeDocTitle === f.name}\n onClick={() => {\n navigate({ to: '/docs/$section', params: { section: 'repo-docs' } });\n setActiveDocTitle(f.name);\n }}\n >\n {simplecaseLabel(f.name)}\n </ListItem>\n ))\n ) : (\n <EmptyState>No repo docs found</EmptyState>\n )}\n </SidebarSection>\n\n <SidebarSection label=\"Releases\">\n {releaseVersionsLoading && releaseVersions.length === 0 ? (\n <EmptyState>Loading…</EmptyState>\n ) : releaseVersions.length > 0 ? (\n releaseVersions.map((version) => (\n <ListItem\n key={version}\n size=\"small\"\n className=\"pc-row text-xs\"\n active={activeDocSection === 'release-notes' && activeReleaseVersion === version}\n onClick={() => {\n navigate({ to: '/docs/$section', params: { section: 'release-notes' } });\n setActiveReleaseVersion(version);\n }}\n >\n {version}\n </ListItem>\n ))\n ) : (\n <EmptyState>No releases yet</EmptyState>\n )}\n </SidebarSection>\n </>\n );\n};\n"],"names":["searchIn","text","query","snippet","maxLen","idx","start","end","s","DocsSearch","repoDocs","useAppStore","setActiveDocTitle","setDocSearchQuery","navigate","useNavigate","results","f","handleSelect","title","jsxs","m","jsx","Button","useReleaseNotes","version","sections","setSections","useState","useEffect","cancelled","fetchReleaseNotes","result","ReleaseNotesDetail","detailHeadingClassName","markdown","section","idea","Markdown","RepoDocDetail","activeDocTitle","file","isMarkdown","DocsPage","docSearchQuery","activeReleaseVersion","activeDocSection","useResolvedDocSection","handleBackToDocs","Breadcrumb","PageTitle","simplecaseLabel","name","EmptyState","children","DocsSidebar","repoDocsLoading","loadRepoDocs","releaseVersions","releaseVersionsLoading","loadReleaseVersions","setActiveReleaseVersion","Fragment","Input","e","SidebarSection","ListItem"],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{u as g,m as L,r as c,C as O,j as e,H as P,x as T,J as y,I as M,K as B,a as D,F,P as S,L as U,N as $,M as A,g as k,S as N,O as q,R as _,Q as V,T as H,i as z,U as J,V as K,W as G,p as I}from"./main-DP_okYxh.js";import{X as xe}from"./main-DP_okYxh.js";const w="__no-subject__",W=({horizonTitle:s,item:t,candidateName:o,onClose:d,onPromoted:a})=>{const m=g(x=>x.promoteRoadmapItem),i=g(x=>x.launchIdeaExtend),{subjects:b,available:j}=L(),[u,h]=c.useState(w),[f,n]=c.useState(!1),[p,v]=c.useState(null),{toast:l}=O();c.useEffect(()=>{t&&(h(o?t.name:w),n(!1),v(null))},[t,o]);const r=async()=>{if(!(!t||!s)){n(!0),v(null);try{const x=await m(s,t,u===w?void 0:u,o??void 0),C=g.getState().ideaEntries.find(R=>R.id===x);if(C)try{await i(x,M(C,s))}catch(R){l({title:"Idea created, but the refine agent failed to launch",description:B(R.message),variant:"error"})}a(),d()}catch(x){v(x.message)}finally{n(!1)}}};return e.jsx(P,{open:t!==null,onClose:d,title:o??(t==null?void 0:t.name)??"",size:"small",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[!o&&e.jsx("p",{className:"m-0 opacity-80",children:t==null?void 0:t.description}),e.jsx("div",{children:e.jsx(T,{size:"small",value:u,onChange:h,disabled:f||!j,options:[{value:w,label:"No subject"},...!j&&u!==w?[{value:u,label:u}]:[],...b.map(x=>({value:x,label:x}))]})}),p&&e.jsx("p",{className:"m-0 text-watercolor-rose-dark text-sm",children:p}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(y,{type:"button",variant:"ghost",onClick:d,disabled:f,children:"Cancel"}),e.jsx(y,{type:"button",variant:"primary",onClick:r,disabled:f,children:f?"Promoting…":"Promote to idea"})]})]})})},Q=s=>({shipped:s.filter(t=>t.status==="done").length,queued:s.filter(t=>t.status!=="done"&&t.status!=="dropped").length}),X="font-handwritten text-md font-semibold opacity-70 leading-none pt-2 px-1 pb-0",Z=({size:s=14})=>e.jsx("svg",{width:s,height:s,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e.jsx("polyline",{points:"9 18 15 12 9 6"})}),Y=({name:s,onPromote:t})=>e.jsx(_,{size:"small",texture:"kraft",className:"plan-row-card",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"flex-1",children:s}),e.jsx(y,{type:"button",variant:"ghost",size:"small",onClick:t,children:"Promote to idea"})]})}),ee=({onAdd:s})=>{const[t,o]=c.useState(""),[d,a]=c.useState(!1),m=async()=>{if(t.trim()){a(!0);try{await s(t.trim()),o("")}finally{a(!1)}}};return e.jsxs("div",{className:"flex gap-2",children:[e.jsx(z,{size:"small",value:t,onChange:i=>o(i.target.value),onKeyDown:i=>{i.key==="Enter"&&m()},placeholder:"Add option…",disabled:d,className:"flex-1"}),e.jsx(y,{type:"button",variant:"ghost",size:"small",onClick:m,disabled:d||!t.trim(),children:"Add"})]})},se=(s,t)=>{const o=new Set,d=t.map(a=>(a.id&&o.add(a.id),a.idea&&o.add(a.idea),{key:a.title,label:a.title,status:a.status,pr:a.pr,planId:a.id,planTitle:a.title}));for(const a of s)o.has(a.id)||d.push({key:a.id,label:a.id,status:a.status,pr:a.pr});return d},te=({idea:s,onOpen:t})=>e.jsx(_,{size:"small",texture:"kraft",className:"plan-row-card",children:e.jsxs("div",{className:"flex items-center gap-3",children:[t?e.jsx("button",{type:"button",onClick:t,className:"flex-1 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap bg-transparent border-none p-0 cursor-pointer [font:inherit] text-inherit text-left",children:s.label}):e.jsx("span",{className:"flex-1 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap",children:s.label}),s.pr&&e.jsx(V,{pr:s.pr}),e.jsx(k,{size:"small",fillColor:N[s.status].fill,textColor:N[s.status].text,children:H[s.status]})]})}),ae=({done:s,total:t})=>{const o=t>0?Math.round(s/t*100):0;return e.jsx("div",{className:"w-24 h-1.5 rounded-full bg-black/[0.08] overflow-hidden shrink-0",children:e.jsx("div",{className:`h-full rounded-full ${t>0?"bg-watercolor-green":"bg-transparent"}`,style:{width:`${o}%`}})})},ne=({item:s,graduated:t,highlighted:o,onPromote:d,onPromoteCandidate:a,onAddCandidate:m,onOpenGraduated:i})=>{const[b,j]=c.useState(o),{shipped:u,queued:h}=Q(t),f=s.candidates.length,n=se(s.links,t);return c.useEffect(()=>{o&&j(!0)},[o]),e.jsxs("div",{className:`border-b border-black/10 last:border-b-0 ${o?"roadmap-item-highlighted outline outline-2 outline-offset-[-2px] outline-[rgba(200,154,90,0.5)]":""}`,children:[e.jsxs("button",{type:"button","aria-expanded":b,onClick:()=>j(p=>!p),className:"flex w-full items-center gap-3 py-2.5 px-0 bg-transparent border-none cursor-pointer text-left [font:inherit] text-inherit",children:[e.jsx("span",{className:`inline-flex items-center opacity-50 shrink-0 ${b?"rotate-90":""}`,children:e.jsx(Z,{})}),e.jsx("span",{className:"font-semibold flex-1 min-w-0 truncate",children:s.name}),e.jsx(ae,{done:s.rollup.done,total:s.rollup.total}),h>0&&e.jsxs(k,{size:"small",fillColor:N.planned.fill,textColor:N.planned.text,children:[h," in queue"]}),u>0&&e.jsxs(k,{size:"small",fillColor:N.done.fill,textColor:N.done.text,children:[u," shipped"]}),f>0&&e.jsxs(k,{size:"small",fillColor:"rgba(0, 0, 0, 0.06)",textColor:"rgba(0, 0, 0, 0.55)",children:[f," candidate",f===1?"":"s"]})]}),b&&e.jsxs("div",{className:"flex flex-col gap-1 pl-6 pb-4",children:[e.jsx("span",{className:"text-sm opacity-70",children:s.description}),n.map(p=>e.jsx(te,{idea:p,onOpen:p.planTitle?()=>i(p.planId,p.planTitle):void 0},p.key)),s.candidates.map(p=>e.jsx(Y,{name:p,onPromote:()=>a(p)},p)),e.jsx(ee,{onAdd:m}),e.jsx(y,{type:"button",variant:"ghost",size:"small",onClick:d,className:"self-start",children:"Promote to idea"})]})]})},le=({goal:s})=>{const[t,o]=c.useState(!1),[d,...a]=s.split(/\n{2,}/),m=a.length>0;return e.jsxs("div",{className:"mb-6 pb-4 border-b border-black/[8%]",children:[e.jsx("span",{className:"font-handwritten text-xs font-semibold opacity-[0.55]",children:"The goal"}),e.jsxs("div",{className:"text-sm leading-relaxed opacity-80 mt-2",children:[e.jsx(A,{children:d}),t&&m&&e.jsx(A,{children:a.join(`
|
|
2
|
-
|
|
3
|
-
`)})]}),m&&e.jsx("button",{type:"button",onClick:()=>o(i=>!i),className:"bg-transparent border-none p-0 mt-2 cursor-pointer text-2xs opacity-[0.65] underline",children:t?"Show less":"Show more"})]})},de=()=>{const s=g(l=>l.roadmap),t=g(l=>l.roadmapError),o=g(l=>l.loadRoadmap),d=g(l=>l.roadmapFilters),[a,m]=c.useState(null),i=g(l=>l.plans),b=D(),{item:j}=F({from:"/roadmap"}),u=c.useRef(null);if(c.useEffect(()=>{o()},[o]),c.useEffect(()=>{var r;if(!j||!s)return;const l=(r=u.current)==null?void 0:r.querySelector(".roadmap-item-highlighted");l==null||l.scrollIntoView({behavior:"smooth",block:"center"})},[j,s]),t)return e.jsxs("div",{children:[e.jsx(S,{children:"Roadmap"}),e.jsx("p",{className:"opacity-50",children:"Couldn't load the roadmap — the server may need a restart to pick up new routes."})]});if(!s)return e.jsxs("div",{children:[e.jsx(S,{children:"Roadmap"}),e.jsx("p",{className:"opacity-50",children:"Loading…"})]});if(s.horizons.length===0)return e.jsxs("div",{children:[e.jsx(S,{children:"Roadmap"}),e.jsx("p",{className:"opacity-50",children:"No `ROADMAP.md` found at the project root."})]});const h=l=>(i==null?void 0:i.entries.filter(r=>r.subject===l.name))??[],f=async(l,r,x)=>{await q(l,r,x),await o()},n=U(s,d),p=n.reduce((l,r)=>l+r.items.length,0),v=d.horizons.length>0||d.statuses.length>0;return e.jsxs("div",{ref:u,children:[e.jsx(S,{children:"Roadmap"}),e.jsx(le,{goal:s.goal}),p===0?e.jsx("p",{className:"opacity-50 py-6 px-0 text-center",children:v?"Nothing matches these filters — clear one from the sidebar to see more.":"No roadmap items yet — add one from the sidebar."}):e.jsx("div",{className:"flex flex-col gap-6",children:n.filter(l=>l.items.length>0).map(l=>e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("div",{className:X,children:l.title}),e.jsx("div",{className:"flex flex-col",children:l.items.map(r=>e.jsx(ne,{item:r,graduated:h(r),highlighted:r.name===j,onPromote:()=>m({horizonTitle:l.title,item:r}),onPromoteCandidate:x=>m({horizonTitle:l.title,item:r,candidateName:x}),onAddCandidate:x=>f(l.title,r.name,x),onOpenGraduated:(x,C)=>b({to:"/plans/$planId",params:{planId:$(x,C)}})},r.name))})]},l.title))}),e.jsx(W,{horizonTitle:(a==null?void 0:a.horizonTitle)??null,item:(a==null?void 0:a.item)??null,candidateName:a==null?void 0:a.candidateName,onClose:()=>m(null),onPromoted:o})]})},oe=({open:s,horizonTitles:t,onClose:o})=>{const d=g(r=>r.loadRoadmap),[a,m]=c.useState(t[0]??""),[i,b]=c.useState(""),[j,u]=c.useState(""),[h,f]=c.useState(!1),[n,p]=c.useState(null),v=c.useRef(t);v.current=t,c.useEffect(()=>{s&&(m(v.current[0]??""),b(""),u(""),p(null),f(!1))},[s]);const l=async()=>{if(!(!i.trim()||!a)){f(!0),p(null);try{await J(a,i.trim(),j.trim()),await d(),o()}catch(r){p(r.message)}finally{f(!1)}}};return e.jsx(P,{open:s,onClose:o,title:"Add roadmap item",size:"small",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(T,{size:"small",value:a,onChange:m,disabled:h,options:t.map(r=>({value:r,label:r}))}),e.jsx(z,{size:"small",value:i,onChange:r=>b(r.target.value),placeholder:"Item name…",disabled:h,autoFocus:!0}),e.jsx(z,{size:"small",value:j,onChange:r=>u(r.target.value),onKeyDown:r=>{r.key==="Enter"&&l()},placeholder:"Description…",disabled:h}),n&&e.jsx("p",{className:"m-0 text-watercolor-rose-dark text-sm",children:n}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(y,{type:"button",variant:"ghost",onClick:o,disabled:h,children:"Cancel"}),e.jsx(y,{type:"button",variant:"primary",onClick:l,disabled:h||!i.trim()||!a,children:h?"Adding…":"Add item"})]})]})})},re=["in-progress","review","planned","idea","done","dropped"],E="pc-row-label font-handwritten text-xs font-semibold opacity-[0.45]",ce=()=>{const s=g(n=>n.roadmap),t=g(n=>n.roadmapFilters),o=g(n=>n.toggleRoadmapHorizon),d=g(n=>n.toggleRoadmapStatus),[a,m]=c.useState(!1);if(!s)return null;const i=s.horizons.map(n=>n.title),b=K(s,t),j=G(s,t),u=new Set(t.horizons),h=new Set(t.statuses),f=re.filter(n=>(j[n]??0)>0||h.has(n));return e.jsxs("div",{className:"flex flex-col",children:[e.jsx("div",{className:"flex h-[64px] items-center",children:e.jsx(y,{type:"button",variant:"primary",size:"small",onClick:()=>m(!0),disabled:i.length===0,children:"+ Add item"})}),e.jsxs("div",{children:[e.jsx("div",{className:E,children:"Horizon"}),e.jsx("div",{className:"flex flex-col",children:i.map(n=>e.jsx(I,{size:"small",active:u.has(n),onClick:()=>o(n),className:"pc-row text-xs",action:e.jsx("span",{className:"text-2xs text-ink-500",children:b[n]??0}),children:n},n))})]}),e.jsxs("div",{children:[e.jsx("div",{className:E,children:"Status"}),e.jsxs("div",{className:"flex flex-col",children:[f.length===0&&e.jsx("span",{className:"opacity-50 text-2xs",children:"No linked ideas"}),f.map(n=>e.jsx(I,{size:"small",active:h.has(n),onClick:()=>d(n),className:"pc-row text-xs",icon:e.jsx("span",{className:"w-[9px] h-[9px] rounded-full shrink-0",style:{background:N[n].text}}),action:e.jsx("span",{className:"text-2xs text-ink-500",children:j[n]??0}),children:H[n]},n))]})]}),e.jsx(oe,{open:a,horizonTitles:i,onClose:()=>m(!1)})]})};export{de as RoadmapPage,ce as RoadmapSidebar,xe as useRoadmapItemNames};
|
|
4
|
-
//# sourceMappingURL=index-Gi97Lmex.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Gi97Lmex.js","sources":["../../../src/app/features/roadmap/promote-roadmap-item-modal.tsx","../../../src/app/features/roadmap/roadmap-page.tsx","../../../src/app/features/roadmap/add-roadmap-item-modal.tsx","../../../src/app/features/roadmap/roadmap-sidebar.tsx"],"sourcesContent":["import { buildRoadmapPromotePrompt } from '@/app/features/plans/prompts';\nimport { useSubjectVocabulary } from '@/app/hooks/use-subject-vocabulary';\nimport { useAppStore } from '@/app/stores/app-store';\nimport { oneLineErrorSummary } from '@/app/utils/error-summary';\nimport type { RoadmapItem } from '@/types/index';\nimport { Button, Modal, Select, useToast } from '@dendelion/paper-ui';\nimport { useEffect, useState } from 'react';\n\nconst NO_SUBJECT = '__no-subject__';\n\ninterface PromoteRoadmapItemModalProps {\n horizonTitle: string | null;\n item: RoadmapItem | null;\n candidateName?: string | null;\n onClose: () => void;\n onPromoted: () => void;\n}\n\nexport const PromoteRoadmapItemModal = ({\n horizonTitle,\n item,\n candidateName,\n onClose,\n onPromoted,\n}: PromoteRoadmapItemModalProps) => {\n const promoteRoadmapItem = useAppStore((s) => s.promoteRoadmapItem);\n const launchIdeaExtend = useAppStore((s) => s.launchIdeaExtend);\n const { subjects, available: subjectsAvailable } = useSubjectVocabulary();\n const [subject, setSubject] = useState(NO_SUBJECT);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const { toast } = useToast();\n\n useEffect(() => {\n if (item) {\n // A candidate defaults to its parent item's name — the \"big bet becomes a\n // Subject\" rule — but the picker still lets the user override it.\n setSubject(candidateName ? item.name : NO_SUBJECT);\n setLoading(false);\n setError(null);\n }\n }, [item, candidateName]);\n\n const handlePromote = async () => {\n if (!item || !horizonTitle) return;\n setLoading(true);\n setError(null);\n try {\n const id = await promoteRoadmapItem(\n horizonTitle,\n item,\n subject === NO_SUBJECT ? undefined : subject,\n candidateName ?? undefined,\n );\n const idea = useAppStore.getState().ideaEntries.find((e) => e.id === id);\n if (idea) {\n try {\n await launchIdeaExtend(id, buildRoadmapPromotePrompt(idea, horizonTitle));\n } catch (err) {\n // The idea was created either way — a failed refine launch just means\n // no background research ran, not that the promotion itself failed.\n toast({\n title: 'Idea created, but the refine agent failed to launch',\n description: oneLineErrorSummary((err as Error).message),\n variant: 'error',\n });\n }\n }\n onPromoted();\n onClose();\n } catch (err) {\n setError((err as Error).message);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <Modal\n open={item !== null}\n onClose={onClose}\n title={candidateName ?? item?.name ?? ''}\n size=\"small\"\n >\n <div className=\"flex flex-col gap-4\">\n {!candidateName && <p className=\"m-0 opacity-80\">{item?.description}</p>}\n <div>\n <Select\n size=\"small\"\n value={subject}\n onChange={setSubject}\n disabled={loading || !subjectsAvailable}\n options={[\n { value: NO_SUBJECT, label: 'No subject' },\n ...(!subjectsAvailable && subject !== NO_SUBJECT\n ? [{ value: subject, label: subject }]\n : []),\n ...subjects.map((s) => ({ value: s, label: s })),\n ]}\n />\n </div>\n {error && <p className=\"m-0 text-watercolor-rose-dark text-sm\">{error}</p>}\n <div className=\"flex justify-end gap-2\">\n <Button type=\"button\" variant=\"ghost\" onClick={onClose} disabled={loading}>\n Cancel\n </Button>\n <Button type=\"button\" variant=\"primary\" onClick={handlePromote} disabled={loading}>\n {loading ? 'Promoting…' : 'Promote to idea'}\n </Button>\n </div>\n </div>\n </Modal>\n );\n};\n","import { Markdown } from '@/app/components/markdown';\nimport { PageTitle } from '@/app/components/page-title';\nimport { PrBadge } from '@/app/features/plans/components/pr-badge';\nimport { STATUS_LABEL, STATUS_STAMP } from '@/app/features/plans/constants';\nimport { entityRouteParam } from '@/app/hooks';\nimport { addRoadmapCandidate } from '@/app/services/content/docs-api';\nimport { useAppStore } from '@/app/stores/app-store';\nimport type {\n PlanEntry,\n PlanStatus,\n PrInfo,\n ResolvedRoadmapItem,\n RoadmapLink,\n} from '@/types/index';\nimport { Button, Card, Input, Stamp } from '@dendelion/paper-ui';\nimport { useNavigate, useSearch } from '@tanstack/react-router';\nimport { useEffect, useRef, useState } from 'react';\nimport { PromoteRoadmapItemModal } from './promote-roadmap-item-modal';\nimport { filterHorizons } from './roadmap-filters';\n\nconst graduationCounts = (graduated: PlanEntry[]) => ({\n shipped: graduated.filter((p) => p.status === 'done').length,\n queued: graduated.filter((p) => p.status !== 'done' && p.status !== 'dropped').length,\n});\n\nconst HORIZON_HEADER_CLASSES =\n 'font-handwritten text-md font-semibold opacity-70 leading-none pt-2 px-1 pb-0';\n\nconst ChevronRightIcon = ({ size = 14 }: { size?: number }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n);\n\nconst CandidateRow = ({\n name,\n onPromote,\n}: {\n name: string;\n onPromote: () => void;\n}) => (\n <Card size=\"small\" texture=\"kraft\" className=\"plan-row-card\">\n <div className=\"flex items-center gap-3\">\n <span className=\"flex-1\">{name}</span>\n <Button type=\"button\" variant=\"ghost\" size=\"small\" onClick={onPromote}>\n Promote to idea\n </Button>\n </div>\n </Card>\n);\n\nconst AddCandidateForm = ({ onAdd }: { onAdd: (name: string) => Promise<void> }) => {\n const [name, setName] = useState('');\n const [saving, setSaving] = useState(false);\n\n const handleAdd = async () => {\n if (!name.trim()) return;\n setSaving(true);\n try {\n await onAdd(name.trim());\n setName('');\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <div className=\"flex gap-2\">\n <Input\n size=\"small\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleAdd();\n }}\n placeholder=\"Add option…\"\n disabled={saving}\n className=\"flex-1\"\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"small\"\n onClick={handleAdd}\n disabled={saving || !name.trim()}\n >\n Add\n </Button>\n </div>\n );\n};\n\ninterface MergedIdea {\n key: string;\n label: string;\n status: PlanStatus;\n pr?: PrInfo;\n planId?: string;\n planTitle?: string;\n}\n\nconst mergeIdeas = (links: RoadmapLink[], graduated: PlanEntry[]): MergedIdea[] => {\n const represented = new Set<string>();\n const merged: MergedIdea[] = graduated.map((plan) => {\n if (plan.id) represented.add(plan.id);\n if (plan.idea) represented.add(plan.idea);\n return {\n key: plan.title,\n label: plan.title,\n status: plan.status,\n pr: plan.pr,\n planId: plan.id,\n planTitle: plan.title,\n };\n });\n for (const link of links) {\n if (represented.has(link.id)) continue;\n merged.push({ key: link.id, label: link.id, status: link.status, pr: link.pr });\n }\n return merged;\n};\n\nconst IdeaRow = ({ idea, onOpen }: { idea: MergedIdea; onOpen?: () => void }) => (\n <Card size=\"small\" texture=\"kraft\" className=\"plan-row-card\">\n <div className=\"flex items-center gap-3\">\n {onOpen ? (\n <button\n type=\"button\"\n onClick={onOpen}\n className=\"flex-1 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap bg-transparent border-none p-0 cursor-pointer [font:inherit] text-inherit text-left\"\n >\n {idea.label}\n </button>\n ) : (\n <span className=\"flex-1 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap\">\n {idea.label}\n </span>\n )}\n {idea.pr && <PrBadge pr={idea.pr} />}\n <Stamp\n size=\"small\"\n fillColor={STATUS_STAMP[idea.status].fill}\n textColor={STATUS_STAMP[idea.status].text}\n >\n {STATUS_LABEL[idea.status]}\n </Stamp>\n </div>\n </Card>\n);\n\nconst ProgressBar = ({ done, total }: { done: number; total: number }) => {\n const percent = total > 0 ? Math.round((done / total) * 100) : 0;\n return (\n <div className=\"w-24 h-1.5 rounded-full bg-black/[0.08] overflow-hidden shrink-0\">\n <div\n className={`h-full rounded-full ${total > 0 ? 'bg-watercolor-green' : 'bg-transparent'}`}\n style={{ width: `${percent}%` }}\n />\n </div>\n );\n};\n\nconst RoadmapItemRow = ({\n item,\n graduated,\n highlighted,\n onPromote,\n onPromoteCandidate,\n onAddCandidate,\n onOpenGraduated,\n}: {\n item: ResolvedRoadmapItem;\n graduated: PlanEntry[];\n highlighted: boolean;\n onPromote: () => void;\n onPromoteCandidate: (candidateName: string) => void;\n onAddCandidate: (name: string) => Promise<void>;\n onOpenGraduated: (id: string | undefined, title: string) => void;\n}) => {\n const [expanded, setExpanded] = useState(highlighted);\n const { shipped, queued } = graduationCounts(graduated);\n const candidates = item.candidates.length;\n const ideas = mergeIdeas(item.links, graduated);\n\n useEffect(() => {\n if (highlighted) setExpanded(true);\n }, [highlighted]);\n\n return (\n <div\n className={`border-b border-black/10 last:border-b-0 ${highlighted ? 'roadmap-item-highlighted outline outline-2 outline-offset-[-2px] outline-[rgba(200,154,90,0.5)]' : ''}`}\n >\n <button\n type=\"button\"\n aria-expanded={expanded}\n onClick={() => setExpanded((v) => !v)}\n className=\"flex w-full items-center gap-3 py-2.5 px-0 bg-transparent border-none cursor-pointer text-left [font:inherit] text-inherit\"\n >\n <span\n className={`inline-flex items-center opacity-50 shrink-0 ${expanded ? 'rotate-90' : ''}`}\n >\n <ChevronRightIcon />\n </span>\n <span className=\"font-semibold flex-1 min-w-0 truncate\">{item.name}</span>\n <ProgressBar done={item.rollup.done} total={item.rollup.total} />\n {queued > 0 && (\n <Stamp\n size=\"small\"\n fillColor={STATUS_STAMP.planned.fill}\n textColor={STATUS_STAMP.planned.text}\n >\n {queued} in queue\n </Stamp>\n )}\n {shipped > 0 && (\n <Stamp size=\"small\" fillColor={STATUS_STAMP.done.fill} textColor={STATUS_STAMP.done.text}>\n {shipped} shipped\n </Stamp>\n )}\n {candidates > 0 && (\n <Stamp size=\"small\" fillColor=\"rgba(0, 0, 0, 0.06)\" textColor=\"rgba(0, 0, 0, 0.55)\">\n {candidates} candidate{candidates === 1 ? '' : 's'}\n </Stamp>\n )}\n </button>\n {expanded && (\n <div className=\"flex flex-col gap-1 pl-6 pb-4\">\n <span className=\"text-sm opacity-70\">{item.description}</span>\n {ideas.map((idea) => (\n <IdeaRow\n key={idea.key}\n idea={idea}\n onOpen={\n idea.planTitle\n ? () => onOpenGraduated(idea.planId, idea.planTitle as string)\n : undefined\n }\n />\n ))}\n {item.candidates.map((candidateName) => (\n <CandidateRow\n key={candidateName}\n name={candidateName}\n onPromote={() => onPromoteCandidate(candidateName)}\n />\n ))}\n <AddCandidateForm onAdd={onAddCandidate} />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"small\"\n onClick={onPromote}\n className=\"self-start\"\n >\n Promote to idea\n </Button>\n </div>\n )}\n </div>\n );\n};\n\nconst GoalBanner = ({ goal }: { goal: string }) => {\n const [expanded, setExpanded] = useState(false);\n const [firstParagraph, ...restParagraphs] = goal.split(/\\n{2,}/);\n const hasMore = restParagraphs.length > 0;\n\n return (\n <div className=\"mb-6 pb-4 border-b border-black/[8%]\">\n <span className=\"font-handwritten text-xs font-semibold opacity-[0.55]\">The goal</span>\n <div className=\"text-sm leading-relaxed opacity-80 mt-2\">\n <Markdown>{firstParagraph}</Markdown>\n {expanded && hasMore && <Markdown>{restParagraphs.join('\\n\\n')}</Markdown>}\n </div>\n {hasMore && (\n <button\n type=\"button\"\n onClick={() => setExpanded((v) => !v)}\n className=\"bg-transparent border-none p-0 mt-2 cursor-pointer text-2xs opacity-[0.65] underline\"\n >\n {expanded ? 'Show less' : 'Show more'}\n </button>\n )}\n </div>\n );\n};\n\nexport const RoadmapPage = () => {\n const roadmap = useAppStore((s) => s.roadmap);\n const roadmapError = useAppStore((s) => s.roadmapError);\n const loadRoadmap = useAppStore((s) => s.loadRoadmap);\n const filters = useAppStore((s) => s.roadmapFilters);\n const [promoting, setPromoting] = useState<{\n horizonTitle: string;\n item: ResolvedRoadmapItem;\n candidateName?: string;\n } | null>(null);\n const plans = useAppStore((s) => s.plans);\n const navigate = useNavigate();\n const { item: highlightedItem } = useSearch({ from: '/roadmap' });\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n loadRoadmap();\n }, [loadRoadmap]);\n\n useEffect(() => {\n if (!highlightedItem || !roadmap) return;\n const row = containerRef.current?.querySelector('.roadmap-item-highlighted');\n row?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }, [highlightedItem, roadmap]);\n\n if (roadmapError) {\n return (\n <div>\n <PageTitle>Roadmap</PageTitle>\n <p className=\"opacity-50\">\n Couldn't load the roadmap — the server may need a restart to pick up new routes.\n </p>\n </div>\n );\n }\n\n if (!roadmap) {\n return (\n <div>\n <PageTitle>Roadmap</PageTitle>\n <p className=\"opacity-50\">Loading…</p>\n </div>\n );\n }\n\n if (roadmap.horizons.length === 0) {\n return (\n <div>\n <PageTitle>Roadmap</PageTitle>\n <p className=\"opacity-50\">No `ROADMAP.md` found at the project root.</p>\n </div>\n );\n }\n\n const graduatedByItem = (item: ResolvedRoadmapItem) =>\n plans?.entries.filter((p) => p.subject === item.name) ?? [];\n\n const handleAddCandidate = async (horizonTitle: string, itemName: string, name: string) => {\n await addRoadmapCandidate(horizonTitle, itemName, name);\n await loadRoadmap();\n };\n\n const horizons = filterHorizons(roadmap, filters);\n const totalVisible = horizons.reduce((count, horizon) => count + horizon.items.length, 0);\n const hasActiveFilters = filters.horizons.length > 0 || filters.statuses.length > 0;\n\n return (\n <div ref={containerRef}>\n <PageTitle>Roadmap</PageTitle>\n <GoalBanner goal={roadmap.goal} />\n {totalVisible === 0 ? (\n <p className=\"opacity-50 py-6 px-0 text-center\">\n {hasActiveFilters\n ? 'Nothing matches these filters — clear one from the sidebar to see more.'\n : 'No roadmap items yet — add one from the sidebar.'}\n </p>\n ) : (\n <div className=\"flex flex-col gap-6\">\n {horizons\n .filter((horizon) => horizon.items.length > 0)\n .map((horizon) => (\n <div key={horizon.title} className=\"flex flex-col gap-1\">\n <div className={HORIZON_HEADER_CLASSES}>{horizon.title}</div>\n <div className=\"flex flex-col\">\n {horizon.items.map((item) => (\n <RoadmapItemRow\n key={item.name}\n item={item}\n graduated={graduatedByItem(item)}\n highlighted={item.name === highlightedItem}\n onPromote={() => setPromoting({ horizonTitle: horizon.title, item })}\n onPromoteCandidate={(candidateName) =>\n setPromoting({ horizonTitle: horizon.title, item, candidateName })\n }\n onAddCandidate={(name) => handleAddCandidate(horizon.title, item.name, name)}\n onOpenGraduated={(id, title) =>\n navigate({\n to: '/plans/$planId',\n params: { planId: entityRouteParam(id, title) },\n })\n }\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n )}\n <PromoteRoadmapItemModal\n horizonTitle={promoting?.horizonTitle ?? null}\n item={promoting?.item ?? null}\n candidateName={promoting?.candidateName}\n onClose={() => setPromoting(null)}\n onPromoted={loadRoadmap}\n />\n </div>\n );\n};\n","import { addRoadmapItem } from '@/app/services/content/docs-api';\nimport { useAppStore } from '@/app/stores/app-store';\nimport { Button, Input, Modal, Select } from '@dendelion/paper-ui';\nimport { useEffect, useRef, useState } from 'react';\n\ninterface AddRoadmapItemModalProps {\n open: boolean;\n horizonTitles: string[];\n onClose: () => void;\n}\n\nexport const AddRoadmapItemModal = ({ open, horizonTitles, onClose }: AddRoadmapItemModalProps) => {\n const loadRoadmap = useAppStore((s) => s.loadRoadmap);\n const [horizon, setHorizon] = useState(horizonTitles[0] ?? '');\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const horizonTitlesRef = useRef(horizonTitles);\n horizonTitlesRef.current = horizonTitles;\n\n useEffect(() => {\n if (open) {\n setHorizon(horizonTitlesRef.current[0] ?? '');\n setName('');\n setDescription('');\n setError(null);\n setSaving(false);\n }\n }, [open]);\n\n const handleAdd = async () => {\n if (!name.trim() || !horizon) return;\n setSaving(true);\n setError(null);\n try {\n await addRoadmapItem(horizon, name.trim(), description.trim());\n await loadRoadmap();\n onClose();\n } catch (err) {\n setError((err as Error).message);\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <Modal open={open} onClose={onClose} title=\"Add roadmap item\" size=\"small\">\n <div className=\"flex flex-col gap-4\">\n <Select\n size=\"small\"\n value={horizon}\n onChange={setHorizon}\n disabled={saving}\n options={horizonTitles.map((title) => ({ value: title, label: title }))}\n />\n <Input\n size=\"small\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"Item name…\"\n disabled={saving}\n autoFocus\n />\n <Input\n size=\"small\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleAdd();\n }}\n placeholder=\"Description…\"\n disabled={saving}\n />\n {error && <p className=\"m-0 text-watercolor-rose-dark text-sm\">{error}</p>}\n <div className=\"flex justify-end gap-2\">\n <Button type=\"button\" variant=\"ghost\" onClick={onClose} disabled={saving}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n onClick={handleAdd}\n disabled={saving || !name.trim() || !horizon}\n >\n {saving ? 'Adding…' : 'Add item'}\n </Button>\n </div>\n </div>\n </Modal>\n );\n};\n","import { STATUS_LABEL, STATUS_STAMP } from '@/app/features/plans/constants';\nimport { useAppStore } from '@/app/stores/app-store';\nimport type { PlanStatus } from '@/types/index';\nimport { Button, ListItem } from '@dendelion/paper-ui';\nimport { useState } from 'react';\nimport { AddRoadmapItemModal } from './add-roadmap-item-modal';\nimport { horizonItemCounts, statusItemCounts } from './roadmap-filters';\n\nconst STATUS_CHIP_ORDER: PlanStatus[] = [\n 'in-progress',\n 'review',\n 'planned',\n 'idea',\n 'done',\n 'dropped',\n];\n\n// Matches SidebarSection — handwritten, no caps, one grid cell.\nconst sectionLabelClass = 'pc-row-label font-handwritten text-xs font-semibold opacity-[0.45]';\n\nexport const RoadmapSidebar = () => {\n const roadmap = useAppStore((s) => s.roadmap);\n const filters = useAppStore((s) => s.roadmapFilters);\n const toggleRoadmapHorizon = useAppStore((s) => s.toggleRoadmapHorizon);\n const toggleRoadmapStatus = useAppStore((s) => s.toggleRoadmapStatus);\n const [addOpen, setAddOpen] = useState(false);\n\n if (!roadmap) return null;\n\n const horizonTitles = roadmap.horizons.map((horizon) => horizon.title);\n const horizonCounts = horizonItemCounts(roadmap, filters);\n const statusCounts = statusItemCounts(roadmap, filters);\n const activeHorizons = new Set(filters.horizons);\n const activeStatuses = new Set(filters.statuses);\n const visibleStatuses = STATUS_CHIP_ORDER.filter(\n (status) => (statusCounts[status] ?? 0) > 0 || activeStatuses.has(status),\n );\n\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex h-[64px] items-center\">\n <Button\n type=\"button\"\n variant=\"primary\"\n size=\"small\"\n onClick={() => setAddOpen(true)}\n disabled={horizonTitles.length === 0}\n >\n + Add item\n </Button>\n </div>\n\n <div>\n <div className={sectionLabelClass}>Horizon</div>\n <div className=\"flex flex-col\">\n {horizonTitles.map((title) => (\n <ListItem\n key={title}\n size=\"small\"\n active={activeHorizons.has(title)}\n onClick={() => toggleRoadmapHorizon(title)}\n className=\"pc-row text-xs\"\n action={<span className=\"text-2xs text-ink-500\">{horizonCounts[title] ?? 0}</span>}\n >\n {title}\n </ListItem>\n ))}\n </div>\n </div>\n\n <div>\n <div className={sectionLabelClass}>Status</div>\n <div className=\"flex flex-col\">\n {visibleStatuses.length === 0 && (\n <span className=\"opacity-50 text-2xs\">No linked ideas</span>\n )}\n {visibleStatuses.map((status) => (\n <ListItem\n key={status}\n size=\"small\"\n active={activeStatuses.has(status)}\n onClick={() => toggleRoadmapStatus(status)}\n className=\"pc-row text-xs\"\n icon={\n <span\n className=\"w-[9px] h-[9px] rounded-full shrink-0\"\n style={{ background: STATUS_STAMP[status].text }}\n />\n }\n action={<span className=\"text-2xs text-ink-500\">{statusCounts[status] ?? 0}</span>}\n >\n {STATUS_LABEL[status]}\n </ListItem>\n ))}\n </div>\n </div>\n\n <AddRoadmapItemModal\n open={addOpen}\n horizonTitles={horizonTitles}\n onClose={() => setAddOpen(false)}\n />\n </div>\n );\n};\n"],"names":["NO_SUBJECT","PromoteRoadmapItemModal","horizonTitle","item","candidateName","onClose","onPromoted","promoteRoadmapItem","useAppStore","s","launchIdeaExtend","subjects","subjectsAvailable","useSubjectVocabulary","subject","setSubject","useState","loading","setLoading","error","setError","toast","useToast","useEffect","handlePromote","id","idea","e","buildRoadmapPromotePrompt","err","oneLineErrorSummary","jsx","Modal","jsxs","Select","Button","graduationCounts","graduated","p","HORIZON_HEADER_CLASSES","ChevronRightIcon","size","CandidateRow","name","onPromote","Card","AddCandidateForm","onAdd","setName","saving","setSaving","handleAdd","Input","mergeIdeas","links","represented","merged","plan","link","IdeaRow","onOpen","PrBadge","Stamp","STATUS_STAMP","STATUS_LABEL","ProgressBar","done","total","percent","RoadmapItemRow","highlighted","onPromoteCandidate","onAddCandidate","onOpenGraduated","expanded","setExpanded","shipped","queued","candidates","ideas","v","GoalBanner","goal","firstParagraph","restParagraphs","hasMore","Markdown","RoadmapPage","roadmap","roadmapError","loadRoadmap","filters","promoting","setPromoting","plans","navigate","useNavigate","highlightedItem","useSearch","containerRef","useRef","row","_a","PageTitle","graduatedByItem","handleAddCandidate","itemName","addRoadmapCandidate","horizons","filterHorizons","totalVisible","count","horizon","hasActiveFilters","title","entityRouteParam","AddRoadmapItemModal","open","horizonTitles","setHorizon","description","setDescription","horizonTitlesRef","addRoadmapItem","STATUS_CHIP_ORDER","sectionLabelClass","RoadmapSidebar","toggleRoadmapHorizon","toggleRoadmapStatus","addOpen","setAddOpen","horizonCounts","horizonItemCounts","statusCounts","statusItemCounts","activeHorizons","activeStatuses","visibleStatuses","status","ListItem"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@charset "UTF-8";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.bottom-1\/4{bottom:25%}.left-1\/2{left:50%}.left-1\/4{left:25%}.right-1\/4{right:25%}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-28{top:7rem}.z-50{z-index:50}.m-2{margin:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.ml-2{margin-left:.5rem}.mt-8{margin-top:2rem}.inline-block{display:inline-block}.list-item{display:list-item}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-96{height:24rem}.h-\[600px\]{height:600px}.max-h-\[calc\(100vh-10rem\)\]{max-height:calc(100vh - 10rem)}.min-h-\[140px\]{min-height:140px}.min-h-\[calc\(100vh-80px\)\]{min-height:calc(100vh - 80px)}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-3{width:.75rem}.w-32{width:8rem}.w-72{width:18rem}.w-96{width:24rem}.w-\[600px\]{width:600px}.w-px{width:1px}.max-w-2xl{max-width:42rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.scroll-mt-24{scroll-margin-top:6rem}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-8{gap:2rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-20>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.rounded-2xl{border-radius:1rem}.rounded-lg{border-radius:.5rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.border-t{border-top-width:1px}.border-ink-100{--tw-border-opacity: 1;border-color:rgb(229 227 223 / var(--tw-border-opacity))}.bg-canvas-200{--tw-bg-opacity: 1;background-color:rgb(240 234 216 / var(--tw-bg-opacity))}.bg-paper-100{--tw-bg-opacity: 1;background-color:rgb(250 248 240 / var(--tw-bg-opacity))}.bg-paper-50{--tw-bg-opacity: 1;background-color:rgb(253 252 248 / var(--tw-bg-opacity))}.bg-canvas-weave{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='cv'%3E%3CfeTurbulence type='turbulence' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.62 0 0 0 0 0.60 0 0 0 0 0.52 0 0 0 0.42 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23cv)' opacity='1'/%3E%3C/svg%3E")}.bg-kraft-texture{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='k'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.50 0 0 0 0 0.35 0 0 0 0 0.20 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23k)' opacity='1'/%3E%3C/svg%3E")}.bg-paper-texture{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E")}.bg-parchment-texture{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='5' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.55 0 0 0 0 0.48 0 0 0 0 0.35 0 0 0 0.45 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='1'/%3E%3C/svg%3E")}.bg-speckle-texture{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='speckle'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.4' numOctaves='1' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23speckle)' opacity='0.14'/%3E%3C/svg%3E")}.p-10{padding:2.5rem}.p-3{padding:.75rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-24{padding-bottom:6rem}.pb-40{padding-bottom:10rem}.pr-5{padding-right:1.25rem}.font-display{font-family:Luminari,Cormorant Garamond,Georgia,serif}.font-mono{font-family:JetBrains Mono,monospace}.font-serif{font-family:Cormorant Garamond,Georgia,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-7xl{font-size:4.5rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.capitalize{text-transform:capitalize}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-black\/60{color:#0009}.text-black\/80{color:#000c}.text-ink-600{--tw-text-opacity: 1;color:rgb(80 76 70 / var(--tw-text-opacity))}.text-ink-900{--tw-text-opacity: 1;color:rgb(26 25 23 / var(--tw-text-opacity))}.text-watercolor-rose{--tw-text-opacity: 1;color:rgb(201 139 139 / var(--tw-text-opacity))}.text-white\/60{color:#fff9}.text-white\/80{color:#fffc}.accent-\[\#8FB996\]{accent-color:#8FB996}.shadow-ink-sm{--tw-shadow: 0 1px 2px rgba(26, 25, 23, .12);--tw-shadow-colored: 0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-paper-lg{--tw-shadow: 0 10px 15px rgba(61, 53, 43, .1), 0 4px 6px rgba(61, 53, 43, .08);--tw-shadow-colored: 0 10px 15px var(--tw-shadow-color), 0 4px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-paper-md{--tw-shadow: 0 4px 6px rgba(61, 53, 43, .08), 0 2px 4px rgba(61, 53, 43, .06);--tw-shadow-colored: 0 4px 6px var(--tw-shadow-color), 0 2px 4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-paper-sm{--tw-shadow: 0 1px 2px rgba(61, 53, 43, .08), 0 1px 1px rgba(61, 53, 43, .06);--tw-shadow-colored: 0 1px 2px var(--tw-shadow-color), 0 1px 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-pressed{--tw-shadow: inset 0 2px 4px rgba(61, 53, 43, .15);--tw-shadow-colored: inset 0 2px 4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.blur-3xl{--tw-blur: blur(64px);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)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}:root{--pui-bg-base: #FDFCF8;--pui-bg-surface: #FAF8F0;--pui-bg-elevated: #F5F1E6;--pui-text-primary: #1A1917;--pui-text-secondary: #68635C;--pui-sketch-stroke: rgba(61, 53, 43, .32)}body{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);background-color:#fdfcf8;color:#1a1917;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px}@font-face{font-family:Luminari;src:url(../fonts/Luminari-Regular.woff) format("woff");font-weight:400;font-style:normal;font-display:swap;size-adjust:88%}button{font-family:var(--paper-button-font, "Luminari", "Cormorant Garamond", Georgia, serif)}input,select,textarea{font-family:Cormorant Garamond,Georgia,serif}code,pre{font-family:JetBrains Mono,monospace}html,body,#root{height:100%}html{scroll-behavior:smooth}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:inset 0 0 0px 1000px #F5F1E6!important;-webkit-text-fill-color:#1A1917!important;border:1px solid rgba(61,53,43,.08)!important;border-radius:.75rem!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}input:-moz-autofill{background-color:#f5f1e6!important;color:#1a1917!important;border:1px solid rgba(61,53,43,.08)!important}input:-webkit-autofill:first-line{color:#1a1917!important;font-family:inherit!important;font-size:inherit!important}.last\:border-0:last-child{border-width:0px}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-paper-lg:hover{--tw-shadow: 0 10px 15px rgba(61, 53, 43, .1), 0 4px 6px rgba(61, 53, 43, .08);--tw-shadow-colored: 0 10px 15px var(--tw-shadow-color), 0 4px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}@media (min-width: 640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:px-10{padding-left:2.5rem;padding-right:2.5rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-6xl{font-size:3.75rem;line-height:1}}@media (min-width: 768px){.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\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:text-7xl{font-size:4.5rem;line-height:1}}@media (min-width: 1024px){.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (min-width: 1280px){.xl\:grid-cols-\[1fr_330px\]{grid-template-columns:1fr 330px}}.button-module__button___Z331g{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:none;cursor:pointer;font-family:var(--paper-button-font, var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif));font-weight:600;letter-spacing:.01em;line-height:1.2;color:#1a1917;transition:color .25s ease,filter .25s ease;overflow:visible;background:transparent}.button-module__button___Z331g:focus-visible{outline:2px solid #8A9BA8;outline-offset:2px}.button-module__button___Z331g:disabled{opacity:.5;cursor:not-allowed;filter:none}.button-module__blobBg___QQFzf{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.button-module__blobFill___XwLjV{transition:fill .25s ease}.button-module__blobRing___567UW{fill:none;stroke:#3d352b59;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity .35s ease 50ms}.button-module__button___Z331g:hover:not(:disabled) .button-module__blobRing___567UW{opacity:1}.button-module__button___Z331g:active:not(:disabled) .button-module__blobRing___567UW{stroke:#3d352b8c}.button-module__isActive___FXNSJ .button-module__blobRing___567UW{opacity:1}.button-module__primary___ppbyq .button-module__blobFill___XwLjV{fill:var(--pui-btn-primary, rgba(143, 185, 150, .25))}.button-module__primary___ppbyq:hover:not(:disabled) .button-module__blobFill___XwLjV{fill:var(--pui-btn-primary-hover, rgba(143, 185, 150, .3))}.button-module__primary___ppbyq:active:not(:disabled) .button-module__blobFill___XwLjV{fill:var(--pui-btn-primary-active, rgba(143, 185, 150, .34))}.button-module__isActive___FXNSJ.button-module__primary___ppbyq .button-module__blobFill___XwLjV{fill:var(--pui-btn-primary-hover, rgba(143, 185, 150, .3))}.button-module__isActive___FXNSJ.button-module__primary___ppbyq:hover .button-module__blobFill___XwLjV{fill:var(--pui-btn-primary-active, rgba(143, 185, 150, .34))}.button-module__secondary___esy5L .button-module__blobFill___XwLjV{fill:var(--pui-btn-secondary, rgba(61, 53, 43, .1))}.button-module__secondary___esy5L:hover:not(:disabled) .button-module__blobFill___XwLjV{fill:var(--pui-btn-secondary-hover, rgba(61, 53, 43, .14))}.button-module__secondary___esy5L:active:not(:disabled) .button-module__blobFill___XwLjV{fill:var(--pui-btn-secondary-active, rgba(61, 53, 43, .18))}.button-module__isActive___FXNSJ.button-module__secondary___esy5L .button-module__blobFill___XwLjV{fill:var(--pui-btn-secondary-hover, rgba(61, 53, 43, .14))}.button-module__isActive___FXNSJ.button-module__secondary___esy5L:hover .button-module__blobFill___XwLjV{fill:var(--pui-btn-secondary-active, rgba(61, 53, 43, .18))}.button-module__ghost___NisA0{color:#68635c}.button-module__ghost___NisA0 .button-module__blobFill___XwLjV{fill:transparent}.button-module__ghost___NisA0:hover:not(:disabled) .button-module__blobFill___XwLjV{fill:#8fb9961f}.button-module__ghost___NisA0:active:not(:disabled) .button-module__blobFill___XwLjV{fill:#8fb99633}.button-module__ghost___NisA0 .button-module__blobRing___567UW{stroke:#3d352b38}.button-module__isActive___FXNSJ.button-module__ghost___NisA0 .button-module__blobFill___XwLjV{fill:#8fb99640}.button-module__isActive___FXNSJ.button-module__ghost___NisA0:hover .button-module__blobFill___XwLjV{fill:#8fb9964d}.button-module__danger___Wnvuq{color:#9e5e5e}.button-module__danger___Wnvuq .button-module__blobFill___XwLjV{fill:#f0ead8}.button-module__danger___Wnvuq:hover:not(:disabled) .button-module__blobFill___XwLjV{fill:#e8d4d4}.button-module__danger___Wnvuq:active:not(:disabled) .button-module__blobFill___XwLjV{fill:#dec4c4}.button-module__isActive___FXNSJ.button-module__danger___Wnvuq .button-module__blobFill___XwLjV{fill:#e8d4d4}.button-module__isActive___FXNSJ.button-module__danger___Wnvuq:hover .button-module__blobFill___XwLjV{fill:#dec4c4}.button-module__chalkboard___d3Nqb{color:#d4e8cb}.button-module__chalkboard___d3Nqb .button-module__blobFill___XwLjV{display:none}.button-module__chalkboard___d3Nqb .button-module__blobRing___567UW{stroke:#c8d2c373;stroke-width:2.2}.button-module__chalkboard___d3Nqb:active:not(:disabled) .button-module__blobRing___567UW{stroke:#c8d2c3a6}.button-module__chalkboard___d3Nqb.button-module__ghost___NisA0 .button-module__blobRing___567UW{stroke:#c8d2c359}.button-module__chalkboard___d3Nqb.button-module__danger___Wnvuq{color:#e8a0a0}.button-module__tiny___8ZZ7A{padding:.25rem .75rem;font-size:.75rem}.button-module__small___u7y8a{padding:.5rem 1rem;font-size:1.125rem}.button-module__medium___HBIAj{padding:.75rem 1.5rem;font-size:1.5rem}.button-module__large___RPzNy{padding:1rem 2rem;font-size:1.875rem}.button-module__fullWidth___H0P0F{width:100%}.button-module__iconLeft___s60SZ,.button-module__iconRight___75eFu{display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:1}.button-module__label___pXAyM{position:relative;z-index:1}.sketch-border-module__svg___whV4x{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:2}.sketch-border-module__behind___lgdYV{z-index:0}.sketch-border-module__stroke___vAm-v{fill:none;stroke:var(--sketch-stroke, var(--pui-sketch-stroke, rgba(61, 53, 43, .32)));stroke-linecap:round;stroke-linejoin:round;transition:stroke .15s ease-out}.sketch-border-module__fill___zlpd6{stroke:none;fill:var(--sketch-fill, transparent);transition:fill .15s ease-out}.page-module__page___-uHnG{position:relative;display:flex;flex-direction:column;height:100%;max-width:800px;margin:0 auto;filter:drop-shadow(0 4px 6px rgba(61,53,43,.1)) drop-shadow(0 1px 2px rgba(61,53,43,.06));--sketch-stroke: transparent}.page-module__outlined___Wwtyg{--sketch-stroke: rgba(61, 53, 43, .32)}.page-module__surface___sWfI6{position:relative;z-index:1;flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-gutter:stable;padding:2rem;font-size:1.125rem;line-height:32px;background-color:#fdfcf8;border-radius:11.1301107544px 13.0280477258px 14.0986926147px 9.8815479971px;clip-path:var(--sketch-clip)}.page-module__surface___sWfI6>*+*{margin-top:2rem}.page-module__surface___sWfI6 h1,.page-module__surface___sWfI6 h2,.page-module__surface___sWfI6 h3,.page-module__surface___sWfI6 h4,.page-module__surface___sWfI6 h5,.page-module__surface___sWfI6 h6{line-height:32px}.page-module__flat___HlOaY .page-module__surface___sWfI6{border-radius:12px}.page-module__withAccent___lsv-m:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;clip-path:var(--sketch-clip);mix-blend-mode:multiply;pointer-events:none;opacity:.08}.page-module__accentBlue___XxbMV:before{background:radial-gradient(300px 300px at calc(100% + 80px) -80px,#AFC6E0 0%,transparent 70%)}.page-module__accentGreen___Ne6Q8:before{background:radial-gradient(300px 300px at calc(100% + 80px) -80px,#B5D4BA 0%,transparent 70%)}.page-module__accentAmber___kLAwa:before{background:radial-gradient(300px 300px at calc(100% + 80px) -80px,#E4C9A8 0%,transparent 70%)}.page-module__accentRose___O9ZbZ:before{background:radial-gradient(300px 300px at calc(100% + 80px) -80px,#DEB5B5 0%,transparent 70%)}.page-module__accentSlate___xCB66:before{background:radial-gradient(300px 300px at calc(100% + 80px) -80px,#B0BEC8 0%,transparent 70%)}.layout-module__layout___O1aWi{display:flex;flex-direction:column;height:100vh;width:100%;overflow:hidden}.layout-module__header___I-kxe{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 1.5rem;background-color:#faf8f0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='speckle'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.4' numOctaves='1' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23speckle)' opacity='0.14'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;border-bottom:1px solid rgba(61,53,43,.12);box-shadow:0 1px 2px #3d352b14,0 1px 1px #3d352b0f;flex-shrink:0;position:relative;z-index:200}.layout-module__headerLeft___JChJQ,.layout-module__headerTitles___aqSUG{display:flex;align-items:baseline;gap:.75rem}.layout-module__headerTitle___wvr39{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1.25rem;font-weight:600;color:#1a1917;margin:0;line-height:1;white-space:nowrap}.layout-module__headerSubtitle___6f5BD{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1rem;font-weight:400;color:#a8a399;margin:0;line-height:1;white-space:nowrap}.layout-module__headerActions___adC12{display:flex;align-items:center;gap:.75rem}.layout-module__mobileToggle___4WpVG{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:transparent;border:none;color:#68635c;cursor:pointer;transition:all .15s ease-out}.layout-module__mobileToggle___4WpVG:hover{background-color:#0000000a;color:#1a1917}@media (min-width: 768px){.layout-module__mobileToggle___4WpVG{display:none}}.layout-module__body___tywNf{display:flex;flex:1;min-width:0;position:relative;overflow:hidden}.layout-module__mobileOverlay___tzbBC{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;padding:0;border:none;background:#1a191766;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:default;z-index:250}.layout-module__sidebar___8VKGq{width:240px;flex-shrink:0;padding:32px;position:sticky;top:0;align-self:stretch;height:100%;overflow-y:auto}@media (max-width: 767px){.layout-module__sidebar___8VKGq{position:fixed;top:0;left:0;width:280px;height:100vh;padding:32px;background-color:#fdfcf8;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;box-shadow:0 10px 15px #3d352b1a,0 4px 6px #3d352b14;transform:translate(-100%);transition:transform .3s ease-out;z-index:300}}.layout-module__sidebarOpen___47rtr{transform:translate(0)}.layout-module__sidebarInner___tq2X6{display:flex;flex-direction:column;height:100%}.layout-module__logoArea___RLnC0{height:32px;display:flex;align-items:center;margin-bottom:0;padding-bottom:0}.layout-module__logoText___pAmfV{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1.25rem;font-weight:700;color:#1a1917;letter-spacing:.02em;line-height:32px}.layout-module__nav___FxcrZ{display:flex;flex-direction:column;gap:0;flex:1;margin-top:32px}.layout-module__main___9z7bu{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.layout-module__navIslandFixed___H4TwP{position:fixed;bottom:1.5rem;left:50%;z-index:100;transform:translate(-50%);pointer-events:none}.layout-module__navIslandFixed___H4TwP>*{pointer-events:auto}.layout-module__content___jL-VB{flex:1;min-height:0;overflow:hidden;padding:32px;line-height:32px}.layout-module__contentWithPage___vVdfN{flex:1;min-height:0;overflow:hidden;padding:24px 32px;line-height:32px}.layout-module__footer___LyakU{padding:20px 32px;background-color:#faf8f0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;border-top:1px solid rgba(61,53,43,.12);text-align:center;flex-shrink:0}.layout-module__footerText___8BYxc{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);color:#a8a399;margin:0}.island-module__island___Yd2ej{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);z-index:50;display:inline-flex;align-items:center;gap:1rem;padding:.75rem 1.25rem;border-radius:28px;background-color:#e5dbc4;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='k'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.50 0 0 0 0 0.35 0 0 0 0 0.20 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23k)' opacity='1'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;border:1px solid rgba(61,53,43,.12);box-shadow:0 10px 15px #3d352b1a,0 4px 6px #3d352b14,inset 0 1px #ffffff80}.island-module__chalkboard___yK6AH{border-color:#c8d2c333;box-shadow:0 10px 15px #00000040,0 4px 6px #0003,inset 0 1px #c8d2c31a}.checkbox-module__wrapper___uLYMI{display:flex;align-items:center;gap:1rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.checkbox-module__wrapper___uLYMI:hover .checkbox-module__blobFill___mPJSR{fill:#7c9cc02e}.checkbox-module__wrapper___uLYMI:hover .checkbox-module__input___Ptgt7:checked~.checkbox-module__blobBg___bw3sn .checkbox-module__blobFill___mPJSR,.checkbox-module__wrapper___uLYMI:hover .checkbox-module__input___Ptgt7:indeterminate~.checkbox-module__blobBg___bw3sn .checkbox-module__blobFill___mPJSR{fill:#e8dec8}.checkbox-module__labelLeft___-vAmH{flex-direction:row-reverse}.checkbox-module__input___Ptgt7{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.checkbox-module__input___Ptgt7:focus-visible~.checkbox-module__box___yAh-r{outline:2px dotted #A8A399;outline-offset:2px}.checkbox-module__input___Ptgt7:checked~.checkbox-module__box___yAh-r,.checkbox-module__input___Ptgt7:indeterminate~.checkbox-module__box___yAh-r{--sketch-stroke: rgba(61, 53, 43, .7)}.checkbox-module__input___Ptgt7:checked~.checkbox-module__box___yAh-r .checkbox-module__checkmark___tTyBz,.checkbox-module__input___Ptgt7:indeterminate~.checkbox-module__box___yAh-r .checkbox-module__checkmark___tTyBz{stroke-dashoffset:0}.checkbox-module__input___Ptgt7:checked~.checkbox-module__box___yAh-r .checkbox-module__indeterminateLine___IosI-,.checkbox-module__input___Ptgt7:indeterminate~.checkbox-module__box___yAh-r .checkbox-module__indeterminateLine___IosI-{stroke-dashoffset:0}.checkbox-module__input___Ptgt7:checked~.checkbox-module__blobBg___bw3sn .checkbox-module__blobFill___mPJSR,.checkbox-module__input___Ptgt7:indeterminate~.checkbox-module__blobBg___bw3sn .checkbox-module__blobFill___mPJSR{fill:#f0ead8}.checkbox-module__input___Ptgt7:disabled~.checkbox-module__box___yAh-r{opacity:.4;cursor:not-allowed}.checkbox-module__boxWrapper___byjoS{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px}.checkbox-module__blobBg___bw3sn{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.checkbox-module__blobFill___mPJSR{transition:fill .25s ease;fill:transparent}.checkbox-module__box___yAh-r{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background-color:transparent;position:relative;z-index:1;border-radius:6px;--sketch-stroke: rgba(61, 53, 43, .42)}.checkbox-module__box___yAh-r:hover{--sketch-stroke: rgba(61, 53, 43, .6)}.checkbox-module__icon___RO-yn{width:20px;height:20px;color:#1a1917}.checkbox-module__checkmark___tTyBz{stroke-dasharray:36;stroke-dashoffset:36;transition:stroke-dashoffset .2s ease-out}.checkbox-module__indeterminateLine___IosI-{stroke-dasharray:20;stroke-dashoffset:20;transition:stroke-dashoffset .2s ease-out}.checkbox-module__labelText___bAnLr{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1.125rem;font-weight:400;color:#68635c;line-height:1.5}.checkbox-module__chalkboard___sv6SL .checkbox-module__labelText___bAnLr{color:#a8b5a0}.checkbox-module__chalkboard___sv6SL .checkbox-module__box___yAh-r{--sketch-stroke: rgba(200, 210, 195, .5)}.checkbox-module__chalkboard___sv6SL .checkbox-module__box___yAh-r:hover{--sketch-stroke: #d4e8cb}.checkbox-module__chalkboard___sv6SL .checkbox-module__icon___RO-yn{color:#d4e8cb}.checkbox-module__chalkboard___sv6SL .checkbox-module__blobFill___mPJSR{display:none}.checkbox-module__chalkboard___sv6SL .checkbox-module__input___Ptgt7:focus-visible~.checkbox-module__box___yAh-r{outline-color:#d4e8cb}.checkbox-module__chalkboard___sv6SL .checkbox-module__input___Ptgt7:checked~.checkbox-module__box___yAh-r,.checkbox-module__chalkboard___sv6SL .checkbox-module__input___Ptgt7:indeterminate~.checkbox-module__box___yAh-r{--sketch-stroke: #d4e8cb}.icon-button-module__iconButton___avg6i{position:relative;display:flex;align-items:center;justify-content:center;border:none;cursor:pointer;color:#1a1917;transition:color .25s ease,filter .25s ease;flex-shrink:0;overflow:visible;background:transparent}.icon-button-module__iconButton___avg6i:focus-visible{outline:2px solid #8A9BA8;outline-offset:2px}.icon-button-module__iconButton___avg6i:disabled{opacity:.5;cursor:not-allowed;filter:none}.icon-button-module__blobBg___466Vy{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.icon-button-module__blobFill___FTN1g{transition:fill .25s ease}.icon-button-module__blobRing___hRdQb{fill:none;stroke:#3d352b59;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity .35s ease 50ms}.icon-button-module__iconButton___avg6i:hover:not(:disabled) .icon-button-module__blobRing___hRdQb{opacity:1}.icon-button-module__iconButton___avg6i:active:not(:disabled) .icon-button-module__blobRing___hRdQb{stroke:#3d352b8c}.icon-button-module__isActive___XlvtM .icon-button-module__blobRing___hRdQb{opacity:1}.icon-button-module__icon___h204x{position:relative;z-index:1;display:flex;align-items:center;justify-content:center}.icon-button-module__default___9frNR .icon-button-module__blobFill___FTN1g{fill:#f0ead8}.icon-button-module__default___9frNR:hover:not(:disabled) .icon-button-module__blobFill___FTN1g{fill:#e8dec8}.icon-button-module__default___9frNR:active:not(:disabled) .icon-button-module__blobFill___FTN1g{fill:#ddd2b8}.icon-button-module__isActive___XlvtM.icon-button-module__default___9frNR .icon-button-module__blobFill___FTN1g{fill:#e8dec8}.icon-button-module__isActive___XlvtM.icon-button-module__default___9frNR:hover .icon-button-module__blobFill___FTN1g{fill:#ddd2b8}.icon-button-module__ghost___Wbxog{color:#68635c}.icon-button-module__ghost___Wbxog .icon-button-module__blobFill___FTN1g{fill:transparent}.icon-button-module__ghost___Wbxog:hover:not(:disabled) .icon-button-module__blobFill___FTN1g{fill:#8fb9961f}.icon-button-module__ghost___Wbxog:active:not(:disabled) .icon-button-module__blobFill___FTN1g{fill:#8fb99633}.icon-button-module__ghost___Wbxog .icon-button-module__blobRing___hRdQb{stroke:#3d352b38}.icon-button-module__isActive___XlvtM.icon-button-module__ghost___Wbxog .icon-button-module__blobFill___FTN1g{fill:#8fb99640}.icon-button-module__isActive___XlvtM.icon-button-module__ghost___Wbxog:hover .icon-button-module__blobFill___FTN1g{fill:#8fb9964d}.icon-button-module__danger___p0Xz5{color:#9e5e5e}.icon-button-module__danger___p0Xz5 .icon-button-module__blobFill___FTN1g{fill:#f0ead8}.icon-button-module__danger___p0Xz5:hover:not(:disabled) .icon-button-module__blobFill___FTN1g{fill:#e8d4d4}.icon-button-module__danger___p0Xz5:active:not(:disabled) .icon-button-module__blobFill___FTN1g{fill:#dec4c4}.icon-button-module__isActive___XlvtM.icon-button-module__danger___p0Xz5 .icon-button-module__blobFill___FTN1g{fill:#e8d4d4}.icon-button-module__isActive___XlvtM.icon-button-module__danger___p0Xz5:hover .icon-button-module__blobFill___FTN1g{fill:#dec4c4}.icon-button-module__tiny___4WYvA{width:32px;height:32px}.icon-button-module__tiny___4WYvA .icon-button-module__icon___h204x{width:16px;height:16px}.icon-button-module__small___bPnCU{width:40px;height:40px}.icon-button-module__small___bPnCU .icon-button-module__icon___h204x{width:20px;height:20px}.icon-button-module__medium___nOxPf{width:48px;height:48px}.icon-button-module__medium___nOxPf .icon-button-module__icon___h204x{width:24px;height:24px}.icon-button-module__large___UBU5z{width:56px;height:56px}.icon-button-module__large___UBU5z .icon-button-module__icon___h204x{width:28px;height:28px}.icon-button-module__chalkboard___mi0sQ{color:#d4e8cb}.icon-button-module__chalkboard___mi0sQ .icon-button-module__blobFill___FTN1g{display:none}.icon-button-module__chalkboard___mi0sQ .icon-button-module__blobRing___hRdQb{stroke:#c8d2c373;stroke-width:2.2}.icon-button-module__chalkboard___mi0sQ:active:not(:disabled) .icon-button-module__blobRing___hRdQb{stroke:#c8d2c3a6}.icon-button-module__chalkboard___mi0sQ.icon-button-module__ghost___Wbxog .icon-button-module__blobRing___hRdQb{stroke:#c8d2c359}.icon-button-module__chalkboard___mi0sQ.icon-button-module__danger___p0Xz5{color:#e8a0a0}.stamp-module__stamp___5qaNY{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.25rem;font-family:Caveat,cursive;font-weight:500;line-height:1.2}.stamp-module__small___BBlBg{padding:.25rem .75rem;font-size:1.125rem}.stamp-module__medium___HG2YD{padding:.5rem 1rem;font-size:1.5rem}.stamp-module__large___aUT0I{padding:.75rem 1.25rem;font-size:1.875rem}.stamp-module__blobBg___Mdrdd{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.stamp-module__blobFill___QyCeB{transition:fill .25s ease}.stamp-module__blobRing___EUDx7{fill:none;stroke-width:1.8}.stamp-module__dot___qZyCR{position:relative;z-index:1;width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.stamp-module__label___T89iH{position:relative;z-index:1;white-space:nowrap}.stamp-module__chalkboard___syI4T{color:#d4e8cb}.copy-button-module__copyButton___-hTo4{font-family:JetBrains Mono,monospace;font-size:.75rem;padding:.125rem .5rem;border-radius:.375rem;transition:background-color .15s ease,color .15s ease;background-color:#3d352b0f;color:#68635c;border:1px solid rgba(61,53,43,.12);cursor:pointer}.copy-button-module__copyButton___-hTo4:hover{color:#1a1917;border-color:#3d352b33}.copy-button-module__copyButton___-hTo4:focus-visible{outline:2px solid #8A9BA8;outline-offset:2px}.copy-button-module__dark___O45N-{background-color:#ffffff1a;color:#a8a399;border-color:#ffffff26}.copy-button-module__chalkboard___hW4aw{background-color:#c8dcc31f;color:#a8b5a0;border-color:#c8d2c333;font-family:Courier Prime,monospace;letter-spacing:.02em}.copy-button-module__chalkboard___hW4aw:hover{background-color:#c8dcc333;color:#d4e8cb}.copy-button-module__copied___XlHFr{background-color:#8fb99640;color:#51719b}.code-block-module__codeBlock___dq28o{border-radius:.75rem;overflow:hidden;border:1px solid rgba(61,53,43,.12);width:100%}.code-block-module__header___42Fek{padding:.625rem 1.25rem;font-size:.75rem;font-family:JetBrains Mono,monospace;border-bottom:1px solid rgba(61,53,43,.12);background-color:#f5f1e6;color:#68635c;display:flex;align-items:center;justify-content:space-between}.code-block-module__relative___oO-zy{position:relative}.code-block-module__copyOverlay___PjAuq{position:absolute;top:.5rem;right:.5rem;z-index:10}.code-block-module__pre___zXzLZ{padding:1.25rem;font-size:.875rem;line-height:1.625;overflow-x:auto;background-color:#2b2926;color:#faf8f0;font-family:JetBrains Mono,monospace;white-space:pre;word-wrap:normal}.code-block-module__chalkboard___bdo9J{border-color:#c8d2c333;border-radius:.5rem}.code-block-module__chalkboardHeader___3RiVd{background-color:#142e22;border-bottom-color:#c8d2c333;color:#5e7a68;font-family:Courier Prime,monospace;font-size:.875rem;letter-spacing:.04em}.code-block-module__chalkboardPre___iRBFR{background-color:#142e22;color:#d4e8cb;font-family:Courier Prime,monospace;font-size:1rem;line-height:1.7;padding:1.25rem 1.5rem;opacity:.92}.table-module__tableFrame___KP-90{position:relative;filter:drop-shadow(0 8px 14px rgba(61,53,43,.14));--sketch-stroke: rgba(61, 53, 43, .32)}.table-module__tableWrapper___gc3Y3{position:relative;border-radius:12px;overflow:hidden;clip-path:var(--sketch-clip)}.table-module__toolbar___zhCel{display:flex;align-items:center;justify-content:space-between;gap:1rem;height:64px;padding:0 2rem;background-color:var(--pui-texture-shade, #F5F1E6);background-image:var(--pui-texture-image, url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E"));background-repeat:repeat;background-size:200px 200px;box-sizing:border-box;position:relative}.table-module__toolbar___zhCel:after{content:"";position:absolute;left:0;right:0;bottom:-1.5px;height:3px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='3' preserveAspectRatio='none' viewBox='0 0 64 3'%3E%3Cpath d='M0 1.6 C 8 0.7 14 2.3 22 1.5 C 30 0.8 38 2.2 46 1.5 C 54 0.9 60 2.1 64 1.5' fill='none' stroke='%233d352b' stroke-opacity='0.3' stroke-width='1' stroke-linecap='round'/%3E%3C/svg%3E") repeat-x left center;background-size:64px 3px;pointer-events:none}.table-module__toolbarTitle___D8oH-{display:flex;align-items:center;min-width:0}.table-module__panelFooter___lCCKo{padding:1rem 2rem 1.5rem;background-color:var(--pui-texture-shade, #F5F1E6);background-image:var(--pui-texture-image, url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E"));background-repeat:repeat;background-size:200px 200px;box-sizing:border-box;position:relative}.table-module__panelFooter___lCCKo:before{content:"";position:absolute;left:0;right:0;top:-1.5px;height:3px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='3' preserveAspectRatio='none' viewBox='0 0 64 3'%3E%3Cpath d='M0 1.6 C 8 0.7 14 2.3 22 1.5 C 30 0.8 38 2.2 46 1.5 C 54 0.9 60 2.1 64 1.5' fill='none' stroke='%233d352b' stroke-opacity='0.3' stroke-width='1' stroke-linecap='round'/%3E%3C/svg%3E") repeat-x left center;background-size:64px 3px;pointer-events:none}.table-module__compact___mG-2Y .table-module__toolbar___zhCel{height:48px;padding:0 1rem}.table-module__compact___mG-2Y .table-module__panelFooter___lCCKo{padding:.75rem 1rem 1rem}.table-module__compact___mG-2Y .table-module__toolbarActions___EX6qS button{font-size:.875rem}.table-module__search___zIBk2{position:relative;display:flex;align-items:center;flex:1;max-width:280px;--sketch-fill: #FBF9F4;--sketch-stroke: rgba(61, 53, 43, .32)}.table-module__search___zIBk2:focus-within{--sketch-stroke: rgba(138, 155, 168, .45)}.table-module__searchIcon___ayhK8{position:absolute;left:.75rem;color:#a8a399;pointer-events:none;z-index:1}.table-module__searchInput___PqsEG{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;z-index:1;width:100%;padding:.5rem .75rem .5rem 2rem;color:#1a1917;font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1rem;font-weight:500;line-height:1.2;border:none;outline:none;background:transparent}.table-module__searchInput___PqsEG::-moz-placeholder{color:#a8a399;font-weight:400;font-family:Caveat,cursive;font-size:1.125rem}.table-module__searchInput___PqsEG::placeholder{color:#a8a399;font-weight:400;font-family:Caveat,cursive;font-size:1.125rem}.table-module__searchInput___PqsEG:focus{outline:2px dotted #A8A399;outline-offset:2px}.table-module__toolbarActions___EX6qS{display:flex;align-items:center;gap:.5rem}.table-module__tableScroll___1gvc4{overflow-x:auto}.table-module__tableWrapper___gc3Y3>.table-module__tableScroll___1gvc4:first-child{padding-top:.25rem}.table-module__tableWrapper___gc3Y3>.table-module__tableScroll___1gvc4:last-child{padding-bottom:.25rem}.table-module__table___tdU5g{width:100%;table-layout:fixed;border-collapse:collapse;font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1rem;color:#1a1917}.table-module__compact___mG-2Y .table-module__th___GQbKk,.table-module__compact___mG-2Y .table-module__td___WktB5,.table-module__compact___mG-2Y .table-module__footerCell___bM-jv{padding-left:1rem;padding-right:1rem}.table-module__th___GQbKk{text-align:left;font-weight:700;color:#1a1917;letter-spacing:.03em;white-space:nowrap;padding:0 2rem;height:52px;box-sizing:border-box;vertical-align:middle;line-height:32px;background-color:var(--pui-texture-shade, #F5F1E6);background-image:var(--pui-texture-image, url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E"));background-repeat:repeat;background-size:200px 200px;position:relative}.table-module__th___GQbKk:after{content:"";position:absolute;left:0;right:0;bottom:-1.5px;height:3px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='3' preserveAspectRatio='none' viewBox='0 0 64 3'%3E%3Cpath d='M0 1.6 C 8 0.7 14 2.3 22 1.5 C 30 0.8 38 2.2 46 1.5 C 54 0.9 60 2.1 64 1.5' fill='none' stroke='%233d352b' stroke-opacity='0.3' stroke-width='1' stroke-linecap='round'/%3E%3C/svg%3E") repeat-x left center;background-size:64px 3px;pointer-events:none}.table-module__td___WktB5{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);color:#68635c;padding:0 2rem;height:40px;box-sizing:border-box;vertical-align:middle;line-height:32px;position:relative}.table-module__td___WktB5:after{content:"";position:absolute;left:0;right:0;bottom:-1.5px;height:3px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='3' preserveAspectRatio='none' viewBox='0 0 64 3'%3E%3Cpath d='M0 1.6 C 8 0.7 14 2.3 22 1.5 C 30 0.8 38 2.2 46 1.5 C 54 0.9 60 2.1 64 1.5' fill='none' stroke='%233d352b' stroke-opacity='0.3' stroke-width='1' stroke-linecap='round'/%3E%3C/svg%3E") repeat-x left center;background-size:64px 3px;pointer-events:none}.table-module__tr___xeZno:last-child .table-module__td___WktB5:after{display:none}.table-module__expandTh___uxkR4,.table-module__expandTd___VoBRC{width:48px;text-align:center;padding:0}.table-module__expandIcon___8V45X{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;background:transparent;font-size:.65em;color:#68635c;cursor:pointer}.table-module__expandable___R7o2l{cursor:pointer}.table-module__expandable___R7o2l:hover .table-module__td___WktB5{background-color:#00000008}.table-module__footerRow___ik1DH .table-module__footerCell___bM-jv{padding:0 2rem;background-color:var(--pui-texture-shade, #F5F1E6);background-image:var(--pui-texture-image, url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E"));background-repeat:repeat;background-size:200px 200px;color:#68635c;font-family:JetBrains Mono,monospace;font-size:.75rem;line-height:1.5;position:relative}.table-module__footerRow___ik1DH .table-module__footerCell___bM-jv:after{content:"";position:absolute;left:0;right:0;bottom:-1.5px;height:3px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='3' preserveAspectRatio='none' viewBox='0 0 64 3'%3E%3Cpath d='M0 1.6 C 8 0.7 14 2.3 22 1.5 C 30 0.8 38 2.2 46 1.5 C 54 0.9 60 2.1 64 1.5' fill='none' stroke='%233d352b' stroke-opacity='0.3' stroke-width='1' stroke-linecap='round'/%3E%3C/svg%3E") repeat-x left center;background-size:64px 3px;pointer-events:none}.table-module__expandedRow___1TbTQ .table-module__expandedCell___sKAaD{padding:1rem 2rem;background-color:#e5dbc4;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='k'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.50 0 0 0 0 0.35 0 0 0 0 0.20 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23k)' opacity='1'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;color:#1a1917;font-family:Caveat,cursive;font-size:1.125rem;line-height:1.5;border-bottom:1px solid rgba(61,53,43,.12)}.table-module__boardScroll___Y1yqm{overflow-x:auto}.table-module__board___kFAI-{display:flex;align-items:flex-start}.table-module__boardColumn___-W9bP{flex:1 0 280px;display:flex;flex-direction:column}.table-module__boardColumn___-W9bP+.table-module__boardColumn___-W9bP{border-left:1px solid rgba(61,53,43,.08)}.table-module__boardColumnHeader___kY3Fj{display:flex;align-items:center;justify-content:space-between;gap:.75rem;height:64px;padding:0 1.5rem;box-sizing:border-box;background-color:#f5f1e6;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;border-bottom:1px solid rgba(61,53,43,.12)}.table-module__boardColumnHeader___kY3Fj.table-module__accentBlue___PEJ1V{border-bottom-color:#51719b}.table-module__boardColumnHeader___kY3Fj.table-module__accentGreen___wJ53r{border-bottom-color:#8fb996}.table-module__boardColumnHeader___kY3Fj.table-module__accentAmber___Iezjv{border-bottom-color:#a67b4f}.table-module__boardColumnHeader___kY3Fj.table-module__accentRose___W8zxc{border-bottom-color:#9e5e5e}.table-module__boardColumnHeader___kY3Fj.table-module__accentSlate___oUZCX{border-bottom-color:#5e7080}.table-module__boardColumnLabel___JBEed{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-weight:700;font-size:1rem;letter-spacing:.03em;text-transform:uppercase;color:#1a1917}.table-module__boardColumnCount___Pkpiq{display:flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 .25rem;border-radius:9999px;background-color:#faf8f0;border:1px solid rgba(61,53,43,.12);font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:.875rem;color:#68635c}.table-module__boardColumnBody___uAgRF{flex:1;display:flex;flex-direction:column;min-height:96px}.table-module__boardRow___C1P60{padding:.75rem 1.5rem;border-bottom:1px solid rgba(61,53,43,.08)}.table-module__boardRow___C1P60:last-child{border-bottom:none}.table-module__boardEmpty___IKv2W{padding:1rem 1.5rem;text-align:center;font-family:Caveat,cursive;font-size:1.125rem;color:#a8a399;font-style:italic}.table-module__chalkboardFrame___xB3N5{filter:drop-shadow(0 8px 14px rgba(0,0,0,.3));--sketch-stroke: rgba(200, 210, 195, .3)}.table-module__chalkboardWrapper___KjY5r .table-module__toolbar___zhCel{background-color:#1e3a2d;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.15 0 0 0 0 0.28 0 0 0 0 0.20 0 0 0 0.08 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23c)' opacity='1'/%3E%3C/svg%3E")}.table-module__chalkboardWrapper___KjY5r .table-module__panelFooter___lCCKo{background-color:#1e3a2d;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.15 0 0 0 0 0.28 0 0 0 0 0.20 0 0 0 0.08 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23c)' opacity='1'/%3E%3C/svg%3E")}.table-module__chalkboardWrapper___KjY5r .table-module__searchIcon___ayhK8{color:#a8b5a0}.table-module__chalkboardWrapper___KjY5r .table-module__searchInput___PqsEG{color:#d4e8cb;font-family:JetBrains Mono,monospace;font-size:.875rem;background-color:#142e2266;background-image:none;border:1px solid rgba(200,210,195,.2);border-radius:8px;box-shadow:1px 1px 2px #00000026}.table-module__chalkboardWrapper___KjY5r .table-module__searchInput___PqsEG::-moz-placeholder{color:#a8b5a0;font-family:Caveat,cursive}.table-module__chalkboardWrapper___KjY5r .table-module__searchInput___PqsEG::placeholder{color:#a8b5a0;font-family:Caveat,cursive}.table-module__chalkboardWrapper___KjY5r .table-module__searchInput___PqsEG:focus{outline:2px dotted #d4e8cb;outline-offset:2px}.table-module__chalkboard___v0m3A{color:#e8e4d9}.table-module__chalkboard___v0m3A .table-module__th___GQbKk{font-family:Caveat,cursive;font-weight:600;font-size:1.125rem;text-transform:uppercase;letter-spacing:.06em;color:#d4e8cb;background-color:#1e3a2d;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.15 0 0 0 0 0.28 0 0 0 0 0.20 0 0 0 0.08 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23c)' opacity='1'/%3E%3C/svg%3E");border-bottom-color:#c8d2c333}.table-module__chalkboard___v0m3A .table-module__td___WktB5{color:#e8e4d9;border-bottom-color:#c8d2c333}.table-module__boardColumnHeader___kY3Fj.table-module__chalkboard___v0m3A{font-family:Caveat,cursive;color:#d4e8cb;background-color:#1e3a2d;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.15 0 0 0 0 0.28 0 0 0 0 0.20 0 0 0 0.08 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23c)' opacity='1'/%3E%3C/svg%3E");border-bottom-color:#c8d2c333}.table-module__boardRow___C1P60.table-module__chalkboard___v0m3A{color:#e8e4d9;border-bottom-color:#c8d2c333}.table-module__expandIcon___8V45X svg{transition:transform .15s ease-out}.table-module__expandIcon___8V45X[aria-expanded=true] svg{transform:rotate(90deg)}.cells-module__cell___x7DuX{position:relative}.cells-module__toggle___U6zvr{font-family:JetBrains Mono,monospace;font-size:.75rem;padding:2px 10px;border-radius:4px;border:1px solid rgba(61,53,43,.15);background:#3d352b0a;color:#a8a399;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.cells-module__toggle___U6zvr:hover{background:#3d352b14}.cells-module__toggleActive___B5U1p{background:#8fb99626;border-color:#8fb9964d;color:#3d5a42}.cells-module__chalkToggle___mGnxj{font-size:.75rem;border-color:#c8d2c326;background:#c8d2c30f;color:#a8b5a0}.cells-module__chalkToggleActive___40QxK{background:#d4e8cb1f;border-color:#d4e8cb40;color:#d4e8cb}.cells-module__input___6FtwV{font-family:JetBrains Mono,monospace;font-size:.75rem;padding:2px 8px;border-radius:4px;border:1px solid rgba(61,53,43,.15);background:#faf8f099;color:#1a1917;width:100%;max-width:180px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.cells-module__input___6FtwV::-moz-placeholder{color:#a8a399}.cells-module__input___6FtwV::placeholder{color:#a8a399}.cells-module__input___6FtwV:focus{border-color:#8fb99680;box-shadow:0 0 0 2px #8fb99626}.cells-module__input___6FtwV[type=number]{max-width:100px}.cells-module__chalkInput___T8jRO{font-size:.75rem;border-color:#c8d2c333;background:#142e2299;color:#d4e8cb}.cells-module__chalkInput___T8jRO::-moz-placeholder{color:#a8b5a0}.cells-module__chalkInput___T8jRO::placeholder{color:#a8b5a0}.cells-module__chalkInput___T8jRO:focus{border-color:#d4e8cb66;box-shadow:0 0 0 2px #d4e8cb1a}.cells-module__dropdownToggle___OPFkY{display:inline-flex;align-items:center;gap:6px;font-family:JetBrains Mono,monospace;font-size:.75rem;color:#8c7d56;background:#8c7d5614;border:1px solid rgba(140,125,86,.2);border-radius:4px;padding:2px 8px 2px 10px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.cells-module__dropdownToggle___OPFkY:hover{background:#8c7d5624;border-color:#8c7d5659}.cells-module__chevron___LosSi{flex-shrink:0;stroke:currentColor;transition:transform .15s ease}.cells-module__chevronOpen___sM4y0{transform:rotate(180deg)}.cells-module__dropdown___8Ov5L{position:absolute;top:calc(100% + 4px);left:0;min-width:100%;background:#faf8f0;border:1px solid rgba(61,53,43,.12);border-radius:6px;box-shadow:0 4px 12px #3d352b1f;z-index:20;padding:4px 0;animation:cells-module__fadeIn___ha0fT .12s ease}@keyframes cells-module__fadeIn___ha0fT{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.cells-module__dropdownItem___3iLvf{font-family:JetBrains Mono,monospace;font-size:.75rem;color:#68635c;padding:6px 12px;cursor:default}.cells-module__dropdownItem___3iLvf:hover{background:#8fb9961f;color:#1a1917}.cells-module__chalkDropdownToggle___o9LTb{font-size:.75rem;color:#d4e8cb;background:#c8d2c314;border-color:#c8d2c326}.cells-module__chalkDropdownToggle___o9LTb:hover{background:#c8d2c326;border-color:#c8d2c340}.cells-module__chalkDropdown___E1y9a{background-color:#1e3a2d;border-color:#c8d2c333;box-shadow:0 4px 16px #0006}.cells-module__chalkDropdownItem___cW122{font-size:.75rem;color:#e8e4d9}.cells-module__chalkDropdownItem___cW122:hover{background:#c8d2c31f;color:#d4e8cb}.prop-table-module__wrapper___AufwJ.prop-table-module__wrapper___AufwJ{overflow:visible}.prop-table-module__codeName___Sa7rq{font-family:JetBrains Mono,monospace;font-size:.875rem;color:#51719b}.prop-table-module__required___4C7Pm{color:#9e5e5e;margin-left:2px}.prop-table-module__desc___QNNO7{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);color:#68635c;font-size:1rem;line-height:1.5;display:block}.prop-table-module__chalkCodeName___Erzq6{color:#d4e8cb}.prop-table-module__chalkRequired___3Mh-y{color:#e8a0a0}.prop-table-module__chalkDesc___46JCK{color:#e8e4d9}.swatch-module__swatch___Kvyl1{border-radius:.75rem;border:2px solid rgba(61,53,43,.12);transition:all .2s ease;flex-shrink:0;cursor:pointer;background:transparent;padding:0}.swatch-module__active___4ydAA{border-color:#7c9cc0;box-shadow:0 4px 6px #3d352b14;transform:scale(1.1)}.swatch-module__disabled___t3NKC{opacity:.35;filter:grayscale(100%);cursor:not-allowed}.swatch-module__chalkboard___0IL0r{border-color:#c8d2c333}.swatch-module__chalkboard___0IL0r.swatch-module__active___4ydAA{border-color:#d4e8cb;box-shadow:0 4px 6px #00000040}.card-module__borderLayer___WSpJq{position:relative;display:flex;flex-direction:column;overflow:hidden;border-radius:10.2613552204px 13.9939804531px 12.8313181748px 11.7450953895px;--sketch-stroke: rgba(61, 53, 43, .32)}.card-module__default___glPy-{filter:drop-shadow(0 1px 2px rgba(61,53,43,.09))}.card-module__elevated___uhWj9{filter:drop-shadow(0 4px 6px rgba(61,53,43,.1)) drop-shadow(0 1px 2px rgba(61,53,43,.06))}.card-module__textureLayer___Kcofz{position:relative;z-index:1;flex:1 1 auto;padding:2rem;font-size:1.125rem;line-height:32px;background-color:#faf8f0;border-radius:10.820763309px 14.017098291px 14.3591687278px 10.5718840179px;clip-path:var(--sketch-clip)}.card-module__textureLayer___Kcofz>*+*{margin-top:2rem}.card-module__flat___KnG5z,.card-module__flat___KnG5z .card-module__textureLayer___Kcofz{border-radius:12px}.card-module__small___HXUTr .card-module__textureLayer___Kcofz{padding:.75rem 1rem;font-size:1rem;line-height:1.2}.card-module__small___HXUTr .card-module__textureLayer___Kcofz>*+*{margin-top:.75rem}.card-module__withAccent___2t7bV:before{content:"";position:absolute;width:160px;height:160px;border-radius:50%;top:-40px;right:-40px;filter:blur(40px);mix-blend-mode:multiply;pointer-events:none;z-index:0;opacity:.12}.card-module__accentBlue___a1KIq:before{background:radial-gradient(circle,#AFC6E0 0%,transparent 70%)}.card-module__accentGreen___RNWoA:before{background:radial-gradient(circle,#B5D4BA 0%,transparent 70%)}.card-module__accentAmber___uMhom:before{background:radial-gradient(circle,#E4C9A8 0%,transparent 70%)}.card-module__accentRose___VPI3t:before{background:radial-gradient(circle,#DEB5B5 0%,transparent 70%)}.card-module__accentSlate___-l4jE:before{background:radial-gradient(circle,#B0BEC8 0%,transparent 70%)}.card-module__chalkboard___bQ48O{--sketch-stroke: rgba(200, 210, 195, .3);filter:drop-shadow(0 4px 10px rgba(0,0,0,.28))}.card-module__chalkboard___bQ48O .card-module__textureLayer___Kcofz{color:#e8e4d9;background-color:#142e22}.input-module__wrapper___xaEw6{display:flex;flex-direction:column;gap:.5rem}.input-module__label___lu7R1{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1rem;font-weight:600;color:#1a1917;letter-spacing:.03em}.input-module__field___khFpX{position:relative;display:block;width:100%;border-radius:8px;--sketch-fill: rgba(61, 53, 43, .05);--sketch-stroke: rgba(61, 53, 43, .32)}.input-module__field___khFpX:hover{--sketch-stroke: rgba(61, 53, 43, .42)}.input-module__field___khFpX:focus-within{outline:2px dotted #A8A399;outline-offset:2px;--sketch-stroke: rgba(138, 155, 168, .45)}.input-module__input___h7K-F{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;position:relative;z-index:1;width:100%;border:none;outline:none;background:transparent;color:#1a1917;font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-weight:500;line-height:1.2}.input-module__input___h7K-F::-moz-placeholder{color:#a8a399;font-weight:400;font-family:Caveat,cursive;font-size:1.125rem}.input-module__input___h7K-F::placeholder{color:#a8a399;font-weight:400;font-family:Caveat,cursive;font-size:1.125rem}.input-module__small___SkByh .input-module__input___h7K-F{padding:.5rem .75rem;font-size:.875rem}.input-module__medium___0QPuV .input-module__input___h7K-F{padding:.75rem 1rem;font-size:1rem}.input-module__large___zGwRu .input-module__input___h7K-F{padding:1rem 1.25rem;font-size:1.125rem}.input-module__error___QDqga{--sketch-stroke: rgba(201, 139, 139, .45)}.input-module__error___QDqga:focus-within{--sketch-stroke: rgba(201, 139, 139, .55)}.input-module__disabled___K-5hi{opacity:.55;--sketch-fill: rgba(61, 53, 43, .03);--sketch-stroke: rgba(61, 53, 43, .15)}.input-module__disabled___K-5hi .input-module__input___h7K-F{cursor:not-allowed}.input-module__disabled___K-5hi:hover{--sketch-stroke: rgba(61, 53, 43, .15)}.input-module__helperText___njeLH{font-family:Caveat,cursive;font-size:1rem;color:#a8a399}.input-module__helperError___qDBpD{color:#9e5e5e}.input-module__chalkboard___Xh-5s .input-module__label___lu7R1{color:#d4e8cb}.input-module__chalkboard___Xh-5s .input-module__helperText___njeLH{color:#a8b5a0}.input-module__chalkboard___Xh-5s .input-module__field___khFpX{--sketch-fill: rgba(200, 210, 195, .08);--sketch-stroke: rgba(200, 210, 195, .3)}.input-module__chalkboard___Xh-5s .input-module__field___khFpX:hover{--sketch-stroke: rgba(200, 210, 195, .45)}.input-module__chalkboard___Xh-5s .input-module__field___khFpX:focus-within{outline:2px dotted #d4e8cb;outline-offset:2px;--sketch-stroke: #d4e8cb}.input-module__chalkboard___Xh-5s .input-module__input___h7K-F{color:#d4e8cb}.input-module__chalkboard___Xh-5s .input-module__input___h7K-F::-moz-placeholder{color:#a8b5a0}.input-module__chalkboard___Xh-5s .input-module__input___h7K-F::placeholder{color:#a8b5a0}.input-module__chalkboard___Xh-5s .input-module__disabled___K-5hi{--sketch-fill: rgba(200, 210, 195, .04);--sketch-stroke: rgba(200, 210, 195, .12)}.input-module__chalkboard___Xh-5s .input-module__disabled___K-5hi:hover{--sketch-stroke: rgba(200, 210, 195, .12)}.select-module__wrapper___Hc5F3{display:flex;flex-direction:column;gap:.5rem;position:relative}.select-module__label___ay-3s{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1rem;font-weight:600;color:#1a1917;letter-spacing:.03em}.select-module__nativeSelect___UA2d-{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;opacity:0}.select-module__trigger___xMYHi{position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-weight:500;line-height:1.2;color:#1a1917;cursor:pointer;background:transparent;border:none;outline:none;border-radius:8px;--sketch-fill: rgba(61, 53, 43, .05);--sketch-stroke: rgba(61, 53, 43, .32)}.select-module__trigger___xMYHi:hover:not(:disabled){--sketch-stroke: rgba(61, 53, 43, .42)}.select-module__trigger___xMYHi.select-module__open___w3mbZ{--sketch-stroke: rgba(138, 155, 168, .45)}.select-module__trigger___xMYHi:focus-visible{outline:2px dotted #A8A399;outline-offset:2px}.select-module__trigger___xMYHi:disabled{opacity:.55;cursor:not-allowed;--sketch-fill: rgba(61, 53, 43, .03);--sketch-stroke: rgba(61, 53, 43, .15)}.select-module__triggerLabel___ihpER{position:relative;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-module__placeholder___0VOFP{color:#a8a399;font-family:Caveat,cursive;font-size:1.125rem}.select-module__small___iU9W9{padding:.5rem .75rem;font-size:.875rem}.select-module__small___iU9W9 .select-module__chevron___0dCTg{width:14px;height:14px}.select-module__medium___B-XBN{padding:.75rem 1rem;font-size:1rem}.select-module__large___iII2c{padding:1rem 1.25rem;font-size:1.125rem}.select-module__chevron___0dCTg{position:relative;z-index:1;flex-shrink:0;margin-left:.5rem;color:#a8a399;transition:transform .2s ease-out}.select-module__chevronOpen___cFOYe{transform:rotate(180deg)}.select-module__error___P5RBk{--sketch-stroke: rgba(201, 139, 139, .45)}.select-module__error___P5RBk.select-module__open___w3mbZ{--sketch-stroke: rgba(201, 139, 139, .55)}.select-module__dropdown___Q-uK3{position:absolute;top:calc(100% + 6px);left:0;width:100%;z-index:600;--sketch-fill: #F5F1E6;--sketch-stroke: rgba(61, 53, 43, .32);filter:drop-shadow(0 8px 14px rgba(61,53,43,.12));animation:select-module__slideDown___sT374 .18s ease-out}.select-module__options___HmrQ0{position:relative;z-index:1;padding:.75rem 1rem;max-height:320px;overflow-y:auto}@keyframes select-module__slideDown___sT374{0%{opacity:0;transform:translateY(-4px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.select-module__option___vNnue{padding:.5rem .75rem;font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1rem;color:#1a1917;cursor:pointer;border-radius:7.3494871656px 8.038152972px 8.8915453758px 7.3795197837px;transition:background-color .15s ease-out}.select-module__option___vNnue:hover:not(.select-module__optionDisabled___ex2zq){background-image:radial-gradient(circle at 50% 50%,rgba(143,185,150,.22) 0%,transparent 70%);background-color:#8fb9961f}.select-module__optionSelected___tAFjn{font-weight:600;color:#1a1917;background-image:radial-gradient(circle at 50% 50%,rgba(138,155,168,.18) 0%,transparent 70%)}.select-module__optionHighlighted___zYQLq{background-image:radial-gradient(circle at 50% 50%,rgba(143,185,150,.28) 0%,transparent 70%);background-color:#8fb99624}.select-module__optionDisabled___ex2zq{opacity:.45;cursor:not-allowed;text-decoration:line-through}.select-module__helperText___r5gyn{font-family:Caveat,cursive;font-size:1rem;color:#a8a399}.select-module__helperError___ydSPT{color:#9e5e5e}.select-module__chalkboard___sXBw8 .select-module__label___ay-3s{color:#d4e8cb}.select-module__chalkboard___sXBw8 .select-module__helperText___r5gyn{color:#a8b5a0}.select-module__chalkboard___sXBw8 .select-module__trigger___xMYHi{color:#d4e8cb;--sketch-fill: rgba(200, 210, 195, .08);--sketch-stroke: rgba(200, 210, 195, .3)}.select-module__chalkboard___sXBw8 .select-module__trigger___xMYHi:hover:not(:disabled){--sketch-stroke: rgba(200, 210, 195, .45)}.select-module__chalkboard___sXBw8 .select-module__trigger___xMYHi.select-module__open___w3mbZ{--sketch-stroke: #d4e8cb}.select-module__chalkboard___sXBw8 .select-module__trigger___xMYHi:focus-visible{outline:2px dotted #d4e8cb;outline-offset:2px}.select-module__chalkboard___sXBw8 .select-module__trigger___xMYHi:disabled{opacity:.55;--sketch-fill: rgba(200, 210, 195, .04);--sketch-stroke: rgba(200, 210, 195, .12)}.select-module__chalkboard___sXBw8 .select-module__placeholder___0VOFP,.select-module__chalkboard___sXBw8 .select-module__chevron___0dCTg{color:#a8b5a0}.select-module__chalkboard___sXBw8 .select-module__dropdown___Q-uK3{--sketch-fill: #1e3a2d;--sketch-stroke: rgba(200, 210, 195, .3);filter:drop-shadow(0 8px 14px rgba(0,0,0,.3))}.select-module__chalkboard___sXBw8 .select-module__option___vNnue{color:#e8e4d9;border-radius:8px}.select-module__chalkboard___sXBw8 .select-module__option___vNnue:hover:not(.select-module__optionDisabled___ex2zq){background-image:none;background-color:#c8d2c314}.select-module__chalkboard___sXBw8 .select-module__optionSelected___tAFjn{color:#d4e8cb;background-image:none;background-color:#c8d2c31f}.select-module__chalkboard___sXBw8 .select-module__optionHighlighted___zYQLq{background-image:none;background-color:#c8d2c31a}.tabs-module__tabs___UMeM9{display:flex;flex-direction:column}.tabs-module__tabBar___qKukf{display:flex;gap:.25rem}.tabs-module__tabButton___DyC14{flex:0 0 auto}.tabs-module__content___F1vOY{margin-top:.5rem}.alert-module__alert___j7ZRS{position:relative;display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;color:#68635c;filter:drop-shadow(0 1px 2px rgba(61,53,43,.09));--sketch-stroke: rgba(61, 53, 43, .32)}.alert-module__surface___IaVgU{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;border-radius:8px;clip-path:var(--sketch-clip)}.alert-module__iconWrapper___kLoxT{position:relative;z-index:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.alert-module__message___klR2U{flex:1;min-width:0;position:relative;z-index:1;font-family:Cormorant Garamond,Georgia,serif;font-size:1rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alert-module__dismiss___f2uoG{position:relative;z-index:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:.25rem;background:transparent;border:none;cursor:pointer;border-radius:7.4022820412px 8.1572004364px 8.081755765px 7.4344159448px;color:inherit;opacity:.6;transition:opacity .15s ease-out,background .15s ease-out}.alert-module__dismiss___f2uoG:hover{opacity:1;background:#0000000a}.alert-module__dismiss___f2uoG:focus-visible{opacity:1;outline:2px solid #8A9BA8;outline-offset:2px}.alert-module__info___PBo1l{--sketch-stroke: rgba(138, 155, 168, .45)}.alert-module__success___AVBKS{--sketch-stroke: rgba(94, 138, 102, .42)}.alert-module__warning___zkMaJ{--sketch-stroke: rgba(166, 123, 79, .45)}.alert-module__error___cxg96{color:#9e5e5e;--sketch-stroke: rgba(158, 94, 94, .45)}.alert-module__chalkboard___7pgWk{color:#e8e4d9;--sketch-stroke: rgba(200, 210, 195, .4)}.alert-module__chalkboard___7pgWk .alert-module__surface___IaVgU{background-color:#1e3a2d;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.15 0 0 0 0 0.28 0 0 0 0 0.20 0 0 0 0.08 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23c)' opacity='1'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px}.alert-module__chalkboard___7pgWk .alert-module__dismiss___f2uoG{color:#a8b5a0}.alert-module__chalkboard___7pgWk .alert-module__dismiss___f2uoG:hover{background:#c8d2c314}.modal-module__overlay___a52Ni{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:1.5rem;background-color:#1a191738;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;z-index:400;animation:modal-module__fadeIn___5OWd5 .2s ease-out}.modal-module__backdrop___RS4yj{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;padding:0;margin:0;border:none;background:transparent;cursor:default;z-index:400}.modal-module__modal___ZioOV{position:relative;background-color:#faf8f0;border-radius:16.861741964px 22.4598068376px 20.6118764586px 16.3015887388px;border:1px solid rgba(61,53,43,.12);box-shadow:0 10px 15px #3d352b1a,0 4px 6px #3d352b14;max-height:90vh;overflow-y:auto;animation:modal-module__slideUp___vfFrm .25s ease-out;z-index:500}.modal-module__small___hcxwF{width:100%;max-width:360px}.modal-module__medium___mjbM5{width:100%;max-width:480px}.modal-module__large___1dzyf{width:100%;max-width:640px}.modal-module__header___iP09B{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.5rem 1.5rem 0;position:relative;z-index:1}.modal-module__title___nj06m{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1.875rem;font-weight:700;color:#1a1917;line-height:1.2;margin:0}.modal-module__close___gQou9{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;padding:.5rem;background:transparent;border:none;cursor:pointer;border-radius:7.4946177763px 8.8798499554px 8.1508379227px 7.5248096829px;color:#a8a399;transition:color .15s ease-out,background .15s ease-out;flex-shrink:0}.modal-module__close___gQou9:hover{color:#1a1917;background:#0000000a}.modal-module__close___gQou9:focus-visible{outline:2px solid #8A9BA8;outline-offset:2px}.modal-module__body___Y-EdA{padding:1rem 1.5rem 1.5rem;position:relative;z-index:1}.modal-module__chalkboard___qY8qo{background-color:#1e3a2d;border-color:#c8d2c333}.modal-module__chalkboard___qY8qo .modal-module__title___nj06m{color:#d4e8cb}.modal-module__chalkboard___qY8qo .modal-module__close___gQou9{color:#a8b5a0}.modal-module__chalkboard___qY8qo .modal-module__close___gQou9:hover{color:#d4e8cb;background:#c8d2c314}@keyframes modal-module__fadeIn___5OWd5{0%{opacity:0}to{opacity:1}}@keyframes modal-module__slideUp___vfFrm{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.modal-module__overlay___a52Ni,.modal-module__modal___ZioOV{animation:none}}.textarea-module__wrapper___NbiNO{display:flex;flex-direction:column;gap:.5rem}.textarea-module__label___ejhyZ{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1rem;font-weight:600;color:#1a1917;letter-spacing:.03em}.textarea-module__field___KluQf{position:relative;display:block;width:100%;border-radius:8px;--sketch-fill: rgba(61, 53, 43, .05);--sketch-stroke: rgba(61, 53, 43, .32)}.textarea-module__field___KluQf:hover{--sketch-stroke: rgba(61, 53, 43, .42)}.textarea-module__field___KluQf:focus-within{outline:2px dotted #A8A399;outline-offset:2px;--sketch-stroke: rgba(138, 155, 168, .45)}.textarea-module__textarea___0y-7v{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;position:relative;z-index:1;width:100%;min-height:4rem;resize:none;border:none;outline:none;background:transparent;color:#1a1917;font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-weight:500;line-height:1.5}.textarea-module__textarea___0y-7v::-moz-placeholder{color:#a8a399;font-weight:400;font-family:Caveat,cursive;font-size:1.125rem}.textarea-module__textarea___0y-7v::placeholder{color:#a8a399;font-weight:400;font-family:Caveat,cursive;font-size:1.125rem}.textarea-module__resizeGrip___lONlE{position:absolute;right:3px;bottom:3px;z-index:2;display:flex;padding:3px;cursor:ns-resize;color:var(--sketch-stroke, rgba(61, 53, 43, .32));opacity:.75;touch-action:none;transition:opacity .15s ease-out}.textarea-module__resizeGrip___lONlE:hover{opacity:1}.textarea-module__resizeGrip___lONlE svg{width:11px;height:11px;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}.textarea-module__small___yPyr8 .textarea-module__textarea___0y-7v{padding:.5rem .75rem;font-size:.875rem}.textarea-module__medium___ezQxA .textarea-module__textarea___0y-7v{padding:.75rem 1rem;font-size:1rem}.textarea-module__large___xfeKi .textarea-module__textarea___0y-7v{padding:1rem 1.25rem;font-size:1.125rem}.textarea-module__error___EkXKJ{--sketch-stroke: rgba(201, 139, 139, .45)}.textarea-module__error___EkXKJ:focus-within{--sketch-stroke: rgba(201, 139, 139, .55)}.textarea-module__disabled___9CKbb{opacity:.55;--sketch-fill: rgba(61, 53, 43, .03);--sketch-stroke: rgba(61, 53, 43, .15)}.textarea-module__disabled___9CKbb .textarea-module__textarea___0y-7v{cursor:not-allowed}.textarea-module__disabled___9CKbb:hover{--sketch-stroke: rgba(61, 53, 43, .15)}.textarea-module__helperText___l1sPh{font-family:Caveat,cursive;font-size:1rem;color:#a8a399}.textarea-module__helperError___VfTLy{color:#9e5e5e}.textarea-module__chalkboard___zZ0X0 .textarea-module__label___ejhyZ{color:#d4e8cb}.textarea-module__chalkboard___zZ0X0 .textarea-module__helperText___l1sPh{color:#a8b5a0}.textarea-module__chalkboard___zZ0X0 .textarea-module__field___KluQf{--sketch-fill: rgba(200, 210, 195, .08);--sketch-stroke: rgba(200, 210, 195, .3)}.textarea-module__chalkboard___zZ0X0 .textarea-module__field___KluQf:hover{--sketch-stroke: rgba(200, 210, 195, .45)}.textarea-module__chalkboard___zZ0X0 .textarea-module__field___KluQf:focus-within{outline:2px dotted #d4e8cb;outline-offset:2px;--sketch-stroke: #d4e8cb}.textarea-module__chalkboard___zZ0X0 .textarea-module__textarea___0y-7v{color:#d4e8cb}.textarea-module__chalkboard___zZ0X0 .textarea-module__textarea___0y-7v::-moz-placeholder{color:#a8b5a0}.textarea-module__chalkboard___zZ0X0 .textarea-module__textarea___0y-7v::placeholder{color:#a8b5a0}.textarea-module__chalkboard___zZ0X0 .textarea-module__disabled___9CKbb{--sketch-fill: rgba(200, 210, 195, .04);--sketch-stroke: rgba(200, 210, 195, .12)}.textarea-module__chalkboard___zZ0X0 .textarea-module__disabled___9CKbb:hover{--sketch-stroke: rgba(200, 210, 195, .12)}.progress-module__track___a5BMO{position:relative;width:100%;overflow:hidden}.progress-module__svg___3U0-E{display:block;width:100%;height:100%}.list-item-module__listItem___-tw9O{position:relative;display:flex;align-items:center;gap:.5rem;width:100%;font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);color:#1a1917;background:transparent;border:none;border-radius:8px;text-align:left;outline:none}.list-item-module__listItem___-tw9O:focus-visible{outline:2px solid #8A9BA8;outline-offset:2px}.list-item-module__static___qtEX6{cursor:default}.list-item-module__clickable___GLJmd{cursor:pointer}.list-item-module__blobBg___O3Mzh{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.list-item-module__blobFill___dXHk1{fill:transparent;transition:fill .25s ease}.list-item-module__blobRing___S9mas{fill:none;stroke:#3d352b38;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity .35s ease 50ms}.list-item-module__clickable___GLJmd:hover .list-item-module__blobFill___dXHk1{fill:#8fb9961f}.list-item-module__clickable___GLJmd:active .list-item-module__blobFill___dXHk1{fill:#8fb99633}.list-item-module__clickable___GLJmd:hover .list-item-module__blobRing___S9mas{opacity:1}.list-item-module__clickable___GLJmd:active .list-item-module__blobRing___S9mas{stroke:#3d352b8c}.list-item-module__active___UsL8O .list-item-module__blobFill___dXHk1{fill:#8fb99640}.list-item-module__active___UsL8O:hover .list-item-module__blobFill___dXHk1{fill:#8fb9964d}.list-item-module__active___UsL8O .list-item-module__blobRing___S9mas{opacity:1}.list-item-module__small___9dphK{padding:.25rem .5rem;font-size:1rem;line-height:1.2}.list-item-module__medium___yGZCr{padding:.5rem .75rem;font-size:1.125rem;line-height:1.2}.list-item-module__icon___2b4wU{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#68635c}.list-item-module__label___SIzJ4{position:relative;z-index:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-item-module__action___qGh0-{position:relative;z-index:1;display:flex;align-items:center;flex-shrink:0;margin-left:auto}.list-item-module__chalkboard___qpWuM{color:#e8e4d9}.list-item-module__chalkboard___qpWuM .list-item-module__icon___2b4wU{color:#a8b5a0}.list-item-module__chalkboard___qpWuM .list-item-module__blobRing___S9mas{stroke:#c8d2c359}.list-item-module__chalkboard___qpWuM.list-item-module__clickable___GLJmd:active .list-item-module__blobRing___S9mas{stroke:#c8d2c3a6}.list-item-module__chalkboard___qpWuM:focus-visible{outline:2px solid #d4e8cb;outline-offset:2px}.accordion-module__accordion___mqGl-{width:100%}.accordion-module__header___mLfbd{display:flex;align-items:center;gap:.5rem;width:100%;padding:0;font-family:inherit;font-size:inherit;line-height:inherit;color:inherit;background:transparent;border:none;cursor:pointer;text-align:left}.accordion-module__header___mLfbd:hover .accordion-module__icon___Z90NR{color:#1a1917}.accordion-module__header___mLfbd:focus-visible{outline:2px solid #8A9BA8;outline-offset:2px;border-radius:8px}.accordion-module__icon___Z90NR{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:1em;height:1em;font-size:.65em;color:#68635c;transition:transform .2s ease,color .15s ease-out}.accordion-module__title___HusgG{flex:1}.accordion-module__content___1K0td{margin-top:.5rem;padding-left:calc(1em + .5rem);color:#68635c;font-size:1rem;line-height:1.5}.accordion-module__chalkboard___am8r4 .accordion-module__icon___Z90NR{color:#a8b5a0}.accordion-module__chalkboard___am8r4 .accordion-module__header___mLfbd:hover .accordion-module__icon___Z90NR{color:#d4e8cb}.accordion-module__chalkboard___am8r4 .accordion-module__header___mLfbd:focus-visible{outline:2px solid #d4e8cb;outline-offset:2px}.accordion-module__chalkboard___am8r4 .accordion-module__content___1K0td{color:#a8b5a0}.accordion-module__icon___Z90NR svg{transition:transform .15s ease-out}.accordion-module__expanded___836xG .accordion-module__icon___Z90NR svg{transform:rotate(90deg)}.icon-module__icon___2vrJz{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;overflow:visible}.icon-module__blobBg___ENPYJ{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.icon-module__blobFill___IPbwQ{fill:#f0ead8}.icon-module__blobRing___1awqV{fill:none;stroke:#3d352b59;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:.5}.icon-module__content___TaZR6{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;color:#1a1917}.icon-module__small___Xp--F{width:36px;height:36px}.icon-module__medium___tCjMB{width:44px;height:44px}.icon-module__large___vBtP7{width:52px;height:52px}.radio-module__group___4RWR9{display:flex;flex-direction:column;gap:.75rem}.radio-module__horizontal___yWjeu{flex-direction:row;flex-wrap:wrap;gap:1.25rem}.radio-module__wrapper___BB05E{display:flex;align-items:center;gap:1rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.radio-module__wrapper___BB05E:hover .radio-module__blobFill___p5BX4{fill:#7c9cc02e}.radio-module__labelLeft___ijB93{flex-direction:row-reverse}.radio-module__input___M2nFJ{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.radio-module__input___M2nFJ:focus-visible~.radio-module__box___H7ofS{outline:2px dotted #A8A399;outline-offset:2px}.radio-module__input___M2nFJ:checked~.radio-module__box___H7ofS{--sketch-stroke: rgba(61, 53, 43, .7)}.radio-module__input___M2nFJ:checked~.radio-module__box___H7ofS .radio-module__dot___jVJ-d{transform:scale(1)}.radio-module__input___M2nFJ:disabled~.radio-module__box___H7ofS{opacity:.4;cursor:not-allowed}.radio-module__boxWrapper___Y3qis{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px}.radio-module__blobBg___IR-M5{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.radio-module__blobFill___p5BX4{transition:fill .25s ease;fill:transparent}.radio-module__box___H7ofS{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background-color:transparent;position:relative;z-index:1;border-radius:50%;--sketch-stroke: rgba(61, 53, 43, .42)}.radio-module__box___H7ofS:hover{--sketch-stroke: rgba(61, 53, 43, .6)}.radio-module__dot___jVJ-d{width:12px;height:12px;border-radius:50%;background-color:#1a1917;transform:scale(0);transition:transform .2s ease-out}.radio-module__labelText___I-nu3{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1.125rem;font-weight:400;color:#68635c;line-height:1.5}.radio-module__chalkboard___IIBqI .radio-module__labelText___I-nu3{color:#a8b5a0}.radio-module__chalkboard___IIBqI .radio-module__box___H7ofS{--sketch-stroke: rgba(200, 210, 195, .5)}.radio-module__chalkboard___IIBqI .radio-module__box___H7ofS:hover{--sketch-stroke: #d4e8cb}.radio-module__chalkboard___IIBqI .radio-module__dot___jVJ-d{background-color:#d4e8cb}.radio-module__chalkboard___IIBqI .radio-module__blobFill___p5BX4{display:none}.radio-module__chalkboard___IIBqI .radio-module__input___M2nFJ:focus-visible~.radio-module__box___H7ofS{outline-color:#d4e8cb}.radio-module__chalkboard___IIBqI .radio-module__input___M2nFJ:checked~.radio-module__box___H7ofS{--sketch-stroke: #d4e8cb}.switch-module__wrapper___5-2P1{display:inline-flex;align-items:center;gap:1rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.switch-module__labelLeft___WlT-N{flex-direction:row-reverse}.switch-module__input___YKZRj{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.switch-module__input___YKZRj:focus-visible~.switch-module__track___QNvnO{outline:2px solid #8A9BA8;outline-offset:2px}.switch-module__input___YKZRj:checked~.switch-module__track___QNvnO{background-color:#8fb996;--sketch-stroke: #5E8A66}.switch-module__input___YKZRj:checked~.switch-module__track___QNvnO .switch-module__thumb___cunvF{transform:translate(var(--switch-travel));background-color:#fdfcf8}.switch-module__input___YKZRj:disabled~.switch-module__track___QNvnO{opacity:.4;cursor:not-allowed}.switch-module__track___QNvnO{position:relative;flex-shrink:0;box-sizing:border-box;border-radius:9999px;background-color:#3d352b0f;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;transition:background-color .2s ease;--sketch-stroke: rgba(61, 53, 43, .2)}.switch-module__thumb___cunvF{position:absolute;top:3px;left:3px;background-color:#68635c;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;box-shadow:0 1px 2px #1a19171f;transition:transform .2s ease-out,background-color .2s ease}.switch-module__small___WPIxc .switch-module__track___QNvnO{width:34px;height:20px}.switch-module__small___WPIxc .switch-module__thumb___cunvF{width:12px;height:12px;border-radius:5.9190495668px 6.3443127509px 6.2731773717px 5.1450246877px}.switch-module__small___WPIxc{--switch-travel: 14px}.switch-module__medium___yPulW .switch-module__track___QNvnO{width:42px;height:24px}.switch-module__medium___yPulW .switch-module__thumb___cunvF{width:16px;height:16px;border-radius:6.6793936744px 8.5192742867px 9.4809086199px 7.331976778px}.switch-module__medium___yPulW{--switch-travel: 18px}.switch-module__large___VlKV1 .switch-module__track___QNvnO{width:52px;height:30px}.switch-module__large___VlKV1 .switch-module__thumb___cunvF{width:22px;height:22px;border-radius:9.883116473px 11.5902973882px 11.2637250449px 10.1073963964px}.switch-module__large___VlKV1{--switch-travel: 22px}.switch-module__labelText___9Qg39{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1.125rem;color:#68635c;line-height:1.5}.switch-module__chalkboard___qKTMz .switch-module__track___QNvnO{background:#c8d2c314;--sketch-stroke: rgba(200, 210, 195, .25)}.switch-module__chalkboard___qKTMz .switch-module__thumb___cunvF{background:#a8b5a0}.switch-module__chalkboard___qKTMz .switch-module__labelText___9Qg39{color:#a8b5a0}.switch-module__chalkboard___qKTMz .switch-module__input___YKZRj:checked~.switch-module__track___QNvnO{background:#3d5a42;--sketch-stroke: #a8c49a}.switch-module__chalkboard___qKTMz .switch-module__input___YKZRj:checked~.switch-module__track___QNvnO .switch-module__thumb___cunvF{background:#d4e8cb}.spinner-module__spinner___FDTk2{display:inline-flex;color:#68635c}.spinner-module__chalkboard___DLE1z{color:#d4e8cb}.spinner-module__svg___JnCWN{overflow:visible}.spinner-module__track___xbnbo{stroke:currentColor;stroke-width:3.4;opacity:.15}.spinner-module__head___j5dWe{stroke:currentColor;stroke-width:4.6;stroke-dasharray:26 74;animation:spinner-module__draw___dZVus 1.1s linear infinite}@keyframes spinner-module__draw___dZVus{to{stroke-dashoffset:-100}}@media (prefers-reduced-motion: reduce){.spinner-module__head___j5dWe{animation-duration:2.4s}}.skeleton-module__skeleton___HCSvg{display:block;animation:skeleton-module__pulse___6eCq1 1.4s ease-in-out infinite}.skeleton-module__svg___OzxGp{display:block;width:100%;height:100%}.skeleton-module__text___v17Nv{width:100%;height:1em;margin:.15em 0}.skeleton-module__rect___wqIJy{width:100%;height:100px}.skeleton-module__circle___RCmyR{width:40px;height:40px}@keyframes skeleton-module__pulse___6eCq1{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion: reduce){.skeleton-module__skeleton___HCSvg{animation:none}}.divider-module__horizontal___tP3rG{display:flex;align-items:center;gap:.75rem;width:100%}.divider-module__line___KnBes{flex:1;height:2px;border-radius:9999px;background:linear-gradient(90deg,transparent,rgba(26,25,23,.18) 12%,rgba(26,25,23,.18) 88%,transparent)}.divider-module__label___WiUwZ{flex-shrink:0;font-family:Caveat,cursive;font-size:1.125rem;color:#a8a399;line-height:1}.divider-module__vertical___wBSrT{display:inline-block;align-self:stretch;width:2px;min-height:1em;border-radius:9999px;background:linear-gradient(180deg,transparent,rgba(26,25,23,.18) 12%,rgba(26,25,23,.18) 88%,transparent)}.divider-module__chalkboard___gXTde .divider-module__line___KnBes{background:linear-gradient(90deg,transparent,rgba(212,232,203,.25) 12%,rgba(212,232,203,.25) 88%,transparent)}.divider-module__chalkboard___gXTde .divider-module__label___WiUwZ{color:#a8b5a0}.divider-module__chalkboard___gXTde.divider-module__vertical___wBSrT{background:linear-gradient(180deg,transparent,rgba(212,232,203,.25) 12%,rgba(212,232,203,.25) 88%,transparent)}.tooltip-module__wrapper___XeVNe{display:inline-block}.tooltip-module__tooltip___e-rkz{position:fixed;z-index:700;max-width:240px;padding:.5rem .75rem;font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:.875rem;line-height:1.35;color:#1a1917;background-color:#e5dbc4;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='k'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.50 0 0 0 0 0.35 0 0 0 0 0.20 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23k)' opacity='1'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;border:1px solid rgba(61,53,43,.15);border-radius:7.5441723257px 8.382133141px 8.5588590697px 6.2925783997px;box-shadow:0 4px 6px #3d352b14,0 2px 4px #3d352b0f;pointer-events:none;animation:tooltip-module__tooltipIn___CZbRw .12s ease-out}.tooltip-module__tooltip___e-rkz:after{content:"";position:absolute;width:9px;height:9px;background-color:#e5dbc4;transform:rotate(45deg);z-index:-1}.tooltip-module__top___78WWU:after{bottom:-4px;left:50%;margin-left:-4.5px}.tooltip-module__bottom___Irl3O:after{top:-4px;left:50%;margin-left:-4.5px}.tooltip-module__left___C1Ec4:after{right:-4px;top:50%;margin-top:-4.5px}.tooltip-module__right___oUA-Z:after{left:-4px;top:50%;margin-top:-4.5px}.tooltip-module__chalkboard___Um6dx{color:#d4e8cb;background-color:#1e3a2d;border:1px solid rgba(200,210,195,.2)}.tooltip-module__chalkboard___Um6dx:after{background-color:#1e3a2d}@keyframes tooltip-module__tooltipIn___CZbRw{0%{opacity:0;transform:scale(.96)}to{opacity:1}}@media (prefers-reduced-motion: reduce){.tooltip-module__tooltip___e-rkz{animation:none}}.toast-module__stack___hDi0s{position:fixed;z-index:800;display:flex;flex-direction:column;gap:.75rem;max-width:calc(100vw - 2rem);pointer-events:none}.toast-module__stack___hDi0s>*{pointer-events:auto}.toast-module__topLeft___Luw-F{top:1.5rem;left:1.5rem}.toast-module__topCenter___N1DwF{top:1.5rem;left:50%;transform:translate(-50%)}.toast-module__topRight___Dtgau{top:1.5rem;right:1.5rem}.toast-module__bottomLeft___Eb2lo{bottom:1.5rem;left:1.5rem;flex-direction:column-reverse}.toast-module__bottomCenter___gs-Yb{bottom:1.5rem;left:50%;transform:translate(-50%);flex-direction:column-reverse}.toast-module__bottomRight___-0e2j{bottom:1.5rem;right:1.5rem;flex-direction:column-reverse}.toast-module__item___RFjtm{width:360px;max-width:100%;animation:toast-module__toastIn___9m9iN .2s ease-out}@keyframes toast-module__toastIn___9m9iN{0%{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion: reduce){.toast-module__item___RFjtm{animation:none}}.toast-module__card___ZCvJS{position:relative;display:flex;align-items:flex-start;gap:1rem;padding:1.25rem 1.5rem;color:#68635c;filter:drop-shadow(0 8px 14px rgba(61,53,43,.14));--sketch-stroke: rgba(61, 53, 43, .32)}.toast-module__surface___mfMl0{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;border-radius:12px;clip-path:var(--sketch-clip)}.toast-module__iconWrapper___lnjcC{position:relative;z-index:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-top:2px}.toast-module__content___AlliM{flex:1;min-width:0;position:relative;z-index:1}.toast-module__title___1Oqh8{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1.25rem;font-weight:700;line-height:1.2;margin-bottom:.25rem}.toast-module__description___eiUSB{font-family:Cormorant Garamond,Georgia,serif;font-size:1rem;line-height:1.5}.toast-module__dismiss___tUGx4{position:relative;z-index:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:.25rem;background:transparent;border:none;cursor:pointer;border-radius:7.5860901055px 8.2992557176px 8.5573936272px 7.3242017133px;color:inherit;opacity:.6;transition:opacity .15s ease-out,background .15s ease-out}.toast-module__dismiss___tUGx4:hover{opacity:1;background:#0000000a}.toast-module__dismiss___tUGx4:focus-visible{opacity:1;outline:2px solid #8A9BA8;outline-offset:2px}.toast-module__info___Nh8S9{--sketch-stroke: rgba(138, 155, 168, .45)}.toast-module__success___hlKLc{--sketch-stroke: rgba(94, 138, 102, .42)}.toast-module__warning___XUMJt{--sketch-stroke: rgba(166, 123, 79, .45)}.toast-module__error___pSFFC{color:#9e5e5e;--sketch-stroke: rgba(158, 94, 94, .45)}.toast-module__chalkboard___c49gt{color:#e8e4d9;filter:drop-shadow(0 8px 14px rgba(0,0,0,.32));--sketch-stroke: rgba(200, 210, 195, .4)}.toast-module__chalkboard___c49gt .toast-module__surface___mfMl0{background-color:#1e3a2d;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.15 0 0 0 0 0.28 0 0 0 0 0.20 0 0 0 0.08 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23c)' opacity='1'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px}.toast-module__chalkboard___c49gt .toast-module__dismiss___tUGx4{color:#a8b5a0}.toast-module__chalkboard___c49gt .toast-module__dismiss___tUGx4:hover{background:#c8d2c314}.avatar-module__avatar___gw6mG{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-weight:600;color:#1a1917;-webkit-user-select:none;-moz-user-select:none;user-select:none;--avatar-fill: #F5F1E6;--sketch-stroke: rgba(61, 53, 43, .2)}.avatar-module__surface___TYxHH{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;display:flex;align-items:center;justify-content:center;overflow:hidden;background-color:var(--avatar-fill);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;clip-path:var(--sketch-clip)}.avatar-module__circle___EHI7d .avatar-module__surface___TYxHH{border-radius:50%}.avatar-module__square___Hx-84 .avatar-module__surface___TYxHH{border-radius:6.009190243px 8.7502094px 9.3068396525px 7.9651077168px}.avatar-module__small___CPLh1{width:28px;height:28px;font-size:.75rem}.avatar-module__medium___1Nmcy{width:36px;height:36px;font-size:.875rem}.avatar-module__large___1CKR4{width:48px;height:48px;font-size:1.125rem}.avatar-module__xlarge___TY6p6{width:64px;height:64px;font-size:1.5rem}.avatar-module__image___yuWcg{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.avatar-module__blue___HGIn3{--avatar-fill: rgba(124, 156, 192, .18);color:#51719b}.avatar-module__green___ee9-J{--avatar-fill: rgba(143, 185, 150, .2);color:#5e8a66}.avatar-module__amber___A-ih1{--avatar-fill: rgba(212, 163, 115, .2);color:#a67b4f}.avatar-module__rose___eozxi{--avatar-fill: rgba(201, 139, 139, .2);color:#9e5e5e}.avatar-module__slate___bUlWM{--avatar-fill: rgba(138, 155, 168, .18);color:#5e7080}.avatar-module__chalkboard___n2ZKN{color:#d4e8cb;--avatar-fill: rgba(212, 232, 203, .08);--sketch-stroke: rgba(200, 210, 195, .4)}.avatar-module__chalkboard___n2ZKN .avatar-module__surface___TYxHH{background-image:none}.breadcrumb-module__breadcrumb___r-ILp{font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:.875rem}.breadcrumb-module__list___V3YFy{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0}.breadcrumb-module__item___dDwYf{display:flex;align-items:center;gap:.25rem}.breadcrumb-module__link___CHC9k{color:#68635c;text-decoration:none;border-radius:8px;transition:color .15s ease-out}.breadcrumb-module__link___CHC9k:hover{color:#1a1917;text-decoration:underline;text-underline-offset:2px}.breadcrumb-module__link___CHC9k:focus-visible{outline:2px solid #8A9BA8;outline-offset:2px}.breadcrumb-module__linkButton___XoMW-{background:none;border:none;padding:0;margin:0;font:inherit;cursor:pointer}.breadcrumb-module__current___dprI9{color:#1a1917;font-weight:500}.breadcrumb-module__static___affaf{color:#68635c}.breadcrumb-module__separator___uLhtn{flex-shrink:0;color:#a8a399;margin:0 .25rem}.breadcrumb-module__chalkboard___COJpw .breadcrumb-module__link___CHC9k{color:#a8b5a0}.breadcrumb-module__chalkboard___COJpw .breadcrumb-module__link___CHC9k:hover{color:#d4e8cb}.breadcrumb-module__chalkboard___COJpw .breadcrumb-module__link___CHC9k:focus-visible{outline:2px solid #d4e8cb;outline-offset:2px}.breadcrumb-module__chalkboard___COJpw .breadcrumb-module__current___dprI9{color:#d4e8cb}.breadcrumb-module__chalkboard___COJpw .breadcrumb-module__static___affaf{color:#a8b5a0}.breadcrumb-module__chalkboard___COJpw .breadcrumb-module__separator___uLhtn{color:#5e7a68}.pagination-module__pagination___XUA2y{display:flex;align-items:center;gap:.5rem}.pagination-module__list___20YPz{display:flex;align-items:center;gap:.25rem;list-style:none;margin:0;padding:0}.pagination-module__pageButton___-T5D5{min-width:32px;justify-content:center}.pagination-module__dots___gL2WQ{display:flex;align-items:center;justify-content:center;width:32px;color:#a8a399;font-family:Luminari,Cormorant Garamond,Georgia,serif}.menu-module__wrapper___WCtoy{display:inline-block}.menu-module__menu___i40Wj{position:fixed;z-index:600;min-width:160px;filter:drop-shadow(0 8px 14px rgba(61,53,43,.14));--sketch-stroke: rgba(61, 53, 43, .32);animation:menu-module__menuIn___-OAQJ .16s ease-out}.menu-module__surface___SJbaB{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-color:#f5f1e6;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;border-radius:9.873766536px 13.1103028909px 12.2195697109px 9.3845946583px;clip-path:var(--sketch-clip)}.menu-module__list___YjCfD{position:relative;z-index:1;padding:.5rem;max-height:320px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}@keyframes menu-module__menuIn___-OAQJ{0%{opacity:0;transform:translateY(-4px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion: reduce){.menu-module__menu___i40Wj{animation:none}}.menu-module__item___aqcgg{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;border:none;background:transparent;font-family:var(--paper-font-default, "Luminari", "Cormorant Garamond", Georgia, serif);font-size:1rem;text-align:left;color:#1a1917;cursor:pointer;border-radius:7.0879576923px 8.7776669611px 8.0372118002px 7.3662891164px;transition:background-color .15s ease-out}.menu-module__item___aqcgg:hover:not(:disabled){background-image:radial-gradient(circle at 50% 50%,rgba(143,185,150,.22) 0%,transparent 70%);background-color:#8fb9961f}.menu-module__item___aqcgg:focus{outline:none;background-image:radial-gradient(circle at 50% 50%,rgba(143,185,150,.28) 0%,transparent 70%);background-color:#8fb99624}.menu-module__item___aqcgg:focus-visible{outline:2px solid #8A9BA8;outline-offset:2px}.menu-module__icon___1qUvA{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#68635c}.menu-module__label___MtQMh{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-module__danger___p9oZo,.menu-module__danger___p9oZo .menu-module__icon___1qUvA{color:#9e5e5e}.menu-module__danger___p9oZo:hover:not(:disabled),.menu-module__danger___p9oZo:focus{background-image:radial-gradient(circle at 50% 50%,rgba(201,139,139,.22) 0%,transparent 70%);background-color:#c98b8b1f}.menu-module__itemDisabled___HByLP{opacity:.45;cursor:not-allowed}.menu-module__separator___g2uay{height:1px;margin:.25rem .5rem;background:#3d352b26}.menu-module__chalkboard___5jIwI{filter:drop-shadow(0 8px 14px rgba(0,0,0,.3));--sketch-stroke: rgba(200, 210, 195, .3)}.menu-module__chalkboard___5jIwI .menu-module__surface___SJbaB{background-image:none;background-color:#1e3a2d}.menu-module__chalkboard___5jIwI .menu-module__item___aqcgg{color:#e8e4d9}.menu-module__chalkboard___5jIwI .menu-module__item___aqcgg:hover:not(:disabled),.menu-module__chalkboard___5jIwI .menu-module__item___aqcgg:focus{background-image:none;background-color:#c8d2c31a}.menu-module__chalkboard___5jIwI .menu-module__item___aqcgg:focus-visible{outline:2px solid #d4e8cb;outline-offset:2px}.menu-module__chalkboard___5jIwI .menu-module__icon___1qUvA{color:#a8b5a0}.menu-module__chalkboard___5jIwI .menu-module__danger___p9oZo,.menu-module__chalkboard___5jIwI .menu-module__danger___p9oZo .menu-module__icon___1qUvA{color:#e8a0a0}.menu-module__chalkboard___5jIwI .menu-module__danger___p9oZo:hover:not(:disabled),.menu-module__chalkboard___5jIwI .menu-module__danger___p9oZo:focus{background-color:#e8a0a026}.menu-module__chalkboard___5jIwI .menu-module__separator___g2uay{background:#c8d2c333}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.left-0{left:0}.right-0{right:0}.top-0{top:0}.top-\[var\(--pc-stack-toggle-top\,50\%\)\]{top:var(--pc-stack-toggle-top,50%)}.z-10{z-index:10}.z-20{z-index:20}.z-\[290\]{z-index:290}.z-\[300\]{z-index:300}.m-0{margin:0}.mx-0{margin-left:0;margin-right:0}.\!mb-0{margin-bottom:0!important}.-mb-1{margin-bottom:-.25rem}.-ml-8{margin-left:-2rem}.-mr-8{margin-right:-2rem}.-mt-8{margin-top:-2rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-\[0\.2rem\]{margin-bottom:.2rem}.mb-\[0\.4rem\]{margin-bottom:.4rem}.ml-0{margin-left:0}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.box-border{box-sizing:border-box}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[18px\]{height:18px}.h-\[20px\]{height:20px}.h-\[28px\]{height:28px}.h-\[32px\]{height:32px}.h-\[4\.625rem\]{height:4.625rem}.h-\[64px\]{height:64px}.h-\[66px\]{height:66px}.h-\[9px\]{height:9px}.h-\[var\(--pc-header-h\)\]{height:var(--pc-header-h)}.h-\[var\(--pc-sidebar-h\,100\%\)\]{height:var(--pc-sidebar-h,100%)}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-64,.max-h-\[16rem\]{max-height:16rem}.max-h-\[320px\]{max-height:320px}.min-h-0{min-height:0px}.min-h-11{min-height:2.75rem}.min-h-8{min-height:2rem}.min-h-\[7rem\]{min-height:7rem}.min-h-full{min-height:100%}.min-h-page{min-height:calc(100vh - 64px)}.w-10{width:2.5rem}.w-2{width:.5rem}.w-20{width:5rem}.w-24{width:6rem}.w-4{width:1rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[110px\]{width:110px}.w-\[140px\]{width:140px}.w-\[160px\]{width:160px}.w-\[18px\]{width:18px}.w-\[20px\]{width:20px}.w-\[224px\]{width:224px}.w-\[28px\]{width:28px}.w-\[9px\]{width:9px}.w-\[min\(var\(--pc-stack-width\)\,100vw\)\]{width:min(var(--pc-stack-width),100vw)}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-16{min-width:4rem}.min-w-\[140px\]{min-width:140px}.min-w-\[6ch\]{min-width:6ch}.min-w-min{min-width:-moz-min-content;min-width:min-content}.max-w-\[360px\]{max-width:360px}.max-w-\[85\%\]{max-width:85%}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-\[0_0_36px\]{flex:0 0 36px}.flex-\[1_1_0\%\]{flex:1 1 0%}.flex-\[1_1_260px\]{flex:1 1 260px}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-\[6\.625rem\]{flex-basis:6.625rem}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.scroll-mt-4{scroll-margin-top:1rem}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-\[20px_116px_minmax\(0\,1fr\)_88px_150px_72px\]{grid-template-columns:20px 116px minmax(0,1fr) 88px 150px 72px}.grid-cols-\[76px_minmax\(0\,1fr\)_112px\]{grid-template-columns:76px minmax(0,1fr) 112px}.grid-cols-\[76px_minmax\(0\,1fr\)_84px_96px_112px\]{grid-template-columns:76px minmax(0,1fr) 84px 96px 112px}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[3px\]{border-radius:3px}.rounded-\[8px\]{border-radius:8px}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-l-\[3px\]{border-left-width:3px}.border-solid{border-style:solid}.border-none{border-style:none}.border-black\/10{border-color:#0000001a}.border-black\/\[0\.08\]{border-color:#00000014}.border-black\/\[15\%\]{border-color:#00000026}.border-black\/\[8\%\]{border-color:#00000014}.border-desk-border{border-color:#c8d2c326}.border-paper-950\/\[12\%\]{border-color:#3d352b1f}.bg-\[rgba\(155\,122\,181\,0\.08\)\]{background-color:#9b7ab514}.bg-\[var\(--pui-bg-base\)\]{background-color:var(--pui-bg-base)}.bg-black\/\[0\.08\]{background-color:#00000014}.bg-black\/\[4\%\]{background-color:#0000000a}.bg-black\/\[6\%\]{background-color:#0000000f}.bg-chalk-fail-text{--tw-bg-opacity: 1;background-color:rgb(214 160 160 / var(--tw-bg-opacity, 1))}.bg-chalk-pass-text{--tw-bg-opacity: 1;background-color:rgb(181 214 181 / var(--tw-bg-opacity, 1))}.bg-chalk-running-text{--tw-bg-opacity: 1;background-color:rgb(214 196 160 / var(--tw-bg-opacity, 1))}.bg-desk-bg{--tw-bg-opacity: 1;background-color:rgb(30 58 45 / var(--tw-bg-opacity, 1))}.bg-desk-bg\/60{background-color:#1e3a2d99}.bg-desk-text-muted{--tw-bg-opacity: 1;background-color:rgb(168 181 160 / var(--tw-bg-opacity, 1))}.bg-ink-900\/\[40\%\]{background-color:#1a191766}.bg-transparent{background-color:transparent}.bg-watercolor-green{--tw-bg-opacity: 1;background-color:rgb(143 185 150 / var(--tw-bg-opacity, 1))}.bg-watercolor-green\/\[18\%\]{background-color:#8fb9962e}.bg-watercolor-green\/\[30\%\]{background-color:#8fb9964d}.bg-watercolor-rose-dark{--tw-bg-opacity: 1;background-color:rgb(158 94 94 / var(--tw-bg-opacity, 1))}.bg-watercolor-rose\/\[18\%\]{background-color:#c98b8b2e}.bg-watercolor-rose\/\[30\%\]{background-color:#c98b8b4d}.bg-chalkboard{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.15 0 0 0 0 0.28 0 0 0 0 0.20 0 0 0 0.08 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23c)' opacity='1'/%3E%3C/svg%3E"),linear-gradient(135deg,#264a3a,#1e3a2d 60%)}.bg-none{background-image:none}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-\[var\(--pc-stack-pad\)\]{padding:var(--pc-stack-pad)}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-\[0\.35em\]{padding-left:.35em;padding-right:.35em}.px-\[var\(--pc-stack-pad\)\]{padding-left:var(--pc-stack-pad);padding-right:var(--pc-stack-pad)}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-\[0\.1em\]{padding-top:.1em;padding-bottom:.1em}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-\[var\(--pc-content-pad-bottom\)\]{padding-bottom:var(--pc-content-pad-bottom)}.pl-1{padding-left:.25rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-\[1\.4rem\]{padding-left:1.4rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-display-luminari{font-family:Luminari,Cormorant Garamond,Georgia,serif}.font-handwritten{font-family:Caveat,cursive}.font-mono{font-family:JetBrains Mono,Fira Code,monospace}.\!text-base{font-size:1.125rem!important}.\!text-sm{font-size:1rem!important}.text-2xs{font-size:.75rem}.text-3xs{font-size:.6875rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.85em\]{font-size:.85em}.text-\[0\.95rem\]{font-size:.95rem}.text-\[1\.1rem\]{font-size:1.1rem}.text-\[1\.3rem\]{font-size:1.3rem}.text-\[1\.75rem\]{font-size:1.75rem}.text-\[17px\]{font-size:17px}.text-base{font-size:1.125rem}.text-lg{font-size:1.5rem}.text-md{font-size:1.25rem}.text-sm{font-size:1rem}.text-xs{font-size:.875rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-\[1\.1\]{line-height:1.1}.leading-\[1\.2\]{line-height:1.2}.leading-\[1\.7\]{line-height:1.7}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-\[\#7B5E9E\]{--tw-text-opacity: 1;color:rgb(123 94 158 / var(--tw-text-opacity, 1))}.text-\[var\(--pui-text-primary\)\]{color:var(--pui-text-primary)}.text-desk-chalk{--tw-text-opacity: 1;color:rgb(212 232 203 / var(--tw-text-opacity, 1))}.text-desk-text{--tw-text-opacity: 1;color:rgb(232 228 217 / var(--tw-text-opacity, 1))}.text-desk-text-muted{--tw-text-opacity: 1;color:rgb(168 181 160 / var(--tw-text-opacity, 1))}.text-inherit{color:inherit}.text-ink-300{--tw-text-opacity: 1;color:rgb(168 163 153 / var(--tw-text-opacity, 1))}.text-ink-500{--tw-text-opacity: 1;color:rgb(104 99 92 / var(--tw-text-opacity, 1))}.text-ink-900{--tw-text-opacity: 1;color:rgb(26 25 23 / var(--tw-text-opacity, 1))}.text-state-danger{--tw-text-opacity: 1;color:rgb(160 96 96 / var(--tw-text-opacity, 1))}.text-watercolor-amber-dark{--tw-text-opacity: 1;color:rgb(166 123 79 / var(--tw-text-opacity, 1))}.text-watercolor-blue-dark{--tw-text-opacity: 1;color:rgb(81 113 155 / var(--tw-text-opacity, 1))}.text-watercolor-green-dark{--tw-text-opacity: 1;color:rgb(94 138 102 / var(--tw-text-opacity, 1))}.text-watercolor-rose-dark{--tw-text-opacity: 1;color:rgb(158 94 94 / var(--tw-text-opacity, 1))}.text-watercolor-slate-dark{--tw-text-opacity: 1;color:rgb(94 112 128 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.decoration-desk-border{text-decoration-color:#c8d2c326}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-\[0\.35\]{opacity:.35}.opacity-\[0\.45\]{opacity:.45}.opacity-\[0\.4\]{opacity:.4}.opacity-\[0\.55\]{opacity:.55}.opacity-\[0\.65\]{opacity:.65}.opacity-\[0\.6\]{opacity:.6}.opacity-\[0\.7\]{opacity:.7}.opacity-\[0\.85\]{opacity:.85}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[-2px_0_8px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow: -2px 0 8px rgba(0,0,0,.15);--tw-shadow-colored: -2px 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(214\,160\,160\,0\.9\)\]{--tw-shadow: 0 0 6px rgba(214,160,160,.9);--tw-shadow-colored: 0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[2px_0_12px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow: 2px 0 12px rgba(0,0,0,.15);--tw-shadow-colored: 2px 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(214\,160\,160\,0\.6\)\]{--tw-shadow: inset 0 0 0 1px rgba(214,160,160,.6);--tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(214\,196\,160\,0\.6\)\]{--tw-shadow: inset 0 0 0 1px rgba(214,196,160,.6);--tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.outline-2{outline-width:2px}.outline-offset-\[-2px\]{outline-offset:-2px}.outline-\[rgba\(200\,154\,90\,0\.5\)\]{outline-color:#c89a5a80}.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-sm{--tw-backdrop-blur: blur(4px);-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,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.\[background-repeat\:repeat\,no-repeat\]{background-repeat:repeat,no-repeat}.\[background-size\:200px_200px\,auto\]{background-size:200px 200px,auto}.\[container-type\:inline-size\]{container-type:inline-size}.\[cursor\:inherit\]{cursor:inherit}.\[font\:inherit\]{font:inherit}.\[phase\:1\]{phase:1}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}:root{--paper-font-default: "Cormorant Garamond", Georgia, serif;--pui-btn-primary: rgba(143, 185, 150, .25);--pui-btn-primary-hover: rgba(143, 185, 150, .3);--pui-btn-primary-active: rgba(143, 185, 150, .3);--pui-btn-secondary: rgba(61, 53, 43, .1);--pui-btn-secondary-hover: rgba(61, 53, 43, .14);--pui-btn-secondary-active: rgba(61, 53, 43, .18)}header>div[class*=headerActions]{flex:1;min-width:0}header[class*=layout-module__header___]{height:64px}header[class*=layout-module__header___]{background-color:transparent;background-image:none;border-bottom:none;box-shadow:none}.plan-row-card [class*=textureLayer]{padding:.375rem .875rem}.stack-task-card [class*=textureLayer]{padding:.5rem .875rem}@media (max-width: 480px){.phase-table-phone [class*=tableScroll]{overflow-x:visible}.phase-table-phone table,.phase-table-phone thead,.phase-table-phone tbody,.phase-table-phone tr,.phase-table-phone th,.phase-table-phone td{display:block;width:auto}.phase-table-phone thead{display:none}.phase-table-phone tr{padding:.5rem 0;border-bottom:1px solid rgba(0,0,0,.08)}.phase-table-phone tr:last-child{border-bottom:none}.phase-table-phone td{height:auto;padding:.125rem 1rem;border-bottom:none}}.run-meta-full{display:none}@container (min-width: 190px){.run-meta-full{display:inline}}.archive-row-action{padding:.25rem .75rem}.commit-btn-compact{display:none}@container (max-width: 140px){.commit-btn-full{display:none}.commit-btn-compact{display:inline-flex}}.phase-running-row{background-image:linear-gradient(to right,var(--pui-btn-primary) 0,var(--pui-btn-primary) var(--phase-fill, 0%),transparent var(--phase-fill, 0%))}@media (max-width: 480px){button[class*=iconButton][class*=small],label[class*=wrapper] [class*=boxWrapper]{width:44px;height:44px}}@media (max-width: 480px){.plan-row-card [class*=textureLayer]{padding-top:.75rem;padding-bottom:.75rem}}:root{--pc-content-pad-bottom: 0px}@media (max-width: 480px){:root{--pc-content-pad-bottom: 96px}}:root{--pc-stack-width: 288px;--pc-stack-pad: 16px}@media (max-width: 480px){:root{--pc-stack-width: 100vw}}@media (min-width: 1391px){:root{--pc-stack-width: 480px;--pc-stack-pad: 1.5rem}}:root{--pc-stack-toggle-top: 50%}@media (max-width: 480px){:root{--pc-stack-toggle-top: 70%}}:root{--pc-header-h: 66px}.pc-page.pc-page>div{border-radius:0;clip-path:none;padding-top:2rem}@media (min-width: 1199px){.pc-page.pc-page>div{padding-right:var(--pc-stack-width)}}.pc-page-header{padding-left:2rem;padding-right:2rem;border-left:1px solid var(--pui-sketch-stroke);border-bottom:1px solid var(--pui-sketch-stroke)}@media (min-width: 1199px){.pc-page-header{padding-right:var(--pc-stack-width)}}.pc-page.pc-page{border-left:1px solid var(--pui-sketch-stroke);filter:none}.pc-git-file-row [class*=boxWrapper]{width:24px;height:24px;margin-bottom:-4px}.pc-row{display:flex;align-items:flex-end;height:32px;padding-top:0;padding-bottom:4px;line-height:1}.pc-row-label{display:flex;align-items:flex-end;height:32px;padding-bottom:4px;line-height:1}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-desk-chalk:hover{text-decoration-color:#d4e8cb}.enabled\:hover\:-translate-y-px:hover:enabled{--tw-translate-y: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.enabled\:hover\:brightness-\[1\.15\]:hover:enabled{--tw-brightness: brightness(1.15);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)}.enabled\:active\:translate-y-0:active:enabled{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.enabled\:active\:brightness-\[0\.95\]:active:enabled{--tw-brightness: brightness(.95);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)}.group[aria-expanded=true] .group-aria-expanded\:rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media not all and (min-width: 1024px){.max-lg\:hidden{display:none}.max-lg\:grid-cols-\[20px_116px_minmax\(0\,1fr\)_88px_72px\]{grid-template-columns:20px 116px minmax(0,1fr) 88px 72px}.max-lg\:grid-cols-\[76px_minmax\(0\,1fr\)_96px_112px\]{grid-template-columns:76px minmax(0,1fr) 96px 112px}}@media (max-width: 480px){.max-\[480px\]\:fixed{position:fixed}.max-\[480px\]\:bottom-0{bottom:0}.max-\[480px\]\:left-0{left:0}.max-\[480px\]\:right-0{right:0}.max-\[480px\]\:z-\[250\]{z-index:250}.max-\[480px\]\:flex{display:flex}.max-\[480px\]\:hidden{display:none}.max-\[480px\]\:max-w-none{max-width:none}.max-\[480px\]\:flex-\[1_1_100\%\]{flex:1 1 100%}.max-\[480px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-\[480px\]\:items-stretch{align-items:stretch}.max-\[480px\]\:justify-around{justify-content:space-around}.max-\[480px\]\:gap-1{gap:.25rem}.max-\[480px\]\:border-t{border-top-width:1px}.max-\[480px\]\:border-black\/10{border-color:#0000001a}.max-\[480px\]\:bg-\[var\(--pui-bg-base\,\#fff\)\]{background-color:var(--pui-bg-base,#fff)}.max-\[480px\]\:px-2{padding-left:.5rem;padding-right:.5rem}.max-\[480px\]\:py-2{padding-top:.5rem;padding-bottom:.5rem}.max-\[480px\]\:shadow-\[0_-2px_8px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow: 0 -2px 8px rgba(0,0,0,.08);--tw-shadow-colored: 0 -2px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.max-\[480px\]\:\[padding-bottom\:calc\(0\.5rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(.5rem + env(safe-area-inset-bottom))}}@media (min-width: 1024px){.lg\:sticky{position:sticky}.lg\:inset-auto{inset:auto}.lg\:top-0{top:0}.lg\:z-auto{z-index:auto}.lg\:hidden{display:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:\[--pc-sidebar-h\:calc\(100vh-160px\)\]{--pc-sidebar-h: calc(100vh - 160px) }}@media (min-width: 1199px){.min-\[1199px\]\:pr-\[var\(--pc-stack-width\)\]{padding-right:var(--pc-stack-width)}}
|