syntaur 0.4.3 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dashboard/dist/assets/{_basePickBy-CWivToyi.js → _basePickBy-ZY1FrcKw.js} +1 -1
  2. package/dashboard/dist/assets/{_baseUniq-C-qj6E4l.js → _baseUniq-C7xZB6ea.js} +1 -1
  3. package/dashboard/dist/assets/{arc-Dn5BIqMa.js → arc-CPtDVk1A.js} +1 -1
  4. package/dashboard/dist/assets/{architectureDiagram-2XIMDMQ5-D5D0K7rY.js → architectureDiagram-2XIMDMQ5-Dr5rnxwf.js} +1 -1
  5. package/dashboard/dist/assets/{blockDiagram-WCTKOSBZ-DVmYPMbu.js → blockDiagram-WCTKOSBZ-SsDboTb2.js} +1 -1
  6. package/dashboard/dist/assets/{c4Diagram-IC4MRINW-BEasxbnl.js → c4Diagram-IC4MRINW-CZqjXmV0.js} +1 -1
  7. package/dashboard/dist/assets/channel-ejDeCb7i.js +1 -0
  8. package/dashboard/dist/assets/{chunk-4BX2VUAB-LDIrtI5E.js → chunk-4BX2VUAB-BYskd63Z.js} +1 -1
  9. package/dashboard/dist/assets/{chunk-55IACEB6-CaEBUJYu.js → chunk-55IACEB6-CWLImr1E.js} +1 -1
  10. package/dashboard/dist/assets/{chunk-FMBD7UC4-B-GjCpdr.js → chunk-FMBD7UC4-fQXSIXhy.js} +1 -1
  11. package/dashboard/dist/assets/{chunk-JSJVCQXG-BLVVcezm.js → chunk-JSJVCQXG-DJXtEexG.js} +1 -1
  12. package/dashboard/dist/assets/{chunk-KX2RTZJC-DqCNEw4h.js → chunk-KX2RTZJC-C0ivaZ1M.js} +1 -1
  13. package/dashboard/dist/assets/{chunk-NQ4KR5QH-BCPbFf5I.js → chunk-NQ4KR5QH-DlwLjqC5.js} +1 -1
  14. package/dashboard/dist/assets/{chunk-QZHKN3VN-Ci0C85q_.js → chunk-QZHKN3VN-DBEYrRqx.js} +1 -1
  15. package/dashboard/dist/assets/{chunk-WL4C6EOR-VVhAMMYU.js → chunk-WL4C6EOR-BQyYCp1z.js} +1 -1
  16. package/dashboard/dist/assets/classDiagram-VBA2DB6C-BW_esmsF.js +1 -0
  17. package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-BW_esmsF.js +1 -0
  18. package/dashboard/dist/assets/clone-y13L00zF.js +1 -0
  19. package/dashboard/dist/assets/{cose-bilkent-S5V4N54A-CO9uwgYO.js → cose-bilkent-S5V4N54A-CAYzelqd.js} +1 -1
  20. package/dashboard/dist/assets/{dagre-KLK3FWXG-bwLLXcL4.js → dagre-KLK3FWXG-xpTJb8E7.js} +1 -1
  21. package/dashboard/dist/assets/{diagram-E7M64L7V-RuS5R6V1.js → diagram-E7M64L7V-DRDjskHd.js} +1 -1
  22. package/dashboard/dist/assets/{diagram-IFDJBPK2-BQDJAHQd.js → diagram-IFDJBPK2-B1r1ZXm3.js} +1 -1
  23. package/dashboard/dist/assets/{diagram-P4PSJMXO-yLEsgzE5.js → diagram-P4PSJMXO-BeE6-ZUH.js} +1 -1
  24. package/dashboard/dist/assets/{erDiagram-INFDFZHY-na6dUhY0.js → erDiagram-INFDFZHY-BG6KKBm1.js} +1 -1
  25. package/dashboard/dist/assets/{flowDiagram-PKNHOUZH-BIcrzwJR.js → flowDiagram-PKNHOUZH-CSFv3RpZ.js} +1 -1
  26. package/dashboard/dist/assets/{ganttDiagram-A5KZAMGK-DHWRJn-D.js → ganttDiagram-A5KZAMGK-Off4zK-k.js} +1 -1
  27. package/dashboard/dist/assets/{gitGraphDiagram-K3NZZRJ6-LGxDjL71.js → gitGraphDiagram-K3NZZRJ6-Msv_4mYB.js} +1 -1
  28. package/dashboard/dist/assets/{graph-BUqNu277.js → graph-rPPnNEMq.js} +1 -1
  29. package/dashboard/dist/assets/index-Bu6ma6my.css +1 -0
  30. package/dashboard/dist/assets/{index-D-fepllQ.js → index-D_uE8gHg.js} +87 -87
  31. package/dashboard/dist/assets/{infoDiagram-LFFYTUFH-DidoA2hb.js → infoDiagram-LFFYTUFH-CeBirxFd.js} +1 -1
  32. package/dashboard/dist/assets/{ishikawaDiagram-PHBUUO56-CdlZkbhV.js → ishikawaDiagram-PHBUUO56-BZ_w8PcD.js} +1 -1
  33. package/dashboard/dist/assets/{journeyDiagram-4ABVD52K-luhcz_gn.js → journeyDiagram-4ABVD52K-3FqMPEfs.js} +1 -1
  34. package/dashboard/dist/assets/{kanban-definition-K7BYSVSG-Coidw9XE.js → kanban-definition-K7BYSVSG-BlCmFkEx.js} +1 -1
  35. package/dashboard/dist/assets/{layout-_aBAAleE.js → layout-C50nYMhx.js} +1 -1
  36. package/dashboard/dist/assets/{linear-D8mFnDSx.js → linear-D2Cjmh1X.js} +1 -1
  37. package/dashboard/dist/assets/{mermaid.core-BpP2keU-.js → mermaid.core-BXFuNYa4.js} +4 -4
  38. package/dashboard/dist/assets/{mindmap-definition-YRQLILUH-LjvrTe2z.js → mindmap-definition-YRQLILUH-CowIfM07.js} +1 -1
  39. package/dashboard/dist/assets/{pieDiagram-SKSYHLDU-CkA2iU6e.js → pieDiagram-SKSYHLDU-DG5IQcKl.js} +1 -1
  40. package/dashboard/dist/assets/{quadrantDiagram-337W2JSQ-BRmhKHQG.js → quadrantDiagram-337W2JSQ-DKD46CSX.js} +1 -1
  41. package/dashboard/dist/assets/{requirementDiagram-Z7DCOOCP-BYCQ4uFX.js → requirementDiagram-Z7DCOOCP-Dd-qX6Ul.js} +1 -1
  42. package/dashboard/dist/assets/{sankeyDiagram-WA2Y5GQK-C8SVk50M.js → sankeyDiagram-WA2Y5GQK-CDAylULt.js} +1 -1
  43. package/dashboard/dist/assets/{sequenceDiagram-2WXFIKYE-CbA_2lnP.js → sequenceDiagram-2WXFIKYE-D-5Jq5jy.js} +1 -1
  44. package/dashboard/dist/assets/{stateDiagram-RAJIS63D-D6ZtjAHE.js → stateDiagram-RAJIS63D-BmBOa8i0.js} +1 -1
  45. package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-Dsk6o9iT.js +1 -0
  46. package/dashboard/dist/assets/{timeline-definition-YZTLITO2-B2Uf-emK.js → timeline-definition-YZTLITO2-C9Sdg7du.js} +1 -1
  47. package/dashboard/dist/assets/{treemap-KZPCXAKY-CYnFKsuJ.js → treemap-KZPCXAKY-D-PDxUdK.js} +1 -1
  48. package/dashboard/dist/assets/{vennDiagram-LZ73GAT5-Cnj0qiDO.js → vennDiagram-LZ73GAT5-CBO5f6MT.js} +1 -1
  49. package/dashboard/dist/assets/{xychartDiagram-JWTSCODW-BJy2mbL9.js → xychartDiagram-JWTSCODW-4xZrquqP.js} +1 -1
  50. package/dashboard/dist/index.html +2 -2
  51. package/dist/dashboard/server.js +601 -285
  52. package/dist/dashboard/server.js.map +1 -1
  53. package/dist/index.js +568 -148
  54. package/dist/index.js.map +1 -1
  55. package/examples/playbooks/assignment-creation.md +19 -0
  56. package/examples/playbooks/assignment-planning.md +28 -0
  57. package/package.json +1 -1
  58. package/platforms/claude-code/.orphaned_at +1 -0
  59. package/platforms/claude-code/agents/syntaur-expert.md +2 -2
  60. package/platforms/claude-code/commands/create-assignment/create-assignment.md +1 -1
  61. package/platforms/codex/agents/syntaur-operator.md +2 -2
  62. package/statusline/statusline.sh +3 -10
  63. package/vendor/syntaur-skills/README.md +12 -0
  64. package/vendor/syntaur-skills/skills/create-assignment/SKILL.md +5 -4
  65. package/dashboard/dist/assets/channel-DqU_8tiy.js +0 -1
  66. package/dashboard/dist/assets/classDiagram-VBA2DB6C-D29Eeoe8.js +0 -1
  67. package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-D29Eeoe8.js +0 -1
  68. package/dashboard/dist/assets/clone-Bok8Q3Jj.js +0 -1
  69. package/dashboard/dist/assets/index-DnHyQJJH.css +0 -1
  70. package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-DeYN4wV6.js +0 -1
  71. package/examples/playbooks/plan-versioning.md +0 -36
  72. package/examples/playbooks/read-before-plan.md +0 -30
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: "Assignment Creation"
3
+ slug: assignment-creation
4
+ description: "Rules for how agents should create new assignments"
5
+ when_to_use: "Before creating a new assignment (project-nested or standalone)"
6
+ created: "2026-04-23T00:00:00Z"
7
+ updated: "2026-04-23T00:00:00Z"
8
+ tags:
9
+ - protocol
10
+ - assignments
11
+ ---
12
+
13
+ # Assignment Creation
14
+
15
+ Rules for creating new assignments.
16
+
17
+ 1. Do not pre-populate assignments with specific todos unless the user explicitly asks for them. Todos belong to the planning phase, and baking them into the assignment at creation time locks in an approach before the agent has read the project context, decision records, or dependencies. Let the assignment describe the goal and acceptance criteria; let the plan describe the steps.
18
+
19
+ 2. The initial status of a newly created assignment should usually be `brainstorming`. Assignments typically need to be shaped — goal clarified, acceptance criteria refined, scope discussed — before they're ready to be planned or worked on. Only skip `brainstorming` when the user has already fully specified the assignment and explicitly wants it to start in a later state.
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: "Assignment Planning"
3
+ slug: assignment-planning
4
+ description: "Rules for how agents should update an assignment's todos when planning"
5
+ when_to_use: "When creating a plan for an assignment, or creating a new plan after a prior one has been executed"
6
+ created: "2026-04-23T00:00:00Z"
7
+ updated: "2026-04-23T00:00:00Z"
8
+ tags:
9
+ - protocol
10
+ - planning
11
+ - assignments
12
+ ---
13
+
14
+ # Assignment Planning
15
+
16
+ Rules for updating an assignment's todos during planning.
17
+
18
+ 1. When planning an assignment, add these three todos to the assignment:
19
+ - [ ] Create plan
20
+ - [ ] Review plan (include link to the plan .md)
21
+ - [ ] Execute plan (include link to the plan .md)
22
+
23
+ 2. If asked to create a new plan after a prior plan has been implemented (i.e. its "Execute plan" todo is checked off), add three new todos for the new cycle:
24
+ - [ ] Create new plan
25
+ - [ ] Review new plan (include link to the new plan .md)
26
+ - [ ] Execute new plan (include link to the new plan .md)
27
+
28
+ Leave the old todos intact. Mark them as done and/or outdated if appropriate, but do not delete them — the history of plan cycles is part of the assignment record.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "syntaur",
3
- "version": "0.4.3",
3
+ "version": "0.4.5",
4
4
  "description": "Project workflow CLI with dashboard, Claude Code plugin, and Codex plugin",
5
5
  "homepage": "https://github.com/prong-horn/syntaur#readme",
6
6
  "repository": {
@@ -0,0 +1 @@
1
+ 1776860006263
@@ -169,8 +169,8 @@ Only the assigned agent may write to its own assignment folder.
169
169
  | Command | Description |
170
170
  |---------|-------------|
171
171
  | `syntaur create-project <title> [--slug S] [--dir D]` | Create new project with full scaffolding |
172
- | `syntaur create-assignment <title> --project M [--priority P] [--depends-on D] [--slug S] [--type T]` | Create assignment in a project |
173
- | `syntaur create-assignment <title> --one-off [--type T]` | Create standalone assignment at `~/.syntaur/assignments/<uuid>/` (project: null, slug display-only) |
172
+ | `syntaur create-assignment <title> --project M [--priority P] [--depends-on D] [--slug S] [--type T] [--with-todos]` | Create assignment in a project. `--with-todos` pre-scaffolds a `## Todos` section (omitted by default — usually added later by `plan-assignment`). |
173
+ | `syntaur create-assignment <title> --one-off [--type T] [--with-todos]` | Create standalone assignment at `~/.syntaur/assignments/<uuid>/` (project: null, slug display-only) |
174
174
 
175
175
  ### Coordination (CLI-mediated writes)
176
176
  | Command | Description |
@@ -3,7 +3,7 @@ name: create-assignment
3
3
  description: Create a new Syntaur assignment (project-nested or standalone one-off)
4
4
  arguments:
5
5
  - name: args
6
- description: "Title and flags. See the create-assignment skill for supported forms (e.g. --project <slug>, --one-off, --type <type>)."
6
+ description: "Title and flags. See the create-assignment skill for supported forms (e.g. --project <slug>, --one-off, --type <type>, --with-todos)."
7
7
  required: false
8
8
  ---
9
9
 
@@ -80,8 +80,8 @@ Project-nested assignments live at `~/.syntaur/projects/<slug>/assignments/<aslu
80
80
  Use these commands directly when needed:
81
81
 
82
82
  - `syntaur create-project "<title>" [--slug <slug>] [--dir <path>]`
83
- - `syntaur create-assignment "<title>" --project <slug> [--slug <slug>] [--priority <level>] [--depends-on <slugs>] [--type <type>] [--dir <path>]`
84
- - `syntaur create-assignment "<title>" --one-off [--slug <slug>] [--priority <level>] [--type <type>] [--dir <path>]` — creates standalone at `~/.syntaur/assignments/<uuid>/`
83
+ - `syntaur create-assignment "<title>" --project <slug> [--slug <slug>] [--priority <level>] [--depends-on <slugs>] [--type <type>] [--dir <path>] [--with-todos]` — `--with-todos` pre-scaffolds a `## Todos` section (omitted by default; usually added later by `plan-assignment`)
84
+ - `syntaur create-assignment "<title>" --one-off [--slug <slug>] [--priority <level>] [--type <type>] [--dir <path>] [--with-todos]` — creates standalone at `~/.syntaur/assignments/<uuid>/`
85
85
  - `syntaur setup [--yes] [--claude] [--codex] [--claude-dir <path>] [--codex-dir <path>] [--codex-marketplace-path <path>] [--dashboard]`
86
86
  - `syntaur assign <assignment-slug> --agent codex --project <project-slug>`
87
87
  - `syntaur start <assignment-slug> --project <project-slug>`
@@ -14,7 +14,7 @@
14
14
  # git repo:branch (+ dirty marker + ahead/behind counts)
15
15
  # assignment active syntaur assignment (project/slug or standalone/uuid — title)
16
16
  # external external tracker IDs declared by the assignment (Jira, Linear, ...)
17
- # session Claude session id, last 8 chars prefixed by "…"
17
+ # session Claude session id (full)
18
18
  # model Claude model display name
19
19
  # ctx context window fill bar, e.g. "ctx:[####------] 42%"
20
20
  # cwd basename of the current working directory
@@ -181,16 +181,9 @@ if [ -f "$CONTEXT_FILE" ]; then
181
181
  fi
182
182
  fi
183
183
 
184
- # session — last 8 chars
184
+ # session — full id
185
185
  SESSION_SEG=""
186
- if [ -n "$SESSION_ID" ]; then
187
- LEN=${#SESSION_ID}
188
- if [ "$LEN" -gt 8 ]; then
189
- SESSION_SEG="…${SESSION_ID: -8}"
190
- else
191
- SESSION_SEG="$SESSION_ID"
192
- fi
193
- fi
186
+ [ -n "$SESSION_ID" ] && SESSION_SEG="$SESSION_ID"
194
187
 
195
188
  # model
196
189
  MODEL_SEG=""
@@ -13,6 +13,16 @@ syntaur setup
13
13
 
14
14
  ## Install
15
15
 
16
+ If you use Claude Code or Codex, install the `syntaur` package — these skills ship automatically with its plugin install flow:
17
+
18
+ ```bash
19
+ npm install -g syntaur
20
+ syntaur install-plugin # Claude Code → ~/.claude/skills/
21
+ syntaur install-codex-plugin # Codex → ~/.codex/skills/
22
+ ```
23
+
24
+ For any other AI coding agent (Cursor, OpenCode, custom runtimes), install the skills directly:
25
+
16
26
  ```bash
17
27
  npx skills add prong-horn/syntaur-skills
18
28
  ```
@@ -23,6 +33,8 @@ Or install a specific skill:
23
33
  npx skills add prong-horn/syntaur-skills --skill syntaur-protocol
24
34
  ```
25
35
 
36
+ > **Note:** If you install `syntaur` AND also run `npx skills add prong-horn/syntaur-skills` on the same machine, you'll get the same skills installed once — they use the same names. The `syntaur` CLI detects existing copies and skips already-current ones.
37
+
26
38
  ## Skills
27
39
 
28
40
  | Skill | Description |
@@ -7,7 +7,7 @@ description: >-
7
7
  license: MIT
8
8
  metadata:
9
9
  author: prong-horn
10
- version: "1.1.0"
10
+ version: "1.2.0"
11
11
  ---
12
12
 
13
13
  # Create Assignment
@@ -26,6 +26,7 @@ Expects arguments from the user:
26
26
  - `--type <type>` (optional): classification such as `feature`, `bug`, `refactor`, `research`, `chore`. Defaults to `feature`. When `~/.syntaur/config.md` defines `types.definitions`, the CLI validates against that list.
27
27
  - `--depends-on <slug[,slug...]>` (optional, project-nested only): comma-separated list of assignment slugs this depends on
28
28
  - `--dir <path>` (optional): override the default project directory
29
+ - `--with-todos` (optional): scaffold a `## Todos` section in `assignment.md`. **Omit unless the user explicitly asks for it.** Todos are normally a plan (added by `plan-assignment`) or populated during planning — not something to pre-create at assignment time. Pass this flag only if the user explicitly says something like "include todos", "with a todo list", "scaffold todos", etc.
29
30
 
30
31
  If no title was provided, ask the user what the assignment should be called.
31
32
 
@@ -38,13 +39,13 @@ If no active context and no project flag, ask the user which project to add it t
38
39
  Build the command from the parsed arguments:
39
40
 
40
41
  ```bash
41
- syntaur create-assignment "<title>" --project <slug> [--slug <slug>] [--priority <level>] [--type <type>] [--depends-on <slugs>] [--dir <path>]
42
+ syntaur create-assignment "<title>" --project <slug> [--slug <slug>] [--priority <level>] [--type <type>] [--depends-on <slugs>] [--dir <path>] [--with-todos]
42
43
  ```
43
44
 
44
45
  Or for a one-off (standalone at `~/.syntaur/assignments/<uuid>/`):
45
46
 
46
47
  ```bash
47
- syntaur create-assignment "<title>" --one-off [--slug <slug>] [--priority <level>] [--type <type>] [--dir <path>]
48
+ syntaur create-assignment "<title>" --one-off [--slug <slug>] [--priority <level>] [--type <type>] [--dir <path>] [--with-todos]
48
49
  ```
49
50
 
50
51
  If the command fails (e.g., project not found, slug collision, invalid type), report the error and suggest fixes.
@@ -67,6 +68,6 @@ Tell the user:
67
68
  - The assignment was created with its slug, priority, type, and location. For standalone assignments, note that the folder is named by UUID (not slug) — `slug` is display-only.
68
69
  - Files created: `assignment.md`, `progress.md`, `comments.md`, `scratchpad.md`, `handoff.md`, `decision-record.md`. **`plan.md` is NOT scaffolded** — plan files are optional and created on demand by the `plan-assignment` skill.
69
70
  - Remind the user: `progress.md` is where timestamped progress entries go (NOT `assignment.md`), and `comments.md` is CLI-mediated — write only via `syntaur comment <slug-or-uuid> "body" --type question|note|feedback [--reply-to <id>]`.
70
- - Suggest editing `assignment.md` to fill in the objective, acceptance criteria, context, and any initial todos. The `## Todos` section accepts simple tasks or markdown links to plan files.
71
+ - Suggest editing `assignment.md` to fill in the objective, acceptance criteria, and context. A `## Todos` section is **not** scaffolded by default it is added automatically by `plan-assignment` (linking the new plan file) or by `syntaur request` (cross-assignment requests). Only the `--with-todos` flag pre-scaffolds an empty `## Todos` section.
71
72
  - If dependencies were set, note them. Standalone assignments cannot declare `dependsOn`.
72
73
  - Suggest `grab-assignment <project-slug> <assignment-slug>` (or `grab-assignment --id <uuid>` for standalone) to claim and start working on it.
@@ -1 +0,0 @@
1
- import{aq as o,ar as n}from"./mermaid.core-BpP2keU-.js";const t=(r,a)=>o.lang.round(n.parse(r)[a]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-WL4C6EOR-VVhAMMYU.js";import{_ as i}from"./mermaid.core-BpP2keU-.js";import"./chunk-FMBD7UC4-B-GjCpdr.js";import"./chunk-JSJVCQXG-BLVVcezm.js";import"./chunk-55IACEB6-CaEBUJYu.js";import"./chunk-KX2RTZJC-DqCNEw4h.js";import"./index-D-fepllQ.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-WL4C6EOR-VVhAMMYU.js";import{_ as i}from"./mermaid.core-BpP2keU-.js";import"./chunk-FMBD7UC4-B-GjCpdr.js";import"./chunk-JSJVCQXG-BLVVcezm.js";import"./chunk-55IACEB6-CaEBUJYu.js";import"./chunk-KX2RTZJC-DqCNEw4h.js";import"./index-D-fepllQ.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./_baseUniq-C-qj6E4l.js";var e=4;function a(o){return r(o,e)}export{a as c};
@@ -1 +0,0 @@
1
- *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Space Grotesk,system-ui,-apple-system,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 98% .005 280;--foreground: 18% .01 280;--card: 100% 0 0;--card-foreground: 18% .01 280;--popover: 100% 0 0;--popover-foreground: 18% .01 280;--primary: 55% .22 290;--primary-foreground: 98% 0 0;--secondary: 94% .008 280;--secondary-foreground: 18% .01 280;--muted: 95% .006 280;--muted-foreground: 46% .01 280;--accent: 93% .01 280;--accent-foreground: 18% .01 280;--destructive: 55% .2 15;--destructive-foreground: 98% 0 0;--border: 89% .008 280;--input: 89% .008 280;--ring: 55% .22 290;--sidebar: 96% .006 280;--accent-coral: 55% .2 15;--accent-teal: 50% .12 185;--accent-amber: 65% .18 75;--radius: .5rem}.dark{--background: 8% .008 280;--foreground: 95% .005 280;--card: 13% .008 280;--card-foreground: 95% .005 280;--popover: 13% .008 280;--popover-foreground: 95% .005 280;--primary: 70% .18 290;--primary-foreground: 8% 0 0;--secondary: 17% .01 280;--secondary-foreground: 95% .005 280;--muted: 17% .01 280;--muted-foreground: 65% .01 280;--accent: 17% .01 280;--accent-foreground: 95% .005 280;--destructive: 72% .17 15;--destructive-foreground: 8% 0 0;--border: 22% .008 280;--input: 22% .008 280;--ring: 70% .18 290;--sidebar: 6% .008 280;--accent-coral: 72% .17 15;--accent-teal: 72% .14 185;--accent-amber: 82% .16 75;--radius: .5rem}*{--tw-border-opacity: 1;border-color:oklch(var(--border) / var(--tw-border-opacity, 1))}html{scroll-behavior:smooth}body{min-height:100vh;--tw-bg-opacity: 1;background-color:oklch(var(--background) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:oklch(var(--foreground) / var(--tw-text-opacity, 1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Space Grotesk,system-ui,-apple-system,sans-serif;font-variant-numeric:tabular-nums;letter-spacing:-.005em}.dark body{background-image:radial-gradient(circle,oklch(22% .008 280) 1px,transparent 1px);background-size:24px 24px}h1,h2,h3,h4,h5,h6{font-family:Space Grotesk,system-ui,-apple-system,sans-serif;letter-spacing:-.02em}code,pre,kbd,samp{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.surface-panel{border-radius:var(--radius);border-width:1px;border-color:oklch(var(--border) / .6);background-color:oklch(var(--card) / .95);padding:.75rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shell-action{display:inline-flex;align-items:center;gap:.375rem;border-radius:calc(var(--radius) - 2px);border-width:1px;border-color:oklch(var(--border) / .6);background-color:oklch(var(--card) / .9);padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:oklch(var(--foreground) / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.shell-action:hover{border-color:oklch(var(--primary) / .4);--tw-bg-opacity: 1;background-color:oklch(var(--card) / var(--tw-bg-opacity, 1))}.editor-input{height:2.25rem;width:100%;border-radius:calc(var(--radius) - 2px);border-width:1px;border-color:oklch(var(--border) / .6);background-color:oklch(var(--background) / .9);padding-left:.75rem;padding-right:.75rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:oklch(var(--foreground) / var(--tw-text-opacity, 1));outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.editor-input:focus{--tw-border-opacity: 1;border-color:oklch(var(--primary) / var(--tw-border-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: oklch(var(--ring) / .3)}.editor-input-disabled{cursor:not-allowed;background-color:oklch(var(--muted) / .6);--tw-text-opacity: 1;color:oklch(var(--muted-foreground) / var(--tw-text-opacity, 1))}.editor-textarea{min-height:400px;width:100%;border-radius:calc(var(--radius) - 2px);border-width:1px;border-color:oklch(var(--border) / .6);background-color:oklch(var(--background) / .9);padding:.75rem;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:oklch(var(--foreground) / var(--tw-text-opacity, 1));outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.editor-textarea:focus{--tw-border-opacity: 1;border-color:oklch(var(--primary) / var(--tw-border-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: oklch(var(--ring) / .3)}.prose-syntaur{color:var(--tw-prose-body);max-width:65ch}.prose-syntaur :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose-syntaur :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose-syntaur :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose-syntaur :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose-syntaur :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose-syntaur :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose-syntaur :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose-syntaur :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-syntaur :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose-syntaur :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose-syntaur :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose-syntaur :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose-syntaur :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose-syntaur :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose-syntaur :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose-syntaur :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose-syntaur :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose-syntaur :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-syntaur :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose-syntaur :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose-syntaur :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose-syntaur :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose-syntaur :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose-syntaur :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose-syntaur :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose-syntaur :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose-syntaur :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose-syntaur :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose-syntaur :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose-syntaur :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose-syntaur :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose-syntaur :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose-syntaur :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose-syntaur :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-syntaur :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose-syntaur :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-syntaur :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose-syntaur :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose-syntaur :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose-syntaur :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose-syntaur :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose-syntaur :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose-syntaur :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose-syntaur :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose-syntaur :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose-syntaur :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose-syntaur :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose-syntaur :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose-syntaur :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose-syntaur :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose-syntaur :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose-syntaur :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose-syntaur :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose-syntaur :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-syntaur :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose-syntaur :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose-syntaur :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose-syntaur :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose-syntaur :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose-syntaur :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose-syntaur :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-syntaur :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-syntaur{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose-syntaur :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-syntaur :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose-syntaur :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-syntaur :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-syntaur :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose-syntaur :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-syntaur :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-syntaur :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-syntaur :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-syntaur :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose-syntaur :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose-syntaur :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose-syntaur :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-syntaur :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-syntaur :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-syntaur :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-syntaur :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-syntaur :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-syntaur :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-syntaur :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-syntaur :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-syntaur :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-syntaur :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-syntaur :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-syntaur{--tw-prose-body: #334155;--tw-prose-headings: #0f172a;--tw-prose-lead: #475569;--tw-prose-links: #0f172a;--tw-prose-bold: #0f172a;--tw-prose-counters: #64748b;--tw-prose-bullets: #cbd5e1;--tw-prose-hr: #e2e8f0;--tw-prose-quotes: #0f172a;--tw-prose-quote-borders: #e2e8f0;--tw-prose-captions: #64748b;--tw-prose-kbd: #0f172a;--tw-prose-kbd-shadows: rgb(15 23 42 / 10%);--tw-prose-code: #0f172a;--tw-prose-pre-code: #e2e8f0;--tw-prose-pre-bg: #1e293b;--tw-prose-th-borders: #cbd5e1;--tw-prose-td-borders: #e2e8f0;--tw-prose-invert-body: #cbd5e1;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #94a3b8;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #94a3b8;--tw-prose-invert-bullets: #475569;--tw-prose-invert-hr: #334155;--tw-prose-invert-quotes: #f1f5f9;--tw-prose-invert-quote-borders: #334155;--tw-prose-invert-captions: #94a3b8;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #cbd5e1;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #475569;--tw-prose-invert-td-borders: #334155;max-width:none}.prose-syntaur:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.prose-syntaur :where(code):not(:where(pre code)){border-radius:calc(var(--radius) - 2px);--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1));padding:.125rem .375rem;font-size:.9em;--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity, 1))}.prose-syntaur :where(code):not(:where(pre code)):is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.prose-syntaur pre{border-radius:var(--radius);border-width:1px;border-color:oklch(var(--border) / .6);--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1));padding:.75rem;--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.prose-syntaur table{display:block;overflow-x:auto;border-radius:var(--radius);border-width:1px;border-color:oklch(var(--border) / .6)}.prose-syntaur blockquote{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius);border-left-width:4px;border-color:oklch(var(--primary) / .5);background-color:oklch(var(--accent) / .5);padding-top:.25rem;padding-bottom:.25rem;padding-right:.75rem}[data-hotkey-selected=true]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: oklch(var(--primary) / .6);--tw-ring-offset-width: 0px}.criterion-label{color:oklch(var(--foreground));background-image:linear-gradient(currentColor,currentColor);background-position:0 65%;background-repeat:no-repeat;background-size:0% 1px;transition:background-size .2s ease-out,color .2s ease-out}.criterion-label[data-checked=true]{color:oklch(var(--muted-foreground));background-size:100% 1px}@media(prefers-reduced-motion:reduce){.criterion-label{transition:none}}@keyframes send-to-review-glow{0%{box-shadow:0 0 oklch(var(--primary) / .6)}50%{box-shadow:0 0 0 8px oklch(var(--primary) / 0)}to{box-shadow:0 0 oklch(var(--primary) / 0)}}.send-to-review-glow{animation:send-to-review-glow 1.2s ease-out 2.5}@media(prefers-reduced-motion:reduce){.send-to-review-glow{animation:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:.75rem}.right-0{right:0}.top-0{top:0}.top-1\/2{top:50%}.top-12{top:3rem}.top-16{top:4rem}.top-full{top:100%}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.max-h-\[60vh\]{max-height:60vh}.max-h-screen{max-height:100vh}.min-h-\[120px\]{min-height:120px}.min-h-\[128px\]{min-height:128px}.min-h-\[240px\]{min-height:240px}.min-h-\[320px\]{min-height:320px}.min-h-\[720px\]{min-height:720px}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[5\.5rem\]{width:5.5rem}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[1040px\]{min-width:1040px}.min-w-\[140px\]{min-width:140px}.min-w-\[150px\]{min-width:150px}.min-w-\[220px\]{min-width:220px}.min-w-\[720px\]{min-width:720px}.min-w-\[760px\]{min-width:760px}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-\[1480px\]{max-width:1480px}.max-w-\[170px\]{max-width:170px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[60\%\]{max-width:60%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-4{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[0\.98\]{--tw-scale-x: .98;--tw-scale-y: .98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-grab{cursor:grab}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.auto-cols-\[minmax\(260px\,320px\)\]{grid-auto-columns:minmax(260px,320px)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(140px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(160px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-1{row-gap:.25rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border\/30>:not([hidden])~:not([hidden]){border-color:oklch(var(--border) / .3)}.divide-border\/40>:not([hidden])~:not([hidden]){border-color:oklch(var(--border) / .4)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.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:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-200\/70{border-color:#fde68ab3}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-amber-300\/80{border-color:#fcd34dcc}.border-border{--tw-border-opacity: 1;border-color:oklch(var(--border) / var(--tw-border-opacity, 1))}.border-border\/20{border-color:oklch(var(--border) / .2)}.border-border\/40{border-color:oklch(var(--border) / .4)}.border-border\/50{border-color:oklch(var(--border) / .5)}.border-border\/60{border-color:oklch(var(--border) / .6)}.border-border\/70{border-color:oklch(var(--border) / .7)}.border-border\/80{border-color:oklch(var(--border) / .8)}.border-destructive\/80{border-color:oklch(var(--destructive) / .8)}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity, 1))}.border-neutral-700{--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.border-neutral-800{--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity, 1))}.border-primary\/30{border-color:oklch(var(--primary) / .3)}.border-primary\/50{border-color:oklch(var(--primary) / .5)}.border-primary\/60{border-color:oklch(var(--primary) / .6)}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-rose-200{--tw-border-opacity: 1;border-color:rgb(254 205 211 / var(--tw-border-opacity, 1))}.border-rose-300{--tw-border-opacity: 1;border-color:rgb(253 164 175 / var(--tw-border-opacity, 1))}.border-slate-300{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.border-teal-300{--tw-border-opacity: 1;border-color:rgb(94 234 212 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-violet-300{--tw-border-opacity: 1;border-color:rgb(196 181 253 / var(--tw-border-opacity, 1))}.border-zinc-300{--tw-border-opacity: 1;border-color:rgb(212 212 216 / var(--tw-border-opacity, 1))}.bg-accent{--tw-bg-opacity: 1;background-color:oklch(var(--accent) / var(--tw-bg-opacity, 1))}.bg-accent\/30{background-color:oklch(var(--accent) / .3)}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-50\/80{background-color:#fffbebcc}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-900\/40{background-color:#78350f66}.bg-background{--tw-bg-opacity: 1;background-color:oklch(var(--background) / var(--tw-bg-opacity, 1))}.bg-background\/20{background-color:oklch(var(--background) / .2)}.bg-background\/50{background-color:oklch(var(--background) / .5)}.bg-background\/60{background-color:oklch(var(--background) / .6)}.bg-background\/70{background-color:oklch(var(--background) / .7)}.bg-background\/80{background-color:oklch(var(--background) / .8)}.bg-background\/85{background-color:oklch(var(--background) / .85)}.bg-background\/90{background-color:oklch(var(--background) / .9)}.bg-background\/95{background-color:oklch(var(--background) / .95)}.bg-card{--tw-bg-opacity: 1;background-color:oklch(var(--card) / var(--tw-bg-opacity, 1))}.bg-card\/80{background-color:oklch(var(--card) / .8)}.bg-card\/85{background-color:oklch(var(--card) / .85)}.bg-card\/90{background-color:oklch(var(--card) / .9)}.bg-cyan-500{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity, 1))}.bg-destructive{--tw-bg-opacity: 1;background-color:oklch(var(--destructive) / var(--tw-bg-opacity, 1))}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-emerald-50\/50{background-color:#ecfdf580}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-emerald-900\/40{background-color:#064e3b66}.bg-foreground{--tw-bg-opacity: 1;background-color:oklch(var(--foreground) / var(--tw-bg-opacity, 1))}.bg-fuchsia-500{--tw-bg-opacity: 1;background-color:rgb(217 70 239 / var(--tw-bg-opacity, 1))}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity, 1))}.bg-lime-500{--tw-bg-opacity: 1;background-color:rgb(132 204 22 / var(--tw-bg-opacity, 1))}.bg-muted{--tw-bg-opacity: 1;background-color:oklch(var(--muted) / var(--tw-bg-opacity, 1))}.bg-muted-foreground\/40{background-color:oklch(var(--muted-foreground) / .4)}.bg-muted\/20{background-color:oklch(var(--muted) / .2)}.bg-muted\/30{background-color:oklch(var(--muted) / .3)}.bg-muted\/50{background-color:oklch(var(--muted) / .5)}.bg-muted\/60{background-color:oklch(var(--muted) / .6)}.bg-neutral-800{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.bg-neutral-800\/70{background-color:#262626b3}.bg-neutral-900{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{--tw-bg-opacity: 1;background-color:oklch(var(--popover) / var(--tw-bg-opacity, 1))}.bg-primary{--tw-bg-opacity: 1;background-color:oklch(var(--primary) / var(--tw-bg-opacity, 1))}.bg-primary\/10{background-color:oklch(var(--primary) / .1)}.bg-primary\/5{background-color:oklch(var(--primary) / .05)}.bg-primary\/70{background-color:oklch(var(--primary) / .7)}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-rose-100{--tw-bg-opacity: 1;background-color:rgb(255 228 230 / var(--tw-bg-opacity, 1))}.bg-rose-50{--tw-bg-opacity: 1;background-color:rgb(255 241 242 / var(--tw-bg-opacity, 1))}.bg-rose-500{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity, 1))}.bg-sidebar{--tw-bg-opacity: 1;background-color:oklch(var(--sidebar) / var(--tw-bg-opacity, 1))}.bg-sidebar\/90{background-color:oklch(var(--sidebar) / .9)}.bg-sky-500{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity, 1))}.bg-sky-900\/40{background-color:#0c4a6e66}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-slate-950\/40{background-color:#02061766}.bg-teal-100{--tw-bg-opacity: 1;background-color:rgb(204 251 241 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-violet-100{--tw-bg-opacity: 1;background-color:rgb(237 233 254 / var(--tw-bg-opacity, 1))}.bg-violet-500{--tw-bg-opacity: 1;background-color:rgb(139 92 246 / var(--tw-bg-opacity, 1))}.bg-zinc-100{--tw-bg-opacity: 1;background-color:rgb(244 244 245 / var(--tw-bg-opacity, 1))}.bg-\[length\:12px\]{background-size:12px}.bg-\[right_6px_center\]{background-position:right 6px center}.bg-no-repeat{background-repeat:no-repeat}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace}.font-sans{font-family:Space Grotesk,system-ui,-apple-system,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.tracking-\[0\.08em\]{letter-spacing:.08em}.tracking-\[0\.16em\]{letter-spacing:.16em}.tracking-\[0\.1em\]{letter-spacing:.1em}.tracking-normal{letter-spacing:0em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-accent-foreground{--tw-text-opacity: 1;color:oklch(var(--accent-foreground) / var(--tw-text-opacity, 1))}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-background{--tw-text-opacity: 1;color:oklch(var(--background) / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-400\/60{color:#60a5fa99}.text-destructive{--tw-text-opacity: 1;color:oklch(var(--destructive) / var(--tw-text-opacity, 1))}.text-destructive-foreground{--tw-text-opacity: 1;color:oklch(var(--destructive-foreground) / var(--tw-text-opacity, 1))}.text-emerald-200{--tw-text-opacity: 1;color:rgb(167 243 208 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-emerald-800{--tw-text-opacity: 1;color:rgb(6 95 70 / var(--tw-text-opacity, 1))}.text-foreground{--tw-text-opacity: 1;color:oklch(var(--foreground) / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-muted-foreground{--tw-text-opacity: 1;color:oklch(var(--muted-foreground) / var(--tw-text-opacity, 1))}.text-muted-foreground\/40{color:oklch(var(--muted-foreground) / .4)}.text-muted-foreground\/60{color:oklch(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:oklch(var(--muted-foreground) / .7)}.text-neutral-100{--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity, 1))}.text-neutral-200{--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity, 1))}.text-neutral-300{--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.text-neutral-400{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.text-neutral-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.text-popover-foreground{--tw-text-opacity: 1;color:oklch(var(--popover-foreground) / var(--tw-text-opacity, 1))}.text-primary{--tw-text-opacity: 1;color:oklch(var(--primary) / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-rose-700{--tw-text-opacity: 1;color:rgb(190 18 60 / var(--tw-text-opacity, 1))}.text-rose-800{--tw-text-opacity: 1;color:rgb(159 18 57 / var(--tw-text-opacity, 1))}.text-sky-200{--tw-text-opacity: 1;color:rgb(186 230 253 / var(--tw-text-opacity, 1))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-teal-700{--tw-text-opacity: 1;color:rgb(15 118 110 / var(--tw-text-opacity, 1))}.text-violet-700{--tw-text-opacity: 1;color:rgb(109 40 217 / var(--tw-text-opacity, 1))}.text-violet-800{--tw-text-opacity: 1;color:rgb(91 33 182 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-zinc-700{--tw-text-opacity: 1;color:rgb(63 63 70 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.decoration-dotted{text-decoration-style:dotted}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary\/60{--tw-ring-color: oklch(var(--primary) / .6)}.ring-ring\/30{--tw-ring-color: oklch(var(--ring) / .3)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.placeholder\:text-muted-foreground\/50::-moz-placeholder{color:oklch(var(--muted-foreground) / .5)}.placeholder\:text-muted-foreground\/50::placeholder{color:oklch(var(--muted-foreground) / .5)}.placeholder\:text-muted-foreground\/60::-moz-placeholder{color:oklch(var(--muted-foreground) / .6)}.placeholder\:text-muted-foreground\/60::placeholder{color:oklch(var(--muted-foreground) / .6)}.first\:pt-0:first-child{padding-top:0}.last\:border-0:last-child{border-width:0px}.last\:pb-0:last-child{padding-bottom:0}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-foreground\/20:hover{border-color:oklch(var(--foreground) / .2)}.hover\:border-neutral-500:hover{--tw-border-opacity: 1;border-color:rgb(115 115 115 / var(--tw-border-opacity, 1))}.hover\:border-primary\/40:hover{border-color:oklch(var(--primary) / .4)}.hover\:bg-accent:hover{--tw-bg-opacity: 1;background-color:oklch(var(--accent) / var(--tw-bg-opacity, 1))}.hover\:bg-accent\/50:hover{background-color:oklch(var(--accent) / .5)}.hover\:bg-background:hover{--tw-bg-opacity: 1;background-color:oklch(var(--background) / var(--tw-bg-opacity, 1))}.hover\:bg-background\/80:hover{background-color:oklch(var(--background) / .8)}.hover\:bg-destructive\/10:hover{background-color:oklch(var(--destructive) / .1)}.hover\:bg-destructive\/90:hover{background-color:oklch(var(--destructive) / .9)}.hover\:bg-emerald-50:hover{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.hover\:bg-emerald-900\/60:hover{background-color:#064e3b99}.hover\:bg-foreground\/5:hover{background-color:oklch(var(--foreground) / .05)}.hover\:bg-foreground\/90:hover{background-color:oklch(var(--foreground) / .9)}.hover\:bg-foreground\/\[0\.03\]:hover{background-color:oklch(var(--foreground) / .03)}.hover\:bg-muted:hover{--tw-bg-opacity: 1;background-color:oklch(var(--muted) / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/40:hover{background-color:oklch(var(--muted) / .4)}.hover\:bg-muted\/60:hover{background-color:oklch(var(--muted) / .6)}.hover\:bg-neutral-700:hover{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:oklch(var(--primary) / .1)}.hover\:bg-primary\/20:hover{background-color:oklch(var(--primary) / .2)}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:text-destructive:hover{--tw-text-opacity: 1;color:oklch(var(--destructive) / var(--tw-text-opacity, 1))}.hover\:text-foreground:hover{--tw-text-opacity: 1;color:oklch(var(--foreground) / var(--tw-text-opacity, 1))}.hover\:text-muted-foreground:hover{--tw-text-opacity: 1;color:oklch(var(--muted-foreground) / var(--tw-text-opacity, 1))}.hover\:text-neutral-100:hover{--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity, 1))}.hover\:text-primary:hover{--tw-text-opacity: 1;color:oklch(var(--primary) / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-foreground\/30:focus{border-color:oklch(var(--foreground) / .3)}.focus\:border-foreground\/40:focus{border-color:oklch(var(--foreground) / .4)}.focus\:border-primary:focus{--tw-border-opacity: 1;border-color:oklch(var(--primary) / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring\/30:focus{--tw-ring-color: oklch(var(--ring) / .3)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-primary:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: oklch(var(--primary) / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: oklch(var(--ring) / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color: oklch(var(--ring) / .4)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: oklch(var(--background) / 1)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:underline{text-decoration-line:underline}.group:hover .group-hover\:opacity-100{opacity:1}.data-\[state\=active\]\:bg-background\/20[data-state=active]{background-color:oklch(var(--background) / .2)}.data-\[state\=active\]\:bg-foreground[data-state=active]{--tw-bg-opacity: 1;background-color:oklch(var(--foreground) / var(--tw-bg-opacity, 1))}.data-\[state\=active\]\:text-background[data-state=active]{--tw-text-opacity: 1;color:oklch(var(--background) / var(--tw-text-opacity, 1))}.dark\:border-amber-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(180 83 9 / var(--tw-border-opacity, 1))}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-amber-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(120 53 15 / var(--tw-border-opacity, 1))}.dark\:border-amber-900\/70:is(.dark *){border-color:#78350fb3}.dark\:border-emerald-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(6 78 59 / var(--tw-border-opacity, 1))}.dark\:border-primary\/40:is(.dark *){border-color:oklch(var(--primary) / .4)}.dark\:border-red-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity, 1))}.dark\:border-rose-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(159 18 57 / var(--tw-border-opacity, 1))}.dark\:border-rose-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(136 19 55 / var(--tw-border-opacity, 1))}.dark\:border-slate-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.dark\:border-teal-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 94 89 / var(--tw-border-opacity, 1))}.dark\:border-violet-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(91 33 182 / var(--tw-border-opacity, 1))}.dark\:border-zinc-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(63 63 70 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 26 3 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-950\/20:is(.dark *){background-color:#451a0333}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-amber-950\/40:is(.dark *){background-color:#451a0366}.dark\:bg-emerald-950\/20:is(.dark *){background-color:#022c2233}.dark\:bg-emerald-950\/40:is(.dark *){background-color:#022c2266}.dark\:bg-primary\/10:is(.dark *){background-color:oklch(var(--primary) / .1)}.dark\:bg-red-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-rose-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(76 5 25 / var(--tw-bg-opacity, 1))}.dark\:bg-rose-950\/30:is(.dark *){background-color:#4c05194d}.dark\:bg-rose-950\/40:is(.dark *){background-color:#4c051966}.dark\:bg-slate-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.dark\:bg-teal-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(4 47 46 / var(--tw-bg-opacity, 1))}.dark\:bg-violet-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(46 16 101 / var(--tw-bg-opacity, 1))}.dark\:bg-violet-950\/40:is(.dark *){background-color:#2e106566}.dark\:bg-zinc-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1))}.dark\:text-amber-200:is(.dark *){--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-emerald-300:is(.dark *){--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.dark\:text-emerald-400:is(.dark *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-rose-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 205 211 / var(--tw-text-opacity, 1))}.dark\:text-rose-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 164 175 / var(--tw-text-opacity, 1))}.dark\:text-rose-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity, 1))}.dark\:text-slate-300:is(.dark *){--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.dark\:text-slate-400:is(.dark *){--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.dark\:text-teal-300:is(.dark *){--tw-text-opacity: 1;color:rgb(94 234 212 / var(--tw-text-opacity, 1))}.dark\:text-violet-300:is(.dark *){--tw-text-opacity: 1;color:rgb(196 181 253 / var(--tw-text-opacity, 1))}.dark\:text-violet-400:is(.dark *){--tw-text-opacity: 1;color:rgb(167 139 250 / var(--tw-text-opacity, 1))}.dark\:text-zinc-300:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-emerald-950\/30:hover:is(.dark *){background-color:#022c224d}.dark\:hover\:bg-primary\/20:hover:is(.dark *){background-color:oklch(var(--primary) / .2)}.dark\:hover\:bg-red-950\/30:hover:is(.dark *){background-color:#450a0a4d}@media(min-width:640px){.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}}@media(min-width:768px){.md\:col-span-2{grid-column:span 2 / span 2}.md\:block{display:block}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-wrap{flex-wrap:wrap}.md\:items-center{align-items:center}}@media(min-width:1024px){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[240px_minmax\(0\,1fr\)\]{grid-template-columns:240px minmax(0,1fr)}.lg\:flex-row{flex-direction:row}.lg\:flex-col{flex-direction:column}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}}@media(min-width:1280px){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1\.1fr\)_minmax\(360px\,0\.9fr\)\]{grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr)}.xl\:grid-cols-\[minmax\(0\,1\.2fr\)_minmax\(320px\,0\.8fr\)\]{grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_280px\]{grid-template-columns:minmax(0,1fr) 280px}}@media(min-width:1536px){.\32xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
@@ -1 +0,0 @@
1
- import{s as e,b as r,a,S as s}from"./chunk-NQ4KR5QH-BCPbFf5I.js";import{_ as i}from"./mermaid.core-BpP2keU-.js";import"./chunk-55IACEB6-CaEBUJYu.js";import"./chunk-KX2RTZJC-DqCNEw4h.js";import"./index-D-fepllQ.js";var p={parser:a,get db(){return new s(2)},renderer:r,styles:e,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{p as diagram};
@@ -1,36 +0,0 @@
1
- ---
2
- name: "Plan Versioning"
3
- slug: plan-versioning
4
- description: "When plans change mid-flight, document what changed and why instead of silently rewriting"
5
- when_to_use: "When modifying an existing plan that is already in_progress"
6
- created: "2026-04-02T00:00:00Z"
7
- updated: "2026-04-02T00:00:00Z"
8
- tags:
9
- - planning
10
- - protocol
11
- ---
12
-
13
- # Plan Versioning
14
-
15
- When you need to change a plan that's already `in_progress`:
16
-
17
- 1. Do NOT silently rewrite the plan. Add a revision section:
18
-
19
- ```
20
- ## Revision N -- <date>
21
-
22
- **Reason:** <why the plan changed>
23
-
24
- **What changed:**
25
- - <specific changes>
26
-
27
- **Completed before revision:**
28
- - [x] <tasks already done>
29
- ```
30
-
31
- 2. Then update the task list to reflect the new plan.
32
-
33
- This matters because:
34
- - Handoff notes reference plan steps by description -- silent rewrites break that
35
- - The human reviewing the assignment needs to understand why the approach shifted
36
- - decision-record.md should get a corresponding entry for significant plan changes
@@ -1,30 +0,0 @@
1
- ---
2
- name: "Read Before You Plan"
3
- slug: read-before-plan
4
- description: "Agents must read all project context files before creating or modifying a plan"
5
- when_to_use: "Before creating or modifying any plan file (plan.md, plan-v2.md, ...)"
6
- created: "2026-04-02T00:00:00Z"
7
- updated: "2026-04-20T00:00:00Z"
8
- tags:
9
- - protocol
10
- - planning
11
- ---
12
-
13
- # Read Before You Plan
14
-
15
- Before creating or modifying any plan file (plan.md, plan-v2.md, ...), read these files in order:
16
-
17
- For project-nested assignments:
18
- 1. `manifest.md` -- understand the project structure
19
- 2. `project.md` -- understand the goal and scope
20
- 3. `assignment.md` -- understand your specific task, acceptance criteria, and dependencies. Frontmatter includes `project: <slug> | null` and `type: <classification> | null`.
21
- 4. `progress.md` (if exists) -- reverse-chron log of what has been done on this assignment
22
- 5. `comments.md` (if exists) -- open questions, notes, and feedback
23
- 6. `handoff.md` (if exists) -- understand what previous agents did and learned
24
- 7. `decision-record.md` (if exists) -- understand past decisions and their rationale
25
-
26
- For standalone assignments (at `~/.syntaur/assignments/<uuid>/`), skip `manifest.md` and `project.md` — those only exist for project-nested assignments.
27
-
28
- Do NOT skip files because you think you know what's in them. Context from prior agents is often critical.
29
-
30
- If the assignment has `dependsOn` entries, read those assignments too -- and read **their** `decision-record.md` first. Upstream decisions are binding constraints you must not silently contradict. (The grab-assignment skill auto-loads these.)