@holdpoint/cli 0.1.0-alpha.16 → 0.1.0-alpha.18

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.
@@ -0,0 +1,239 @@
1
+ version: 1
2
+
3
+ # Holdpoint default checks — single source of truth across all stacks.
4
+ # Every check below is either universally relevant (e.g. git-commit) or
5
+ # gated by `when:` (path-based scope) AND/OR `conditionId:` (file
6
+ # existence in the repo). Add a new stack by adding a condition that
7
+ # detects its manifest file, then gating stack-specific checks on it —
8
+ # don't fork this file.
9
+
10
+ context:
11
+ guides: {}
12
+
13
+ session_context_files:
14
+ - MASTER_PROMPT.md
15
+
16
+ conditions:
17
+ - id: is-node
18
+ operator: file_exists
19
+ path: package.json
20
+ - id: is-python
21
+ operator: file_exists
22
+ path: pyproject.toml
23
+ - id: is-go
24
+ operator: file_exists
25
+ path: go.mod
26
+ - id: is-rust
27
+ operator: file_exists
28
+ path: Cargo.toml
29
+ - id: has-dockerfile
30
+ operator: file_exists
31
+ path: Dockerfile
32
+ - id: has-openapi
33
+ operator: file_exists
34
+ path: openapi.yaml
35
+ - id: has-playwright
36
+ operator: file_exists
37
+ path: playwright.config.ts
38
+ - id: has-changesets
39
+ operator: file_exists
40
+ path: .changeset/config.json
41
+ - id: has-lint-script
42
+ operator: file_contains
43
+ path: package.json
44
+ contains: '"lint"'
45
+ - id: has-build-script
46
+ operator: file_contains
47
+ path: package.json
48
+ contains: '"build"'
49
+ - id: has-test-script
50
+ operator: file_contains
51
+ path: package.json
52
+ contains: '"test"'
53
+
54
+ patterns:
55
+ changelog-files: "(^|/)CHANGELOG\\.md$"
56
+
57
+ checks:
58
+ # ── Node / TypeScript / JavaScript ─────────────────────────────────
59
+ - id: node-lint
60
+ label: "Lint (Node) — no warnings"
61
+ conditionId: has-lint-script
62
+ cmd: "pnpm lint --max-warnings 0"
63
+ - id: node-typecheck
64
+ label: "TypeScript type check"
65
+ conditionId: is-node
66
+ cmd: "pnpm typecheck"
67
+ - id: node-test
68
+ label: "Unit tests (Node)"
69
+ conditionId: has-test-script
70
+ cmd: "pnpm test --run"
71
+ - id: node-build
72
+ label: "Production build (Node)"
73
+ conditionId: has-build-script
74
+ when: backend
75
+ cmd: "pnpm build"
76
+ - id: jsdoc
77
+ label: "JSDoc on changed public functions"
78
+ conditionId: is-node
79
+ when: backend
80
+ prompt: >
81
+ Ensure all changed public functions, classes, and module exports
82
+ have accurate JSDoc (description + @param + @returns).
83
+
84
+ # ── Python ─────────────────────────────────────────────────────────
85
+ - id: py-lint
86
+ label: "Ruff (Python lint)"
87
+ conditionId: is-python
88
+ when: python
89
+ cmd: "ruff check ."
90
+ - id: py-typecheck
91
+ label: "Mypy (Python type check)"
92
+ conditionId: is-python
93
+ when: python
94
+ cmd: "mypy . --ignore-missing-imports"
95
+ - id: py-test
96
+ label: "pytest"
97
+ conditionId: is-python
98
+ when: python
99
+ cmd: "pytest --tb=short -q"
100
+ - id: py-docstrings
101
+ label: "Docstrings on changed Python functions"
102
+ conditionId: is-python
103
+ when: python
104
+ prompt: >
105
+ Ensure changed public functions and classes have PEP-257 docstrings.
106
+ - id: py-type-hints
107
+ label: "Type hints on new Python functions"
108
+ conditionId: is-python
109
+ when: python
110
+ prompt: >
111
+ Confirm new functions have full type annotations on parameters
112
+ and return values.
113
+
114
+ # ── Go ─────────────────────────────────────────────────────────────
115
+ - id: go-build
116
+ label: "go build — no compilation errors"
117
+ conditionId: is-go
118
+ when: go
119
+ cmd: "go build ./..."
120
+ - id: go-vet
121
+ label: "go vet — no suspicious constructs"
122
+ conditionId: is-go
123
+ when: go
124
+ cmd: "go vet ./..."
125
+ - id: go-test
126
+ label: "go test"
127
+ conditionId: is-go
128
+ when: go
129
+ cmd: "go test ./..."
130
+ - id: godoc
131
+ label: "GoDoc on exported symbols"
132
+ conditionId: is-go
133
+ when: go
134
+ prompt: >
135
+ Exported functions, types, methods, and packages have GoDoc
136
+ starting with the symbol name.
137
+
138
+ # ── Rust ───────────────────────────────────────────────────────────
139
+ - id: rust-build
140
+ label: "cargo build"
141
+ conditionId: is-rust
142
+ when: rust
143
+ cmd: "cargo build"
144
+ - id: rust-clippy
145
+ label: "Clippy — strict"
146
+ conditionId: is-rust
147
+ when: rust
148
+ cmd: "cargo clippy --all-targets -- -D warnings"
149
+ - id: rust-test
150
+ label: "cargo test"
151
+ conditionId: is-rust
152
+ when: rust
153
+ cmd: "cargo test"
154
+
155
+ # ── Frontend ───────────────────────────────────────────────────────
156
+ - id: visual-regression
157
+ label: "Visual regression check"
158
+ conditionId: has-playwright
159
+ when: frontend
160
+ prompt: >
161
+ Run `pnpm playwright test` for UI changes. Review screenshots
162
+ at 1280px, 768px, and 375px breakpoints.
163
+ - id: i18n
164
+ label: "i18n — no hardcoded user-facing strings"
165
+ when: frontend
166
+ prompt: >
167
+ User-visible text is wrapped in the t() translation function
168
+ (or project equivalent) with corresponding locale entries.
169
+
170
+ # ── Backend / API ──────────────────────────────────────────────────
171
+ - id: openapi-updated
172
+ label: "OpenAPI spec updated for API changes"
173
+ conditionId: has-openapi
174
+ when: backend
175
+ prompt: >
176
+ If API routes changed, confirm openapi.yaml has been updated.
177
+
178
+ # ── Database ───────────────────────────────────────────────────────
179
+ - id: db-migrations
180
+ label: "Database migration for schema changes"
181
+ when: database
182
+ prompt: >
183
+ If schema files changed, ensure a migration was generated and
184
+ committed (prisma migrate dev, alembic revision, rails db:migrate).
185
+
186
+ # ── Infra ──────────────────────────────────────────────────────────
187
+ - id: dockerfile-best-practices
188
+ label: "Dockerfile best practices"
189
+ conditionId: has-dockerfile
190
+ when: infra
191
+ prompt: >
192
+ Confirm multi-stage build, non-root USER, pinned base image,
193
+ minimal layers.
194
+
195
+ # ── Documentation (universal) ──────────────────────────────────────
196
+ - id: readme-sync
197
+ label: "Update README.md for user-facing changes"
198
+ prompt: >
199
+ If user-facing functionality changed (CLI commands, config,
200
+ public APIs, features), update README.md.
201
+ - id: changelog-changeset
202
+ label: "Use changesets instead of manual changelog edits"
203
+ conditionId: has-changesets
204
+ when: changelog-files
205
+ prompt: >
206
+ If you changed any CHANGELOG.md file, move the release note into a
207
+ .changeset/*.md entry and let release automation update changelogs.
208
+ Keep manual changelog edits only when explicitly requested or for
209
+ non-release historical notes, and state that reason before finishing.
210
+ - id: git-workflow
211
+ label: "Use the right git workflow"
212
+ prompt: >
213
+ Choose the least-disruptive git workflow: use branch + PR for requested
214
+ feature branches or protected-main work; for small local fixes, commit on
215
+ the current branch without opening a PR unless asked; if already on a
216
+ feature branch, keep committing there instead of creating another branch.
217
+ Push only when a PR, remote review, CI run, or handoff needs it; otherwise
218
+ leave the commit local and report the branch/commit.
219
+
220
+ # ── Code hygiene (universal) ───────────────────────────────────────
221
+ - id: no-todos
222
+ label: "No TODO/FIXME left in changed code"
223
+ cmd: >-
224
+ ! grep -rEn "TODO|FIXME|HACK|XXX" --include="*.ts" --include="*.tsx"
225
+ --include="*.js" --include="*.jsx" --include="*.py" --include="*.go"
226
+ --include="*.rs" .
227
+
228
+ # ── Holdpoint-internal ─────────────────────────────────────────────
229
+ - id: holdpoint-suggest
230
+ label: "Suggest checks when project structure changes"
231
+ when: structural
232
+ cmd: "node_modules/.bin/holdpoint suggest"
233
+ - id: changeset
234
+ label: "Changeset for package changes"
235
+ conditionId: has-changesets
236
+ cmd: "node_modules/.bin/holdpoint require-changeset --staged"
237
+ - id: git-commit
238
+ label: "Commit all changes before finishing"
239
+ cmd: 'git rev-parse --is-inside-work-tree >/dev/null 2>&1 || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
package/package.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "name": "@holdpoint/cli",
3
- "version": "0.1.0-alpha.16",
3
+ "version": "0.1.0-alpha.18",
4
4
  "publishConfig": {
5
- "access": "public",
6
- "tag": "alpha"
5
+ "access": "public"
7
6
  },
8
7
  "description": "Holdpoint CLI — enforce deterministic eval checkpoints on AI coding agents",
9
8
  "homepage": "https://holdpoint.dev",
@@ -47,27 +46,26 @@
47
46
  ],
48
47
  "dependencies": {
49
48
  "chalk": "^5.3.0",
50
- "commander": "^12.1.0",
51
- "ora": "^8.1.1",
52
- "@holdpoint/live-daemon": "0.1.0-alpha.2",
53
- "@holdpoint/sdk": "0.1.0-alpha.2",
54
- "@holdpoint/engine-claude": "0.1.0-alpha.11",
55
- "@holdpoint/engine-codex": "0.1.0-alpha.12",
56
- "@holdpoint/engine-copilot": "0.1.0-alpha.12",
57
- "@holdpoint/engine-cursor": "0.1.0-alpha.10",
58
- "@holdpoint/live-protocol": "0.1.0-alpha.2",
59
- "@holdpoint/types": "0.1.0-alpha.7",
60
- "@holdpoint/yaml-core": "0.1.0-alpha.8"
49
+ "commander": "^14.0.3",
50
+ "ora": "^9.4.0",
51
+ "@holdpoint/live-daemon": "0.1.0-alpha.4",
52
+ "@holdpoint/live-protocol": "0.1.0-alpha.4",
53
+ "@holdpoint/engine-claude": "0.1.0-alpha.13",
54
+ "@holdpoint/sdk": "0.1.0-alpha.4",
55
+ "@holdpoint/engine-codex": "0.1.0-alpha.14",
56
+ "@holdpoint/engine-copilot": "0.1.0-alpha.14",
57
+ "@holdpoint/engine-cursor": "0.1.0-alpha.12",
58
+ "@holdpoint/types": "0.1.0-alpha.9",
59
+ "@holdpoint/yaml-core": "0.1.0-alpha.10"
61
60
  },
62
61
  "devDependencies": {
63
- "@types/node": "^22.10.2",
62
+ "@types/node": "^25.9.1",
64
63
  "tsup": "^8.3.5",
65
- "typescript": "^5.7.2",
66
- "vitest": "^2.1.8",
67
- "@holdpoint/builder": "0.1.1-alpha.5"
64
+ "typescript": "^6.0.3",
65
+ "vitest": "^4.1.7"
68
66
  },
69
67
  "scripts": {
70
- "build": "tsup && node scripts/copy-builder.mjs",
68
+ "build": "tsup",
71
69
  "typecheck": "tsc --noEmit",
72
70
  "test": "vitest run --passWithNoTests",
73
71
  "dev": "tsup --watch",
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-lime-300:oklch(89.7% .196 126.665);--color-lime-400:oklch(84.1% .238 128.85);--color-lime-500:oklch(76.8% .233 130.85);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-500:oklch(58.5% .233 277.117);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-pink-300:oklch(82.3% .12 346.018);--color-pink-400:oklch(71.8% .202 349.761);--color-pink-500:oklch(65.6% .241 354.308);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-500:oklch(55.4% .046 257.417);--color-stone-300:oklch(86.9% .005 56.366);--color-stone-400:oklch(70.9% .01 56.259);--color-stone-500:oklch(55.3% .013 58.071);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-3xl:48rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-snug:1.375;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-canvas:#0b0f14;--color-node:#14181f;--color-node-border:#1f252e;--color-accent:#e04e2a;--color-bone:#f5f1e8;--color-stone:#7a8089}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{box-sizing:border-box}body{background:var(--color-canvas);color:var(--color-bone);height:100vh;margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;overflow:hidden}#root{flex-direction:column;height:100vh;display:flex}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.right-2{right:calc(var(--spacing) * 2)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-auto{margin-left:auto}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.w-1{width:calc(var(--spacing) * 1)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-full{width:100%}.w-px{width:1px}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-180{rotate:180deg}.animate-spin{animation:var(--animate-spin)}.resize-none{resize:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-accent\/30{border-color:#e04e2a4d}@supports (color:color-mix(in lab,red,red)){.border-accent\/30{border-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.border-amber-500\/25{border-color:#f99c0040}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/25{border-color:color-mix(in oklab,var(--color-amber-500) 25%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-blue-500\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/30{border-color:color-mix(in oklab,var(--color-blue-500) 30%,transparent)}}.border-cyan-500\/30{border-color:#00b7d74d}@supports (color:color-mix(in lab,red,red)){.border-cyan-500\/30{border-color:color-mix(in oklab,var(--color-cyan-500) 30%,transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.border-green-500\/25{border-color:#00c75840}@supports (color:color-mix(in lab,red,red)){.border-green-500\/25{border-color:color-mix(in oklab,var(--color-green-500) 25%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.border-lime-500\/30{border-color:#80cd004d}@supports (color:color-mix(in lab,red,red)){.border-lime-500\/30{border-color:color-mix(in oklab,var(--color-lime-500) 30%,transparent)}}.border-node-border{border-color:var(--color-node-border)}.border-orange-400\/30{border-color:#ff8b1a4d}@supports (color:color-mix(in lab,red,red)){.border-orange-400\/30{border-color:color-mix(in oklab,var(--color-orange-400) 30%,transparent)}}.border-orange-500\/30{border-color:#fe6e004d}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/30{border-color:color-mix(in oklab,var(--color-orange-500) 30%,transparent)}}.border-pink-500\/30{border-color:#f6339a4d}@supports (color:color-mix(in lab,red,red)){.border-pink-500\/30{border-color:color-mix(in oklab,var(--color-pink-500) 30%,transparent)}}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/30{border-color:color-mix(in oklab,var(--color-purple-500) 30%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/30{border-color:color-mix(in oklab,var(--color-rose-500) 30%,transparent)}}.border-sky-500\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-sky-500) 30%,transparent)}}.border-stone-500\/30{border-color:#79716b4d}@supports (color:color-mix(in lab,red,red)){.border-stone-500\/30{border-color:color-mix(in oklab,var(--color-stone-500) 30%,transparent)}}.border-stone\/30{border-color:#7a80894d}@supports (color:color-mix(in lab,red,red)){.border-stone\/30{border-color:color-mix(in oklab,var(--color-stone) 30%,transparent)}}.border-violet-500\/30{border-color:#8d54ff4d}@supports (color:color-mix(in lab,red,red)){.border-violet-500\/30{border-color:color-mix(in oklab,var(--color-violet-500) 30%,transparent)}}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/30{border-color:color-mix(in oklab,var(--color-yellow-500) 30%,transparent)}}.bg-accent{background-color:var(--color-accent)}.bg-accent\/10{background-color:#e04e2a1a}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.bg-accent\/20{background-color:#e04e2a33}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.bg-canvas{background-color:var(--color-canvas)}.bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/10{background-color:color-mix(in oklab,var(--color-cyan-500) 10%,transparent)}}.bg-cyan-500\/20{background-color:#00b7d733}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/20{background-color:color-mix(in oklab,var(--color-cyan-500) 20%,transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.bg-indigo-500\/20{background-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/20{background-color:color-mix(in oklab,var(--color-indigo-500) 20%,transparent)}}.bg-lime-500\/10{background-color:#80cd001a}@supports (color:color-mix(in lab,red,red)){.bg-lime-500\/10{background-color:color-mix(in oklab,var(--color-lime-500) 10%,transparent)}}.bg-lime-500\/20{background-color:#80cd0033}@supports (color:color-mix(in lab,red,red)){.bg-lime-500\/20{background-color:color-mix(in oklab,var(--color-lime-500) 20%,transparent)}}.bg-node{background-color:var(--color-node)}.bg-node-border{background-color:var(--color-node-border)}.bg-orange-400\/10{background-color:#ff8b1a1a}@supports (color:color-mix(in lab,red,red)){.bg-orange-400\/10{background-color:color-mix(in oklab,var(--color-orange-400) 10%,transparent)}}.bg-orange-400\/20{background-color:#ff8b1a33}@supports (color:color-mix(in lab,red,red)){.bg-orange-400\/20{background-color:color-mix(in oklab,var(--color-orange-400) 20%,transparent)}}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500) 10%,transparent)}}.bg-orange-500\/20{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/20{background-color:color-mix(in oklab,var(--color-orange-500) 20%,transparent)}}.bg-pink-500\/10{background-color:#f6339a1a}@supports (color:color-mix(in lab,red,red)){.bg-pink-500\/10{background-color:color-mix(in oklab,var(--color-pink-500) 10%,transparent)}}.bg-pink-500\/20{background-color:#f6339a33}@supports (color:color-mix(in lab,red,red)){.bg-pink-500\/20{background-color:color-mix(in oklab,var(--color-pink-500) 20%,transparent)}}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/10{background-color:color-mix(in oklab,var(--color-purple-500) 10%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500) 20%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/10{background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.bg-rose-500\/20{background-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/20{background-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.bg-sky-500\/10{background-color:#00a5ef1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/10{background-color:color-mix(in oklab,var(--color-sky-500) 10%,transparent)}}.bg-sky-500\/20{background-color:#00a5ef33}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/20{background-color:color-mix(in oklab,var(--color-sky-500) 20%,transparent)}}.bg-slate-500\/20{background-color:#62748e33}@supports (color:color-mix(in lab,red,red)){.bg-slate-500\/20{background-color:color-mix(in oklab,var(--color-slate-500) 20%,transparent)}}.bg-stone-500\/10{background-color:#79716b1a}@supports (color:color-mix(in lab,red,red)){.bg-stone-500\/10{background-color:color-mix(in oklab,var(--color-stone-500) 10%,transparent)}}.bg-stone-500\/20{background-color:#79716b33}@supports (color:color-mix(in lab,red,red)){.bg-stone-500\/20{background-color:color-mix(in oklab,var(--color-stone-500) 20%,transparent)}}.bg-stone\/10{background-color:#7a80891a}@supports (color:color-mix(in lab,red,red)){.bg-stone\/10{background-color:color-mix(in oklab,var(--color-stone) 10%,transparent)}}.bg-violet-500\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/10{background-color:color-mix(in oklab,var(--color-violet-500) 10%,transparent)}}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500) 10%,transparent)}}.bg-yellow-500\/20{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/20{background-color:color-mix(in oklab,var(--color-yellow-500) 20%,transparent)}}.fill-node-border{fill:var(--color-node-border)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-amber-300{color:var(--color-amber-300)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500\/50{color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.text-amber-500\/50{color:color-mix(in oklab,var(--color-amber-500) 50%,transparent)}}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-bone{color:var(--color-bone)}.text-cyan-300{color:var(--color-cyan-300)}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-400{color:var(--color-emerald-400)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-500\/50{color:#00c75880}@supports (color:color-mix(in lab,red,red)){.text-green-500\/50{color:color-mix(in oklab,var(--color-green-500) 50%,transparent)}}.text-indigo-300{color:var(--color-indigo-300)}.text-lime-300{color:var(--color-lime-300)}.text-lime-400{color:var(--color-lime-400)}.text-orange-300{color:var(--color-orange-300)}.text-orange-400{color:var(--color-orange-400)}.text-pink-300{color:var(--color-pink-300)}.text-pink-400{color:var(--color-pink-400)}.text-purple-300{color:var(--color-purple-300)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-300\/80{color:#ffa3a3cc}@supports (color:color-mix(in lab,red,red)){.text-red-300\/80{color:color-mix(in oklab,var(--color-red-300) 80%,transparent)}}.text-red-400{color:var(--color-red-400)}.text-red-400\/60{color:#ff656899}@supports (color:color-mix(in lab,red,red)){.text-red-400\/60{color:color-mix(in oklab,var(--color-red-400) 60%,transparent)}}.text-rose-300{color:var(--color-rose-300)}.text-rose-400{color:var(--color-rose-400)}.text-sky-300{color:var(--color-sky-300)}.text-sky-400{color:var(--color-sky-400)}.text-slate-300{color:var(--color-slate-300)}.text-stone{color:var(--color-stone)}.text-stone-300{color:var(--color-stone-300)}.text-stone-400{color:var(--color-stone-400)}.text-stone\/30{color:#7a80894d}@supports (color:color-mix(in lab,red,red)){.text-stone\/30{color:color-mix(in oklab,var(--color-stone) 30%,transparent)}}.text-stone\/40{color:#7a808966}@supports (color:color-mix(in lab,red,red)){.text-stone\/40{color:color-mix(in oklab,var(--color-stone) 40%,transparent)}}.text-stone\/50{color:#7a808980}@supports (color:color-mix(in lab,red,red)){.text-stone\/50{color:color-mix(in oklab,var(--color-stone) 50%,transparent)}}.text-stone\/60{color:#7a808999}@supports (color:color-mix(in lab,red,red)){.text-stone\/60{color:color-mix(in oklab,var(--color-stone) 60%,transparent)}}.text-stone\/70{color:#7a8089b3}@supports (color:color-mix(in lab,red,red)){.text-stone\/70{color:color-mix(in oklab,var(--color-stone) 70%,transparent)}}.text-violet-400{color:var(--color-violet-400)}.text-white{color:var(--color-white)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-400\/60{color:#fac80099}@supports (color:color-mix(in lab,red,red)){.text-yellow-400\/60{color:color-mix(in oklab,var(--color-yellow-400) 60%,transparent)}}.text-yellow-400\/80{color:#fac800cc}@supports (color:color-mix(in lab,red,red)){.text-yellow-400\/80{color:color-mix(in oklab,var(--color-yellow-400) 80%,transparent)}}.text-yellow-600{color:var(--color-yellow-600)}.placeholder-stone\/40::placeholder{color:#7a808966}@supports (color:color-mix(in lab,red,red)){.placeholder-stone\/40::placeholder{color:color-mix(in oklab,var(--color-stone) 40%,transparent)}}.opacity-0{opacity:0}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-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-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-amber-500\/45:hover{border-color:#f99c0073}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-500\/45:hover{border-color:color-mix(in oklab,var(--color-amber-500) 45%,transparent)}}.hover\:border-green-500\/45:hover{border-color:#00c75873}@supports (color:color-mix(in lab,red,red)){.hover\:border-green-500\/45:hover{border-color:color-mix(in oklab,var(--color-green-500) 45%,transparent)}}.hover\:bg-accent\/20:hover{background-color:#e04e2a33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/20:hover{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.hover\:bg-node-border:hover{background-color:var(--color-node-border)}.hover\:bg-node-border\/30:hover{background-color:#1f252e4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-node-border\/30:hover{background-color:color-mix(in oklab,var(--color-node-border) 30%,transparent)}}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.hover\:text-bone:hover{color:var(--color-bone)}.hover\:text-white:hover{color:var(--color-white)}.hover\:opacity-90:hover{opacity:.9}}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}.react-flow__edge.selected .react-flow__edge-path{stroke:#f08a6e}.react-flow__handle{background:var(--color-accent);border:2px solid var(--color-canvas);width:12px;height:12px}.react-flow__handle:hover{background:#f08a6e}.react-flow__controls{background:var(--color-node);border:1px solid var(--color-node-border);border-radius:8px;overflow:hidden}.react-flow__controls-button{background:var(--color-node);border:none;border-bottom:1px solid var(--color-node-border);color:var(--color-stone);fill:var(--color-stone)}.react-flow__controls-button:hover{background:var(--color-node-border);fill:var(--color-bone)}.react-flow__minimap{background:var(--color-node);border:1px solid var(--color-node-border);border-radius:8px}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}