@crouton-kit/crouter 0.3.37 → 0.3.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-root.js +1 -0
- package/dist/{builtin-personas/runtime-base.md → builtin-memory/00-runtime-base.md} +7 -0
- package/dist/{builtin-personas/spine/has-manager.md → builtin-memory/01-spine/00-has-manager.md} +8 -0
- package/dist/builtin-memory/01-spine/01-no-manager.md +10 -0
- package/dist/{builtin-personas/lifecycle/terminal.md → builtin-memory/02-lifecycle/00-terminal.md} +8 -0
- package/dist/{builtin-personas/lifecycle/resident.md → builtin-memory/02-lifecycle/01-resident.md} +8 -0
- package/dist/{builtin-personas/waiting.md → builtin-memory/03-waiting.md} +7 -0
- package/dist/{builtin-personas/orchestration-kernel.md → builtin-memory/04-orchestration-kernel.md} +8 -0
- package/dist/{builtin-personas/advisor/PERSONA.md → builtin-memory/05-kinds/advisor/00-base.md} +5 -2
- package/dist/{builtin-personas/design/PERSONA.md → builtin-memory/05-kinds/design/00-base.md} +5 -2
- package/dist/{builtin-personas/design/orchestrator.md → builtin-memory/05-kinds/design/01-orchestrator.md} +5 -4
- package/dist/{builtin-personas/developer/PERSONA.md → builtin-memory/05-kinds/developer/00-base.md} +5 -2
- package/dist/{builtin-personas/developer/orchestrator.md → builtin-memory/05-kinds/developer/01-orchestrator.md} +5 -4
- package/dist/{builtin-personas/explore/PERSONA.md → builtin-memory/05-kinds/explore/00-base.md} +5 -2
- package/dist/{builtin-personas/explore/orchestrator.md → builtin-memory/05-kinds/explore/01-orchestrator.md} +5 -3
- package/dist/{builtin-personas/general/PERSONA.md → builtin-memory/05-kinds/general/00-base.md} +5 -2
- package/dist/{builtin-personas/general/orchestrator.md → builtin-memory/05-kinds/general/01-orchestrator.md} +5 -3
- package/dist/{builtin-personas/plan/PERSONA.md → builtin-memory/05-kinds/plan/00-base.md} +5 -2
- package/dist/{builtin-personas/plan/orchestrator.md → builtin-memory/05-kinds/plan/01-orchestrator.md} +5 -4
- package/dist/{builtin-personas/plan/reviewers/architecture-fit/PERSONA.md → builtin-memory/05-kinds/plan/reviewers/architecture-fit.md} +5 -2
- package/dist/{builtin-personas/plan/reviewers/code-smells/PERSONA.md → builtin-memory/05-kinds/plan/reviewers/code-smells.md} +5 -2
- package/dist/{builtin-personas/plan/reviewers/pattern-consistency/PERSONA.md → builtin-memory/05-kinds/plan/reviewers/pattern-consistency.md} +5 -2
- package/dist/{builtin-personas/plan/reviewers/requirements-coverage/PERSONA.md → builtin-memory/05-kinds/plan/reviewers/requirements-coverage.md} +5 -2
- package/dist/{builtin-personas/plan/reviewers/security/PERSONA.md → builtin-memory/05-kinds/plan/reviewers/security.md} +5 -2
- package/dist/{builtin-personas/product/PERSONA.md → builtin-memory/05-kinds/product/00-base.md} +5 -2
- package/dist/{builtin-personas/product/orchestrator.md → builtin-memory/05-kinds/product/01-orchestrator.md} +5 -4
- package/dist/{builtin-personas/product/teardown/PERSONA.md → builtin-memory/05-kinds/product/teardown.md} +5 -3
- package/dist/{builtin-personas/review/PERSONA.md → builtin-memory/05-kinds/review/00-base.md} +5 -2
- package/dist/{builtin-personas/review/orchestrator.md → builtin-memory/05-kinds/review/01-orchestrator.md} +5 -3
- package/dist/{builtin-personas/spec/PERSONA.md → builtin-memory/05-kinds/spec/00-base.md} +5 -2
- package/dist/{builtin-personas/spec/orchestrator.md → builtin-memory/05-kinds/spec/01-orchestrator.md} +5 -4
- package/dist/{builtin-personas/spec/requirements/PERSONA.md → builtin-memory/05-kinds/spec/requirements.md} +5 -2
- package/dist/builtin-memory/internal/INDEX.md +1 -1
- package/dist/builtin-memory/internal/examples/imessage-assistant.md +2 -2
- package/dist/builtin-views/prompt-review/core.mjs +6 -134
- package/dist/builtin-views/settings/core.mjs +26 -94
- package/dist/builtin-views/settings/text.mjs +0 -5
- package/dist/builtin-views/settings/tui.mjs +1 -7
- package/dist/builtin-views/settings/web.jsx +3 -49
- package/dist/clients/attach/attach-cmd.js +416 -416
- package/dist/commands/memory/read.js +3 -3
- package/dist/commands/memory/shared.d.ts +13 -8
- package/dist/commands/memory/shared.js +22 -8
- package/dist/commands/memory/write.js +5 -3
- package/dist/commands/node.js +40 -11
- package/dist/commands/profile/add-project.d.ts +1 -0
- package/dist/commands/profile/add-project.js +42 -0
- package/dist/commands/profile/delete.d.ts +1 -0
- package/dist/commands/profile/delete.js +39 -0
- package/dist/commands/profile/list.d.ts +1 -0
- package/dist/commands/profile/list.js +35 -0
- package/dist/commands/profile/new.d.ts +1 -0
- package/dist/commands/profile/new.js +50 -0
- package/dist/commands/profile/remove-project.d.ts +1 -0
- package/dist/commands/profile/remove-project.js +42 -0
- package/dist/commands/profile/rename.d.ts +1 -0
- package/dist/commands/profile/rename.js +42 -0
- package/dist/commands/profile/show.d.ts +1 -0
- package/dist/commands/profile/show.js +50 -0
- package/dist/commands/profile.d.ts +2 -0
- package/dist/commands/profile.js +33 -0
- package/dist/commands/sys/config.js +6 -21
- package/dist/commands/sys/prompt-review.js +90 -17
- package/dist/core/canvas/canvas.js +10 -9
- package/dist/core/canvas/db.js +11 -0
- package/dist/core/canvas/history.js +1 -0
- package/dist/core/canvas/types.d.ts +10 -0
- package/dist/core/config.d.ts +44 -1
- package/dist/core/config.js +155 -12
- package/dist/core/hearth/provider.d.ts +8 -0
- package/dist/core/hearth/providers/__tests__/sweep-and-release.test.d.ts +1 -0
- package/dist/core/hearth/providers/__tests__/sweep-and-release.test.js +254 -0
- package/dist/core/hearth/providers/blaxel-home.d.ts +39 -0
- package/dist/core/hearth/providers/blaxel-home.js +271 -21
- package/dist/core/hearth/providers/blaxel.d.ts +5 -0
- package/dist/core/hearth/providers/blaxel.js +86 -4
- package/dist/core/hearth/providers/types.d.ts +16 -0
- package/dist/core/memory-resolver.d.ts +26 -15
- package/dist/core/memory-resolver.js +158 -40
- package/dist/core/profiles/manifest.d.ts +33 -0
- package/dist/core/profiles/manifest.js +332 -0
- package/dist/core/profiles/select.d.ts +11 -0
- package/dist/core/profiles/select.js +115 -0
- package/dist/core/runtime/bearings.d.ts +9 -0
- package/dist/core/runtime/bearings.js +31 -0
- package/dist/core/runtime/front-door.js +9 -2
- package/dist/core/runtime/launch.d.ts +25 -7
- package/dist/core/runtime/launch.js +42 -55
- package/dist/core/runtime/nodes.d.ts +7 -0
- package/dist/core/runtime/nodes.js +6 -0
- package/dist/core/runtime/persona.js +18 -32
- package/dist/core/runtime/spawn.d.ts +13 -0
- package/dist/core/runtime/spawn.js +25 -0
- package/dist/core/scope.d.ts +14 -7
- package/dist/core/scope.js +76 -20
- package/dist/core/substrate/index.d.ts +3 -3
- package/dist/core/substrate/index.js +5 -3
- package/dist/core/substrate/on-read.js +3 -2
- package/dist/core/substrate/render.d.ts +16 -11
- package/dist/core/substrate/render.js +249 -62
- package/dist/core/substrate/schema.d.ts +11 -3
- package/dist/core/substrate/schema.js +25 -0
- package/dist/core/substrate/subject.d.ts +15 -2
- package/dist/core/substrate/subject.js +24 -2
- package/dist/hearth/control-plane/__tests__/error-serialization.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/error-serialization.test.js +29 -0
- package/dist/hearth/control-plane/__tests__/oauth-serving-marker.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/oauth-serving-marker.test.js +44 -0
- package/dist/hearth/control-plane/__tests__/wake-roll.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/wake-roll.test.js +230 -0
- package/dist/hearth/control-plane/db.js +27 -0
- package/dist/hearth/control-plane/hearth-target.d.ts +23 -0
- package/dist/hearth/control-plane/hearth-target.js +68 -0
- package/dist/hearth/control-plane/registry.d.ts +6 -1
- package/dist/hearth/control-plane/registry.js +7 -0
- package/dist/hearth/control-plane/relay.d.ts +4 -0
- package/dist/hearth/control-plane/relay.js +72 -3
- package/dist/hearth/control-plane/secrets.d.ts +14 -0
- package/dist/hearth/control-plane/secrets.js +21 -0
- package/dist/hearth/control-plane/server.js +140 -4
- package/dist/hearth/control-plane/serving.d.ts +15 -0
- package/dist/hearth/control-plane/serving.js +106 -0
- package/dist/hearth/control-plane/types.d.ts +20 -0
- package/dist/hearth/control-plane/wake.d.ts +8 -2
- package/dist/hearth/control-plane/wake.js +241 -3
- package/dist/pi-extensions/canvas-doc-substrate.js +2 -3
- package/dist/types.d.ts +57 -1
- package/dist/types.js +83 -1
- package/dist/web-client/assets/{index-MSKSWwV0.js → index-CbO8L0mN.js} +4 -4
- package/dist/web-client/assets/index-DwO46Cs5.css +2 -0
- package/dist/web-client/index.html +2 -2
- package/package.json +2 -2
- package/dist/builtin-memory/crouter-development/personas/base-prompt.md +0 -56
- package/dist/builtin-memory/crouter-development/personas/orchestrator-prompt.md +0 -57
- package/dist/builtin-memory/crouter-development/personas.md +0 -112
- package/dist/builtin-personas/spine/no-manager.md +0 -2
- package/dist/core/personas/index.d.ts +0 -13
- package/dist/core/personas/index.js +0 -11
- package/dist/core/personas/loader.d.ts +0 -159
- package/dist/core/personas/loader.js +0 -327
- package/dist/core/personas/resolve.d.ts +0 -59
- package/dist/core/personas/resolve.js +0 -376
- package/dist/web-client/assets/index-DUThOUzU.css +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:"Instrument Sans Variable", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-serif:"Fraunces Variable", Georgia, serif;--color-red-100:oklch(93.6% .032 17.717);--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-900:oklch(39.6% .141 25.723);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-500:oklch(79.5% .184 86.047);--color-lime-50:oklch(98.6% .031 120.757);--color-lime-200:oklch(93.8% .127 124.321);--color-lime-800:oklch(45.3% .124 130.933);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-cyan-50:oklch(98.4% .019 200.873);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-cyan-700:oklch(52% .105 223.128);--color-cyan-800:oklch(45% .085 224.283);--color-blue-500:oklch(62.3% .214 259.815);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-800:oklch(45.5% .188 13.697);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-widest:.1em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Instrument Sans Variable", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--default-mono-font-family:"Fragment Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Monaco, monospace;--font-display:"Fraunces Variable", Georgia, serif;--font-code:"Fragment Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Monaco, monospace;--font-inst:"Martian Mono Variable", ui-monospace, monospace}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border)}html,body,#root{height:100%}body{background-color:var(--background);color:var(--foreground);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}body:before{content:"";z-index:0;pointer-events:none;background-image:linear-gradient(oklch(92% .008 80/.022) 1px,#0000 1px),linear-gradient(90deg,oklch(92% .008 80/.022) 1px,#0000 1px);background-size:56px 56px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(120% 90% at 50% 0,#000 30%,#0000 85%);mask-image:radial-gradient(120% 90% at 50% 0,#000 30%,#0000 85%)}body:after{content:"";z-index:0;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");position:fixed;inset:0}@keyframes pulse{0%{box-shadow:0 0 oklch(84% .14 148/.45)}70%{box-shadow:0 0 0 7px oklch(84% .14 148/0)}to{box-shadow:0 0 oklch(84% .14 148/0)}}@keyframes pulse-hot{0%{box-shadow:0 0 oklch(66% .21 33/.5)}70%{box-shadow:0 0 0 8px oklch(66% .21 33/0)}to{box-shadow:0 0 oklch(66% .21 33/0)}}@keyframes rise{to{opacity:1;transform:none}}}@layer components{.instlabel{font-family:var(--font-inst);letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground);font-size:12px;font-weight:500}.panel-raise{box-shadow:inset 0 1px 0 var(--raise), 0 14px 40px -18px oklch(0% 0 0/.6)}.mono{font-family:var(--font-code)}.panel{background:linear-gradient(180deg, var(--panel2), var(--panel));border:1px solid var(--line);box-shadow:inset 0 1px 0 var(--raise), 0 14px 40px -18px oklch(0% 0 0/.6);border-radius:10px}.btn{font-family:var(--font-sans);cursor:pointer;white-space:nowrap;border:1px solid var(--line2);min-height:36px;color:var(--ink2);background:0 0;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:8px 16px;font-size:14px;font-weight:600;transition:all .15s;display:inline-flex}.btn:hover{color:var(--ink);background:oklch(92% .008 80/.04);border-color:oklch(92% .008 80/.3)}.btn[disabled],.btn:disabled,.btn.disabled{opacity:.38;cursor:not-allowed;pointer-events:none}.btn.primary{background:var(--bone);color:var(--bone-ink);border-color:var(--bone);box-shadow:inset 0 1px oklch(100% 0 0/.25),0 8px 20px -8px oklch(92% .013 80/.25)}.btn.primary:hover{background:oklch(97% .012 90)}.btn.danger{color:var(--blk);border-color:oklch(66% .21 33/.35)}.btn.danger:hover{background:var(--blk-dim);border-color:var(--blk);color:oklch(72% .18 35)}.btn.sm{border-radius:6px;min-height:32px;padding:6px 12px;font-size:14px}.dot{border-radius:50%;flex:none;width:8px;height:8px}.dot.active{background:var(--act);animation:2.4s ease-out infinite pulse}.dot.idle{background:var(--idle)}.dot.done{background:var(--done)}.dot.dead,.dot.canceled{background:var(--dead)}.dot.blocked{background:var(--blk);animation:1.6s ease-out infinite pulse-hot;box-shadow:0 0 10px oklch(66% .21 33/.55)}.badge{font-family:var(--font-inst);letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--line);border-radius:99px;align-items:center;gap:7px;padding:4px 10px;font-size:12px;font-weight:500;display:inline-flex}.badge.active{color:var(--act);background:var(--act-dim);border-color:oklch(84% .14 148/.25)}.badge.idle{color:var(--idle);background:var(--idle-dim);border-color:oklch(80% .13 76/.25)}.badge.done{color:var(--done);background:var(--done-dim);border-color:oklch(73% .1 225/.25)}.badge.blocked{color:oklch(72% .16 35);background:var(--blk-dim);border-color:oklch(66% .21 33/.4)}.badge.dead,.badge.canceled{color:var(--dead);background:var(--dead-dim);border-color:var(--line)}.kbd{font-family:var(--font-inst);color:var(--mut);border:1px solid var(--line2);background:oklch(92% .008 80/.03);border-bottom-width:2px;border-radius:5px;padding:2px 6px;font-size:12px}.rv{opacity:0;transform:translateY(14px)}.in .rv{animation:.7s cubic-bezier(.2,.7,.2,1) forwards rise;animation-delay:calc(var(--i,0) * 70ms)}.search{border:1px solid var(--line);min-height:36px;color:var(--dim);background:oklch(0% 0 0/.25);border-radius:9px;flex:1;align-items:center;gap:8px;padding:8px 12px;font-size:14px;display:flex;box-shadow:inset 0 1px 3px oklch(0% 0 0/.3)}.search .kbd{margin-left:auto}.selectish{color:var(--ink2);border:1px solid var(--line);cursor:pointer;background:oklch(92% .008 80/.02);border-radius:9px;align-items:center;gap:8px;min-height:36px;padding:8px 12px;font-size:14px;display:flex}.selectish .car{color:var(--mut);font-size:12px}.checkish{color:var(--ink2);cursor:pointer;align-items:center;gap:8px;padding:8px 4px;font-size:14px;display:flex}.checkish .box{border:1px solid var(--line2);background:oklch(0% 0 0/.2);border-radius:4px;width:16px;height:16px}.seg{border:1px solid var(--line);background:oklch(0% 0 0/.25);border-radius:8px;display:flex;overflow:hidden}.seg button{font-family:var(--font-inst);letter-spacing:.14em;text-transform:uppercase;color:var(--mut);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;min-height:32px;padding:6px 12px;font-size:12px;transition:all .15s;display:inline-flex}.seg button.on{color:var(--bone-ink);background:var(--bone);font-weight:600}.chip{font-family:var(--font-inst);letter-spacing:.14em;text-transform:uppercase;border-radius:99px;flex:none;padding:3px 8px;font-size:12px}.chip.ok{color:var(--act);background:var(--act-dim);border:1px solid oklch(84% .14 148/.25)}.waitflag{color:oklch(72% .16 35);background:var(--blk-dim);border:1px solid oklch(66% .21 33/.35);border-radius:99px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.tiny-sel{font-family:var(--font-inst);letter-spacing:.12em;text-transform:uppercase;color:var(--mut);border:1px solid var(--line);cursor:pointer;border-radius:7px;align-items:center;gap:6px;padding:6px 12px;font-size:12px;display:flex}.tiny-sel:hover{color:var(--ink2)}.tiny-sel b{color:var(--ink2);font-weight:600}.filelink{color:var(--ink2);-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-color:var(--dim);-webkit-text-decoration-color:var(--dim);-webkit-text-decoration-color:var(--dim);text-decoration-color:var(--dim);text-underline-offset:3px;cursor:pointer}.filelink:hover{color:var(--bone);-webkit-text-decoration-color:var(--bone);-webkit-text-decoration-color:var(--bone);-webkit-text-decoration-color:var(--bone);text-decoration-color:var(--bone)}.filelink.peeked{color:var(--bone);text-decoration-style:solid;text-decoration-color:oklch(92% .013 80/.5)}.fm-chips{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.fm-chip{font-family:var(--font-code);color:var(--mut);border:1px solid var(--line);background:oklch(0% 0 0/.2);border-radius:6px;padding:3px 8px;font-size:12px}.fm-chip b{color:var(--ink2);font-weight:400}.tool{border:1px solid var(--line);background:var(--panel);box-shadow:inset 0 1px 0 var(--raise);border-radius:10px;overflow:hidden}.tool-head{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:12px;padding:8px 16px;transition:background .15s;display:flex}.tool-head:hover{background:oklch(92% .008 80/.03)}.tool-glyph{border:1px solid var(--line);width:20px;height:20px;color:var(--ink2);background:oklch(92% .008 80/.07);border-radius:5px;flex:none;justify-content:center;align-items:center;font-size:12px;display:flex}.tool-name{font-family:var(--font-inst);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);font-size:12px;font-weight:600}.tool-arg{font-family:var(--font-code);color:var(--mut);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:12px;overflow:hidden}.tool-dur{font-family:var(--font-inst);color:var(--dim);letter-spacing:.08em;flex:none;font-size:12px}.tool-head .chev{color:var(--dim);font-size:12px;transition:transform .2s}.tool.open .tool-head .chev{transform:rotate(90deg)}.tool-body{border-top:1px solid var(--line);background:oklch(0% 0 0/.28);padding:13px 16px 15px;display:none}.tool.open .tool-body{display:block}.tool-body pre{font-family:var(--font-code);color:var(--ink2);white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.7}.tool-body .fm{color:var(--dim)}.tool-body .hd{color:var(--ink);font-weight:400}.tool-body .bullet{color:var(--ink2)}.tool-body .bullet b{color:var(--ink);font-weight:400}.thinking{border-left:2px solid var(--think)}@supports (color:color-mix(in lab, red, red)){.thinking{border-left:2px solid color-mix(in oklch, var(--think) 55%, transparent)}}.think-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--think);opacity:.75;align-items:center;gap:9px;padding:7px 14px;font-size:12px;font-style:italic;transition:opacity .15s;display:flex}.think-toggle:hover{opacity:1}.think-toggle .chev{font-size:12px;font-style:normal;transition:transform .2s;display:inline-block}.thinking.open .chev{transform:rotate(90deg)}.think-toggle .dur{font-family:var(--font-inst);letter-spacing:.12em;color:var(--dim);font-size:12px;font-style:normal}.think-body{color:var(--mut);max-width:680px;padding:2px 14px 12px;font-size:13px;font-style:italic;line-height:1.65;display:none}.thinking.open .think-body{display:block}.inbound{border:1px solid var(--line);border-left:2px solid var(--done);background:oklch(73% .1 225/.045);border-radius:10px;gap:12px;padding:12px 16px;display:flex}.inbound .ic{color:var(--done);padding-top:1px;font-size:14px}.inbound .body{color:var(--ink2);min-width:0;font-size:14px}.inbound .src{font-family:var(--font-inst);letter-spacing:.14em;text-transform:uppercase;color:var(--done);align-items:center;gap:8px;margin-bottom:4px;font-size:12px;display:flex}.inbound .src .when{color:var(--dim);letter-spacing:.08em}.inbound .ref{font-family:var(--font-code);color:var(--dim);font-size:12px}.user{background:var(--bone);max-width:700px}@supports (color:color-mix(in lab, red, red)){.user{background:color-mix(in oklch, var(--bone) 9%, var(--panel))}}.user{border-left:2px solid var(--bone);color:var(--ink);border-radius:0 10px 10px 0;padding:10px 16px}.prose{max-width:700px;color:var(--ink);font-size:14px;line-height:1.7}.prose .role{align-items:center;gap:8px;margin-bottom:8px;display:flex}.prose .role .rdot{background:var(--act);border-radius:50%;width:7px;height:7px}.prose p{margin-bottom:10px}.prose ul{margin:4px 0 10px 2px;list-style:none}.prose li{color:var(--ink2);margin-bottom:7px;padding-left:18px;position:relative}.prose li:before{content:"—";color:var(--dim);position:absolute;left:0}.prose li b{color:var(--ink);font-weight:600}.cluster{border-bottom:1px solid var(--line);background:oklch(0% 0 0/.22);align-items:stretch;gap:0;padding:0 30px;display:flex}.gauge{border-right:1px solid var(--line);min-width:190px;margin-right:22px;padding:13px 22px 13px 0}.gauge .glabel{justify-content:space-between;align-items:baseline;margin-bottom:7px;display:flex}.gauge .gval{font-family:var(--font-inst);color:var(--ink);letter-spacing:.02em;font-size:18px;font-weight:600}.gauge .gval .u{color:var(--mut);letter-spacing:.1em;margin-left:4px;font-size:12px;font-weight:400}.gbar{background:oklch(92% .008 80/.09);border-radius:3px;height:4px;overflow:hidden}.gbar i{background:linear-gradient(90deg, var(--act), oklch(88% .12 140));border-radius:3px;min-width:8px;height:100%;display:block}.gauge .gsub{font-family:var(--font-code);color:var(--dim);margin-top:6px;font-size:12px}.dials{flex-wrap:wrap;flex:1;align-items:center;gap:26px;padding:13px 0;display:flex}.dial{flex-direction:column;gap:4px;display:flex}.dial .dval{font-family:var(--font-inst);color:var(--ink2);letter-spacing:.03em;font-size:12px;font-weight:500}.dial .dval em{color:var(--dim);font-style:normal}.dial.path .dval{font-family:var(--font-code);font-size:12px;font-weight:400}.gr-sec{align-items:center;gap:8px;padding:4px 9px 8px;display:flex}.gr-sec .rule{background:var(--line);flex:1;height:1px}.gr-sec .hint{font-family:var(--font-inst);color:var(--dim);letter-spacing:.1em;font-size:12px}.gnode{color:var(--ink2);cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;padding:6px 12px;font-size:13px;transition:all .12s;display:flex;overflow:hidden}.gnode:hover{color:var(--ink);background:oklch(92% .008 80/.04)}.gnode.cur{border-color:var(--line2);color:var(--ink);box-shadow:inset 0 1px 0 var(--raise);background:oklch(92% .013 80/.08);font-weight:600}.gnode .gd{border-radius:50%;flex:none;width:9px;height:9px}.gnode .gname{text-overflow:ellipsis;overflow:hidden}.gnode .gflag{font-family:var(--font-inst);color:oklch(72% .16 35);background:var(--blk-dim);border:1px solid oklch(66% .21 33/.3);border-radius:99px;flex:none;margin-left:auto;padding:1px 6px;font-size:12px}.gnode.dimmed{color:var(--dim)}.gnode.dimmed .gd{opacity:.6}.g1{margin-left:14px}.g2{margin-left:28px}.gr-gap{height:16px}.needs{margin-bottom:26px}.needs-head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.needs-head .flag{color:var(--blk);font-size:12px}.needs-head .instlabel{color:oklch(72% .16 35)}.needs-head .rule{background:linear-gradient(90deg,oklch(66% .21 33/.35),#0000);flex:1;height:1px}.needs-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.deck{background:linear-gradient(180deg, oklch(66% .21 33/.05), oklch(66% .21 33/.015)), var(--panel);box-shadow:inset 0 1px 0 var(--raise);border:1px solid oklch(66% .21 33/.22);border-radius:10px;padding:14px 16px}.deck-meta{align-items:center;gap:8px;margin-bottom:7px;display:flex}.deck-kind{font-family:var(--font-inst);letter-spacing:.16em;text-transform:uppercase;color:oklch(72% .16 35);border:1px solid oklch(66% .21 33/.3);border-radius:4px;padding:2px 7px;font-size:12px}.deck-meta .from{font-family:var(--font-code);color:var(--mut);font-size:12px}.deck-meta .age{font-family:var(--font-inst);color:var(--mut);letter-spacing:.08em;margin-left:auto;font-size:12px}.deck-q{color:var(--ink);margin-bottom:11px;font-size:14px;font-weight:500;line-height:1.45}.deck-actions{gap:8px;display:flex}.tree{padding:8px 14px 10px}.node-row{cursor:pointer;border-radius:8px;align-items:center;gap:14px;padding:9px 12px 9px 16px;transition:background .15s;display:flex;position:relative}.node-row:hover{background:oklch(92% .008 80/.035)}.node-row:before{content:"";background:var(--spine,var(--dead));border-radius:2px;width:2px;position:absolute;top:7px;bottom:7px;left:0}.node-row.s-active{--spine:var(--act)}.node-row.s-idle{--spine:var(--idle)}.node-row.s-done{--spine:var(--done)}.node-row.s-dead,.node-row.s-canceled{--spine:var(--dead)}.node-row.s-blocked{--spine:var(--blk)}.node-id{flex:1;min-width:0}.node-l1{align-items:baseline;gap:9px;display:flex}.node-name{letter-spacing:.005em;white-space:nowrap;font-size:14px;font-weight:600}.node-kind{color:var(--mut);white-space:nowrap;font-size:12px}.node-l2{align-items:center;gap:10px;margin-top:2px;font-size:12px;display:flex}.node-cwd{font-family:var(--font-code);color:var(--dim);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.node-life{font-family:var(--font-inst);letter-spacing:.14em;text-transform:uppercase;color:var(--dim);flex:none;font-size:12px}.node-note{color:var(--dim);flex:none;font-size:12px;font-style:italic}.node-right{flex:none;align-items:center;gap:10px;display:flex}.node-row.dimmed .node-name{color:var(--mut);font-weight:500}.node-row.dimmed:hover{background:oklch(92% .008 80/.02)}.kids{margin-left:30px;position:relative}.kids:before{content:"";background:var(--line2);width:1px;position:absolute;top:0;bottom:14px;left:-15px}.kids .node-row:after{content:"";background:var(--line2);width:13px;height:1px;position:absolute;top:50%;left:-15px}}@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:0}.top-4{top:calc(var(--spacing) * 4)}.top-\[5px\]{top:5px}.top-\[50\%\]{top:50%}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.right-\[5px\]{right:5px}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-full{bottom:100%}.left-0{left:0}.left-\[50\%\]{left:50%}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.m-0{margin:0}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-3\.5{margin-bottom:calc(var(--spacing) * 3.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3\.5{margin-left:calc(var(--spacing) * 3.5)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.field-sizing-content{field-sizing:content}.\!size-3\.5{width:calc(var(--spacing) * 3.5)!important;height:calc(var(--spacing) * 3.5)!important}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-4\.5{width:calc(var(--spacing) * 4.5);height:calc(var(--spacing) * 4.5)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-5\.5{width:calc(var(--spacing) * 5.5);height:calc(var(--spacing) * 5.5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-full{width:100%;height:100%}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-13{height:calc(var(--spacing) * 13)}.h-16{height:calc(var(--spacing) * 16)}.h-40{height:calc(var(--spacing) * 40)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[26rem\]{max-height:26rem}.max-h-\[28rem\]{max-height:28rem}.max-h-\[90dvh\]{max-height:90dvh}.min-h-0{min-height:0}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[40vh\]{min-height:40vh}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:66.6667%}.w-2\/5{width:40%}.w-3{width:calc(var(--spacing) * 3)}.w-16{width:calc(var(--spacing) * 16)}.w-56{width:calc(var(--spacing) * 56)}.w-57{width:calc(var(--spacing) * 57)}.w-\[21\.5rem\]{width:21.5rem}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[min\(100\%\,520px\)\]{max-width:min(100%,520px)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.basis-full{flex-basis:100%}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.\[animation\:pulse-hot_1\.6s_ease-out_infinite\]{animation:1.6s ease-out infinite pulse-hot}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:var(--spacing)}.list-none{list-style-type:none}.appearance-none{appearance:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border\/40>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\/40>:not(:last-child)){border-color:color-mix(in oklab, var(--border) 40%, transparent)}}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[7px\]{border-radius:7px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\[border-color\:rgba\(255\,94\,54\,\.35\)\]{border-color:#ff5e3659}.border-\[\#222b35\]{border-color:#222b35}.border-\[var\(--bone\)\]{border-color:var(--bone)}.border-\[var\(--border\,\#333\)\]{border-color:var(--border,#333)}.border-\[var\(--line\)\]{border-color:var(--line)}.border-\[var\(--line2\)\]{border-color:var(--line2)}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-300{border-color:var(--color-amber-300)}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/50{border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.border-current\/20{border-color:currentColor}@supports (color:color-mix(in lab, red, red)){.border-current\/20{border-color:color-mix(in oklab, currentcolor 20%, transparent)}}.border-cyan-200{border-color:var(--color-cyan-200)}.border-cyan-300{border-color:var(--color-cyan-300)}.border-cyan-500{border-color:var(--color-cyan-500)}.border-destructive\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/30{border-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-green-500{border-color:var(--color-green-500)}.border-green-600{border-color:var(--color-green-600)}.border-input{border-color:var(--input)}.border-lime-200{border-color:var(--color-lime-200)}.border-muted-foreground\/40{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\/40{border-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.border-primary,.border-primary\/20{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.border-red-300{border-color:var(--color-red-300)}.border-rose-200{border-color:var(--color-rose-200)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-900{border-color:var(--color-slate-900)}.border-success\/40{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.border-success\/40{border-color:color-mix(in oklab, var(--success) 40%, transparent)}}.border-transparent{border-color:#0000}.border-violet-200{border-color:var(--color-violet-200)}.border-warning\/30{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/30{border-color:color-mix(in oklab, var(--warning) 30%, transparent)}}.border-warning\/40{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/40{border-color:color-mix(in oklab, var(--warning) 40%, transparent)}}.border-white{border-color:var(--color-white)}.border-t-slate-600{border-top-color:var(--color-slate-600)}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\[\#0c0f13\]{background-color:#0c0f13}.bg-\[\#7fb3ff\]{background-color:#7fb3ff}.bg-\[\#11161c\]{background-color:#11161c}.bg-\[color-mix\(in_oklch\,var\(--ink\)_3\%\,transparent\)\]{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_oklch\,var\(--ink\)_3\%\,transparent\)\]{background-color:color-mix(in oklch,var(--ink) 3%,transparent)}}.bg-\[color-mix\(in_oklch\,var\(--ink\)_6\%\,transparent\)\]{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_oklch\,var\(--ink\)_6\%\,transparent\)\]{background-color:color-mix(in oklch,var(--ink) 6%,transparent)}}.bg-\[oklch\(0\.92_0\.008_80\/0\.02\)\]{background-color:oklch(92% .008 80/.02)}.bg-\[oklch\(0\.92_0\.013_80_\/_8\%\)\]{background-color:oklch(92% .013 80/.08)}.bg-\[oklch\(0_0_0\/0\.3\)\]{background-color:oklch(0% 0 0/.3)}.bg-\[oklch\(0_0_0\/0\.25\)\]{background-color:oklch(0% 0 0/.25)}.bg-\[rgba\(46\,160\,67\,0\.18\)\]{background-color:#2ea0432e}.bg-\[rgba\(192\,57\,43\,0\.18\)\]{background-color:#c0392b2e}.bg-\[var\(--bone\)\]{background-color:var(--bone)}.bg-\[var\(--line2\)\]{background-color:var(--line2)}.bg-\[var\(--surface-raised\,\#1a1a1a\)\]{background-color:var(--surface-raised,#1a1a1a)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/40{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/40{background-color:color-mix(in oklab, var(--card) 40%, transparent)}}.bg-card\/50{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/50{background-color:color-mix(in oklab, var(--card) 50%, transparent)}}.bg-cyan-50{background-color:var(--color-cyan-50)}.bg-cyan-100{background-color:var(--color-cyan-100)}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-cyan-600{background-color:var(--color-cyan-600)}.bg-destructive,.bg-destructive\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/15{background-color:color-mix(in oklab, var(--destructive) 15%, transparent)}}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-foreground{background-color:var(--foreground)}.bg-green-500{background-color:var(--color-green-500)}.bg-lime-50{background-color:var(--color-lime-50)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-muted\/60{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/60{background-color:color-mix(in oklab, var(--muted) 60%, transparent)}}.bg-muted\/70{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/70{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/5{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--primary) 5%, transparent)}}.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.bg-primary\/15{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/15{background-color:color-mix(in oklab, var(--primary) 15%, transparent)}}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-950{background-color:var(--color-slate-950)}.bg-success,.bg-success\/10{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--success) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-warning\/15{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/15{background-color:color-mix(in oklab, var(--warning) 15%, transparent)}}.bg-warning\/90{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/90{background-color:color-mix(in oklab, var(--warning) 90%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-white\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.bg-white\/70{background-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.bg-\[linear-gradient\(180deg\,var\(--panel2\)\,var\(--panel\)\)\]{background-image:linear-gradient(180deg,var(--panel2),var(--panel))}.fill-foreground{fill:var(--foreground)}.object-contain{object-fit:contain}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-px{padding:1px}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-9{padding-inline:calc(var(--spacing) * 9)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-3\.5{padding-top:calc(var(--spacing) * 3.5)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-22{padding-top:calc(var(--spacing) * 22)}.pt-24{padding-top:calc(var(--spacing) * 24)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.\[font-family\:var\(--font-display\)\]{font-family:var(--font-display)}.\[font-family\:var\(--font-inst\)\],.font-\[family-name\:var\(--font-inst\)\]{font-family:var(--font-inst)}.font-display{font-family:Fraunces Variable,Georgia,serif}.font-mono{font-family:Fragment Mono,ui-monospace,SF Mono,SFMono-Regular,Menlo,Monaco,monospace}.font-sans{font-family:Instrument Sans Variable,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-\[1\.7\]{--tw-leading:1.7;line-height:1.7}.leading-\[1\.55\]{--tw-leading:1.55;line-height:1.55}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[\.01em\]{--tw-tracking:.01em;letter-spacing:.01em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.\[color\:\#ff8260\]{color:#ff8260}.\[color\:var\(--bone-ink\)\]{color:var(--bone-ink)}.\[color\:var\(--dim\)\]{color:var(--dim)}.\[color\:var\(--ink\)\]{color:var(--ink)}.\[color\:var\(--ink2\)\]{color:var(--ink2)}.text-\[\#aef0bf\]{color:#aef0bf}.text-\[\#d6dde6\]{color:#d6dde6}.text-\[\#ff9b8a\]{color:#ff9b8a}.text-\[\#ffb4ab\]{color:#ffb4ab}.text-\[var\(--blk\)\]{color:var(--blk)}.text-\[var\(--bone-ink\)\]{color:var(--bone-ink)}.text-\[var\(--dim\)\]{color:var(--dim)}.text-\[var\(--done\)\]{color:var(--done)}.text-\[var\(--ink\)\]{color:var(--ink)}.text-\[var\(--ink2\)\]{color:var(--ink2)}.text-\[var\(--mut\)\]{color:var(--mut)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-cyan-600{color:var(--color-cyan-600)}.text-cyan-700{color:var(--color-cyan-700)}.text-cyan-800{color:var(--color-cyan-800)}.text-destructive{color:var(--destructive)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-foreground,.text-foreground\/70{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/70{color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/80{color:color-mix(in oklab, var(--foreground) 80%, transparent)}}.text-foreground\/85{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/85{color:color-mix(in oklab, var(--foreground) 85%, transparent)}}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-lime-800{color:var(--color-lime-800)}.text-muted-foreground,.text-muted-foreground\/40{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/40{color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.text-muted-foreground\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/50{color:color-mix(in oklab, var(--muted-foreground) 50%, transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/60{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/70{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-900{color:var(--color-red-900)}.text-rose-700{color:var(--color-rose-700)}.text-rose-800{color:var(--color-rose-800)}.text-slate-100{color:var(--color-slate-100)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-success{color:var(--success)}.text-transparent{color:#0000}.text-violet-700{color:var(--color-violet-700)}.text-violet-800{color:var(--color-violet-800)}.text-warning{color:var(--warning)}.text-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.accent-primary{accent-color:var(--primary)}.opacity-0{opacity:0}.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-85{opacity:.85}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow-\[inset_0_1px_0_var\(--raise\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,var(--raise));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_3px_oklch\(0_0_0\/0\.3\)\]{--tw-shadow:inset 0 1px 3px var(--tw-shadow-color,oklch(0% 0 0/.3));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_2px_6px_oklch\(0_0_0\/0\.3\)\]{--tw-shadow:inset 0 2px 6px var(--tw-shadow-color,oklch(0% 0 0/.3));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_1px_0_0_var\(--raise\)\]{--tw-shadow:inset 1px 0 0 var(--tw-shadow-color,var(--raise));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\[box-shadow\:0_0_10px_rgba\(255\,94\,54\,\.55\)\]{box-shadow:0 0 10px #ff5e368c}.\[box-shadow\:inset_0_1px_0_var\(--raise\)\]{box-shadow:inset 0 1px 0 var(--raise)}.ring-primary{--tw-ring-color:var(--primary)}.ring-slate-900\/10{--tw-ring-color:#0f172b1a}@supports (color:color-mix(in lab, red, red)){.ring-slate-900\/10{--tw-ring-color:color-mix(in oklab, var(--color-slate-900) 10%, transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-\[0\.12s\]{--tw-duration:.12s;transition-duration:.12s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.zoom-in-95{--tw-enter-scale:.95}.\[background\:linear-gradient\(180deg\,rgba\(20\,19\,16\,\.6\)\,rgba\(20\,19\,16\,\.2\)\)\]{background:linear-gradient(#14131099,#14131033)}.\[background\:rgba\(232\,228\,216\,\.06\)\]{background:#e8e4d80f}.\[background\:var\(--blk\)\]{background:var(--blk)}.\[background\:var\(--blk-dim\)\]{background:var(--blk-dim)}.\[background\:var\(--bone\)\]{background:var(--bone)}.\[border-right\:1px_solid_var\(--line\)\]{border-right:1px solid var(--line)}.\[border-top\:1px_solid_var\(--line\)\]{border-top:1px solid var(--line)}.\[border\:1px_solid_var\(--line\)\]{border:1px solid var(--line)}.running{animation-play-state:running}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-\[var\(--dim\)\]::placeholder{color:var(--dim)}@media (hover:hover){.hover\:border-\[color\:var\(--line2\)\]:hover,.hover\:border-\[var\(--line2\)\]:hover{border-color:var(--line2)}.hover\:border-cyan-400:hover{border-color:var(--color-cyan-400)}.hover\:border-primary\/40:hover{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/40:hover{border-color:color-mix(in oklab, var(--primary) 40%, transparent)}}.hover\:bg-\[color-mix\(in_oklch\,var\(--ink\)_3\%\,transparent\)\]:hover{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklch\,var\(--ink\)_3\%\,transparent\)\]:hover{background-color:color-mix(in oklch,var(--ink) 3%,transparent)}}.hover\:bg-accent:hover,.hover\:bg-accent\/40:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/40:hover{background-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.hover\:bg-cyan-50:hover{background-color:var(--color-cyan-50)}.hover\:bg-cyan-700:hover{background-color:var(--color-cyan-700)}.hover\:bg-rose-100:hover{background-color:var(--color-rose-100)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:\[color\:var\(--ink\)\]:hover,.hover\:text-\[var\(--ink\)\]:hover{color:var(--ink)}.hover\:text-\[var\(--ink2\)\]:hover{color:var(--ink2)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:\[background\:rgba\(232\,228\,216\,\.04\)\]:hover{background:#e8e4d80a}.hover\:\[background\:var\(--ink\)\]:hover{background:var(--ink)}}.focus\:border-amber-500:focus{border-color:var(--color-amber-500)}.focus\:border-cyan-500:focus{border-color:var(--color-cyan-500)}.focus\:border-slate-400:focus{border-color:var(--color-slate-400)}.focus\:border-slate-500:focus{border-color:var(--color-slate-500)}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-\[var\(--line2\)\]:focus-visible{border-color:var(--line2)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 40%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-\[var\(--mut\)\][data-placeholder]{color:var(--mut)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing) * 8)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}@media (width>=40rem){.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-left{text-align:left}}@media (width>=48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-\[18rem_minmax\(0\,1fr\)_24rem\]{grid-template-columns:18rem minmax(0,1fr) 24rem}}.\[\&_\:not\(pre\)\>code\]\:rounded :not(pre)>code{border-radius:.25rem}.\[\&_\:not\(pre\)\>code\]\:bg-\[oklch\(0_0_0\/0\.28\)\] :not(pre)>code{background-color:oklch(0% 0 0/.28)}.\[\&_\:not\(pre\)\>code\]\:bg-muted :not(pre)>code{background-color:var(--muted)}.\[\&_\:not\(pre\)\>code\]\:px-1\.5 :not(pre)>code{padding-inline:calc(var(--spacing) * 1.5)}.\[\&_\:not\(pre\)\>code\]\:py-0\.5 :not(pre)>code{padding-block:calc(var(--spacing) * .5)}.\[\&_a\]\:text-\[var\(--bone\)\] a{color:var(--bone)}.\[\&_a\]\:text-primary a{color:var(--primary)}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:decoration-dotted a{text-decoration-style:dotted}.\[\&_b\]\:font-semibold b{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_b\]\:text-\[var\(--ink\)\] b{color:var(--ink)}.\[\&_code\]\:font-mono code{font-family:Fragment Mono,ui-monospace,SF Mono,SFMono-Regular,Menlo,Monaco,monospace}.\[\&_code\]\:text-xs code{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_h1\]\:mb-4 h1{margin-bottom:calc(var(--spacing) * 4)}.\[\&_h1\]\:font-\[family-name\:var\(--font-serif\)\] h1{font-family:var(--font-serif)}.\[\&_h1\]\:text-xl h1{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.\[\&_h1\]\:leading-\[1\.3\] h1{--tw-leading:1.3;line-height:1.3}.\[\&_h1\]\:font-medium h1{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_h1\]\:text-\[var\(--ink\)\] h1{color:var(--ink)}.\[\&_h2\]\:mt-4 h2{margin-top:calc(var(--spacing) * 4)}.\[\&_h2\]\:mb-3 h2{margin-bottom:calc(var(--spacing) * 3)}.\[\&_h2\]\:font-\[family-name\:var\(--font-serif\)\] h2{font-family:var(--font-serif)}.\[\&_h2\]\:text-base h2{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.\[\&_h2\]\:font-medium h2{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_h2\]\:text-\[var\(--ink\)\] h2{color:var(--ink)}.\[\&_li\]\:relative li{position:relative}.\[\&_li\]\:pb-3\.5 li{padding-bottom:calc(var(--spacing) * 3.5)}.\[\&_li\]\:pl-5 li{padding-left:calc(var(--spacing) * 5)}.\[\&_li\]\:text-xs li{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_li\]\:leading-\[1\.65\] li{--tw-leading:1.65;line-height:1.65}.\[\&_li\]\:text-\[var\(--ink2\)\] li{color:var(--ink2)}.\[\&_li\]\:before\:absolute li:before{content:var(--tw-content);position:absolute}.\[\&_li\]\:before\:top-\[8px\] li:before{content:var(--tw-content);top:8px}.\[\&_li\]\:before\:left-\[2px\] li:before{content:var(--tw-content);left:2px}.\[\&_li\]\:before\:size-1\.5 li:before{content:var(--tw-content);width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.\[\&_li\]\:before\:rotate-45 li:before{content:var(--tw-content);rotate:45deg}.\[\&_li\]\:before\:rounded-\[2px\] li:before{content:var(--tw-content);border-radius:2px}.\[\&_li\]\:before\:border li:before{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.\[\&_li\]\:before\:border-\[var\(--mut\)\] li:before{content:var(--tw-content);border-color:var(--mut)}.\[\&_li\]\:before\:content-\[\'\'\] li:before{--tw-content:"";content:var(--tw-content)}.\[\&_ol\]\:list-none ol{list-style-type:none}.\[\&_p\]\:my-\[0\.4em\] p{margin-block:.4em}.\[\&_p\]\:mb-3 p{margin-bottom:calc(var(--spacing) * 3)}.\[\&_p\]\:text-xs p{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_p\]\:leading-\[1\.65\] p{--tw-leading:1.65;line-height:1.65}.\[\&_p\]\:text-\[var\(--ink2\)\] p{color:var(--ink2)}.\[\&_pre\]\:overflow-auto pre{overflow:auto}.\[\&_pre\]\:rounded-md pre{border-radius:calc(var(--radius) - 2px)}.\[\&_pre\]\:bg-\[oklch\(0_0_0\/0\.28\)\] pre{background-color:oklch(0% 0 0/.28)}.\[\&_pre\]\:bg-muted pre{background-color:var(--muted)}.\[\&_pre\]\:p-\[10px_12px\] pre{padding:10px 12px}.\[\&_pre\]\:text-xs pre{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_strong\]\:font-semibold strong{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_strong\]\:text-\[var\(--ink\)\] strong{color:var(--ink)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-\[var\(--mut\)\] svg:not([class*=text-]){color:var(--mut)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_ul\]\:list-none ul{list-style-type:none}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}@media (hover:hover){a.\[a\&\]\:hover\:underline:hover{text-decoration-line:underline}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAxkABMAAAAAFZAAAAwBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVIEmJyoAgQwvZBEICoosiE0LNgAwjiQBNgIkA2IEIAWGeAeBWwwHGzATIxG2k5OySvEXCbYhWv3gJrFpmoZGMZIax+NtVJ3VzdFgGn7fE9wAFrgQPhkhySw8fWvlr+qe4WMCdQFAhQrQRScSHDiUmxhzPjLv/P78e9afzDi32H3iHarWIEmFcQqmTmchdp/gP4Ff0P/pzP5oRmBgGWEpQNClugqo6PKuKNc3BxVg1QeQbG9WJpCJZQkp3XpLlszhJjDgHQblcAZnMRpJyPe/AGdh/3O/T5uzzPL9mc1sFlA4UqJCV+WnmJ8lyhK+X1ykEowHlJ26CncLgAoAlKiqsLbw7+L+G1JOWa5ZM17mPNKpEQOSOjN7vLaxCBCzeb2KIhiEiEyCACHFisn0LO2HNixAEkDRtcMoFDztZPkCiGBL8vWtfkd/QTPoc+ZLgCUkyAGSpNdrRKBwHlAPUNioPz3+Q+FZiOwP4qqmgp3kH3gHQPcNBihnEAQfBbIFQDW9d5pPEwTcO9I8AQh3ZS3yslBoVNrFOglyrXSk+vo91dP9eFeOYBwVR94uJadaae40JCBROZ0BKvHHAcH/DbfgfeC5vH5HXwpAutT3EWVzHNquU0wAFDBANoOgeMv9f50rncGl3IRrPUcw9hN5TT6SPn5QQzDrR/KKfCC9C9XrWbzTkM0yhyyCIjGppMt07og0YtKlkCFVq7NDOkXI5uOr2gNxoEWbKYdhq0LAb4BEYDZcmuHgLVwctXpw8rUPvrNg9SkQkyyAKVyg+wlyIWOA/AXgCWAbAAZNepMMjbq3hHAqDOWbEWuNb4uNQ6HullXc6u1NTanW2rxqQ63ilqiwWbDQLEQb0DpykZyfI4TA7n+X2PYeOvDOOwHy3XfJ/W/D1nfQgfdC6G0fg1qFIICpmwL/g0828ErPewSxjd787AVkohIMhQaSIO98e/e9m7E+xKJtpA7oOmFOaNrmiZOia3cneVeBrZeeIVhCEeQnc/P3RnQF0VW3rT13nL+0wde1KETzH8tfXrO7au/pKjWs85pCrtBL7xHb7n6xEZMp5TiQ9j9fC3+SEENhat5w1VNH6zMXo8GwYC6E/EsGNDKG8ENPwdbgk16E6jehA3cQ227vVSzgBvxB1/3v3z9xHecEmeAt/Dj/Udbc+yJ534sCETfLQUF85PCrb7xx/NWT7qrVsr15ISOc9S5aF0L1a67x1iMmJiTwZZrDxo0lExzEH+RSv8vj8j8WcvDNCvvA+acOdHcO9A9PDQw5hk5o7Gb9kPX8m1YyTTZbrCZ3ltaXM4dyyovKdJdK6R4cZmTU0nJYCDmxdw1lPrgctR7eyARmijpjoYFKCGxuyuAKlJMxX4FS0ZafEk12c5JTwf3pjDUxmbFTvkI85ys7pZTkaOoXRyQ9ZvavpYxHEsum/WsoD5ObVO9lUSt5K1hDK5c967govrbW8/HdOpdVTod8za74va+ce9Yd97x+GNAJ/Pjj8Y6lw9+e937x/p3/jFBvDTo8AeRP7nr2rDPffxtSYro4rosIxB0MbXsjLqdHzKMX/p/pUk/J3uBQfAfH2bNSfUQz3uWkbF/G5dph88jopEKvskq+4lByc/bSXq/Da79muzysthq6/R2dtm62eTpAuVzIcHkQ3Rerb91WhwfvC9Q3VutLx9vdeawOttODPwfX42HbuEFjGR30afMIp9mwSJRh3QkNtSCAR55SCVdiLmBP7VKwQrjCgcCqwDAxX165Jw2YxnVE5H5BfsAIDG6U36F9+xx0Q58SK1rMsVGrbRfe5dQvwZnWieqQ9fEWVdU0THVzGEPqLXU+6Gk+9jozBQEICiw6D8AqIEe3cbQjbgkvq3Id+sSYtZDpZSSMgZnRoC4rt33aLzBvCrEc58bhWVhvEJOKkAp8YH00KklDb2ihf+iHynhNZivp8MDzfAzRIw+kVQ1vBIOVCv2Z27kTDna7B6khd/N0OI2nEVkWxXLO8+fw3Ol8TnOAMHI+BAimYAQNZADL2GHwy1Yw0nuFLMIxdswFv2IMOGlS+sUNKRyzKY13unxDsa8slfLVAfUTgmGhSEAsIYnTaQEo3hzy6Y/RWCWdZqWXg+zNid3n+/ixMXdu1XSX0khlQiGRxVUwqARBHXY6G/fTJIgePf2SKJqwQjXq4VjEQDe7tVbYzrROzmfxVWDfu8OS2fqnrs39IMLX7KuhsCUQUKvP3VNSjb7QEPO8I33KBNfFTuop5Bi6uuJyOt0eSP2COnJ+t2Mhf7wt4VGqog/vEROmJDcbdAoshKTBZNJjWh12a9JnumVz0+CNyGPm1YZEDzXBk1gplBrDuS2ugpL0/nNNrhclstyiDkd/ttC7Q1slBLkxjEtiY5zkBIfn6jY+yfA8+YnFvGB1uih0Iuw0DjuF3eBMNbqgDcqkJaUy3qBpXn6t2ynOLNGgtFEcUAMh6nS+GHckjNWkxbfXeucb48zpwWCoECo6EGLI5UPG4PUzYJBjVs+rgjOYy/WQPYYHhXzYbXQooPd4bJNJK0dXcO/exFM9o2iKC7gwNV4wLS1Z542UubImrsZ+D6lPNdbhJ4sdz0dyqUCBmt6/F/y70sR59p5QSDpURNZps/lsVNvLYsFgE0Ua90OjMV4Yo9B6rZP5GHIbYNorSxKqw4XgiTVHwv6uazaTcYG0seDb3RPU6/G5NkQjglH0oO2P7ePh8ELBLrbrmYAzniEt5mD5xo0P32pL0VKuUG8MJmsUDwY3byYtg0qHmNPc3Hx9Z8qzNwPqzEaMry//IfGF61DQpIx3bV+NhXye+q80UQyHu8SIQTHHFImsbG/ftkWsEjux8zm4KrqKcmBXbPPFy42uIu7Z3R/PVawz03V0797P5mJ9Kredz7+7z5M8/UhdK72441Luo8CJU/KITSnlwlG/aOHQp7B9+7pEM1YIs66y7YdI+OgNKlfM1e5237hb3ujgyz7aspKACRZbCwaMi7GBDEPStyYIICFGXAy4SEr13mgsGnEb9a5V6JAJerlsPG6FSS2rnlytP7ouz9pSrYl4LtcLhfL59W3QfYTApN9pN6vVNmeLHDhtTkKvxwrN6E02u+j12mft1E3N3PhjpBBvpeKFy9B9aCKXK+XGYD4tvIHekIfG5W3l6gDpXQEJHhNniO4+a0DfS70O+E2FQjAIt0H3KQoyijarxaC28p/ev3iIk5blGaFhKLfb3SG2B1d3HNbMVVEUlK7F0oU6Cjcuwiz6YnUCIEQQYhgkZPPdSKUKHq8gl7OyPNPPZDC5vQYYVmtBvw3aV02zM7C8OAGnU2BbBSfVDkYYHxQv7a/UKMhJkCmuzfd7KVYDAfXkQYQ4k48fbNQSy+9K9DokS6by6VKA6+vOxKKSrZQGQNieCLEjAuDyF6RswakesYWCclthzQGRFuylSVGWO/0FkbMYjeT8lertoQoaNZuAQQxm7hKGfhJTzWS2QZNj++Vyo1taN2IGKRoQgWjT6QwQACCAyW+ZO3+w6IYCxlUAgEyl/T+vAHD49c4fyWr1pTsWXBRkK7/KqvV7J+w/dQgg2Oi82rdglu7Bg4NggpdhqzAvKmSkYPPuDBEA+Pu04EssfPMeIKBQD8MA2wyjzhtl+QcYsQHwOXkHFzpzL1dS5QM3bMfJLZMRcIdC/7nLqK/pqfR6kEsg5iYXQs5zxec4N2Rb5paQyQqnIQq4S0wv90hXy318SnlApvhtxMTAqqKKPBbHbi1eBcuiiBNH1ifRrMo4wSCua5Wmw0kpaXyWpQHtnz0ZBSEbx9MZkqCovTPxSqo02rQFG1MxW8In8aNuac5UQ8+cMmaNA43B7paXMVvAWGpBUTXFlMIm3lQ7YpP1KTWcWAczU8mvzEisQ6v27dayV+Fi//C4BLw0o3/IKtd0PO20jd7StbMbaq2Kaec6Fe3XY53a90z5STrSBJzdrqsEne2aWIbWCbXTZ4paHhqrP5Wt52RotiZ6+k8pyletZ6ycUplsUZ2u1hVXlr0DlM3yJk8ChF+iEFT7QzDUqjfNYcp8GsWKI6544ksgoUQYiSVFUiVN0tFqznyyklhJtNauZsb3SaQoymyOto0HKSIcEm8r2BI8EawMlNbtMovXS3ZZZIYqtvyBptGxde3sqRrvWAFte8ctaKZE+SjSdpPfAQ==)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/martian-mono-cyrillic-wght-normal-B84CD5C_.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/martian-mono-latin-ext-wght-normal-DlL6xMw5.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/martian-mono-latin-wght-normal-5W32yIyr.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fragment Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAWUAA4AAAAABvAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABRAAAABYAAAAWABEABEdQT1MAAAFcAAAAHgAAAB5EdEx1R1NVQgAAAXwAAAAnAAAAKLj8uOpPUy8yAAABpAAAAFUAAABgYo+sRGNtYXAAAAH8AAAAQgAAAFxB0OJbZ2FzcAAAAkAAAAAIAAAACAAAABBnbHlmAAACSAAAAT0AAAFaNhXKIGhlYWQAAAOIAAAANgAAADYqgLJdaGhlYQAAA8AAAAAfAAAAJBAY8MdobXR4AAAD4AAAABkAAAAiEYUB02xvY2EAAAP8AAAAFAAAABQBUAHKbWF4cAAABBAAAAAcAAAAIAAjAQBuYW1lAAAELAAAARoAAAJuNApRAXBvc3QAAAVIAAAASwAAAF2B645zAAEAAAAMAAAAAAAAAAIAAQABAAMAAQAAAAEAAAAKABwAHAABREZMVAAIAAQAAAAA//8AAAAAAAB42mNgZGBg4GJQA0ImFzefEAahnMSSPAY+BhBgARH//4NIAFpJBVUAeNotxbENQEAYhuH3/87hwhA3g1KvEANQGcAoKolJJKLR2AwJT/OQaLIFD5o1AN23jVRWgwofnF4JkAHi1zctXMS4u+NOwW0WIrYCqNQJRPIH7S0K2QAAAHjaY2BgYAJiZiAWAZKMYJqFwQNI8zFwAOXYGBQYHBkWMBxkZFLY8v8/UByF///J/wP/U/87/me8HwTUjQIAZb8SQgAAAAEAAf//AA942mJgAvQ4zXARx1H8vd8x2zx8riX/lW3btt2SzS3M7VN7t4Qte7q2ptx++sVnvy9UABBHogURyAAUCgcFUiWOxjTcMzbhnHGKaA2NZJ5O+tLJHDopA0s6GaCSqZwYJ2RE+Bz3GdfwMKozLh81XV3R+VT0wwyT6WdDtEk0gAB0T2Yywu5/ff2/Lqe1XfrB2/RG8sgJuEAQgJOC51iNSimVqXieCXd1cZYxLoovlro4uzLhvMDYEpVSw7G8oPLGVceU6KR8cYF4vK12yLbUcE7CjS2WxRlpRViAsR3J/RNiaRoeeAcJybFcWXN7pUadlJHkqYpJT4yMLA/rrXbwswNAlJACvCePIKKJwMhQ0jC4TQq2tmgKO6QUT4gOrCg6hkIQGKmUItiJlhcXy6PFhYkJhUSXlJSWmAhmxutO9wAAAAABAAAAAQLRsUtkZV8PPPUADwPoAAAAAN9+te8AAAAA3362EvlE/vcTHAOxAAAABgACAAAAAAAAeNpjYGRgYN72n42BgSnrp8t7P2EZoAgq4AAAe9wE3gB42mPKYogAYjkkzADFMgwMjKwM8wFSaARoAAAAAAAAFQAuADoARgBGAEYAiACWAK142mNgZGBg4GTIZ2Bn6GfgAvMQgIOBEQAZTQEkeNqNkQVOREEQRB/uxIPEfgR3d3d3iKHr7rvhWpyCQ3AYKpN1T6emvbvSA7TjpImG5g7gt2E3bTcw2DCcthvpbehP201s8pe2mxnnJ2238Mhb2m5llOW03SsL3MQlYWKsMyOJYSOKR5G47GnBg186RBSX8jcccylE+ZQfwEFQlVfKB4Up7hVxkVDPJ1Ge5UXNDOWxmGOaWeYkG1hms5NPEtIh3HjMLItRkqZyVVgUVphiCbvwxVjJbiu73Sranr/thSPOpOtkXuRV3nkghPk2N3PhNrl5ZoV5WY+41WGV9E/lcb4lKu1Vxma698w93ObiMXON4j9y4TEVCb6YVleIgKIpTfCkX+X4JIgrz5rBWcIikGYx9g9ueGIvAAB42mNgYgCD/3MYjIAUIwM64ARiFYaTjEwMzIzMjCyMrIxsbI5JRallqeyleZkGBo4GINrIwMmEMzG5tCQ1OT83CSxjbGAGANg9D2UA)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fragment Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fragment-mono-latin-ext-400-normal-BbKYyvR9.woff2)format("woff2"),url(/assets/fragment-mono-latin-ext-400-normal-CT4YFKeK.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fragment Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fragment-mono-latin-400-normal-yxdJ5AmL.woff2)format("woff2"),url(/assets/fragment-mono-latin-400-normal-BYwT3kSJ.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--radius:.5rem;--background:oklch(11.3% .008 75);--foreground:oklch(91.2% .01 80);--card:oklch(13.8% .009 75);--card-foreground:oklch(91.2% .01 80);--popover:oklch(13.8% .009 75);--popover-foreground:oklch(91.2% .01 80);--primary:oklch(92.7% .013 80);--primary-foreground:oklch(9.8% .008 75);--secondary:oklch(16.5% .01 75);--secondary-foreground:oklch(91.2% .01 80);--muted:oklch(15.2% .01 75);--muted-foreground:oklch(53.8% .016 75);--accent:oklch(16.5% .01 75);--accent-foreground:oklch(91.2% .01 80);--destructive:oklch(65% .2 35);--destructive-foreground:oklch(97% .005 80);--border:oklch(92% .008 80/.08);--input:oklch(92% .008 80/.12);--ring:oklch(92.7% .013 80);--status-active:oklch(84% .14 148);--status-idle:oklch(80% .13 76);--status-done:oklch(73% .1 225);--status-dead:oklch(49% .014 75);--status-canceled:oklch(49% .014 75);--status-blocked:oklch(66% .21 33);--success:oklch(84% .14 148);--warning:oklch(80% .13 76);--thinking:oklch(70% .1 300);--bone:var(--primary);--bone-ink:var(--primary-foreground);--ink:var(--foreground);--ink2:oklch(73.8% .012 80);--mut:var(--muted-foreground);--dim:oklch(40.4% .012 75);--line:var(--border);--line2:oklch(92% .008 80/.16);--raise:oklch(100% 0 0/.035);--scrim:oklch(10% .008 75/.55);--panel:var(--card);--panel2:oklch(13.1% .009 75);--act:var(--status-active);--act-dim:oklch(84% .14 148/.14);--idle:var(--status-idle);--idle-dim:oklch(80% .13 76/.13);--done:var(--status-done);--done-dim:oklch(73% .1 225/.13);--dead:var(--status-dead);--dead-dim:oklch(49% .014 75/.14);--blk:var(--status-blocked);--blk-dim:oklch(66% .21 33/.12);--think:var(--thinking)}.light{--background:oklch(95.2% .018 85);--foreground:oklch(19% .016 80);--card:oklch(97.8% .014 85);--card-foreground:oklch(19% .016 80);--popover:oklch(99.8% .006 85);--popover-foreground:oklch(19% .016 80);--primary:oklch(19% .016 80);--primary-foreground:oklch(96% .014 85);--secondary:oklch(96% .014 85);--secondary-foreground:oklch(25% .012 80);--muted:oklch(96% .014 85);--muted-foreground:oklch(56% .016 80);--accent:oklch(96% .014 85);--accent-foreground:oklch(25% .012 80);--destructive:oklch(55% .22 33);--destructive-foreground:oklch(97.8% .014 85);--border:oklch(19% .016 80/.1);--input:oklch(19% .016 80/.14);--ring:oklch(19% .016 80);--status-active:oklch(47% .12 148);--status-idle:oklch(52% .13 76);--status-done:oklch(47% .1 225);--status-dead:oklch(67% .016 75);--status-canceled:oklch(67% .016 75);--status-blocked:oklch(50% .2 33);--success:oklch(47% .12 148);--warning:oklch(52% .13 76);--thinking:oklch(52% .1 300);--ink2:oklch(42% .01 80);--dim:oklch(69% .014 85);--line2:oklch(19% .016 80/.2);--raise:oklch(100% 0 0/.8);--scrim:oklch(25% .01 75/.32);--panel2:oklch(99% .008 85);--act-dim:oklch(47% .12 148/.1);--idle-dim:oklch(52% .13 76/.12);--done-dim:oklch(47% .1 225/.1);--dead-dim:oklch(67% .016 75/.14);--blk-dim:oklch(50% .2 33/.09)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<meta name="color-scheme" content="dark light" />
|
|
7
7
|
<title>crouter</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-CbO8L0mN.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DwO46Cs5.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crouton-kit/crouter",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.39",
|
|
4
4
|
"description": "crtr — agent runtime with memory, plugins, and marketplaces",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
],
|
|
31
31
|
"scripts": {
|
|
32
32
|
"prebuild": "rm -rf node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core",
|
|
33
|
-
"build": "rm -rf dist && tsc && cp -R src/builtin-
|
|
33
|
+
"build": "rm -rf dist && tsc && cp -R src/builtin-views dist/builtin-views && cp -R src/builtin-memory dist/builtin-memory && cp -R src/builtin-pi-packages dist/builtin-pi-packages && npm run build:attach && vite build --config src/clients/web/web-client/vite.config.ts",
|
|
34
34
|
"lint:web-px": "node scripts/lint-web-px.mjs",
|
|
35
35
|
"build:attach": "esbuild src/clients/attach/attach-cmd.ts --bundle --minify --format=esm --platform=node --target=node22 --alias:@earendil-works/pi-tui=$PWD/node_modules/@earendil-works/pi-tui --outfile=dist/clients/attach/attach-cmd.js --log-level=warning --banner:js=\"import{createRequire as __cr}from'node:module';const require=__cr(import.meta.url);\"",
|
|
36
36
|
"postinstall": "node scripts/postinstall.mjs",
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
kind: knowledge
|
|
3
|
-
when-and-why-to-read: When writing or revising a base persona prompt (a
|
|
4
|
-
<kind>/PERSONA.md, the system prompt for a single-window worker node), this
|
|
5
|
-
knowledge should be read.
|
|
6
|
-
short-form: How to write a base persona prompt (the mode=base PERSONA.md) — the
|
|
7
|
-
system prompt for a single-window worker node. Covers what a base persona is
|
|
8
|
-
for, what to put in it, the identity/deliverable/boundary/report shape, and
|
|
9
|
-
the voice to use. Use when writing or revising a <kind>/PERSONA.md.
|
|
10
|
-
system-prompt-visibility: name
|
|
11
|
-
file-read-visibility: none
|
|
12
|
-
needs-refinement: true
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Writing a base persona prompt
|
|
16
|
-
|
|
17
|
-
`PERSONA.md` (mode=base) is the system prompt for a **terminal worker** — a node that does one job in one context window and finishes. Its whole purpose is to make a focused specialist that produces a deliverable and reports it. This knowledge doc is the philosophy of what belongs in a base persona; for file mechanics and frontmatter, see `[[crouter-development/personas]]`.
|
|
18
|
-
|
|
19
|
-
Audience: LLM agents writing a `<kind>/PERSONA.md`.
|
|
20
|
-
|
|
21
|
-
## What a base persona is for
|
|
22
|
-
|
|
23
|
-
A base worker **does the work itself and ends.** It is not a manager. The persona points a fresh, capable model at one kind of task and makes it produce the right artifact without supervision. Everything in the body serves that: who it is, what good output looks like, what's out of bounds, and how it hands the result back.
|
|
24
|
-
|
|
25
|
-
A base persona is a **system prompt**, not a task. Write the durable role — the identity and standards that hold for *every* task of this kind — and let the spawn-time prompt carry the specific task. Never bake one task's details into the persona.
|
|
26
|
-
|
|
27
|
-
## The four things to put in it
|
|
28
|
-
|
|
29
|
-
In order. Most base personas are 1–3 short paragraphs total.
|
|
30
|
-
|
|
31
|
-
1. **Identity — one line, second person.** Open `"You are a <role> agent."` This is a system-prompt identity declaration; `"You are X"` is correct here (it would be wrong in a task prompt). Name the role sharply — "fast codebase exploration agent", "code review agent" — so the model knows which hat it wears.
|
|
32
|
-
|
|
33
|
-
2. **The deliverable and its shape.** State *what good output is*, not a step-by-step procedure. Name the artifact and its structure: design names its sections, review names its severity tiers, explore demands `file:line` citations. You set the target the model steers toward — describe the target, not a checklist of moves to reach it. Fix the *what*; delegate the *how* to the model's judgment.
|
|
34
|
-
|
|
35
|
-
3. **The boundaries that keep it in its lane.** One or two constraints that carve this kind out from its neighbors: explore is "read-only — do not modify"; design and plan "do not implement"; developer "throw errors early, no silent fallbacks". These earn their negative framing because the model has a real prior toward crossing the line — a design agent *will* start writing code if you don't fence it off. Keep them to genuine lane boundaries; don't pile on don'ts the model wouldn't trip over anyway.
|
|
36
|
-
|
|
37
|
-
4. **The report.** Close by stating the deliverable is reported via `crtr push final` — the one runtime rule worth reinforcing in the body, because stopping without it is the most common worker failure. Everything else in the protocol (delegating, the feed, escalating) is already prepended by `runtime-base.md`; do not re-teach it.
|
|
38
|
-
|
|
39
|
-
## Keep it shallow
|
|
40
|
-
|
|
41
|
-
A base worker may spawn a helper or two for a targeted sub-task, but most of the work must be its own. If a kind's job routinely needs broad fan-out, it isn't a base worker — it's an orchestrator (`[[crouter-development/personas/orchestrator-prompt]]`). The base persona should make a do-er, not a delegator; say so explicitly when the kind is tempting to over-delegate (developer: "keep the delegation shallow").
|
|
42
|
-
|
|
43
|
-
## Voice
|
|
44
|
-
|
|
45
|
-
- **Second person + imperative.** "You are X." "Answer the question." "Do not modify files." Direct instruction for a direct worker.
|
|
46
|
-
- **Positive framing for standards.** Describe the output you want, not a list of failures to avoid — "quote concrete `file:line` references" beats "don't be vague".
|
|
47
|
-
- **Reserve hard rules.** CAPS / MUST only for the genuine non-negotiable — usually the finish rule and the lane boundary. If everything is critical, nothing is.
|
|
48
|
-
- **Density.** This loads as the system prompt on *every* spawn of the kind. No preamble, no fluff — every line is the identity, the deliverable, a boundary, or the report.
|
|
49
|
-
|
|
50
|
-
## Failure modes
|
|
51
|
-
|
|
52
|
-
- **Procedure instead of target.** A numbered how-to ages badly and fights the model's judgment. State the deliverable's shape; let it choose the path.
|
|
53
|
-
- **Restating runtime-base.** Re-teaching delegation/feed/escalation duplicates the prepended protocol and drifts out of sync. Reference only `push final`, as the deliverable.
|
|
54
|
-
- **Task leakage.** Specifics of one task baked into the persona make every future spawn wear yesterday's job. Keep the body to the durable role.
|
|
55
|
-
- **No report close.** A base persona that never names `crtr push final` produces workers that go quiet and get re-prompted. Always close on the deliverable.
|
|
56
|
-
- **A manager in worker's clothing.** If the body spends more ink on delegation than on doing, you've written an orchestrator — split it.
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
kind: knowledge
|
|
3
|
-
when-and-why-to-read: When writing or revising an orchestrator persona prompt (a
|
|
4
|
-
<kind>/orchestrator.md, the system prompt for a resident coordinator node),
|
|
5
|
-
this knowledge should be read.
|
|
6
|
-
short-form: How to write an orchestrator persona prompt (orchestrator.md) — the
|
|
7
|
-
system prompt for a resident coordinator node. Covers the kernel-vs-kind
|
|
8
|
-
split, what belongs in the per-kind body, naming the child pipeline, the
|
|
9
|
-
roadmapKnowledge knowledge-doc pointer, and the @include rule. Use when writing or revising a
|
|
10
|
-
<kind>/orchestrator.md.
|
|
11
|
-
system-prompt-visibility: name
|
|
12
|
-
file-read-visibility: none
|
|
13
|
-
needs-refinement: true
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
# Writing an orchestrator persona prompt
|
|
17
|
-
|
|
18
|
-
`orchestrator.md` is the system prompt for a **resident coordinator** — a long-lived node that owns a goal too large for one window and delivers it by decomposing, delegating, integrating, and surviving context refreshes. This knowledge doc is the philosophy of what belongs in an orchestrator persona; for file mechanics and frontmatter, see `[[crouter-development/personas]]`.
|
|
19
|
-
|
|
20
|
-
Audience: LLM agents writing a `<kind>/orchestrator.md`.
|
|
21
|
-
|
|
22
|
-
## The one rule that shapes everything: kernel vs kind
|
|
23
|
-
|
|
24
|
-
Every orchestrator persona ends with `@include orchestration-kernel.md`. The kernel already teaches the **universal orchestrator protocol** — the wake loop, the roadmap structure and discipline, long-term memory, working in phases, delegating outcomes, steering what comes back, engaging the human, and the pre-finish checklist. It is long and complete.
|
|
25
|
-
|
|
26
|
-
So your `orchestrator.md` body carries **only the delta** — what is specific to this kind. If a line you're about to write is true of orchestrators in general, the kernel already says it; cut it. Subtract before you add: the body is usually 1–3 short paragraphs *on top of* the kernel, not a re-derivation of how to orchestrate.
|
|
27
|
-
|
|
28
|
-
## What the per-kind body puts in
|
|
29
|
-
|
|
30
|
-
1. **Identity — the kind's ownership.** Open `"You are a **<kind> orchestrator** — …"` and say what this kind *owns*: a feature-sized goal (developer), a specification effort (spec), a review surface (review), a research question (explore). Bold the role. One sentence on what "owning it" means here.
|
|
31
|
-
|
|
32
|
-
2. **The child kinds it drives, and the pipeline.** Name the specialists this orchestrator delegates to and the order it runs them: developer drives `explore → spec → plan → developer → review` as a "spec → plan → implement → review → fix → validate" pipeline; spec runs `SHAPE → DESIGN → REQUIREMENTS` stages; review fans `review` children across units. The flow is the kind's signature — make it explicit so delegation isn't ad hoc.
|
|
33
|
-
|
|
34
|
-
3. **A pointer to the methodology knowledge doc — don't inline it.** Set `roadmapKnowledge: <knowledge-doc-name>` in frontmatter and tell the body to read `crtr memory read <kind>` before shaping the roadmap. The methodology (roadmap shapes, styles, decomposition rules) lives in that knowledge doc, not the persona. The persona points; the doc teaches.
|
|
35
|
-
|
|
36
|
-
4. **The kind's quality bar.** State the domain-specific exit criteria the kernel can't: developer's "implementation is done when provably correct against the spec, review done when a non-implementer cleared all Major/Critical findings, validation done end-to-end in the real runtime." This is where you set the ceiling for *this* kind of work.
|
|
37
|
-
|
|
38
|
-
5. **What integration means here.** Every orchestrator's deliverable is the *synthesis*, never the child transcripts — but say what synthesis looks like for this kind: explore reconciles findings into one architecture answer; review deduplicates and severity-normalises into one verdict; design verifies every contract is honored on both sides. "Integrate, don't concatenate," made concrete.
|
|
39
|
-
|
|
40
|
-
## The recurring sizing rule
|
|
41
|
-
|
|
42
|
-
When a unit is itself too big for one window, the orchestrator creates that child **directly as `--mode orchestrator`**, not a base worker it counts on to self-promote. This appears in nearly every orchestrator persona because it's domain-flavored — *which* child kind gets promoted differs by orchestrator. State it for yours; a node born an orchestrator is strictly more capable than one hoping to become one.
|
|
43
|
-
|
|
44
|
-
## Voice
|
|
45
|
-
|
|
46
|
-
- **Second person identity, then operations.** "You are a **developer orchestrator**…" then "Run the build as a delegation pipeline…".
|
|
47
|
-
- **Positive, concrete framing.** Name the pipeline and the exit criteria; don't enumerate things not to do. The one earned negative is the load-bearing boundary — "never by writing the code yourself" — which counters a real model prior to just do the work.
|
|
48
|
-
- **Reserve hard rules** for genuine non-negotiables (the no-self-execution boundary, the no-self-promotion sizing rule). Density matters: this loads on every revive.
|
|
49
|
-
- **End with the include.** `@include orchestration-kernel.md` on its own line, last. Without it the orchestrator boots with no protocol and cannot run the loop.
|
|
50
|
-
|
|
51
|
-
## Failure modes
|
|
52
|
-
|
|
53
|
-
- **Re-teaching the kernel.** Re-explaining the wake loop, roadmap sections, yielding, or memory duplicates the kernel and drifts. If it's universal, delete it.
|
|
54
|
-
- **Missing `@include`.** No kernel = no loop, no roadmap discipline, no finish checklist. Always include it, last.
|
|
55
|
-
- **Inlining the methodology.** Roadmap shapes belong in the `roadmapKnowledge` knowledge doc, not the persona. Point at it.
|
|
56
|
-
- **No named pipeline.** An orchestrator that doesn't name its child kinds and their order produces scattershot delegation. The flow is the value.
|
|
57
|
-
- **Forgetting the no-self-execution rule.** Without an explicit boundary, the model drifts into doing the work itself and exhausts its context with the goal half-met — the exact failure orchestrators exist to avoid.
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
kind: knowledge
|
|
3
|
-
when-and-why-to-read: When adding a new `--kind`, overriding a builtin agent, or
|
|
4
|
-
debugging persona resolution, this knowledge should be read.
|
|
5
|
-
short-form: How to define a custom node kind (persona) for crtr — the
|
|
6
|
-
PERSONA.md/orchestrator files, the frontmatter contract (incl. whenToUse),
|
|
7
|
-
nested sub-personas, scope resolution and overrides, and how to write the
|
|
8
|
-
prose. Use when adding a new `--kind`, overriding a builtin agent, or
|
|
9
|
-
debugging persona resolution.
|
|
10
|
-
system-prompt-visibility: name
|
|
11
|
-
file-read-visibility: none
|
|
12
|
-
needs-refinement: true
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Authoring crtr personas (custom node kinds)
|
|
16
|
-
|
|
17
|
-
A **persona** is what `--kind` resolves to: the markdown that becomes a node's system prompt plus the launch knobs (model/tools/extensions/lifecycle). Defining one adds a new spawnable agent type to the canvas.
|
|
18
|
-
|
|
19
|
-
Audience: LLM agents creating or overriding a crtr node kind.
|
|
20
|
-
|
|
21
|
-
## When to add a kind (vs reuse a builtin)
|
|
22
|
-
|
|
23
|
-
Builtins cover the common shapes: `explore spec design plan developer review general`.
|
|
24
|
-
|
|
25
|
-
- **Reuse a builtin** when the work fits one. Don't fork `developer` to tweak one sentence.
|
|
26
|
-
- **Add a kind** for a recurring specialist with its own deliverable + reporting contract that no builtin matches — e.g. `researcher`, `migration`, `release`.
|
|
27
|
-
- **Override a builtin** by creating a same-named dir at user/project scope — it *shadows* the builtin (precedence below), it doesn't edit the shipped file.
|
|
28
|
-
|
|
29
|
-
Never edit `src/builtin-personas/` for a local need — that ships to everyone. Override at scope instead.
|
|
30
|
-
|
|
31
|
-
## Layout
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
<root>/personas/
|
|
35
|
-
├── <kind>/
|
|
36
|
-
│ ├── PERSONA.md # worker persona (mode=base)
|
|
37
|
-
│ ├── orchestrator.md # orchestrator persona (mode=orchestrator) — optional
|
|
38
|
-
│ └── <sub>/PERSONA.md # nested sub-persona — kind string `<kind>/<sub>` (any depth)
|
|
39
|
-
├── orchestration-kernel.md # shared; @include-d by orchestrator files
|
|
40
|
-
└── runtime-base.md # shared; prepended to EVERY persona automatically
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
The role-body file is **`PERSONA.md`** (not `base.md` — that layout was retired). A kind exists once `<kind>/` holds a `PERSONA.md` **or** `orchestrator.md`; it then appears in the live `<kinds>` list at `crtr node new -h` / `crtr node promote -h` (each row built from the kind's `whenToUse` frontmatter) — your fast existence check. Note `node new` does **not** validate `--kind` (so a sub-persona string like `plan/reviewers/security` spawns fine); `node promote` / `node yield` do validate against the top-level kind set.
|
|
44
|
-
|
|
45
|
-
## Scope + precedence
|
|
46
|
-
|
|
47
|
-
Resolution is **project > user > builtin**, resolved per file:
|
|
48
|
-
|
|
49
|
-
| Scope | Path |
|
|
50
|
-
|---|---|
|
|
51
|
-
| project | `<project>/.crouter/personas/<kind>/` — checked into the repo |
|
|
52
|
-
| user | `~/.crouter/personas/<kind>/` — personal, all your projects |
|
|
53
|
-
| builtin | ships with the CLI |
|
|
54
|
-
|
|
55
|
-
Personas are **scope-root content, not plugin content** — they don't ship via plugins or marketplaces (the loader only searches `<scope>/personas/`). To share a kind, commit it to a repo's `.crouter/personas/` (project) or copy it into `~/.crouter/personas/` (user).
|
|
56
|
-
|
|
57
|
-
## The two files
|
|
58
|
-
|
|
59
|
-
**`PERSONA.md`** — the worker (mode=base). Second person. State scope → method → deliverable, and end by reporting via `crtr push final`. Default lifecycle `terminal` (finishes in one window). → how to write one: `[[crouter-development/personas/base-prompt]]`.
|
|
60
|
-
|
|
61
|
-
**`orchestrator.md`** — the owner that delegates to children and never does the work itself. Name the child kinds it drives and set per-phase exit criteria. **Must end with `@include orchestration-kernel.md`** — the loader inlines it; without it the orchestrator boots with no fan-out protocol. Default lifecycle `resident`. → how to write one: `[[crouter-development/personas/orchestrator-prompt]]`.
|
|
62
|
-
|
|
63
|
-
If a kind has only `PERSONA.md`, `--mode orchestrator` composes `PERSONA.md body + kernel` and forces `resident` — so write `orchestrator.md` only when the worker and owner prose genuinely differ.
|
|
64
|
-
|
|
65
|
-
## Frontmatter contract
|
|
66
|
-
|
|
67
|
-
YAML frontmatter on either file supplies launch knobs; the body is the system prompt.
|
|
68
|
-
|
|
69
|
-
| Field | Type | Effect |
|
|
70
|
-
|---|---|---|
|
|
71
|
-
| `lifecycle` | `terminal`\|`resident` | terminal = finishes + reaps; resident = interactive/long-lived. Defaults: base→terminal, orchestrator→resident. |
|
|
72
|
-
| `model` | string | pi model override (normalized). Omit to inherit the default. |
|
|
73
|
-
| `tools` | string[] | pi tool allowlist. Omit for all tools. |
|
|
74
|
-
| `extensions` | string[] | pi extensions, **added after** the always-on canvas extensions. |
|
|
75
|
-
| `roadmapKnowledge` | string | orchestrator only — a knowledge doc whose body is injected as roadmap-shaping guidance when the node runs as an orchestrator. |
|
|
76
|
-
| `whenToUse` | string | on a `<kind>/PERSONA.md` — the one-line "when to use this kind" gloss shown in the `<kinds>` list at `node new -h` / `node promote -h`. |
|
|
77
|
-
| `availableTo` | string[] \| `*` | sub-persona only — which kinds see it in their spawn menu. Default: its top-level ancestor kind. `*` / `all` = every kind. |
|
|
78
|
-
|
|
79
|
-
`resolve()` never throws: a missing/empty persona falls back to `"You are a <kind> agent…"` defaults, so a node always boots. `runtime-base.md` (the push/finish/delegate/feed/ask protocol) is prepended to every persona — **don't restate it in the body.**
|
|
80
|
-
|
|
81
|
-
## @include
|
|
82
|
-
|
|
83
|
-
`@include <filename>` inlines another persona-root file, resolved through the same project>user>builtin chain. Used for `orchestration-kernel.md`; drop an `orchestration-kernel.md` at user/project scope to change orchestrator protocol fleet-wide.
|
|
84
|
-
|
|
85
|
-
## Sub-personas
|
|
86
|
-
|
|
87
|
-
A **sub-persona** is a specialist nested under a kind — any descendant dir (any depth) that holds a `PERSONA.md`, e.g. `plan/reviewers/security/PERSONA.md`. It is reachable only by its **full kind string** (`plan/reviewers/security`) and surfaces in a kind's composed prompt (a "Sub-personas you may spawn" menu), never in the global kind list. Intermediate dirs without a `PERSONA.md` (e.g. `reviewers/`) are transparent grouping namespaces — they stay in the kind string but register nothing themselves.
|
|
88
|
-
|
|
89
|
-
Visibility is its `availableTo` frontmatter: omit it and the sub-persona is visible only to its top-level ancestor kind (so `plan/reviewers/*` show up only for `plan`); set `availableTo: [plan, developer]` to surface it in those kinds; set `availableTo: "*"` for every kind. Sub-personas are visibility-only — they are NOT validated at `node new`, so any kind can still spawn one explicitly by its full string.
|
|
90
|
-
|
|
91
|
-
## Dev loop
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
mkdir -p ~/.crouter/personas/researcher
|
|
95
|
-
$EDITOR ~/.crouter/personas/researcher/PERSONA.md # whenToUse frontmatter + prose
|
|
96
|
-
crtr node new -h # confirm `researcher` now appears in the <kinds> list
|
|
97
|
-
crtr node new --kind researcher "map the auth flow" # spawn it
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
No scaffold command — create the dir + files by hand. Copy a builtin (`explore/PERSONA.md`, `developer/orchestrator.md`) as a starting template.
|
|
101
|
-
|
|
102
|
-
## Failure modes
|
|
103
|
-
|
|
104
|
-
- **Orchestrator with no `@include orchestration-kernel.md`** — boots without the fan-out protocol; can't delegate. Always include it.
|
|
105
|
-
- **Restating runtime-base** — the push/finish/delegate protocol is already prepended. Duplicating it wastes context and drifts out of sync.
|
|
106
|
-
- **`lifecycle: resident` on a worker `PERSONA.md`** — the node never finishes. Reserve `resident` for interactive/long-lived kinds.
|
|
107
|
-
- **Editing `src/builtin-personas/` for a local need** — ships to everyone. Override at user/project scope.
|
|
108
|
-
- **Kind not listed after creating the dir** — neither `PERSONA.md` nor `orchestrator.md` is present, or the filename is wrong (it must be exactly `PERSONA.md` — `base.md` no longer registers a kind). The dir alone doesn't register a kind.
|
|
109
|
-
|
|
110
|
-
## Related
|
|
111
|
-
|
|
112
|
-
`[[crouter-development/plugins]]` packages memory docs for distribution — personas are distributed differently (committed to a scope's `personas/`), so a kind is never part of a plugin.
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Persona composer public surface.
|
|
3
|
-
*
|
|
4
|
-
* Re-exports:
|
|
5
|
-
* - loadPersona / loadKernel / availableKinds / kindWhenToUse / subPersonasFor
|
|
6
|
-
* (loader — raw file access)
|
|
7
|
-
* - resolve (high-level composer)
|
|
8
|
-
* - ResolvedPersona (return type of resolve)
|
|
9
|
-
*/
|
|
10
|
-
export { loadPersona, loadPersonaSource, loadKernel, loadKernelSource, availableKinds, kindWhenToUse, subPersonasFor, loadLifecycleFragment, loadLifecycleFragmentSource, loadSpineFragment, loadSpineFragmentSource, loadRuntimeBase, loadRuntimeBaseSource, loadWaitingFragment, loadWaitingFragmentSource, loadScopedText, } from './loader.js';
|
|
11
|
-
export type { LoadedPersona, LoadedPersonaSource, SubPersona } from './loader.js';
|
|
12
|
-
export { resolve, resolveLayers, resolvePromptReview } from './resolve.js';
|
|
13
|
-
export type { ResolvedPersona, PromptReviewData, PromptReviewConfig, PromptLayer, PromptSource } from './resolve.js';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Persona composer public surface.
|
|
3
|
-
*
|
|
4
|
-
* Re-exports:
|
|
5
|
-
* - loadPersona / loadKernel / availableKinds / kindWhenToUse / subPersonasFor
|
|
6
|
-
* (loader — raw file access)
|
|
7
|
-
* - resolve (high-level composer)
|
|
8
|
-
* - ResolvedPersona (return type of resolve)
|
|
9
|
-
*/
|
|
10
|
-
export { loadPersona, loadPersonaSource, loadKernel, loadKernelSource, availableKinds, kindWhenToUse, subPersonasFor, loadLifecycleFragment, loadLifecycleFragmentSource, loadSpineFragment, loadSpineFragmentSource, loadRuntimeBase, loadRuntimeBaseSource, loadWaitingFragment, loadWaitingFragmentSource, loadScopedText, } from './loader.js';
|
|
11
|
-
export { resolve, resolveLayers, resolvePromptReview } from './resolve.js';
|