@mediamonks/canopy-cli 0.7.36 → 0.7.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ai-DHLnyqfq.mjs → ai-CjvrcBIz.mjs} +2 -2
- package/dist/{api-C4rMhE7i.mjs → api-BPEYm9ts.mjs} +21 -0
- package/dist/{browse-Dycwj0V_.mjs → browse-CBelCgnW.mjs} +1 -1
- package/dist/{db-BB6O6085.mjs → db-CbqgjfYz.mjs} +159 -13
- package/dist/{deploy-Ka2lHkyy.mjs → deploy-CqCyry4o.mjs} +3 -3
- package/dist/{dev-BdXslHoA.mjs → dev-BtnEuAnS.mjs} +5 -5
- package/dist/dev-D_qzeLng.mjs +2 -0
- package/dist/docs/cli-db.md +30 -1
- package/dist/docs/data.md +11 -0
- package/dist/docs/platform-project-data.md +23 -3
- package/dist/{docs-Bb9hSk4h.mjs → docs-DvCUaI1O.mjs} +2 -2
- package/dist/{egress-If_Gsx_M.mjs → egress-ButFsQ2N.mjs} +2 -2
- package/dist/{feedback-DzEKQlP6.mjs → feedback-CIjjiEaj.mjs} +3 -3
- package/dist/index.mjs +30 -30
- package/dist/{local-Cyl39_Zu.mjs → local-BfqTheMP.mjs} +2 -2
- package/dist/{login-D0J5s_Ex.mjs → login-CtDWXICZ.mjs} +3 -3
- package/dist/{logs-DQQOawOG.mjs → logs-BltUi4Gp.mjs} +2 -2
- package/dist/{mcp-pNp-sbfJ.mjs → mcp-DTUJV4FT.mjs} +2 -2
- package/dist/{migrations-Czlcddyz.mjs → migrations-CF1iNZ7F.mjs} +1 -1
- package/dist/{open-DcaQKi1v.mjs → open-DXo60Ikf.mjs} +1 -1
- package/dist/{package-lYhex2Gp.mjs → package-BY69Tjq_.mjs} +1 -1
- package/dist/{projects-DQAhCZm8.mjs → projects-DPGRI-SI.mjs} +3 -3
- package/dist/{repo-Bb9ntNa4.mjs → repo-CKIQrrHK.mjs} +2 -2
- package/dist/repo-DvrIsubH.mjs +2 -0
- package/dist/{schedule-C5lMf3ny.mjs → schedule-DdMq5eXC.mjs} +2 -2
- package/dist/{secrets-BSEjZnxg.mjs → secrets-BQYaPSOT.mjs} +2 -2
- package/dist/{skill-BUA2uRR2.mjs → skill-B96cKy8K.mjs} +2 -2
- package/dist/{staging-BZVty57b.mjs → staging-CU4QrzFX.mjs} +2 -2
- package/dist/{token-HHlUR0CF.mjs → token-BWnLsWLg.mjs} +2 -2
- package/dist/{ui-C_jSc1Kz.mjs → ui-CHfKV6lG.mjs} +1 -1
- package/dist/{upgrade-ZSb56qBJ.mjs → upgrade-SfxmPh3F.mjs} +2 -2
- package/dist/{usage-CUYrWxv0.mjs → usage-Cqqvnzrf.mjs} +2 -2
- package/package.json +1 -1
- package/dist/dev-BeFX_wc5.mjs +0 -2
- package/dist/repo-1RQ1vBMv.mjs +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as apiRequest, o as withContext } from "./api-
|
|
2
|
-
import { r as reportErrors } from "./ui-
|
|
1
|
+
import { i as apiRequest, o as withContext } from "./api-BPEYm9ts.mjs";
|
|
2
|
+
import { r as reportErrors } from "./ui-CHfKV6lG.mjs";
|
|
3
3
|
import { defineCommand } from "citty";
|
|
4
4
|
//#region src/ai.ts
|
|
5
5
|
/**
|
|
@@ -92,6 +92,26 @@ const ERROR_COPY = {
|
|
|
92
92
|
why: "the description is invalid (at most 1000 characters)",
|
|
93
93
|
fix: "Shorten the description to 1000 characters or fewer."
|
|
94
94
|
},
|
|
95
|
+
user_session_required: {
|
|
96
|
+
why: "this needs your own sign-in, and a project-scoped token (dev, agent, worker, deploy) was used",
|
|
97
|
+
fix: "Run it yourself after `canopy login`, or use the dashboard."
|
|
98
|
+
},
|
|
99
|
+
invalid_retention: {
|
|
100
|
+
why: "retention must be a whole number of days from 1 to 365, or off",
|
|
101
|
+
fix: "Pass e.g. `--retention 30`, or `--retention off` to keep snapshots until deleted."
|
|
102
|
+
},
|
|
103
|
+
retention_shorter_than_schedule: {
|
|
104
|
+
why: "retention is shorter than the schedule, so some days would have no snapshot at all",
|
|
105
|
+
fix: "Use at least 1 day for a daily schedule and 7 for a weekly one."
|
|
106
|
+
},
|
|
107
|
+
invalid_schedule: {
|
|
108
|
+
why: "the schedule must be off, daily or weekly",
|
|
109
|
+
fix: "Pass `--schedule off`, `--schedule daily` or `--schedule weekly`."
|
|
110
|
+
},
|
|
111
|
+
invalid_retention_scope: {
|
|
112
|
+
why: "the retention scope must be all or scheduled",
|
|
113
|
+
fix: "Pass `--retention-scope all` (every snapshot) or `--retention-scope scheduled`."
|
|
114
|
+
},
|
|
95
115
|
snapshot_not_found: {
|
|
96
116
|
why: "no snapshot with that id exists for this project",
|
|
97
117
|
fix: "Run `canopy db snapshots` to list available snapshots."
|
|
@@ -335,6 +355,7 @@ async function apiDataRequest(method, path, projectSlug, body, rawContentType, c
|
|
|
335
355
|
body: body === void 0 ? void 0 : rawContentType !== void 0 ? body : JSON.stringify(body)
|
|
336
356
|
});
|
|
337
357
|
if (!response.ok) return fail(response, isDeployToken, method, path);
|
|
358
|
+
if (response.status === 204) return void 0;
|
|
338
359
|
return await response.json();
|
|
339
360
|
}
|
|
340
361
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { d as tryResolveProject, n as siteConfig } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, t as ApiError } from "./api-
|
|
2
|
+
import { i as apiRequest, t as ApiError } from "./api-BPEYm9ts.mjs";
|
|
3
3
|
import { defineCommand } from "citty";
|
|
4
4
|
//#region src/browse.ts
|
|
5
5
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as resolveProject, o as projectFlagArgs } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, n as apiDataRequest, o as withContext } from "./api-
|
|
3
|
-
import { a as unwrap, i as requireTty, r as reportErrors } from "./ui-
|
|
4
|
-
import { n as migrateProject, r as readMigrationFiles, t as describeMigrateResult } from "./migrations-
|
|
2
|
+
import { i as apiRequest, n as apiDataRequest, o as withContext } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { a as unwrap, i as requireTty, r as reportErrors } from "./ui-CHfKV6lG.mjs";
|
|
4
|
+
import { n as migrateProject, r as readMigrationFiles, t as describeMigrateResult } from "./migrations-CF1iNZ7F.mjs";
|
|
5
5
|
import { defineCommand } from "citty";
|
|
6
6
|
import { readFileSync, writeFileSync } from "node:fs";
|
|
7
7
|
import * as p from "@clack/prompts";
|
|
@@ -12,7 +12,8 @@ import * as p from "@clack/prompts";
|
|
|
12
12
|
*
|
|
13
13
|
* pull download a fresh SQL dump of the project database
|
|
14
14
|
* snapshot store a dump server-side (restorable from CLI or dashboard)
|
|
15
|
-
* snapshots list stored snapshots
|
|
15
|
+
* snapshots list stored snapshots; `snapshots delete` and `snapshots settings`
|
|
16
|
+
* (schedule and retention, OpenSpec snapshot-schedules)
|
|
16
17
|
* restore replace ALL project data from a snapshot or a local .sql file
|
|
17
18
|
* migrate apply pending schema migrations (docs/13-migrations-and-drizzle.md)
|
|
18
19
|
* access show or set what the app's pages may do with the database (docs/35)
|
|
@@ -84,25 +85,170 @@ const snapshotCommand = defineCommand({
|
|
|
84
85
|
console.log(`Restore anytime with \`canopy db restore --snapshot ${created.key}\`.`);
|
|
85
86
|
})
|
|
86
87
|
});
|
|
87
|
-
|
|
88
|
+
/** `--retention`: a whole number of days, or off. Range is the server's call. */
|
|
89
|
+
function parseRetention(value) {
|
|
90
|
+
const v = value.trim().toLowerCase();
|
|
91
|
+
if (v === "off" || v === "none") return null;
|
|
92
|
+
if (!/^\d+$/.test(v)) throw new Error(`--retention takes a number of days or "off", not "${value}".`);
|
|
93
|
+
return Number(v);
|
|
94
|
+
}
|
|
95
|
+
const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
96
|
+
/** One line on when scheduled snapshots happen, e.g. "daily at 03:00 UTC". */
|
|
97
|
+
function describeSchedule(settings) {
|
|
98
|
+
if (settings.schedule === "off") return "off";
|
|
99
|
+
const time = `${String(settings.slot.hour).padStart(2, "0")}:00 UTC`;
|
|
100
|
+
return settings.schedule === "weekly" && settings.slot.weekday ? `weekly on ${capitalize(settings.slot.weekday)} at ${time}` : `daily at ${time}`;
|
|
101
|
+
}
|
|
102
|
+
function describeRetention(settings) {
|
|
103
|
+
if (settings.retentionDays === null) return "off (snapshots are kept until deleted)";
|
|
104
|
+
const days = `${settings.retentionDays} day${settings.retentionDays === 1 ? "" : "s"}`;
|
|
105
|
+
return settings.retentionScope === "scheduled" ? `${days}, scheduled snapshots only` : `${days}, all snapshots (manual, scheduled, pre-migrate, pre-promote)`;
|
|
106
|
+
}
|
|
107
|
+
function describeLastRun(lastRun) {
|
|
108
|
+
if (!lastRun) return "never";
|
|
109
|
+
return lastRun.ok ? `${lastRun.at} — stored ${lastRun.detail ?? ""}`.trimEnd() : `${lastRun.at} — FAILED: ${lastRun.detail ?? "unknown error"}`;
|
|
110
|
+
}
|
|
111
|
+
function printSettings(slug, settings) {
|
|
112
|
+
console.log(`${slug} snapshot settings`);
|
|
113
|
+
console.log(` schedule ${describeSchedule(settings)}`);
|
|
114
|
+
console.log(` retention ${describeRetention(settings)}`);
|
|
115
|
+
if (settings.schedule !== "off" || settings.lastRun) console.log(` last run ${describeLastRun(settings.lastRun)}`);
|
|
116
|
+
}
|
|
117
|
+
let snapshotsSubcommandRan = false;
|
|
118
|
+
const snapshotsDeleteCommand = defineCommand({
|
|
88
119
|
meta: {
|
|
89
|
-
name: "
|
|
90
|
-
description: "
|
|
120
|
+
name: "delete",
|
|
121
|
+
description: "Delete a stored snapshot for good"
|
|
91
122
|
},
|
|
92
123
|
args: {
|
|
93
124
|
...projectFlagArgs,
|
|
94
|
-
...stagingFlagArgs
|
|
125
|
+
...stagingFlagArgs,
|
|
126
|
+
key: {
|
|
127
|
+
type: "positional",
|
|
128
|
+
description: "Snapshot key (from `canopy db snapshots`)",
|
|
129
|
+
required: true
|
|
130
|
+
},
|
|
131
|
+
yes: {
|
|
132
|
+
type: "boolean",
|
|
133
|
+
default: false,
|
|
134
|
+
description: "Skip the confirmation"
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
run: reportErrors("db snapshots delete", async ({ args }) => {
|
|
138
|
+
snapshotsSubcommandRan = true;
|
|
139
|
+
const { slug } = resolveProject(args);
|
|
140
|
+
if (!args.yes) {
|
|
141
|
+
requireTty("pass --yes to delete without confirmation.");
|
|
142
|
+
if (!unwrap(await p.confirm({
|
|
143
|
+
message: `Delete snapshot ${args.key} of "${slug}"${channelNote(args)} for good? It can't be restored afterwards.`,
|
|
144
|
+
initialValue: false
|
|
145
|
+
}))) {
|
|
146
|
+
p.cancel("Aborted.");
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
await withContext(apiDataRequest("DELETE", `/db/snapshots/${encodeURIComponent(args.key)}`, slug, void 0, void 0, channelOf(args)), { action: `delete snapshot ${args.key} of "${slug}"` });
|
|
151
|
+
p.log.success(`Deleted ${args.key}${channelNote(args)}.`);
|
|
152
|
+
})
|
|
153
|
+
});
|
|
154
|
+
const snapshotsSettingsCommand = defineCommand({
|
|
155
|
+
meta: {
|
|
156
|
+
name: "settings",
|
|
157
|
+
description: "Show or change the snapshot schedule and retention"
|
|
158
|
+
},
|
|
159
|
+
args: {
|
|
160
|
+
...projectFlagArgs,
|
|
161
|
+
schedule: {
|
|
162
|
+
type: "string",
|
|
163
|
+
description: "off | daily | weekly"
|
|
164
|
+
},
|
|
165
|
+
retention: {
|
|
166
|
+
type: "string",
|
|
167
|
+
description: "Delete snapshots older than this many days (1–365), or off"
|
|
168
|
+
},
|
|
169
|
+
"retention-scope": {
|
|
170
|
+
type: "string",
|
|
171
|
+
description: "Which snapshots retention deletes: all (default) | scheduled"
|
|
172
|
+
},
|
|
173
|
+
yes: {
|
|
174
|
+
type: "boolean",
|
|
175
|
+
default: false,
|
|
176
|
+
description: "Don't ask before a retention change that deletes snapshots"
|
|
177
|
+
},
|
|
178
|
+
json: {
|
|
179
|
+
type: "boolean",
|
|
180
|
+
default: false,
|
|
181
|
+
description: "Print the settings as JSON"
|
|
182
|
+
}
|
|
95
183
|
},
|
|
96
|
-
run: reportErrors("db snapshots", async ({ args }) => {
|
|
184
|
+
run: reportErrors("db snapshots settings", async ({ args }) => {
|
|
185
|
+
snapshotsSubcommandRan = true;
|
|
97
186
|
const { slug } = resolveProject(args);
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
187
|
+
const path = `/projects/${slug}/snapshot-settings`;
|
|
188
|
+
const change = {};
|
|
189
|
+
if (args.schedule !== void 0) change.schedule = args.schedule.trim().toLowerCase();
|
|
190
|
+
if (args.retention !== void 0) change.retentionDays = parseRetention(args.retention);
|
|
191
|
+
if (args["retention-scope"] !== void 0) change.retentionScope = args["retention-scope"].trim().toLowerCase();
|
|
192
|
+
if (Object.keys(change).length === 0) {
|
|
193
|
+
const settings = await withContext(apiRequest("GET", path), { action: `read the snapshot settings of "${slug}"` });
|
|
194
|
+
if (args.json) console.log(JSON.stringify(settings, null, 2));
|
|
195
|
+
else printSettings(slug, settings);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const context = { action: `change the snapshot settings of "${slug}"` };
|
|
199
|
+
const preview = await withContext(apiRequest("PUT", path, {
|
|
200
|
+
...change,
|
|
201
|
+
dryRun: true
|
|
202
|
+
}), context);
|
|
203
|
+
if ((preview.wouldExpire ?? 0) > 0 && !args.yes) {
|
|
204
|
+
requireTty("pass --yes to apply a retention that deletes existing snapshots.");
|
|
205
|
+
const n = preview.wouldExpire;
|
|
206
|
+
if (!unwrap(await p.confirm({
|
|
207
|
+
message: `This deletes ${n} existing snapshot${n === 1 ? "" : "s"} of "${slug}" within the hour. Continue?`,
|
|
208
|
+
initialValue: false
|
|
209
|
+
}))) {
|
|
210
|
+
p.cancel("Aborted.");
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const settings = await withContext(apiRequest("PUT", path, change), context);
|
|
215
|
+
if (args.json) {
|
|
216
|
+
console.log(JSON.stringify(settings, null, 2));
|
|
101
217
|
return;
|
|
102
218
|
}
|
|
103
|
-
|
|
219
|
+
printSettings(slug, settings);
|
|
220
|
+
if ((settings.wouldExpire ?? 0) > 0) console.log(`\n${settings.wouldExpire} snapshot(s) past retention will be deleted within the hour.`);
|
|
104
221
|
})
|
|
105
222
|
});
|
|
223
|
+
const listSnapshotsRun = reportErrors("db snapshots", async ({ args }) => {
|
|
224
|
+
const { slug } = resolveProject(args);
|
|
225
|
+
const [{ snapshots }, settings] = await Promise.all([apiDataRequest("GET", "/db/snapshots", slug, void 0, void 0, channelOf(args)), apiRequest("GET", `/projects/${slug}/snapshot-settings`).catch(() => null)]);
|
|
226
|
+
if (settings) {
|
|
227
|
+
console.log(`Schedule: ${describeSchedule(settings)} · retention: ${describeRetention(settings)}`);
|
|
228
|
+
if (settings.lastRun) console.log(`Last scheduled run: ${describeLastRun(settings.lastRun)}`);
|
|
229
|
+
console.log("");
|
|
230
|
+
}
|
|
231
|
+
if (snapshots.length === 0) {
|
|
232
|
+
console.log(`No snapshots for ${slug}${channelNote(args)} yet — run \`canopy db snapshot\`.`);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
for (const snapshot of snapshots) console.log(`${snapshot.key} ${(snapshot.kind ?? "").padEnd(11)} ${formatSize(snapshot.size).padStart(9)} ${snapshot.createdAt}`);
|
|
236
|
+
});
|
|
237
|
+
const snapshotsCommand = defineCommand({
|
|
238
|
+
meta: {
|
|
239
|
+
name: "snapshots",
|
|
240
|
+
description: "List stored snapshots (and delete, settings)"
|
|
241
|
+
},
|
|
242
|
+
args: {
|
|
243
|
+
...projectFlagArgs,
|
|
244
|
+
...stagingFlagArgs
|
|
245
|
+
},
|
|
246
|
+
subCommands: {
|
|
247
|
+
delete: snapshotsDeleteCommand,
|
|
248
|
+
settings: snapshotsSettingsCommand
|
|
249
|
+
},
|
|
250
|
+
run: (context) => snapshotsSubcommandRan ? void 0 : listSnapshotsRun(context)
|
|
251
|
+
});
|
|
106
252
|
const restoreCommand = defineCommand({
|
|
107
253
|
meta: {
|
|
108
254
|
name: "restore",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as projectDirArgs, c as resolveProject, l as stagingUrl, n as siteConfig, o as projectFlagArgs, s as projectUrl, u as tryReadCanopyJson } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, n as apiDataRequest, o as withContext, r as apiDownload } from "./api-
|
|
3
|
-
import { a as unwrap, r as reportErrors, t as formatDateTime } from "./ui-
|
|
4
|
-
import { n as migrateProject, r as readMigrationFiles, t as describeMigrateResult } from "./migrations-
|
|
2
|
+
import { i as apiRequest, n as apiDataRequest, o as withContext, r as apiDownload } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { a as unwrap, r as reportErrors, t as formatDateTime } from "./ui-CHfKV6lG.mjs";
|
|
4
|
+
import { n as migrateProject, r as readMigrationFiles, t as describeMigrateResult } from "./migrations-CF1iNZ7F.mjs";
|
|
5
5
|
import { builtinModules } from "node:module";
|
|
6
6
|
import { defineCommand } from "citty";
|
|
7
7
|
import { mkdtempSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as projectDirArgs, c as resolveProject, i as projectDialect, n as siteConfig, u as tryReadCanopyJson } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, o as withContext, t as ApiError } from "./api-
|
|
3
|
-
import { r as reportErrors, t as formatDateTime } from "./ui-
|
|
4
|
-
import { r as readMigrationFiles } from "./migrations-
|
|
2
|
+
import { i as apiRequest, o as withContext, t as ApiError } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { r as reportErrors, t as formatDateTime } from "./ui-CHfKV6lG.mjs";
|
|
4
|
+
import { r as readMigrationFiles } from "./migrations-CF1iNZ7F.mjs";
|
|
5
5
|
import { i as stampWorkerHeaders, n as WORKER_ATTEST_HEADER } from "./src-CxzGOEhP.mjs";
|
|
6
6
|
import { n as writeDevServerRecord } from "./dev-server-file-Dk9pk4AR.mjs";
|
|
7
7
|
import { createRequire } from "node:module";
|
|
@@ -251,7 +251,7 @@ async function devRemote(flags, slug) {
|
|
|
251
251
|
async function devLocal(flags, slug) {
|
|
252
252
|
let dump;
|
|
253
253
|
if (flags.pull) {
|
|
254
|
-
const { fetchProjectDump } = await import("./local-
|
|
254
|
+
const { fetchProjectDump } = await import("./local-BfqTheMP.mjs");
|
|
255
255
|
console.log(`Pulling a fresh export of ${slug}${flags.staging ? " [staging]" : ""}…`);
|
|
256
256
|
dump = await fetchProjectDump(slug, flags.staging ? "staging" : "live");
|
|
257
257
|
}
|
|
@@ -267,7 +267,7 @@ async function devLocal(flags, slug) {
|
|
|
267
267
|
console.log(`Note: ai/services will be unavailable — could not reach the platform (${reason}).`);
|
|
268
268
|
}
|
|
269
269
|
const workerAttest = randomBytes(24).toString("base64url");
|
|
270
|
-
const { createSandbox } = await import("./local-
|
|
270
|
+
const { createSandbox } = await import("./local-BfqTheMP.mjs");
|
|
271
271
|
const sandbox = await createSandbox({
|
|
272
272
|
slug,
|
|
273
273
|
persistDir: join(flags.dir, ".canopy", "local"),
|
package/dist/docs/cli-db.md
CHANGED
|
@@ -13,6 +13,9 @@ The habit that makes restores safe: **always `canopy db snapshot` before `canopy
|
|
|
13
13
|
canopy db pull [--out <file>] [--project <slug>]
|
|
14
14
|
canopy db snapshot [--project <slug>]
|
|
15
15
|
canopy db snapshots [--project <slug>]
|
|
16
|
+
canopy db snapshots delete <key> [--yes] [--project <slug>]
|
|
17
|
+
canopy db snapshots settings [--schedule off|daily|weekly] [--retention <days>|off]
|
|
18
|
+
[--retention-scope all|scheduled] [--yes] [--json] [--project <slug>]
|
|
16
19
|
canopy db restore [file.sql] [--snapshot <key>] [--yes] [--project <slug>]
|
|
17
20
|
canopy db migrate [--plan] [--project <slug>]
|
|
18
21
|
```
|
|
@@ -37,7 +40,27 @@ Stores a dump **server-side**, restorable anytime from the CLI or the dashboard.
|
|
|
37
40
|
|
|
38
41
|
### canopy db snapshots
|
|
39
42
|
|
|
40
|
-
Lists stored snapshots for the project — one line per snapshot with its key, size, and creation time. If there are none yet, it points you at `canopy db snapshot`.
|
|
43
|
+
Lists stored snapshots for the project — one line per snapshot with its key, kind, size, and creation time — under a line with the project's schedule, retention and last scheduled run. The kind says what made it: `manual` (you), `scheduled` (Canopy, on the schedule), `pre-migrate` or `pre-promote` (Canopy, before applying migrations). If there are none yet, it points you at `canopy db snapshot`.
|
|
44
|
+
|
|
45
|
+
### canopy db snapshots delete
|
|
46
|
+
|
|
47
|
+
Deletes one stored snapshot for good: it can't be restored afterwards. Asks for confirmation unless `--yes` is passed. Use `--staging` for a snapshot in the staging history.
|
|
48
|
+
|
|
49
|
+
Deleting needs your own sign-in (`canopy login`). Project tokens, such as the ones `canopy dev` or an agent uses, can't delete snapshots.
|
|
50
|
+
|
|
51
|
+
### canopy db snapshots settings
|
|
52
|
+
|
|
53
|
+
Shows or changes when Canopy takes snapshots by itself and how long snapshots are kept. With no flags it prints the current settings.
|
|
54
|
+
|
|
55
|
+
- `--schedule off|daily|weekly` — Canopy snapshots the live database once a day or once a week, at a fixed time it picks for the project (shown in UTC). The staging database is not snapshotted on a schedule.
|
|
56
|
+
- `--retention <days>` — delete snapshots older than this many days (1 to 365), once a day. `--retention off` keeps snapshots until you delete them. Retention works with or without a schedule, and covers both the live and the staging history.
|
|
57
|
+
- `--retention-scope all|scheduled` — which snapshots retention deletes: `all` (the default) includes the ones you took by hand and the ones taken before migrations; `scheduled` only deletes the ones Canopy took on the schedule.
|
|
58
|
+
- `--yes` — when a new retention would delete existing snapshots, the CLI says how many and asks first. `--yes` skips that.
|
|
59
|
+
- `--json` — print the settings as JSON.
|
|
60
|
+
|
|
61
|
+
A daily schedule needs at least 1 day of retention and a weekly one at least 7, so there is never a stretch without a snapshot. Like deleting, changing the settings needs your own sign-in.
|
|
62
|
+
|
|
63
|
+
Canopy also keeps short-lived backups of its own databases and storage for disaster recovery. Those expire on their own within 30 days and can't be restored from the CLI.
|
|
41
64
|
|
|
42
65
|
### canopy db restore
|
|
43
66
|
|
|
@@ -73,6 +96,12 @@ canopy db snapshot && canopy db pull
|
|
|
73
96
|
|
|
74
97
|
Belt and braces before risky work: a server-side snapshot you can restore from the dashboard, plus a local dump on disk.
|
|
75
98
|
|
|
99
|
+
```bash
|
|
100
|
+
canopy db snapshots settings --schedule daily --retention 30
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
A daily backup, with snapshots older than 30 days deleted automatically.
|
|
104
|
+
|
|
76
105
|
```bash
|
|
77
106
|
canopy db restore --snapshot snap-2026-08-11-1200 --yes --project my-app
|
|
78
107
|
```
|
package/dist/docs/data.md
CHANGED
|
@@ -61,6 +61,17 @@ canopy db snapshots # list stored snapshots
|
|
|
61
61
|
Snapshots live on the platform and can be restored at any time — handy before a
|
|
62
62
|
risky change.
|
|
63
63
|
|
|
64
|
+
Canopy can also take them for you, and clean up old ones:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
canopy db snapshots settings --schedule daily --retention 30 # daily backup, keep 30 days
|
|
68
|
+
canopy db snapshots settings --retention-scope scheduled # never auto-delete your own
|
|
69
|
+
canopy db snapshots delete <key> # delete one for good
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The same settings are on the dashboard's Data tab. See
|
|
73
|
+
[`canopy db`](https://docs.canopy.website/cli/db#canopy-db-snapshots-settings) for every option.
|
|
74
|
+
|
|
64
75
|
## Restore — destructive
|
|
65
76
|
|
|
66
77
|
> **Warning:** Restoring **replaces ALL project data**. Take a snapshot first — a snapshot taken seconds earlier
|
|
@@ -45,8 +45,28 @@ The Data tab's **Data safety** card is your undo button for data:
|
|
|
45
45
|
confirm.
|
|
46
46
|
- **Export** downloads a dump to your machine.
|
|
47
47
|
|
|
48
|
-
Snapshots live server-side
|
|
49
|
-
|
|
48
|
+
Snapshots live server-side, so you can restore from days ago, not just from
|
|
49
|
+
your last session. Each one shows what made it: you, the schedule, or Canopy
|
|
50
|
+
before applying migrations. You can delete one you no longer need; it's gone
|
|
51
|
+
for good.
|
|
52
|
+
|
|
53
|
+
## Scheduled snapshots and retention
|
|
54
|
+
|
|
55
|
+
In the same card you can have Canopy take a snapshot of the live database
|
|
56
|
+
**daily** or **weekly**, at a fixed time it picks for the project. You don't
|
|
57
|
+
need a worker or any code for it.
|
|
58
|
+
|
|
59
|
+
**Retention** deletes snapshots older than a number of days you choose, once a
|
|
60
|
+
day. Choose whether it applies to all snapshots or only the scheduled ones, so
|
|
61
|
+
your own restore points stay until you delete them. Retention also works
|
|
62
|
+
without a schedule. Without retention, snapshots stay until you delete them or
|
|
63
|
+
the project.
|
|
64
|
+
|
|
65
|
+
Changing these settings and deleting snapshots needs a project member signed
|
|
66
|
+
in as themselves.
|
|
67
|
+
|
|
68
|
+
Canopy also keeps short-lived backups of its own databases and storage for
|
|
69
|
+
disaster recovery. Those expire on their own within 30 days.
|
|
50
70
|
|
|
51
71
|
> **Warning:** Restoring replaces **all** current data with the snapshot's contents. Take a fresh snapshot first
|
|
52
72
|
> if there's anything recent you might want back.
|
|
@@ -58,7 +78,7 @@ Everything above is also available to you (and your coding agent) via the CLI:
|
|
|
58
78
|
```bash
|
|
59
79
|
canopy db pull # download a fresh SQL dump
|
|
60
80
|
canopy db snapshot # store a dump server-side
|
|
61
|
-
canopy db snapshots # list stored snapshots
|
|
81
|
+
canopy db snapshots # list stored snapshots (delete, settings)
|
|
62
82
|
canopy db restore # replace project data with a snapshot
|
|
63
83
|
canopy db access # what the app's own pages may do with the database
|
|
64
84
|
```
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as version } from "./package-
|
|
1
|
+
import { t as version } from "./package-BY69Tjq_.mjs";
|
|
2
2
|
import { n as siteConfig } from "./site-DM2J10CB.mjs";
|
|
3
3
|
import { i as latestKnownVersion, r as compareSemver } from "./version-check-CcsA1QjI.mjs";
|
|
4
|
-
import { r as reportErrors } from "./ui-
|
|
4
|
+
import { r as reportErrors } from "./ui-CHfKV6lG.mjs";
|
|
5
5
|
import { defineCommand } from "citty";
|
|
6
6
|
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
|
|
7
7
|
import { homedir } from "node:os";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as projectDirArgs, c as resolveProject } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, o as withContext } from "./api-
|
|
3
|
-
import { a as unwrap, i as requireTty, r as reportErrors, t as formatDateTime } from "./ui-
|
|
2
|
+
import { i as apiRequest, o as withContext } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { a as unwrap, i as requireTty, r as reportErrors, t as formatDateTime } from "./ui-CHfKV6lG.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
import * as p from "@clack/prompts";
|
|
6
6
|
//#region src/egress.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as version } from "./package-
|
|
1
|
+
import { t as version } from "./package-BY69Tjq_.mjs";
|
|
2
2
|
import { a as projectDirArgs, c as resolveProject, d as tryResolveProject, n as siteConfig, u as tryReadCanopyJson } from "./site-DM2J10CB.mjs";
|
|
3
|
-
import { a as apiUpload, i as apiRequest, r as apiDownload } from "./api-
|
|
4
|
-
import { r as reportErrors, t as formatDateTime } from "./ui-
|
|
3
|
+
import { a as apiUpload, i as apiRequest, r as apiDownload } from "./api-BPEYm9ts.mjs";
|
|
4
|
+
import { r as reportErrors, t as formatDateTime } from "./ui-CHfKV6lG.mjs";
|
|
5
5
|
import { defineCommand } from "citty";
|
|
6
6
|
import { basename, extname, join } from "node:path";
|
|
7
7
|
import { readFile, writeFile } from "node:fs/promises";
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { t as version } from "./package-
|
|
2
|
+
import { t as version } from "./package-BY69Tjq_.mjs";
|
|
3
3
|
import { r as siteHeaderLine, t as setInvocationProfile } from "./site-DM2J10CB.mjs";
|
|
4
4
|
import { a as notifyOfUpdate, o as runRefresh } from "./version-check-CcsA1QjI.mjs";
|
|
5
5
|
import { defineCommand, runMain } from "citty";
|
|
@@ -63,35 +63,35 @@ const main = defineCommand({
|
|
|
63
63
|
description: "canopy — create and deploy vibecoded projects"
|
|
64
64
|
},
|
|
65
65
|
subCommands: {
|
|
66
|
-
login: () => import("./login-
|
|
67
|
-
whoami: () => import("./login-
|
|
68
|
-
logout: () => import("./login-
|
|
69
|
-
create: () => import("./projects-
|
|
70
|
-
init: () => import("./projects-
|
|
71
|
-
projects: () => import("./projects-
|
|
72
|
-
delete: () => import("./projects-
|
|
73
|
-
dev: () => import("./dev-
|
|
74
|
-
deploy: () => import("./deploy-
|
|
75
|
-
promote: () => import("./deploy-
|
|
76
|
-
staging: () => import("./staging-
|
|
77
|
-
rollback: () => import("./deploy-
|
|
78
|
-
download: () => import("./deploy-
|
|
79
|
-
token: () => import("./token-
|
|
80
|
-
egress: () => import("./egress-
|
|
81
|
-
secrets: () => import("./secrets-
|
|
82
|
-
schedule: () => import("./schedule-
|
|
83
|
-
feedback: () => import("./feedback-
|
|
84
|
-
db: () => import("./db-
|
|
85
|
-
usage: () => import("./usage-
|
|
86
|
-
ai: () => import("./ai-
|
|
87
|
-
open: () => import("./open-
|
|
88
|
-
browse: () => import("./browse-
|
|
89
|
-
docs: () => import("./docs-
|
|
90
|
-
skill: () => import("./skill-
|
|
91
|
-
upgrade: () => import("./upgrade-
|
|
92
|
-
logs: () => import("./logs-
|
|
93
|
-
mcp: () => import("./mcp-
|
|
94
|
-
repo: () => import("./repo-
|
|
66
|
+
login: () => import("./login-CtDWXICZ.mjs").then((m) => m.loginCommand),
|
|
67
|
+
whoami: () => import("./login-CtDWXICZ.mjs").then((m) => m.whoamiCommand),
|
|
68
|
+
logout: () => import("./login-CtDWXICZ.mjs").then((m) => m.logoutCommand),
|
|
69
|
+
create: () => import("./projects-DPGRI-SI.mjs").then((m) => m.createCommand),
|
|
70
|
+
init: () => import("./projects-DPGRI-SI.mjs").then((m) => m.initCommand),
|
|
71
|
+
projects: () => import("./projects-DPGRI-SI.mjs").then((m) => m.projectsCommand),
|
|
72
|
+
delete: () => import("./projects-DPGRI-SI.mjs").then((m) => m.deleteCommand),
|
|
73
|
+
dev: () => import("./dev-D_qzeLng.mjs").then((m) => m.devCommand),
|
|
74
|
+
deploy: () => import("./deploy-CqCyry4o.mjs").then((m) => m.deployCommand),
|
|
75
|
+
promote: () => import("./deploy-CqCyry4o.mjs").then((m) => m.promoteCommand),
|
|
76
|
+
staging: () => import("./staging-CU4QrzFX.mjs").then((m) => m.stagingCommand),
|
|
77
|
+
rollback: () => import("./deploy-CqCyry4o.mjs").then((m) => m.rollbackCommand),
|
|
78
|
+
download: () => import("./deploy-CqCyry4o.mjs").then((m) => m.downloadCommand),
|
|
79
|
+
token: () => import("./token-BWnLsWLg.mjs").then((m) => m.tokenCommand),
|
|
80
|
+
egress: () => import("./egress-ButFsQ2N.mjs").then((m) => m.egressCommand),
|
|
81
|
+
secrets: () => import("./secrets-BQYaPSOT.mjs").then((m) => m.secretsCommand),
|
|
82
|
+
schedule: () => import("./schedule-DdMq5eXC.mjs").then((m) => m.scheduleCommand),
|
|
83
|
+
feedback: () => import("./feedback-CIjjiEaj.mjs").then((m) => m.feedbackCommand),
|
|
84
|
+
db: () => import("./db-CbqgjfYz.mjs").then((m) => m.dbCommand),
|
|
85
|
+
usage: () => import("./usage-Cqqvnzrf.mjs").then((m) => m.usageCommand),
|
|
86
|
+
ai: () => import("./ai-CjvrcBIz.mjs").then((m) => m.aiCommand),
|
|
87
|
+
open: () => import("./open-DXo60Ikf.mjs").then((m) => m.openCommand),
|
|
88
|
+
browse: () => import("./browse-CBelCgnW.mjs").then((m) => m.browseCommand),
|
|
89
|
+
docs: () => import("./docs-DvCUaI1O.mjs").then((m) => m.docsCommand),
|
|
90
|
+
skill: () => import("./skill-B96cKy8K.mjs").then((m) => m.skillCommand),
|
|
91
|
+
upgrade: () => import("./upgrade-SfxmPh3F.mjs").then((m) => m.upgradeCommand),
|
|
92
|
+
logs: () => import("./logs-BltUi4Gp.mjs").then((m) => m.logsCommand),
|
|
93
|
+
mcp: () => import("./mcp-DTUJV4FT.mjs").then((m) => m.mcpCommand),
|
|
94
|
+
repo: () => import("./repo-DvrIsubH.mjs").then((m) => m.repoCommand)
|
|
95
95
|
}
|
|
96
96
|
});
|
|
97
97
|
const quiet = process.argv[2] === "mcp" && process.argv[3] === "serve" || process.argv[2] === "repo" && process.argv[3] === "credential";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as apiDataRequest } from "./api-
|
|
1
|
+
import { n as apiDataRequest } from "./api-BPEYm9ts.mjs";
|
|
2
2
|
import { a as realtimeRouter, c as META_COLUMNS, l as blobRouter, n as WORKER_ATTEST_HEADER, o as dbRouter, s as hasPrivateNames } from "./src-CxzGOEhP.mjs";
|
|
3
|
-
import { a as rewriteApiPath } from "./dev-
|
|
3
|
+
import { a as rewriteApiPath } from "./dev-BtnEuAnS.mjs";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
6
6
|
import { dirname, join, relative, sep } from "node:path";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { _ as writeConfigFile, f as clearAllProfileTokens, g as upsertProfileAuth, h as setActiveProfile, m as readConfigFile, n as siteConfig, p as listBakedProfiles, v as getBakedProfile, y as isProfileId } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { n as openBrowser, r as reportErrors } from "./ui-
|
|
2
|
+
import { n as openBrowser, r as reportErrors } from "./ui-CHfKV6lG.mjs";
|
|
3
3
|
import { n as clearRepoTokenCache } from "./repo-credential-CNDRM-tG.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
import { hostname } from "node:os";
|
|
@@ -7,8 +7,8 @@ import * as p from "@clack/prompts";
|
|
|
7
7
|
import { createHash, randomBytes } from "node:crypto";
|
|
8
8
|
import { createServer } from "node:http";
|
|
9
9
|
//#region ../pages/src/generated/cli-login.ts
|
|
10
|
-
const okHtml = "<!doctype html><html lang=\"en\" data-theme=\"canopy\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><title>You’re signed in · Canopy</title><style>/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@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-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-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;--tw-duration:initial;--tw-outline-style:solid;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:\"Helvetica Now for Monks\", ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--color-red-100:#ffebf0;--color-red-200:#ffd1dd;--color-red-300:#ffa8be;--color-red-400:#ff7a9c;--color-red-500:#ff527d;--color-red-600:#ff245b;--color-red-800:#a30029;--color-red-950:#610018;--color-amber-200:#fde68a;--color-amber-950:#451a03;--color-yellow-100:#fff7db;--color-yellow-900:#7a6000;--color-green-100:#e3fcf1;--color-green-200:#b8fadd;--color-green-900:#067445;--color-green-950:#065533;--color-emerald-50:#ecfdf5;--color-emerald-100:#d1fae5;--color-emerald-200:#a7f3d0;--color-emerald-300:#6ee7b7;--color-emerald-400:#34d399;--color-emerald-500:#10b981;--color-emerald-600:#059669;--color-emerald-800:#065f46;--color-emerald-900:#064e3b;--color-emerald-950:#022c22;--color-purple-50:#faf6fd;--color-purple-300:#d6b6f1;--color-purple-400:#c598ec;--color-purple-500:#ac6de3;--color-purple-600:#8c3fd2;--color-purple-700:#7d26c9;--color-purple-900:#501881;--color-gray-800:#5d5d60;--color-neutral-50:#f5f5f4;--color-neutral-100:#e9e8e7;--color-neutral-200:#d6d4d2;--color-neutral-300:#c0beb9;--color-neutral-400:#adaaa4;--color-neutral-500:#97938c;--color-neutral-600:#837f77;--color-neutral-700:#6c6962;--color-neutral-900:#484641;--color-neutral-950:#3e3c38;--color-stone-100:#f5f5f4;--color-stone-500:#78716c;--color-stone-600:#57534e;--color-stone-700:#44403c;--color-stone-800:#292524;--color-stone-900:#1c1917;--color-stone-950:#0c0a09;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--text-xs:12px;--text-xs--line-height:16px;--text-sm:14px;--text-sm--line-height:20px;--text-2xl:24px;--text-2xl--line-height:32px;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.01em;--tracking-wide:.015em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-2xl:16px;--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-foreground:var(--foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-muted-foreground:var(--muted-foreground);--color-destructive:var(--destructive);--color-border:var(--border);--color-ring:var(--ring);--color-card:var(--card);--color-brand:var(--brand);--color-brand-foreground:var(--brand-foreground)}}@layer base{@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)}}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;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:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root,[data-theme=monks-flow]{--background:var(--color-white);--background-emphasis:var(--color-neutral-900);--foreground:var(--color-neutral-950);--foreground-alt:var(--color-neutral-700);--foreground-subtle:var(--color-neutral-600);--primary:var(--color-neutral-900);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-neutral-950);--secondary:#f5f3f0;--secondary-foreground:var(--color-neutral-900);--secondary-hover:#e7e2dc;--muted:var(--color-neutral-100);--muted-foreground:var(--color-neutral-500);--accent:#e7e2dc;--accent-foreground:var(--color-neutral-900);--destructive:#e11d48;--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:var(--color-neutral-700);--ghost-hover:#0000000d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:var(--color-neutral-50);--surface-emphasis:var(--color-neutral-300);--surface-raised:var(--color-neutral-200);--border:var(--color-neutral-200);--border-light:var(--color-neutral-100);--border-lighter:var(--color-neutral-50);--border-strong:var(--color-neutral-400);--input:var(--color-neutral-50);--input-foreground:var(--color-neutral-950);--ring:var(--color-black);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:var(--color-neutral-950);--popover:var(--color-white);--popover-foreground:var(--color-neutral-950);--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--chart-1:#f54a00;--chart-2:#009689;--chart-3:#104e64;--chart-4:#ffb900;--chart-5:#fe9a00;--chart-negative:#f54a00;--chart-positive:#009689;--chart-fill:#bfdeffb3;--chart-fill-2:#aaccffb3;--chart-stroke-2:#3f8dff;--sidebar:var(--color-neutral-50);--sidebar-foreground:var(--color-gray-800);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-neutral-200);--sidebar-ring:var(--ring);--backdrop:#0009;--theme-background:#f5f4f2}:root.dark:not([data-theme]),[data-theme=monks-flow].dark,[data-theme=monks-flow] .dark{--background:var(--color-stone-900);--background-emphasis:var(--color-neutral-100);--foreground:var(--color-neutral-50);--foreground-alt:var(--color-neutral-300);--foreground-subtle:var(--color-neutral-400);--primary:var(--color-neutral-50);--primary-foreground:var(--color-black);--primary-hover:var(--color-neutral-100);--secondary:var(--color-stone-700);--secondary-foreground:var(--color-neutral-100);--secondary-hover:var(--color-stone-600);--muted:var(--color-stone-800);--muted-foreground:var(--color-neutral-500);--accent:var(--color-neutral-900);--accent-foreground:var(--color-neutral-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:var(--color-neutral-300);--ghost-hover:#ffffff14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:var(--color-stone-800);--surface-emphasis:var(--color-stone-600);--surface-raised:var(--color-stone-700);--border:var(--color-stone-600);--border-light:var(--color-stone-700);--border-lighter:var(--color-stone-800);--border-strong:var(--color-stone-500);--input:var(--color-stone-800);--input-foreground:var(--color-neutral-50);--ring:var(--color-white);--ring-error:var(--color-red-400);--card:var(--color-stone-800);--card-foreground:var(--color-neutral-100);--popover:var(--color-stone-800);--popover-foreground:var(--color-neutral-100);--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--chart-1:#ff6b33;--chart-2:#00b3a4;--chart-3:#2196a8;--chart-4:#ffc733;--chart-5:#ffad33;--chart-negative:#ff6b33;--chart-positive:#00b3a4;--chart-fill:#3382ff40;--chart-fill-2:#5096ff33;--chart-stroke-2:#5da3ff;--sidebar:var(--color-stone-800);--sidebar-foreground:var(--color-neutral-300);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-stone-700);--sidebar-ring:var(--ring);--backdrop:#000c;--theme-background:#0c0a09}[data-theme=metropolis]{--background:var(--color-white);--background-emphasis:var(--color-neutral-900);--foreground:var(--color-neutral-950);--foreground-alt:var(--color-neutral-700);--foreground-subtle:var(--color-neutral-600);--primary:var(--color-purple-600);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-purple-700);--secondary:var(--color-neutral-100);--secondary-foreground:var(--color-neutral-900);--secondary-hover:var(--color-neutral-50);--muted:var(--color-neutral-100);--muted-foreground:var(--color-neutral-500);--accent:var(--color-purple-50);--accent-foreground:var(--color-purple-600);--destructive:var(--color-red-600);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:var(--color-neutral-700);--ghost-hover:#0000000d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:var(--color-neutral-50);--surface-emphasis:var(--color-neutral-300);--surface-raised:var(--color-neutral-200);--border:var(--color-neutral-200);--border-light:var(--color-neutral-100);--border-lighter:var(--color-neutral-50);--border-strong:var(--color-neutral-400);--input:var(--color-neutral-50);--input-foreground:var(--color-neutral-950);--ring:var(--color-neutral-300);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:var(--color-neutral-950);--popover:var(--color-white);--popover-foreground:var(--color-neutral-950);--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--chart-1:#f54a00;--chart-2:#009689;--chart-3:#104e64;--chart-4:#ffb900;--chart-5:#fe9a00;--chart-negative:#f54a00;--chart-positive:#009689;--chart-fill:#bfdeffb3;--chart-fill-2:#aaccffb3;--chart-stroke-2:#3f8dff;--sidebar:var(--color-neutral-50);--sidebar-foreground:var(--color-gray-800);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-neutral-200);--sidebar-ring:var(--color-neutral-300);--backdrop:#0009;--theme-background:#f0f3f8}[data-theme=metropolis].dark,[data-theme=metropolis] .dark{--background:var(--color-stone-900);--background-emphasis:var(--color-neutral-100);--foreground:var(--color-neutral-50);--foreground-alt:var(--color-neutral-300);--foreground-subtle:var(--color-neutral-400);--primary:var(--color-purple-500);--primary-foreground:var(--color-white);--primary-hover:var(--color-purple-400);--secondary:var(--color-stone-700);--secondary-foreground:var(--color-neutral-100);--secondary-hover:var(--color-stone-600);--muted:var(--color-stone-800);--muted-foreground:var(--color-neutral-400);--accent:var(--color-purple-900);--accent-foreground:var(--color-purple-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:var(--color-neutral-300);--ghost-hover:#ffffff14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:var(--color-stone-800);--surface-emphasis:var(--color-stone-600);--surface-raised:var(--color-stone-700);--border:var(--color-stone-600);--border-light:var(--color-stone-700);--border-lighter:var(--color-stone-800);--border-strong:var(--color-stone-500);--input:var(--color-stone-800);--input-foreground:var(--color-neutral-50);--ring:var(--color-neutral-500);--ring-error:var(--color-red-400);--card:var(--color-stone-800);--card-foreground:var(--color-neutral-100);--popover:var(--color-stone-800);--popover-foreground:var(--color-neutral-100);--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--chart-1:#ff6b33;--chart-2:#00b3a4;--chart-3:#2196a8;--chart-4:#ffc733;--chart-5:#ffad33;--chart-negative:#ff6b33;--chart-positive:#00b3a4;--chart-fill:#3382ff40;--chart-fill-2:#5096ff33;--chart-stroke-2:#5da3ff;--sidebar:var(--color-stone-800);--sidebar-foreground:var(--color-neutral-300);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-stone-700);--sidebar-ring:var(--color-neutral-500);--backdrop:#000c;--theme-background:#0c0a09}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground)}button,[role=button]{cursor:pointer}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}}@layer components;@layer utilities{.relative{position:relative}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3\\.5{margin-top:calc(var(--spacing) * 3.5)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-px{margin-top:1px}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:var(--spacing)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-11{height:calc(var(--spacing) * 11)}.min-h-svh{min-height:100svh}.w-full{width:100%}.max-w-sm{max-width:var(--container-sm)}.shrink-0{flex-shrink:0}.place-items-center{place-items:center}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.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)}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-border{border-color:var(--color-border)}.border-brand{border-color:var(--color-brand)}.border-destructive{border-color:var(--color-destructive)}.bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_8\\%\\,transparent\\)\\]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_8\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,var(--destructive) 8%,transparent)}}.bg-\\[color-mix\\(in_oklab\\,var\\(--foreground\\)_6\\%\\,transparent\\)\\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,var\\(--foreground\\)_6\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,var(--foreground) 6%,transparent)}}.bg-\\[var\\(--input\\)\\]{background-color:var(--input)}.bg-brand{background-color:var(--color-brand)}.bg-card{background-color:var(--color-card)}.bg-destructive{background-color:var(--color-destructive)}.bg-primary{background-color:var(--color-primary)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-px{padding-block:1px}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--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))}.text-\\[0\\.85em\\]{font-size:.85em}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.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)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.text-\\[var\\(--card\\)\\]{color:var(--card)}.text-brand{color:var(--color-brand)}.text-brand-foreground{color:var(--color-brand-foreground)}.text-destructive{color:var(--color-destructive)}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary-foreground{color:var(--color-primary-foreground)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.shadow-panel{--tw-shadow:var(--panel-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.backdrop-blur-\\[10px\\]{--tw-backdrop-blur:blur(10px);-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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.select-none{-webkit-user-select:none;user-select:none}.paused{animation-play-state:paused}.running{animation-play-state:running}@media (hover:hover){.hover\\:bg-\\[var\\(--primary-hover\\)\\]:hover{background-color:var(--primary-hover)}.hover\\:text-foreground:hover{color:var(--color-foreground)}}.focus-visible\\:border-ring:focus-visible{border-color:var(--color-ring)}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-0:focus-visible{outline-offset:0px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-ring:focus-visible{outline-color:var(--color-ring)}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--color-destructive)}}@property --tw-animation-delay{syntax:\"*\";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:\"*\";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:\"*\";inherits:false}@property --tw-animation-fill-mode{syntax:\"*\";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:\"*\";inherits:false;initial-value:0}@media (prefers-reduced-motion:reduce){:root{--duration-instant:0s;--duration-fast:0s;--duration-base:0s;--duration-slow:0s;--duration-slower:0s;--default-transition-duration:0s}[data-vaul-drawer],[data-vaul-overlay]{transition-duration:0s!important;animation-duration:0s!important}}.dark:not([data-theme]){--input:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--input:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}.dark:not([data-theme]){--surface:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--surface:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}.dark:not([data-theme]){--muted:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--muted:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}:root:not(.dark):not([data-theme]){--background:var(--color-neutral-50)}[data-slot=dialog-content],[data-slot=alert-dialog-content],[data-slot=sheet-content],[data-slot=drawer-content]{background-color:var(--card)}[data-slot=table-body] tr:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){[data-slot=table-body] tr:hover{background-color:color-mix(in oklab, var(--accent) 45%, transparent)}}[data-theme=canopy]{--background:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--background:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-stone-100))}}[data-theme=canopy]{--background-emphasis:var(--color-neutral-900);--foreground:#14201a;--foreground-alt:#3b4a42;--foreground-subtle:#5c6f64;--primary:var(--color-emerald-800);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-emerald-900);--secondary:#eaeeeb}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--secondary:color-mix(in oklab, var(--color-emerald-50) 30%, var(--color-neutral-100))}}[data-theme=canopy]{--secondary-foreground:#14201a;--secondary-hover:#f1f9f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--secondary-hover:color-mix(in oklab, var(--color-emerald-50) 45%, var(--color-neutral-50))}}[data-theme=canopy]{--muted:#eaedea}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--muted:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-neutral-100))}}[data-theme=canopy]{--muted-foreground:#5c6f64;--accent:#eaf0ed}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--accent:color-mix(in oklab, var(--color-emerald-50) 40%, var(--color-neutral-100))}}[data-theme=canopy]{--accent-foreground:var(--color-emerald-800);--destructive:var(--color-red-600);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:#3b4a42;--ghost-hover:#0f291d0d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:#fcfffd}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface:color-mix(in oklab, var(--color-emerald-50) 18%, var(--color-white))}}[data-theme=canopy]{--surface-emphasis:#bacbbf}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface-emphasis:color-mix(in oklab, var(--color-emerald-200) 25%, var(--color-neutral-300))}}[data-theme=canopy]{--surface-raised:#d5ded7}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface-raised:color-mix(in oklab, var(--color-emerald-100) 25%, var(--color-neutral-200))}}[data-theme=canopy]{--border:#c8ddd1}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border:color-mix(in oklab, var(--color-emerald-200) 30%, var(--color-neutral-200))}}[data-theme=canopy]{--border-light:#e3ede7}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-light:color-mix(in oklab, var(--color-emerald-100) 25%, var(--color-neutral-100))}}[data-theme=canopy]{--border-lighter:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-lighter:color-mix(in oklab, var(--color-emerald-50) 25%, var(--color-neutral-50))}}[data-theme=canopy]{--border-strong:#9abcaa}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-strong:color-mix(in oklab, var(--color-emerald-300) 30%, var(--color-neutral-400))}}[data-theme=canopy]{--input:#f2f8f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--input:color-mix(in oklab, var(--color-emerald-50) 35%, var(--color-neutral-50))}}[data-theme=canopy]{--input-foreground:#14201a;--ring:var(--color-emerald-600);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:#14201a;--popover:var(--color-white);--popover-foreground:#14201a;--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--sidebar:var(--color-white);--sidebar-foreground:#3b4a42;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:#c8ddd1}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--sidebar-border:color-mix(in oklab, var(--color-emerald-200) 30%, var(--color-neutral-200))}}[data-theme=canopy]{--sidebar-ring:var(--color-emerald-600);--backdrop:#0a1a1299;--theme-background:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--theme-background:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-stone-100))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--step:#35312f}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--step:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel:#23201e}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel:color-mix(in oklab, var(--color-stone-900) 45%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--background:#0b0f0d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--background:color-mix(in oklab, var(--color-emerald-950) 14%, var(--color-stone-950))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--background-emphasis:var(--color-neutral-100);--foreground:#e9f0ec;--foreground-alt:#c2d1c8;--foreground-subtle:#9aaba2;--primary:var(--color-emerald-500);--primary-foreground:#04140d;--primary-hover:var(--color-emerald-400);--secondary:#383c37}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary:color-mix(in oklab, var(--color-emerald-950) 18%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary-foreground:#e9f0ec;--secondary-hover:#484c46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary-hover:color-mix(in oklab, var(--color-emerald-950) 18%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted-foreground:#9aaba2;--accent:#1b2723}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--accent:color-mix(in oklab, var(--color-emerald-950) 35%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--accent-foreground:var(--color-emerald-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:#c2d1c8;--ghost-hover:#e9f0ec14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-emphasis:#4b524b}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-emphasis:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-raised:#3b423c}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-raised:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border:#39433c}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border:color-mix(in oklab, var(--color-emerald-900) 18%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-light:#242b27}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-light:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-lighter:#232624}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-lighter:color-mix(in oklab, var(--color-emerald-950) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-strong:#48554d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-strong:color-mix(in oklab, var(--color-emerald-800) 18%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--input:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--input:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--input-foreground:#e9f0ec;--ring:var(--color-emerald-500);--ring-error:var(--color-red-400);--card:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--card:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--card-foreground:#e9f0ec;--popover:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--popover:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--popover-foreground:#e9f0ec;--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--sidebar:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-foreground:#c2d1c8;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:#242b27}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-border:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-ring:var(--color-emerald-500);--backdrop:#000c;--theme-background:#0b0f0d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--theme-background:color-mix(in oklab, var(--color-emerald-950) 14%, var(--color-stone-950))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:#065f46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:color-mix(in oklab, var(--color-emerald-800) 52%, var(--background))}}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:color-mix(in oklab, var(--color-emerald-900) 62%, var(--background))}}[data-theme=canopy] :is([data-slot=input-group],[data-slot=input],[data-slot=textarea],textarea){--tw-ring-offset-width:0px;--tw-ring-offset-color:transparent}[data-theme=canopy].dark body,[data-theme=canopy] .dark body{background-image:radial-gradient(1200px 720px at 8% -10%, var(--wash-a), transparent 62%), radial-gradient(1000px 620px at 96% 2%, var(--wash-b), transparent 58%);background-repeat:no-repeat;background-attachment:fixed}[data-theme=canopy] [data-slot=card]{box-shadow:none}:root{--brand:var(--color-emerald-800);--brand-foreground:var(--color-neutral-50)}[data-theme=canopy].dark,[data-theme=canopy] .dark{--brand:var(--color-emerald-400);--brand-foreground:#04140d;--primary:#e9f0ec;--primary-foreground:#101711;--primary-hover:var(--color-white)}:root{--panel-shadow:0 18px 40px -28px #14201a73}[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel-shadow:0 18px 44px -26px #000000b3;--wash-a:#065f46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:color-mix(in oklab, var(--color-emerald-800) 55%, var(--background))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:#064e3b}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:color-mix(in oklab, var(--color-emerald-900) 70%, var(--background))}}@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-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}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}</style><script>matchMedia('(prefers-color-scheme:dark)').matches&&document.documentElement.classList.add('dark')<\/script></head><body class=\"grid min-h-svh place-items-center p-6 text-foreground\"><main class=\"w-full max-w-sm rounded-2xl border border-border bg-card p-8 shadow-panel backdrop-blur-[10px]\"><div class=\"mb-5 grid size-11 place-items-center rounded-xl bg-brand text-brand-foreground\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-check size-5\" aria-hidden=\"true\"><path d=\"M20 6 9 17l-5-5\"></path></svg></div><p class=\"mb-1 text-xs font-semibold uppercase tracking-wide text-brand\">Canopy CLI</p><h1 class=\"mb-2 text-2xl font-semibold tracking-tight break-words\">You’re signed in</h1><p class=\"mt-2 text-sm leading-relaxed text-muted-foreground\">You can close this tab and return to the terminal — the CLI has your code.</p><p class=\"mt-6 border-t border-border pt-4 text-xs text-muted-foreground\">This tab only finishes the browser step — keep using the terminal for the rest.</p></main></body></html>";
|
|
11
|
-
const failedHtml = "<!doctype html><html lang=\"en\" data-theme=\"canopy\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><title>Sign-in didn’t finish · Canopy</title><style>/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@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-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-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;--tw-duration:initial;--tw-outline-style:solid;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:\"Helvetica Now for Monks\", ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--color-red-100:#ffebf0;--color-red-200:#ffd1dd;--color-red-300:#ffa8be;--color-red-400:#ff7a9c;--color-red-500:#ff527d;--color-red-600:#ff245b;--color-red-800:#a30029;--color-red-950:#610018;--color-amber-200:#fde68a;--color-amber-950:#451a03;--color-yellow-100:#fff7db;--color-yellow-900:#7a6000;--color-green-100:#e3fcf1;--color-green-200:#b8fadd;--color-green-900:#067445;--color-green-950:#065533;--color-emerald-50:#ecfdf5;--color-emerald-100:#d1fae5;--color-emerald-200:#a7f3d0;--color-emerald-300:#6ee7b7;--color-emerald-400:#34d399;--color-emerald-500:#10b981;--color-emerald-600:#059669;--color-emerald-800:#065f46;--color-emerald-900:#064e3b;--color-emerald-950:#022c22;--color-purple-50:#faf6fd;--color-purple-300:#d6b6f1;--color-purple-400:#c598ec;--color-purple-500:#ac6de3;--color-purple-600:#8c3fd2;--color-purple-700:#7d26c9;--color-purple-900:#501881;--color-gray-800:#5d5d60;--color-neutral-50:#f5f5f4;--color-neutral-100:#e9e8e7;--color-neutral-200:#d6d4d2;--color-neutral-300:#c0beb9;--color-neutral-400:#adaaa4;--color-neutral-500:#97938c;--color-neutral-600:#837f77;--color-neutral-700:#6c6962;--color-neutral-900:#484641;--color-neutral-950:#3e3c38;--color-stone-100:#f5f5f4;--color-stone-500:#78716c;--color-stone-600:#57534e;--color-stone-700:#44403c;--color-stone-800:#292524;--color-stone-900:#1c1917;--color-stone-950:#0c0a09;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--text-xs:12px;--text-xs--line-height:16px;--text-sm:14px;--text-sm--line-height:20px;--text-2xl:24px;--text-2xl--line-height:32px;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.01em;--tracking-wide:.015em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-2xl:16px;--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-foreground:var(--foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-muted-foreground:var(--muted-foreground);--color-destructive:var(--destructive);--color-border:var(--border);--color-ring:var(--ring);--color-card:var(--card);--color-brand:var(--brand);--color-brand-foreground:var(--brand-foreground)}}@layer base{@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)}}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;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:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root,[data-theme=monks-flow]{--background:var(--color-white);--background-emphasis:var(--color-neutral-900);--foreground:var(--color-neutral-950);--foreground-alt:var(--color-neutral-700);--foreground-subtle:var(--color-neutral-600);--primary:var(--color-neutral-900);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-neutral-950);--secondary:#f5f3f0;--secondary-foreground:var(--color-neutral-900);--secondary-hover:#e7e2dc;--muted:var(--color-neutral-100);--muted-foreground:var(--color-neutral-500);--accent:#e7e2dc;--accent-foreground:var(--color-neutral-900);--destructive:#e11d48;--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:var(--color-neutral-700);--ghost-hover:#0000000d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:var(--color-neutral-50);--surface-emphasis:var(--color-neutral-300);--surface-raised:var(--color-neutral-200);--border:var(--color-neutral-200);--border-light:var(--color-neutral-100);--border-lighter:var(--color-neutral-50);--border-strong:var(--color-neutral-400);--input:var(--color-neutral-50);--input-foreground:var(--color-neutral-950);--ring:var(--color-black);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:var(--color-neutral-950);--popover:var(--color-white);--popover-foreground:var(--color-neutral-950);--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--chart-1:#f54a00;--chart-2:#009689;--chart-3:#104e64;--chart-4:#ffb900;--chart-5:#fe9a00;--chart-negative:#f54a00;--chart-positive:#009689;--chart-fill:#bfdeffb3;--chart-fill-2:#aaccffb3;--chart-stroke-2:#3f8dff;--sidebar:var(--color-neutral-50);--sidebar-foreground:var(--color-gray-800);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-neutral-200);--sidebar-ring:var(--ring);--backdrop:#0009;--theme-background:#f5f4f2}:root.dark:not([data-theme]),[data-theme=monks-flow].dark,[data-theme=monks-flow] .dark{--background:var(--color-stone-900);--background-emphasis:var(--color-neutral-100);--foreground:var(--color-neutral-50);--foreground-alt:var(--color-neutral-300);--foreground-subtle:var(--color-neutral-400);--primary:var(--color-neutral-50);--primary-foreground:var(--color-black);--primary-hover:var(--color-neutral-100);--secondary:var(--color-stone-700);--secondary-foreground:var(--color-neutral-100);--secondary-hover:var(--color-stone-600);--muted:var(--color-stone-800);--muted-foreground:var(--color-neutral-500);--accent:var(--color-neutral-900);--accent-foreground:var(--color-neutral-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:var(--color-neutral-300);--ghost-hover:#ffffff14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:var(--color-stone-800);--surface-emphasis:var(--color-stone-600);--surface-raised:var(--color-stone-700);--border:var(--color-stone-600);--border-light:var(--color-stone-700);--border-lighter:var(--color-stone-800);--border-strong:var(--color-stone-500);--input:var(--color-stone-800);--input-foreground:var(--color-neutral-50);--ring:var(--color-white);--ring-error:var(--color-red-400);--card:var(--color-stone-800);--card-foreground:var(--color-neutral-100);--popover:var(--color-stone-800);--popover-foreground:var(--color-neutral-100);--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--chart-1:#ff6b33;--chart-2:#00b3a4;--chart-3:#2196a8;--chart-4:#ffc733;--chart-5:#ffad33;--chart-negative:#ff6b33;--chart-positive:#00b3a4;--chart-fill:#3382ff40;--chart-fill-2:#5096ff33;--chart-stroke-2:#5da3ff;--sidebar:var(--color-stone-800);--sidebar-foreground:var(--color-neutral-300);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-stone-700);--sidebar-ring:var(--ring);--backdrop:#000c;--theme-background:#0c0a09}[data-theme=metropolis]{--background:var(--color-white);--background-emphasis:var(--color-neutral-900);--foreground:var(--color-neutral-950);--foreground-alt:var(--color-neutral-700);--foreground-subtle:var(--color-neutral-600);--primary:var(--color-purple-600);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-purple-700);--secondary:var(--color-neutral-100);--secondary-foreground:var(--color-neutral-900);--secondary-hover:var(--color-neutral-50);--muted:var(--color-neutral-100);--muted-foreground:var(--color-neutral-500);--accent:var(--color-purple-50);--accent-foreground:var(--color-purple-600);--destructive:var(--color-red-600);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:var(--color-neutral-700);--ghost-hover:#0000000d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:var(--color-neutral-50);--surface-emphasis:var(--color-neutral-300);--surface-raised:var(--color-neutral-200);--border:var(--color-neutral-200);--border-light:var(--color-neutral-100);--border-lighter:var(--color-neutral-50);--border-strong:var(--color-neutral-400);--input:var(--color-neutral-50);--input-foreground:var(--color-neutral-950);--ring:var(--color-neutral-300);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:var(--color-neutral-950);--popover:var(--color-white);--popover-foreground:var(--color-neutral-950);--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--chart-1:#f54a00;--chart-2:#009689;--chart-3:#104e64;--chart-4:#ffb900;--chart-5:#fe9a00;--chart-negative:#f54a00;--chart-positive:#009689;--chart-fill:#bfdeffb3;--chart-fill-2:#aaccffb3;--chart-stroke-2:#3f8dff;--sidebar:var(--color-neutral-50);--sidebar-foreground:var(--color-gray-800);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-neutral-200);--sidebar-ring:var(--color-neutral-300);--backdrop:#0009;--theme-background:#f0f3f8}[data-theme=metropolis].dark,[data-theme=metropolis] .dark{--background:var(--color-stone-900);--background-emphasis:var(--color-neutral-100);--foreground:var(--color-neutral-50);--foreground-alt:var(--color-neutral-300);--foreground-subtle:var(--color-neutral-400);--primary:var(--color-purple-500);--primary-foreground:var(--color-white);--primary-hover:var(--color-purple-400);--secondary:var(--color-stone-700);--secondary-foreground:var(--color-neutral-100);--secondary-hover:var(--color-stone-600);--muted:var(--color-stone-800);--muted-foreground:var(--color-neutral-400);--accent:var(--color-purple-900);--accent-foreground:var(--color-purple-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:var(--color-neutral-300);--ghost-hover:#ffffff14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:var(--color-stone-800);--surface-emphasis:var(--color-stone-600);--surface-raised:var(--color-stone-700);--border:var(--color-stone-600);--border-light:var(--color-stone-700);--border-lighter:var(--color-stone-800);--border-strong:var(--color-stone-500);--input:var(--color-stone-800);--input-foreground:var(--color-neutral-50);--ring:var(--color-neutral-500);--ring-error:var(--color-red-400);--card:var(--color-stone-800);--card-foreground:var(--color-neutral-100);--popover:var(--color-stone-800);--popover-foreground:var(--color-neutral-100);--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--chart-1:#ff6b33;--chart-2:#00b3a4;--chart-3:#2196a8;--chart-4:#ffc733;--chart-5:#ffad33;--chart-negative:#ff6b33;--chart-positive:#00b3a4;--chart-fill:#3382ff40;--chart-fill-2:#5096ff33;--chart-stroke-2:#5da3ff;--sidebar:var(--color-stone-800);--sidebar-foreground:var(--color-neutral-300);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-stone-700);--sidebar-ring:var(--color-neutral-500);--backdrop:#000c;--theme-background:#0c0a09}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground)}button,[role=button]{cursor:pointer}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}}@layer components;@layer utilities{.relative{position:relative}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3\\.5{margin-top:calc(var(--spacing) * 3.5)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-px{margin-top:1px}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:var(--spacing)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-11{height:calc(var(--spacing) * 11)}.min-h-svh{min-height:100svh}.w-full{width:100%}.max-w-sm{max-width:var(--container-sm)}.shrink-0{flex-shrink:0}.place-items-center{place-items:center}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.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)}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-border{border-color:var(--color-border)}.border-brand{border-color:var(--color-brand)}.border-destructive{border-color:var(--color-destructive)}.bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_8\\%\\,transparent\\)\\]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_8\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,var(--destructive) 8%,transparent)}}.bg-\\[color-mix\\(in_oklab\\,var\\(--foreground\\)_6\\%\\,transparent\\)\\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,var\\(--foreground\\)_6\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,var(--foreground) 6%,transparent)}}.bg-\\[var\\(--input\\)\\]{background-color:var(--input)}.bg-brand{background-color:var(--color-brand)}.bg-card{background-color:var(--color-card)}.bg-destructive{background-color:var(--color-destructive)}.bg-primary{background-color:var(--color-primary)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-px{padding-block:1px}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--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))}.text-\\[0\\.85em\\]{font-size:.85em}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.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)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.text-\\[var\\(--card\\)\\]{color:var(--card)}.text-brand{color:var(--color-brand)}.text-brand-foreground{color:var(--color-brand-foreground)}.text-destructive{color:var(--color-destructive)}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary-foreground{color:var(--color-primary-foreground)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.shadow-panel{--tw-shadow:var(--panel-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.backdrop-blur-\\[10px\\]{--tw-backdrop-blur:blur(10px);-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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.select-none{-webkit-user-select:none;user-select:none}.paused{animation-play-state:paused}.running{animation-play-state:running}@media (hover:hover){.hover\\:bg-\\[var\\(--primary-hover\\)\\]:hover{background-color:var(--primary-hover)}.hover\\:text-foreground:hover{color:var(--color-foreground)}}.focus-visible\\:border-ring:focus-visible{border-color:var(--color-ring)}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-0:focus-visible{outline-offset:0px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-ring:focus-visible{outline-color:var(--color-ring)}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--color-destructive)}}@property --tw-animation-delay{syntax:\"*\";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:\"*\";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:\"*\";inherits:false}@property --tw-animation-fill-mode{syntax:\"*\";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:\"*\";inherits:false;initial-value:0}@media (prefers-reduced-motion:reduce){:root{--duration-instant:0s;--duration-fast:0s;--duration-base:0s;--duration-slow:0s;--duration-slower:0s;--default-transition-duration:0s}[data-vaul-drawer],[data-vaul-overlay]{transition-duration:0s!important;animation-duration:0s!important}}.dark:not([data-theme]){--input:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--input:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}.dark:not([data-theme]){--surface:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--surface:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}.dark:not([data-theme]){--muted:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--muted:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}:root:not(.dark):not([data-theme]){--background:var(--color-neutral-50)}[data-slot=dialog-content],[data-slot=alert-dialog-content],[data-slot=sheet-content],[data-slot=drawer-content]{background-color:var(--card)}[data-slot=table-body] tr:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){[data-slot=table-body] tr:hover{background-color:color-mix(in oklab, var(--accent) 45%, transparent)}}[data-theme=canopy]{--background:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--background:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-stone-100))}}[data-theme=canopy]{--background-emphasis:var(--color-neutral-900);--foreground:#14201a;--foreground-alt:#3b4a42;--foreground-subtle:#5c6f64;--primary:var(--color-emerald-800);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-emerald-900);--secondary:#eaeeeb}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--secondary:color-mix(in oklab, var(--color-emerald-50) 30%, var(--color-neutral-100))}}[data-theme=canopy]{--secondary-foreground:#14201a;--secondary-hover:#f1f9f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--secondary-hover:color-mix(in oklab, var(--color-emerald-50) 45%, var(--color-neutral-50))}}[data-theme=canopy]{--muted:#eaedea}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--muted:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-neutral-100))}}[data-theme=canopy]{--muted-foreground:#5c6f64;--accent:#eaf0ed}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--accent:color-mix(in oklab, var(--color-emerald-50) 40%, var(--color-neutral-100))}}[data-theme=canopy]{--accent-foreground:var(--color-emerald-800);--destructive:var(--color-red-600);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:#3b4a42;--ghost-hover:#0f291d0d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:#fcfffd}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface:color-mix(in oklab, var(--color-emerald-50) 18%, var(--color-white))}}[data-theme=canopy]{--surface-emphasis:#bacbbf}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface-emphasis:color-mix(in oklab, var(--color-emerald-200) 25%, var(--color-neutral-300))}}[data-theme=canopy]{--surface-raised:#d5ded7}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface-raised:color-mix(in oklab, var(--color-emerald-100) 25%, var(--color-neutral-200))}}[data-theme=canopy]{--border:#c8ddd1}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border:color-mix(in oklab, var(--color-emerald-200) 30%, var(--color-neutral-200))}}[data-theme=canopy]{--border-light:#e3ede7}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-light:color-mix(in oklab, var(--color-emerald-100) 25%, var(--color-neutral-100))}}[data-theme=canopy]{--border-lighter:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-lighter:color-mix(in oklab, var(--color-emerald-50) 25%, var(--color-neutral-50))}}[data-theme=canopy]{--border-strong:#9abcaa}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-strong:color-mix(in oklab, var(--color-emerald-300) 30%, var(--color-neutral-400))}}[data-theme=canopy]{--input:#f2f8f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--input:color-mix(in oklab, var(--color-emerald-50) 35%, var(--color-neutral-50))}}[data-theme=canopy]{--input-foreground:#14201a;--ring:var(--color-emerald-600);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:#14201a;--popover:var(--color-white);--popover-foreground:#14201a;--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--sidebar:var(--color-white);--sidebar-foreground:#3b4a42;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:#c8ddd1}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--sidebar-border:color-mix(in oklab, var(--color-emerald-200) 30%, var(--color-neutral-200))}}[data-theme=canopy]{--sidebar-ring:var(--color-emerald-600);--backdrop:#0a1a1299;--theme-background:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--theme-background:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-stone-100))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--step:#35312f}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--step:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel:#23201e}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel:color-mix(in oklab, var(--color-stone-900) 45%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--background:#0b0f0d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--background:color-mix(in oklab, var(--color-emerald-950) 14%, var(--color-stone-950))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--background-emphasis:var(--color-neutral-100);--foreground:#e9f0ec;--foreground-alt:#c2d1c8;--foreground-subtle:#9aaba2;--primary:var(--color-emerald-500);--primary-foreground:#04140d;--primary-hover:var(--color-emerald-400);--secondary:#383c37}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary:color-mix(in oklab, var(--color-emerald-950) 18%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary-foreground:#e9f0ec;--secondary-hover:#484c46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary-hover:color-mix(in oklab, var(--color-emerald-950) 18%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted-foreground:#9aaba2;--accent:#1b2723}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--accent:color-mix(in oklab, var(--color-emerald-950) 35%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--accent-foreground:var(--color-emerald-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:#c2d1c8;--ghost-hover:#e9f0ec14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-emphasis:#4b524b}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-emphasis:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-raised:#3b423c}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-raised:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border:#39433c}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border:color-mix(in oklab, var(--color-emerald-900) 18%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-light:#242b27}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-light:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-lighter:#232624}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-lighter:color-mix(in oklab, var(--color-emerald-950) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-strong:#48554d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-strong:color-mix(in oklab, var(--color-emerald-800) 18%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--input:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--input:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--input-foreground:#e9f0ec;--ring:var(--color-emerald-500);--ring-error:var(--color-red-400);--card:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--card:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--card-foreground:#e9f0ec;--popover:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--popover:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--popover-foreground:#e9f0ec;--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--sidebar:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-foreground:#c2d1c8;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:#242b27}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-border:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-ring:var(--color-emerald-500);--backdrop:#000c;--theme-background:#0b0f0d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--theme-background:color-mix(in oklab, var(--color-emerald-950) 14%, var(--color-stone-950))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:#065f46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:color-mix(in oklab, var(--color-emerald-800) 52%, var(--background))}}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:color-mix(in oklab, var(--color-emerald-900) 62%, var(--background))}}[data-theme=canopy] :is([data-slot=input-group],[data-slot=input],[data-slot=textarea],textarea){--tw-ring-offset-width:0px;--tw-ring-offset-color:transparent}[data-theme=canopy].dark body,[data-theme=canopy] .dark body{background-image:radial-gradient(1200px 720px at 8% -10%, var(--wash-a), transparent 62%), radial-gradient(1000px 620px at 96% 2%, var(--wash-b), transparent 58%);background-repeat:no-repeat;background-attachment:fixed}[data-theme=canopy] [data-slot=card]{box-shadow:none}:root{--brand:var(--color-emerald-800);--brand-foreground:var(--color-neutral-50)}[data-theme=canopy].dark,[data-theme=canopy] .dark{--brand:var(--color-emerald-400);--brand-foreground:#04140d;--primary:#e9f0ec;--primary-foreground:#101711;--primary-hover:var(--color-white)}:root{--panel-shadow:0 18px 40px -28px #14201a73}[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel-shadow:0 18px 44px -26px #000000b3;--wash-a:#065f46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:color-mix(in oklab, var(--color-emerald-800) 55%, var(--background))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:#064e3b}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:color-mix(in oklab, var(--color-emerald-900) 70%, var(--background))}}@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-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}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}</style><script>matchMedia('(prefers-color-scheme:dark)').matches&&document.documentElement.classList.add('dark')<\/script></head><body class=\"grid min-h-svh place-items-center p-6 text-foreground\"><main class=\"w-full max-w-sm rounded-2xl border border-border bg-card p-8 shadow-panel backdrop-blur-[10px]\"><div class=\"mb-5 grid size-11 place-items-center rounded-xl bg-destructive text-[var(--card)]\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-circle-alert size-5\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\"></line><line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\"></line></svg></div><p class=\"mb-1 text-xs font-semibold uppercase tracking-wide text-brand\">Canopy CLI</p><h1 class=\"mb-2 text-2xl font-semibold tracking-tight break-words\">Sign-in didn’t finish</h1><p class=\"mt-2 text-sm leading-relaxed text-muted-foreground\">Return to the terminal and run canopy login again. Reloading this page won’t help.</p><p class=\"mt-6 border-t border-border pt-4 text-xs text-muted-foreground\">If the terminal still says it’s waiting, cancel with <kbd class=\"rounded border border-border bg-[var(--input)] px-1 py-px text-[0.85em] font-normal\">Ctrl</kbd>+<kbd class=\"rounded border border-border bg-[var(--input)] px-1 py-px text-[0.85em] font-normal\">C</kbd> and try again.</p></main></body></html>";
|
|
10
|
+
const okHtml = "<!doctype html><html lang=\"en\" data-theme=\"canopy\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><title>You’re signed in · Canopy</title><style>/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@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-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-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;--tw-duration:initial;--tw-outline-style:solid;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:\"Helvetica Now for Monks\", ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--color-red-100:#ffebf0;--color-red-200:#ffd1dd;--color-red-300:#ffa8be;--color-red-400:#ff7a9c;--color-red-500:#ff527d;--color-red-600:#ff245b;--color-red-800:#a30029;--color-red-950:#610018;--color-amber-200:#fde68a;--color-amber-950:#451a03;--color-yellow-100:#fff7db;--color-yellow-900:#7a6000;--color-green-100:#e3fcf1;--color-green-200:#b8fadd;--color-green-900:#067445;--color-green-950:#065533;--color-emerald-50:#ecfdf5;--color-emerald-100:#d1fae5;--color-emerald-200:#a7f3d0;--color-emerald-300:#6ee7b7;--color-emerald-400:#34d399;--color-emerald-500:#10b981;--color-emerald-600:#059669;--color-emerald-800:#065f46;--color-emerald-900:#064e3b;--color-emerald-950:#022c22;--color-purple-50:#faf6fd;--color-purple-300:#d6b6f1;--color-purple-400:#c598ec;--color-purple-500:#ac6de3;--color-purple-600:#8c3fd2;--color-purple-700:#7d26c9;--color-purple-900:#501881;--color-gray-800:#5d5d60;--color-neutral-50:#f5f5f4;--color-neutral-100:#e9e8e7;--color-neutral-200:#d6d4d2;--color-neutral-300:#c0beb9;--color-neutral-400:#adaaa4;--color-neutral-500:#97938c;--color-neutral-600:#837f77;--color-neutral-700:#6c6962;--color-neutral-900:#484641;--color-neutral-950:#3e3c38;--color-stone-100:#f5f5f4;--color-stone-500:#78716c;--color-stone-600:#57534e;--color-stone-700:#44403c;--color-stone-800:#292524;--color-stone-900:#1c1917;--color-stone-950:#0c0a09;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--text-xs:12px;--text-xs--line-height:16px;--text-sm:14px;--text-sm--line-height:20px;--text-2xl:24px;--text-2xl--line-height:32px;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.01em;--tracking-wide:.015em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-2xl:16px;--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-foreground:var(--foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-muted-foreground:var(--muted-foreground);--color-destructive:var(--destructive);--color-border:var(--border);--color-ring:var(--ring);--color-card:var(--card);--color-brand:var(--brand);--color-brand-foreground:var(--brand-foreground)}}@layer base{@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)}}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;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:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root,[data-theme=monks-flow]{--background:var(--color-white);--background-emphasis:var(--color-neutral-900);--foreground:var(--color-neutral-950);--foreground-alt:var(--color-neutral-700);--foreground-subtle:var(--color-neutral-600);--primary:var(--color-neutral-900);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-neutral-950);--secondary:#f5f3f0;--secondary-foreground:var(--color-neutral-900);--secondary-hover:#e7e2dc;--muted:var(--color-neutral-100);--muted-foreground:var(--color-neutral-500);--accent:#e7e2dc;--accent-foreground:var(--color-neutral-900);--destructive:#e11d48;--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:var(--color-neutral-700);--ghost-hover:#0000000d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:var(--color-neutral-50);--surface-emphasis:var(--color-neutral-300);--surface-raised:var(--color-neutral-200);--border:var(--color-neutral-200);--border-light:var(--color-neutral-100);--border-lighter:var(--color-neutral-50);--border-strong:var(--color-neutral-400);--input:var(--color-neutral-50);--input-foreground:var(--color-neutral-950);--ring:var(--color-black);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:var(--color-neutral-950);--popover:var(--color-white);--popover-foreground:var(--color-neutral-950);--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--chart-1:#f54a00;--chart-2:#009689;--chart-3:#104e64;--chart-4:#ffb900;--chart-5:#fe9a00;--chart-negative:#f54a00;--chart-positive:#009689;--chart-fill:#bfdeffb3;--chart-fill-2:#aaccffb3;--chart-stroke-2:#3f8dff;--sidebar:var(--color-neutral-50);--sidebar-foreground:var(--color-gray-800);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-neutral-200);--sidebar-ring:var(--ring);--backdrop:#0009;--theme-background:#f5f4f2}:root.dark:not([data-theme]),[data-theme=monks-flow].dark,[data-theme=monks-flow] .dark{--background:var(--color-stone-900);--background-emphasis:var(--color-neutral-100);--foreground:var(--color-neutral-50);--foreground-alt:var(--color-neutral-300);--foreground-subtle:var(--color-neutral-400);--primary:var(--color-neutral-50);--primary-foreground:var(--color-black);--primary-hover:var(--color-neutral-100);--secondary:var(--color-stone-700);--secondary-foreground:var(--color-neutral-100);--secondary-hover:var(--color-stone-600);--muted:var(--color-stone-800);--muted-foreground:var(--color-neutral-500);--accent:var(--color-neutral-900);--accent-foreground:var(--color-neutral-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:var(--color-neutral-300);--ghost-hover:#ffffff14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:var(--color-stone-800);--surface-emphasis:var(--color-stone-600);--surface-raised:var(--color-stone-700);--border:var(--color-stone-600);--border-light:var(--color-stone-700);--border-lighter:var(--color-stone-800);--border-strong:var(--color-stone-500);--input:var(--color-stone-800);--input-foreground:var(--color-neutral-50);--ring:var(--color-white);--ring-error:var(--color-red-400);--card:var(--color-stone-800);--card-foreground:var(--color-neutral-100);--popover:var(--color-stone-800);--popover-foreground:var(--color-neutral-100);--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--chart-1:#ff6b33;--chart-2:#00b3a4;--chart-3:#2196a8;--chart-4:#ffc733;--chart-5:#ffad33;--chart-negative:#ff6b33;--chart-positive:#00b3a4;--chart-fill:#3382ff40;--chart-fill-2:#5096ff33;--chart-stroke-2:#5da3ff;--sidebar:var(--color-stone-800);--sidebar-foreground:var(--color-neutral-300);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-stone-700);--sidebar-ring:var(--ring);--backdrop:#000c;--theme-background:#0c0a09}[data-theme=metropolis]{--background:var(--color-white);--background-emphasis:var(--color-neutral-900);--foreground:var(--color-neutral-950);--foreground-alt:var(--color-neutral-700);--foreground-subtle:var(--color-neutral-600);--primary:var(--color-purple-600);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-purple-700);--secondary:var(--color-neutral-100);--secondary-foreground:var(--color-neutral-900);--secondary-hover:var(--color-neutral-50);--muted:var(--color-neutral-100);--muted-foreground:var(--color-neutral-500);--accent:var(--color-purple-50);--accent-foreground:var(--color-purple-600);--destructive:var(--color-red-600);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:var(--color-neutral-700);--ghost-hover:#0000000d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:var(--color-neutral-50);--surface-emphasis:var(--color-neutral-300);--surface-raised:var(--color-neutral-200);--border:var(--color-neutral-200);--border-light:var(--color-neutral-100);--border-lighter:var(--color-neutral-50);--border-strong:var(--color-neutral-400);--input:var(--color-neutral-50);--input-foreground:var(--color-neutral-950);--ring:var(--color-neutral-300);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:var(--color-neutral-950);--popover:var(--color-white);--popover-foreground:var(--color-neutral-950);--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--chart-1:#f54a00;--chart-2:#009689;--chart-3:#104e64;--chart-4:#ffb900;--chart-5:#fe9a00;--chart-negative:#f54a00;--chart-positive:#009689;--chart-fill:#bfdeffb3;--chart-fill-2:#aaccffb3;--chart-stroke-2:#3f8dff;--sidebar:var(--color-neutral-50);--sidebar-foreground:var(--color-gray-800);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-neutral-200);--sidebar-ring:var(--color-neutral-300);--backdrop:#0009;--theme-background:#f0f3f8}[data-theme=metropolis].dark,[data-theme=metropolis] .dark{--background:var(--color-stone-900);--background-emphasis:var(--color-neutral-100);--foreground:var(--color-neutral-50);--foreground-alt:var(--color-neutral-300);--foreground-subtle:var(--color-neutral-400);--primary:var(--color-purple-500);--primary-foreground:var(--color-white);--primary-hover:var(--color-purple-400);--secondary:var(--color-stone-700);--secondary-foreground:var(--color-neutral-100);--secondary-hover:var(--color-stone-600);--muted:var(--color-stone-800);--muted-foreground:var(--color-neutral-400);--accent:var(--color-purple-900);--accent-foreground:var(--color-purple-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:var(--color-neutral-300);--ghost-hover:#ffffff14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:var(--color-stone-800);--surface-emphasis:var(--color-stone-600);--surface-raised:var(--color-stone-700);--border:var(--color-stone-600);--border-light:var(--color-stone-700);--border-lighter:var(--color-stone-800);--border-strong:var(--color-stone-500);--input:var(--color-stone-800);--input-foreground:var(--color-neutral-50);--ring:var(--color-neutral-500);--ring-error:var(--color-red-400);--card:var(--color-stone-800);--card-foreground:var(--color-neutral-100);--popover:var(--color-stone-800);--popover-foreground:var(--color-neutral-100);--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--chart-1:#ff6b33;--chart-2:#00b3a4;--chart-3:#2196a8;--chart-4:#ffc733;--chart-5:#ffad33;--chart-negative:#ff6b33;--chart-positive:#00b3a4;--chart-fill:#3382ff40;--chart-fill-2:#5096ff33;--chart-stroke-2:#5da3ff;--sidebar:var(--color-stone-800);--sidebar-foreground:var(--color-neutral-300);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-stone-700);--sidebar-ring:var(--color-neutral-500);--backdrop:#000c;--theme-background:#0c0a09}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground)}button,[role=button]{cursor:pointer}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}}@layer components;@layer utilities{.relative{position:relative}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3\\.5{margin-top:calc(var(--spacing) * 3.5)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-px{margin-top:1px}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:var(--spacing)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-11{height:calc(var(--spacing) * 11)}.min-h-svh{min-height:100svh}.w-full{width:100%}.max-w-sm{max-width:var(--container-sm)}.shrink-0{flex-shrink:0}.place-items-center{place-items:center}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.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)}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-border{border-color:var(--color-border)}.border-brand{border-color:var(--color-brand)}.border-destructive{border-color:var(--color-destructive)}.bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_8\\%\\,transparent\\)\\]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_8\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,var(--destructive) 8%,transparent)}}.bg-\\[color-mix\\(in_oklab\\,var\\(--foreground\\)_6\\%\\,transparent\\)\\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,var\\(--foreground\\)_6\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,var(--foreground) 6%,transparent)}}.bg-\\[var\\(--input\\)\\]{background-color:var(--input)}.bg-brand{background-color:var(--color-brand)}.bg-card{background-color:var(--color-card)}.bg-destructive{background-color:var(--color-destructive)}.bg-primary{background-color:var(--color-primary)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-px{padding-block:1px}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--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))}.text-\\[0\\.85em\\]{font-size:.85em}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.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)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.text-\\[var\\(--card\\)\\]{color:var(--card)}.text-brand{color:var(--color-brand)}.text-brand-foreground{color:var(--color-brand-foreground)}.text-destructive{color:var(--color-destructive)}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary-foreground{color:var(--color-primary-foreground)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.shadow-panel{--tw-shadow:var(--panel-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.backdrop-blur-\\[10px\\]{--tw-backdrop-blur:blur(10px);-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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.select-none{-webkit-user-select:none;user-select:none}.paused{animation-play-state:paused}.running{animation-play-state:running}@media (hover:hover){.hover\\:bg-\\[var\\(--primary-hover\\)\\]:hover{background-color:var(--primary-hover)}.hover\\:text-foreground:hover{color:var(--color-foreground)}}.focus-visible\\:border-ring:focus-visible{border-color:var(--color-ring)}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-0:focus-visible{outline-offset:0px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-ring:focus-visible{outline-color:var(--color-ring)}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--color-destructive)}}@property --tw-animation-delay{syntax:\"*\";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:\"*\";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:\"*\";inherits:false}@property --tw-animation-fill-mode{syntax:\"*\";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:\"*\";inherits:false;initial-value:0}@media (prefers-reduced-motion:reduce){:root{--duration-instant:0s;--duration-fast:0s;--duration-base:0s;--duration-slow:0s;--duration-slower:0s;--default-transition-duration:0s}[data-vaul-drawer],[data-vaul-overlay]{transition-duration:0s!important;animation-duration:0s!important}}.dark:not([data-theme]){--input:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--input:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}.dark:not([data-theme]){--surface:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--surface:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}.dark:not([data-theme]){--muted:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--muted:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}:root:not(.dark):not([data-theme]){--background:var(--color-neutral-50)}[data-slot=dialog-content],[data-slot=alert-dialog-content],[data-slot=sheet-content],[data-slot=drawer-content]{background-color:var(--card)}[data-slot=select-trigger],[data-slot=textarea]{background-color:var(--input)}[data-slot=table-body] tr:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){[data-slot=table-body] tr:hover{background-color:color-mix(in oklab, var(--accent) 45%, transparent)}}[data-theme=canopy]{--background:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--background:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-stone-100))}}[data-theme=canopy]{--background-emphasis:var(--color-neutral-900);--foreground:#14201a;--foreground-alt:#3b4a42;--foreground-subtle:#5c6f64;--primary:var(--color-emerald-800);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-emerald-900);--secondary:#eaeeeb}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--secondary:color-mix(in oklab, var(--color-emerald-50) 30%, var(--color-neutral-100))}}[data-theme=canopy]{--secondary-foreground:#14201a;--secondary-hover:#f1f9f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--secondary-hover:color-mix(in oklab, var(--color-emerald-50) 45%, var(--color-neutral-50))}}[data-theme=canopy]{--muted:#eaedea}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--muted:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-neutral-100))}}[data-theme=canopy]{--muted-foreground:#5c6f64;--accent:#eaf0ed}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--accent:color-mix(in oklab, var(--color-emerald-50) 40%, var(--color-neutral-100))}}[data-theme=canopy]{--accent-foreground:var(--color-emerald-800);--destructive:var(--color-red-600);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:#3b4a42;--ghost-hover:#0f291d0d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:#fcfffd}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface:color-mix(in oklab, var(--color-emerald-50) 18%, var(--color-white))}}[data-theme=canopy]{--surface-emphasis:#bacbbf}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface-emphasis:color-mix(in oklab, var(--color-emerald-200) 25%, var(--color-neutral-300))}}[data-theme=canopy]{--surface-raised:#d5ded7}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface-raised:color-mix(in oklab, var(--color-emerald-100) 25%, var(--color-neutral-200))}}[data-theme=canopy]{--border:#c8ddd1}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border:color-mix(in oklab, var(--color-emerald-200) 30%, var(--color-neutral-200))}}[data-theme=canopy]{--border-light:#e3ede7}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-light:color-mix(in oklab, var(--color-emerald-100) 25%, var(--color-neutral-100))}}[data-theme=canopy]{--border-lighter:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-lighter:color-mix(in oklab, var(--color-emerald-50) 25%, var(--color-neutral-50))}}[data-theme=canopy]{--border-strong:#9abcaa}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-strong:color-mix(in oklab, var(--color-emerald-300) 30%, var(--color-neutral-400))}}[data-theme=canopy]{--input:#f2f8f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--input:color-mix(in oklab, var(--color-emerald-50) 35%, var(--color-neutral-50))}}[data-theme=canopy]{--input-foreground:#14201a;--ring:var(--color-emerald-600);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:#14201a;--popover:var(--color-white);--popover-foreground:#14201a;--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--sidebar:var(--color-white);--sidebar-foreground:#3b4a42;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:#c8ddd1}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--sidebar-border:color-mix(in oklab, var(--color-emerald-200) 30%, var(--color-neutral-200))}}[data-theme=canopy]{--sidebar-ring:var(--color-emerald-600);--backdrop:#0a1a1299;--theme-background:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--theme-background:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-stone-100))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--step:#35312f}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--step:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel:#23201e}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel:color-mix(in oklab, var(--color-stone-900) 45%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--background:#0b0f0d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--background:color-mix(in oklab, var(--color-emerald-950) 14%, var(--color-stone-950))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--background-emphasis:var(--color-neutral-100);--foreground:#e9f0ec;--foreground-alt:#c2d1c8;--foreground-subtle:#9aaba2;--primary:var(--color-emerald-500);--primary-foreground:#04140d;--primary-hover:var(--color-emerald-400);--secondary:#383c37}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary:color-mix(in oklab, var(--color-emerald-950) 18%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary-foreground:#e9f0ec;--secondary-hover:#484c46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary-hover:color-mix(in oklab, var(--color-emerald-950) 18%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted-foreground:#9aaba2;--accent:#1b2723}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--accent:color-mix(in oklab, var(--color-emerald-950) 35%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--accent-foreground:var(--color-emerald-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:#c2d1c8;--ghost-hover:#e9f0ec14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-emphasis:#4b524b}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-emphasis:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-raised:#3b423c}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-raised:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border:#39433c}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border:color-mix(in oklab, var(--color-emerald-900) 18%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-light:#242b27}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-light:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-lighter:#232624}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-lighter:color-mix(in oklab, var(--color-emerald-950) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-strong:#48554d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-strong:color-mix(in oklab, var(--color-emerald-800) 18%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--input:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--input:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--input-foreground:#e9f0ec;--ring:var(--color-emerald-500);--ring-error:var(--color-red-400);--card:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--card:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--card-foreground:#e9f0ec;--popover:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--popover:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--popover-foreground:#e9f0ec;--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--sidebar:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-foreground:#c2d1c8;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:#242b27}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-border:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-ring:var(--color-emerald-500);--backdrop:#000c;--theme-background:#0b0f0d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--theme-background:color-mix(in oklab, var(--color-emerald-950) 14%, var(--color-stone-950))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:#065f46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:color-mix(in oklab, var(--color-emerald-800) 52%, var(--background))}}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:color-mix(in oklab, var(--color-emerald-900) 62%, var(--background))}}[data-theme=canopy] :is([data-slot=input-group],[data-slot=input],[data-slot=textarea],textarea){--tw-ring-offset-width:0px;--tw-ring-offset-color:transparent}[data-theme=canopy].dark body,[data-theme=canopy] .dark body{background-image:radial-gradient(1200px 720px at 8% -10%, var(--wash-a), transparent 62%), radial-gradient(1000px 620px at 96% 2%, var(--wash-b), transparent 58%);background-repeat:no-repeat;background-attachment:fixed}[data-theme=canopy] [data-slot=card]{box-shadow:none}:root{--brand:var(--color-emerald-800);--brand-foreground:var(--color-neutral-50)}[data-theme=canopy].dark,[data-theme=canopy] .dark{--brand:var(--color-emerald-400);--brand-foreground:#04140d;--primary:#e9f0ec;--primary-foreground:#101711;--primary-hover:var(--color-white)}:root{--panel-shadow:0 18px 40px -28px #14201a73}[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel-shadow:0 18px 44px -26px #000000b3;--wash-a:#065f46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:color-mix(in oklab, var(--color-emerald-800) 55%, var(--background))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:#064e3b}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:color-mix(in oklab, var(--color-emerald-900) 70%, var(--background))}}@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-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}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}</style><script>matchMedia('(prefers-color-scheme:dark)').matches&&document.documentElement.classList.add('dark')<\/script></head><body class=\"grid min-h-svh place-items-center p-6 text-foreground\"><main class=\"w-full max-w-sm rounded-2xl border border-border bg-card p-8 shadow-panel backdrop-blur-[10px]\"><div class=\"mb-5 grid size-11 place-items-center rounded-xl bg-brand text-brand-foreground\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-check size-5\" aria-hidden=\"true\"><path d=\"M20 6 9 17l-5-5\"></path></svg></div><p class=\"mb-1 text-xs font-semibold uppercase tracking-wide text-brand\">Canopy CLI</p><h1 class=\"mb-2 text-2xl font-semibold tracking-tight break-words\">You’re signed in</h1><p class=\"mt-2 text-sm leading-relaxed text-muted-foreground\">You can close this tab and return to the terminal — the CLI has your code.</p><p class=\"mt-6 border-t border-border pt-4 text-xs text-muted-foreground\">This tab only finishes the browser step — keep using the terminal for the rest.</p></main></body></html>";
|
|
11
|
+
const failedHtml = "<!doctype html><html lang=\"en\" data-theme=\"canopy\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><title>Sign-in didn’t finish · Canopy</title><style>/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@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-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-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;--tw-duration:initial;--tw-outline-style:solid;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:\"Helvetica Now for Monks\", ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--color-red-100:#ffebf0;--color-red-200:#ffd1dd;--color-red-300:#ffa8be;--color-red-400:#ff7a9c;--color-red-500:#ff527d;--color-red-600:#ff245b;--color-red-800:#a30029;--color-red-950:#610018;--color-amber-200:#fde68a;--color-amber-950:#451a03;--color-yellow-100:#fff7db;--color-yellow-900:#7a6000;--color-green-100:#e3fcf1;--color-green-200:#b8fadd;--color-green-900:#067445;--color-green-950:#065533;--color-emerald-50:#ecfdf5;--color-emerald-100:#d1fae5;--color-emerald-200:#a7f3d0;--color-emerald-300:#6ee7b7;--color-emerald-400:#34d399;--color-emerald-500:#10b981;--color-emerald-600:#059669;--color-emerald-800:#065f46;--color-emerald-900:#064e3b;--color-emerald-950:#022c22;--color-purple-50:#faf6fd;--color-purple-300:#d6b6f1;--color-purple-400:#c598ec;--color-purple-500:#ac6de3;--color-purple-600:#8c3fd2;--color-purple-700:#7d26c9;--color-purple-900:#501881;--color-gray-800:#5d5d60;--color-neutral-50:#f5f5f4;--color-neutral-100:#e9e8e7;--color-neutral-200:#d6d4d2;--color-neutral-300:#c0beb9;--color-neutral-400:#adaaa4;--color-neutral-500:#97938c;--color-neutral-600:#837f77;--color-neutral-700:#6c6962;--color-neutral-900:#484641;--color-neutral-950:#3e3c38;--color-stone-100:#f5f5f4;--color-stone-500:#78716c;--color-stone-600:#57534e;--color-stone-700:#44403c;--color-stone-800:#292524;--color-stone-900:#1c1917;--color-stone-950:#0c0a09;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--text-xs:12px;--text-xs--line-height:16px;--text-sm:14px;--text-sm--line-height:20px;--text-2xl:24px;--text-2xl--line-height:32px;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.01em;--tracking-wide:.015em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-2xl:16px;--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-foreground:var(--foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-muted-foreground:var(--muted-foreground);--color-destructive:var(--destructive);--color-border:var(--border);--color-ring:var(--ring);--color-card:var(--card);--color-brand:var(--brand);--color-brand-foreground:var(--brand-foreground)}}@layer base{@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)}}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;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:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root,[data-theme=monks-flow]{--background:var(--color-white);--background-emphasis:var(--color-neutral-900);--foreground:var(--color-neutral-950);--foreground-alt:var(--color-neutral-700);--foreground-subtle:var(--color-neutral-600);--primary:var(--color-neutral-900);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-neutral-950);--secondary:#f5f3f0;--secondary-foreground:var(--color-neutral-900);--secondary-hover:#e7e2dc;--muted:var(--color-neutral-100);--muted-foreground:var(--color-neutral-500);--accent:#e7e2dc;--accent-foreground:var(--color-neutral-900);--destructive:#e11d48;--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:var(--color-neutral-700);--ghost-hover:#0000000d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:var(--color-neutral-50);--surface-emphasis:var(--color-neutral-300);--surface-raised:var(--color-neutral-200);--border:var(--color-neutral-200);--border-light:var(--color-neutral-100);--border-lighter:var(--color-neutral-50);--border-strong:var(--color-neutral-400);--input:var(--color-neutral-50);--input-foreground:var(--color-neutral-950);--ring:var(--color-black);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:var(--color-neutral-950);--popover:var(--color-white);--popover-foreground:var(--color-neutral-950);--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--chart-1:#f54a00;--chart-2:#009689;--chart-3:#104e64;--chart-4:#ffb900;--chart-5:#fe9a00;--chart-negative:#f54a00;--chart-positive:#009689;--chart-fill:#bfdeffb3;--chart-fill-2:#aaccffb3;--chart-stroke-2:#3f8dff;--sidebar:var(--color-neutral-50);--sidebar-foreground:var(--color-gray-800);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-neutral-200);--sidebar-ring:var(--ring);--backdrop:#0009;--theme-background:#f5f4f2}:root.dark:not([data-theme]),[data-theme=monks-flow].dark,[data-theme=monks-flow] .dark{--background:var(--color-stone-900);--background-emphasis:var(--color-neutral-100);--foreground:var(--color-neutral-50);--foreground-alt:var(--color-neutral-300);--foreground-subtle:var(--color-neutral-400);--primary:var(--color-neutral-50);--primary-foreground:var(--color-black);--primary-hover:var(--color-neutral-100);--secondary:var(--color-stone-700);--secondary-foreground:var(--color-neutral-100);--secondary-hover:var(--color-stone-600);--muted:var(--color-stone-800);--muted-foreground:var(--color-neutral-500);--accent:var(--color-neutral-900);--accent-foreground:var(--color-neutral-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:var(--color-neutral-300);--ghost-hover:#ffffff14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:var(--color-stone-800);--surface-emphasis:var(--color-stone-600);--surface-raised:var(--color-stone-700);--border:var(--color-stone-600);--border-light:var(--color-stone-700);--border-lighter:var(--color-stone-800);--border-strong:var(--color-stone-500);--input:var(--color-stone-800);--input-foreground:var(--color-neutral-50);--ring:var(--color-white);--ring-error:var(--color-red-400);--card:var(--color-stone-800);--card-foreground:var(--color-neutral-100);--popover:var(--color-stone-800);--popover-foreground:var(--color-neutral-100);--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--chart-1:#ff6b33;--chart-2:#00b3a4;--chart-3:#2196a8;--chart-4:#ffc733;--chart-5:#ffad33;--chart-negative:#ff6b33;--chart-positive:#00b3a4;--chart-fill:#3382ff40;--chart-fill-2:#5096ff33;--chart-stroke-2:#5da3ff;--sidebar:var(--color-stone-800);--sidebar-foreground:var(--color-neutral-300);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-stone-700);--sidebar-ring:var(--ring);--backdrop:#000c;--theme-background:#0c0a09}[data-theme=metropolis]{--background:var(--color-white);--background-emphasis:var(--color-neutral-900);--foreground:var(--color-neutral-950);--foreground-alt:var(--color-neutral-700);--foreground-subtle:var(--color-neutral-600);--primary:var(--color-purple-600);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-purple-700);--secondary:var(--color-neutral-100);--secondary-foreground:var(--color-neutral-900);--secondary-hover:var(--color-neutral-50);--muted:var(--color-neutral-100);--muted-foreground:var(--color-neutral-500);--accent:var(--color-purple-50);--accent-foreground:var(--color-purple-600);--destructive:var(--color-red-600);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:var(--color-neutral-700);--ghost-hover:#0000000d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:var(--color-neutral-50);--surface-emphasis:var(--color-neutral-300);--surface-raised:var(--color-neutral-200);--border:var(--color-neutral-200);--border-light:var(--color-neutral-100);--border-lighter:var(--color-neutral-50);--border-strong:var(--color-neutral-400);--input:var(--color-neutral-50);--input-foreground:var(--color-neutral-950);--ring:var(--color-neutral-300);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:var(--color-neutral-950);--popover:var(--color-white);--popover-foreground:var(--color-neutral-950);--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--chart-1:#f54a00;--chart-2:#009689;--chart-3:#104e64;--chart-4:#ffb900;--chart-5:#fe9a00;--chart-negative:#f54a00;--chart-positive:#009689;--chart-fill:#bfdeffb3;--chart-fill-2:#aaccffb3;--chart-stroke-2:#3f8dff;--sidebar:var(--color-neutral-50);--sidebar-foreground:var(--color-gray-800);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-neutral-200);--sidebar-ring:var(--color-neutral-300);--backdrop:#0009;--theme-background:#f0f3f8}[data-theme=metropolis].dark,[data-theme=metropolis] .dark{--background:var(--color-stone-900);--background-emphasis:var(--color-neutral-100);--foreground:var(--color-neutral-50);--foreground-alt:var(--color-neutral-300);--foreground-subtle:var(--color-neutral-400);--primary:var(--color-purple-500);--primary-foreground:var(--color-white);--primary-hover:var(--color-purple-400);--secondary:var(--color-stone-700);--secondary-foreground:var(--color-neutral-100);--secondary-hover:var(--color-stone-600);--muted:var(--color-stone-800);--muted-foreground:var(--color-neutral-400);--accent:var(--color-purple-900);--accent-foreground:var(--color-purple-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:var(--color-neutral-300);--ghost-hover:#ffffff14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:var(--color-stone-800);--surface-emphasis:var(--color-stone-600);--surface-raised:var(--color-stone-700);--border:var(--color-stone-600);--border-light:var(--color-stone-700);--border-lighter:var(--color-stone-800);--border-strong:var(--color-stone-500);--input:var(--color-stone-800);--input-foreground:var(--color-neutral-50);--ring:var(--color-neutral-500);--ring-error:var(--color-red-400);--card:var(--color-stone-800);--card-foreground:var(--color-neutral-100);--popover:var(--color-stone-800);--popover-foreground:var(--color-neutral-100);--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--chart-1:#ff6b33;--chart-2:#00b3a4;--chart-3:#2196a8;--chart-4:#ffc733;--chart-5:#ffad33;--chart-negative:#ff6b33;--chart-positive:#00b3a4;--chart-fill:#3382ff40;--chart-fill-2:#5096ff33;--chart-stroke-2:#5da3ff;--sidebar:var(--color-stone-800);--sidebar-foreground:var(--color-neutral-300);--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:var(--color-stone-700);--sidebar-ring:var(--color-neutral-500);--backdrop:#000c;--theme-background:#0c0a09}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground)}button,[role=button]{cursor:pointer}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}}@layer components;@layer utilities{.relative{position:relative}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3\\.5{margin-top:calc(var(--spacing) * 3.5)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-px{margin-top:1px}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:var(--spacing)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-11{height:calc(var(--spacing) * 11)}.min-h-svh{min-height:100svh}.w-full{width:100%}.max-w-sm{max-width:var(--container-sm)}.shrink-0{flex-shrink:0}.place-items-center{place-items:center}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.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)}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-border{border-color:var(--color-border)}.border-brand{border-color:var(--color-brand)}.border-destructive{border-color:var(--color-destructive)}.bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_8\\%\\,transparent\\)\\]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_8\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,var(--destructive) 8%,transparent)}}.bg-\\[color-mix\\(in_oklab\\,var\\(--foreground\\)_6\\%\\,transparent\\)\\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,var\\(--foreground\\)_6\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,var(--foreground) 6%,transparent)}}.bg-\\[var\\(--input\\)\\]{background-color:var(--input)}.bg-brand{background-color:var(--color-brand)}.bg-card{background-color:var(--color-card)}.bg-destructive{background-color:var(--color-destructive)}.bg-primary{background-color:var(--color-primary)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-px{padding-block:1px}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--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))}.text-\\[0\\.85em\\]{font-size:.85em}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.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)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.text-\\[var\\(--card\\)\\]{color:var(--card)}.text-brand{color:var(--color-brand)}.text-brand-foreground{color:var(--color-brand-foreground)}.text-destructive{color:var(--color-destructive)}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary-foreground{color:var(--color-primary-foreground)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.shadow-panel{--tw-shadow:var(--panel-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.backdrop-blur-\\[10px\\]{--tw-backdrop-blur:blur(10px);-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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.select-none{-webkit-user-select:none;user-select:none}.paused{animation-play-state:paused}.running{animation-play-state:running}@media (hover:hover){.hover\\:bg-\\[var\\(--primary-hover\\)\\]:hover{background-color:var(--primary-hover)}.hover\\:text-foreground:hover{color:var(--color-foreground)}}.focus-visible\\:border-ring:focus-visible{border-color:var(--color-ring)}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-0:focus-visible{outline-offset:0px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-ring:focus-visible{outline-color:var(--color-ring)}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--color-destructive)}}@property --tw-animation-delay{syntax:\"*\";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:\"*\";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:\"*\";inherits:false}@property --tw-animation-fill-mode{syntax:\"*\";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:\"*\";inherits:false;initial-value:0}@media (prefers-reduced-motion:reduce){:root{--duration-instant:0s;--duration-fast:0s;--duration-base:0s;--duration-slow:0s;--duration-slower:0s;--default-transition-duration:0s}[data-vaul-drawer],[data-vaul-overlay]{transition-duration:0s!important;animation-duration:0s!important}}.dark:not([data-theme]){--input:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--input:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}.dark:not([data-theme]){--surface:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--surface:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}.dark:not([data-theme]){--muted:#35312f}@supports (color:color-mix(in lab, red, red)){.dark:not([data-theme]){--muted:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}:root:not(.dark):not([data-theme]){--background:var(--color-neutral-50)}[data-slot=dialog-content],[data-slot=alert-dialog-content],[data-slot=sheet-content],[data-slot=drawer-content]{background-color:var(--card)}[data-slot=select-trigger],[data-slot=textarea]{background-color:var(--input)}[data-slot=table-body] tr:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){[data-slot=table-body] tr:hover{background-color:color-mix(in oklab, var(--accent) 45%, transparent)}}[data-theme=canopy]{--background:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--background:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-stone-100))}}[data-theme=canopy]{--background-emphasis:var(--color-neutral-900);--foreground:#14201a;--foreground-alt:#3b4a42;--foreground-subtle:#5c6f64;--primary:var(--color-emerald-800);--primary-foreground:var(--color-neutral-50);--primary-hover:var(--color-emerald-900);--secondary:#eaeeeb}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--secondary:color-mix(in oklab, var(--color-emerald-50) 30%, var(--color-neutral-100))}}[data-theme=canopy]{--secondary-foreground:#14201a;--secondary-hover:#f1f9f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--secondary-hover:color-mix(in oklab, var(--color-emerald-50) 45%, var(--color-neutral-50))}}[data-theme=canopy]{--muted:#eaedea}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--muted:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-neutral-100))}}[data-theme=canopy]{--muted-foreground:#5c6f64;--accent:#eaf0ed}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--accent:color-mix(in oklab, var(--color-emerald-50) 40%, var(--color-neutral-100))}}[data-theme=canopy]{--accent-foreground:var(--color-emerald-800);--destructive:var(--color-red-600);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-100);--destructive-soft-foreground:var(--color-red-800);--ghost:#fff0;--ghost-foreground:#3b4a42;--ghost-hover:#0f291d0d;--positive:var(--color-green-100);--positive-foreground:var(--color-green-900);--surface:#fcfffd}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface:color-mix(in oklab, var(--color-emerald-50) 18%, var(--color-white))}}[data-theme=canopy]{--surface-emphasis:#bacbbf}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface-emphasis:color-mix(in oklab, var(--color-emerald-200) 25%, var(--color-neutral-300))}}[data-theme=canopy]{--surface-raised:#d5ded7}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--surface-raised:color-mix(in oklab, var(--color-emerald-100) 25%, var(--color-neutral-200))}}[data-theme=canopy]{--border:#c8ddd1}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border:color-mix(in oklab, var(--color-emerald-200) 30%, var(--color-neutral-200))}}[data-theme=canopy]{--border-light:#e3ede7}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-light:color-mix(in oklab, var(--color-emerald-100) 25%, var(--color-neutral-100))}}[data-theme=canopy]{--border-lighter:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-lighter:color-mix(in oklab, var(--color-emerald-50) 25%, var(--color-neutral-50))}}[data-theme=canopy]{--border-strong:#9abcaa}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--border-strong:color-mix(in oklab, var(--color-emerald-300) 30%, var(--color-neutral-400))}}[data-theme=canopy]{--input:#f2f8f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--input:color-mix(in oklab, var(--color-emerald-50) 35%, var(--color-neutral-50))}}[data-theme=canopy]{--input-foreground:#14201a;--ring:var(--color-emerald-600);--ring-error:var(--color-red-300);--card:var(--color-white);--card-foreground:#14201a;--popover:var(--color-white);--popover-foreground:#14201a;--warning:var(--color-yellow-100);--warning-foreground:var(--color-yellow-900);--sidebar:var(--color-white);--sidebar-foreground:#3b4a42;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:#c8ddd1}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--sidebar-border:color-mix(in oklab, var(--color-emerald-200) 30%, var(--color-neutral-200))}}[data-theme=canopy]{--sidebar-ring:var(--color-emerald-600);--backdrop:#0a1a1299;--theme-background:#f3f7f4}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy]{--theme-background:color-mix(in oklab, var(--color-emerald-50) 22%, var(--color-stone-100))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--step:#35312f}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--step:color-mix(in oklab, var(--color-stone-800) 55%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel:#23201e}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel:color-mix(in oklab, var(--color-stone-900) 45%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--background:#0b0f0d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--background:color-mix(in oklab, var(--color-emerald-950) 14%, var(--color-stone-950))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--background-emphasis:var(--color-neutral-100);--foreground:#e9f0ec;--foreground-alt:#c2d1c8;--foreground-subtle:#9aaba2;--primary:var(--color-emerald-500);--primary-foreground:#04140d;--primary-hover:var(--color-emerald-400);--secondary:#383c37}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary:color-mix(in oklab, var(--color-emerald-950) 18%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary-foreground:#e9f0ec;--secondary-hover:#484c46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--secondary-hover:color-mix(in oklab, var(--color-emerald-950) 18%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--muted-foreground:#9aaba2;--accent:#1b2723}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--accent:color-mix(in oklab, var(--color-emerald-950) 35%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--accent-foreground:var(--color-emerald-300);--destructive:var(--color-red-500);--destructive-foreground:var(--color-white);--destructive-soft:var(--color-red-950);--destructive-soft-foreground:var(--color-red-200);--ghost:#fff0;--ghost-foreground:#c2d1c8;--ghost-hover:#e9f0ec14;--positive:var(--color-green-950);--positive-foreground:var(--color-green-200);--surface:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-emphasis:#4b524b}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-emphasis:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-raised:#3b423c}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--surface-raised:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border:#39433c}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border:color-mix(in oklab, var(--color-emerald-900) 18%, var(--color-stone-700))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-light:#242b27}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-light:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-lighter:#232624}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-lighter:color-mix(in oklab, var(--color-emerald-950) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-strong:#48554d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--border-strong:color-mix(in oklab, var(--color-emerald-800) 18%, var(--color-stone-600))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--input:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--input:color-mix(in oklab, var(--color-emerald-950) 10%, var(--step))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--input-foreground:#e9f0ec;--ring:var(--color-emerald-500);--ring-error:var(--color-red-400);--card:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--card:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--card-foreground:#e9f0ec;--popover:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--popover:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--popover-foreground:#e9f0ec;--warning:var(--color-amber-950);--warning-foreground:var(--color-amber-200);--sidebar:#022c22}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar:color-mix(in oklab, var(--color-emerald-950) 7%, var(--panel))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-foreground:#c2d1c8;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:var(--accent);--sidebar-accent-foreground:var(--accent-foreground);--sidebar-border:#242b27}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-border:color-mix(in oklab, var(--color-emerald-900) 15%, var(--color-stone-800))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--sidebar-ring:var(--color-emerald-500);--backdrop:#000c;--theme-background:#0b0f0d}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--theme-background:color-mix(in oklab, var(--color-emerald-950) 14%, var(--color-stone-950))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:#065f46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:color-mix(in oklab, var(--color-emerald-800) 52%, var(--background))}}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:color-mix(in oklab, var(--color-emerald-900) 62%, var(--background))}}[data-theme=canopy] :is([data-slot=input-group],[data-slot=input],[data-slot=textarea],textarea){--tw-ring-offset-width:0px;--tw-ring-offset-color:transparent}[data-theme=canopy].dark body,[data-theme=canopy] .dark body{background-image:radial-gradient(1200px 720px at 8% -10%, var(--wash-a), transparent 62%), radial-gradient(1000px 620px at 96% 2%, var(--wash-b), transparent 58%);background-repeat:no-repeat;background-attachment:fixed}[data-theme=canopy] [data-slot=card]{box-shadow:none}:root{--brand:var(--color-emerald-800);--brand-foreground:var(--color-neutral-50)}[data-theme=canopy].dark,[data-theme=canopy] .dark{--brand:var(--color-emerald-400);--brand-foreground:#04140d;--primary:#e9f0ec;--primary-foreground:#101711;--primary-hover:var(--color-white)}:root{--panel-shadow:0 18px 40px -28px #14201a73}[data-theme=canopy].dark,[data-theme=canopy] .dark{--panel-shadow:0 18px 44px -26px #000000b3;--wash-a:#065f46}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-a:color-mix(in oklab, var(--color-emerald-800) 55%, var(--background))}}[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:#064e3b}@supports (color:color-mix(in lab, red, red)){[data-theme=canopy].dark,[data-theme=canopy] .dark{--wash-b:color-mix(in oklab, var(--color-emerald-900) 70%, var(--background))}}@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-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}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}</style><script>matchMedia('(prefers-color-scheme:dark)').matches&&document.documentElement.classList.add('dark')<\/script></head><body class=\"grid min-h-svh place-items-center p-6 text-foreground\"><main class=\"w-full max-w-sm rounded-2xl border border-border bg-card p-8 shadow-panel backdrop-blur-[10px]\"><div class=\"mb-5 grid size-11 place-items-center rounded-xl bg-destructive text-[var(--card)]\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-circle-alert size-5\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\"></line><line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\"></line></svg></div><p class=\"mb-1 text-xs font-semibold uppercase tracking-wide text-brand\">Canopy CLI</p><h1 class=\"mb-2 text-2xl font-semibold tracking-tight break-words\">Sign-in didn’t finish</h1><p class=\"mt-2 text-sm leading-relaxed text-muted-foreground\">Return to the terminal and run canopy login again. Reloading this page won’t help.</p><p class=\"mt-6 border-t border-border pt-4 text-xs text-muted-foreground\">If the terminal still says it’s waiting, cancel with <kbd class=\"rounded border border-border bg-[var(--input)] px-1 py-px text-[0.85em] font-normal\">Ctrl</kbd>+<kbd class=\"rounded border border-border bg-[var(--input)] px-1 py-px text-[0.85em] font-normal\">C</kbd> and try again.</p></main></body></html>";
|
|
12
12
|
//#endregion
|
|
13
13
|
//#region src/login-page.ts
|
|
14
14
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as resolveProject, o as projectFlagArgs } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, o as withContext } from "./api-
|
|
3
|
-
import { r as reportErrors } from "./ui-
|
|
2
|
+
import { i as apiRequest, o as withContext } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { r as reportErrors } from "./ui-CHfKV6lG.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
//#region src/logs.ts
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as version } from "./package-
|
|
1
|
+
import { t as version } from "./package-BY69Tjq_.mjs";
|
|
2
2
|
import { d as tryResolveProject, l as stagingUrl, n as siteConfig, s as projectUrl } from "./site-DM2J10CB.mjs";
|
|
3
|
-
import { i as apiRequest, t as ApiError } from "./api-
|
|
3
|
+
import { i as apiRequest, t as ApiError } from "./api-BPEYm9ts.mjs";
|
|
4
4
|
import { t as liveDevServer } from "./dev-server-file-Dk9pk4AR.mjs";
|
|
5
5
|
import { defineCommand } from "citty";
|
|
6
6
|
import { serveStdio } from "@modelcontextprotocol/server/stdio";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { u as tryReadCanopyJson } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { n as apiDataRequest } from "./api-
|
|
2
|
+
import { n as apiDataRequest } from "./api-BPEYm9ts.mjs";
|
|
3
3
|
import { readFileSync, readdirSync } from "node:fs";
|
|
4
4
|
import { join, resolve } from "node:path";
|
|
5
5
|
//#region src/migrations.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as projectDirArgs, c as resolveProject, l as stagingUrl, s as projectUrl } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { n as openBrowser, r as reportErrors } from "./ui-
|
|
2
|
+
import { n as openBrowser, r as reportErrors } from "./ui-CHfKV6lG.mjs";
|
|
3
3
|
import { defineCommand } from "citty";
|
|
4
4
|
//#region src/open.ts
|
|
5
5
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as siteConfig, s as projectUrl, u as tryReadCanopyJson } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest } from "./api-
|
|
3
|
-
import { a as unwrap, i as requireTty, r as reportErrors } from "./ui-
|
|
4
|
-
import { r as offerRepoOnCreate } from "./repo-
|
|
2
|
+
import { i as apiRequest } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { a as unwrap, i as requireTty, r as reportErrors } from "./ui-CHfKV6lG.mjs";
|
|
4
|
+
import { r as offerRepoOnCreate } from "./repo-CKIQrrHK.mjs";
|
|
5
5
|
import { defineCommand } from "citty";
|
|
6
6
|
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
|
|
7
7
|
import { join, relative, resolve, sep } from "node:path";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as projectDirArgs, c as resolveProject, n as siteConfig, u as tryReadCanopyJson } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, o as withContext } from "./api-
|
|
3
|
-
import { a as unwrap, i as requireTty, r as reportErrors, t as formatDateTime } from "./ui-
|
|
2
|
+
import { i as apiRequest, o as withContext } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { a as unwrap, i as requireTty, r as reportErrors, t as formatDateTime } from "./ui-CHfKV6lG.mjs";
|
|
4
4
|
import { a as parseCredentialInput, i as helperCommand, o as runCredentialHelper, r as fileTokenCache, t as RepoCredentialError } from "./repo-credential-CNDRM-tG.mjs";
|
|
5
5
|
import { defineCommand } from "citty";
|
|
6
6
|
import { existsSync, realpathSync } from "node:fs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as resolveProject, o as projectFlagArgs } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, o as withContext } from "./api-
|
|
3
|
-
import { r as reportErrors, t as formatDateTime } from "./ui-
|
|
2
|
+
import { i as apiRequest, o as withContext } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { r as reportErrors, t as formatDateTime } from "./ui-CHfKV6lG.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
//#region src/schedule.ts
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as projectDirArgs, c as resolveProject } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, o as withContext } from "./api-
|
|
3
|
-
import { a as unwrap, r as reportErrors, t as formatDateTime } from "./ui-
|
|
2
|
+
import { i as apiRequest, o as withContext } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { a as unwrap, r as reportErrors, t as formatDateTime } from "./ui-CHfKV6lG.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
import * as p from "@clack/prompts";
|
|
6
6
|
//#region src/secrets.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as version } from "./package-
|
|
2
|
-
import { r as reportErrors } from "./ui-
|
|
1
|
+
import { t as version } from "./package-BY69Tjq_.mjs";
|
|
2
|
+
import { r as reportErrors } from "./ui-CHfKV6lG.mjs";
|
|
3
3
|
import { defineCommand } from "citty";
|
|
4
4
|
import { cpSync, existsSync, mkdirSync, rmSync, symlinkSync, writeFileSync } from "node:fs";
|
|
5
5
|
import { homedir } from "node:os";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as resolveProject, l as stagingUrl, o as projectFlagArgs, s as projectUrl } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, o as withContext } from "./api-
|
|
3
|
-
import { a as unwrap, i as requireTty, r as reportErrors, t as formatDateTime } from "./ui-
|
|
2
|
+
import { i as apiRequest, o as withContext } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { a as unwrap, i as requireTty, r as reportErrors, t as formatDateTime } from "./ui-CHfKV6lG.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
import * as p from "@clack/prompts";
|
|
6
6
|
//#region src/staging.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as projectDirArgs, c as resolveProject, o as projectFlagArgs } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest } from "./api-
|
|
3
|
-
import { r as reportErrors, t as formatDateTime } from "./ui-
|
|
2
|
+
import { i as apiRequest } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { r as reportErrors, t as formatDateTime } from "./ui-CHfKV6lG.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
const tokenCommand = defineCommand({
|
|
6
6
|
meta: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as PACKAGE_NAME } from "./version-check-CcsA1QjI.mjs";
|
|
2
|
-
import { r as reportErrors } from "./ui-
|
|
2
|
+
import { r as reportErrors } from "./ui-CHfKV6lG.mjs";
|
|
3
3
|
import { defineCommand } from "citty";
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
@@ -112,7 +112,7 @@ const upgradeCommand = defineCommand({
|
|
|
112
112
|
const spec = `${PACKAGE_NAME}@${args.version ?? "latest"}`;
|
|
113
113
|
const command = pmCommand(pm);
|
|
114
114
|
const cmd = installArgs(pm, spec);
|
|
115
|
-
const { skillInstalled } = await import("./skill-
|
|
115
|
+
const { skillInstalled } = await import("./skill-B96cKy8K.mjs");
|
|
116
116
|
const { homedir } = await import("node:os");
|
|
117
117
|
const refreshGlobal = skillInstalled(homedir());
|
|
118
118
|
const refreshRepo = process.cwd() !== homedir() && skillInstalled(process.cwd());
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as resolveProject, o as projectFlagArgs } from "./site-DM2J10CB.mjs";
|
|
2
|
-
import { i as apiRequest, o as withContext } from "./api-
|
|
3
|
-
import { r as reportErrors } from "./ui-
|
|
2
|
+
import { i as apiRequest, o as withContext } from "./api-BPEYm9ts.mjs";
|
|
3
|
+
import { r as reportErrors } from "./ui-CHfKV6lG.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
//#region src/usage.ts
|
|
6
6
|
/**
|
package/package.json
CHANGED
package/dist/dev-BeFX_wc5.mjs
DELETED
package/dist/repo-1RQ1vBMv.mjs
DELETED