syntaur 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dashboard/dist/assets/{_basePickBy-ij-Ukp6s.js → _basePickBy-BQIP1Ca7.js} +1 -1
  2. package/dashboard/dist/assets/{_baseUniq-CZKk9gZR.js → _baseUniq-BnBWRwT7.js} +1 -1
  3. package/dashboard/dist/assets/{arc-C30UbJZB.js → arc-BYWL4eq0.js} +1 -1
  4. package/dashboard/dist/assets/{architectureDiagram-2XIMDMQ5-BDVieGIr.js → architectureDiagram-2XIMDMQ5-CD_SWPSa.js} +1 -1
  5. package/dashboard/dist/assets/{blockDiagram-WCTKOSBZ-DZYY4t9w.js → blockDiagram-WCTKOSBZ-BS1ZbFBU.js} +1 -1
  6. package/dashboard/dist/assets/{c4Diagram-IC4MRINW-B019MXol.js → c4Diagram-IC4MRINW-D99yg-l2.js} +1 -1
  7. package/dashboard/dist/assets/channel-Df6VrFK5.js +1 -0
  8. package/dashboard/dist/assets/{chunk-4BX2VUAB-DrkTwY15.js → chunk-4BX2VUAB-BkN9IORC.js} +1 -1
  9. package/dashboard/dist/assets/{chunk-55IACEB6-mFTAE8DD.js → chunk-55IACEB6-BQPHWefV.js} +1 -1
  10. package/dashboard/dist/assets/{chunk-FMBD7UC4-VgDZaNoS.js → chunk-FMBD7UC4-CNcExMdx.js} +1 -1
  11. package/dashboard/dist/assets/{chunk-JSJVCQXG-C_KXaq-c.js → chunk-JSJVCQXG-LXBmftkC.js} +1 -1
  12. package/dashboard/dist/assets/{chunk-KX2RTZJC-DI-P_pPL.js → chunk-KX2RTZJC-Tqi7zNqq.js} +1 -1
  13. package/dashboard/dist/assets/{chunk-NQ4KR5QH-TgYAsxTk.js → chunk-NQ4KR5QH-DkMbx-rW.js} +1 -1
  14. package/dashboard/dist/assets/{chunk-QZHKN3VN-Drfv_VpM.js → chunk-QZHKN3VN-BlrRCfkJ.js} +1 -1
  15. package/dashboard/dist/assets/{chunk-WL4C6EOR-CpLwvo_U.js → chunk-WL4C6EOR-of3XBzMu.js} +1 -1
  16. package/dashboard/dist/assets/classDiagram-VBA2DB6C-CyfzumTY.js +1 -0
  17. package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-CyfzumTY.js +1 -0
  18. package/dashboard/dist/assets/clone-CMs4Aqrx.js +1 -0
  19. package/dashboard/dist/assets/{cose-bilkent-S5V4N54A-CkKtF37m.js → cose-bilkent-S5V4N54A-BlIiyO76.js} +1 -1
  20. package/dashboard/dist/assets/{dagre-KLK3FWXG-BBlY_FL3.js → dagre-KLK3FWXG-CYQjSI9N.js} +1 -1
  21. package/dashboard/dist/assets/{diagram-E7M64L7V-DLsFDLHm.js → diagram-E7M64L7V-BZHzTKct.js} +1 -1
  22. package/dashboard/dist/assets/{diagram-IFDJBPK2--sb7diMG.js → diagram-IFDJBPK2-kMP3WqBV.js} +1 -1
  23. package/dashboard/dist/assets/{diagram-P4PSJMXO-D2LuEWVt.js → diagram-P4PSJMXO-BWSHyFOv.js} +1 -1
  24. package/dashboard/dist/assets/{erDiagram-INFDFZHY-C1BEeili.js → erDiagram-INFDFZHY-B5HrvsPP.js} +1 -1
  25. package/dashboard/dist/assets/{flowDiagram-PKNHOUZH-BpbapQbU.js → flowDiagram-PKNHOUZH-Dm4ewP7w.js} +1 -1
  26. package/dashboard/dist/assets/{ganttDiagram-A5KZAMGK-Io60qUuG.js → ganttDiagram-A5KZAMGK-DB3k27zu.js} +1 -1
  27. package/dashboard/dist/assets/{gitGraphDiagram-K3NZZRJ6-oemlGgRh.js → gitGraphDiagram-K3NZZRJ6-G7y6Ey-m.js} +1 -1
  28. package/dashboard/dist/assets/{graph-BZb-lGfH.js → graph-CaM4i6vq.js} +1 -1
  29. package/dashboard/dist/assets/index-B4QMu-Oq.css +1 -0
  30. package/dashboard/dist/assets/index-BBWZjPBC.js +495 -0
  31. package/dashboard/dist/assets/{infoDiagram-LFFYTUFH-Ca4mwnZF.js → infoDiagram-LFFYTUFH-JNTUbTjg.js} +1 -1
  32. package/dashboard/dist/assets/{ishikawaDiagram-PHBUUO56-9zuQ8y8W.js → ishikawaDiagram-PHBUUO56-BZJt1ht8.js} +1 -1
  33. package/dashboard/dist/assets/{journeyDiagram-4ABVD52K-OdeeOdMx.js → journeyDiagram-4ABVD52K-DPcqvl9A.js} +1 -1
  34. package/dashboard/dist/assets/{kanban-definition-K7BYSVSG-Cie4JtFn.js → kanban-definition-K7BYSVSG-D1D7AuOV.js} +1 -1
  35. package/dashboard/dist/assets/{layout-Bmx2mvFv.js → layout-BTOh3EDT.js} +1 -1
  36. package/dashboard/dist/assets/{linear-CW6K_-MX.js → linear-MbCpC_Cg.js} +1 -1
  37. package/dashboard/dist/assets/{mermaid.core-DmfO6BgK.js → mermaid.core-CYbhqlNy.js} +4 -4
  38. package/dashboard/dist/assets/{mindmap-definition-YRQLILUH-L6b3vG79.js → mindmap-definition-YRQLILUH-CwYCISFH.js} +1 -1
  39. package/dashboard/dist/assets/{pieDiagram-SKSYHLDU-CkHTCIWg.js → pieDiagram-SKSYHLDU-5qfZ73SG.js} +1 -1
  40. package/dashboard/dist/assets/{quadrantDiagram-337W2JSQ-B9MqhhIC.js → quadrantDiagram-337W2JSQ-WI8y1sQ_.js} +1 -1
  41. package/dashboard/dist/assets/{requirementDiagram-Z7DCOOCP-CyHAfXCK.js → requirementDiagram-Z7DCOOCP-BFlD0ZTS.js} +1 -1
  42. package/dashboard/dist/assets/{sankeyDiagram-WA2Y5GQK-DHNzGGyE.js → sankeyDiagram-WA2Y5GQK-Bdckv1Se.js} +1 -1
  43. package/dashboard/dist/assets/{sequenceDiagram-2WXFIKYE-BVvcJkrx.js → sequenceDiagram-2WXFIKYE-DgzxKAlZ.js} +1 -1
  44. package/dashboard/dist/assets/{stateDiagram-RAJIS63D-CZ2cknh7.js → stateDiagram-RAJIS63D-DO4OXahC.js} +1 -1
  45. package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-o8bgX-J3.js +1 -0
  46. package/dashboard/dist/assets/{timeline-definition-YZTLITO2-BXUtlVyd.js → timeline-definition-YZTLITO2-BBB01JWw.js} +1 -1
  47. package/dashboard/dist/assets/{treemap-KZPCXAKY-Dgi-hMKM.js → treemap-KZPCXAKY-Dr0jb8op.js} +1 -1
  48. package/dashboard/dist/assets/{vennDiagram-LZ73GAT5-C9zGrrUQ.js → vennDiagram-LZ73GAT5-D40KFl2o.js} +1 -1
  49. package/dashboard/dist/assets/{xychartDiagram-JWTSCODW-Dq71BUtc.js → xychartDiagram-JWTSCODW-DBUmWQfT.js} +1 -1
  50. package/dashboard/dist/index.html +2 -2
  51. package/dist/dashboard/server.js +2380 -1263
  52. package/dist/dashboard/server.js.map +1 -1
  53. package/dist/index.js +5601 -4684
  54. package/dist/index.js.map +1 -1
  55. package/package.json +1 -1
  56. package/vendor/syntaur-skills/README.md +2 -0
  57. package/vendor/syntaur-skills/skills/clear-assignment/SKILL.md +111 -0
  58. package/vendor/syntaur-skills/skills/manage-statuses/SKILL.md +72 -0
  59. package/dashboard/dist/assets/channel-DH4gshIt.js +0 -1
  60. package/dashboard/dist/assets/classDiagram-VBA2DB6C-emsfh8H4.js +0 -1
  61. package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-emsfh8H4.js +0 -1
  62. package/dashboard/dist/assets/clone-gdeRwgBN.js +0 -1
  63. package/dashboard/dist/assets/index-BSVCsfvM.css +0 -1
  64. package/dashboard/dist/assets/index-CXWVuGs-.js +0 -481
  65. package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-C4CPervD.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "syntaur",
3
- "version": "0.5.2",
3
+ "version": "0.6.0",
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": {
@@ -43,8 +43,10 @@ npx skills add prong-horn/syntaur-skills --skill syntaur-protocol
43
43
  | `grab-assignment` | Discover and claim a pending assignment from a project. Sets up working context. |
44
44
  | `plan-assignment` | Create a detailed implementation plan for the current assignment. |
45
45
  | `complete-assignment` | Write a handoff and transition an assignment to review or completed. |
46
+ | `clear-assignment` | Drop the active assignment from session context without transitioning lifecycle state. Inverse of `grab-assignment`. |
46
47
  | `create-project` | Create a new project with full scaffolding (manifest + indexes + resources + memories). |
47
48
  | `create-assignment` | Create a new assignment within a project (or as a standalone one-off at `~/.syntaur/assignments/<uuid>/`). |
49
+ | `manage-statuses` | List / add / rename / remove / reorder custom assignment statuses (and transitions); writes to `~/.syntaur/config.md`. |
48
50
 
49
51
  ## How it works
50
52
 
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: clear-assignment
3
+ description: >-
4
+ Clear the active Syntaur assignment from the current session without
5
+ transitioning lifecycle state. Use when the user wants to drop, release,
6
+ unclaim, abandon, or clear assignment context — e.g., "clear my assignment",
7
+ "drop this assignment", "release context", "unclaim this", "I'm not actually
8
+ working on this anymore". Does not mark the assignment complete or failed.
9
+ license: MIT
10
+ metadata:
11
+ author: prong-horn
12
+ version: "1.0.0"
13
+ ---
14
+
15
+ # Clear Assignment
16
+
17
+ Drop the active assignment binding from the current workspace. The assignment itself is left untouched in `~/.syntaur/projects/.../assignments/` — only the local `.syntaur/context.json` pointer is cleared so the session is no longer scoped to it.
18
+
19
+ This is the inverse of `grab-assignment`. Unlike `complete-assignment`, it does **not** transition lifecycle state, write a handoff, or close out the work. Use it when:
20
+
21
+ - The user grabbed the wrong assignment.
22
+ - The user wants to switch focus without finishing or formally reviewing the current one.
23
+ - Session context was set up earlier and is now stale.
24
+
25
+ If the assignment is actually done, use `complete-assignment` instead so a handoff is recorded and the lifecycle state advances.
26
+
27
+ ## Input
28
+
29
+ Optional flags from the user:
30
+
31
+ - `--keep-session` — preserve `sessionId` / `transcriptPath` fields in `context.json` (just strip the assignment fields). Default: full delete.
32
+ - `--unassign` — also run `syntaur unassign <slug> --project <project>` so the assignment is no longer claimed by this agent. Default: leave the claim in place (only the local context is cleared). Skip this flag if the CLI does not support `unassign` in the installed version — fall back to leaving the claim alone and tell the user.
33
+
34
+ ## Step 1: Load Context
35
+
36
+ Read `.syntaur/context.json` from the current working directory.
37
+
38
+ - If the file does not exist, tell the user: "No active assignment context to clear." and stop.
39
+ - If the file exists but contains only session fields (`sessionId`, `transcriptPath`) and no `projectSlug` / `assignmentSlug`, tell the user: "No active assignment is bound — only a platform session record exists. Nothing to clear." and stop (unless they explicitly ask to wipe the session record too).
40
+
41
+ Otherwise extract: `projectSlug`, `assignmentSlug`, `assignmentDir`, `title`.
42
+
43
+ ## Step 2: Confirm with the User
44
+
45
+ Show the user what is about to be cleared and confirm before touching anything:
46
+
47
+ > About to clear active assignment context:
48
+ > - Assignment: `<assignmentSlug>` — <title>
49
+ > - Project: `<projectSlug>` (or "standalone" if null)
50
+ > - The assignment itself will NOT be transitioned. Its lifecycle status stays as-is.
51
+ > - Proceed?
52
+
53
+ Stop if the user says no.
54
+
55
+ If lifecycle status is `in_progress` and the user has not passed `--complete-instead`, also note:
56
+
57
+ > Note: this assignment is currently `in_progress`. Clearing context does not change that. If you actually finished it, run `complete-assignment` instead so a handoff is recorded.
58
+
59
+ ## Step 3 (optional): Unassign
60
+
61
+ If the user passed `--unassign`, run:
62
+
63
+ ```bash
64
+ syntaur unassign <assignment-slug> --project <project-slug>
65
+ ```
66
+
67
+ For standalone assignments use the UUID (the folder name) in place of the slug, and omit `--project`.
68
+
69
+ If the CLI rejects the command (older versions may not implement `unassign`), report the error and continue — the local context clear in Step 4 still happens.
70
+
71
+ ## Step 4: Clear the Context File
72
+
73
+ Default behavior — delete the file entirely:
74
+
75
+ ```bash
76
+ rm .syntaur/context.json
77
+ ```
78
+
79
+ If the user passed `--keep-session`, preserve session fields and strip everything else instead:
80
+
81
+ ```bash
82
+ jq '{sessionId, transcriptPath} | with_entries(select(.value != null))' \
83
+ .syntaur/context.json > .syntaur/context.json.tmp \
84
+ && mv .syntaur/context.json.tmp .syntaur/context.json
85
+ ```
86
+
87
+ If the resulting file would be empty (`{}`), delete it instead of leaving an empty stub.
88
+
89
+ Do not delete the `.syntaur/` directory itself — other tooling may use it.
90
+
91
+ ## Step 5: Close Session (optional)
92
+
93
+ If the original `context.json` included a `sessionId` and the Syntaur dashboard is running, mark the session as cleared so the dashboard does not keep showing it as active:
94
+
95
+ ```bash
96
+ curl -s -X PATCH "http://localhost:$(cat ~/.syntaur/dashboard-port 2>/dev/null || echo 4800)/api/agent-sessions/<session-id>/status" \
97
+ -H "Content-Type: application/json" \
98
+ -d '{"status":"cleared","projectSlug":"<project-slug>"}'
99
+ ```
100
+
101
+ If this fails (e.g., dashboard not running, endpoint not present in the installed version), it is non-critical — silently continue.
102
+
103
+ Skip this step entirely when `--keep-session` is set.
104
+
105
+ ## Step 6: Report to User
106
+
107
+ Summarize:
108
+ - Which assignment was cleared (slug + title).
109
+ - That its lifecycle status is unchanged (and what that status currently is, if known from frontmatter).
110
+ - Whether the assignment was unassigned via the CLI or the claim was left in place.
111
+ - Suggested next step: `grab-assignment` to claim a different one, or `complete-assignment` if the previous one was actually finished.
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: manage-statuses
3
+ description: >-
4
+ Manage custom assignment statuses and transitions in Syntaur. Use when the
5
+ user wants to add a status, customize a workflow stage, rename a status,
6
+ remove or reorder statuses, define a custom transition, change which states
7
+ are terminal (the "done state"), or otherwise edit the `statuses:` block in
8
+ `~/.syntaur/config.md`. Triggers on phrases like "add a status", "custom
9
+ status", "rename a status", "workflow stage", "change my workflow",
10
+ "terminal status", "done state".
11
+ license: MIT
12
+ metadata:
13
+ author: prong-horn
14
+ version: "1.0.0"
15
+ ---
16
+
17
+ # Manage Statuses
18
+
19
+ Customize Syntaur's assignment-status workflow via the `syntaur status` CLI. The CLI writes to the same `statuses:` block in `~/.syntaur/config.md` that the dashboard Settings page edits — so CLI and dashboard edits stay in sync.
20
+
21
+ The runtime is **all-or-nothing**: once `~/.syntaur/config.md` has a `statuses:` block, the built-in defaults (`pending`, `in_progress`, `blocked`, `review`, `completed`, `failed`) are NOT merged. `syntaur status init` materializes those defaults explicitly so the user has a starting point to customize. `syntaur status reset` removes the block to revert.
22
+
23
+ ## Input
24
+
25
+ The user usually describes the change in free-form prose ("add a needs-design status after pending", "rename in_progress to working", "remove blocked", "make completed not terminal"). Map their intent to a subcommand:
26
+
27
+ | Subcommand | When to use |
28
+ |-----------|-------------|
29
+ | `syntaur status list [--json]` | Show the current set, with `source: config | default` markers. Always run this first when the user asks "what statuses do I have?" |
30
+ | `syntaur status init [--force]` | Materialize the built-in defaults explicitly. Run before any custom edit if `list` shows `source: default` for everything. |
31
+ | `syntaur status reset [--force]` | Remove the `statuses:` block and revert to implicit defaults. |
32
+ | `syntaur status add <id> --label <label> [--color <hex>] [--icon <name>] [--description <text>] [--terminal] [--after <id> | --before <id> | --at-end]` | Append a new status. Position flags are mutually exclusive. |
33
+ | `syntaur status set --id <id> [...]` | Mutate metadata on an existing status without renaming. `--terminal true|false` (literal strings). |
34
+ | `syntaur status reorder <id,id,...>` | Replace the order array. CSV must be a permutation of current ids — no drops, no extras. |
35
+ | `syntaur status remove <id> [--force]` | Remove a status. Without `--force`, errors if any assignment references it; lists offenders. With `--force`, also prunes `order` and `transitions[i]` whose `from === <id>` or `to === <id>`. |
36
+ | `syntaur status rename <id> --to <new-id> [--label <label>]` | Rename a status id. **Atomic** rewrite across `config.md` + every affected `assignment.md`. Without `--label`, keeps the original label. |
37
+ | `syntaur status transition add --from <id> --command <cmd> --to <id> [--label <label>] [--requires-reason]` | Define a custom transition. |
38
+ | `syntaur status transition remove --from <id> --command <cmd>` | Drop a custom transition. |
39
+
40
+ Every mutating subcommand supports `--dry-run`, which prints a unified diff of the would-be `statuses:` block change (and, for `rename`, a per-file frontmatter diff for each affected `assignment.md`) and exits without writing.
41
+
42
+ ## Step 1: Determine intent → pick subcommand
43
+
44
+ Read the user's request and choose the subcommand. If ambiguous, ask. If the user says "make my workflow look like X", run `syntaur status list` first, present what's there, and confirm what they actually want changed.
45
+
46
+ If the user is making a destructive change (`remove`, `rename`, `reset`), default to running with `--dry-run` first and showing the diff, then asking the user to confirm before re-running without `--dry-run`.
47
+
48
+ ## Step 2: Run the CLI
49
+
50
+ Build and run the chosen `syntaur status ...` invocation. Quote labels and descriptions that contain spaces. Use the literal strings `true`/`false` for `--terminal` on the `set` subcommand.
51
+
52
+ If the user is on a fresh `~/.syntaur/config.md` (no `statuses:` block) and wants to make any change other than `init`/`reset`, run `syntaur status init` first so subsequent `add` / `set` / `reorder` / `rename` / `remove` operate on an explicit set.
53
+
54
+ ## Step 3: Verify with `syntaur status list`
55
+
56
+ After every mutating subcommand, run `syntaur status list` (or `--json` for machine consumption) and confirm the change took effect. Report back to the user with the new state.
57
+
58
+ ## Step 4: Guide next steps
59
+
60
+ - **If the dashboard is running** (`syntaur dashboard`), tell the user to restart it. The dashboard caches `StatusConfig` per-process and CLI mutations cannot reach a separate Node process. The dashboard's own writes invalidate its cache automatically; CLI writes don't.
61
+ - **After a `rename`,** every assignment that referenced the old id has been rewritten in-place. Mention this to the user — git will show diffs in many `assignment.md` files. They are intentional.
62
+ - **After a `remove --force`,** the affected assignments now reference an undefined status. `syntaur doctor` will flag them as invalid. Suggest the user run `syntaur doctor` and either re-add the status (`syntaur status add ...`) or edit each frontmatter to a valid id.
63
+ - **After `transition add`,** the dashboard's transition buttons reflect the new transition only after the cache invalidation above.
64
+
65
+ ## Safety notes
66
+
67
+ - **`remove` is destructive.** Without `--force` it refuses if any assignment references the id. Don't suggest `--force` without first running `syntaur status remove <id>` (no force) so the user sees the affected list.
68
+ - **`rename` rewrites many files.** It edits `config.md` AND every affected `assignment.md` in a single atomic transaction (with rollback if any write fails partway). Always run `--dry-run` first on a non-trivial codebase so the user sees the per-file diff.
69
+ - **`terminal: true` is load-bearing.** Terminal statuses affect dashboard progress bars and dependency-satisfaction logic — an assignment with a terminal status counts as "done" for downstream `dependsOn` checks and project-rollup status. Don't toggle this on `pending`-style states without thinking.
70
+ - **`init --force` overwrites a custom block.** Use `reset` first if the user wants a clean slate, OR confirm before passing `--force` if they have unsaved customizations.
71
+ - **Concurrency.** `rename`'s buffer-write-rollback strategy assumes no concurrent writers. Tell the user to close the dashboard / pause other agents during a rename.
72
+ - **`SYNTAUR_HOME` precedence.** If the user has `SYNTAUR_HOME` set, the CLI writes there instead of `~/.syntaur`. Mirror their environment.
@@ -1 +0,0 @@
1
- import{aq as o,ar as n}from"./mermaid.core-DmfO6BgK.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-CpLwvo_U.js";import{_ as i}from"./mermaid.core-DmfO6BgK.js";import"./chunk-FMBD7UC4-VgDZaNoS.js";import"./chunk-JSJVCQXG-C_KXaq-c.js";import"./chunk-55IACEB6-mFTAE8DD.js";import"./chunk-KX2RTZJC-DI-P_pPL.js";import"./index-CXWVuGs-.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-CpLwvo_U.js";import{_ as i}from"./mermaid.core-DmfO6BgK.js";import"./chunk-FMBD7UC4-VgDZaNoS.js";import"./chunk-JSJVCQXG-C_KXaq-c.js";import"./chunk-55IACEB6-mFTAE8DD.js";import"./chunk-KX2RTZJC-DI-P_pPL.js";import"./index-CXWVuGs-.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-CZKk9gZR.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: 70% .18 290;--primary-dim: 50% .12 290;--primary-foreground: 98% 0 0;--secondary: 80% .14 75;--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: 70% .18 290;--sidebar: 96% .006 280;--accent-coral: 72% .17 15;--accent-coral-dim: 50% .12 15;--accent-teal: 72% .14 185;--accent-teal-dim: 50% .1 185;--accent-amber: 82% .16 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-dim: 50% .12 290;--primary-foreground: 8% 0 0;--secondary: 80% .14 75;--secondary-foreground: 18% .01 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-coral-dim: 50% .12 15;--accent-teal: 72% .14 185;--accent-teal-dim: 50% .1 185;--accent-amber: 82% .16 75;--radius: .5rem}:root[data-theme=ocean],.dark[data-theme=ocean]{--primary: 65% .15 230;--primary-dim: 45% .1 230;--secondary: 75% .1 210;--ring: 65% .15 230;--accent-coral: 70% .15 350;--accent-coral-dim: 48% .1 350;--accent-teal: 75% .13 200;--accent-teal-dim: 52% .1 200;--accent-amber: 82% .14 90}:root[data-theme=forest],.dark[data-theme=forest]{--primary: 60% .14 150;--primary-dim: 42% .1 150;--secondary: 78% .1 130;--ring: 60% .14 150;--accent-coral: 70% .16 20;--accent-coral-dim: 48% .11 20;--accent-teal: 70% .13 175;--accent-teal-dim: 48% .1 175;--accent-amber: 80% .14 95}:root[data-theme=sunset],.dark[data-theme=sunset]{--primary: 68% .18 30;--primary-dim: 48% .12 30;--secondary: 78% .14 50;--ring: 68% .18 30;--accent-coral: 72% .18 10;--accent-coral-dim: 50% .13 10;--accent-teal: 70% .12 180;--accent-teal-dim: 48% .09 180;--accent-amber: 84% .17 65}*{--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}.bottom-3{bottom:.75rem}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:.75rem}.right-0{right:0}.right-3{right:.75rem}.top-0{top:0}.top-1\/2{top:50%}.top-12{top:3rem}.top-16{top:4rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.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))}.translate-x-\[18px\]{--tw-translate-x: 18px;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-\[2px\]{--tw-translate-x: 2px;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-emerald-500\/60{border-color:#10b98199}.border-foreground\/40{border-color:oklch(var(--foreground) / .4)}.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{--tw-border-opacity: 1;border-color:oklch(var(--primary) / 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-card\/95{background-color:oklch(var(--card) / .95)}.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-destructive\/10{background-color:oklch(var(--destructive) / .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-500\/80{background-color:#10b981cc}.bg-emerald-900\/40{background-color:#064e3b66}.bg-foreground{--tw-bg-opacity: 1;background-color:oklch(var(--foreground) / var(--tw-bg-opacity, 1))}.bg-foreground\/15{background-color:oklch(var(--foreground) / .15)}.bg-foreground\/70{background-color:oklch(var(--foreground) / .7)}.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-20{padding-right:5rem}.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-primary-foreground{--tw-text-opacity: 1;color:oklch(var(--primary-foreground) / 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-100{opacity:1}.opacity-40{opacity:.4}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.opacity-75{opacity:.75}.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-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(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)}.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-border\/60{--tw-ring-color: oklch(var(--border) / .6)}.ring-primary\/40{--tw-ring-color: oklch(var(--primary) / .4)}.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}.disabled\:opacity-60:disabled{opacity:.6}.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-4{grid-template-columns:repeat(4,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))}}